Skip to content

Drop Root and Kind: Projects are git repos found by Scan #57

Description

@hammadmajid

Breaking change for v0.3.0. Settled in a grilling session.

Discovery

  • A Project is any directory holding a .git entry (dir or file), identified by its absolute path.
  • Only cdd scan [dir...] walks the disk. No args walks $HOME. Directories are not remembered.
  • The walk goes to any depth and stops descending at a repo — except a scan argument, which is always descended into (and recorded as a Project if it is a repo).
  • No symlink following (except scan arguments). Unreadable dirs are skipped silently.
  • include_hidden (default false) skips hidden dirs during the walk; .git detection is unaffected.
  • exclude is gitignore-style: a pattern containing / matches the absolute path (~ expanded), otherwise the basename. Default [].
  • Scan prints only its final summary.

History & Picker

  • History stores absolute paths. Relative (pre-v0.3.0) lines are skipped as malformed; re-run cdd scan.
  • The Picker lists History only and never walks. A Visit whose <path>/.git is gone is Stale and gives no row. The "never-visited last" rule disappears.
  • Row: muted ~/…/parent/ + bold basename; the filter matches the full path. The preview header uses the same form.
  • Exact-match: cdd <query> jumps directly when exactly one Project matches by basename or trailing path suffix.
  • git.Status states stay; only "not a git repository" copy goes.

Config

  • config.toml becomes optional.
  • root is removed; a stale root is a hard error explaining the change.
  • picker.layout stays, accepts only "list" (the new default); "grouped" is a hard error explaining the change.

Docs

  • CONTEXT.md: drop Root and Kind; redefine Project, Scan, Stale Visit, Layout.
  • ADR docs/adr/0001-projects-are-git-repos-found-by-scan.md.
  • README and demo updated (VHS 0.11.0).

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-agentFully specified, ready for an AFK agent

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions