Commit Graph
2785 Commits
Author SHA1 Message Date
herjarsa 75d93f79c0 fix(providers): treat options.apiKey as a credential in credential signal
The previous review flagged that providerHasCredentials misclassifies
working config-defined providers: Provider.key is only set by upstream
when exactly one declared env var resolves or an api-type auth.json
entry exists. Config providers only get options, so provider.<id>.
options.apiKey never reaches key. Result: a provider whose key is
embedded in opencode.json showed 'Credentials missing', lost the
Models section, and forced the auth panel open.

Add optionsApiKey to ProviderCredentialInput and check it in
providerHasCredentials alongside key and authSourceExists. This
matches what main's requiresProviderAuth helper used to do and
honors the OpenChamber docs contract that options.apiKey counts as
a usable login (walkthrough/DOCUMENTATION.md:134).

Wire the new field through ProvidersPage.tsx using a typed
indirection: the SDK Provider type does not yet expose options
publicly, so the read site casts the object to the known shape.
This keeps the call site type-safe without waiting for an SDK
update.
2026-08-28 16:59:52 +02:00
herjarsa addcbfe447 fix(providers): address bot blockers for stale Credentials missing state
- shouldAutoOpenAuthPanel: re-introduce isEditableCustomProvider exemption
  (was dropped when requiresProviderAuth was replaced). Custom providers are
  editable directly in the form and must not be force-opened into the auth
  panel on a stale sources snapshot.
- handleSaveCustomProvider + handleDisconnectProvider: route through
  applyConfigReloadOrRecordDeferred so an externally managed OpenCode that
  throws requiresManualRestart records deferred-restart guidance instead of
  toasting a misleading 'mutation failed' for a write that already persisted.
- handleOAuthConnected: call markAuthWriteSucceeded so the page does not stick
  on a stale 'Credentials missing' summary while the providers refresh lands
  (OAuth previously only updated the deferred-restart payload).
- Sources effect deps: add settingsDirectory back so a directory switch while
  the provider id is unchanged refetches the source snapshot (was swapped for
  providerSourcesRevision in the prior rebase).
- Cleanup: drop dead oauthCodes state and copyTextToClipboard import; restore
  the requiresOpenCodeRestartAfterOAuth import alignment.

