Commit Graph
2976 Commits
Author SHA1 Message Date
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
Bohdan Triapitsyn 1d423c32d5 Merge pull request #2314 from floze-the-genius/fix/2312-github-settings-disconnect
fix: keep GitHub settings mounted during refresh
2026-08-28 01:23:10 +03:00
Bohdan Triapitsyn d49ff426ab Merge pull request #2844 from sergiofspedro/fix/windows-port-release
fix: kill orphaned process on Windows before OpenCode restart
2026-08-28 01:23:04 +03:00
Bohdan Triapitsyn bfcd1830f0 Merge pull request #1727 from HAHH9527/fix/windows-schtasks-tr-261-char-limit
fix(cli): externalize Windows startup PowerShell to .ps1 wrapper (schtasks /TR 261-char limit)
2026-08-28 01:22:57 +03:00
Bohdan Triapitsyn 285c63e238 Merge pull request #1946 from divyam234/fix/theme-runtime-symlink-themes
fix: load symlinked custom themes
2026-08-28 01:22:52 +03:00
Bohdan Triapitsyn 5c03a2a6a7 Merge pull request #2880 from franzudev/fix/markdown-fence-caret
fix(composer): keep caret inside completed fence
2026-08-28 01:22:45 +03:00
Bohdan Triapitsyn 27be3f3193 Merge pull request #3038 from colinmollenhour/bug/Fix-External-OpenCode-Host-Recovery
fix(opencode): preserve external host during recovery
2026-08-28 01:22:23 +03:00
Bohdan Triapitsyn ce61646b27 Merge pull request #2510 from IbrahimKhan12/fix/2504-composer-double-space-period
fix: keep the composer's autocorrect on where the platform provides one
2026-08-28 01:22:16 +03:00
Bohdan Triapitsyn c3f3c5aeb7 Merge pull request #3040 from gaojunran/fix/cjk-markdown-links
fix(markdown): keep CJK/fullwidth punctuation out of bare-URL autolinks
2026-08-28 01:22:11 +03:00
Bohdan Triapitsyn d4e6bff056 Merge pull request #2987 from bashrusakh/fix/2476-vscode-model-menu-hover
fix(vscode): pair selection foreground with highlight in model picker
2026-08-27 23:17:22 +03:00
Bohdan Triapitsyn 87eacc4c5e Merge main 2026-08-27 23:17:06 +03:00
Bohdan Triapitsyn 054f7b1fca Merge pull request #3170 from gaojunran/fix/raise-open-file-line-limit
fix(ui): raise file open line limit to 20k lines
2026-08-27 23:16:44 +03:00
Bohdan Triapitsyn 8663411fdd Merge main 2026-08-27 23:16:29 +03:00
Bohdan Triapitsyn 78457611e4 Merge pull request #1890 from a0000001/fix/win-process-tree-kill
fix: kill process tree on Windows via taskkill before SIGTERM fallback
2026-08-27 23:15:45 +03:00
Bohdan Triapitsyn 64f3f46d93 Merge pull request #1957 from bketelsen/fix/sw-notificationclick-focus
fix(pwa): focus existing window on notification click
2026-08-27 23:15:39 +03:00
Bohdan Triapitsyn 3d8b801d52 Merge pull request #2120 from herjarsa/fix/chat-anchor-save-race
fix(chat): save previous-session anchor in microtask with bail check
2026-08-27 23:15:33 +03:00
Bohdan Triapitsyn ef51b95749 Merge pull request #2171 from greghaynes/clever-heron
fix(web): shorten PWA install app name
2026-08-27 23:15:26 +03:00
Bohdan Triapitsyn eac661de57 Merge pull request #2310 from Silvenga/feat/android-user-ca-trust
feat: allow user CA's when validating server's certs under android
2026-08-27 23:15:19 +03:00
Bohdan Triapitsyn 7b0d5b2ce2 Merge pull request #2610 from TTTPOB/fix/composer-empty-caret
fix(ui): keep empty composer caret visible
2026-08-27 23:15:12 +03:00
Bohdan Triapitsyn 2e76f04131 Merge pull request #2613 from TTTPOB/fix/vscode-reuse-manager-output-channel
fix(vscode): reuse manager output channel across restarts
2026-08-27 23:15:05 +03:00
Bohdan Triapitsyn 5da564df81 Merge pull request #2639 from weixiang1862/fix/add-project-browse-added-directory
fix(ui): allow entering already-added directories in the add-project picker
2026-08-27 23:14:59 +03:00
Bohdan Triapitsyn fb9306745e Merge pull request #2774 from IngTian/fix/omit-thinking-config-non-reasoning
fix(small-model): omit thinkingConfig for non-reasoning Google models
2026-08-27 23:14:53 +03:00
Bohdan Triapitsyn 2396510a14 Merge pull request #2817 from Dawnfz-Lenfeng/fix/init-command-always-available
fix(ui): always show /init command in autocomplete
2026-08-27 23:14:46 +03:00
Bohdan Triapitsyn f721d4aae3 Merge pull request #2891 from Ttungx/fix/skill-visibility-windows-paths
fix(ui): normalize Windows paths in skill visibility filtering
2026-08-27 23:14:40 +03:00
Bohdan Triapitsyn 413b7b5e58 Merge pull request #2971 from rvaldemar/fix/chat-input-no-model-toast
fix(chat): show visible error toast when no provider or model is selected
2026-08-27 23:14:33 +03:00
Bohdan Triapitsyn af1706c6a7 Merge pull request #2995 from bashrusakh/fix/2763-opencode-binary
fix(server): keep env-provided OPENCODE_BINARY when settings clear the override
2026-08-27 23:14:10 +03:00
Bohdan Triapitsyn 50d97a78e5 Merge pull request #3051 from pascalandr/fix/3046-editor-font-size-persistence
fix(settings): persist editor font size
2026-08-27 23:14:04 +03:00
Bohdan Triapitsyn d537d58dd7 Merge pull request #3052 from pascalandr/fix/2788-truncated-diff-crash
fix(chat): handle truncated diff headers
2026-08-27 23:13:57 +03:00
Bohdan Triapitsyn a2f55df211 Merge pull request #3066 from gaojunran/fix/branch-base-created-from-head
fix(git): don't treat bare HEAD as a branch diff base
2026-08-27 23:13:50 +03:00
Bohdan Triapitsyn 8d98ba3826 Merge pull request #3104 from fitzgpt/fix/non-ascii-directory-header
fix(server): percent-encode non-ASCII directory headers to OpenCode
2026-08-27 23:13:44 +03:00
Bohdan Triapitsyn f60d56c423 Merge pull request #3168 from AyoubAchour/fix/cloudflared-download-link
fix(tunnels): update cloudflared download link
2026-08-27 23:13:17 +03:00
Bohdan Triapitsyn 43c4cc625f fix(ui): open saved plans against their owning project
Saved Project knowledge plans opened as an empty editor whenever the
viewer could not resolve the owning project from the current directory:
managed chats (openchamber:chats is not a registered project), worktrees
outside the repo path, and plan tabs restored after a reload. Titles
still rendered because the list reads the manifest through the correct
owner.

