Metadata diff: cover categories, category-meta, and publishing preferences #83
Reference in New Issue
Block a user
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Source: Audit section 2.14.
Spec:
specs/metadata_diff.alliumRepairMetadataDiffItem dispatches entity typesproject | categories | category_meta | publishingto project metadata sync/flush.bDS2:
../bDS2/lib/bds/maintenance/diff_reports.ex(~lines 60-92) emits diff reports with entity_type "categories" (list diff), "category_meta" (per-category settings), "publishing" (ssh_host/ssh_user/ssh_remote_path/ssh_mode fields), comparing DB-held metadata state against meta/*.json. bDS2 keeps a DB copy of metadata via settings rows (../bDS2/lib/bds/metadata.expersist_setting).Current behaviour (RuDS):
crates/bds-core/src/engine/metadata_diff.rsemits only entity_type "project"; repair returns "unsupported metadata diff entity type" for categories/category_meta/publishing. RuDS has no DB copy of these (meta/*.json is the single source —engine/meta.rs), so there is currently nothing to diff.Task: Decide the approach with the maintainer: (a) mirror bDS2 by persisting metadata state in the settings table (schema.allium Setting exists) and diffing it against the files, or (b) declare file-only as intentional and update
specs/metadata_diff.allium+ remove the dispatch entries. If (a): add settings persistence in engine/meta.rs mutations, diff reports, both repair directions, and the metadata diff UI (bds-ui/src/views/metadata_diff.rs) so the three-way sync rule (metadata ↔ diff tool ↔ rebuild, per AGENTS.md) holds.Acceptance: Either bDS2-equivalent diff coverage with tests, or spec updated + validated with
alliumand dispatch table cleaned.decision by maintainer: follow bDS2 behaviour and update code and spec to reflect that.
Implemented in
2fc683d. RuDS now stores project-scoped database snapshots for project.json, categories.json, category-meta.json, and publishing.json; reports categories, category_meta, and publishing field drift; and supports both repair directions with the same all-metadata synchronization semantics as bDS2. All desktop, TUI, remote-server, Lua, WordPress import, project-open/create, deletion, and rebuild mutation/lifecycle paths keep snapshots and portable files aligned. Internal snapshots are hidden from user settings, rebuilt from filesystem metadata, and removed with the project. The existing metadata diff UI renders and repairs the new entity types. README and metadata_diff.allium were updated. Neutral review against the issue, bDS2 repair/settings behavior, and Allium found a legacy server/TUI initialization gap, which was fixed and regression-tested. Verification: allium check specs; allium analyse specs; cargo fmt --all -- --check; cargo check --workspace; cargo machete --with-metadata; cargo build --workspace; cargo test --workspace; git diff --check.