Skip to content

Review findings and roadmap #30

Description

@patrick91

Summary

This issue tracks the comprehensive review findings and the prioritized roadmap to fix correctness, UX, and stack management problems.

Key Findings

  • get --downstack flag is defined but unused.
  • GitRepo.commit bypasses hooks for non-interactive commits.
  • Stack metadata in .git/shortcake.json is local-only and worktree-unaware.
  • Worktree support is incomplete (hard-coded .git paths).
  • create --insert updates parents but not parent_revision.
  • move and split compute parent_revision from local trunk instead of origin/main.
  • submit requires a clean tree even when no restack is needed.
  • ls hides branches by rendering only the first child chain.
  • Docs mismatch: README config path/format vs XDG TOML config.

Plan

Phase 1: Correctness and Data Safety

  • Implement or remove get --downstack.
  • Ensure hooks run for non-interactive commits.
  • Use Repo.git_dir or git rev-parse --git-dir for metadata and split state paths.
  • Update parent_revision when inserting branches.
  • Normalize trunk refs to origin/main for parent revision calculations.
  • Render all stack roots and children in ls.
  • Align docs with actual config location/format.

Phase 2: UX Improvements

  • Only require a clean tree in submit when restack is needed (or add --no-restack).
  • Add a safe view/status command for stack inspection.
  • Provide interactive nav up when multiple children exist.
  • Add consistent --dry-run behavior across mutating commands.

Phase 3: Cross-Device Metadata

  • Evaluate trailers vs notes for portable metadata.
  • Add shortcake metadata migrate and shortcake metadata sync.
  • Add fallback stack reconstruction when metadata is missing.

Phase 4: Workflow Enhancements

  • Optional integration with git-absorb or git-autofixup.
  • Add undo/runlog recovery commands.
  • Consider a land/merge command for orderly stack landing.

Suggested Tests

  • Worktree path handling for metadata and split state.
  • submit behavior with dirty tree when restack not needed.
  • create --insert parent revision updates.
  • get --downstack behavior.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions