Skip to content

tui 7/8: squash (adjacent + cross-boundary, jj identity) #8

Description

@freshtonic

Parent

#1 — git queue tui — interactive queue/history editor (TUI)

What to build

Squash a commit into its adjacent (older) neighbour, following jj's change-identity rules.

  • Squash the selected commit into the one older (adjacent) to it; the engine rebases immediately (conflict escape hatch if needed).
  • Identity (follow jj): the older commit keeps its Stable-Commit-Id; the newer is absorbed. Descriptions are combined — both non-empty prompts for a combined message to trim; if either is empty the other is used.
  • Cross-boundary squash: squashing across a branch boundary auto-lands the result in the older branch; if that empties the newer branch, prompt to dissolve it (reusing the dissolve logic from delete).

Acceptance criteria

  • Squash folds a commit into its older adjacent neighbour, keeping the older commit's Stable-Commit-Id.
  • Combined-description prompt appears when both messages are non-empty; the non-empty one is used otherwise.
  • A cross-boundary squash lands in the older branch and prompts to dissolve the newer branch when it empties.
  • Squash is undoable.
  • Engine integration tests cover adjacent squash (id + description), and cross-boundary squash with the dissolve path.

Blocked by

Metadata

Metadata

Assignees

No one assigned

    Labels

    ready-for-agentSpec is ready to be picked up by an implementing agent

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions