Skip to content

Feature/disk backed stream history#3415

Closed
whoisjeremylam wants to merge 134 commits into
wavetermdev:mainfrom
whoisjeremylam:feature/disk-backed-stream-history
Closed

Feature/disk backed stream history#3415
whoisjeremylam wants to merge 134 commits into
wavetermdev:mainfrom
whoisjeremylam:feature/disk-backed-stream-history

Conversation

@whoisjeremylam

Copy link
Copy Markdown

Addresses remote durable sessions stalling due to buffer back-pressure

clearlyjeremy and others added 30 commits May 12, 2026 07:33
- Add local Go 1.26.2 and Zig 0.14.0 installs (gitignored)
- Add @go-task/cli as local npm dependency
- Update Taskfile.yml to use {{.GO}} and {{.ZIG}} vars instead of PATH
- Add go.mod stub in golang dir to prevent module scan errors
- Add manual macOS build workflow (.github/workflows/build-macos.yml)
- Update AGENTS.md with dev environment notes
- Add fork notes to README.md
- Add .pi/ to .gitignore
- Delete deploy-docsite.yml, testdriver-build.yml, testdriver.yml
- Change codeql.yml to manual trigger only
Completely removes all telemetry collection, local storage, and cloud upload
functionality per the remove-telemetry spec.

Key changes:
- Delete pkg/telemetry/, pkg/telemetry/telemetrydata/, pkg/wcloud/
- Remove telemetry loops and event recording from cmd/server/main-server.go
- Remove 5 telemetry RPC commands and ActivityUpdate type from wshrpc layer
- Remove telemetry call sites from wcore, conncontroller, wslconn, jobcontroller,
  aiusechat, panichandler, clientservice
- Remove TelemetryClear/TelemetryEnabled from SettingsConfig and regenerate
  metaconsts.go, gotypes.d.ts, services.ts, wshclientapi.ts, wshclient.go
- Remove wsh CLI activity tracking (activityWrap, sendActivity)
- Remove frontend recordTEvent, ActivityCommand, RecordTEventCommand call sites
- Remove Electron activity tracking (logActiveState, sendDisplaysTDataEvent,
  increment-term-commands IPC)
- Simplify onboarding: remove telemetry toggle, NoTelemetryStarPage, and
  telemetry consent flow
- Delete telemetry docs (telemetry.mdx, telemetry-old.mdx)
- Add migration to drop db_tevent and db_activity tables

Compilation fixes:
- Restore services import in onboarding.tsx for AgreeTos
- Fix emain/preload.ts and emain-ipc.ts corruption from incrementTermCommands
  removal (restore nativePaste, openBuilder, saveTextFile, setIsActive)
- Fix malformed custom.d.ts type declaration
- Replace remaining telemetry:enabled reads in AI panel files with true
…sections

- Promote Fork Notes to ## Fork Notes immediately after intro paragraph
- Remove FOSSA badge, upstream Roadmap, Links, Sponsoring sections
- Remove Free Beta AI credits reference (upstream cloud service)
- Remove upstream download/docs links from Installation section
- Remove entire ## Wave AI section
- Remove AI references from intro and Key Features (Wave AI, AI assistants, AI chat widget)
- Update Fork Notes: 'reduced AI features' -> 'remove unnecessary AI features'
- Focus README on terminal, SSH, and file management capabilities
Root cause: CloseTab launched an explicit goroutine calling
DestroyBlockController while DeleteTab -> DeleteBlock ->
BlockCloseEvent triggered the same destruction again,
causing concurrent double-Stop on ShellController and
DurableShellController.

Fixes:
- Remove redundant DestroyBlockController goroutine from CloseTab
- Add sync.Once to ShellProc.Close() as defense-in-depth
- Add trace logging for interactive diagnosis
- Add 14 unit tests covering the race conditions

Resolves: .pi/specs/bug-tabclose-crash.md
Logging was added to verify the fix; crash confirmed resolved
interactively. Stripping to avoid polluting production logs.
Logging was added to verify the fix; crash confirmed resolved
interactively. Stripping to avoid polluting production logs.
… frontend

- Remove AIPanel from builder-workspace.tsx, replace with placeholder div
- Remove WaveAIModel imports from builder-buildpanel.tsx and builder-previewtab.tsx
- Remove 'Add to Context' and 'Send Output to AI' from builder build panel
- Simplify builder-previewtab ErrorStateView (remove AI streaming check/buttons)
- Move formatFileSize from @/app/aipanel/ai-utils to @/util/util
- Update builder-filestab.tsx formatFileSize import to @/util/util
- Simplify BuilderFocusType to 'app' only, remove setWaveAIFocused()
- Remove 'AI Presets' deprecated config entry and validateAiJson from waveconfig-model.ts
- Remove inWaveAI parameter and WaveAI navigation branch from layoutModel.ts
- Update keymodel.ts switchNodeFocusInDirection call site
- Remove setWaveAIOpen from preview-electron-api.ts mock
- Remove dead rateLimitInfoAtom declaration from global-atoms.ts
The inner PanelGroup (holding VTabBar + AIPanel side-by-side) was removed
in Phase A, but the VTabBar's <Panel> wrapper was accidentally left intact,
creating an invalid react-resizable-panels structure: a <Panel> inside
another <Panel> with no <PanelGroup> parent. This caused the library to
fail layout calculations and collapse all panels to zero size, producing
a completely blank app window.

- Replace nested <Panel> with plain <div> in workspace.tsx
- Remove vtabPanelRef and ImperativePanelHandle import
- Remove syncPanelCollapse() and related refs in workspace-layout-model.ts
Remove getShellIntegrationIconButton() implementation (sparkle/Claude logo
and Wave AI tooltips) and replace with no-op stub returning null.

- Remove TermClaudeIcon import from term-model.ts
- Underlying shell integration protocol (OSC 16162) left intact; could be
  reused later for pi coding agent support (documented in .pi/decisions.md)

Docs: Add .pi/decisions.md with Claude Code integration analysis
Move all fork planning docs into the active working directory:
- Copy specs (remove-waveai, remove-telemetry, portforwarding, bug-tabclose-crash)
- Copy context.md, index.md, todos.md
- Merge decisions.md: prepend original ADRs (fork purpose, .pi/ hub, port forwarding
  config-first approach, tab-close crash fix, secret store keep) with today's
  Claude Code integration analysis for future pi agent support
- Delete docs/docs/waveai.mdx, waveai-modes.mdx, ai-presets.mdx
- Delete schema/waveai.json, schema/aipresets.json
- Remove AI config rows from docs/docs/config.mdx (ai:*, waveai:*, app:hideaibutton)
- Clean AI references from gettingstarted.mdx, index.mdx, wsh-reference.mdx
- Truncate releasenotes.mdx to v0.14.x, strip all AI mentions
- Fix misleading AI text in builder-previewtab.tsx EmptyStateView
- Remove AI schema generation from generateschema (Phase B.12 fix)
- Add sharp dependency for vite image optimizer
Removes AI RPC handlers, client helpers, web endpoints, and dead packages
that were missed in the original Phase B implementation.

Specific changes:
- wshrpctypes.go: remove 7 AI interface methods + 6 AI data types
- wshserver.go: remove 5 AI RPC handlers + aiusechat/chatstore/uctypes imports
- wshclient.go: remove 8 AI client helper functions + uctypes import
- web.go: remove /api/post-chat-message and /wave/aichat endpoints
- main-server.go: remove aiusechat.InitAIModeConfigWatcher() call
- wshcmd-blocks.go: remove waveai from view filter help/validation
- filebackup.go: rename waveai-backups -> file-backups
- wpstypes.go: remove Event_WaveAIRateLimit and Event_AIModeConfig
- tsgenevent.go: remove WaveAI event data mappings
- tsgen.go: remove uctypes/AIModeConfigUpdate from ExtraTypes
- Delete pkg/aiusechat/ (entire directory, ~8.5K lines)
- Delete cmd/testai/, cmd/testopenai/, cmd/testsummarize/
- Delete cmd/wsh/cmd/wshcmd-ai.go (entire wsh ai command)

Also updates .pi/todos.md to reflect Phase D as next active task.
Comprehensive removal of orphaned Wave AI code after Phase A/B/C cleanup:

Frontend:
- Delete frontend/app/aipanel/ (entire directory, 17 files)
- Delete frontend/app/view/waveai/ (deprecated view)
- Delete frontend/app/view/aifilediff/ (deprecated view)
- Delete frontend/app/view/waveconfig/waveaivisual.tsx
- Delete frontend/app/onboarding/fakechat.tsx
- Delete frontend/preview/previews/waveai.preview.tsx
- Delete frontend/preview/previews/aifilediff.preview.tsx + util + test

Go Backend:
- Remove AiSettingsType, GetAiSettings(), MergeAiSettings() from settingsconfig.go
- Remove all AI fields from SettingsType (AiClear, AiPreset, AiApiType, etc.)
- Remove AIModeConfigType, AIModeConfigUpdate structs
- Remove WaveAIModes from FullConfigType
- Remove CountCustomAIPresets(), CountCustomAIModes() methods
- Remove AI meta fields from waveobj.MetaTSType (wtypemeta.go)
- Remove AI fields from waveobj.ObjRTInfo (objrtinfo.go)
- Delete pkg/wconfig/defaultconfig/waveai.json
- Delete pkg/wconfig/defaultconfig/presets/ai.json
- Clean AI defaults from pkg/wconfig/defaultconfig/settings.json
- Fix embed directive in defaultconfig.go (removed all:*/*.json subdir pattern)

TypeScript:
- Remove setWaveAIOpen and AIModeConfigWithMode from custom.d.ts
- Regenerate gotypes.d.ts, waveevent.d.ts, wshclientapi.ts (auto-cleaned)
- Regenerate metaconsts.go (auto-cleaned)
- Regenerate schema/settings.json (auto-cleaned)

Verification:
- go build ./... passes cleanly
- task generate produces no AI-related output
- Zero AI references remain in pkg/, cmd/, frontend/app/, frontend/preview/
Additional cleanup found during verification sweep:

- Remove dangling waveAIButtonRef and hideAiButton from tabbar.tsx
  (ref was never attached to any DOM element, always null)
- Remove app:hideaibutton from tabbarenv.ts, vtabbarenv.ts type unions
- Remove hideAiButton state/checkbox from tabbar.preview.tsx, vtabbar.preview.tsx
- Remove AppHideAiButton field from SettingsType
- Remove app:hideaibutton default from settings.json
- Remove WaveAI keybindings from docs/docs/keybindings.mdx
- Regenerate gotypes.d.ts, metaconsts.go, schema/settings.json
* Remove trace logging added for tab-close crash diagnosis

Logging was added to verify the fix; crash confirmed resolved
interactively. Stripping to avoid polluting production logs.

* Phase A review fixes: remove remaining AI references from builder and frontend

- Remove AIPanel from builder-workspace.tsx, replace with placeholder div
- Remove WaveAIModel imports from builder-buildpanel.tsx and builder-previewtab.tsx
- Remove 'Add to Context' and 'Send Output to AI' from builder build panel
- Simplify builder-previewtab ErrorStateView (remove AI streaming check/buttons)
- Move formatFileSize from @/app/aipanel/ai-utils to @/util/util
- Update builder-filestab.tsx formatFileSize import to @/util/util
- Simplify BuilderFocusType to 'app' only, remove setWaveAIFocused()
- Remove 'AI Presets' deprecated config entry and validateAiJson from waveconfig-model.ts
- Remove inWaveAI parameter and WaveAI navigation branch from layoutModel.ts
- Update keymodel.ts switchNodeFocusInDirection call site
- Remove setWaveAIOpen from preview-electron-api.ts mock
- Remove dead rateLimitInfoAtom declaration from global-atoms.ts

* fix(workspace): remove invalid nested Panel causing blank screen

The inner PanelGroup (holding VTabBar + AIPanel side-by-side) was removed
in Phase A, but the VTabBar's <Panel> wrapper was accidentally left intact,
creating an invalid react-resizable-panels structure: a <Panel> inside
another <Panel> with no <PanelGroup> parent. This caused the library to
fail layout calculations and collapse all panels to zero size, producing
a completely blank app window.

- Replace nested <Panel> with plain <div> in workspace.tsx
- Remove vtabPanelRef and ImperativePanelHandle import
- Remove syncPanelCollapse() and related refs in workspace-layout-model.ts

* fix(term): remove AI sparkle icon from terminal block header

Remove getShellIntegrationIconButton() implementation (sparkle/Claude logo
and Wave AI tooltips) and replace with no-op stub returning null.

- Remove TermClaudeIcon import from term-model.ts
- Underlying shell integration protocol (OSC 16162) left intact; could be
  reused later for pi coding agent support (documented in .pi/decisions.md)

Docs: Add .pi/decisions.md with Claude Code integration analysis

* docs: merge .pi/ project memory from waveterm to waveterm-remote

Move all fork planning docs into the active working directory:
- Copy specs (remove-waveai, remove-telemetry, portforwarding, bug-tabclose-crash)
- Copy context.md, index.md, todos.md
- Merge decisions.md: prepend original ADRs (fork purpose, .pi/ hub, port forwarding
  config-first approach, tab-close crash fix, secret store keep) with today's
  Claude Code integration analysis for future pi agent support

* Phase C: remove AI docs, schemas, and clean generator

- Delete docs/docs/waveai.mdx, waveai-modes.mdx, ai-presets.mdx
- Delete schema/waveai.json, schema/aipresets.json
- Remove AI config rows from docs/docs/config.mdx (ai:*, waveai:*, app:hideaibutton)
- Clean AI references from gettingstarted.mdx, index.mdx, wsh-reference.mdx
- Truncate releasenotes.mdx to v0.14.x, strip all AI mentions
- Fix misleading AI text in builder-previewtab.tsx EmptyStateView
- Remove AI schema generation from generateschema (Phase B.12 fix)
- Add sharp dependency for vite image optimizer

* Mark builder-previewtab.tsx fix complete in todos

* fix(gap): complete Phase B — remove all remaining Go backend AI wiring

Removes AI RPC handlers, client helpers, web endpoints, and dead packages
that were missed in the original Phase B implementation.

Specific changes:
- wshrpctypes.go: remove 7 AI interface methods + 6 AI data types
- wshserver.go: remove 5 AI RPC handlers + aiusechat/chatstore/uctypes imports
- wshclient.go: remove 8 AI client helper functions + uctypes import
- web.go: remove /api/post-chat-message and /wave/aichat endpoints
- main-server.go: remove aiusechat.InitAIModeConfigWatcher() call
- wshcmd-blocks.go: remove waveai from view filter help/validation
- filebackup.go: rename waveai-backups -> file-backups
- wpstypes.go: remove Event_WaveAIRateLimit and Event_AIModeConfig
- tsgenevent.go: remove WaveAI event data mappings
- tsgen.go: remove uctypes/AIModeConfigUpdate from ExtraTypes
- Delete pkg/aiusechat/ (entire directory, ~8.5K lines)
- Delete cmd/testai/, cmd/testopenai/, cmd/testsummarize/
- Delete cmd/wsh/cmd/wshcmd-ai.go (entire wsh ai command)

Also updates .pi/todos.md to reflect Phase D as next active task.

* Phase D: delete all dead AI code and regenerate types

Comprehensive removal of orphaned Wave AI code after Phase A/B/C cleanup:

Frontend:
- Delete frontend/app/aipanel/ (entire directory, 17 files)
- Delete frontend/app/view/waveai/ (deprecated view)
- Delete frontend/app/view/aifilediff/ (deprecated view)
- Delete frontend/app/view/waveconfig/waveaivisual.tsx
- Delete frontend/app/onboarding/fakechat.tsx
- Delete frontend/preview/previews/waveai.preview.tsx
- Delete frontend/preview/previews/aifilediff.preview.tsx + util + test

Go Backend:
- Remove AiSettingsType, GetAiSettings(), MergeAiSettings() from settingsconfig.go
- Remove all AI fields from SettingsType (AiClear, AiPreset, AiApiType, etc.)
- Remove AIModeConfigType, AIModeConfigUpdate structs
- Remove WaveAIModes from FullConfigType
- Remove CountCustomAIPresets(), CountCustomAIModes() methods
- Remove AI meta fields from waveobj.MetaTSType (wtypemeta.go)
- Remove AI fields from waveobj.ObjRTInfo (objrtinfo.go)
- Delete pkg/wconfig/defaultconfig/waveai.json
- Delete pkg/wconfig/defaultconfig/presets/ai.json
- Clean AI defaults from pkg/wconfig/defaultconfig/settings.json
- Fix embed directive in defaultconfig.go (removed all:*/*.json subdir pattern)

TypeScript:
- Remove setWaveAIOpen and AIModeConfigWithMode from custom.d.ts
- Regenerate gotypes.d.ts, waveevent.d.ts, wshclientapi.ts (auto-cleaned)
- Regenerate metaconsts.go (auto-cleaned)
- Regenerate schema/settings.json (auto-cleaned)

Verification:
- go build ./... passes cleanly
- task generate produces no AI-related output
- Zero AI references remain in pkg/, cmd/, frontend/app/, frontend/preview/

* Phase D follow-up: remove missed WaveAI references

Additional cleanup found during verification sweep:

- Remove dangling waveAIButtonRef and hideAiButton from tabbar.tsx
  (ref was never attached to any DOM element, always null)
- Remove app:hideaibutton from tabbarenv.ts, vtabbarenv.ts type unions
- Remove hideAiButton state/checkbox from tabbar.preview.tsx, vtabbar.preview.tsx
- Remove AppHideAiButton field from SettingsType
- Remove app:hideaibutton default from settings.json
- Remove WaveAI keybindings from docs/docs/keybindings.mdx
- Regenerate gotypes.d.ts, metaconsts.go, schema/settings.json

---------

Co-authored-by: Jeremy Lam <jeremy.lam@clearpool.io>
Moves all fork planning, specs, and agent context from waveterm parent
to this fork repository where active development will happen.

Includes:
- context.md, index.md, decisions.md, todos.md
- specs/ (remove-telemetry, remove-waveai, portforwarding, bug-tabclose-crash)
- reviews/ (telemetry removal reviews)

Updates .gitignore:
- Removes .pi/ (now tracked)
- Adds .pi/delegate-results/ (large session logs stay local)

Also adds new high-priority bug to todos:
- Tmux mouse integration lost on durable session reconnect
* fix: restore DEC private modes on durable session reconnect

Tracks active DEC private modes (CSI ? h / ? l) in the frontend xterm.js
instance. Persists them to the block cache file meta as 'decmodes'. On
durable reconnect (when loading from cache), replays the active mode-enable
sequences to the new xterm.js Terminal so its internal state matches the
remote application (tmux, vim, etc).

Fixes the bug where tmux mouse integration was lost after WaveTerm restart
because the new terminal instance had no memory of previously-enabled modes.

Changes:
- pkg/service/blockservice/blockservice.go: extend SaveTerminalState with decModes param
- frontend/app/view/term/termwrap.ts: track, serialize, replay DEC modes
- frontend/app/store/services.ts: regenerated TS bindings

Resolves #2

* fix(dec-modes): multi-param CSI tracking, clear-all reset, stale cache purge, replay whitelist

- Fix CSI ? h and ? l handlers to track all parameters, not just params[0]
- Fix CSI ? l with no params to clear activeDecModes (defensive)
- Fix Go backend to always write decmodes meta, overwriting stale values
- Add SafeReplayDecModes whitelist (1000-1006, 2004) to prevent replaying
  alternate screen (47/1049), cursor visibility (25), sync output (2026)

Fixes gaps from af669bc reported in #2

* test(dec-modes): unit tests for DEC mode tracking with mocked xterm.js

- 14 Vitest tests covering serializeDecModes, replayDecModes, and CSI handlers
- Mocked Terminal, addons, and DOM to avoid heavy integration setup
- Tests multi-param tracking, empty-param clear, 2026 sync transaction,
  whitelist filtering, and full round-trip behavior

Covers gaps from af669bc reported in #2

* docs(readme): list fixed bugs in fork notes

