Repository Analysis

wavetermdev/waveterm

An open-source, AI-integrated, cross-platform terminal for seamless workflows

0.9 Likely human-written View on GitHub
0.9
Adjusted Score
0.9
Raw Score
100%
Time Factor
2026-05-29
Last Push
20,921
Stars
Go
Language
187,974
Lines of Code
911
Files
122
Pattern Hits
2026-05-31
Scan Date

Score History

Severity Breakdown

CRITICAL 0HIGH 1MEDIUM 11LOW 110

Pattern Findings

122 matches across 9 categories. Click a row to expand file-level details.

Hyper-Verbose Identifiers78 hits · 84 pts
SeverityFileLineSnippet
LOWtsunami/frontend/src/util/clientid.ts11export function getOrCreateClientId(): string {
LOWtsunami/frontend/src/util/keyutil.ts247function adaptFromReactOrNativeKeyEvent(event: React.KeyboardEvent | KeyboardEvent): VDomKeyboardEvent {
LOWtsunami/frontend/src/util/keyutil.ts270function adaptFromElectronKeyEvent(event: any): VDomKeyboardEvent {
LOWfrontend/app/app.tsx61function isContentEditableBeingEdited(): boolean {
LOWfrontend/app/suggestion/suggestion.tsx131function BlockHeaderSuggestionControl(props: BlockHeaderSuggestionControlProps) {
LOWfrontend/app/suggestion/suggestion.tsx152function SuggestionControlNoResults({ children }: { children?: React.ReactNode }) {
LOWfrontend/app/workspace/widgetfilter.ts4function shouldIncludeWidgetForWorkspace(widget: WidgetConfigType, workspaceId?: string): boolean {
LOWfrontend/app/modals/conntypeahead.tsx55function createRemoteSuggestionItems(
LOWfrontend/app/modals/conntypeahead.tsx97function createFilteredLocalSuggestionItem(
LOWfrontend/app/modals/conntypeahead.tsx259function getNewConnectionSuggestionItem(
LOWfrontend/app/view/term/osc-handlers.ts98function handleShellIntegrationCommandStart(
LOWfrontend/app/view/term/shellblocking.ts38function looksInteractiveShellArgs(args: string[]): boolean {
LOWfrontend/app/view/term/shellblocking.ts48function isNonInteractiveShellExec(args: string[]): boolean {
LOWfrontend/app/view/term/termutil.ts176function findFirstDataTransferItem(
LOWfrontend/app/view/sysinfo/sysinfo.tsx93function convertWaveEventToDataItem(event: Extract<WaveEvent, { event: "sysinfo" }>): DataItem {
LOWfrontend/app/view/preview/preview-directory-utils.tsx155export function makeDirectoryDefaultMenuItems(model: PreviewModel): ContextMenuItem[] {
LOWfrontend/app/view/vdom/vdom-utils.tsx28export function validateAndWrapCss(model: VDomModel, cssText: string, wrapperClassName: string) {
LOWfrontend/app/view/vdom/vdom-utils.tsx114export function validateAndWrapReactStyle(model: VDomModel, style: Record<string, any>): Record<string, any> {
LOWfrontend/app/view/vdom/vdom-utils.tsx114export function validateAndWrapReactStyle(model: VDomModel, style: Record<string, any>): Record<string, any> {
LOWfrontend/app/aipanel/aimode.tsx65function computeCompatibleSections(
LOWfrontend/app/aipanel/aitooluse.tsx80function getEffectiveApprovalStatus(baseApproval: string, isStreaming: boolean): string {
LOWfrontend/app/store/badge.ts53function clearBadgesForBlockOnFocus(blockId: string, env?: BadgeEnv) {
LOWfrontend/app/store/keymodel.ts68function getFocusedBlockInStaticTab(): string {
LOWfrontend/app/store/keymodel.ts74function getSimpleControlShiftAtom() {
LOWfrontend/app/store/keymodel.ts470function registerControlShiftStateUpdateHandler() {
LOWfrontend/app/store/keymodel.ts480function registerElectronReinjectKeyHandler() {
LOWfrontend/app/store/keymodel.ts773function registerBuilderGlobalKeys() {
LOWfrontend/app/store/global.ts362async function createBlockSplitHorizontally(
LOWfrontend/app/store/global.ts385async function createBlockSplitVertically(
LOWfrontend/app/store/global.ts527function getLocalHostDisplayNameAtom(): Atom<string> {
LOWfrontend/app/store/global.ts550function registerBlockComponentModel(blockId: string, bcm: BlockComponentModel) {
LOWfrontend/app/store/global.ts554function unregisterBlockComponentModel(blockId: string) {
LOWfrontend/app/store/global.ts562function getAllBlockComponentModels(): BlockComponentModel[] {
LOWfrontend/util/keyutil.ts231function adaptFromReactOrNativeKeyEvent(event: React.KeyboardEvent | KeyboardEvent): WaveKeyboardEvent {
LOWfrontend/util/keyutil.ts252function adaptFromElectronKeyEvent(event: any): WaveKeyboardEvent {
LOWfrontend/layout/lib/utils.ts91export function navigateDirectionToOffset(direction: NavigateDirection): Point {
LOWfrontend/layout/lib/layoutModelHooks.ts45export function getLayoutModelForStaticTab() {
LOWfrontend/layout/lib/layoutModelHooks.ts76export function useDebouncedNodeInnerRect(nodeModel: NodeModel): CSSProperties {
LOWfrontend/layout/lib/types.ts14export function navigateDirectionToString(dir: NavigateDirection): string {
LOWfrontend/layout/lib/layoutAtom.ts7export function getLayoutStateAtomFromTab(tabAtom: Atom<Tab>, get: Getter): Atom<LayoutState> {
LOWfrontend/layout/lib/layoutNode.ts241export function findInsertLocationFromIndexArr(
LOWfrontend/layout/lib/layoutNode.ts263function findNextInsertLocationHelper(
LOWfrontend/preview/preview-contextmenu.tsx82function getPreviewContextMenuItemId(item: ContextMenuItem): string {
LOWfrontend/preview/mock/mockfilesystem.ts172function createMockFilesystemEntries(): MockFsEntryInput[] {
LOWfrontend/preview/mock/preview-electron-api.ts64function installPreviewElectronApi() {
LOWfrontend/preview/previews/processviewer.preview.tsx40function makeMockProcessListResponse(data: CommandRemoteProcessListData): ProcessListResponse {
LOWfrontend/preview/previews/aifilediff.preview-util.ts29export function makeMockAiFileDiffResponse(
LOWfrontend/builder/builder-buildpanel.tsx13function handleBuildPanelContextMenu(e: React.MouseEvent, selectedText: string): void {
LOWemain/emain-platform.ts156function getElectronAppUnpackedBasePath(): string {
LOWemain/emain-platform.ts160function getElectronAppResourcesPath(): string {
LOWemain/emain-platform.ts230function callWithOriginalXdgCurrentDesktop(callback: () => void) {
LOWemain/emain-platform.ts252async function callWithOriginalXdgCurrentDesktopAsync(callback: () => Promise<void>) {
LOWemain/emain-menu.ts56 function getWorkspaceSwitchAccelerator(i: number): string {
LOWemain/emain-menu.ts401function initMenuEventSubscriptions() {
LOWemain/emain-menu.ts408function getWebContentsByWorkspaceOrBuilderId(workspaceOrBuilderId: string): electron.WebContents {
LOWemain/emain-tabview.ts24function handleWindowsMenuAccelerators(
LOWemain/emain-tabview.ts111export function getWaveTabViewByWebContentsId(webContentsId: number): WaveTabView {
LOWemain/emain-tabview.ts304export async function getOrCreateWebViewForTab(waveWindowId: string, tabId: string): Promise<[WaveTabView, boolean]> {
LOWemain/authkey.ts15export function configureAuthKeyRequestInjection(session: Electron.Session) {
LOWemain/emain-util.ts21function broadcastZoomFactorChanged(newZoomFactor: number): void {
18 more matches not shown…
Over-Commented Block19 hits · 19 pts
SeverityFileLineSnippet
LOWfrontend/types/jsx.d.ts1// Copyright 2025, Command Line Inc.
LOWfrontend/types/vite-env.d.ts1// Copyright 2025, Command Line Inc.
LOWfrontend/preview/mock/mockwaveenv.ts21export const PreviewWorkspaceId = crypto.randomUUID();
LOW.github/workflows/testdriver-build.yml1name: TestDriver.ai Build
LOW.github/workflows/codeql.yml1# For most projects, this workflow file will not need changing; you simply need
LOWpkg/util/daystr/daystr.go21 return dayStr
LOWpkg/util/shellutil/shellintegration/bash_preexec.sh1# License for bash-preexec.sh follows below from https://github.com/rcaloras/bash-preexec v0.6.0
LOWpkg/util/shellutil/shellintegration/bash_preexec.sh21# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
LOWpkg/util/shellutil/shellintegration/bash_preexec.sh41# General Usage:
LOWpkg/util/shellutil/shellintegration/bash_preexec.sh161# This function is installed as part of the PROMPT_COMMAND;
LOWpkg/aiusechat/gemini/doc.go1// Copyright 2025, Command Line Inc.
LOWpkg/aiusechat/gemini/doc.go21// - Image uploads (JPEG, PNG, etc.) - inline base64 encoding
LOWpkg/aiusechat/gemini/doc.go41//
LOWpkg/aiusechat/gemini/doc.go61//
LOWpkg/aiusechat/gemini/doc.go81//
LOWpkg/aiusechat/google/doc.go1// Copyright 2025, Command Line Inc.
LOWpkg/aiusechat/google/doc.go21//
LOWpkg/aiusechat/anthropic/anthropic-backend.go381 BudgetTokens: thinkingBudget,
LOWpkg/remote/sshclient.go261 return []ssh.Signer{dummySigner}, nil
Decorative Section Separators6 hits · 18 pts
SeverityFileLineSnippet
MEDIUMfrontend/app/view/term/term-tooltip.tsx9// ── low-level primitive ──────────────────────────────────────────────────────
MEDIUMfrontend/app/view/term/term-tooltip.tsx66// ── wired-up sub-component ───────────────────────────────────────────────────
MEDIUMfrontend/layout/lib/layoutTree.ts452// ─── SPLIT HORIZONTAL ─────────────────────────────────────────────────────────────
MEDIUMfrontend/layout/lib/layoutTree.ts495// ─── SPLIT VERTICAL ─────────────────────────────────────────────────────────────
MEDIUMpkg/util/shellutil/shellintegration/bash_preexec.sh2# -----------------------------------------------------------------------------
MEDIUMpkg/util/shellutil/shellintegration/bash_preexec.sh25# -----------------------------------------------------------------------------
Self-Referential Comments5 hits · 15 pts
SeverityFileLineSnippet
MEDIUM.github/workflows/bump-version.yml68 # Create a new commit for the package version bump in package.json
MEDIUM.github/workflows/testdriver.yml68 # Create the download directory if it doesn't exist
MEDIUMpkg/util/shellutil/shellintegration/bash_preexec.sh161# This function is installed as part of the PROMPT_COMMAND;
MEDIUMpkg/util/shellutil/shellintegration/bash_preexec.sh169# This function is installed as part of the PROMPT_COMMAND.
MEDIUMpkg/util/shellutil/shellintegration/bash_preexec.sh229# This function is installed as the DEBUG trap. It is invoked before each
Verbosity Indicators7 hits · 10 pts
SeverityFileLineSnippet
LOWtsunami/frontend/src/model/model-utils.ts27 // Step 1: Create text map from transfertext
LOWtsunami/frontend/src/model/model-utils.ts35 // Step 2: Map of waveid to VDomElem, skipping any without a waveid
LOWtsunami/frontend/src/model/model-utils.ts50 // Step 3: Build VDomElem trees by linking children
LOWtsunami/frontend/src/model/model-utils.ts76 // Step 4: Update renderupdates with rebuilt VDomElem trees
LOWfrontend/app/view/vdom/vdom-utils.tsx143 // Step 1: Map of waveid to VDomElem, skipping any without a waveid
LOWfrontend/app/view/vdom/vdom-utils.tsx158 // Step 2: Build VDomElem trees by linking children
LOWfrontend/app/view/vdom/vdom-utils.tsx167 // Step 3: Update renderupdates with rebuilt VDomElem trees
Magic Placeholder Names1 hit · 8 pts
SeverityFileLineSnippet
HIGHpkg/aiusechat/google/doc.go26// APIKey: "YOUR_API_KEY",
Redundant / Tautological Comments3 hits · 4 pts
SeverityFileLineSnippet
LOWpkg/util/shellutil/shellintegration/pwsh_wavepwsh.sh27 # Check if we're in tmux or screen
LOWpkg/util/shellutil/shellintegration/fish_wavefish.sh16 # Check if we're in tmux or screen (using fish-native checks)
LOWpkg/util/shellutil/shellintegration/bash_bashrc.sh49# Check if bash-preexec was successfully imported
Fake / Example Data2 hits · 2 pts
SeverityFileLineSnippet
LOWcmd/wsh/cmd/wshcmd-ssh_test.go26 want: "foo@bar.com",
LOWcmd/wsh/cmd/wshcmd-ssh_test.go45 want: "foo@bar.com",
Example Usage Blocks1 hit · 2 pts
SeverityFileLineSnippet
LOWtsunami/util/util.go20// Example usage: