Skip to content

feat: workspaces/worktrees UX + Environments settings + response-required notifications#339

Merged
Dimillian merged 23 commits intoDimillian:mainfrom
ishanray:main
Feb 5, 2026
Merged

feat: workspaces/worktrees UX + Environments settings + response-required notifications#339
Dimillian merged 23 commits intoDimillian:mainfrom
ishanray:main

Conversation

@ishanray
Copy link
Copy Markdown
Contributor

@ishanray ishanray commented Feb 5, 2026

Summary

A bundle of workspace/worktree quality-of-life improvements plus a few UX/polish fixes across threads/messages, collaboration modes, notifications, settings, and the local git diff viewer.

A lot of the things which brings it to feature parity with the Codex app.

Let me know if it is too big and I can break it up into smaller chunks @Dimillian

Key changes

Workspaces / Worktrees

  • Copy AGENTS.md from the parent repo into newly-created worktrees (when present).
  • Add an option to skip copying AGENTS.md during worktree creation (default remains on).
  • Worktree creation prompt: add a branch suggestions dropdown + improved modal styling.
  • Composer: enable shortcuts on the workspace home textarea.

Settings

  • Add Settings → Environments for per-project setup scripts (stored on the workspace settings).

Environment setup script flow

  • Worktree prompt surfaces the setup script (configured in Settings → Environments) and runs it once after worktree creation.

Notifications

  • Add “response required” system notifications for agents and wire into the app modal/controller flow.

Collaboration modes / app-server

  • Include experimentalApi capability during initialize.
  • Accept alternate collaboration mode responses, improve debug logging, and display collaboration modes verbatim.
  • Remove unused collaboration mode label formatter utility.

Git diff viewer

  • Add per-file discard action in the local diff viewer.
  • Improve image diff card support and related diff viewer styling.

Threads / Messages

  • Fix: keep streamed plan output visible when completion is empty.
  • Refine thread item normalization + add/extend tests around turn events and normalization.

Implementation notes

  • Worktree AGENTS.md copy is best-effort: if the parent repo does not have AGENTS.md, creation proceeds normally.
  • Skip-copy toggle is plumbed end-to-end (frontend → IPC → app backend → daemon) so remote mode stays consistent.

Test plan

  • npm run test
  • npm run typecheck
  • npm run lint
  • cd src-tauri && cargo check

(Manual) Worktree creation:

  • Create a worktree with default settings: verify AGENTS.md is copied when present.
  • Create a worktree with “Copy AGENTS.md” unchecked: verify it is not copied.
image image image

@Dimillian
Copy link
Copy Markdown
Owner

Nice! Look like a lot of QoL! Thanks!

@Dimillian
Copy link
Copy Markdown
Owner

@codex review

Copy link
Copy Markdown

@chatgpt-codex-connector chatgpt-codex-connector bot left a comment

Choose a reason for hiding this comment

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

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 7d7f7b3760

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment on lines +31 to +34
let destination_path = worktree_root.join(AGENTS_MD_FILE_NAME);
let temp_path = worktree_root.join(format!("{AGENTS_MD_FILE_NAME}.tmp"));

std::fs::copy(&source_path, &temp_path).map_err(|err| {
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P1 Badge Skip copying when worktree already has AGENTS.md

This copy path always writes the parent repo’s AGENTS.md into the new worktree without checking whether the checked-out branch already contains its own AGENTS.md. For existing branches, that overwrites branch-specific instructions and immediately leaves the worktree dirty, which can change agent behavior and surprise users right after creation.

Useful? React with 👍 / 👎.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

eh.. not sure how much you care about this @Dimillian

Comment thread src/utils/threadItems.ts Outdated
Comment on lines +515 to +517
output:
incomingOutput.length >= existingOutput.length ? incomingOutput : existingOutput,
changes: hasIncomingChanges ? item.changes : existing.changes,
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P2 Badge Prefer incoming tool output unless it is truly empty

Using output length as the merge rule causes stale content to win whenever the server sends a shorter final update for the same tool item (for example, replacing verbose streamed text with a concise final result or error). In those cases the UI keeps the old longer text and never shows the authoritative completion payload.

Useful? React with 👍 / 👎.

@Dimillian
Copy link
Copy Markdown
Owner

Why did you added a manual agents.md copy? New worktree will already have it since they're based on the parent repo, no? Am I missing something?

@Dimillian Dimillian changed the title Workspaces/worktrees UX + Environments settings + response-required notifications feat: workspaces/worktrees UX + Environments settings + response-required notifications Feb 5, 2026
@Dimillian Dimillian merged commit 7cf1eca into Dimillian:main Feb 5, 2026
5 checks passed
@ishanray
Copy link
Copy Markdown
Contributor Author

ishanray commented Feb 5, 2026

Aah mainly because if the AGENTS.md file isn't committed. But this works too.

gersmann pushed a commit to gersmann/codex-monitor-web that referenced this pull request Mar 10, 2026
…ired notifications (Dimillian#339)

Co-authored-by: Thomas Ricouard <ricouard77@gmail.com>
zip700 pushed a commit to zip700/CodexMonitor that referenced this pull request Apr 3, 2026
…ired notifications (Dimillian#339)

Co-authored-by: Thomas Ricouard <ricouard77@gmail.com>
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