custom #7

Open
n wants to merge 16 commits from custom into main
Owner

What and why

Affected surfaces

Runtime Behavior after this change
Web
Desktop (Electron)
VS Code
Hosted mobile
Capacitor mobile

Validation

Check Result

Live run:

Visual evidence

Risks

<!-- Bug fix or small improvement? Fill in the sections below and open it. New feature, behavior change, or rework? It needed an Ideas discussion before the code: https://github.com/openchamber/openchamber/discussions/categories/ideas Link it here. That post asks about the problem in your own words; it is not a summary of this PR. A discussion opened after the implementation, describing what you already built, closes together with the PR behind it, because it arrives after the only moment when talking could have changed anything. Without a discussion at all, a large PR gets parked with `needs-discussion` until the product side is settled. A PR that carries a product decision with no discussion behind it and no maintainer go-ahead is not getting reviewed. Don't spend the evening on it. A "yes, go ahead" from a maintainer in the discussion is what makes the PR worth writing. See CONTRIBUTING.md. Keep one change per PR. Unrelated fixes in the same diff wait for the biggest one. Size labels count changed lines without tests, lockfiles, translation catalogs and evidence images, so a small change with many locale files stays small. --> ## What and why <!-- Tell the story in plain words, the way you'd explain it to a colleague in chat. A few short paragraphs: - what was wrong or missing, as the user saw it - what the user sees now instead - why this way, if there was a real choice Link the issue or Ideas discussion. If nearby behavior is deliberately left alone and a reader might expect it changed, say so in a line. Not here: file lists, function names, a walk through the diff, or a bullet per commit. The reviewer reads the diff; this section is what the diff can't say. --> ## Affected surfaces <!-- Packages, user-visible states, and persisted or external contracts touched. Then one line per runtime. "Not applicable" is an answer; a blank row is not. If a runtime behaves differently on purpose, say so. --> | Runtime | Behavior after this change | |---|---| | Web | | | Desktop (Electron) | | | VS Code | | | Hosted mobile | | | Capacitor mobile | | ## Validation <!-- Exact commands or manual checks and their results. Say what was not verified. Type-check and lint alone do not prove runtime behavior. --> | Check | Result | |---|---| | | | **Live run:** <!-- Did you run the built or running app and exercise the changed path? Name the runtime (web / desktop / VS Code / hosted mobile / Capacitor mobile), the OS, and what you saw. Required in addition to any screenshot or recording below, not instead of one. Not required when no user-reachable behavior changes. If you could not run it, say so and why. --> ## Visual evidence <!-- User-visible change: current before/after screenshots or recordings for the affected desktop/mobile, narrow/wide, theme, and interaction states. No visible change: one concrete sentence on why the diff cannot affect rendered behavior. --> ## Risks <!-- Failure, rollback, cleanup, compatibility, security, performance, data-loss, or cross-runtime concerns that a reviewer should weigh. "None identified" needs a reason. -->
n added 19 commits 2026-10-20 12:51:39 +00:00
createSourceControlAuthStore takes the provider name, its origin rule and whether signing in again as the same user renews the account in place. GitLab keeps its defaults.

(cherry picked from commit f295342dc4)
A built-in gitea provider covers Forgejo, Gitea and Codeberg, told apart by the server origin. It signs in with a personal access token or OAuth (authorization code with PKCE against an app registered on each server, client IDs kept per origin in the giteaOAuthClients setting), and reads and writes issues and pull requests: board, comments, reviews, labels, reviewers, state, create and merge. Repository bindings, git credentials, tracked items, change request worktrees and walkthroughs accept the new provider.

(cherry picked from commit ef8f478061)
Adds the Forgejo / Gitea card in Integrations (server address, token or OAuth sign-in, OAuth client ID with the callback address to register) and lets the board, pull request panel, diff, walkthrough, references and tracked items work with Forgejo accounts. The web client speaks the new routes; VS Code reports OAuth as unsupported and keeps token sign-in. New strings are translated in all locales.

(cherry picked from commit a7decf119a)
Covers token permissions, registering the OAuth app and its callback address, and Forgejo on the issues and PRs board.

(cherry picked from commit 0ef987260d)
The composer's + menu offered "Link Linear Issue" whenever the runtime
exposed a Linear API, even with no Linear account configured, so the row
opened a picker with nothing in it. The board showed a Linear tab the same
way.

Both now follow useLinearAvailable, which reads the reference source
status: the runtime offers Linear and the instance has it connected. Until
the first answer arrives the entry stays, so a slow or failed status never
reads as "not configured".

(cherry picked from commit 62bc31f5eb)
On a Forgejo or Gitea project every non-GitLab repository surface fell back to
GitHub copy and the GitHub mark: the composer + menu read "Link GitHub Issue
or PR", the picker title "Link from GitHub", and the board heading "GitHub
issues and pull requests". The + menu, the picker title, its empty states, the
board heading and New Worktree "start from" now read "issue or pull request"
with a `git-pull-request` icon. GitLab projects keep naming GitLab and their
merge requests; only the generic wording and the icons change.

New Worktree's source button printed a hardcoded "GitHub" for those projects,
so it now reads "Repository" (`session.newWorktree.actions.repositorySource`),
translated like the rest of the copy in every locale.

(cherry picked from commit 683c59a5c9)
(cherry picked from commit 4da8c75494)
(cherry picked from commit 9483811a98)
OpenChamber-Model: pai/gpt-5.6-sol
(cherry picked from commit 86adfdfbc9)
OpenChamber-Model: pai/gpt-5.6-sol
(cherry picked from commit 0f777160d9)
A browser tab cannot bind a local port, so it could not open a dev server
running on the OpenChamber machine. The server now forwards /proxy/<port>/
to that server's loopback, HTTP and WebSocket, for signed-in users only and
only to ports the dev server discovery lists.

The proxy is off until the instance setting portProxyEnabled is on, and the
server follows that setting without a restart. The relay allowlists and the
URL-token socket paths accept the /proxy/ path shape; the route itself still
checks the setting, sign-in and discovery on every request.

OpenChamber-Model: pai/claude-opus-5-5
(cherry picked from commit 425b991a1d)
With the port proxy on, the browser panel in a web tab loads the OpenChamber
machine's localhost addresses through /proxy/<port>/ and lists its dev
servers as openable. It keeps refusing where a frame could not sign in: a
runtime on another origin, the private relay, and spaces.

Settings > General gets the Port proxy switch with a warning that proxied
pages run on OpenChamber's own address.

OpenChamber-Model: pai/claude-opus-5-5
(cherry picked from commit df724de6c3)
OpenChamber-Model: pai/claude-opus-5-5
(cherry picked from commit c9555bb78a)
OpenChamber-Model: pai/claude-opus-5-5
(cherry picked from commit d1eef890dd)
OpenChamber-Model: pai/claude-opus-5-5
(cherry picked from commit 69e028fcff)
OpenChamber-Model: pai/claude-opus-5-5
Forgejo repositories and accounts fell through to the GitHub or GitLab
mark in the Tracker rail, the Git view's repository link, identities made
from an account, the account lists and linked issue chips. The PR
description prompt now calls the change a Forgejo pull request, and the
repository item errors name no host.
feat(sdk): expose agent colors and session metadata (openview compatibility)
Some checks failed
label-merge-conflict / label (pull_request_target) Has been cancelled
pr-intake / Collect pull requests (pull_request_target) Has been cancelled
pr-review / gate (pull_request_target) Has been cancelled
pr checks / type-check (pull_request) Has been cancelled
pr checks / lint (pull_request) Has been cancelled
pr checks / tests (pull_request) Has been cancelled
pr checks / build (pull_request) Has been cancelled
pr-review / automation (pull_request_target) Has been cancelled
b7d7ea51fa
OpenChamber-Model: pai/claude-sonnet-5-5
n force-pushed custom from b7d7ea51fa
Some checks failed
label-merge-conflict / label (pull_request_target) Has been cancelled
pr-intake / Collect pull requests (pull_request_target) Has been cancelled
pr-review / gate (pull_request_target) Has been cancelled
pr checks / type-check (pull_request) Has been cancelled
pr checks / lint (pull_request) Has been cancelled
pr checks / tests (pull_request) Has been cancelled
pr checks / build (pull_request) Has been cancelled
pr-review / automation (pull_request_target) Has been cancelled
to 96ed66efd0
Some checks failed
label-merge-conflict / label (pull_request_target) Has been cancelled
pr-intake / Collect pull requests (pull_request_target) Has been cancelled
pr-review / gate (pull_request_target) Has been cancelled
pr-review / automation (pull_request_target) Has been cancelled
pr checks / type-check (pull_request) Has been cancelled
pr checks / lint (pull_request) Has been cancelled
pr checks / tests (pull_request) Has been cancelled
pr checks / build (pull_request) Has been cancelled
nix-eval / eval (pull_request) Has been cancelled
2026-10-22 07:50:07 +00:00
Compare
n added 1 commit 2026-10-22 10:11:21 +00:00
fix(references): show no host icon for a folder that is not a git repository
Some checks failed
label-merge-conflict / label (pull_request_target) Has been cancelled
pr-intake / Collect pull requests (pull_request_target) Has been cancelled
pr-review / gate (pull_request_target) Has been cancelled
pr-review / automation (pull_request_target) Has been cancelled
pr checks / type-check (pull_request) Has been cancelled
pr checks / lint (pull_request) Has been cancelled
pr checks / tests (pull_request) Has been cancelled
pr checks / build (pull_request) Has been cancelled
55b57afecb
The server answers a binding read for such a folder with
UNSUPPORTED_SOURCE_CONTROL_REPOSITORY. useRepositoryHostProvider treated it
like any failed read and fell back to the remembered provider, GitHub by
default, so the Tracker rail showed GitHub's icon. That code now means `none`;
other failures still keep the remembered provider.
n added 1 commit 2026-10-22 21:34:42 +00:00
feat(sdk): expose each session's context usage to extensions
Some checks failed
label-merge-conflict / label (pull_request_target) Has been cancelled
pr-intake / Collect pull requests (pull_request_target) Has been cancelled
pr-review / gate (pull_request_target) Has been cancelled
pr-review / automation (pull_request_target) Has been cancelled
pr checks / type-check (pull_request) Has been cancelled
pr checks / lint (pull_request) Has been cancelled
pr checks / tests (pull_request) Has been cancelled
pr checks / build (pull_request) Has been cancelled
a7920dc764
Session records gain contextTokens and contextLimit, read the way the
chat's own context readout reads them: the newest response's token
count, and the context window of the session's model from the provider
catalog. Sessions whose transcript is not loaded take their reading from
live step and compaction events. Both are null when unknown, and the SDK
fills null for hosts that do not send them. They stay under the sessions
grant since they carry no content.