- tmux mouse integration lost on durable reconnect (01f5073, #2)
- crash on tab close after SSH session exit (0cd6489)
- af669bc: original DEC mode restore
- 01f5073: multi-param CSI, clear-all reset, stale cache purge, whitelist
- f839f8a: 14 Vitest unit tests
- GitHub comment posted to #2, README updated
…nect bugs issue

- Moved MOSH to backlog after research: no port forwarding, no OSC52,
  C++ only, slow development. tsshd noted as more relevant alternative.
- Added "Remote file paste" as feature task (image paste + drag-drop
  for SSH sessions, primary use case: pi / Claude Code TUI)
- Drafted GitHub issue #4 content for auto-reconnect bugs
- Priority order: auto-reconnect fixes > port forwarding > remote file paste > MOSH
…et-follow-focus spec

- README: replace "MOSH support" with "remote file paste" in planned changes
- Auto-reconnect draft: add missing detection (system wake, network-online,
  SSH keepalive), edge cases, and P0/P1/P2 priority breakdown
- New spec: widget-follow-focus — system widgets inherit connection from
  focused terminal
- Todos: reflect updated priorities
* fix(jobcontroller): P0 auto-reconnect reliability fixes

- Bug #1: move cooldown timestamp set after connection check passes
- Bug #2: replace processed bool with generation counters (actualGen/procGen)
- Bug #3: split singleflight into reconnectConnGroup and reconnectRouteGroup
- Add 12 unit tests covering all three fixes

* docs: record auto-reconnect decision and tmux feature ideas from 2026-05-23 session

* fix: ensure connection is alive before starting durable shell

When a remote SSH connection drops (e.g. host goes down), the connection
status is set to Disconnected and the route is removed from wshrouter.
However, when a new block tries to start a durable shell,
startNewJob() used MaybeGetConn() which returns the stale connection
object without checking if it's actually alive.

This adds an EnsureConnection() call before using the connection route.
EnsureConnection handles reconnection for Disconnected status by
calling Connect() which re-establishes the SSH session and re-registers
the route in wshrouter.

Fixes: durable sessions getting stuck after remote host downtime
Root cause: startNewJob() assumed connection was alive without verifying
* fix(jobcontroller): P0 auto-reconnect reliability fixes

- Bug #1: move cooldown timestamp set after connection check passes
- Bug #2: replace processed bool with generation counters (actualGen/procGen)
- Bug #3: split singleflight into reconnectConnGroup and reconnectRouteGroup
- Add 12 unit tests covering all three fixes

* docs: record auto-reconnect decision and tmux feature ideas from 2026-05-23 session

* fix: ensure connection is alive before starting durable shell

When a remote SSH connection drops (e.g. host goes down), the connection
status is set to Disconnected and the route is removed from wshrouter.
However, when a new block tries to start a durable shell,
startNewJob() used MaybeGetConn() which returns the stale connection
object without checking if it's actually alive.

This adds an EnsureConnection() call before using the connection route.
EnsureConnection handles reconnection for Disconnected status by
calling Connect() which re-establishes the SSH session and re-registers
the route in wshrouter.

Fixes: durable sessions getting stuck after remote host downtime
Root cause: startNewJob() assumed connection was alive without verifying

* docs: setup auto-reconnect detection gaps branch — Phase 1/2/3 plan for issues #7/#8

* feat(connmonitor): auto-disconnect on persistent stall (Phase 1 — Gap C)

- Add ConnStallAutoDisconnect and ConnStallDisconnectThreshold to ConnKeywords
- ConnMonitor tracks StallStartTime when stall is first detected
- When stall persists beyond threshold (default 30s) and user is not actively typing,
  trigger conn.Close() to set Status=Disconnected
- This makes sleep/Wi-Fi/VPN interruptions self-healing via existing onConnectionUp
- Guardrails: only disconnect when Status is Connected/Connecting; spawn Close()
  in goroutine to avoid blocking monitor; respect conn:stallautodisconnect=false

* fix(phase1-gaps): address all GAP-1 through GAP-4 from spec review

- GAP-2: Remove !urgent guard from stall-disconnect — keystrokes on a stalled
  connection go nowhere, so disconnect regardless of input activity
- GAP-1: Add reconnect scheduler in onConnectionDown — periodic Connect()
  attempts (every 30s, up to 5min) for connections with running durable jobs;
  deduplicated via connectionReconnectSchedulers sync map
- GAP-1: Add conncontroller.AttemptReconnect() helper for named reconnects
- GAP-3: Add conncontroller_test.go with 11 tests for AttemptReconnect,
  stall tracking, disconnectOnStall, config helpers; add deduplication test
  in jobcontroller_test.go
- GAP-4: Document conn:stallautodisconnect and conn:stalldisconnectthreshold
  in docs/docs/connections.mdx
- Add test hooks (connectInternalTestHook, getConnectionConfigTestHook) to
  conncontroller package for mockability without real SSH infrastructure

* docs(phase1-gaps): update spec and todos with resolution status

* feat(phase2): implement NotifySystemResumeCommand for macOS sleep/wake fast-path

- Replace no-op NotifySystemResumeCommand in wshserver.go with actual logic:
  calls jobcontroller.HandleSystemResume(ctx)
- Add HandleSystemResume in jobcontroller.go:
  - Iterate all SSH connections via GetAllConnStatus()
  - Skip local, non-durable, and already-healthy connections
  - Force disconnect on stalled zombies (post-sleep dead TCP)
  - Spawn AttemptReconnect() goroutines immediately (bypass 30s scheduler)
- Add hasRunningDurableJobsTestHook for testability
- Add TestHandleSystemResumeSmoke in jobcontroller_test.go
- Electron side already wired: emain.ts powerMonitor.on('resume') fires RPC

End-to-end flow on macOS wake:
1. powerMonitor resume event → NotifySystemResumeCommand RPC
2. HandleSystemResume → disconnect stalled + AttemptReconnect for all durable conns
3. Connect() succeeds when network is back → onConnectionUp → ReconnectJob
4. Durable sessions restored in ~1-2s instead of ~60s

* feat(phase3): aggressive reconnect scheduler on network-unreachable errors

- Add isNetworkUnreachableError() helper: detects dial tcp i/o timeout,
  no route to host, network unreachable, DNS failure (no such host)
- scheduleConnectionReconnect switches to aggressive mode (5s interval)
  when AttemptReconnect fails with a network-level error
- Aggressive window extends 2 minutes per failure, catches Wi-Fi/VPN
  return much faster than 30s polling
- Returns to normal 30s interval when aggressive window expires
- Zero native code: pure Go, cross-platform, no build risk

Completes the auto-reconnect trilogy:
- Phase 1: Auto-disconnect on stall (keepalive timeout)
- Phase 2: macOS sleep/wake fast-path (powerMonitor event)
- Phase 3: Aggressive scheduler for Wi-Fi/VPN changes

* docs(phase1-3): update spec with Phase 2 and Phase 3 completion status

* fix(review): address critical race and timing issues from code review

- Issue #1 (race): Close() in HandleSystemResume is now synchronous
  (not async goroutine) so status is Disconnected before AttemptReconnect
- Issue #2 (double scheduler): Delete stale scheduler entry from
  connectionReconnectSchedulers before fast-path reconnect to avoid races
- Issue #5 (timeout pile-up): In aggressive mode, connect timeout reduced
  from 30s -> 8s so 5s ticks don't overlap
- Issue #6 (job-check timeout): Increased from 5s -> 15s so slow DB
  queries don't prematurely stop the scheduler
…reconnects

- Set Timeout on ssh.ClientConfig so TCP dial has a fallback timeout
- Enforce a 5s deadline on net.Conn during ssh.NewClientConn to prevent
  indefinite handshake stalls that block lifecycleLock
- Clear deadline after handshake and close connection on error
- Fix TimeoutFromContext to never return negative durations
- Defensive ctx.Err() check in StartConnServer before reading version

Fixes #13
Jeremy added 27 commits June 28, 2026 05:52
…ents

Terminal:
- Press Enter closes block after shell exits (both local and remote)
- Message changed to '[shell terminated - press enter to close]'

SCM Widget:
- Header shows branch name instead of directory
- Commit message text clips with ellipsis when shrunk
- Side-by-side toggle disabled for untracked files (always inline)
- Push button (arrow up) next to Commit button
…ivate

Memoize viewText atom to avoid creating new object references when
cwd hasn't changed, simplify userCwdAtom write pattern, and defer
startPolling via setTimeout to avoid running during React render
phase.
Eliminate the blockClicked intermediate state and its two useLayoutEffect
hooks in BlockFull. The old pattern caused a synchronous re-render cascade:
setBlockClicked(true) -> re-render remounts DOM -> document.activeElement
lost -> focusWithin check fails -> setFocusTarget() re-focuses -> stale
handleChildFocus sees isFocused=false -> calls focusNode() -> shifts
layout focus to another block -> its isFocused toggles -> loop repeats.

Now a single useLayoutEffect directly handles focus when isFocused
becomes true, and setBlockClickedTrue handles click-based focus without
going through intermediate state.
…tion gaps

Root causes fixed (6):
- Password prompt now renders once per tab (TabUserInputPromptOverlay),
  only on tabs with terminal blocks — SCM/widgets no longer show prompts
- User input contexts (passphrase/password/kbd-interactive) use
  context.Background() instead of connection ctx — scheduler 5s timeout
  no longer kills the 60s password prompt window
- connchange events are buffered in WPS PendingEvents so late-joining
  windows receive dismissal events (fixes stale prompts across windows)
- Frontend no longer dismisses password prompts on non-auth connection
  errors — the prompt buffer is independent of connection lifecycle
- Auth-failed connections no longer trigger the 5s reconnect scheduler
  for interactive-auth (stops prompt flashing every 5s). Instead, a
  background goroutine (requestPasswordRePrompt) independently re-prompts
  the user and retriggers Connect() when a new password is cached
- Orphaned passwords (user submits after context timeout) are cached via
  SendUserInputResponse and consumed by connectInternal
- Tab-switch reconnect trigger: when user activates a tab with
  disconnected/error connections, ConnEnsureCommand restarts them

Design doc at .pi/specs/reconnection.md covers both strategies (autonomous
vs interactive-auth) with state diagrams, UX tables, decision tree, and
the full 16-trigger reference.
…, dropdown glitching

Bug 1: Pass connName through tab creation chain so the backend sets
connection meta on the initial block, eliminating the race between
SetMetaCommand and ControllerResyncCommand that caused remote tabs
to open as local.

Bug 2: Add durable-disconnected check to Enter key handler so
pressing Enter closes the block for durable connections when
the route is disconnected, matching local/non-durable behavior.

Bug 3: Reduce re-renders that caused window glitching when opening
connection dropdowns — memoize BlockFrame_Header, remove global
scroll capture listener, replace useLayoutEffect with useEffect
for positioning calculations.
Backend returns valid empty response instead of error for non-git
directories. Frontend removes inactive state checks so widget stays
active with directory dropdown, polling, and empty file lists.

Also changes section header action buttons to show + icon with tooltip
instead of text labels.
Backend:
- Add GitLookupCredentialsCommand to check secret store for stored creds
- Add GitSaveCredentialsCommand to save creds to secret store
- Update GitPushCommand to return authHost and authRemote
- Parse remote URL to extract host and owner/repo path

Frontend:
- Add GitAuthDialog component with username/token fields
- Add auth dialog atoms for state management
- Implement silent retry with stored credentials
- Show dialog on auth error or when no credentials found
- Support repo-specific and host-wide credential storage

Secret store naming convention:
- Repo-specific: git:<protocol>:<host>/<owner>/<repo>
- Host-wide: git:<protocol>:<host>

Flow:
- Push → auth error → check secret store → found? retry silently
- Not found → show dialog → user enters creds → retry
- Success → optionally save to secret store
…race, add scope tracking

- encodeSecretName() replaces :/. with _ to comply with secret store's ^[A-Za-z][A-Za-z0-9_]*$ regex
- detectProtocolFromURL() infers https vs ssh for secret naming
- GIT_ASKPASS uses os.CreateTemp instead of fixed /tmp path (race-safe)
- parseHostFromURL/parsePathFromURL exclude ssh:///https:// prefixes before matching @: pattern
- authScopeAtom tracks original credential scope through dialog lifecycle
- handlePush cleanup: removed dead TODO code
- wshclient.go: added GitLookupCredentialsCommand and GitSaveCredentialsCommand bindings
… cached password

The cached-password guard on the Status_Error branch blocked reconnection
when the scheduler gave up (5 min max) leaving the connection in error
state with no cached password. Tab-switch ConnEnsureCommand triggers
would silently fail because EnsureConnection returned an error instead
of calling Connect().

Now Connect() is always called from error state. The decoupled password
callback handles prompting the user independently when needed,
and the lifecycleLock/cooldown guards prevent hammering.
…ant tab trigger

EnsureConnection now always calls Connect() from Status_Error (removed
the cached-password guard that blocked reconnection after scheduler
gave up). This is critical for key-based durable connections where
switching to a disconnected tab should restart the connection.

Removed the redundant TabContent reconnect trigger. blockframe.tsx
already calls ConnEnsureCommand from its useEffect on every mount,
and blocks remount on tab switch via key={tabId}. The TabContent
trigger had a race condition where globalStore.get() reads block
metadata synchronously before blocks finish loading asynchronously,
causing an early skip that never retried.
- Center 'Authentication Required' title
- Move labels to left of input fields (horizontal layout)
- Change 'Token' to 'Password' with 'password or token' placeholder
- Add checkbox to enable save to secrets store option
- Rename options to 'This repo' and 'All repos for this remote'
- Make dialog fully opaque (bg-black/80)
- Add fallback for parsing remote URL when git command fails
- Extract host from remote URL if authHost is empty
Before showing the auth dialog, check if there are actually unpushed
commits. If there's nothing to push, return 'Everything up-to-date'
success message without prompting for credentials.

This prevents unnecessary auth prompts when:
- Local branch is up to date with remote
- No upstream is set but remote branch exists
- First push with no commits yet
- Show actual git error message when auth fails (not generic message)
- Show error for non-auth push failures
- Handle case where result is null (dialog already shown with error)
- Add ReviewMode, JumpList, FileDiffSection, ReviewHeader components
- Lazy Monaco mounting via IntersectionObserver with unmount on scroll away
- Stage/unstage/revert from review mode with optimistic updates and rollback
- Diff caching keyed by (path, staged, untracked) with invalidation on stage
- Stats bar computing additions/deletions from diff hunks
- Cross-file hunk navigation via F7/Shift+F7 using Monaco goToDiff API
- Middle-click file tree entry to enter review mode for single file
- Keyboard shortcuts: Escape, Alt+Up/Down, S/R keys in file header
- Container-scoped keyboard listeners (not global window)
- 40 unit tests for model logic and types
…exits

When a remote shell exits in a durable session, no controllerstatus event
with ShellProcStatus='done' was published. The frontend's key handler
(shellProcStatus == 'done' && Enter) never triggered, so pressing Enter
after 'shell terminated - press enter to close' did nothing.

Now HandleCmdJobExited publishes the event just like ShellController does,
enabling the frontend to close the block on Enter for durable sessions.
…se hardening

- Add review-disk-backed-stream-history.md documenting 5 bugs, 5 issues, 4 gaps
- Bug 1: drainRunning replaced with drainGen generation counter
- Bug 2: deactivation gated on terminal event, not just catch-up
- Bug 3: post-write diskFile identity check for deactivation race
- Bug 5: removed dataInBuf guard, fixed diskReadPos backward-move logic
- D2: diskFile.Close() moved out of lock in all paths
- Tests: 7 new tests covering drain lifecycle, deactivation race, timeout, fallback
@coderabbitai

coderabbitai Bot commented Jul 5, 2026

Copy link
Copy Markdown
Contributor

Important

Review skipped

Too many files!

This PR contains 728 files, which is 578 over the limit of 150.

To get a review, narrow the scope:
• coderabbit review --type committed # exclude uncommitted changes
• coderabbit review --dir # limit to a subdirectory
• coderabbit review --base # compare against a closer base

Upgrade to a paid plan to raise the limit.

⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro

Run ID: d9d2de31-10f1-486b-89b5-a13ccd771baa

📥 Commits

Reviewing files that changed from the base of the PR and between c99022c and dc57b11.

⛔ Files ignored due to path filters (4)
  • go.sum is excluded by !**/*.sum
  • local_crypto_patch/contents/go.sum is excluded by !**/*.sum
  • package-lock.json is excluded by !**/package-lock.json
  • screenshots/square_bracket_right_side.png is excluded by !**/*.png
📒 Files selected for processing (728)
  • .github/workflows/build-macos-ci.yml
  • .github/workflows/build-macos.yml
  • .github/workflows/codeql.yml
  • .github/workflows/deploy-docsite.yml
  • .github/workflows/testdriver-build.yml
  • .github/workflows/testdriver.yml
  • .gitignore
  • .pi/context.md
  • .pi/decisions.md
  • .pi/draft-issue-autoconnect-bugs.md
  • .pi/index.md
  • .pi/reviews/remove-telemetry-independent-review.md
  • .pi/reviews/remove-telemetry-review.md
  • .pi/specs/bug-tabclose-crash.md
  • .pi/specs/configurable-reconnect-thresholds.md
  • .pi/specs/directory-dropdown.md
  • .pi/specs/disk-backed-stream-history.md
  • .pi/specs/durable-session-image-restore.md
  • .pi/specs/fast-reconnect-hardcoded.md
  • .pi/specs/git-push-auth.md
  • .pi/specs/iip-sizing-investigation.md
  • .pi/specs/phase1-gaps.md
  • .pi/specs/portforwarding.md
  • .pi/specs/reconnect-ui-overlay.md
  • .pi/specs/reconnection.md
  • .pi/specs/remove-telemetry.md
  • .pi/specs/remove-updater-delete.md
  • .pi/specs/remove-updater.md
  • .pi/specs/remove-waveai.md
  • .pi/specs/review-disk-backed-stream-history.md
  • .pi/specs/scm-multifile-diff-review.md
  • .pi/specs/scm-multifile-diff.md
  • .pi/specs/source-control-widget.md
  • .pi/specs/widget-follow-focus.md
  • .pi/specs/wsh-agent-api.md
  • .pi/todos.md
  • AGENTS.md
  • IMAGE-RENDERING-INVESTIGATION.md
  • README.md
  • REMOTE-IMAGE-PASTE-SPEC.md
  • Taskfile.yml
  • cmd/generatego/main-generatego.go
  • cmd/generateschema/main-generateschema.go
  • cmd/server/main-server.go
  • cmd/test-streammanager/main-test-streammanager.go
  • cmd/testai/main-testai.go
  • cmd/testai/testschema.json
  • cmd/testopenai/main-testopenai.go
  • cmd/testsummarize/main-testsummarize.go
  • cmd/wsh/cmd/wshcmd-ai.go
  • cmd/wsh/cmd/wshcmd-badge.go
  • cmd/wsh/cmd/wshcmd-blocks.go
  • cmd/wsh/cmd/wshcmd-debug.go
  • cmd/wsh/cmd/wshcmd-debugterm.go
  • cmd/wsh/cmd/wshcmd-deleteblock.go
  • cmd/wsh/cmd/wshcmd-editconfig.go
  • cmd/wsh/cmd/wshcmd-editor.go
  • cmd/wsh/cmd/wshcmd-file.go
  • cmd/wsh/cmd/wshcmd-focusblock.go
  • cmd/wsh/cmd/wshcmd-getmeta.go
  • cmd/wsh/cmd/wshcmd-getvar.go
  • cmd/wsh/cmd/wshcmd-launch.go
  • cmd/wsh/cmd/wshcmd-notify.go
  • cmd/wsh/cmd/wshcmd-root.go
  • cmd/wsh/cmd/wshcmd-run.go
  • cmd/wsh/cmd/wshcmd-secret.go
  • cmd/wsh/cmd/wshcmd-setbg.go
  • cmd/wsh/cmd/wshcmd-setconfig.go
  • cmd/wsh/cmd/wshcmd-setmeta.go
  • cmd/wsh/cmd/wshcmd-setvar.go
  • cmd/wsh/cmd/wshcmd-ssh.go
  • cmd/wsh/cmd/wshcmd-tabindicator.go
  • cmd/wsh/cmd/wshcmd-term.go
  • cmd/wsh/cmd/wshcmd-termscrollback.go
  • cmd/wsh/cmd/wshcmd-version.go
  • cmd/wsh/cmd/wshcmd-view.go
  • cmd/wsh/cmd/wshcmd-wavepath.go
  • cmd/wsh/cmd/wshcmd-web.go
  • cmd/wsh/cmd/wshcmd-wsl.go
  • db/migrations-wstore/000012_drop_telemetry.down.sql
  • db/migrations-wstore/000012_drop_telemetry.up.sql
  • docs/docs/ai-presets.mdx
  • docs/docs/config.mdx
  • docs/docs/connections.mdx
  • docs/docs/durable-sessions.mdx
  • docs/docs/faq.mdx
  • docs/docs/gettingstarted.mdx
  • docs/docs/index.mdx
  • docs/docs/keybindings.mdx
  • docs/docs/reconnect.mdx
  • docs/docs/releasenotes.mdx
  • docs/docs/telemetry-old.mdx
  • docs/docs/telemetry.mdx
  • docs/docs/waveai-modes.mdx
  • docs/docs/waveai.mdx
  • docs/docs/wsh-reference.mdx
  • electron-builder.config.cjs
  • emain/emain-activity.ts
  • emain/emain-ipc.ts
  • emain/emain-menu.ts
  • emain/emain-platform.ts
  • emain/emain-tabview.ts
  • emain/emain-wavesrv.ts
  • emain/emain-window.ts
  • emain/emain-wsh.ts
  • emain/emain.ts
  • emain/preload.ts
  • emain/updater.ts
  • frontend/app/aipanel/ai-utils.ts
  • frontend/app/aipanel/aidroppedfiles.tsx
  • frontend/app/aipanel/aifeedbackbuttons.tsx
  • frontend/app/aipanel/aimessage.tsx
  • frontend/app/aipanel/aimode.tsx
  • frontend/app/aipanel/aipanel-contextmenu.ts
  • frontend/app/aipanel/aipanel.tsx
  • frontend/app/aipanel/aipanelheader.tsx
  • frontend/app/aipanel/aipanelinput.tsx
  • frontend/app/aipanel/aipanelmessages.tsx
  • frontend/app/aipanel/airatelimitstrip.tsx
  • frontend/app/aipanel/aitooluse.tsx
  • frontend/app/aipanel/aitypes.ts
  • frontend/app/aipanel/byokannouncement.tsx
  • frontend/app/aipanel/restorebackupmodal.tsx
  • frontend/app/aipanel/telemetryrequired.tsx
  • frontend/app/aipanel/waveai-focus-utils.ts
  • frontend/app/aipanel/waveai-model.tsx
  • frontend/app/app.tsx
  • frontend/app/block/block.scss
  • frontend/app/block/block.tsx
  • frontend/app/block/blockenv.ts
  • frontend/app/block/blockframe-header.tsx
  • frontend/app/block/blockframe.tsx
  • frontend/app/block/blockoverlay.tsx
  • frontend/app/block/blockregistry.ts
  • frontend/app/block/blockutil.tsx
  • frontend/app/block/connectionbutton.tsx
  • frontend/app/block/connstatusoverlay.tsx
  • frontend/app/block/durable-session-flyover.tsx
  • frontend/app/block/port-forward-status.tsx
  • frontend/app/block/uploadoverlay.tsx
  • frontend/app/block/userinputpromptoverlay.tsx
  • frontend/app/element/directorydropdown.scss
  • frontend/app/element/directorydropdown.tsx
  • frontend/app/hook/useLongClick.tsx
  • frontend/app/modals/about.tsx
  • frontend/app/modals/modal.scss
  • frontend/app/modals/modalregistry.tsx
  • frontend/app/modals/modalsrenderer.tsx
  • frontend/app/modals/typeaheadmodal.tsx
  • frontend/app/modals/userinputprompt.scss
  • frontend/app/modals/userinputprompt.tsx
  • frontend/app/monaco/monaco-react.tsx
  • frontend/app/monaco/schemaendpoints.ts
  • frontend/app/onboarding/fakechat.tsx
  • frontend/app/onboarding/onboarding-durable.tsx
  • frontend/app/onboarding/onboarding-features.tsx
  • frontend/app/onboarding/onboarding-starask.tsx
  • frontend/app/onboarding/onboarding-upgrade-minor.tsx
  • frontend/app/onboarding/onboarding.tsx
  • frontend/app/store/focusManager.ts
  • frontend/app/store/global-atoms.ts
  • frontend/app/store/global.ts
  • frontend/app/store/keymodel.ts
  • frontend/app/store/modalmodel.test.ts
  • frontend/app/store/modalmodel.ts
  • frontend/app/store/services.ts
  • frontend/app/store/tabrpcclient.ts
  • frontend/app/store/wps.ts
  • frontend/app/store/wshclientapi.ts
  • frontend/app/tab/connectiondropdown.scss
  • frontend/app/tab/connectiondropdown.tsx
  • frontend/app/tab/tab.tsx
  • frontend/app/tab/tabbar.tsx
  • frontend/app/tab/tabbarenv.ts
  • frontend/app/tab/tabcontent.tsx
  • frontend/app/tab/tabcontextmenu.ts
  • frontend/app/tab/tabuserinputpromptoverlay.tsx
  • frontend/app/tab/updatebanner.tsx
  • frontend/app/tab/vtabbar.tsx
  • frontend/app/tab/vtabbarenv.ts
  • frontend/app/view/aifilediff/aifilediff.tsx
  • frontend/app/view/preview/directorypreview.scss
  • frontend/app/view/preview/preview-directory.tsx
  • frontend/app/view/preview/preview-model.tsx
  • frontend/app/view/sourcecontrol/DiffGutter.tsx
  • frontend/app/view/sourcecontrol/file-diff-section.tsx
  • frontend/app/view/sourcecontrol/jump-list.tsx
  • frontend/app/view/sourcecontrol/review-header.tsx
  • frontend/app/view/sourcecontrol/review-mode.test.ts
  • frontend/app/view/sourcecontrol/review-mode.tsx
  • frontend/app/view/sourcecontrol/sourcecontrol-model.ts
  • frontend/app/view/sourcecontrol/sourcecontrol.tsx
  • frontend/app/view/sourcecontrol/types.test.ts
  • frontend/app/view/sourcecontrol/types.ts
  • frontend/app/view/term/dec-modes.test.ts
  • frontend/app/view/term/iip-debug-tests.js
  • frontend/app/view/term/image-addon.test.ts
  • frontend/app/view/term/image-restore.test.ts
  • frontend/app/view/term/osc-handlers.ts
  • frontend/app/view/term/term-model.ts
  • frontend/app/view/term/termutil.ts
  • frontend/app/view/term/termwrap.ts
  • frontend/app/view/tsunami/tsunami.tsx
  • frontend/app/view/waveai/waveai.tsx
  • frontend/app/view/waveconfig/waveaivisual.tsx
  • frontend/app/view/waveconfig/waveconfig-model.ts
  • frontend/app/view/waveconfig/waveconfigenv.ts
  • frontend/app/workspace/widgets.tsx
  • frontend/app/workspace/workspace-layout-model.ts
  • frontend/app/workspace/workspace.tsx
  • frontend/builder/builder-buildpanel.tsx
  • frontend/builder/builder-workspace.tsx
  • frontend/builder/store/builder-focusmanager.ts
  • frontend/builder/tabs/builder-filestab.tsx
  • frontend/builder/tabs/builder-previewtab.tsx
  • frontend/layout/lib/layoutModel.ts
  • frontend/preview/mock/defaultconfig.ts
  • frontend/preview/mock/mockwaveenv.ts
  • frontend/preview/mock/preview-electron-api.ts
  • frontend/preview/previews/aifilediff.preview-util.ts
  • frontend/preview/previews/aifilediff.preview.test.ts
  • frontend/preview/previews/aifilediff.preview.tsx
  • frontend/preview/previews/modal-about.preview.tsx
  • frontend/preview/previews/onboarding.preview.tsx
  • frontend/preview/previews/tabbar.preview.tsx
  • frontend/preview/previews/vtabbar.preview.tsx
  • frontend/preview/previews/waveai.preview.tsx
  • frontend/tailwindsetup.css
  • frontend/types/custom.d.ts
  • frontend/types/gotypes.d.ts
  • frontend/types/waveevent.d.ts
  • frontend/util/util.ts
  • frontend/wave.ts
  • go.mod
  • local_crypto_patch/README.md
  • local_crypto_patch/contents/.gitattributes
  • local_crypto_patch/contents/.gitignore
  • local_crypto_patch/contents/CONTRIBUTING.md
  • local_crypto_patch/contents/LICENSE
  • local_crypto_patch/contents/PATENTS
  • local_crypto_patch/contents/README.md
  • local_crypto_patch/contents/acme/acme.go
  • local_crypto_patch/contents/acme/acme_test.go
  • local_crypto_patch/contents/acme/autocert/autocert.go
  • local_crypto_patch/contents/acme/autocert/autocert_test.go
  • local_crypto_patch/contents/acme/autocert/cache.go
  • local_crypto_patch/contents/acme/autocert/cache_test.go
  • local_crypto_patch/contents/acme/autocert/example_test.go
  • local_crypto_patch/contents/acme/autocert/internal/acmetest/ca.go
  • local_crypto_patch/contents/acme/autocert/listener.go
  • local_crypto_patch/contents/acme/autocert/renewal.go
  • local_crypto_patch/contents/acme/autocert/renewal_test.go
  • local_crypto_patch/contents/acme/http.go
  • local_crypto_patch/contents/acme/http_test.go
  • local_crypto_patch/contents/acme/internal/acmeprobe/prober.go
  • local_crypto_patch/contents/acme/jws.go
  • local_crypto_patch/contents/acme/jws_test.go
  • local_crypto_patch/contents/acme/pebble_test.go
  • local_crypto_patch/contents/acme/rfc8555.go
  • local_crypto_patch/contents/acme/rfc8555_test.go
  • local_crypto_patch/contents/acme/types.go
  • local_crypto_patch/contents/acme/types_test.go
  • local_crypto_patch/contents/argon2/argon2.go
  • local_crypto_patch/contents/argon2/argon2_test.go
  • local_crypto_patch/contents/argon2/blake2b.go
  • local_crypto_patch/contents/argon2/blamka_amd64.go
  • local_crypto_patch/contents/argon2/blamka_amd64.s
  • local_crypto_patch/contents/argon2/blamka_generic.go
  • local_crypto_patch/contents/argon2/blamka_ref.go
  • local_crypto_patch/contents/bcrypt/base64.go
  • local_crypto_patch/contents/bcrypt/bcrypt.go
  • local_crypto_patch/contents/bcrypt/bcrypt_test.go
  • local_crypto_patch/contents/blake2b/blake2b.go
  • local_crypto_patch/contents/blake2b/blake2bAVX2_amd64.go
  • local_crypto_patch/contents/blake2b/blake2bAVX2_amd64.s
  • local_crypto_patch/contents/blake2b/blake2b_amd64.s
  • local_crypto_patch/contents/blake2b/blake2b_generic.go
  • local_crypto_patch/contents/blake2b/blake2b_ref.go
  • local_crypto_patch/contents/blake2b/blake2b_test.go
  • local_crypto_patch/contents/blake2b/blake2x.go
  • local_crypto_patch/contents/blake2b/register.go
  • local_crypto_patch/contents/blake2s/blake2s.go
  • local_crypto_patch/contents/blake2s/blake2s_386.go
  • local_crypto_patch/contents/blake2s/blake2s_386.s
  • local_crypto_patch/contents/blake2s/blake2s_amd64.go
  • local_crypto_patch/contents/blake2s/blake2s_amd64.s
  • local_crypto_patch/contents/blake2s/blake2s_generic.go
  • local_crypto_patch/contents/blake2s/blake2s_ref.go
  • local_crypto_patch/contents/blake2s/blake2s_test.go
  • local_crypto_patch/contents/blake2s/blake2x.go
  • local_crypto_patch/contents/blowfish/block.go
  • local_crypto_patch/contents/blowfish/blowfish_test.go
  • local_crypto_patch/contents/blowfish/cipher.go
  • local_crypto_patch/contents/blowfish/const.go
  • local_crypto_patch/contents/bn256/bn256.go
  • local_crypto_patch/contents/bn256/bn256_test.go
  • local_crypto_patch/contents/bn256/constants.go
  • local_crypto_patch/contents/bn256/curve.go
  • local_crypto_patch/contents/bn256/example_test.go
  • local_crypto_patch/contents/bn256/gfp12.go
  • local_crypto_patch/contents/bn256/gfp2.go
  • local_crypto_patch/contents/bn256/gfp6.go
  • local_crypto_patch/contents/bn256/optate.go
  • local_crypto_patch/contents/bn256/twist.go
  • local_crypto_patch/contents/cast5/cast5.go
  • local_crypto_patch/contents/cast5/cast5_test.go
  • local_crypto_patch/contents/chacha20/chacha_arm64.go
  • local_crypto_patch/contents/chacha20/chacha_arm64.s
  • local_crypto_patch/contents/chacha20/chacha_generic.go
  • local_crypto_patch/contents/chacha20/chacha_noasm.go
  • local_crypto_patch/contents/chacha20/chacha_ppc64x.go
  • local_crypto_patch/contents/chacha20/chacha_ppc64x.s
  • local_crypto_patch/contents/chacha20/chacha_s390x.go
  • local_crypto_patch/contents/chacha20/chacha_s390x.s
  • local_crypto_patch/contents/chacha20/chacha_test.go
  • local_crypto_patch/contents/chacha20/vectors_test.go
  • local_crypto_patch/contents/chacha20/xor.go
  • local_crypto_patch/contents/chacha20poly1305/chacha20poly1305.go
  • local_crypto_patch/contents/chacha20poly1305/chacha20poly1305_amd64.go
  • local_crypto_patch/contents/chacha20poly1305/chacha20poly1305_amd64.s
  • local_crypto_patch/contents/chacha20poly1305/chacha20poly1305_generic.go
  • local_crypto_patch/contents/chacha20poly1305/chacha20poly1305_noasm.go
  • local_crypto_patch/contents/chacha20poly1305/chacha20poly1305_test.go
  • local_crypto_patch/contents/chacha20poly1305/chacha20poly1305_vectors_test.go
  • local_crypto_patch/contents/chacha20poly1305/fips140only_compat.go
  • local_crypto_patch/contents/chacha20poly1305/fips140only_go1.26.go
  • local_crypto_patch/contents/chacha20poly1305/xchacha20poly1305.go
  • local_crypto_patch/contents/codereview.cfg
  • local_crypto_patch/contents/cryptobyte/asn1.go
  • local_crypto_patch/contents/cryptobyte/asn1/asn1.go
  • local_crypto_patch/contents/cryptobyte/asn1_test.go
  • local_crypto_patch/contents/cryptobyte/builder.go
  • local_crypto_patch/contents/cryptobyte/cryptobyte_test.go
  • local_crypto_patch/contents/cryptobyte/example_test.go
  • local_crypto_patch/contents/cryptobyte/string.go
  • local_crypto_patch/contents/curve25519/curve25519.go
  • local_crypto_patch/contents/curve25519/curve25519_test.go
  • local_crypto_patch/contents/curve25519/vectors_test.go
  • local_crypto_patch/contents/ed25519/ed25519.go
  • local_crypto_patch/contents/ed25519/ed25519_test.go
  • local_crypto_patch/contents/go.mod
  • local_crypto_patch/contents/hkdf/example_test.go
  • local_crypto_patch/contents/hkdf/hkdf.go
  • local_crypto_patch/contents/hkdf/hkdf_test.go
  • local_crypto_patch/contents/internal/alias/alias.go
  • local_crypto_patch/contents/internal/alias/alias_purego.go
  • local_crypto_patch/contents/internal/alias/alias_test.go
  • local_crypto_patch/contents/internal/poly1305/mac_noasm.go
  • local_crypto_patch/contents/internal/poly1305/poly1305.go
  • local_crypto_patch/contents/internal/poly1305/poly1305_test.go
  • local_crypto_patch/contents/internal/poly1305/sum_amd64.s
  • local_crypto_patch/contents/internal/poly1305/sum_asm.go
  • local_crypto_patch/contents/internal/poly1305/sum_generic.go
  • local_crypto_patch/contents/internal/poly1305/sum_loong64.s
  • local_crypto_patch/contents/internal/poly1305/sum_ppc64x.s
  • local_crypto_patch/contents/internal/poly1305/sum_s390x.go
  • local_crypto_patch/contents/internal/poly1305/sum_s390x.s
  • local_crypto_patch/contents/internal/poly1305/vectors_test.go
  • local_crypto_patch/contents/internal/testenv/exec.go
  • local_crypto_patch/contents/internal/testenv/testenv_notunix.go
  • local_crypto_patch/contents/internal/testenv/testenv_unix.go
  • local_crypto_patch/contents/internal/wycheproof/README.md
  • local_crypto_patch/contents/internal/wycheproof/aead_test.go
  • local_crypto_patch/contents/internal/wycheproof/aes_cbc_test.go
  • local_crypto_patch/contents/internal/wycheproof/boring.go
  • local_crypto_patch/contents/internal/wycheproof/dsa_test.go
  • local_crypto_patch/contents/internal/wycheproof/ecdh_stdlib_test.go
  • local_crypto_patch/contents/internal/wycheproof/ecdh_test.go
  • local_crypto_patch/contents/internal/wycheproof/ecdsa_test.go
  • local_crypto_patch/contents/internal/wycheproof/eddsa_test.go
  • local_crypto_patch/contents/internal/wycheproof/hkdf_test.go
  • local_crypto_patch/contents/internal/wycheproof/hmac_test.go
  • local_crypto_patch/contents/internal/wycheproof/internal/dsa/dsa.go
  • local_crypto_patch/contents/internal/wycheproof/notboring.go
  • local_crypto_patch/contents/internal/wycheproof/rsa_oaep_decrypt_test.go
  • local_crypto_patch/contents/internal/wycheproof/rsa_pss_test.go
  • local_crypto_patch/contents/internal/wycheproof/rsa_signature_test.go
  • local_crypto_patch/contents/internal/wycheproof/wycheproof_test.go
  • local_crypto_patch/contents/md4/example_test.go
  • local_crypto_patch/contents/md4/md4.go
  • local_crypto_patch/contents/md4/md4_test.go
  • local_crypto_patch/contents/md4/md4block.go
  • local_crypto_patch/contents/nacl/auth/auth.go
  • local_crypto_patch/contents/nacl/auth/auth_test.go
  • local_crypto_patch/contents/nacl/auth/example_test.go
  • local_crypto_patch/contents/nacl/box/box.go
  • local_crypto_patch/contents/nacl/box/box_test.go
  • local_crypto_patch/contents/nacl/box/example_test.go
  • local_crypto_patch/contents/nacl/secretbox/example_test.go
  • local_crypto_patch/contents/nacl/secretbox/secretbox.go
  • local_crypto_patch/contents/nacl/secretbox/secretbox_test.go
  • local_crypto_patch/contents/nacl/sign/sign.go
  • local_crypto_patch/contents/nacl/sign/sign_test.go
  • local_crypto_patch/contents/ocsp/ocsp.go
  • local_crypto_patch/contents/ocsp/ocsp_test.go
  • local_crypto_patch/contents/openpgp/armor/armor.go
  • local_crypto_patch/contents/openpgp/armor/armor_test.go
  • local_crypto_patch/contents/openpgp/armor/encode.go
  • local_crypto_patch/contents/openpgp/canonical_text.go
  • local_crypto_patch/contents/openpgp/canonical_text_test.go
  • local_crypto_patch/contents/openpgp/clearsign/clearsign.go
  • local_crypto_patch/contents/openpgp/clearsign/clearsign_test.go
  • local_crypto_patch/contents/openpgp/elgamal/elgamal.go
  • local_crypto_patch/contents/openpgp/elgamal/elgamal_test.go
  • local_crypto_patch/contents/openpgp/errors/errors.go
  • local_crypto_patch/contents/openpgp/keys.go
  • local_crypto_patch/contents/openpgp/keys_data_test.go
  • local_crypto_patch/contents/openpgp/keys_test.go
  • local_crypto_patch/contents/openpgp/packet/compressed.go
  • local_crypto_patch/contents/openpgp/packet/compressed_test.go
  • local_crypto_patch/contents/openpgp/packet/config.go
  • local_crypto_patch/contents/openpgp/packet/encrypted_key.go
  • local_crypto_patch/contents/openpgp/packet/encrypted_key_test.go
  • local_crypto_patch/contents/openpgp/packet/literal.go
  • local_crypto_patch/contents/openpgp/packet/ocfb.go
  • local_crypto_patch/contents/openpgp/packet/ocfb_test.go
  • local_crypto_patch/contents/openpgp/packet/one_pass_signature.go
  • local_crypto_patch/contents/openpgp/packet/opaque.go
  • local_crypto_patch/contents/openpgp/packet/opaque_test.go
  • local_crypto_patch/contents/openpgp/packet/packet.go
  • local_crypto_patch/contents/openpgp/packet/packet_test.go
  • local_crypto_patch/contents/openpgp/packet/private_key.go
  • local_crypto_patch/contents/openpgp/packet/private_key_test.go
  • local_crypto_patch/contents/openpgp/packet/public_key.go
  • local_crypto_patch/contents/openpgp/packet/public_key_test.go
  • local_crypto_patch/contents/openpgp/packet/public_key_v3.go
  • local_crypto_patch/contents/openpgp/packet/public_key_v3_test.go
  • local_crypto_patch/contents/openpgp/packet/reader.go
  • local_crypto_patch/contents/openpgp/packet/signature.go
  • local_crypto_patch/contents/openpgp/packet/signature_test.go
  • local_crypto_patch/contents/openpgp/packet/signature_v3.go
  • local_crypto_patch/contents/openpgp/packet/signature_v3_test.go
  • local_crypto_patch/contents/openpgp/packet/symmetric_key_encrypted.go
  • local_crypto_patch/contents/openpgp/packet/symmetric_key_encrypted_test.go
  • local_crypto_patch/contents/openpgp/packet/symmetrically_encrypted.go
  • local_crypto_patch/contents/openpgp/packet/symmetrically_encrypted_test.go
  • local_crypto_patch/contents/openpgp/packet/userattribute.go
  • local_crypto_patch/contents/openpgp/packet/userattribute_test.go
  • local_crypto_patch/contents/openpgp/packet/userid.go
  • local_crypto_patch/contents/openpgp/packet/userid_test.go
  • local_crypto_patch/contents/openpgp/read.go
  • local_crypto_patch/contents/openpgp/read_test.go
  • local_crypto_patch/contents/openpgp/s2k/s2k.go
  • local_crypto_patch/contents/openpgp/s2k/s2k_test.go
  • local_crypto_patch/contents/openpgp/write.go
  • local_crypto_patch/contents/openpgp/write_test.go
  • local_crypto_patch/contents/otr/libotr_test_helper.c
  • local_crypto_patch/contents/otr/otr.go
  • local_crypto_patch/contents/otr/otr_test.go
  • local_crypto_patch/contents/otr/smp.go
  • local_crypto_patch/contents/pbkdf2/pbkdf2.go
  • local_crypto_patch/contents/pbkdf2/pbkdf2_test.go
  • local_crypto_patch/contents/pkcs12/bmp-string.go
  • local_crypto_patch/contents/pkcs12/bmp-string_test.go
  • local_crypto_patch/contents/pkcs12/crypto.go
  • local_crypto_patch/contents/pkcs12/crypto_test.go
  • local_crypto_patch/contents/pkcs12/errors.go
  • local_crypto_patch/contents/pkcs12/internal/rc2/bench_test.go
  • local_crypto_patch/contents/pkcs12/internal/rc2/rc2.go
  • local_crypto_patch/contents/pkcs12/internal/rc2/rc2_test.go
  • local_crypto_patch/contents/pkcs12/mac.go
  • local_crypto_patch/contents/pkcs12/mac_test.go
  • local_crypto_patch/contents/pkcs12/pbkdf.go
  • local_crypto_patch/contents/pkcs12/pbkdf_test.go
  • local_crypto_patch/contents/pkcs12/pkcs12.go
  • local_crypto_patch/contents/pkcs12/pkcs12_test.go
  • local_crypto_patch/contents/pkcs12/safebags.go
  • local_crypto_patch/contents/poly1305/poly1305_compat.go
  • local_crypto_patch/contents/ripemd160/ripemd160.go
  • local_crypto_patch/contents/ripemd160/ripemd160_test.go
  • local_crypto_patch/contents/ripemd160/ripemd160block.go
  • local_crypto_patch/contents/salsa20/salsa/hsalsa20.go
  • local_crypto_patch/contents/salsa20/salsa/salsa208.go
  • local_crypto_patch/contents/salsa20/salsa/salsa20_amd64.go
  • local_crypto_patch/contents/salsa20/salsa/salsa20_amd64.s
  • local_crypto_patch/contents/salsa20/salsa/salsa20_amd64_test.go
  • local_crypto_patch/contents/salsa20/salsa/salsa20_noasm.go
  • local_crypto_patch/contents/salsa20/salsa/salsa20_ref.go
  • local_crypto_patch/contents/salsa20/salsa/salsa_test.go
  • local_crypto_patch/contents/salsa20/salsa20.go
  • local_crypto_patch/contents/salsa20/salsa20_test.go
  • local_crypto_patch/contents/scrypt/example_test.go
  • local_crypto_patch/contents/scrypt/scrypt.go
  • local_crypto_patch/contents/scrypt/scrypt_test.go
  • local_crypto_patch/contents/sha3/hashes.go
  • local_crypto_patch/contents/sha3/legacy_hash.go
  • local_crypto_patch/contents/sha3/legacy_keccakf.go
  • local_crypto_patch/contents/sha3/sha3_test.go
  • local_crypto_patch/contents/sha3/shake.go
  • local_crypto_patch/contents/sha3/testdata/keccakKats.json.deflate
  • local_crypto_patch/contents/ssh/agent/client.go
  • local_crypto_patch/contents/ssh/agent/client_test.go
  • local_crypto_patch/contents/ssh/agent/example_test.go
  • local_crypto_patch/contents/ssh/agent/forward.go
  • local_crypto_patch/contents/ssh/agent/keyring.go
  • local_crypto_patch/contents/ssh/agent/keyring_test.go
  • local_crypto_patch/contents/ssh/agent/server.go
  • local_crypto_patch/contents/ssh/agent/server_test.go
  • local_crypto_patch/contents/ssh/agent/testdata_test.go
  • local_crypto_patch/contents/ssh/benchmark_test.go
  • local_crypto_patch/contents/ssh/buffer.go
  • local_crypto_patch/contents/ssh/buffer_test.go
  • local_crypto_patch/contents/ssh/certs.go
  • local_crypto_patch/contents/ssh/certs_test.go
  • local_crypto_patch/contents/ssh/channel.go
  • local_crypto_patch/contents/ssh/channel_test.go
  • local_crypto_patch/contents/ssh/cipher.go
  • local_crypto_patch/contents/ssh/cipher_test.go
  • local_crypto_patch/contents/ssh/client.go
  • local_crypto_patch/contents/ssh/client_auth.go
  • local_crypto_patch/contents/ssh/client_auth_test.go
  • local_crypto_patch/contents/ssh/client_test.go
  • local_crypto_patch/contents/ssh/common.go
  • local_crypto_patch/contents/ssh/common_test.go
  • local_crypto_patch/contents/ssh/connection.go
  • local_crypto_patch/contents/ssh/doc.go
  • local_crypto_patch/contents/ssh/example_test.go
  • local_crypto_patch/contents/ssh/handshake.go
  • local_crypto_patch/contents/ssh/handshake_test.go
  • local_crypto_patch/contents/ssh/internal/bcrypt_pbkdf/bcrypt_pbkdf.go
  • local_crypto_patch/contents/ssh/internal/bcrypt_pbkdf/bcrypt_pbkdf_test.go
  • local_crypto_patch/contents/ssh/kex.go
  • local_crypto_patch/contents/ssh/kex_test.go
  • local_crypto_patch/contents/ssh/keys.go
  • local_crypto_patch/contents/ssh/keys_test.go
  • local_crypto_patch/contents/ssh/knownhosts/knownhosts.go
  • local_crypto_patch/contents/ssh/knownhosts/knownhosts_test.go
  • local_crypto_patch/contents/ssh/mac.go
  • local_crypto_patch/contents/ssh/mempipe_test.go
  • local_crypto_patch/contents/ssh/messages.go
  • local_crypto_patch/contents/ssh/messages_test.go
  • local_crypto_patch/contents/ssh/mlkem.go
  • local_crypto_patch/contents/ssh/mux.go
  • local_crypto_patch/contents/ssh/mux_test.go
  • local_crypto_patch/contents/ssh/server.go
  • local_crypto_patch/contents/ssh/server_multi_auth_test.go
  • local_crypto_patch/contents/ssh/server_test.go
  • local_crypto_patch/contents/ssh/session.go
  • local_crypto_patch/contents/ssh/session_test.go
  • local_crypto_patch/contents/ssh/ssh_gss.go
  • local_crypto_patch/contents/ssh/ssh_gss_test.go
  • local_crypto_patch/contents/ssh/streamlocal.go
  • local_crypto_patch/contents/ssh/tcpip.go
  • local_crypto_patch/contents/ssh/tcpip_test.go
  • local_crypto_patch/contents/ssh/terminal/terminal.go
  • local_crypto_patch/contents/ssh/test/agent_unix_test.go
  • local_crypto_patch/contents/ssh/test/cert_test.go
  • local_crypto_patch/contents/ssh/test/dial_unix_test.go
  • local_crypto_patch/contents/ssh/test/doc.go
  • local_crypto_patch/contents/ssh/test/forward_unix_test.go
  • local_crypto_patch/contents/ssh/test/multi_auth_test.go
  • local_crypto_patch/contents/ssh/test/recording_client_test.go
  • local_crypto_patch/contents/ssh/test/recording_server_test.go
  • local_crypto_patch/contents/ssh/test/recording_test.go
  • local_crypto_patch/contents/ssh/test/server_test.go
  • local_crypto_patch/contents/ssh/test/session_test.go
  • local_crypto_patch/contents/ssh/test/sshcli_test.go
  • local_crypto_patch/contents/ssh/test/sshd_test_pw.c
  • local_crypto_patch/contents/ssh/test/test_unix_test.go
  • local_crypto_patch/contents/ssh/test/testdata_test.go
  • local_crypto_patch/contents/ssh/testdata/Client-BannerCallback
  • local_crypto_patch/contents/ssh/testdata/Client-Cipher-aes128-ctr
  • local_crypto_patch/contents/ssh/testdata/Client-Cipher-aes128-gcm@openssh.com
  • local_crypto_patch/contents/ssh/testdata/Client-Cipher-aes192-ctr
  • local_crypto_patch/contents/ssh/testdata/Client-Cipher-aes256-ctr
  • local_crypto_patch/contents/ssh/testdata/Client-Cipher-aes256-gcm@openssh.com
  • local_crypto_patch/contents/ssh/testdata/Client-Cipher-chacha20-poly1305@openssh.com
  • local_crypto_patch/contents/ssh/testdata/Client-HostKeyCheck
  • local_crypto_patch/contents/ssh/testdata/Client-KEX-curve25519-sha256
  • local_crypto_patch/contents/ssh/testdata/Client-KEX-curve25519-sha256@libssh.org
  • local_crypto_patch/contents/ssh/testdata/Client-KEX-diffie-hellman-group-exchange-sha256
  • local_crypto_patch/contents/ssh/testdata/Client-KEX-diffie-hellman-group14-sha1
  • local_crypto_patch/contents/ssh/testdata/Client-KEX-diffie-hellman-group14-sha256
  • local_crypto_patch/contents/ssh/testdata/Client-KEX-diffie-hellman-group16-sha512
  • local_crypto_patch/contents/ssh/testdata/Client-KEX-mlkem768x25519-sha256
  • local_crypto_patch/contents/ssh/testdata/Client-MAC-hmac-sha1
  • local_crypto_patch/contents/ssh/testdata/Client-MAC-hmac-sha1-96
  • local_crypto_patch/contents/ssh/testdata/Client-MAC-hmac-sha2-256
  • local_crypto_patch/contents/ssh/testdata/Client-MAC-hmac-sha2-256-etm@openssh.com
  • local_crypto_patch/contents/ssh/testdata/Client-MAC-hmac-sha2-512
  • local_crypto_patch/contents/ssh/testdata/Client-MAC-hmac-sha2-512-etm@openssh.com
  • local_crypto_patch/contents/ssh/testdata/Client-RunCommandFailed
  • local_crypto_patch/contents/ssh/testdata/Client-RunCommandStdin
  • local_crypto_patch/contents/ssh/testdata/Client-RunCommandStdinError
  • local_crypto_patch/contents/ssh/testdata/Client-RunCommandSuccess
  • local_crypto_patch/contents/ssh/testdata/Client-WindowChange
  • local_crypto_patch/contents/ssh/testdata/Client-username
  • local_crypto_patch/contents/ssh/testdata/Server-Cipher-aes128-ctr
  • local_crypto_patch/contents/ssh/testdata/Server-Cipher-aes128-gcm@openssh.com
  • local_crypto_patch/contents/ssh/testdata/Server-Cipher-aes192-ctr
  • local_crypto_patch/contents/ssh/testdata/Server-Cipher-aes256-ctr
  • local_crypto_patch/contents/ssh/testdata/Server-Cipher-aes256-gcm@openssh.com
  • local_crypto_patch/contents/ssh/testdata/Server-Cipher-chacha20-poly1305@openssh.com
  • local_crypto_patch/contents/ssh/testdata/Server-KEX-curve25519-sha256
  • local_crypto_patch/contents/ssh/testdata/Server-KEX-curve25519-sha256@libssh.org
  • local_crypto_patch/contents/ssh/testdata/Server-KEX-diffie-hellman-group14-sha1
  • local_crypto_patch/contents/ssh/testdata/Server-KEX-diffie-hellman-group14-sha256
  • local_crypto_patch/contents/ssh/testdata/Server-KEX-diffie-hellman-group16-sha512
  • local_crypto_patch/contents/ssh/testdata/Server-MAC-hmac-sha1
  • local_crypto_patch/contents/ssh/testdata/Server-MAC-hmac-sha1-96
  • local_crypto_patch/contents/ssh/testdata/Server-MAC-hmac-sha2-256
  • local_crypto_patch/contents/ssh/testdata/Server-MAC-hmac-sha2-256-etm@openssh.com
  • local_crypto_patch/contents/ssh/testdata/Server-MAC-hmac-sha2-512
  • local_crypto_patch/contents/ssh/testdata/Server-MAC-hmac-sha2-512-etm@openssh.com
  • local_crypto_patch/contents/ssh/testdata/doc.go
  • local_crypto_patch/contents/ssh/testdata/keys.go
  • local_crypto_patch/contents/ssh/testdata_test.go
  • local_crypto_patch/contents/ssh/transport.go
  • local_crypto_patch/contents/ssh/transport_test.go
  • local_crypto_patch/contents/tea/cipher.go
  • local_crypto_patch/contents/tea/tea_test.go
  • local_crypto_patch/contents/twofish/twofish.go
  • local_crypto_patch/contents/twofish/twofish_test.go
  • local_crypto_patch/contents/x509roots/gen_fallback_bundle.go
  • local_crypto_patch/contents/x509roots/nss/parser.go
  • local_crypto_patch/contents/x509roots/nss/parser_test.go
  • local_crypto_patch/contents/xtea/block.go
  • local_crypto_patch/contents/xtea/cipher.go
  • local_crypto_patch/contents/xtea/xtea_test.go
  • local_crypto_patch/contents/xts/xts.go
  • local_crypto_patch/contents/xts/xts_test.go
  • package.json
  • patches/@xterm+addon-image+0.10.0-beta.287.patch
  • pkg/aiusechat/aiutil/aiutil.go
  • pkg/aiusechat/anthropic/anthropic-backend.go
  • pkg/aiusechat/anthropic/anthropic-backend_test.go
  • pkg/aiusechat/anthropic/anthropic-convertmessage.go
  • pkg/aiusechat/chatstore/chatstore.go
  • pkg/aiusechat/gemini/doc.go
  • pkg/aiusechat/gemini/gemini-backend.go
  • pkg/aiusechat/gemini/gemini-convertmessage.go
  • pkg/aiusechat/gemini/gemini-types.go
  • pkg/aiusechat/google/doc.go
  • pkg/aiusechat/google/google-summarize.go
  • pkg/aiusechat/google/google-summarize_test.go
  • pkg/aiusechat/openai/openai-backend.go
  • pkg/aiusechat/openai/openai-convertmessage.go
  • pkg/aiusechat/openai/openai-util.go
  • pkg/aiusechat/openai/stream-sample.txt
  • pkg/aiusechat/openai/tool-sample.txt
  • pkg/aiusechat/openaichat/openaichat-backend.go
  • pkg/aiusechat/openaichat/openaichat-convertmessage.go
  • pkg/aiusechat/openaichat/openaichat-types.go
  • pkg/aiusechat/toolapproval.go
  • pkg/aiusechat/tools.go
  • pkg/aiusechat/tools_builder.go
  • pkg/aiusechat/tools_readdir.go
  • pkg/aiusechat/tools_readdir_test.go
  • pkg/aiusechat/tools_readfile.go
  • pkg/aiusechat/tools_screenshot.go
  • pkg/aiusechat/tools_term.go
  • pkg/aiusechat/tools_tsunami.go
  • pkg/aiusechat/tools_web.go
  • pkg/aiusechat/tools_writefile.go
  • pkg/aiusechat/uctypes/uctypes.go
  • pkg/aiusechat/usechat-backend.go
  • pkg/aiusechat/usechat-mode.go
  • pkg/aiusechat/usechat-prompts.go
  • pkg/aiusechat/usechat-utils.go
  • pkg/aiusechat/usechat.go
  • pkg/aiusechat/usechat_mode_test.go
  • pkg/blockcontroller/blockcontroller.go
  • pkg/blockcontroller/blockcontroller_test.go
  • pkg/blockcontroller/durableshellcontroller.go
  • pkg/blockcontroller/shellcontroller.go
  • pkg/filebackup/filebackup.go
  • pkg/genconn/genconn.go
  • pkg/genconn/genconn_test.go
  • pkg/jobcontroller/jobcontroller.go
  • pkg/jobcontroller/jobcontroller_test.go
  • pkg/jobmanager/cirbuf.go
  • pkg/jobmanager/jobmanager.go
  • pkg/jobmanager/mainserverconn.go
  • pkg/jobmanager/streammanager.go
  • pkg/jobmanager/streammanager_test.go
  • pkg/panichandler/panichandler.go
  • pkg/remote/conncontroller/conncontroller.go
  • pkg/remote/conncontroller/conncontroller_test.go
  • pkg/remote/conncontroller/connmonitor.go
  • pkg/remote/sshclient.go
  • pkg/remote/sshclient_test.go
  • pkg/service/blockservice/blockservice.go
  • pkg/service/clientservice/clientservice.go
  • pkg/service/userinputservice/userinputservice.go
  • pkg/service/workspaceservice/workspaceservice.go
  • pkg/shellexec/shellexec.go
  • pkg/telemetry/telemetry.go
  • pkg/telemetry/telemetrydata/telemetrydata.go
  • pkg/tsgen/tsgen.go
  • pkg/tsgen/tsgenevent.go
  • pkg/tsgen/tsgenevent_test.go
  • pkg/userinput/userinput.go
  • pkg/userinput/userinput_test.go
  • pkg/util/utilfn/partial_test.go
  • pkg/util/utilfn/utilfn.go
  • pkg/waveobj/metaconsts.go
  • pkg/waveobj/objrtinfo.go
  • pkg/waveobj/wtypemeta.go
  • pkg/wcloud/wcloud.go
  • pkg/wcloud/wclouddata.go
  • pkg/wconfig/defaultconfig/defaultconfig.go
  • pkg/wconfig/defaultconfig/presets/ai.json
  • pkg/wconfig/defaultconfig/settings.json
  • pkg/wconfig/defaultconfig/waveai.json
  • pkg/wconfig/defaultconfig/widgets.json
  • pkg/wconfig/metaconsts.go
  • pkg/wconfig/settingsconfig.go
  • pkg/wcore/block.go
  • pkg/wcore/layout.go
  • pkg/wcore/wcore.go
  • pkg/wcore/window.go
  • pkg/wcore/workspace.go
  • pkg/web/web.go
  • pkg/wps/wps.go
  • pkg/wps/wpstypes.go
  • pkg/wshrpc/wshclient/wshclient.go
  • pkg/wshrpc/wshremote/git.go
  • pkg/wshrpc/wshremote/wshremote_file.go
  • pkg/wshrpc/wshrpctypes.go
  • pkg/wshrpc/wshrpctypes_file.go
  • pkg/wshrpc/wshserver/wshserver.go
  • pkg/wslconn/wslconn.go
  • pkg/wstore/wstore_dbops.go
  • postinstall.cjs
  • schema/aipresets.json
  • schema/connections.json
  • schema/settings.json
  • schema/waveai.json

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@CLAassistant

Copy link
Copy Markdown

CLA assistant check
Thank you for your submission! We really appreciate it. Like many open source projects, we ask that you sign our Contributor License Agreement before we can accept your contribution.


Jeremy seems not to be a GitHub user. You need a GitHub account to be able to sign the CLA. If you have already a GitHub account, please add the email address used for this commit to your account.
You have signed the CLA already but the status is still pending? Let us recheck it.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants