Skip to content

Unify TODO runtime and workflow tooling - #86

Open
moshloop wants to merge 259 commits into
mainfrom
feat/todo-prompt-runs
Open

Unify TODO runtime and workflow tooling#86
moshloop wants to merge 259 commits into
mainfrom
feat/todo-prompt-runs

Conversation

@moshloop

@moshloop moshloop commented Sep 1, 2026

Copy link
Copy Markdown
Member

What

  • Expand PR status, test/fixture, lint, process supervision, and project dashboard workflows.
  • Rework TODOs around native PostgreSQL, durable plans, runtime specs, verification, triage, and lifecycle-aware sessions.
  • Add AI-assisted commit grouping/staging, auto-merge, session-aware commits, and structured prompt configuration.

Notes

  • Includes breaking changes across CLI, API, and configuration contracts, including the pnpm migration and 0.0.0.0 default UI binding.

…/restart

Add TCP port detection for supervised processes using lsof, enabling the UI and CLI to display which ports a process is listening on. Implement a port-watching goroutine that polls for listening ports after process start and records them in the process state.

Enhance start/restart UX by:
- Showing per-process readiness progress with live task updates (starting → running → listening on :PORT)
- Gating processes that previously bound a port as "starting" until the port is re-detected on restart
- Displaying listening ports as clickable localhost links in the UI
- Polling process status faster (1s vs 3s) while transitions are in flight

Extract common utilities (ProcessAlive, TailFile) to a new utils package for reuse across service and procfile modules.

Refs: port detection, process lifecycle visibility
Add profile-based process selection and resource monitoring:

- Procfile now supports YAML format with per-process configuration (command, default, autoRestart, cpu, mem, profiles, env, maxRestarts)
- Processes can declare profiles to auto-start only when active; default:false makes them start on-demand
- Supervisor tracks CPU%, memory RSS, and open file descriptors per process
- Start/Restart commands accept --profile flag; daemon reuses profile on restart
- Control socket allows starting named processes on already-running daemon
- Removed terminateGroup function; clicky's SupervisedProcess handles process lifecycle
- Refactored supervisor to delegate per-process supervision to clicky instead of custom runLoop
- State includes active profile and available profiles from Procfile

BREAKING CHANGE: Procfile format changed from simple 'name: command' lines to YAML; Run/Start/Restart functions now require profile parameter
…ment with profiles and resource limits

Move author/bot filtering from server-side search config to client-side facet filters, allowing the UI to control bot visibility via @Bots chip. The daemon now fetches all authors and learns bot accounts from results, excluding them at the source on subsequent fetches unless @Bots is active.

Add profile support to Procfile supervision: entries with 'profiles' auto-start only when the active profile matches. Replace per-process config overrides in .gavel.yaml with per-process settings in the Procfile itself (command, default, autoRestart, cpu, mem, profiles, env, maxRestarts). Add resource limits (CPU %, memory cap) to both global defaults and per-process config.

Refactor tri-state facet filters (include/exclude/neutral) from Set-based to record-based representation, enabling exclude semantics in the UI. Add ProcessManager dropdown showing all supervised workspaces with live metrics (CPU, memory, open files), process trees, log previews, and profile selection. Add theme toggle and search bar to app header.

Update config schema and examples to reflect new Procfile structure. Remove SearchControls and RepoSelector components; integrate their functionality into FilterBar and AppShell.

BREAKING CHANGE: SearchConfig no longer carries author/any/bots fields; author filtering is now purely client-side. ProcfileConfig.restartPolicy and .processes are removed; use .autoRestart and per-process Procfile entries instead.
Replace npm with pnpm as the package manager across all UI projects (testrunner/ui, pr/ui) and CI workflows. Enable corepack for consistent pnpm version management instead of manual installation. Add pnpm-workspace.yaml files to support linking local @flanksource/clicky-ui sibling checkouts while resolving from npm registry in CI. Update all npm commands to pnpm equivalents and remove npm cache configuration from setup-node actions. Add packageManager field to package.json files and dedupe preact in testrunner/ui vite config to handle workspace resolution correctly. Update Makefile and Taskfile to use corepack pnpm instead of npm. Delete package-lock.json files as they are no longer needed.

BREAKING CHANGE: npm is no longer used; pnpm@10.33.0 is now required via corepack
Exclude the compiled PR UI bundle from version control to keep the repository clean and prevent build artifacts from being tracked.
Add /api/proc/favicon endpoint to fetch favicons from localhost services with project+port validation. Consolidate StatusIndicator and SettingsButton into a unified dropdown menu that displays health status, GitHub rate limits, sync controls, and version information. Add process uptime tracking and visualize CPU/memory metrics with charts. Extract ProcessPortLink component to display favicons alongside port links.

Changes:
- Backend: New handleProcFavicon handler with port discovery validation
- Frontend: Merge Summary and SettingsButton functionality into StatusIndicator
- Add @tanstack/react-query dependency for future data fetching
- Add uptime calculation and CPU/memory visualization components
- Improve process table with additional metrics and visual indicators
Replace the runtime iconify-icon custom element with a new GavelIcon component that uses pre-built SVG icons from clicky-ui. This eliminates the external CDN dependency and improves performance.

Add support for menubar and processes pages with dedicated views. Implement menubar external link handling via webkit bridge for macOS integration.

Refactor process metrics display to show workspace-level CPU and memory aggregates in headers. Add process favicon display and reorganize process table columns.

Update pnpm workspace configuration to use catalog mode and add react-grab for development debugging.

Refs: Removal of external iconify-icon script dependency, addition of offline icon rendering capability
…nd macOS menubar via Wails

Enhance AI fix output with token usage tracking and context window percentage display. Replace caseymrm/menuet with Wails v3 for native macOS menubar integration with better lifecycle management.

Key changes:
- NewStderrRenderer now accepts model and contextWindow parameters to display `[model X%]` prefix tracking token consumption
- Add isTokenLimitError detection to automatically chunk commits by directory when AI analysis exceeds context limits
- Migrate menubar from menuet to Wails v3 with proper window management, pointer events, and hide controller
- Add gavel test ansi command for capturing and analyzing PTY output with width-aware ANSI settling
- Extend ANSI settle logic to support terminal width wrapping and detect wrap-induced redraw bugs
- Update go-git and related dependencies

Refs: token limit handling, menubar UX improvements
Refactor process startup/restart/stop to track readiness outcomes and stream logs live.

Key changes:
- Extract procTracker state machine to classify process readiness (ready/warn/failed) across status samples, enabling callers to exit non-zero on startup failures
- Add Stream() to tail process logs with per-process prefixes until context cancellation, used by restart/stop operations
- Add streamUntilReady() and stopAndStream() to multiplex log streaming with readiness polling
- renderProcReadiness() now returns error on startup failures instead of silently succeeding
- Add -f/--follow flag to proc restart/stop to keep streaming after processes settle
- Add procMetricsLoop() to sample CPU/memory timeseries for process dashboard gauges
- Update ProcessTable.tsx to poll recorded metrics from backend instead of one-shot values
- Supervisor.Wait() now persists terminal state.json on self-exit (daemon crash) vs clearing on explicit stop
- Add comprehensive tests for procTracker, Stream, and metrics endpoint

Breaking change: renderProcReadiness signature changed to return error; callers must handle startup failures.
Introduce a Provider interface to abstract TODO storage, enabling support for multiple backends (file-based and Grite issue tracker). Implement FileProvider for local .todos directory and GriteProvider for Grite integration with full CRUD operations, state management, and event history tracking.

Key changes:
- Add Provider interface with List, Get, UpdateState, UpdateLatestFailure, SaveAttempt methods
- Implement FileProvider wrapping existing file-based TODO discovery and persistence
- Implement GriteProvider with Grite CLI integration for issue management
- Add --provider flag to select between 'grite' (default) and 'todos' backends
- Update TODOExecutor to accept and use Provider for state persistence
- Add ProviderEvent type to track issue history from external providers
- Extend TODO type with ID, ShortID, Provider, ProviderState, Labels, ProviderEvents fields
- Extract common TODO filtering logic into filterTODOsByArgs helper
- Update fixture parser to support parsing markdown content from non-file sources

BREAKING CHANGE: TODOExecutor constructor now accepts optional Provider parameter; executeGroups and executeSingleTODOs functions now require Provider argument
Implement a new todos tab in the dashboard with workspace-scoped todo listing, creation, and management. Add RESTful project CRUD endpoints (/api/projects/{name}) with proper HTTP semantics (201 for create, 409 for conflict, 204 for delete). Introduce todo backend resolution (auto-detect .todos files or Grite), git change counting for workspaces, and OpenAPI/Clicky integration for the projects entity. Refactor projects handler to separate concerns: entity logic in projects_entity.go, Clicky/OpenAPI support in projects_clicky.go, and shared CRUD functions in projects.go. Update frontend routing to support /todos and /activity as top-level SPA tabs with proper history management.
…ject management CLI

Implement a multi-faceted enhancement to the todos and projects subsystems:

**Grite Caching**: Add GriteCacheStore interface and CachedGriteProvider to persist grite issue projections in the gavel DB with TTL-guarded incremental syncs. Writes pass through to grite (source of truth) and force a sync so reads reflect changes immediately.

**Grouping by Repository**: Extend GroupTODOs to support GroupByRepo strategy that uses git root detection to group TODOs by their repository, with fallback to workDir.

**CMux Execution Mode**: Add --mode flag (inline|cmux) to todos run command. CMux mode generates dispatch plans for multi-agent execution with --effort directive (low|medium|high) to control reasoning depth. Dry-run displays cmux commands and prompts.

**Model Override**: Add --model flag to override LLM model for TODO execution, taking precedence over frontmatter config.

**Projects Management**: New projects CLI command with CRUD subcommands (list, get, add, update, delete) to manage workspace projects stored in ~/.config/gavel/projects.json.

**Provider Enhancements**: Add Create and Delete methods to Provider interface. Implement for both FileProvider and GriteProvider with proper state management.

Breaking change: Provider interface now requires Create and Delete method implementations.
Remove todo documentation files for PR #81 that tracked CI job failures:
- lint-go-mod-tidy-check.md: go mod tidy issues resolved
- lint-golangci-lint.md: errcheck linting issues resolved
- test-test-ubuntu-latest-go-1-25.md: test build failures resolved

These tracking files are no longer needed as the underlying issues have been fixed.
Add cmux-based TODO execution alongside Claude, enabling multi-agent dispatch through cmux workspaces. Implement client library for cmux CLI interaction with workspace management and session polling.

Add priority field support to todo updates across all providers (Grite, file-based). Extend PATCH API to accept optional priority changes independently of status.

Implement client-side filtering UI for todo statuses with persistent localStorage preferences. Hide completed todos by default while preserving full counts in headers.

Refactor executor selection into pluggable factory pattern supporting both Claude and cmux backends. Extract effort directives and agent resolution into shared cmux package utilities.

Breaks: cmux mode no longer returns "not implemented" error; it now executes via cmux workspaces when available.
…ecutor

Implement todo transfer capability allowing users to move todos between project workspaces via API and CLI. Refactor cmux executor to use workspace/surface-based interaction instead of session polling, enabling more reliable agent communication with retry logic and screen stabilization detection.

Key changes:
- Add Transfer() function to move todos between providers (file/Grite)
- Implement /api/todos/transfer endpoint with validation
- Add `gavel todos transfer` CLI command
- Refactor CmuxExecutor to use EnsureWorkspace, NewSurface, SendSurface, ReadScreen
- Add screen polling with backoff and stability detection
- Add send retry logic with configurable attempts
- Update dashboard TodoView to support deep-linking and todo selection in URL
- Remove deprecated SessionStore-based waiting mechanism
- Add AgentCommand and AgentWorkspaceName helpers
- Extend cmux Client with workspace/surface management methods

Breaking change: CmuxExecutor no longer uses SessionStore; callers must remove Store field from CmuxExecutorConfig.
… run support

Introduce two new TODO statuses (draft and verified) throughout the system:
- Draft status for TODOs being prepared but not ready to run
- Verified status for completed TODOs awaiting closure

Add comprehensive TODO creation support:
- New CLI command `todos create` with title, body, priority, and status flags
- New API endpoint `/api/todos/new` supporting JSON, form, and multipart payloads
- Automatic attachment handling and summary generation
- AutoSave mode that defaults to pending status instead of draft

Implement batch TODO execution:
- Support running multiple TODOs in a single agent session via `/api/todos/run`
- Multi-select UI in workspace groups with checkbox controls
- Advanced run options dialog for model, effort, timeout, and cost limits
- Dry-run validation before actual execution

Enhance TODO listing:
- Hide completed TODOs by default; add `--all` flag to show them
- Status filter overrides the default hide behavior
- Add `todo` alias for `todos` command

Improve Grite provider:
- Support short ID prefix resolution for todo references
- Detect ambiguous prefixes and report errors
- Capture label details in provider events
- Add draft and verified status label mappings

Refactor UI components:
- Extract event rendering into dedicated TodoTimeline component
- Add run controls to both detail pane and list view
- Update status and count displays for new statuses

Update documentation and validation to reflect all seven statuses.
…r proc status

Implement memory management improvements across the dashboard:

- Add menubar blank controller to navigate hidden webview to about:blank after 5min idle, reclaiming unbounded DOM/JS heap growth that caused 26GB bloat
- Replace proc status polling with SSE stream (handleProcStatusStream) that adapts cadence based on process transitions and omits resource churn (cpu/mem/tree) to enable efficient change detection
- Gate all background work (SSE streams, pollers, re-render ticks) on document visibility so hidden windows pause fetching and re-rendering
- Remove client-side peak tracking for CPU/memory gauges; let TimeseriesCoreBars self-size from live metric series instead
- Fetch process tree on-demand in expanded rows rather than streaming it, reducing SSE payload churn
- Add useDocumentVisible hook to pause activity feed and proc status streams when tab/window is hidden
- Fix react-grab dev overlay gate to use import.meta.env.DEV instead of !CI, preventing production bundle bloat
- Add session log tailing for Claude cmux executor to track progress via structured events instead of screen-idle detection

These changes eliminate the menubar's constant re-render loop and unbounded memory growth while improving responsiveness through adaptive streaming.
Implement comprehensive session management for TODO agent execution:

- Track Claude session IDs via session:<id> labels on issues, enabling runs to be resumed with prior conversation context
- Add Plan and Resume options to cmux executor for plan-only mode and session continuation
- Implement SessionStatsCache to track live in-progress sessions and compute token usage/cost from session logs
- Add session stream and stats endpoints for dashboard to follow agent activity live
- Refactor TodoView into composable AppShell-integrated components (TodoBodyHeader, TodoBodyActions, TodoFilterToolbar, TodoWorkspaceList, TodoDetailPane)
- Add TodoBucketGroup and grouping/density picker UI for organizing todos by severity/age
- Persist session IDs immediately before agent launch so interrupted runs remain resumable
- Collapse adjacent label changes in provider events for cleaner timeline display
- Omit transcripts from issue comments; instead reference session logs via recorded session IDs

The session id is resolved up-front and returned to clients so the dashboard can follow the log live. Resume runs reuse prior session context; fresh runs reference prior sessions in their prompt for history. Token usage and cost are computed from session logs and cached by mtime.
…todo session tracking

Replace app-level tick state with a shared useNow() hook that allows leaf components to subscribe to a global clock, reducing unnecessary parent re-renders. Timestamps now refresh themselves via RelativeTime component instead of polling the entire tree.

Add comprehensive todo session support: track agent runs with live session logs via SSE, display elapsed time and token usage, support resuming prior sessions, and add session-specific UI in the detail pane.

Introduce todo list view preferences (density: comfortable/compact, grouping: workspace/severity/age) persisted to localStorage. Add TodoNewPage for creating todos via deep links with pre-filled fields. Enhance TodoTimeline with sorting and improved event rendering.

Add new icon mappings (circle-outline, history, list-flat, rows) and refactor job duration rendering in WorkflowView to use the shared clock pattern.

Breaking change: timeAgo() and timeAgoShort() moved from utils to be used internally by RelativeTime component; callers should use <RelativeTime/> instead.
Implement hot-module-reload support for the PR UI via `--dev` flag that spawns and reverse-proxies to a Vite dev server. Add todo session tracking with resume capability, allowing agents to continue prior conversations. Introduce `gavel serve` command as a dedicated dashboard entry point. Add session stats and streaming endpoints for monitoring agent execution. Refactor relative timestamp rendering to use a shared clock subscription instead of full-app ticks, reducing main-thread cost in the menubar.

Key changes:
- New pr_dev.go: Vite dev server lifecycle management (spawn, health check, port detection)
- New devproxy.go: Reverse proxy handler for dev mode with export route bypass
- New todos_commit.go: Post-execution commit pipeline for agent changes
- New serve_dashboard.go: Dedicated `gavel serve` command
- Updated todos flags: --resume, --commit, --dev, --dev-dir
- Updated vite.config.ts: Dev server config (port 5273, HMR port 24778), conditional NODE_ENV
- Updated App.tsx: Refactored todo views, new TodoNewPage, useNow() clock subscription
- Updated types.ts: SessionStats, TodoSessionEvent, TodoDensity, TodoGroupBy
- New useNow.ts: Shared 1s clock for relative timestamps with visibility gating
…management

Implement responsive mobile detection using media queries to fall back to compact menubar layout on narrow screens (<768px). Extract copy feedback state machine into reusable useCopyFeedback hook to reduce duplication across components. Add useTimeoutFlash hook for transient state with automatic cleanup. Introduce mobile-aware route reconciliation logic that respects menubar layout for both native webview and mobile viewports.

New features:
- useIsMobile hook for viewport-width tracking
- useCopyFeedback hook consolidating copy state management
- useTimeoutFlash hook for auto-reverting transient values
- ReactGrabHelp component for React Grab integration
- TodoEditForm and TodoCommentBox components for todo editing
- Mobile layout fallback to menubar UI on narrow screens
- Session state badge showing agent progress (thinking/working/ask/completed)
- Auto-commit toggle in advanced todo run options

Refactoring:
- Extract copy feedback logic from App.tsx into dedicated hook
- Consolidate session timer display into InProgressBadge component
- Improve TodoSession styling with terminal-like appearance
- Format ProcessTable with consistent quote style

Fixes:
- Clear pending timers on component unmount to prevent memory leaks
- Proper scroll-following behavior in session transcript
- Session state persistence across todo switches
Extract the copy state management and timer logic from App and DetailPanel components into a reusable useCopyFeedback hook. This eliminates code duplication and centralizes the copy-button state machine logic (idle → copying → copied/error → idle) with automatic timer cleanup on unmount to prevent memory leaks.
…proved error handling

Enhance the agent execution pipeline with several improvements:

1. **Prompt Preview**: Add PreviewInstruction() to render the exact prompt dispatched to agents without launching, enabling dashboard preview before runs start. Inline small prompts (<10KB) and truncate large ones with file references.

2. **Multi-TODO Numbering**: Number TODO items in group prompts ("1. Fix auth", "2. Fix db") so agents address each in sequence. Single TODOs remain unnumbered.

3. **Session State Tracking**: Derive high-level agent states (thinking/working/ask/completed) from session log events and expose via SessionStats.State for dashboard display.

4. **Improved Error Handling**: Fail runs loudly when claude session logs never appear instead of silently falling back to screen-idle detection, which masks broken agent launches.

5. **Edit and Comment APIs**: Add Provider.Edit() and Provider.Comment() methods to update TODO titles/bodies and append comments, with file and grite implementations.

6. **Auto-Commit Helper**: Add ShouldCommitAfter() to determine when post-run commits should execute based on result success and executor type.

Refs: Improves agent observability and dashboard UX for multi-TODO runs.
Integrate React Grab bookmarklet for capturing UI elements into todos, add todo group-by menu to tab strip, move new-todo button to action header, enable inline todo editing (title/body/comments), add run prompt preview in advanced dialog, and support auto-commit toggle for runs.

Key changes:
- Embed React Grab plugin script and install page as assets
- Serve plugin with origin substitution for cross-origin injection
- Move TodoGroupByPicker from filter toolbar to dedicated menu in tab strip
- Extract TodoNewButton to action header, leaving only counts in body actions
- Support title/body/comment edits in PATCH /api/todos/item
- Add /api/todos/run/preview endpoint to preview prompts before execution
- Thread commit option through run payload (defaults to true)
- Auto-commit after runs via gavel commit pipeline
- Wire status badges in TodoCountsBar as filter pills
- Pass toggleStatus callback through workspace group for filter integration
- Constrain html/body/#root height to fix AppShell scrolling

Refs #123
….0.0.0

Change the default interface binding for UI servers (PR dashboard, bench UI, lint UI, test UI) from localhost to 0.0.0.0 to expose dashboards on the LAN by default. Users can now explicitly set localhost to restrict access to the local machine.

Updates:
- Default addr flag to 0.0.0.0 across bench, lint, pr list, and test commands
- Add --addr flag to pr list command to control UI server binding
- Update bindUIListener() to accept host parameter for flexible binding
- Add tests for bindUIListener() to verify wildcard and loopback binding
- Refactor serve_dashboard.go with applyServeDefaults() helper
- Add todos edit/comment/reopen commands with body file support
- Simplify todos_commit.go by delegating to commitpkg.RunAfterAgent()

BREAKING CHANGE: UI servers now bind to 0.0.0.0 by default instead of localhost, making them accessible on the LAN. Set --addr=localhost to restore previous behavior.
Add RunAfterAgent function to stage and commit changes after TODO runs, supporting both CLI and dashboard auto-commit workflows.

