feat: add reversible config-entry ownership and mapify uninstall (#314)#331
Conversation
|
Warning Review limit reached
Next review available in: 38 minutes Enable usage-based reviews in Billing to review now. Otherwise, wait until the next included review is available. How can I continue?After more reviews become available, a review can be triggered using the To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based reviews. How do review limits work?CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan review availability. For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, additional reviews become available more gradually as earlier reviews age out of the rolling window. Please refer docs for additional details. Review details⚙️ Run configurationConfiguration used: Organization UI Review profile: CHILL Plan: Pro Run ID: 📒 Files selected for processing (4)
✨ Finishing Touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
Documents the new mapify check-installed command, .map/mapify.lock.json artifact, and install_manifest.py module in the Runtime Flows, Code Layout, On-disk Artifacts, and Source of Truth sections. Updates version to 3.21.0 and refreshes the Freshness section with the 2026-07-05 delta. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01HZ3wHDow49xBGUwWFPH2mD
…y uninstall (#314) Track MAP-owned provider config merges (MCP servers, statusline) in .map/mapify.lock.json under a new config_entries list, enabling safe removal via `mapify uninstall`. - Add ConfigEntry dataclass: file (relative), key_path (dot-notation), installed_at, mapify_version - Add ReconcileResult dataclass: removed/skipped/missing lists - Add _scan_mcp_config_entries: records MCP servers whose current value exactly matches the canonical MAP config (user-modified entries excluded) - Add _scan_statusline_config_entry: records statusLine only when command contains the "map-statusline.py" ownership marker - Add reconcile_config: reads config_entries from manifest, removes MAP- owned entries (skips user-modified, marks missing absent ones) - Extend build_manifest for claude provider to scan and record config entries; codex provider gets empty list - Backward compat: manifests without config_entries field default to [] - Add `mapify uninstall` CLI command with --yes flag for non-interactive use - Add 26 new tests covering VC10-VC17 (all pass, full suite 3309/0) Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01HZ3wHDow49xBGUwWFPH2mD
f8eca65 to
43840f3
Compare
Summary
Implements #314 — reversible ownership tracking for provider config merges (MCP servers, statusline) and a new
mapify uninstallcommand that removes MAP-owned entries without touching user-customised values.Changes
src/mapify_cli/install_manifest.pyConfigEntrydataclass: tracksfile(relative POSIX path),key_path(dot-notation, e.g.mcpServers.sequential-thinking),installed_at,mapify_versionReconcileResultdataclass:removed/skipped/missinglistsInstallManifestgains aconfig_entries: list[ConfigEntry]field (defaults to[]for backward compat)_scan_mcp_config_entries: at manifest build time, records MCP servers whose current value exactly matches the canonical MAP config — user-modified entries are excluded_scan_statusline_config_entry: recordsstatusLineonly when the command string contains"map-statusline.py"(MAP ownership marker); no absolute paths storedreconcile_config(project_path): readsconfig_entriesfrom manifest, removes MAP-owned entries, skips user-modified ones, marks already-absent entries as missingbuild_manifestupdated to scan and populateconfig_entriesfor the claude provider (codex gets empty list)read_manifestbackward-compatible: old manifests withoutconfig_entrieskey default to[]src/mapify_cli/__init__.pymapify uninstallcommand with--yes / -yflag (skips confirmation), exit codes 0/1/2tests/test_install_manifest.pyTest results
Design notes
config_entrieslist"map-statusline.py"substring serves as the ownership markerGenerated by Claude Code