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

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

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