Refactor stageFiles to respect .gavel.yaml commit.gitignore rules when staging untracked files, fixing the bug where `gavel commit -A` would stage ignored files via `git add -A`. Split staging into separate git add -u (tracked changes) and custom untracked filtering (respecting both .gitignore and .gavel.yaml rules).

Add helper functions gitAddUpdate, untrackedFiles, and addUntracked to handle staging with proper ignore semantics. Embedded git repositories are now safely skipped without aborting the entire stage operation.

Also includes:
- ScanFreePort now accepts configurable host parameter
- useTimeoutFlash React hook for transient state management
- NumberTicker animation cleanup improvements
- Comprehensive test coverage for staging scenarios
Change the default value of the Addr field from 'localhost' to '0.0.0.0' to expose the UI HTTP server on all network interfaces by default. Update the documentation to clarify that 0.0.0.0 is the default and users can set localhost to restrict access to the local machine.

BREAKING CHANGE: The --ui HTTP server now binds to all interfaces (0.0.0.0) by default instead of localhost only.
Add SVG app icon, PNG icon variants (192x512), Apple touch icon, and web manifest configuration for the gavel PR dashboard. Enables PWA installation support across iOS and Android platforms with proper icon scaling and theming.
Enhance the todos interface with several improvements:

- Add TodoGroupByMenu and TodoFilterMenu components to support grouping by severity/age and filtering by status in the menubar todos tab
- Refactor TodoCompose into separate TodoTitleEditor and TodoBodyEditor components with independent edit states
- Add inline edit pencils to TodoDetail for title and body, allowing users to edit without a full form modal
- Support defaultDir prop in CreateTodoDialog to preselect the current workspace when creating a new todo
- Add attachment support to TodoNewPage with screenshot preview display and multipart form submission
- Enhance TodoSession and TodoSessionTimer to display error events with HTTP status codes and context compaction metrics
- Update MenubarTodos to include grouping/filtering controls and a New button in a compact tab strip
- Improve TodoSection header layout to support action controls (edit pencils) outside the toggle button

These changes improve the UX by allowing todos to be created, grouped, filtered, and edited without leaving the current view.
Implement Progressive Web App capabilities with home-screen installation support, including manifest and icons. Add screenshot capture to React Grab plugin using getDisplayMedia and Region Capture APIs. Implement attachment persistence and serving with security validation. Fix menu-bar URL resolution to use loopback for WKWebView App Transport Security compliance. Add session error event streaming and improve todo attachment embedding with inline image rendering.

BREAKING CHANGE: Attachment summaries now include served URLs and image flags instead of just metadata; attachment bodies embed images inline as markdown rather than plain links.
Download and merge gavel artifacts from pull requests into reusable snapshots. Expose reproduce-locally commands in CLI, terminal, and PR web results so developers can rerun only the failed tests or linters.

Claude-Session-Id: cfccd41f-6c5f-437e-a3e8-14382bd4d683
Use all rendered failure signals for PR status exit codes, preventing false-green results when rollups omit artifact or job failures.
Drain shutdown hooks before exiting and return success after a completed --ai-fix workflow.

Claude-Session-Id: d02a751b-65e2-4b80-b55c-b4d1ec80a1f2
Prefer open PRs when resolving the current branch so checks do not attach to stale merged work. Track physical terminal rows and clear live frames before final output to prevent duplicated or smeared reports. Improve status rendering so repeated workflows, skipped jobs, and closed-PR notices remain readable and actionable.

Claude-Session-Id: a6483152-0156-4e23-9216-0d1e51a65ac7
…tion

Normalize artifact test paths across shard work directories so merged PR snapshots retain valid repository-relative locations. Fail non-dry runs that execute no tests and report when --failed packages do not match discovery, preventing silent successful no-ops.

BREAKING CHANGE: non-dry runs with no executed tests now return ErrNoTestsExecuted

Claude-Session-Id: 019feee2-d80b-7870-be04-0dadab43a54b
Add durable GitHub issue links so TODOs can be published, updated safely, and opened from the dashboard while preventing accidental duplicates. Expose linked issue metadata in list and detail responses, and provide status, priority, activity, and link-state filtering with persisted facet selections.

Claude-Session-Id: adc45b9a-111a-49ce-a3c7-669f30ea267c
Reuse the dashboard toolbar so menubar todos support the same grouping, sorting, status, priority, issue, and time filters. Replace the narrower menubar-only controls with one responsive toolbar while preserving todo creation and filtering behavior.

Claude-Session-Id: adc45b9a-111a-49ce-a3c7-669f30ea267c
Add CLI and dashboard workflows for publishing TODOs as GitHub issues, updating existing links, and recording external aliases. Reuse portable Markdown and rewrite attachment links against a configured absolute origin for external rendering.
Enable TODOs without a selected plan to receive durable markdown and return to review while preserving immutable revision history. Reuse deterministic sessions and keep rejected plans from being executed accidentally.

BREAKING CHANGE: rejected plans remain selected with a rejected approval state and require revision or approval before execution
Persist lifecycle notices so TODO transcripts and notifications explain changes made between execution turns, including runs that end with errors
Claude-Session-Id: e5ae4b2b-811e-4d6b-8204-63a7bc4cd633
…ess startup. Introduce distinct timeout budgets for compilation vs other startup stages. Compilation (go build, bundler passes) legitimately requires minutes; other stages now budget 180s. The process tracker now maintains a per-stage clock that resets when transitioning stages, ensuring time spent compiling does not consume budget for subsequent startup phases. Updates timing logic and adds comprehensive test coverage for multi-stage timeouts and stage transitions.: Support per-stage timeouts for process startup

Claude-Session-Id: 63589e85-ee7d-4f76-905f-ed59ce16a50e
Claude-Session-Id: 63589e85-ee7d-4f76-905f-ed59ce16a50e
The "backend" naming was imprecise about what it represented: the execution mechanism (api, agent, cli, cmux). Rename to "mode" and update GetBackend() → GetRuntime() throughout to clarify this concept. This improves code readability and aligns terminology with documentation and domain concepts across ai, pr/ui, todos, and commit packages.
…mode from backend

Executor now receives models fully resolved with capabilities and mode, not just
names. Execution mode is specified explicitly rather than inferred from backend,
enabling cleaner configuration layering and better provenance tracking.
@coderabbitai

coderabbitai Bot commented Sep 1, 2026

Copy link
Copy Markdown

Important

Review skipped

Too many files!

This PR contains 1260 files, which is 1160 over the limit of 100.

To get a review, reduce the PR to 100 files or fewer by splitting it into smaller PRs or changing its base branch.

Upgrade to a paid plan to raise the limit.

Usage-priced reviews support at most 300 files.

⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Team

Run ID: bc22cfd6-b2f1-4fc7-8f6b-342363590323

📥 Commits

Reviewing files that changed from the base of the PR and between 43a9189 and 169cb47.

⛔ Files ignored due to path filters (12)
  • go.sum is excluded by !**/*.sum
  • pr/ui/brand/menubar.png is excluded by !**/*.png
  • pr/ui/package-lock.json is excluded by !**/package-lock.json
  • testrunner/ui/package-lock.json is excluded by !**/package-lock.json
  • testrunner/ui/pnpm-lock.yaml is excluded by !**/pnpm-lock.yaml
  • go.work.sum is excluded by !**/*.sum
  • pr/ui/brand/app-icon.svg is excluded by !**/*.svg
  • pr/ui/brand/apple-touch-icon.png is excluded by !**/*.png
  • pr/ui/brand/icon-192.png is excluded by !**/*.png
  • pr/ui/brand/icon-512.png is excluded by !**/*.png
  • pr/ui/pnpm-lock.yaml is excluded by !**/pnpm-lock.yaml
  • site/pnpm-lock.yaml is excluded by !**/pnpm-lock.yaml
📒 Files selected for processing (1260)
  • .agents/skills/gavel-fixture-tester/SKILL.md
  • .claude-plugin/marketplace.json
  • .gavel.yaml
  • .github/workflows/gavel-action.yml
  • .github/workflows/lint.yml
  • .github/workflows/npm-publish.yml
  • .github/workflows/release.yml
  • .github/workflows/test.yml
  • .gitignore
  • .todos/81/lint-go-mod-tidy-check.md
  • .todos/81/lint-golangci-lint.md
  • .todos/81/test-test-ubuntu-latest-go-1-25.md
  • MANUAL.md
  • Makefile
  • README.md
  • Taskfile.yaml
  • action.yml
  • ai/agent.go
  • ai/agent_test.go
  • ai/aifix/aifix.go
  • ai/aifix/aifix_test.go
  • ai/aifix/render.go
  • ai/aifix/render_test.go
  • cmd/gavel/ai_runtime.go
  • cmd/gavel/bench.go
  • cmd/gavel/commit.go
  • cmd/gavel/commit_aifix.go
  • cmd/gavel/commit_lint.go
  • cmd/gavel/commit_options_test.go
  • cmd/gavel/config.go
  • cmd/gavel/config_render.go
  • cmd/gavel/config_render_test.go
  • cmd/gavel/config_test.go
  • cmd/gavel/ctx.go
  • cmd/gavel/fixtures.go
  • cmd/gavel/fixtures_test.go
  • cmd/gavel/git.go
  • cmd/gavel/lint.go
  • cmd/gavel/lint_aifix.go
  • cmd/gavel/lint_discovery.go
  • cmd/gavel/lint_filter_test.go
  • cmd/gavel/lint_linter_subcmds.go
  • cmd/gavel/lint_resolution.go
  • cmd/gavel/lint_resolution_test.go
  • cmd/gavel/lint_summary.go
  • cmd/gavel/lint_summary_test.go
  • cmd/gavel/lint_test.go
  • cmd/gavel/main.go
  • cmd/gavel/main_mcp_test.go
  • cmd/gavel/pr.go
  • cmd/gavel/pr_create.go
  • cmd/gavel/pr_fix.go
  • cmd/gavel/pr_list.go
  • cmd/gavel/pr_status_aifix.go
  • cmd/gavel/pr_status_aifix_test.go
  • cmd/gavel/repomap_get.go
  • cmd/gavel/repomap_view.go
  • cmd/gavel/serve.go
  • cmd/gavel/ssh_install.go
  • cmd/gavel/status.go
  • cmd/gavel/status_test.go
  • cmd/gavel/summary.go
  • cmd/gavel/summary_test.go
  • cmd/gavel/system_install.go
  • cmd/gavel/system_start.go
  • cmd/gavel/system_status.go
  • cmd/gavel/system_stop.go
  • cmd/gavel/system_uninstall.go
  • cmd/gavel/test.go
  • cmd/gavel/test_framework_subcmds.go
  • cmd/gavel/test_history.go
  • cmd/gavel/test_history_test.go
  • cmd/gavel/test_rerun_options_test.go
  • cmd/gavel/test_snapshot.go
  • cmd/gavel/todo_select.go
  • cmd/gavel/todos.go
  • cmd/gavel/todos_check.go
  • cmd/gavel/ui_serve.go
  • cmd/gavel/ui_serve_test.go
  • cmd/gavel/verify.go
  • cmd/gavel/verify_sync.go
  • cmd/gavel/verify_sync_test.go
  • commit/check_modes.go
  • commit/commit.go
  • commit/commit_all_test.go
  • commit/commit_test.go
  • commit/compatibility_check.go
  • commit/compatibility_check_test.go
  • commit/file_size_check.go
  • commit/fixup.go
  • commit/git.go
  • commit/gitignore_check.go
  • commit/gitignore_check_test.go
  • commit/interactive.go
  • commit/interactive_test.go
  • commit/interactive_tree.go
  • commit/linked_deps_check.go
  • commit/linked_deps_check_test.go
  • commit/lint_test.go
  • commit/planner.go
  • commit/precommit_mode_test.go
  • commit/prompt_select.go
  • commit/prompt_select_test.go
  • commit/push.go
  • commit/push_no_commit_test.go
  • commit/push_prompt.go
  • commit/push_protected_branch_test.go
  • commit/push_test.go
  • commit/rebase.go
  • example_config.go
  • fixtures/ansi.go
  • fixtures/ansi_settle.go
  • fixtures/ansi_settle_test.go
  • fixtures/ansi_test.go
  • fixtures/cel_evaluator.go
  • fixtures/expectations.go
  • fixtures/expectations_test.go
  • fixtures/parser.go
  • fixtures/parser_ast.go
  • fixtures/parser_ast_test.go
  • fixtures/parser_codeblock.go
  • fixtures/parser_codeblock_test.go
  • fixtures/registry.go
  • fixtures/runner.go
  • fixtures/runner_testing.go
  • fixtures/types.go
  • fixtures/types/exec.go
  • fixtures/types/exec_test.go
  • gavel.yaml.example
  • git/ai-commit-compatibility-issues.md
  • git/ai-commit-functionality-removed.md
  • git/ai-commit-message.md
  • git/ai-summary-group.md
  • git/ai.go
  • git/ai_test.go
  • git/filter_types.go
  • git/git_analyzer.go
  • git/git_log.go
  • git/kubernetes/change_analyzer.go
  • git/parser.go
  • git/summary.go
  • git/summary_ai.go
  • git/summary_example.go
  • github/artifacts.go
  • github/artifacts_test.go
  • github/cache/db.go
  • github/cache/db_test.go
  • github/cache/http_test.go
  • github/cache/models.go
  • github/client.go
  • github/client_test.go
  • github/graphql.go
  • github/http_cache.go
  • github/orgs.go
  • github/pr_create.go
  • github/probe.go
  • github/search.go
  • github/search_test.go
  • github/types.go
  • go.mod
  • internal/cache/db.go
  • internal/cache/doc.go
  • internal/cache/linter_stats.go
  • internal/cache/migration_manager.go
  • internal/cache/violation_cache.go
  • internal/changegraph/golist.go
  • internal/changegraph/golist_test.go
  • internal/runcache/hash.go
  • internal/runcache/hash_test.go
  • internal/ttyrender/ttyrender.go
  • internal/ttyrender/ttyrender_test.go
  • linters/betterleaks/betterleaks.go
  • linters/betterleaks/betterleaks_test.go
  • linters/betterleaks/config.go
  • linters/doc.go
  • linters/gitignore_filter.go
  • linters/gitignore_filter_test.go
  • linters/interface.go
  • linters/jscpd/jscpd.go
  • linters/lint_sync.go
  • linters/lint_sync_test.go
  • linters/ruff/ruff.go
  • linters/runner.go
  • linters/runner_v2.go
  • linters/tsc/tsc-json.cjs
  • linters/tsc/tsc_test.go
  • models/git_scope.go
  • pr/menubar/menubar_darwin.go
  • pr/menubar/menubar_stub.go
  • pr/ui/assets.go
  • pr/ui/detail_cache.go
  • pr/ui/gavel_results.go
  • pr/ui/gavel_results_test.go
  • pr/ui/handler.go
  • pr/ui/package.json
  • pr/ui/routes.go
  • pr/ui/routes_test.go
  • pr/ui/settings.go
  • pr/ui/src/App.tsx
  • pr/ui/src/ansi.ts
  • pr/ui/src/components/ActivityView.tsx
  • pr/ui/src/components/Avatar.tsx
  • pr/ui/src/components/BotComment.tsx
  • pr/ui/src/components/FilterBar.tsx
  • pr/ui/src/components/LogViewer.tsx
  • pr/ui/src/components/Markdown.tsx
  • pr/ui/src/components/OrgChooser.tsx
  • pr/ui/src/components/PRDetail.tsx
  • pr/ui/src/components/PRList.tsx
  • pr/ui/src/components/PRRow.tsx
  • pr/ui/src/components/ProgressBar.tsx
  • pr/ui/src/components/RepoSelector.tsx
  • pr/ui/src/components/SearchControls.tsx
  • pr/ui/src/components/SplitPane.tsx
  • pr/ui/src/components/StatusIndicator.tsx
  • pr/ui/src/components/Summary.tsx
  • pr/ui/src/components/SyncIndicator.tsx
  • pr/ui/src/components/WorkflowView.tsx
  • pr/ui/src/index.tsx
  • pr/ui/src/jsx-custom-elements.d.ts
  • pr/ui/src/routes.ts
  • pr/ui/src/types.ts
  • pr/ui/src/utils.ts
  • pr/ui/tsconfig.json
  • pr/ui/vite.config.ts
  • prwatch/coderabbit.go
  • prwatch/model_test.go
  • prwatch/result.go
  • prwatch/todo_sync.go
  • prwatch/todo_sync_test.go
  • prwatch/watch.go
  • service/dbconfig.go
  • service/dbconfig_test.go
  • service/install.go
  • service/service.go
  • service/service_darwin.go
  • service/service_darwin_test.go
  • service/service_linux.go
  • service/service_linux_test.go
  • service/service_test.go
  • site/content/blog/why-we-built-gavel.mdx
  • site/content/docs/getting-started.mdx
  • site/package.json
  • site/src/components/site/BentoGrid.tsx
  • site/src/components/site/CopyInstall.tsx
  • site/src/components/site/FAQ.tsx
  • site/src/components/site/FeatureList.tsx
  • site/src/components/site/MdxLayout.tsx
  • site/src/magic/NumberTicker.tsx
  • site/src/routes/DocsPage.tsx
  • site/src/styles/globals.css
  • site/vite.config.ts
  • snapshots/running.go
  • snapshots/running_test.go
  • snapshots/snapshots.go
  • snapshots/snapshots_test.go
  • status/ai_stream.go
  • status/ai_summary.go
  • status/pretty.go
  • status/snapshot_enrich.go
  • status/status.go
  • status/status_test.go
  • testrunner/history/history_test.go
  • testrunner/parsers/detail_test.go
  • testrunner/parsers/failure_format_test.go
  • testrunner/parsers/ginkgo_json.go
  • testrunner/parsers/gotest_locations.go
  • testrunner/parsers/gotest_locations_test.go
  • testrunner/parsers/types.go
  • testrunner/prebuild.go
  • testrunner/prebuild_test.go
  • testrunner/runner.go
  • testrunner/runner_test.go
  • testrunner/runners/ginkgo.go
  • testrunner/runners/ginkgo_test.go
  • testrunner/runners/go_common.go
  • testrunner/runners/gotest.go
  • testrunner/runners/gotest_test.go
  • testrunner/runners/jest.go
  • testrunner/runners/jest_test.go
  • testrunner/runners/node_common.go
  • testrunner/runners/playwright.go
  • testrunner/runners/types.go
  • testrunner/runners/vitest.go
  • testrunner/selector.go
  • testrunner/todo_sync.go
  • testrunner/todo_sync_test.go
  • testrunner/ui/handler.go
  • testrunner/ui/package.json
  • testrunner/ui/snapshot.go
  • testrunner/ui/src/App.tsx
  • testrunner/ui/src/components/DetailPanel.test.tsx
  • testrunner/ui/src/components/DetailPanel.tsx
  • testrunner/ui/src/testrunner.ts
  • testrunner/ui/src/types.ts
  • testrunner/ui/src/utils.ts
  • testrunner/ui/vite.config.ts
  • todos/attempts.go
  • todos/attempts_test.go
  • todos/checker.go
  • todos/claude/agent.ts
  • todos/claude/git.go
  • todos/claude/git_test.go
  • todos/claude/messages.go
  • todos/claude/messages_test.go
  • todos/claude/package.json
  • todos/claude/prompt.go
  • todos/claude/prompt_test.go
  • todos/claude/prompts.go
  • todos/claude/runner.go
  • todos/claude/runner_test.go
  • todos/claude/source.go
  • todos/claude/source_test.go
  • todos/context.go
  • todos/discovery.go
  • todos/discovery_test.go
  • todos/executor.go
  • todos/executor_test.go
  • todos/grouping.go
  • todos/grouping_test.go
  • todos/parser.go
  • todos/state.go
  • todos/state_test.go
  • todos/types/types.go
  • todos/types/types_test.go
  • utils/walk.go
  • utils/walk_test.go
  • verify/adapter.go
  • verify/adapter_claude.go
  • verify/adapter_claude_test.go
  • verify/adapter_codex.go
  • verify/adapter_codex_test.go
  • verify/adapter_gemini.go
  • verify/adapter_gemini_test.go
  • verify/autofix.go
  • verify/autofix_test.go
  • verify/checks.go
  • verify/cli.go
  • verify/config.go
  • verify/config_test.go
  • verify/input.go
  • verify/input_test.go
  • verify/models.go
  • verify/models_test.go
  • verify/parse_helpers.go
  • verify/parse_helpers_test.go
  • verify/prompt.go
  • verify/schema.go
  • verify/testdata/verify.md
  • verify/types.go
  • verify/verify-prompt.md
  • verify/verify.go
  • verify/verify_test.go
  • .worktreeinclude
  • AGENTS.md
  • CLAUDE.md
  • SCHEMA.md
  • ai/aifix/lint-ai-fix.prompt
  • ai/close_test.go
  • ai/config.go
  • ai/prfix/pr-status-fix.prompt
  • ai/prfix/prfix.go
  • ai/prfix/prfix_test.go
  • cmd/gavel/ai_runtime_test.go
  • cmd/gavel/commit_batch_options_ginkgo_test.go
  • cmd/gavel/fixtures_outline.go
  • cmd/gavel/fixtures_render.go
  • cmd/gavel/fixtures_render_test.go
  • cmd/gavel/fixtures_schema.go
  • cmd/gavel/fixtures_ui.go
  • cmd/gavel/fixtures_ui_ginkgo_test.go
  • cmd/gavel/help_test.go
  • cmd/gavel/menubar_darwin.go
  • cmd/gavel/menubar_darwin_test.go
  • cmd/gavel/menubar_stub.go
  • cmd/gavel/pr_dev.go
  • cmd/gavel/pr_dev_test.go
  • cmd/gavel/pr_list_test.go
  • cmd/gavel/pr_snapshot.go
  • cmd/gavel/pr_snapshot_ginkgo_test.go
  • cmd/gavel/proc.go
  • cmd/gavel/proc_list.go
  • cmd/gavel/proc_logs.go
  • cmd/gavel/proc_progress.go
  • cmd/gavel/proc_progress_test.go
  • cmd/gavel/proc_restart.go
  • cmd/gavel/proc_run.go
  • cmd/gavel/proc_start.go
  • cmd/gavel/proc_status.go
  • cmd/gavel/proc_stop.go
  • cmd/gavel/proc_stream.go
  • cmd/gavel/project_action_options.go
  • cmd/gavel/project_action_options_ginkgo_test.go
  • cmd/gavel/projects.go
  • cmd/gavel/serve_dashboard.go
  • cmd/gavel/serve_dashboard_test.go
  • cmd/gavel/serve_runtime.go
  • cmd/gavel/serve_runtime_test.go
  • cmd/gavel/test_ansi.go
  • cmd/gavel/test_ansi_ginkgo_test.go
  • cmd/gavel/test_ansi_test.go
  • cmd/gavel/test_args_test.go
  • cmd/gavel/test_failure.go
  • cmd/gavel/test_failure_test.go
  • cmd/gavel/test_framework_flags_ginkgo_test.go
  • cmd/gavel/test_outline.go
  • cmd/gavel/test_outline_ginkgo_test.go
  • cmd/gavel/test_snapshot_test.go
  • cmd/gavel/todos_checks.go
  • cmd/gavel/todos_commit_test.go
  • cmd/gavel/todos_create.go
  • cmd/gavel/todos_create_ginkgo_test.go
  • cmd/gavel/todos_create_help.go
  • cmd/gavel/todos_edit.go
  • cmd/gavel/todos_edit_labels_test.go
  • cmd/gavel/todos_edit_test.go
  • cmd/gavel/todos_labels.go
  • cmd/gavel/todos_link.go
  • cmd/gavel/todos_list_provider_test.go
  • cmd/gavel/todos_model_fallback_test.go
  • cmd/gavel/todos_plan.go
  • cmd/gavel/todos_plan_test.go
  • cmd/gavel/todos_portable.go
  • cmd/gavel/todos_portable_test.go
  • cmd/gavel/todos_prompts.go
  • cmd/gavel/todos_provider_test.go
  • cmd/gavel/todos_push.go
  • cmd/gavel/todos_runtime_guard_test.go
  • cmd/gavel/todos_sync.go
  • cmd/gavel/todos_test_provider_test.go
  • cmd/gavel/todos_text.go
  • cmd/gavel/todos_transfer.go
  • commit/after_agent.go
  • commit/after_agent_test.go
  • commit/agent_hooks.go
  • commit/agent_hooks_test.go
  • commit/agent_lifecycle.go
  • commit/agent_lifecycle_ginkgo_test.go
  • commit/ai_group.go
  • commit/ai_group_test.go
  • commit/analysis.go
  • commit/body_lines_test.go
  • commit/commit-grouping.prompt
  • commit/files.go
  • commit/files_test.go
  • commit/fixup_since.go
  • commit/fixup_since_test.go
  • commit/gitignore.go
  • commit/gitignore_test.go
  • commit/group.go
  • commit/grouping_prompt_test.go
  • commit/interactive_batch.go
  • commit/interactive_batch_test.go
  • commit/metadata.go
  • commit/metadata_test.go
  • commit/multi_commit.go
  • commit/pr-content.prompt
  • commit/prompts.go
  • commit/push_automerge_test.go
  • commit/push_prompt_test.go
  • commit/rebase_test.go
  • commit/result.go
  • commit/stage_session.go
  • commit/stage_session_captain_test.go
  • commit/stage_session_test.go
  • commit/stage_test.go
  • commit/staging.go
  • commit/testdata/grouping-base.golden
  • commit/tokenlimit.go
  • commit/tokenlimit_test.go
  • docs/SessionDataModel.html
  • docs/SessionDataModel.tsx
  • docs/postgres-performance.md
  • docs/session-data-model.md
  • examples/help.fixture.md
  • examples/pre-release.fixture.md
  • examples/precommit.fixture.md
  • examples/sample-app/main.go
  • examples/sample-app/sample_test.go
  • examples/smoke-test.fixture.md
  • fixtures/aistep_parse.go
  • fixtures/aistep_parse_test.go
  • fixtures/ansi_capture.go
  • fixtures/ansi_capture_ginkgo_test.go
  • fixtures/ansi_capture_test.go
  • fixtures/ansi_screen.go
  • fixtures/cel_trace.go
  • fixtures/cel_trace_ginkgo_test.go
  • fixtures/examples_test.go
  • fixtures/expand_files.go
  • fixtures/expand_files_ginkgo_test.go
  • fixtures/fixture_result_pretty.go
  • fixtures/outline.go
  • fixtures/outline_test.go
  • fixtures/pretty_result_ginkgo_test.go
  • fixtures/pretty_stdout.go
  • fixtures/pretty_stdout_ginkgo_test.go
  • fixtures/progress.go
  • fixtures/progress_ginkgo_test.go
  • fixtures/progress_reporter.go
  • fixtures/progress_types.go
  • fixtures/record/ca.go
  • fixtures/record/cast.go
  • fixtures/record/cast_test.go
  • fixtures/record/cel.go
  • fixtures/record/cel_test.go
  • fixtures/record/gormlogger.go
  • fixtures/record/gormlogger_test.go
  • fixtures/record/har.go
  • fixtures/record/har_test.go
  • fixtures/record/pgproxy.go
  • fixtures/record/pgproxy_test.go
  • fixtures/record/pgwire.go
  • fixtures/record/pgwire_test.go
  • fixtures/record/proxy.go
  • fixtures/record/proxy_conn.go
  • fixtures/record/proxy_entry.go
  • fixtures/record/proxy_test.go
  • fixtures/record/result.go
  • fixtures/record/roundtripper.go
  • fixtures/record/roundtripper_test.go
  • fixtures/record/spec.go
  • fixtures/record/spec_test.go
  • fixtures/record/sql.go
  • fixtures/record/sql_test.go
  • fixtures/record/store.go
  • fixtures/record/store_test.go
  • fixtures/record_test.go
  • fixtures/recorders.go
  • fixtures/recorders_e2e_test.go
  • fixtures/runner_spec_ginkgo_test.go
  • fixtures/runstep_parse_test.go
  • fixtures/runstep_runner_test.go
  • fixtures/setup.go
  • fixtures/setup_lifecycle_test.go
  • fixtures/setup_test.go
  • fixtures/testdata/pr-status-ansi-short-screen.md
  • fixtures/testdata/pr-status-ansi.md
  • fixtures/testdata/runner-steps.md
  • fixtures/testdata/runstep_sample/sample_test.go
  • fixtures/testdata/setup_dotenv.env
  • fixtures/testdata/setup_dotenv.md
  • fixtures/testdata/setup_worktree.md
  • fixtures/types/aistep.go
  • fixtures/types/aistep_spec_ginkgo_test.go
  • fixtures/types/aistep_test.go
  • fixtures/types/runartifact.go
  • fixtures/types/runartifact_test.go
  • fixtures/types/runstep.go
  • fixtures/types/runstep_test.go
  • fixtures/types/types_suite_test.go
  • gavel.schema.json
  • gen_schema.go
  • git/ai-commit-message.prompt
  • git/ai-summary-group.prompt
  • git/ai_commit_types_test.go
  • git/commit_files.go
  • git/commit_files_test.go
  • git/dedupe_prefix_test.go
  • git/diff.go
  • git/prompt_golden_test.go
  • git/prompts.go
  • git/testdata/commit-message-with-maxbody.golden
  • git/testdata/commit-message-without-maxbody.golden
  • git/testdata/summary-group.golden
  • git/trailer_commits.go
  • git/trailer_commits_test.go
  • git/trailer_diff.go
  • git/trailer_diff_test.go
  • github/automerge.go
  • github/automerge_test.go
  • github/branch_status.go
  • github/branch_status_test.go
  • github/cache/commit_stats.go
  • github/cache/test_runs.go
  • github/cache/test_runs_test.go
  • github/graphql_exec.go
  • github/graphql_exec_test.go
  • github/issue_write.go
  • github/issue_write_test.go
  • github/pr_actions.go
  • github/pr_actions_test.go
  • github/pr_diffs.go
  • github/pr_diffs_test.go
  • github/pretty_format_test.go
  • github/pretty_meta_test.go
  • handoff.yaml
  • internal/changegraph/build_tags_ginkgo_test.go
  • internal/database/database.go
  • internal/database/database_test.go
  • internal/database/label_backfill_integration_test.go
  • internal/database/migration_integration_test.go
  • internal/database/migration_lock_integration_test.go
  • internal/database/options_ginkgo_test.go
  • internal/database/options_suite_test.go
  • internal/database/projection_integration_test.go
  • internal/database/require.go
  • internal/database/schema/090_prepare_runtime_state.sql
  • internal/database/schema/100_todo_captain_constraints.sql
  • internal/database/schema/102_todo_prompt_run_step_kind.sql
  • internal/database/schema/105_view_todo_plan_revisions.sql
  • internal/database/schema/110_todo_projection_functions.sql
  • internal/database/schema/111_todo_projection_triggers.sql
  • internal/database/schema/112_view_todo_issue_runtime.sql
  • internal/database/schema/115_backfill_todo_activity.sql
  • internal/database/schema/116_backfill_triage_step_kind.sql
  • internal/database/schema/120_backfill_todo_labels.sql
  • internal/database/schema/130_task_history_storage_params.sql
  • internal/database/schema/base.hcl
  • internal/database/schema/github_cache.hcl
  • internal/database/schema/linter_cache.hcl
  • internal/database/schema/task_history.hcl
  • internal/database/schema/todos.hcl
  • internal/database/schema_bundle_test.go
  • internal/database/shared.go
  • internal/database/shared_test.go
  • internal/database/todos_migration_integration_test.go
  • internal/httpx/httpx.go
  • internal/taskhistory/history.go
  • internal/taskhistory/history_ginkgo_test.go
  • internal/taskhistory/history_suite_test.go
  • internal/taskhistory/store.go
  • internal/taskhistory/store_integration_test.go
  • lint/discovery.go
  • lint/filter_test.go
  • lint/lint.go
  • lint/lint_test.go
  • lint/options.go
  • lint/registry.go
  • lint/resolution.go
  • lint/resolution_test.go
  • linters/betterleaks/gitignore.go
  • linters/betterleaks/gitignore_ginkgo_test.go
  • linters/oxlint/oxlint.go
  • linters/oxlint/oxlint_test.go
  • linters/reactdoctor/reactdoctor.go
  • linters/reactdoctor/reactdoctor_test.go
  • linters/runner_database_test.go
  • linters/summary_view.go
  • linters/summary_view_test.go
  • linters/tsc/testdata/typescript/index.js
  • pr/ui/.oxlintrc.json
  • pr/ui/assets/react-grab-install.html
  • pr/ui/assets/react-grab-plugin.js
  • pr/ui/assets_test.go
  • pr/ui/brand/manifest.webmanifest
  • pr/ui/buildinfo.go
  • pr/ui/buildinfo_test.go
  • pr/ui/closed_test.go
  • pr/ui/devproxy.go
  • pr/ui/devproxy_test.go
  • pr/ui/index.html
  • pr/ui/main_test.go
  • pr/ui/pnpm-workspace.yaml
  • pr/ui/pprof.go
  • pr/ui/pprof_ginkgo_test.go
  • pr/ui/pr_actions.go
  • pr/ui/pr_actions_test.go
  • pr/ui/pr_detail_stream_ginkgo_test.go
  • pr/ui/pr_diffs.go
  • pr/ui/pr_diffs_test.go
  • pr/ui/proc.go
  • pr/ui/proc_metrics.go
  • pr/ui/proc_metrics_test.go
  • pr/ui/proc_stream_test.go
  • pr/ui/proc_test.go
  • pr/ui/project_action_runs.go
  • pr/ui/project_commit_queue.go
  • pr/ui/project_commit_queue_ginkgo_test.go
  • pr/ui/project_diff.go
  • pr/ui/project_diff_ginkgo_test.go
  • pr/ui/project_ignore.go
  • pr/ui/project_ignore_ginkgo_test.go
  • pr/ui/project_lifecycle.go
  • pr/ui/project_lifecycle_ginkgo_test.go
  • pr/ui/project_open_pr_ginkgo_test.go
  • pr/ui/projects.go
  • pr/ui/projects_clicky.go
  • pr/ui/projects_entity.go
  • pr/ui/projects_entity_test.go
  • pr/ui/projects_ginkgo_test.go
  • pr/ui/projects_list_test.go
  • pr/ui/projects_test.go
  • pr/ui/prompt_catalog.go
  • pr/ui/prompt_catalog_ginkgo_test.go
  • pr/ui/prompt_catalog_http.go
  • pr/ui/prompts.go
  • pr/ui/react_grab_plugin_ginkgo_test.go
  • pr/ui/react_grab_plugin_test.go
  • pr/ui/server_timing_ginkgo_test.go
  • pr/ui/settings_gavel.go
  • pr/ui/settings_gavel_test.go
  • pr/ui/settings_prompts.go
  • pr/ui/settings_prompts_effective.go
  • pr/ui/settings_prompts_ginkgo_test.go
  • pr/ui/settings_prompts_store.go
  • pr/ui/settings_prompts_test.go
  • pr/ui/src/build-info.d.ts
  • pr/ui/src/clipboard.test.ts
  • pr/ui/src/clipboard.ts
  • pr/ui/src/components/ActivityView.test.tsx
  • pr/ui/src/components/AddProjectDialog.tsx
  • pr/ui/src/components/CommandPalette.test.tsx
  • pr/ui/src/components/CommandPalette.tsx
  • pr/ui/src/components/Elapsed.tsx
  • pr/ui/src/components/ErrorBoundary.tsx
  • pr/ui/src/components/GitChangesBadge.tsx
  • pr/ui/src/components/LogViewer.test.tsx
  • pr/ui/src/components/MenubarTodos.tsx
  • pr/ui/src/components/OrgChooser.test.tsx
  • pr/ui/src/components/PRActions.test.tsx
  • pr/ui/src/components/PRActions.tsx
  • pr/ui/src/components/PRDetail.test.tsx
  • pr/ui/src/components/PollStatus.tsx
  • pr/ui/src/components/ProcControl.tsx
  • pr/ui/src/components/ProcessDetails.test.tsx
  • pr/ui/src/components/ProcessDetails.tsx
  • pr/ui/src/components/ProcessManager.tsx
  • pr/ui/src/components/ProcessTable.test.tsx
  • pr/ui/src/components/ProcessTable.tsx
  • pr/ui/src/components/ProjectActionDialog.test.tsx
  • pr/ui/src/components/ProjectActionDialog.tsx
  • pr/ui/src/components/ProjectActionFeedback.tsx
  • pr/ui/src/components/ProjectActionRunDialog.tsx
  • pr/ui/src/components/ProjectCommitTasks.test.tsx
  • pr/ui/src/components/ProjectCommitTasks.tsx
  • pr/ui/src/components/ProjectDiffView.test.tsx
  • pr/ui/src/components/ProjectDiffView.tsx
  • pr/ui/src/components/ProjectFileTree.tsx
  • pr/ui/src/components/ProjectForm.test.tsx
  • pr/ui/src/components/ProjectForm.tsx
  • pr/ui/src/components/ProjectOpenPR.test.tsx
  • pr/ui/src/components/ProjectStatusView.fixture.ts
  • pr/ui/src/components/ProjectStatusView.test.tsx
  • pr/ui/src/components/ProjectStatusView.tsx
  • pr/ui/src/components/ProjectsBar.test.tsx
  • pr/ui/src/components/ProjectsBar.tsx
  • pr/ui/src/components/ProjectsPlaceholder.test.tsx
  • pr/ui/src/components/ProjectsPlaceholder.tsx
  • pr/ui/src/components/ProjectsView.test.tsx
  • pr/ui/src/components/ProjectsView.tsx
  • pr/ui/src/components/PromptOverrideField.test.tsx
  • pr/ui/src/components/PromptOverrideField.tsx
  • pr/ui/src/components/ReactGrabHelp.tsx
  • pr/ui/src/components/RelativeTime.tsx
  • pr/ui/src/components/RepoIcon.tsx
  • pr/ui/src/components/StatusIndicator.test.tsx
  • pr/ui/src/components/ThemeToggle.tsx
  • pr/ui/src/components/TodoBadge.tsx
  • pr/ui/src/components/TodoView.test.tsx
  • pr/ui/src/components/TodoView.tsx
  • pr/ui/src/components/WorkflowView.test.tsx
  • pr/ui/src/components/oneShotQueries.test.ts
  • pr/ui/src/components/oneShotQueries.ts
  • pr/ui/src/components/processMutations.ts
  • pr/ui/src/components/project-commit-tasks.test.ts
  • pr/ui/src/components/project-commit-tasks.ts
  • pr/ui/src/components/projectMutations.test.ts
  • pr/ui/src/components/projectMutations.ts
  • pr/ui/src/components/prompts/PromptsView.test.tsx
  • pr/ui/src/components/prompts/PromptsView.tsx
  • pr/ui/src/components/prompts/promptCatalog.ts
  • pr/ui/src/components/settings/AIDefaultsField.test.tsx
  • pr/ui/src/components/settings/AIDefaultsField.tsx
  • pr/ui/src/components/settings/LayerSwitch.tsx
  • pr/ui/src/components/settings/SaveBar.tsx
  • pr/ui/src/components/settings/SettingsPage.test.tsx
  • pr/ui/src/components/settings/SettingsPage.tsx
  • pr/ui/src/components/settings/SettingsSectionCard.tsx
  • pr/ui/src/components/settings/extensions.tsx
  • pr/ui/src/components/settings/models.test.ts
  • pr/ui/src/components/settings/models.ts
  • pr/ui/src/components/settings/mutations.test.tsx
  • pr/ui/src/components/settings/mutations.ts
  • pr/ui/src/components/settings/provenance.test.ts
  • pr/ui/src/components/settings/provenance.ts
  • pr/ui/src/components/settings/queries.test.ts
  • pr/ui/src/components/settings/queries.ts
  • pr/ui/src/components/settings/schema.ts
  • pr/ui/src/components/settings/tags/TagDefinitionsPanel.test.tsx
  • pr/ui/src/components/settings/tags/TagDefinitionsPanel.tsx
  • pr/ui/src/components/settings/widgets/ChipsEditor.tsx
  • pr/ui/src/components/settings/widgets/LayerBadge.tsx
  • pr/ui/src/components/tests/CreateTodoFromRunDialog.test.tsx
  • pr/ui/src/components/tests/CreateTodoFromRunDialog.tsx
  • pr/ui/src/components/tests/LintResults.tsx
  • pr/ui/src/components/tests/RunFailureCandidates.test.ts
  • pr/ui/src/components/tests/RunFailureCandidates.ts
  • pr/ui/src/components/tests/TestRunDetail.test.tsx
  • pr/ui/src/components/tests/TestRunDetail.tsx
  • pr/ui/src/components/tests/TestRunResults.test.tsx
  • pr/ui/src/components/tests/TestRunResults.tsx
  • pr/ui/src/components/tests/types.test.ts
  • pr/ui/src/components/tests/types.ts
  • pr/ui/src/components/todos/AcceptanceCriteria.test.tsx
  • pr/ui/src/components/todos/AcceptanceCriteria.tsx
  • pr/ui/src/components/todos/CreateTodoDialog.test.tsx
  • pr/ui/src/components/todos/CreateTodoDialog.tsx
  • pr/ui/src/components/todos/CreateTodoFromPRDialog.test.tsx
  • pr/ui/src/components/todos/CreateTodoFromPRDialog.tsx
  • pr/ui/src/components/todos/PRTodoContent.test.ts
  • pr/ui/src/components/todos/PRTodoContent.ts
  • pr/ui/src/components/todos/PRTodoWorkspaceField.tsx
  • pr/ui/src/components/todos/PlanReview.tsx
  • pr/ui/src/components/todos/PromptRunButton.tsx
  • pr/ui/src/components/todos/SessionErrorDetails.tsx
  • pr/ui/src/components/todos/TagPicker.test.tsx
  • pr/ui/src/components/todos/TagPicker.tsx
  • pr/ui/src/components/todos/TodoBodyField.test.tsx
  • pr/ui/src/components/todos/TodoBodyField.tsx
  • pr/ui/src/components/todos/TodoBucketGroup.tsx
  • pr/ui/src/components/todos/TodoCommitFiles.tsx
  • pr/ui/src/components/todos/TodoCommits.tsx
  • pr/ui/src/components/todos/TodoCompose.tsx
  • pr/ui/src/components/todos/TodoDetail.test.tsx
  • pr/ui/src/components/todos/TodoDetail.tsx
  • pr/ui/src/components/todos/TodoDetailTabs.tsx
  • pr/ui/src/components/todos/TodoGroupByMenu.tsx
  • pr/ui/src/components/todos/TodoGroupSelectAll.tsx
  • pr/ui/src/components/todos/TodoLabelsMenu.test.tsx
  • pr/ui/src/components/todos/TodoLabelsMenu.tsx
  • pr/ui/src/components/todos/TodoNewPage.test.tsx
  • pr/ui/src/components/todos/TodoNewPage.tsx
  • pr/ui/src/components/todos/TodoPhaseButton.tsx
  • pr/ui/src/components/todos/TodoPhaseCell.test.tsx
  • pr/ui/src/components/todos/TodoPhaseCell.tsx
  • pr/ui/src/components/todos/TodoPlan.test.tsx
  • pr/ui/src/components/todos/TodoPlan.tsx
  • pr/ui/src/components/todos/TodoRunActionButton.tsx
  • pr/ui/src/components/todos/TodoRunAdvancedDialog.tsx
  • pr/ui/src/components/todos/TodoRunEffortBadge.tsx
  • pr/ui/src/components/todos/TodoRunStatusStrip.tsx
  • pr/ui/src/components/todos/TodoRuntimeSummary.tsx
  • pr/ui/src/components/todos/TodoSelectionBar.tsx
  • pr/ui/src/components/todos/TodoSession.test.tsx
  • pr/ui/src/components/todos/TodoSession.tsx
  • pr/ui/src/components/todos/TodoSessionDetail.test.tsx
  • pr/ui/src/components/todos/TodoSessionDetail.tsx
  • pr/ui/src/components/todos/TodoSessionStart.test.tsx
  • pr/ui/src/components/todos/TodoSessionStart.tsx
  • pr/ui/src/components/todos/TodoSessionTimer.test.tsx
  • pr/ui/src/components/todos/TodoSessionTimer.tsx
  • pr/ui/src/components/todos/TodoSortByMenu.test.tsx
  • pr/ui/src/components/todos/TodoSortByMenu.tsx
  • pr/ui/src/components/todos/TodoTable.test.tsx
  • pr/ui/src/components/todos/TodoTable.tsx
  • pr/ui/src/components/todos/TodoTag.test.tsx
  • pr/ui/src/components/todos/TodoTag.tsx
  • pr/ui/src/components/todos/TodoTimeline.tsx
  • pr/ui/src/components/todos/TodoToolbar.test.tsx
  • pr/ui/src/components/todos/TodoToolbar.tsx
  • pr/ui/src/components/todos/TodoVerification.test.tsx
  • pr/ui/src/components/todos/TodoVerification.tsx
  • pr/ui/src/components/todos/TodoVerificationAttempts.test.tsx
  • pr/ui/src/components/todos/TodoVerificationAttempts.tsx
  • pr/ui/src/components/todos/VerificationAttemptSession.tsx
  • pr/ui/src/components/todos/VerificationFixtureResults.tsx
  • pr/ui/src/components/todos/VerificationStepOutput.test.tsx
  • pr/ui/src/components/todos/VerificationStepOutput.tsx
  • pr/ui/src/components/todos/WorkspaceTodoGroup.tsx
  • pr/ui/src/components/todos/attachments.tsx
  • pr/ui/src/components/todos/fixtureSchema.test.ts
  • pr/ui/src/components/todos/fixtureSchema.ts
  • pr/ui/src/components/todos/format.test.tsx
  • pr/ui/src/components/todos/format.tsx
  • pr/ui/src/components/todos/phaseMachine.test.ts
  • pr/ui/src/components/todos/phaseMachine.ts
  • pr/ui/src/components/todos/planActions.test.tsx
  • pr/ui/src/components/todos/planActions.tsx
  • pr/ui/src/components/todos/providers.ts
  • pr/ui/src/components/todos/queryTestWrapper.tsx
  • pr/ui/src/components/todos/reviewQueue.ts
  • pr/ui/src/components/todos/run.test.ts
  • pr/ui/src/components/todos/run.tsx
  • pr/ui/src/components/todos/runAction.test.tsx
  • pr/ui/src/components/todos/tagPalette.ts
  • pr/ui/src/components/todos/tagQueries.ts
  • pr/ui/src/components/todos/tagResolve.test.ts
  • pr/ui/src/components/todos/tagResolve.ts
  • pr/ui/src/components/todos/todoActions.test.tsx
  • pr/ui/src/components/todos/todoActions.tsx
  • pr/ui/src/components/todos/todoBodyPaste.test.ts
  • pr/ui/src/components/todos/todoBodyPaste.ts
  • pr/ui/src/components/todos/todoDensity.ts
  • pr/ui/src/components/todos/todoEntity.ts
  • pr/ui/src/components/todos/todoFilter.test.ts
  • pr/ui/src/components/todos/todoFilter.ts
  • pr/ui/src/components/todos/todoFilterBar.tsx
  • pr/ui/src/components/todos/todoGithubPush.test.ts
  • pr/ui/src/components/todos/todoGroup.test.ts
  • pr/ui/src/components/todos/todoGroup.ts
  • pr/ui/src/components/todos/todoLayout.test.ts
  • pr/ui/src/components/todos/todoLayout.ts
  • pr/ui/src/components/todos/todoMutations.test.tsx
  • pr/ui/src/components/todos/todoMutations.ts
  • pr/ui/src/components/todos/todoQueries.test.tsx
  • pr/ui/src/components/todos/todoQueries.ts
  • pr/ui/src/components/todos/todoSelection.test.ts
  • pr/ui/src/components/todos/todoSelection.ts
  • pr/ui/src/components/todos/todoSort.test.ts
  • pr/ui/src/components/todos/todoSort.ts
  • pr/ui/src/components/todos/todoTimeRange.ts
  • pr/ui/src/components/todos/usePRTodoProjectWorkspace.ts
  • pr/ui/src/components/todos/useWorkspaceTodos.test.tsx
  • pr/ui/src/components/todos/useWorkspaceTodos.ts
  • pr/ui/src/components/todos/verificationAttempts.test.ts
  • pr/ui/src/components/todos/verificationAttempts.ts
  • pr/ui/src/components/todos/workflowPhasesMock.ts
  • pr/ui/src/components/todos/workspaceTodoQueries.ts
  • pr/ui/src/icons/ProjectFileIcon.tsx
  • pr/ui/src/icons/Spinner.tsx
  • pr/ui/src/icons/VercelIcon.tsx
  • pr/ui/src/icons/iconifyFallback.tsx
  • pr/ui/src/icons/issues.tsx
  • pr/ui/src/icons/settings.tsx
  • pr/ui/src/icons/tags.tsx
  • pr/ui/src/index.css
  • pr/ui/src/joplin-turndown.d.ts
  • pr/ui/src/query.test.ts
  • pr/ui/src/query.ts
  • pr/ui/src/routes.test.ts
  • pr/ui/src/storage.ts
  • pr/ui/src/useAppMutations.test.tsx
  • pr/ui/src/useAppMutations.ts
  • pr/ui/src/useAppQueries.test.tsx
  • pr/ui/src/useAppQueries.ts
  • pr/ui/src/useContainerWidth.ts
  • pr/ui/src/useCopyFeedback.ts
  • pr/ui/src/useDocumentVisible.ts
  • pr/ui/src/useIsMobile.ts
  • pr/ui/src/useNow.ts
  • pr/ui/src/usePRDetailStream.test.tsx
  • pr/ui/src/usePRDetailStream.ts
  • pr/ui/src/useProjectCatalog.ts
  • pr/ui/src/useTimeoutFlash.ts
  • pr/ui/src/vite-env.d.ts
  • pr/ui/tailwind.config.js
  • pr/ui/task_source.go
  • pr/ui/task_source_ginkgo_test.go
  • pr/ui/test_run_syncer.go
  • pr/ui/test_runs.go
  • pr/ui/test_runs_latest_ginkgo_test.go
  • pr/ui/test_runs_test.go
  • pr/ui/todo_attachments.go
  • pr/ui/todo_attachments_test.go
  • pr/ui/todo_batch.go
  • pr/ui/todo_batch_ginkgo_test.go
  • pr/ui/todo_commits.go
  • pr/ui/todo_commits_test.go
  • pr/ui/todo_continue.go
  • pr/ui/todo_continue_test.go
  • pr/ui/todo_entity.go
  • pr/ui/todo_entity_ginkgo_test.go
  • pr/ui/todo_github.go
  • pr/ui/todo_github_ginkgo_test.go
  • pr/ui/todo_labels.go
  • pr/ui/todo_links.go
  • pr/ui/todo_plan.go
  • pr/ui/todo_plan_test.go
  • pr/ui/todo_review.go
  • pr/ui/todo_review_ginkgo_test.go
  • pr/ui/todo_review_test.go
  • pr/ui/todo_run_context.go
  • pr/ui/todo_run_context_ginkgo_test.go
  • pr/ui/todo_run_context_metadata.go
  • pr/ui/todo_run_control.go
  • pr/ui/todo_run_control_ginkgo_test.go
  • pr/ui/todo_run_ginkgo_test.go
  • pr/ui/todo_run_mode_dedup_test.go
  • pr/ui/todo_session.go
  • pr/ui/todo_session_approve_test.go
  • pr/ui/todo_session_detail.go
  • pr/ui/todo_session_detail_test.go
  • pr/ui/todo_session_stream_ginkgo_test.go
  • pr/ui/todo_session_test.go
  • pr/ui/todo_verification_fixture_test.go
  • pr/ui/todo_verification_spec_ginkgo_test.go
  • pr/ui/todo_verify.go
  • pr/ui/todos.go
  • pr/ui/todos_counts_test.go
  • pr/ui/todos_test.go
  • pr/ui/todos_test_provider_test.go
  • pr/ui/vitest.config.ts
  • procfile/control.go
  • procfile/detach_unix.go
  • procfile/env.go
  • procfile/env_test.go
  • procfile/export_test.go
  • procfile/lock.go
  • procfile/logs.go
  • procfile/logs_test.go
  • procfile/manager.go
  • procfile/manager_ginkgo_test.go
  • procfile/multiplex.go
  • procfile/procfile.go
  • procfile/procfile_suite_test.go
  • procfile/procfile_test.go
  • procfile/report.go
  • procfile/resolve_test.go
  • procfile/resources_test.go
  • procfile/state.go
  • procfile/state_test.go
  • procfile/supervisor.go
  • procfile/supervisor_options.go
  • procfile/supervisor_state.go
  • procfile/supervisor_test.go
  • procfile/userenv.go
  • procfile/userenv_test.go
  • prompts/prompts.go
  • prompts/registry/registry.go
  • prompts/registry/registry_test.go
  • prwatch/filter.go
  • prwatch/filter_test.go
  • prwatch/gavel_results.go
  • prwatch/gavel_results_ginkgo_test.go
  • prwatch/gavel_results_pretty.go
  • prwatch/pr_snapshot.go
  • prwatch/pr_snapshot_ginkgo_test.go
  • prwatch/pr_status_fixture.go
  • prwatch/pr_status_fixture_test.go
  • prwatch/prwatch_suite_test.go
  • prwatch/result_render_test.go
  • prwatch/watch_test.go
  • report/compact.go
  • report/resultfile.go
  • report/resultfile_test.go
  • scripts/gavel-crash-stub.md
  • scripts/gavel-crash-stub.sh
  • service/install_ginkgo_test.go
  • service/service_suite_test.go
  • service/user_unit.go
  • site/content/docs/fixture-ai-review.mdx
  • site/content/docs/fixture-formats.mdx
  • site/content/docs/fixture-runner-steps.mdx
  • site/content/docs/fixtures-overview.mdx
  • site/content/docs/prompt-overrides.mdx
  • site/content/docs/todo-engine.mdx
  • site/content/docs/todo-run-loop.mdx
  • site/src/lib/useTimeoutFlash.ts
  • snapshots/list.go
  • snapshots/list_ginkgo_test.go
  • snapshots/list_test.go
  • spec_embedding_test.go
  • status/ai-file-summary.prompt
  • status/ai_renderer.go
  • status/ai_renderer_test.go
  • status/problems.go
  • status/problems_test.go
  • status/prompts.go
  • status/results_ginkgo_test.go
  • status/scope_group_test.go
  • status/status_suite_test.go
  • testrunner/build_tags_ginkgo_test.go
  • testrunner/fixture_origin_ginkgo_test.go
  • testrunner/fixture_progress.go
  • testrunner/fixture_progress_ginkgo_test.go
  • testrunner/focus_test.go
  • testrunner/outline/ai.go
  • testrunner/outline/ai_internal_test.go
  • testrunner/outline/build.go
  • testrunner/outline/build_internal_test.go
  • testrunner/outline/complexity.go
  • testrunner/outline/complexity_test.go
  • testrunner/outline/describe.go
  • testrunner/outline/duplication.go
  • testrunner/outline/duplication_internal_test.go
  • testrunner/outline/fixtures.go
  • testrunner/outline/fixtures_internal_test.go
  • testrunner/outline/ginkgo.go
  • testrunner/outline/ginkgo_internal_test.go
  • testrunner/outline/gotest.go
  • testrunner/outline/gotest_internal_test.go
  • testrunner/outline/historyjoin.go
  • testrunner/outline/historyjoin_internal_test.go
  • testrunner/outline/javascript_tokens.go
  • testrunner/outline/jest.go
  • testrunner/outline/jest_internal_test.go
  • testrunner/outline/jest_source.go
  • testrunner/outline/node.go
  • testrunner/outline/node_collectors_internal_test.go
  • testrunner/outline/outline_suite_test.go
  • testrunner/outline/playwright.go
  • testrunner/outline/playwright_internal_test.go
  • testrunner/outline/prompts.go
  • testrunner/outline/render.go
  • testrunner/outline/render_internal_test.go
  • testrunner/outline/test-summary.prompt
  • testrunner/outline/testdata/ginkgo/sample_ginkgo_test.go
  • testrunner/outline/testdata/gotest/sample_test.go
  • testrunner/outline/testdata/vitest/list-output.json
  • testrunner/outline/types.go
  • testrunner/outline/vitest.go
  • testrunner/outline/vitest_internal_test.go
  • testrunner/parsers/ginkgo_json_trimpath_test.go
  • testrunner/parsers/modulepath.go
  • testrunner/runners/build_tags_ginkgo_test.go
  • testrunner/runners/runners_suite_ginkgo_test.go
  • testrunner/ui/pnpm-workspace.yaml
  • testrunner/ui/src/hooks/use-copy-feedback.ts
  • todos/approval.go
  • todos/approval_test.go
  • todos/attachments.go
  • todos/attachments_test.go
  • todos/backlog.go
  • todos/bulk/actions.go
  • todos/bulk/result.go
  • todos/bulk/result_test.go
  • todos/bulk/run_actions.go
  • todos/celverify.go
  • todos/celverify_test.go
  • todos/checker_concurrency_test.go
  • todos/checker_test.go
  • todos/checks/runner.go
  • todos/checks/runner_test.go
  • todos/claude/agent.go
  • todos/criteria.go
  • todos/criteria_test.go
  • todos/drivers/drivers.go
  • todos/drivers/drivers_test.go
  • todos/entity/entity.go
  • todos/entity/entity_test.go
  • todos/executor_ginkgo_test.go
  • todos/export.go
  • todos/fixtureverify.go
  • todos/githubpush/baseurl.go
  • todos/githubpush/push.go
  • todos/githubpush/push_ginkgo_test.go
  • todos/githubpush/target.go
  • todos/headless/commit_hook.go
  • todos/headless/envelope.go
  • todos/headless/envelope_test.go
  • todos/headless/executor.go
  • todos/headless/executor_test.go
  • todos/headless/request.go
  • todos/headless/spec_recorder.go
  • todos/labels/builtin.go
  • todos/labels/definition.go
  • todos/labels/labels_ginkgo_test.go
  • todos/labels/palette.go
  • todos/labels/palette_test.go
  • todos/labels/removal.go
  • todos/labels/render.go
  • todos/labels/render_test.go
  • todos/labels/resolver.go
  • todos/labels/schema_parity_test.go
  • todos/native/create_issue_plan.go
  • todos/native/create_issue_plan_ginkgo_test.go
  • todos/native/create_issue_session.go
  • todos/native/execution.go
  • todos/native/execution_integration_test.go
  • todos/native/labels.go
  • todos/native/labels_integration_test.go
  • todos/native/launch.go
  • todos/native/links.go
  • todos/native/ownership.go
  • todos/native/ownership_test.go
  • todos/native/phase_runs_integration_test.go
  • todos/native/relationships.go
  • todos/native/repository.go
  • todos/native/repository_integration_test.go
  • todos/native/repository_m6_integration_test.go
  • todos/native/repository_test.go
  • todos/native/types.go
  • todos/outcome.go
  • todos/outcome_test.go
  • todos/plans.go
  • todos/plans_test.go
  • todos/portable/portable.go
  • todos/portable/portable_integration_test.go
  • todos/portable/portable_test.go
  • todos/progress_persister.go
  • todos/progress_persister_ginkgo_test.go
  • todos/prompt/catalog.go
  • todos/prompt/catalog_test.go
  • todos/prompt/inputs.go
  • todos/prompt/prompt.go
  • todos/prompt/prompt_test.go
  • todos/prompt/sections.go
  • todos/prompt/source.go
  • todos/prompt/source_test.go
  • todos/prompt/todos-plan.prompt
  • todos/prompt/todos-run.prompt
  • todos/prompt/todos-triage.prompt
  • todos/provider.go
  • todos/query/list_opts.go
  • todos/query/list_opts_test.go
  • todos/run/confirm.go
  • todos/run/options.go
  • todos/run/registry.go
  • todos/run/start.go
  • todos/run_config.go
  • todos/runtime/aliases.go
  • todos/runtime/aliases_integration_test.go
  • todos/runtime/counts.go
  • todos/runtime/counts_integration_test.go
  • todos/runtime/create_plan.go
  • todos/runtime/create_plan_ginkgo_test.go
  • todos/runtime/labels.go
  • todos/runtime/lifecycle.go
  • todos/runtime/lifecycle_ginkgo_test.go
  • todos/runtime/lifecycle_resume_integration_test.go
  • todos/runtime/lifecycle_seed_test.go
  • todos/runtime/mapping.go
  • todos/runtime/mutations.go
  • todos/runtime/ownership.go
  • todos/runtime/ownership_integration_test.go
  • todos/runtime/phases.go
  • todos/runtime/plan_review.go
  • todos/runtime/plan_revision_ginkgo_test.go
  • todos/runtime/provider.go
  • todos/runtime/provider_integration_test.go
  • todos/runtime/provider_test.go
  • todos/runtime/relationships.go
  • todos/runtime/relationships_integration_test.go
  • todos/runtime/rendered_spec.go
  • todos/runtime/rendered_spec_test.go
  • todos/runtime/session_hierarchy.go
  • todos/runtime/session_hierarchy_ginkgo_test.go
  • todos/runtime/verification_output_test.go
  • todos/runtime/workspace_ginkgo_test.go
  • todos/sections.go
  • todos/spec/provenance.go
  • todos/spec/spec.go
  • todos/spec/spec_ginkgo_test.go
  • todos/transfer.go
  • todos/triage.go
  • todos/triage_test.go
  • todos/types/agent_checks_test.go
  • todos/types/envelope.go
  • todos/types/envelope_test.go
  • todos/types/labels_render_test.go
  • todos/types/phase.go
  • todos/types/phase_json_test.go
  • todos/types/phase_render.go
  • todos/types/phase_render_test.go
  • todos/types/phase_table_test.go
  • todos/types/relationship.go
  • todos/types/relationship_test.go
  • todos/types/runmode.go
  • todos/types/runmode_test.go
  • todos/types/status.go
  • todos/types/status_test.go
  • todos/types/triage_envelope_test.go
  • todos/verification_executor.go
  • todos/verification_fixture.go
  • todos/verification_fixture_ginkgo_test.go
  • todos/verification_fixture_test.go
  • todos/verification_spec_ginkgo_test.go
  • todosync/source_comments.go
  • todosync/source_comments_test.go
  • utils/gitignore_native.go
  • utils/gitignore_native_test.go
  • utils/process.go
  • utils/process_test.go
  • verify/config_merge.go
  • verify/config_schema.go
  • verify/config_schema_test.go
  • verify/named_prompt.go
  • verify/prompt_spec.go
  • verify/prompt_spec_test.go

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.


Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@github-advanced-security github-advanced-security AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

CodeQL found more than 20 potential problems in the proposed changes. Check the Files changed tab for more details.

…ection

- Discover nested project roots while pruning node_modules and nested git repositories
- Skip linting nested projects when their ancestors are already scheduled, eliminating redundant runs
- Add workspace-local binary resolution for oxlint with fallback to PATH
- Update TypeScript linter to use SolutionBuilder for project references without writing artifacts
- Fix logging format strings in ruff and runner
…atterns

- Fix logger.Errorf format verbs: %w is only valid for fmt.Errorf wrapping,
  not for general error logging; use %v instead
- Add missing o.Tags parameter to goPreBuildArgs function call
- Simplify field access by accessing embedded/direct fields instead of
  navigating through parent structs (countingConn.Conn → Conn)
- Use capturePolicy conversion constructor instead of manual struct init
- Fix string trim check on incorrect field (req.Model.Name → req.Name)
- Remove unused httpx import
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants