Skip to main content
CODEMUXManual

Changes

Stage, commit, push, and pull from the Changes panel, with AI-generated commit messages.

The Changes panel is the git workflow hub. Open it with Ctrl+Shift+B (toggles the right panel) or by clicking the Changes tab in the pane deck. The N files changed chip at the end of a settled agent chat turn also opens it.

The pane bar above the list carries:

  • The working tree's total +adds −dels
  • Filter changes — show All changes, Staged only, Changed only, or Conflicts only
  • Refresh — fetches remote refs, then re-reads the status (it also re-reads on its own every 10 seconds)

Below it, a branch row shows the current branch, how far it is behind (↓) and ahead (↑) of its upstream, and no remote when it has no upstream yet.

File List

Files are organized into sections:

Staged

Files that have been git add-ed. Hover the section header for Unstage all.

Changed

Unstaged modifications, new files, and deletions. Hover the section header for Stage all.

Conflicts

When merge conflicts exist, a Conflicts section groups the conflicted files. Resolve them by editing the files (in the built-in editor or your own), then stage them as usual — commits stay disabled until every conflict is resolved.

Each file shows:

  • A colored status icon — added, modified, removed, renamed, untracked, or conflicted
  • The file name, with its folder dimmed beside it (hover for the full path)
  • Addition/deletion counts (e.g., +12 -3)
  • On hover or keyboard focus: Discard (click once to arm, again within 3 seconds to confirm) and Stage / Unstage

Click a file to open its diff in the right panel's Diff pane; Esc there brings you back with the same row focused.

Until the first status read lands, the list shows placeholder rows and the action button reads Checking changes…, so a busy repository never flashes Working tree clean. A folder that isn't a git repository says so and offers Initialize Git.

Keyboard

Tab into the list and work it without the mouse:

KeyAction
↑ / ↓Move between files
Enter / SpaceOpen the file's diff
SStage or unstage the file
Delete / BackspaceDiscard the file's changes (press twice to confirm)

When staging or discarding moves a row out from under you, focus goes to the next file.

Committing and Syncing

The action bar at the bottom of the panel is one button that changes with the state of the branch:

StateButton
Uncommitted changesCommit — or Commit N when N files are staged
Ahead and behindSync (pull, then push)
Ahead onlyPush N
Behind onlyPull N
Clean and up to dateFetch

While an action runs the button says so — Pushing…, Pulling…, Syncing… — and briefly confirms with Pushed, Pulled, or Synced. The first push of a branch sets its upstream.

The chevron beside it (More actions) always offers everything, whatever the button shows: Commit (AI message), Commit & Push, Amend last commit (reads Amend with all changes when nothing is staged), Push, Pull, Sync, Fetch, Stash changes, Pop stash, and Undo last commit (the changes are kept).

Commit commits what's staged. If nothing is staged, it stages every changed file first.

AI Commit Messages

With AI commit messages enabled (the default):

  1. Click Commit — the button reads Writing message… while the agent reads the staged diff
  2. A preview of the message appears above the button
  3. Commit to use it as-is, Edit to change it first, or ✕ to throw it away

With AI commit messages turned off — or when the agent is Claude and the Claude CLI isn't installed — Commit opens an empty Commit message box instead; Ctrl+Enter (Cmd+Enter on macOS) commits.

The message is written by the Utility agent unless you set an Agent override under Settings → Git → AI Tools; Claude, Codex, and OpenCode all work. The same choice drafts pull request titles and descriptions — see Creating a Request.

Merge State

Start a merge or rebase however you like — typically git merge in a terminal pane. When one is in progress, Codemux shows a warning banner at the top of the panel:

  • "Merge in progress", plus a count of conflicts left to resolve
  • Abort — cancels the merge and restores your branch
  • Continue — appears once every conflict is resolved, and completes the merge

While a merge is in progress the action button is replaced by "Resolve or abort the merge above."

Keyboard Shortcuts

ShortcutAction
Ctrl+Shift+BToggle the right panel