v0.3.1 — TUI Source-filter backend wire-up
Fixed
- TUI Source-filter dropdown now actually filters. In 0.3.0 the dropdown widget was added to Permissions / Hooks / Memory tabs but the underlying
discover_*()functions ignored scope. This patch wires it up end-to-end.
Changes
core.permissions.discover_rules(scope=...)accepts"real" | "nested" | "junk" | "real+nested" | "all"(or a concrete path), defaulting toNonefor everything.core.hooks.discover_hooks(scope=...)(+ aliasdiscover_hooks_files) ditto.core.memory.discover_memory_files(scope=...)ditto.- All three now also walk monorepo
.claude/locations undercwd()so nested/junk sources can actually be surfaced. - Sources are classified by enclosing
.claude/directory viacore.monorepo.classify_location(); canonical user paths (~/.claude/...) are treated as"real".
Added
- CLI parity:
cc-janitor perms list --scope,cc-janitor hooks list --scope,cc-janitor memory list --scope.
Tests
- 12 new scope-filter unit tests
- conftest now isolates cwd so monorepo discovery doesn't leak project fixtures
- 214 tests passing (up from 200)
See CHANGELOG.md for full details.