- Thread the owner explicitly (savedProjectPlan = { projectRef, planId })
  from the panel, mobile surfaces, and persisted context tabs; PlanView
  no longer guesses the project.
- An unrecognized directory resolves to no owner instead of borrowing
  the active project's knowledge.
- Serialize plan writes per document (planSaveQueue) so close/switch
  within the autosave debounce no longer drops the last edits, saves
  cannot land out of order, and a recovered save clears the error banner.
- Send saved-plan contents inline in Improve/Implement prompts (they
  have no file path); disable those actions for managed-chat plans,
  which have no project directory to create a session in.
- Drop persisted plan tabs that carry an id without an owner rather than
  reopening them against a guessed project.
2026-08-27 20:18:12 +03:00
Bohdan Triapitsyn 03f4b5e3e0 fix(ui): scope agent memory to project context owner 2026-08-27 20:18:12 +03:00
ChangeHowandIuliia Ivashko 7aae5a6634 fix: preserve Markdown blocks when copying messages (#2944)
* fix: preserve Markdown blocks when copying messages

* fix: preserve blank lines when copying code

---------

Co-authored-by: Iuliia Ivashko <yulia.ivashko@gmail.com>
2026-08-27 19:37:49 +03:00
dibanez 0389af6cb3 refactor(btw): read the promoted flag from the panel state, not a second subscription
`useBtwPanelState` already subscribes to the composer's own session — it is
what the fork link is derived from — so asking `useSession` for the same
session and directory a second time in `ChatInput` was a duplicate
subscription for a value already in hand. Expose it as `parentSession` and
read the promoted flag from there.

No behavior change.
2026-08-27 14:04:12 +02:00
dibanez 7a95efc4ac fix(btw): stop the boundary from outliving the session it applies to
Review catch: `promoteBtwSession` removes the btw metadata, but the
boundary instruction is persisted on every message the session sent while
it was a side conversation, and there is no API to delete a message part
after the fact. A promoted session therefore keeps reading "no sub-agents,
do not touch the workspace" out of its own history, in a session that is
no longer a side conversation.

Promotion cannot delete those lines, so it answers them instead:
`withoutBtwSessionMarker` now leaves `openchamber.btwPromoted`, and the
composer sends `BTW_PROMOTION_NOTICE` with every message in a session
carrying it — stating that the session is now the main thread and the
usual tool, sub-agent and workspace permissions are in force.

It rides with every send for the same reason the boundary does: the
instructions it revokes are re-read on every turn, so a one-shot notice
would lose its position relative to them as the conversation grows.

`btwPromoted` is additive and optional. A session that never went through
`/btw` never has it, and one promoted before this change simply keeps the
old behavior.
2026-08-27 13:54:29 +02:00
Jakub Syty 22bd738180 Merge branch 'openchamber:main' into github-usage-rework 2026-08-27 10:06:53 +02:00
dibanez b0083f6e0f feat(btw): fork at the last completed turn, and never leak the inherited tail
Two related fixes to what a btw session inherits and shows.

**Fork point.** `/btw` is typically typed *while* the main thread is
working — that is the moment a side question comes up. Forking at HEAD
then clones a turn that is still streaming, so the fork inherits a
truncated assistant message and the user instruction that provoked it as
the newest, most salient thing in its context. Fork at the parent's last
completed assistant turn instead, read from the sync store with no extra
round-trip. A parent with no completed turn yet keeps the previous
fork-at-HEAD behavior.

**Boundary.** `filterBtwTailMessages` shows every inherited message when
the boundary is `null`, and the boundary is `null` whenever the
newest-cloned read comes back empty. That is correct for a fork of an
empty parent, but it also turns an empty read into "nothing was
inherited" for a fork that demonstrably did inherit history — the panel
then opens with the parent's whole transcript in it. Having picked a
fork point proves the parent had turns, so fall back to that id instead
of `null`. The fork's own messages are created later and still sort
after it, so its tail stays complete either way.
2026-08-27 09:37:43 +02:00
dibanez 92c3e0d5e5 feat(btw): keep the inherited thread as reference, not an active plan
`/btw` forks the session, so the model receives the parent's whole
conversation — including whatever plan was in flight when the user typed
the command. Nothing tells it that this history is context rather than
its own task, so the fork frequently carries on with the parent's work
instead of answering the side question, which is the opposite of what
`/btw` is for.

Send a boundary instruction as a synthetic part with every message in a
btw session: with the first question in `startBtwSession`, and with each
later send while the panel is expanded and the composer is talking to the
fork.

The wording is deliberately position-independent — it names the history
inherited from the parent thread rather than "everything before this
boundary". The instruction rides along with each send instead of being
pinned once at fork time, so a positional phrasing would be re-anchored
every turn and would end up telling the model to disregard the btw
session's own earlier turns.

The part is synthetic, so it is filtered out of the rendered transcript
whenever the message also carries user text — which is always the case
here. No visual change.
2026-08-27 09:21:42 +02:00