Commit Graph

181 Commits

Author SHA1 Message Date
Carlos Florêncio b48471e063 feat: single-port architecture and browser warning fixes (#390) 2026-03-08 13:10:39 +00:00
Carlos Florêncio 05ed43e8e0 feat: improve port forwarding, remote executor setup, and CLI port config (#388) 2026-03-08 11:03:30 +00:00
Carlos Florêncio 0da44478d1 feat: add port proxy, symlink file save fix, and remote executor improvements (#358) 2026-03-07 14:53:21 +00:00
Carlos Florêncio 766e62d8c2 fix(worktree): improve startup readiness and base sync handling (#374) 2026-03-05 20:55:22 +00:00
Carlos Florêncio 7fb2f0bcfa feat: add git failed operations as failed chat messages (#371) 2026-03-05 20:26:55 +00:00
João Salavisa 28a27afd1a refactor: move git status and commits to real-time agentctl queries (#366) 2026-03-05 08:35:02 +00:00
Carlos Florêncio a34693e993 feat: improve session recovery and context reset (#369) 2026-03-05 00:30:50 +00:00
Carlos Florêncio c73fa7471b fix: resolve clarification MCP timeout with cancel-and-resume flow (#362) 2026-03-05 00:18:57 +00:00
José Almeida c79d138c45 feat(web): add diff expansion with expand-all in review panel (#340)
* feat(backend): add support for fetching file content at git ref

Add GetFileContentAtRef method to WorkspaceTracker for retrieving file content
at specific git refs (branches, commits, HEAD). This enables diff expansion by
fetching old file versions without checking out.

Changes:
- Extract maxFileSize constant to package level (10MB)
- Add GetFileContentAtRef to workspace_files.go using git show
- Add workspace.file.get_at_ref WebSocket action and handler
- Add agentctl client method for the new endpoint
- Register handler in workspace file handlers

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* feat(web): add diff expansion support for code review

Add lazy-loaded diff expansion to show more context in code reviews. When expansion
is enabled, users can expand hunks to see more surrounding code by clicking expand
buttons. Full file content is fetched on-demand via WebSocket.

Changes:
- Add useExpandableDiff hook for lazy-loading old/new file content
- Add requestFileContentAtRef to workspace-files.ts
- Integrate expansion into diff viewer components
- Add enableExpansion and baseRef props to DiffViewer
- Auto-load expansion content when enabled
- Pass expansion state through diff viewer hierarchy

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* fix(web): gracefully handle expansion props for Monaco diff viewer

Monaco diff viewer has built-in expansion that doesn't require fetching
old file content. Strip pierre-diffs-only expansion props (enableExpansion,
baseRef) when Monaco is selected to avoid passing unsupported props.

This ensures the feature works correctly regardless of which diff viewer
the user selects in settings.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* feat(backend): add diff expansion e2e scenario and fix unstaged diff base ref

- Add scenarioDiffExpansionSetup mock-agent scenario that creates a
  200-line file, commits it, then modifies lines 50 and 150 to produce
  a two-hunk uncommitted diff for testing diff expansion in the UI
- Add workspace_file_handlers for workspace.file.get_at_ref WS action
- Fix enrichWithDiffData to always diff against HEAD for unstaged/staged
  content so locally committed files show correct diffs
- Add unit tests for GetFileContentAtRef (6 sub-tests)

* feat(web): add diff expansion UI and e2e test

- Wire useExpandableDiff hook into FileDiffViewer and ReviewDiffList
  with enableExpansion and baseRef props
- Gracefully handle expansion props for Monaco diff viewer fallback
- Add e2e Playwright test for diff expansion between hunks

* fix(web): fix diff expansion by correcting hunk separators and line splitting

Three bugs prevented @pierre/diffs expand buttons from rendering:
- hunkSeparators was "simple" (no expand UI); changed to "line-info" when expansion enabled
- expandUnchanged:true showed all lines expanded (no separators); removed the option
- .split("\n") stripped trailing newlines; now uses SPLIT_WITH_NEWLINES regex to match library

* feat(web): add editor provider settings UI

Add an "Editor Providers" section to the Editors settings page with
Select dropdowns for each configurable context (Code Editor, Diff Viewer,
Chat Code Blocks, Chat Diff Blocks). Reads from and writes to the
existing localStorage-backed editor resolver store. Changes apply
immediately without requiring a save action.

* test(web): add e2e tests for editor provider settings

Verify that the editor provider dropdowns render with correct defaults,
update on selection, and persist changes across page reloads via
localStorage.

* feat(web): add expand/collapse unchanged regions toggle to diff toolbar

Refactor diff header toolbar into composable ToolbarButtons component and
add a toggle button to expand or collapse unchanged regions in both
Pierre Diffs and Monaco diff viewers. Pass enableExpansion through to
Monaco to control hideUnchangedRegions.

* fix(web): handle deleted files in diff expansion

Treat "file not found" / "no such file" errors as empty content instead
of throwing, so diff expansion works correctly for deleted files.

* chore(web): add diff expansion debug e2e helpers

* test(web): split diff expansion tests by provider (Pierre Diffs + Monaco)

Restructure diff-expansion e2e tests into two describe blocks, one per
diff viewer provider. Each block sets the provider via localStorage
before navigation and verifies the correct viewer renders:

- Pierre Diffs: checks for diffs-container element and shadow DOM
  expand buttons between hunks
- Monaco: checks for .monaco-diff-viewer wrapper and the built-in
  hideUnchangedRegions widget with "Show Unchanged Region" link

Both suites verify that clicking expand reveals collapsed middle lines.

* fix(web): fix Pierre Diffs expand button selectors in e2e tests

Use shadow DOM data attributes ([data-expand-button], [data-expand-up])
instead of XPath parent traversal which doesn't work inside shadow DOM.
Wait for expand buttons to load asynchronously before clicking.

* fix(e2e): make diff-expansion-setup scenario idempotent

The mock-agent scenario now removes and re-commits the test file before
each run, so subsequent tests in the same repo don't fail with "git
commit failed" when the file already exists. Also increase test timeouts
to match other heavy e2e tests.

* refactor(web): remove editor provider settings UI, enable expand-all in review

Remove the editor provider switching UI and its tests — Monaco's diff
expansion doesn't work and exposing provider switching adds confusion.
Show Pierre Diffs header toolbar in the review panel (remove hideHeader)
so the expand-all button is accessible. Add e2e test for expand-all.

* style(web): fix prettier formatting and lint warnings

Run prettier on files with formatting drift. Extract ToolbarBtn helper
in diff-header-toolbar to stay within max-lines-per-function limit.
Consolidate useMonacoDiffViewerState to reduce line count.

* chore(web): remove debug scaffolding, revert Monaco changes, drop stray console.log

Revert Monaco diff-viewer-toolbar and monaco-diff-viewer to main
(expansion not functional with Monaco). Remove debug-expansion
screenshot scripts and spec. Strip console.log from commit-detail-panel.
Strip enableExpansion from Monaco path in diff-viewer-resolver.

* fix(web): use commit-relative base ref for diff expansion

Use `${commitSha}^` instead of hardcoded `HEAD~1` so expansion fetches
the correct old content when viewing non-HEAD commits.

* fix(web,backend): address CodeRabbit review feedback

- Add aria-label to icon-only toolbar buttons for screen reader access
- Guard auto-load expansion effect against error state to prevent retry
  loops when WebSocket fetch fails
- Invalidate expansion cache on file/ref change with request versioning
  to prevent stale content
- Preflight blob size with git cat-file -s before git show to avoid
  memory spikes on large files

---------

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-04 00:05:39 +00:00
Carlos Florêncio c7978a4ef3 fix: resolve stale PR data on task switch and deduplicate lifecycle code (#361) 2026-03-03 23:40:44 +00:00
Carlos Florêncio ee59ccdfbb feat: tui agents with workflows and code quality improvements (#360) 2026-03-03 22:59:22 +00:00
Carlos Florêncio 87a4438037 fix: ui improvements for pr panel, git operations, and task sidebar (#359) 2026-03-03 22:52:47 +00:00
Carlos Florêncio 730751cece fix: clear stale PR data on task switch and add on-demand PR detection (#357) 2026-03-03 20:14:54 +00:00
José Almeida c191ef2577 feat: improve git operations (branch rename, amend commit, file rename, reset) (#337) 2026-03-03 12:41:51 +00:00
Carlos Florêncio c8a692022a fix: passthrough PTY process survives page refresh (#353) 2026-03-02 23:30:56 +00:00
Carlos Florêncio cd96c6f699 feat: install agents on env preparation remote executors (#352) 2026-03-02 22:47:21 +00:00
Carlos Florêncio d9d4beea98 fix: sidebar task delete/archive redirects to next task or home (#351) 2026-03-02 21:51:28 +00:00
Carlos Florêncio d0b5237070 feat: improve chat input ux (#350) 2026-03-02 21:32:21 +00:00
Carlos Florêncio fb50b726df fix: copy markdown to clipboard and codex error handling (#348) 2026-03-02 18:37:13 +00:00
Carlos Florêncio 22c0fd2a57 fix: improve claude plan mode reliability and cleanup (#346) 2026-03-02 14:29:34 +00:00
Carlos Florêncio 76c1dcce89 fix: sidebar task switcher shows outdated session state and custom maximize layout (#345) 2026-03-02 14:12:11 +00:00
Carlos Florêncio 44811da702 feat: web e2e tests (#304) 2026-03-02 08:54:58 +00:00
João Salavisa ae616136bb feat: add utility agents for one-shot AI tasks (#341) 2026-03-02 01:55:39 +00:00
José Almeida 3656704263 fix: render markdown in user messages (#338) 2026-03-01 12:37:52 +00:00
Carlos Florêncio ed461052b2 fix: resolve black terminal on background tab init and reduce resize storm (#334) 2026-02-28 23:00:06 +00:00
Carlos Florêncio c1140a7ab5 fix: consolidate markdown styles into shared .markdown-body class (#332)
feat: improve markdown styles
2026-02-28 17:41:45 +00:00
Carlos Florêncio ea1b731fd6 feat: improve task launch (#297) 2026-02-26 23:06:07 +00:00
Carlos Florêncio 32f4a43cc0 feat: restore correct scroll position after layout switch (#295)
release / build-web (push) Has been cancelled
release / build-bundles (aarch64-linux-gnu-gcc, arm64, linux, ubuntu-latest, linux-arm64) (push) Has been cancelled
release / build-bundles (amd64, darwin, macos-14, macos-x64) (push) Has been cancelled
release / build-bundles (amd64, linux, ubuntu-latest, linux-x64) (push) Has been cancelled
release / build-bundles (arm64, darwin, macos-14, macos-arm64) (push) Has been cancelled
release / build-bundles (x86_64-w64-mingw32-gcc, amd64, windows, ubuntu-latest, windows-x64) (push) Has been cancelled
release / publish-release (push) Has been cancelled
2026-02-26 14:10:17 +00:00
Carlos Florêncio b3f1eaa037 feat: mermaid support (#293) 2026-02-26 13:24:40 +00:00
Carlos Florêncio 80fe0bff60 feat: improve layout manager (#290) 2026-02-26 11:26:30 +00:00
Carlos Florêncio b48305c4e0 feat: pr layout after start (#288) 2026-02-26 09:28:05 +00:00
Carlos Florêncio 2782d826ec feat: improve PR review watcher + PR info panel (#281) 2026-02-26 08:48:11 +00:00
Carlos Florêncio 9851a28bcc feat: open plan panel if agent writes to it (#287) 2026-02-26 08:27:18 +00:00
Carlos Florêncio 829236f1be feat: chat improvements (#280) 2026-02-25 02:10:16 +00:00
Carlos Florêncio 3a95a43990 fix: vscode (#279) 2026-02-24 23:01:41 +00:00
Carlos Florêncio edf1f6faa5 fix: layout switching messing panels (#278) 2026-02-24 20:33:45 +00:00
Carlos Florêncio 99d9c7730a feat: add session-state sections to task switcher sidebar (#273) 2026-02-24 09:18:42 +00:00
Carlos Florêncio 32f7ceb319 feat: several UX improvements (#272) 2026-02-24 00:48:55 +00:00
Carlos Florêncio aea8dc7b67 feat: improve workflows and agent resume (#269) 2026-02-23 23:54:27 +00:00
Carlos Florêncio 96b4a03ef9 feat: improve claude code normalized messages + review ux (#271) 2026-02-23 18:59:21 +00:00
Carlos Florêncio 40b4de3f1a feat: improve remote executor sprites.dev (#267) 2026-02-23 01:37:02 +00:00
Carlos Florêncio dff0b49c51 docs: add github integration (pr watcher) (#262) 2026-02-23 00:16:37 +00:00
Carlos Florêncio a23ab5be3a feat: remote executors + secrets (#257) 2026-02-21 22:14:56 +00:00
Carlos Florêncio 6b57e5a01f feat: vscode integration (#256) 2026-02-20 18:30:33 +00:00
Carlos Florêncio 01b0e9edf1 feat: improve acp + tracing (#258) 2026-02-20 17:30:14 +00:00
Carlos Florêncio 61ef224ec7 style: fix format issues (#255) 2026-02-19 22:18:01 +00:00
Carlos Florêncio fe9298a7ad feat: improve ux (#254) 2026-02-19 18:05:52 +00:00
Carlos Florêncio a0720957c4 feat: improved dockview layouts (#253) 2026-02-19 15:34:01 +00:00
Carlos Florêncio b5ca1dafb8 feat: improve plan comments (#249) 2026-02-18 23:34:50 +00:00
Carlos Florêncio 160dba0aaf feat: improve comment system (#247) 2026-02-18 19:52:40 +00:00