Commit Graph
2596 Commits
Author SHA1 Message Date
bot-hermes b772f5dad9 fix(ui): support bare scp and IPv6 host forms in git provider detection
Extract a single shared parseGitHost (packages/ui/src/lib/gitHost.ts) used
by both the custom-domain registry (normalizeProviderDomain) and remote
detection (gitProvider). Previously both parsers required a user@ prefix,
rejecting valid bare scp remotes like codeberg.org:owner/repo.git, and
mangled IPv6 hosts. Now scp forms with or without a user, ssh:// URLs with
ports, git+ssh scheme, and bracketed/unbracketed IPv6 all normalize to a
bare hostname; Windows-path-like input is rejected.
2026-08-16 16:27:50 +00:00
bot-hermes ca91fd7e2d feat(gitea): add Gitea/Forgejo as a git provider
Full parity with the existing GitLab provider:
- Server module packages/web/server/lib/gitea (auth/client/repo/routes + docs + tests)
  with Gitea REST v1 API, PAT + base URL auth, multi-account storage
- Shared GiteaAPI types and web API client
- Provider detection generalized with user-configurable custom domains
  per provider (github/gitlab/gitea), additive with built-in defaults
  (github.com, gitlab.com) and connected-account hosts; precedence
  github -> gitlab -> gitea
- Gitea PR view, issues section, pickers, integration dialog, branch
  PR status helper, settings UI (PAT + base URL + custom domains)
- Magic prompts (gitea.pr.review, gitea.issue.review) and full 11-locale
  i18n parity
2026-08-16 16:27:49 +00:00
bot-hermes be13272eb1 feat(ui): issues tabs in GitLab MR and GitHub PR views
Add an Issues tab alongside the merge-request / pull-request content in the
context panel's PR surface for both providers. The tab lists open issues
lazily and expands a selected issue into an inline detail view (body, labels,
assignees, comments) with a back action. Read-only: no issue create, update,
or close actions. Adds 15 i18n keys across all 11 locales.
2026-08-16 16:27:49 +00:00
bot-hermes 7c8c2bba3f feat(ui): head branch selector in the GitHub pull request create form 2026-08-16 16:27:49 +00:00
bot-hermes d5dea0c004 feat(ui): branch selectors in the GitLab merge request create form 2026-08-16 16:27:48 +00:00
bot-hermes c25e16d093 feat(ui): GitLab brand icons in GitLab surfaces 2026-08-16 16:27:48 +00:00
bot-hermes 51ffe54788 fix(ui): provider-aware context tab icon 2026-08-16 16:26:02 +00:00
bot-hermes 7bf07f0dd9 fix(ui): provider-aware context rail branding for GitLab 2026-08-16 16:24:40 +00:00
bot-hermes 06a5dd63bb fix(ui): label GitLab merge requests as MR in the composer 2026-08-16 16:23:40 +00:00
bot-hermes 324dca9057 feat(ui): create, update and merge GitLab merge requests from the MR view 2026-08-16 16:23:39 +00:00
bot-hermes 28d992ac78 feat(web): create, update and merge GitLab merge requests 2026-08-16 16:23:39 +00:00
bot-hermes b8a0aa0242 feat(web): resolve walkthrough diffs for GitLab merge requests 2026-08-16 16:23:38 +00:00
bot-hermes 89db325168 feat(ui): show GitLab merge request status in walkthrough, git view and work status 2026-08-16 16:23:38 +00:00
bot-hermes 2c4ba78ae5 feat(ui): GitLab merge request view in the context panel 2026-08-16 16:23:37 +00:00
bot-hermes 454b3591e5 feat(ui): attach GitLab issues and merge requests to sessions 2026-08-16 16:23:36 +00:00
bot-hermes 267db3fb9d feat(web): filter GitLab merge requests by source branch 2026-08-16 16:23:36 +00:00
bot-hermes 6868a58359 fix(ui): hide GitHub surfaces in non-GitHub repositories 2026-08-16 16:23:36 +00:00
bot-hermes e83bd2bc08 fix(ui): refresh GitLab auth status on worktree dialog mount 2026-08-16 15:42:26 +00:00
bot-hermes a05056a871 feat(ui): start worktree sessions from GitLab issues and merge requests 2026-08-16 15:42:26 +00:00
bot-hermes a42eec5c9c feat(ui): add GitLab connect settings 2026-08-16 15:42:26 +00:00
bot-hermes d798b3f479 feat(web): add GitLab issues/MRs server module
Add a server-side GitLab integration mirroring the GitHub module:
- auth.js: PAT auth storage with multi-account support and configurable
  base URL (gitlab.com default, self-hosted instances supported)
- client.js: raw-fetch GitLab REST v4 client with per-request timeout,
  ETag conditional-GET cache, own rate-limit cooldown, pagination, and
  single-follow redirect handling
- repo.js: GitLab remote URL parser + directory resolution
- routes.js: read-only /api/gitlab/* routes (auth, issues, MRs, branches)
- index.js + DOCUMENTATION.md + unit tests for auth, client, repo, routes
- Wire registerGitLabRoutes into feature-routes-runtime
2026-08-16 15:42:26 +00:00
bot-hermes b5ddb6f3a1 feat(web): add GitLab API client wrapper and types 2026-08-16 15:42:26 +00:00
bot-hermes f16a5bab6b docs: add GitLab issues/MRs page 2026-08-16 15:42:26 +00:00
Bohdan Triapitsyn bfa0f9ee2a docs: require PR template and complete-file batches in maintenance flows
Maintenance task commands now fill .github/PULL_REQUEST_TEMPLATE.md section by
section instead of inventing their own headings, and follow-up tasks keep the
description true for the final HEAD while preserving hand-added content.

Raise the anti-slop batch window to 60-120 findings and require each selected
file to be finished: remaining findings need an individual specific reason,
shared root causes count once, and difficulty alone no longer justifies a skip.
A half-fixed file otherwise returns as a second pull request over the same code.

Add the maintenance-review command, which reviews every open anti-slop and
react-doctor pull request and fixes the findings directly rather than
commenting, without merging or approving.
2026-08-16 18:34:02 +03:00
Bohdan Triapitsyn 80150aaf0d chore: increase default max active claims to 20 2026-08-16 17:31:55 +03:00
Bohdan Triapitsyn 58c190f0b1 fix(web): use Vitest timers in PR status tests 2026-08-16 17:30:45 +03:00
Bohdan Triapitsyn b178f75eff docs: add maintenance review workflow 2026-08-16 17:10:31 +03:00
Bohdan Triapitsyn 97691fc4ac chore(scripts): raise default active batch limit to 10 2026-08-16 16:34:05 +03:00
Bohdan Triapitsyn 21152ec120 chore(vscode): update changelog for integrations settings page 2026-08-16 15:55:49 +03:00
Bohdan Triapitsyn 51aef5e316 chore(lint): vendor anti-slop oxlint plugin and add batched cleanup pipeline
Vendor the anti-slop Oxlint plugin at tools/oxlint/anti-slop and register it
in oxlint.config.ts, with Oxlint's own rule categories disabled so ESLint
stays the general-purpose linter.

Add scripts/anti-slop.mjs (bun run deslop) mirroring the React Doctor batch
interface: next-batch, check-batch, active, release, top, file. Batch handoff
directories now double as file claims shared across clones via
~/.openchamber/maintenance-claims, so concurrent maintenance batches from
either pipeline never select the same file.

Harden both scheduled maintenance flows: stop on a dirty worktree, stop on
NO BATCH AVAILABLE, validate per package instead of workspace-wide, and pin
react-doctor to 0.9.12. The anti-slop task command documents concrete
good and bad fixes and forbids laundering types to satisfy a rule.
2026-08-16 15:55:08 +03:00
Bohdan Triapitsyn e3094ee676 docs(changelog): add pending unreleased entries and reorder by impact 2026-08-15 17:58:31 +03:00
Bohdan Triapitsyn 268f9ea9f2 fix(github): keep merged PRs as branch history instead of hiding them
Branch status resolves an open PR across the whole fork network first, so a
merged fork PR can never hide an open upstream PR for the same head. Only when
no target has an open PR does the branch's newest closed/merged PR come back,
as history.

The panel shows that history as a compact note and offers creating the next PR
below it, instead of either sticking on a terminal PR or going blank after a
merge. Terminal associations stay persisted for reload continuity but are never
treated as authority: they revalidate on the discovery cadence and on focus.

History is looked up only for the branch's own remote and name, and remembered
per repo+branch, so the extra lookup cannot exhaust the route's resolve budget.
The checks summary and merge-permission lookup are skipped for a closed or
merged PR, where neither is actionable.
2026-08-15 17:56:55 +03:00
Bohdan Triapitsyn 52ac367b1e feat: update annotate toolbar icon to markup 2026-08-15 16:33:07 +03:00
Serhii Dziupin bfcb555aa5 Merge pull request #2928 from openchamber/feat/stale-last-directory-fallback-1be0
fix(sessions): recover new chats from a deleted lastDirectory
2026-08-15 15:48:25 +03:00
Bohdan Triapitsyn 9032dfa5c0 fix(ui): show project names exactly as the folder is named
Auto-derived project labels were title-cased, turning .ssh into .Ssh and
opencode-claude into Opencode Claude. Show the folder name verbatim in the
sidebar, window title, settings selector and notification templates, and
migrate persisted legacy labels back to the folder name (manual renames
are preserved).
2026-08-15 10:16:31 +03:00
Cursor Agentandserkraser d817c44c46 fix(sessions): accept in-flight draft rewrite to the fallback directory
Create no longer aborts when recoverStaleDraftDirectory rewrites the
implicit new-chat draft to the active project during the create probe.
Also rank the Unreleased Chat bullet below the changelog highlights.

Co-authored-by: serkraser <serkraser@gmail.com>
2026-08-15 06:33:28 +00:00
Cursor Agentandserkraser a500a5d4e9 merge origin/main into feat/stale-last-directory-fallback-1be0
Keep both Unreleased changelog bullets: the lastDirectory new-chat
fallback and the Git PR panel stale-status fix from main.

Co-authored-by: serkraser <serkraser@gmail.com>
2026-08-15 05:10:00 +00:00
Serhii Dziupin 8c91c82b62 Merge pull request #2929 from openchamber/feat/fix-stale-merged-pr-status-3a1e 2026-08-15 08:07:14 +03:00
Serhii Dziupin 11a136bba8 Merge pull request #2913 from Gautam0507/fix/2803-session-retention-persist 2026-08-15 08:05:48 +03:00
Serhii Dziupin 13b25eea64 Merge pull request #2920 from alohaninja/fix/ui-unused-runtimefetch-import 2026-08-15 08:03:17 +03:00
Cursor Agentandserkraser 7db8b2c463 chore(ui): keep directory availability type module-private
The availability union is only used by the OpenCode client probe.

Co-authored-by: serkraser <serkraser@gmail.com>
2026-08-15 04:47:15 +00:00
Cursor Agentandserkraser ed972d9f9e test(ui): use toBe(undefined) for persist/hydrate assertions
The UI expect helper does not type toBeUndefined.

Co-authored-by: serkraser <serkraser@gmail.com>
2026-08-15 04:30:30 +00:00
Cursor Agentandserkraser 9090733908 fix(sessions): rewrite stale new-chat drafts before send
When a regular new-chat draft inherits a deleted lastDirectory, update
the visible draft target to the active project immediately. lastDirectory
still stays unchanged until session creation succeeds.

Co-authored-by: serkraser <serkraser@gmail.com>
2026-08-15 04:28:07 +00:00
Cursor Agentandserkraser c1640522ec docs(changelog): note stale merged PR panel fix
Co-authored-by: serkraser <serkraser@gmail.com>
2026-08-15 04:27:52 +00:00
Cursor Agentandserkraser 13cbbc76d7 test(github): cover persist, hydrate, and complete open-list misses
Add store persist/hydrate regressions for terminal branch associations
and a server test that a complete empty open list does not query closed
PRs. Inline the open-only matcher state so the next repo target can win.

Co-authored-by: serkraser <serkraser@gmail.com>
2026-08-15 04:27:52 +00:00
Serhii DziupinandSerhii Dziupin 5e9e35897f fix(github): harden terminal PR revalidation after critical review
Recompute focus/visibility staleness at event time, retry closed/merged
sidebar associations on the no-PR cadence, and assert refresh failures
preserve prior PR status.

Co-authored-by: Serhii Dziupin <makeittech@users.noreply.github.com>
2026-08-15 04:27:02 +00:00
Serhii DziupinandSerhii Dziupin 962b016cbd fix(github): stop stale merged PRs from sticking in branch status
Branch PR status now resolves open PRs only, revalidates closed/merged
associations on a discovery cadence, and clears authoritative empty
results so the panel can self-heal without a manual refresh.

Co-authored-by: Serhii Dziupin <makeittech@users.noreply.github.com>
2026-08-15 04:27:02 +00:00
Cursor Agentandserkraser 90e79b04a4 fix(sessions): fall back when lastDirectory is a deleted worktree
New chats inherited a persisted lastDirectory even after that worktree
was removed, so the first message saved but the prompt never started.
Validate the implicit draft directory, fall back to the active project
only when OpenCode confirms the path is missing, and leave explicit
worktree targets and unknown probes unchanged.

Co-authored-by: serkraser <serkraser@gmail.com>
2026-08-15 04:26:39 +00:00
Serhii Dziupin 6b1e677aaf Merge pull request #2925 from makeittech/feat/fix-issue-2903-embedded-subagent-2cbc
fix(ui): restore embedded subagent history (#2892, #2903, #2919, #2922)
2026-08-15 07:07:39 +03:00
Serhii Dziupin 47acc48300 docs(changelog): note context-panel subagent history fix
Co-authored-by: serkraser <serkraser@gmail.com>
2026-08-15 03:51:35 +00:00