Skip to content

feat: Projects are git repositories found by cdd scan, with no Root or Kind - #58

Merged
hammadmajid merged 9 commits into
mainfrom
feat/git-projects
Sep 30, 2026
Merged

hammadmajid merged 9 commits into
mainfrom
feat/git-projects

Conversation

@hammadmajid

Copy link
Copy Markdown
Contributor

Summary

Breaking change, for v0.3.0. cdd drops Root and Kind. A Project is any directory holding a .git (a directory or a file), at any depth. cdd scan [dir...] (home by default) walks the disk and seeds History with absolute paths. The Picker lists History only, drops Stale Visits (.git gone), and never walks the disk.

  • Walk: stops descending at a repo, except in a directory passed to scan. It doesn't follow symlinks (except a scan argument), silently skips unreadable dirs, and skips hidden dirs unless include_hidden.
  • exclude: gitignore-style. A pattern with / matches the absolute path (~ expanded); any other pattern matches the directory name.
  • Exact match: cdd <query> jumps straight to the one Project whose name, trailing path or whole path matches.
  • Picker: the Grouped Layout is removed and list is the default. Each row shows its muted ~/…/parent/, trimmed from the start when narrow, and the filter matches the parent as well as the name. The not-a-repo status is gone; an unreadable .git shows as unknown (!).
  • Config: config.toml is optional. A leftover root or picker.layout = "grouped" fails with a message explaining the removal.
  • History: pre-v0.3.0 Root-relative lines are skipped as malformed; re-run cdd scan.
  • Docs: CONTEXT.md updated, ADR 0001 added, README and demo (re-recorded with VHS 0.11.0) updated.

Intermediate commit f9bf163 (History uses absolute paths) leaves the scan and jump tests red until 74567f9. Every other commit builds and passes.

Ticket

Closes #57

Checklist

  • go test ./... passes. The exception is internal/shell TestScriptExecution/fish, which fails identically on main in a sandbox without /dev/tty.
  • Commits follow Conventional Commits format
  • No file exceeds 300 lines

…o cdd scan

Projects are now any directory holding .git, found by walking the dirs
passed to cdd scan (home by default). The Picker lists History alone,
dropping Stale Visits, and exact-match accepts a name or trailing path.

Refs #57
…start, ahead of its name

The filter now matches the directory and name as shown, so highlights
line up with the row.

Refs #57
… repository

A .git that git cannot read shows as unknown instead.

Refs #57
…tional

A leftover root or layout = "grouped" fails with why it was removed.
Exclude patterns match a name, or with a "/" an absolute path, and
expand a leading ~.

Refs #57
@hammadmajid
hammadmajid merged commit d52cad9 into main Sep 30, 2026
3 checks passed
@hammadmajid
hammadmajid deleted the feat/git-projects branch September 30, 2026 14:39
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

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

1 participant