feat(status): first-class empty directory tracking
Directories are first-class symbols in Muse — no .musekeep marker required. Empty directories are staged as sentinel entries (object_id="dir:") and persisted in SnapshotManifest.directories so they survive commits.
Changes: - DirStatus TypedDict added to domain.py (added, deleted, staged_added) - StageStatus gains a directories field populated by stage_status() - stage_status() in code plugin detects empty dirs on disk vs committed, applies the same nested-repo and ignore-pattern filtering as file walks - snapshot() skips sentinel entries when building the files manifest so they don't pollute SnapshotRecord.manifest - code add (explicit paths and add .) both detect and stage empty dirs via sentinel entries written to the stage index - status.py surfaces directories in JSON output; total_changes counts dir changes; clean/dirty account for dir adds and deletes - 8 TDD tests D1-D8 covering untracked new dir, dirty flag, staging, staged not in untracked, deleted committed dir, non-empty dir excluded, files visible through dir, and clean repo directories key
Semantic Changes
51 symbols
0 comments
muse hub commit comment sha256:f992d46a7868ce37bb35c4e727736500bc7be91247f60e63833e0ab34f06b9a5 --body "your comment"
No comments yet. Be the first to start the discussion.