Conversation
- Add project, worktree, Git, terminal, review, and GitHub OAuth flows - Add gateway APIs, database migrations, web UI, Helm configuration, and docs
Extend the general workspace with coding-specific workflows, reusing its chat composer, session navigation, file editor, resize controls, and shadcn components. - Align project pages, workspace creation, and GitHub account settings with existing layouts. Keep dotted empty states and use restrained colors and icons. - Replace native repository selection with searchable, paginated GitHub results. Paginate pull requests and issues instead of loading entire collections. - Fix project routing, preserve agent and draft selection, and retain messages and attachments across provisioning, upload, and first-prompt failures. Allow OpenCode to generate thread titles. - Rework the Code panel with shared tabs, searchable branches, collapsible file diffs, staging actions, and direct access to the shared editor. Protect unsaved edits and prevent branch switches with dirty checkouts. - Fix initial diff rendering, multi-file patches, Unicode paths, renamed files, and binary-file handling. Share keyboard and pointer resize behavior with the files workspace. - Match terminal fonts and themes to the app, correct sizing, preserve sessions across tab changes, and fix connection focus, close, and retry behavior. - Generate meaningful conventional branch names from the first prompt in the background. Keep worktree directories stable, preserve existing and shared branches, and fall back to a temporary chore/ branch when naming fails. - Generate commit messages from bounded staged diffs when the input is empty. Preserve custom messages, use the selected model without tools, and clean up temporary generation sessions on success or failure. Reject stale staged trees before committing and applying changes. - Add generated suggestion and branch-rename APIs, expose OpenCode part discriminators and PTY types, and regenerate Go and TypeScript clients. Update the OpenCode configuration hash. - Remove cached GitHub author identity fields through a migration and use the connected account identity at commit time. Drop unused Git commands, redundant context fields, and obsolete workspace notes; format affected code and migration metadata. Validation: Go tests, TypeScript, targeted ESLint, the trusted Git test, and production builds passed. Live checks covered projects, chat retries, diffs, staging, editor saves, terminals, branch naming, generated and custom commits, stale-tree races, failure cleanup, and shared worktrees. Test resources were removed; no test commits were pushed.
- Combine code review, file browsing, and terminals in one workspace - Add file search and managed terminal sessions
Preserve upstream project setup, draft sessions, GitHub pagination, generated commit messages, and terminal rendering while integrating the sidebar. Reuse the resize control and remove the obsolete review panel. Let the generation context govern model request timeouts and abort temporary OpenCode sessions before deletion, including after client cancellation.
Remove competing terminal tab indicators and repeated workspace headers. Preserve terminal names, neighbor selection and keyboard focus; consolidate branch controls, tighten embedded toolbars, and move commit and pull request forms into their working context. Validated against the live sandbox: terminal creation, overflow, pointer and keyboard focus, reconnect, close and reload; file edits and save; stage/unstage, filtering and branch switching; retry states, panel resize and shortcuts; light/dark and mobile layouts. Typecheck, ESLint and production build pass.
Use consistent context typography, themed Lucide icons, shared priority badges and task progress. Replace manual diff selectors with shared Tabs and use tooltips for view controls. Connect the diff shadow root to the existing mono and UI font tokens. Forward Progress values to Radix for accessible determinate status. Validated live staging and unstaging, keyboard tabs, split/unified and wrapped diffs, shared font resolution, and empty context. Checked populated context fixtures with long labels and all task states in light, dark and mobile layouts, including the accessible progress value. Typecheck, lint and production build pass. Sandbox fixtures removed.
Older filesystem images returned legacy diff fields without a revision. The
new gateway accepted those as an empty review and staging sent an invalid
empty revision. Reject incompatible responses with an actionable image update
message; verify current image review and staging after a real sandbox rollout.
Batch untracked paths through an isolated intent-to-add index. Preserve Git
patch bodies and parse only headers for reads; parse hunks for mutations.
This reduces 1,000-file review from 1,005 Git processes to seven without
changing the user's index. Preserve the single-file fast path.
Ten alternating before/after handler samples, two operations each:
goos: linux
goarch: amd64
pkg: github.com/accuknox/agentz/internal/gateway/filesystem
cpu: AMD EPYC-Genoa Processor
│ /tmp/agentz-review-final-before.txt │ /tmp/agentz-review-final-after.txt │
│ sec/op │ sec/op vs base │
GitReview/status_1000_untracked-8 26.21m ± 12% 26.31m ± 13% ~ (p=0.853 n=10)
GitReview/untracked_1-8 21.25m ± 10% 20.46m ± 11% ~ (p=0.529 n=10)
GitReview/untracked_100-8 354.63m ± 9% 36.54m ± 18% -89.70% (p=0.000 n=10)
GitReview/untracked_1000-8 3475.8m ± 3% 113.4m ± 12% -96.74% (p=0.000 n=10)
GitReview/tracked_1000-8 193.0m ± 15% 199.3m ± 20% ~ (p=0.971 n=10)
GitReview/added_100k-8 144.4m ± 8% 101.2m ± 12% -29.92% (p=0.000 n=10)
GitReview/replaced_100k-8 250.9m ± 10% 167.3m ± 12% -33.32% (p=0.000 n=10)
GitReview/sparse_100k-8 54.46m ± 20% 59.40m ± 10% ~ (p=0.315 n=10)
geomean 150.4m 67.81m -54.91%
100K replacement allocation: 142.84 MiB to 67.17 MiB per request.
Production browser median, 1,000 files, ten sequential samples per version:
4855.9 ms to 339.4 ms. Raw timings, limitations and commands are in the report.
Validation: Go tests and race detector for gateway/filesystem, go vet,
100K final-line browser reachability, actual index stage/unstage, stale hunk
rejection, stash restore/pop/conflict retention. The temporary checkout
changes and commits were removed and the original HEAD/stashes restored.
Remove the missing-revision guard and its dedicated regression test. The reported mismatch came from an agent image that had not been updated and does not require additional compatibility handling. Remove the associated fix documentation while retaining the historical benchmark conditions. Preserve Git review, staging, stash behavior and all measured performance changes. Validation: gateway coding.go matches its pre-guard version exactly; performance, generated and frontend files are unchanged. Gateway and filesystem Go tests pass.
Separate the commit subject from its optional extended description using existing shadcn fields. Highlight subject text after character 50 without wrapping or rejecting it. Hardwrap body text at 80 characters while typing, pasting and accepting generated suggestions, preserving paragraph breaks. Combine subject and body with a blank line and retain drafts on failure. Give the mobile composer enough space and make its content scrollable on short screens. Keep the existing combined message size limit. Define the missing success color token so additions render green. Remove the diff's normal-width font override to inherit the shared monospace settings. Use simple hunk separators instead of unmodified-line bars. Validation: TypeScript, targeted ESLint and production Next build passed. Browser checks covered 50/51-character highlighting and horizontal scroll, 80/81-character wrapping, long-word/multiline paste, cursor replacement, generated suggestion splitting, empty subject and combined length limits, failed-commit draft retention, real subject-only and multiline commits, light/dark themes, narrow/short viewports and 100K-line hunk navigation. Saved commit text and rendered font settings were inspected. Test files and commits were removed and the original sandbox HEAD/stashes restored.
Group header actions and constrain project settings and stash dialogs. Avoid competing navigation refreshes, refresh Git status when opening a panel, and distinguish failed reviews from empty comparisons with retry. Notify chat-list subscribers when checkout deletion removes conversations. Verified through the production UI and Kubernetes sandbox, including project/workspace lifecycle, files, terminals, staging, stashes, error recovery, narrow layouts, and 100K-line review. Record coverage and limits.
Replace project cards with a focused TanStack Table using AdminDataGrid. Match the existing administration layout, workspace badge, primary create button, borders, typography, row density, and horizontal scrolling. Show truncated name, repository, and default branch columns alongside shared relative timestamps. Use SVGL GitHub icons for light and dark themes. Sort Name and Age locally, default to newest first, and identify rows by project ID while retaining the complete-list endpoint. Preserve row navigation, keyboard and modified-click opening, agent and draft parameters, and removal of the new query parameter. Keep the shared loading state and agent-dependent welcome message and create action. Add row menus for settings and rename through the existing dialogs. Load settings on demand, report fetch failures, stabilize the action callback, and refresh the list after mutations. Preserve composer behavior and checkout-based deletion restrictions. Remove unused card imports. Include staged whitespace-only formatting of generated Zod schemas. Validation: Bun typecheck, ESLint, formatting, and diff checks passed. Browser checks covered MCP styling parity, both themes, narrow scrolling, long text, empty lists with and without agents, sorting, row navigation, and query preservation. Live checks covered creation, direct new=true entry, settings retry, rename, deletion, cancellation, and draft retention. Remove temporary browser fixtures, test projects, and the test session.
Remove the session context tab and its agent metrics and task view. Clean up unused session context dependencies and UI imports.
Open a focused shell when the Terminal panel is activated. Refresh and reuse running sessions, create only when needed, and guard repeated activation and + clicks against duplicate creation. Closing the last tab must not create a replacement. Subscribe to generated, directory-scoped OpenCode PTY events and reconcile sessions on stream reconnection, socket closure, and failed attachment. Share cleanup between manual close and lifecycle events so exit/delete races and stale list responses cannot restore tabs or remove another tab. Dispose closed connections and emulators, select the next or previous tab, and hide the empty terminal panel without closing another active tool. Treat the reproduced HTTP 404 PtyNotFoundError as successful deletion. Keep tabs on genuine deletion failures and offer an inline retry. Pass Ctrl-D and exit through to the shell, preserve live sessions during transport failures and tool switches, and cancel subscriptions and pending UI work when the workspace changes. Failed creation waits for user retry. Remove the Ctrl/Cmd-backtick shortcut, its tooltip, the introductory empty state, and the persistent status/Clear/Reconnect footer. Keep tabs, close buttons, and + with compact loading and contextual retry controls. Clarify the worktree copy button tooltip. Match the terminal scrollbar to the app's 6px width, rounded thumb, and shared light/dark normal, hover, and drag colors. Configure xterm's width through its overview ruler option so the fit addon reserves the same space. Validation: - Frontend typechecking, targeted ESLint, formatting, and diff checks pass. - Browser checks against the existing sandbox cover creation, focus, reuse, shell input, Ctrl-D, exit, selection, closing, and background sessions. - Reproduce the actual 404 close failure and verify repeated clicks, deletion races, stale responses, network loss, failed attachment, explicit retries, and creation failures without automatic retry loops. - Verify directory/title scoping, missed-event reconciliation, workspace navigation during creation, and subscription/socket disposal. - Check mobile and dark layouts, scrollbar colors, wheel scrolling, and thumb dragging. Close the temporary verification shells.
Remove the GitHub panel, PR creation dialog, issue and PR listings, pagination, unused state, imports, and server actions. Replace the metadata query with a focused remote branch head lookup that makes no PR or issue requests. Move Pull, Push, and Publish branch into Changes alongside Commit. Share pending mutation state with staging, stashes, and branch switching to prevent overlapping operations. Preserve dirty checkout, expected head, fast-forward, ancestry, and exact remote lease checks. Refresh local and remote status after sync operations, provide retry for remote lookup failures, and refresh remote state when Changes reopens. Limit polling to visible Changes and keep controls usable in compact, expanded, and mobile layouts with stable accessible labels. Keep GitHub authentication, connections, repository setup, commit identity, and shared Git transport. Remove 242 net lines across three existing files without adding files or dependencies or editing generated code. Validation: - Passed typecheck, lint, production build, and both coding tests. - Live-tested staging, generated commit messages, commits, publishing, pushing, pulling, stashing, restoring, and branch switching. - Verified duplicate-click prevention, failed requests and retry, hidden query behavior, stale heads, divergent history, and access denial. - Checked Files, Terminal, panel shortcuts, dark mode, and 320/390px layouts. - Removed temporary test checkouts, conversations, terminals, branches, refs, and authentication sessions.
- Persist checkout branches and session records safely - Add skill deletion protection and webhook validation - Improve Git conflict, stash, and remote branch handling
Move branch, commit, and pull request prompts into embedded templates. Parse templates once and render them beside their callers with typed input data. Preserve validation, data limits, and input whitespace. Remove the redundant agent instruction preamble and simplify instruction file assembly so custom instructions stand on their own. Replace untyped workflow request maps and manual JSON serialization with generated request types and the typed async client method. Use a string builder for prompt rendering and retain the existing tool permissions. Validation: affected package tests, full Go build, and go vet passed.
The agent image lacked shell startup defaults, leaving the prompt and ordinary ls output uncolored. Terminal themes also relied on xterm's default ANSI palette instead of the app's light and dark colors. Advertise COLORTERM=truecolor through the existing PTY creation API. Keep OpenCode responsible for TERM and preserve color opt-out settings. Share one typed xterm theme builder between startup and theme changes. Map all 16 ANSI colors to app colors, set cursor and selection colors, and use a 4.5 minimum contrast ratio. Preserve terminal sessions and buffers when switching themes or reconnecting. Package an interactive Bash profile in the existing Nix runtime. Use Git's bundled prompt helper for a colored username@host:branch$ prompt that updates with the repository and omits the branch outside Git. Support linked worktrees and detached HEAD without custom Git parsing. Initialize missing LS_COLORS and default ls to --color=auto while preserving custom prompts, aliases, user login files, and NO_COLOR. Leave noninteractive commands quiet and redirected output uncolored. Keep changes in two existing files, remove duplicate theme setup, and add no dependencies or generated-code edits. Shell defaults require an updated agent image and a new terminal session. Validation covered types, lint, formatting, Nix syntax, an agent image build, and real OpenCode PTY color output. Browser checks covered ANSI, indexed and RGB colors, resets, selection, theme changes, hidden tabs, input, resizing, and reconnect replay. Shell checks covered overrides, redirection, branch switches, worktrees, and detached HEAD.
Disable workflows, schedule/webhook triggers, dashboards, and persistent memory in coding workspaces. Preserve general workspace behavior. - Propagate immutable workspace types to Kubernetes and reject mismatched provisioning state. - Block workflow and dashboard APIs for users, administrators, API keys, and service accounts. Keep workflow controllers inert in coding scopes. - Reject memory enablement through agent APIs and admission. Disable memory and journal tools, context hooks, and workflow chat preferences. - Remove workflow/dashboard tools, bundled skills, and workflow guidance from coding agents. Prevent environment overrides of workspace settings. - Hide unavailable navigation, agent settings, and chat filters. Return not-found pages for direct workflow and dashboard URLs. - Follow Next.js 16 conventions with generated PageProps, async parameters, Server Components, and Suspense around dynamic dashboard content. - Remove redundant tool constants and payload-guessing helpers. Read session creation events through SDK types and simplify error calls. - Document forbidden API responses and regenerate Go/TypeScript clients and Kubernetes CRDs from their source definitions. Validation: Go tests and lint, TypeScript and ESLint, production Next.js build, runtime checks, and browser checks for both workspace types passed.
Make coding chat creation start with a project and the regular composer. Create the thread and checkout on first send, with new, main, or existing checkout selection. Replace the separate project chat creation dialog. - Add project selection, sidebar project actions, and Shift-click New chat for the active project. Remember each project's last selected agent. - Match the general workspace's default flat session list and expose Date, Agent, State, Project, and None grouping with saved preferences. - Share Agent and People filters, preserve project expansion, and keep grouping and filtering usable on mobile. Keep workflow filters general. - Preserve unsent text, attachments, model, agent, and checkout choices across reloads using IndexedDB, without showing draft rows. Reuse empty composers only for the same project and agent. - Restore attachment object URLs and failed submissions, clear restored text after sending, and preserve the composer during session promotion. - Scope coding chat lists, search, participant filters, caches, watches, and operation notifications to the project owner. - Resolve child-session ancestry before exposing or cataloging subagent chats. Enforce ownership on engine, filesystem, attachment, and terminal routes; prevent sharing and unmanaged session or checkout creation. - Use the database workspace type for feature enforcement so a stale Kubernetes projection cannot bypass coding privacy restrictions. - Add project grouping and agent-preference migrations, extend OpenAPI, and regenerate SQL bindings, gateway stubs, and TypeScript clients. - Remove redundant creation UI and runtime type checks, and use the generated notification parameter conversion required by staticcheck. Validation: gateway lint and tests, TypeScript and ESLint checks, migration up/down checks, and live desktop/mobile testing of chat creation, reloads, attachments, grouping, filtering, agent selection, and owner isolation.
Show five rotating prompts using the saved coding project name. Pass projectName through ChatShell and Chat, and select the greeting index on the server so ordinary client rerenders keep the same prompt. Underline the project name with dots using t3code's foreground styling. Keep it as literal text and allow long names to wrap at narrow widths. Reuse one heading render path while preserving General greetings, the anonymous fallback, typography, placement, and conversation visibility. Use literal replacement for user names containing dollar signs. Validation: - Bun typecheck, targeted ESLint, Prettier, and git diff checks passed. - Chromium checks covered both projects, all five prompts across new chats, typing, model and checkout changes, and existing conversations. - Checked long and punctuated names at widths from 320 to 1440 pixels, dotted underline styling, General personalization, and browser errors. - Render checks covered every greeting, fallback, project precedence, literal names, and index wrapping. - Agent switching could not be exercised with only one available agent.
Replace coding-session avatars with t3code-style additions and deletions. Keep participant avatars in other workspaces and support every sidebar grouping, light and dark themes, and mobile navigation. Read paginated OpenCode message summaries for the latest completed turn, exclude reverted history, and retain completed totals while a turn runs. Cache counts by workspace, agent, and session. Refresh through existing chat events and reconnects, cancelling stale reads before refetching. Let the gateway transport negotiate and decode compression before reading session JSON. This fixes HTTP 502 responses for larger session metadata, including revert responses. Validation: - Go gateway tests, go vet, build, frontend typechecking, and lint passed. - Tested real agent edits, revert, restore, reload, and deletion. - Checked empty and failed reads, pagination, pending turns, all grouping modes, themes, mobile navigation, and non-coding participant avatars. - Verified reconnect refreshes, stale-response cancellation, and compressed session requests. Removed temporary test sessions and checkouts.
Use GitHub icons for sidebar project groups in light and dark themes, matching the projects page. Remove the border from the GitHub connection card in account settings. Validation: sidebar ESLint and web TypeScript checks passed.
Keep main's simplified workspace navigation and separate settings while preserving coding projects, project chat sessions, and workspace restrictions. Consolidate the coding migrations onto main's new Drizzle and gateway migration streams. Keep chat tables owned by the gateway, regenerate schema exports and sqlc output, and preserve main's existing migration history. Retain native Git in the runtime image alongside the migration directories. Update the Nix vendor hash for the combined Go dependencies. Validation: - Full Go tests, including race detection and shuffled execution - Go build, vet, and golangci-lint - Web and opencode lint/typechecks; web production build - GitHub credential isolation test against isolated PostgreSQL - Fresh migrations, upgrade from main with existing data, and repeat runs - Identical fresh/upgrade schemas; gateway coding rollback/reapply - Schema generation, YAML lint, and Nix dependency hash verification
Show the existing Skeleton in coding session sidebar rows while the initial diff query is pending. Match the measured count height with a 16px height and use a font-relative 7ch width for two-digit counts. Use sidebar colors, label the loading status for assistive technology, and disable animation when reduced motion is preferred. Keep cached counts visible during refreshes and hide the skeleton after empty results or errors. Keep the change local to SessionDiff. Validation: TypeScript, ESLint, formatting, and six render-state checks passed. Full sidebar browser testing remains unverified.
Follow T3's first-turn naming lifecycle by passing the generated branch name directly to Git and persisting the actual renamed branch. Keep asynchronous naming and stable worktree directories and session IDs. Resolve local branch collisions under the filesystem mutation lock. Try the requested name first, then the lowest available suffix from -1 through -100. Treat same-name renames as no-ops and report exhausted names. Use git show-ref --exists to distinguish missing refs from malformed refs and lookup failures. Preserve stale-branch checks and use non-forced renames so external races cannot overwrite an occupied destination. Extend the existing Git lifecycle test for same-name requests, numbered gaps, the final candidate, exhaustion, preserved HEAD and malformed refs. No new helpers, files, dependencies, schemas or generated-code edits. Validation: - Gateway tests, filesystem race tests, Go vet and lint passed. - Live agent HTTP checks covered collisions, exhaustion, invalid names, stale branches, remote-only names, malformed refs, lock failures, concurrent requests and dirty worktrees. - Browser checks verified real model naming, persisted branch selection, unchanged directories and sessions, reloads and a follow-up reply. - Removed temporary test resources after verification.
Upgrade @legendapp/list from 3.3.5 to 3.3.11 to pick up the upstream temporary-padding cleanup fix.
Scope file listings and chat replies to their checkout. Load coding Lens sessions through the paginated gateway API and surface errors. Share Lens scope loading, remove unused code, and align the explorer divider and toolbar borders without the embedded resize gap. Validated with typecheck, lint, formatting, request checks, and live browser/API tests in coding and general workspaces.
Share the rail, resizing, expansion, and shortcuts across workspaces. Keep drafts and terminals mounted on collapse. Remove the standalone explorer layout and obsolete state; refresh Git status when shown. Verified live desktop/mobile flows, file operations, attachments, error recovery, and terminals. Typecheck, lint, and formatting pass.
- Add coding projects, threads, repositories, worktrees, and operations - Disable agent memory for coding workspaces - Split webhook registration by resource
- Preserve unavailable worktrees in repository snapshots - Handle Git staging, imports, and branch status more reliably
Validate terminal origins before stripping them upstream. Separate advisory locks from query connections and regenerate sqlc unlock results. Apply commits with an atomic expected-HEAD check. Allow failed checkout cleanup while protecting local files, ignored files, and unpushed work. Add regression coverage. Verify live terminal, lock contention, commit race, and cleanup scenarios. Go tests, gateway lint, and web typecheck pass.
- Compare commit tree and parent explicitly - Reuse PTY proxy origin cases in tests
- Run Go tests with race detection and shuffled execution - Remove envtest setup and deleted integration-heavy test suites
murtaza-u
marked this pull request as ready for review
September 14, 2026 20:21
Resolve Helm conflicts by using the shared operator-managed Secret for coding GitHub credentials in both web and gateway. Remove obsolete chart-managed secret values and retain coding client IDs.
murtaza-u
force-pushed
the
feat/coding-workspace
branch
from
September 15, 2026 04:48
f6ce95c to
bcb34a1
Compare
murtaza-u
force-pushed
the
feat/coding-workspace
branch
from
September 15, 2026 05:15
2a544a6 to
76a7ee8
Compare
Persist native session mutations and events in PostgreSQL, with API keys acting as their creators and enforcing checkout ownership. Replace custom create/stop APIs, preserve queue recovery, and fix lock contention. Unify session, checkout and Git caches to prevent stale UI. Regenerate API and SQL clients, remove redundant code, and add schema, event transport and identity regression coverage.
- Coordinate OpenCode session stopping and status refreshes - Validate chat input state transitions with generated enums - Normalize event routing and OpenAPI schema generation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
We have a notion of a workspace. Each workspace is an isolation within a tenant. This PR extends the idea of a workspace to not just isolation but also features. When creating a workspace, a user will be able to choose the type of it. All existing workspaces will be called "General purpose" workspaces. With that said, this PR also introduces "Coding" workspaces.