OpenChamber-Model: pai/claude-opus-5-5
n added 2 commits 2026-10-22 23:16:39 +00:00
Name the agent, model and agent color commit and the context usage commit,
so a replay onto a new upstream does not drop them.
fix(ui): show the agent's own name on the mobile agent button
Some checks failed
label-merge-conflict / label (pull_request_target) Has been cancelled
pr-intake / Collect pull requests (pull_request_target) Has been cancelled
pr-review / gate (pull_request_target) Has been cancelled
pr-review / automation (pull_request_target) Has been cancelled
pr checks / type-check (pull_request) Has been cancelled
pr checks / lint (pull_request) Has been cancelled
pr checks / tests (pull_request) Has been cancelled
pr checks / build (pull_request) Has been cancelled
6b06f63aa6
The mobile button capitalized the agent id and ignored the display name,
so a lowercase name like "reviewer" showed as "Reviewer". It now uses the
shared agentLabel helper, the same as the desktop controls.
n force-pushed custom from 6b06f63aa6
Some checks failed
label-merge-conflict / label (pull_request_target) Has been cancelled
pr-intake / Collect pull requests (pull_request_target) Has been cancelled
pr-review / gate (pull_request_target) Has been cancelled
pr-review / automation (pull_request_target) Has been cancelled
pr checks / type-check (pull_request) Has been cancelled
pr checks / lint (pull_request) Has been cancelled
pr checks / tests (pull_request) Has been cancelled
pr checks / build (pull_request) Has been cancelled
to 219251e3ae
Some checks failed
label-merge-conflict / label (pull_request_target) Has been cancelled
pr-intake / Collect pull requests (pull_request_target) Has been cancelled
pr-review / gate (pull_request_target) Has been cancelled
pr-review / automation (pull_request_target) Has been cancelled
pr checks / type-check (pull_request) Has been cancelled
pr checks / lint (pull_request) Has been cancelled
pr checks / tests (pull_request) Has been cancelled
pr checks / build (pull_request) Has been cancelled
nix-eval / eval (pull_request) Has been cancelled
2026-10-23 08:38:04 +00:00
Compare
n force-pushed custom from 219251e3ae
Some checks failed
label-merge-conflict / label (pull_request_target) Has been cancelled
pr-intake / Collect pull requests (pull_request_target) Has been cancelled
pr-review / gate (pull_request_target) Has been cancelled
pr-review / automation (pull_request_target) Has been cancelled
pr checks / type-check (pull_request) Has been cancelled
pr checks / lint (pull_request) Has been cancelled
pr checks / tests (pull_request) Has been cancelled
pr checks / build (pull_request) Has been cancelled
nix-eval / eval (pull_request) Has been cancelled
to f29e15aa82
Some checks failed
label-merge-conflict / label (pull_request_target) Has been cancelled
pr-intake / Collect pull requests (pull_request_target) Has been cancelled
pr-review / gate (pull_request_target) Has been cancelled
pr checks / type-check (pull_request) Has been cancelled
pr checks / lint (pull_request) Has been cancelled
pr checks / tests (pull_request) Has been cancelled
pr checks / build (pull_request) Has been cancelled
pr-review / automation (pull_request_target) Has been cancelled
2026-10-23 11:30:56 +00:00
Compare
Some checks failed
label-merge-conflict / label (pull_request_target) Has been cancelled
pr-intake / Collect pull requests (pull_request_target) Has been cancelled
pr-review / gate (pull_request_target) Has been cancelled
pr checks / type-check (pull_request) Has been cancelled
pr checks / lint (pull_request) Has been cancelled
pr checks / tests (pull_request) Has been cancelled
pr checks / build (pull_request) Has been cancelled
pr-review / automation (pull_request_target) Has been cancelled
This pull request can be merged automatically.
You are not authorized to merge this pull request.
View command line instructions

Checkout

From your project repository, check out a new branch and test the changes.
git fetch -u origin custom:custom
git switch custom

Merge

Merge the changes and update on Forgejo.

Warning: The "Autodetect manual merge" setting is not enabled for this repository, you will have to mark this pull request as manually merged afterwards.

git switch main
git merge --no-ff custom
git switch custom
git rebase main
git switch main
git merge --ff-only custom
git switch custom
git rebase main
git switch main
git merge --no-ff custom
git switch main
git merge --squash custom
git switch main
git merge --ff-only custom
git switch main
git merge custom
git push origin main
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
forks/openchamber!7
No description provided.