13/13 ProvidersPage.test.ts still green.
2026-08-28 16:54:45 +02:00
herjarsa d0e594ab1e docs(changelog): [Unreleased] entry for providers credential refresh (#2884) 2026-08-28 16:54:45 +02:00
herjarsa 06f87c17b0 fix(providers): drop dead handlers from rebased PR 2026-08-28 16:54:45 +02:00
herjarsa 08883ff98f fix(providers): import helpers, declare oauth state, drop conflict marker 2026-08-28 16:54:44 +02:00
Cursor AgentandSerhii Dziupin 82bb814af7 fix(providers): refresh credentials after auth save
Stop treating Provider.env length as credentials, refetch provider
sources after OAuth/API key writes, and respect an explicit auth-panel
Hide so OAuth-only providers do not stick on a stale "Credentials
missing" / empty-models state after a successful login.

Co-authored-by: Serhii Dziupin <makeittech@users.noreply.github.com>
2026-08-28 16:54:44 +02:00
Bohdan Triapitsyn 6950e113f4 docs(vscode): add the surface reachability map
Canonical answer to 'is this reachable in VS Code': three webview hosts,
VSCodeLayout's three views, a 33-row surface table (mounted / partial /
not mounted with the mount chain or cut-off point), the dead-bridge
handler list, and which fs routes stay live. Reviews, changelog entries,
and parity claims consult this map; whoever mounts or unmounts a surface
updates it in the same change.
2026-08-28 16:35:34 +03:00
Bohdan Triapitsyn f551f4e784 Merge pull request #3205 from openchamber/fix/branch-selector-remote-checkout
fix(git): check out a local tracking branch when a remote branch is picked
2026-08-28 16:21:40 +03:00
Bohdan Triapitsyn 5871c36875 chore: bump @opencode-ai/sdk to 1.18.25 2026-08-28 16:01:07 +03:00
Iuliia Ivashko 01b3e3346f fix(git): check out a local tracking branch when a remote branch is picked 2026-08-28 15:45:43 +03:00
Alan Shum 73e21d0050 test(ui): repair current main test baseline (#3191) 2026-08-28 15:44:40 +03:00
Iuliia Ivashko 52d79cb368 fix(desktop): surface failed update installs
"Restart to Update" answered the renderer with null before the install was
attempted, so a rejected install only reached main.log and the button looked
dead. The apply-update path now keeps the IPC call open until the app quits or
autoUpdater reports the failure, rolls the quit/install flags back when the app
stays up, and the update dialog shows the real reason with a translated hint for
a rejected code signature.

Also settle the download promise on downloadUpdate() itself: an already cached
payload emits no 'update-downloaded', which left that promise pending with its
listeners attached on every retry.
2026-08-28 14:47:09 +03:00
Bohdan Triapitsyn 3f3d942aab fix(browser): reveal panel for agent captures
Fixes #3175
2026-08-28 14:06:43 +03:00
Bohdan Triapitsyn 4f53db17e6 fix(worktrees): protect user changes across ambiguous move failures
Post-merge hardening of the session-to-worktree move (#2998), driven by
review findings on the follow-up pass:

- an ambiguous transport failure (relay abort, timeout) on the
  change-carrying move no longer force-deletes the fresh worktree that
  may hold the user's only copy of their changes; both intent kinds
  surface honest guidance and refresh both directories
- assertSdkSuccess re-tags ambiguous transport errors when wrapping SDK
  failures, so ambiguity classification survives the wrapper on every
  path, matching the prompt-send precedent
- session liveness checks scan all child stores plus the global status
  index, and report unknown (not idle) when no store covers the session
  — an evicted background directory can no longer make a busy session
  look movable
- incomplete-rollback errors carry the changes-may-be-in-destination
  guidance instead of swallowing it
- move-message assembly shared across the three call sites; tests now
  exercise the real ambiguity classifier (extracted to
  send-failure-classification.ts) instead of a hand-mirrored mock
- i18n fallout from the merge train: Turkish gains the 21 worktree-move
  keys, all 12 locales get the hedged ambiguous-failure toast; owning
  DOCUMENTATION.md files record the new contracts
2026-08-28 12:03:55 +03:00
Bohdan Triapitsyn 820e3194b5 Merge pull request #2998 from mattv8/feat/move-session-existing-worktree
feat(sessions): move sessions to existing worktrees
2026-08-28 11:37:21 +03:00
Bohdan Triapitsyn 06263a5c2b Merge pull request #3064 from fitzgpt/feat/i18n-turkish
feat(i18n): add Turkish (tr) locale
2026-08-28 11:33:52 +03:00
mattv8 bcaa70216f fix(sessions): restore worktree menu type wiring 2026-08-27 18:43:37 -06:00
mattv8 13ef639479 fix(sessions): keep chat worktree actions hidden 2026-08-27 18:43:37 -06:00
mattv8 a35ff1032c fix(sessions): avoid staged-change rollback conflicts 2026-08-27 18:43:37 -06:00
mattv8 1a9ff65380 docs(sessions): document dirty-source move choice 2026-08-27 18:43:37 -06:00
mattv8 26d6d72551 fix(sessions): preflight every worktree move 2026-08-27 18:43:37 -06:00
mattv8 8fc08853b3 feat(sessions): confirm dirty-source worktree moves 2026-08-27 18:43:37 -06:00
mattv8 0d4b3f036a fix(sessions): require explicit worktree change transfer 2026-08-27 18:43:37 -06:00
mattv8 c75c7809df test(sessions): complete global sessions store mock 2026-08-27 18:43:37 -06:00
mattv8 285bb35224 fix(sessions): recheck idle tree during worktree move 2026-08-27 18:43:37 -06:00
mattv8 52bea6d1f3 fix(sessions): harden worktree move recovery 2026-08-27 18:43:37 -06:00
mattv8 415f443a79 fix(sessions): keep worktree menu hook order stable 2026-08-27 18:43:37 -06:00
mattv8 9babd19d9b feat(sessions): move sessions to existing worktrees 2026-08-27 18:42:57 -06:00
fitzgpt 83c2c7dc76 feat(i18n): add Turkish (tr) locale 2026-08-28 02:27:31 +03:00
Bohdan Triapitsyn b8465ae133 fix: harden and de-slop the merged contribution batch
Follow-ups promised on merge, plus review findings on the batch itself:

- chat: task-tool output now respects the 512KiB render cap; quick-open
  icon is visible at rest on coarse pointers and reachable by keyboard
  (row keydown no longer swallows inner-button Enter/Space); composer
  inline-code decoration drops the metric-shifting padding; a btw fork
  send carries only the boundary instruction, never the promotion notice
- sync: cascade revert/unrevert aborts busy descendants, busy state is
  read from every child store at the moment of use; rule 9 documents
  redo clearing all descendant revert markers
- electron: renderer recovery keeps memory-eviction (a valid
  render-process-gone reason) and both windows share one
  attachRendererRecovery helper
- vscode: process registry is a thin re-export of the web module
  (provider-env-aliases precedent) with ordered register/unregister
  writes and an awaited close
- server/cli: managed-process registry takes injectable deps (fixes the
  unreaped-orphans ReferenceError), corrupt settings errors name the
  file, getWorktrees test restores console.warn
- tests: module-mock harnesses removed (AgentsSidebar, SettingsView
  mobile focus — behaviors stay live but uncovered, accepted trade),
  QuestionMarkdown asserts rendered DOM
- i18n: German gains the debug-panel request keys, Japanese/German drop
  removed worktree keys, Ukrainian unit spacing fixed
- changelog: Copilot AI Credits entries (main + VS Code)
2026-08-28 02:08:09 +03:00
Bohdan Triapitsyn 98567cd6e0 Merge main 2026-08-28 01:27:32 +03:00
Bohdan Triapitsyn de72625dc0 Merge main 2026-08-28 01:26:12 +03:00
Bohdan Triapitsyn cdfd28b3ca Merge main 2026-08-28 01:25:55 +03:00
Bohdan Triapitsyn 56e1eb5416 Merge main 2026-08-28 01:25:37 +03:00
Bohdan Triapitsyn 888f59fc80 Merge pull request #3033 from difagume/fix/inline-code-contrast
fix(ui): improve inline code contrast and chip styling
2026-08-28 01:25:02 +03:00
Bohdan Triapitsyn 34c96f8422 Merge pull request #2375 from JSap0914/fix/2265-tool-output-size-cap
fix(ui): cap oversized tool output before rendering to prevent renderer OOM (#2265)
2026-08-28 01:24:48 +03:00
Bohdan Triapitsyn 5a439ea73d Merge pull request #3127 from robertoberto/feat/quick-open-icon-in-tool-header
feat(chat): add quick-open file icon in tool card header
2026-08-28 01:24:42 +03:00
Bohdan Triapitsyn 3d397b4ad4 Merge pull request #1752 from bashrusakh/fix/1736-branch-filter
fix(worktree): hide non-matching branches during search
2026-08-28 01:24:36 +03:00
Bohdan Triapitsyn e205452223 Merge pull request #2771 from shijie152/fix/relay-key-atomic-settings
fix(cli): atomic settings writes and gate relay key regeneration in connect-url
2026-08-28 01:24:30 +03:00
Bohdan Triapitsyn 024a61aa88 Merge pull request #3169 from wqpan/fix/renderer-crash-recovery
fix(electron): recover crashed renderer windows
2026-08-28 01:24:24 +03:00
Bohdan Triapitsyn 1b5531e266 Merge pull request #1807 from TomzxForks/requests-in-flight
feat(debug): add fetch requests-in-flight tracker with age percentiles
2026-08-28 01:24:17 +03:00
Bohdan Triapitsyn 08a98ce459 Merge pull request #3171 from pocharlies-org/feat/btw-boundary
feat(btw): make a btw session a side question, not a continuation of the parent
2026-08-28 01:24:03 +03:00
Bohdan Triapitsyn 70b04412de Merge pull request #2488 from pascalandr/fix/856-question-markdown
fix(chat): render question prompts as markdown
2026-08-28 01:23:57 +03:00
Bohdan Triapitsyn feba432407 Merge pull request #2784 from herjarsa/fix/silence-worktree-warning-for-non-git-dirs
fix(git): silence getWorktrees warning when directory is not a repo
2026-08-28 01:23:51 +03:00
Bohdan Triapitsyn b25b64c000 Merge pull request #3146 from alexandrereyes/feat/undo-subagent
feat(ui): cascade undo and redo to subagents
2026-08-28 01:23:46 +03:00
Bohdan Triapitsyn 5854f43ca1 Merge pull request #2907 from jakoss/github-usage-rework
Align GitHub Copilot quota usage with AI credits
2026-08-28 01:23:40 +03:00
Bohdan Triapitsyn f64d8b59c8 Merge pull request #3109 from bashrusakh/fix/2982-mobile-agent-duplicate
fix(agents): open duplicate editor on mobile
2026-08-28 01:23:34 +03:00
Bohdan Triapitsyn 073c55a129 Merge pull request #2858 from TomzxForks/issue-2847
Remove the 5-model limit on multi-run groups
2026-08-28 01:23:28 +03:00
Bohdan Triapitsyn 0596af5761 Merge pull request #3000 from mpeter/fix/anthropic-small-model-base-url
fix(small-model): route anthropic provider through configured baseURL
2026-08-28 01:23:22 +03:00
Bohdan Triapitsyn 655c04aba6 Merge pull request #3151 from yangyaofei/fix-deferred-permissions
fix(sync): keep bootstrap context live for deferred recovery pulls
2026-08-28 01:23:16 +03:00