feat(create): manifest viewer — read-only MDI widget for silo/manifest.json #269

Merged
forbes merged 2 commits from feat/manifest-viewer into main 2026-02-18 22:50:34 +00:00
Owner

Summary

Add a read-only Manifest viewer that opens in an MDI subwindow when the user double-clicks the "Manifest" node in the Silo tree. Proves the full doubleClicked() → MDI subwindow pipeline that all subsequent viewers will reuse.

Changes

New file:

  • silo_viewers.pySiloManifestViewer widget (QFormLayout with 7 manifest fields) + create_viewer_widget() factory with _VIEWER_REGISTRY dict for future viewer classes

Modified files:

  • silo_viewproviders.pydoubleClicked() wired to open MDI subwindow with deduplication via widget objectName()
  • CMakeLists.txt — add silo_viewers.py to install list

Widget features:

  • All manifest.json fields displayed as read-only labels
  • Copy buttons ([⧉]) for Part UUID and Silo Instance
  • Timestamp formatting: ISO 8601 → YYYY-MM-DD HH:MM UTC
  • Graceful degradation: empty/malformed manifest shows em-dashes
  • Subwindow deduplication: double-clicking again raises existing tab

Closes kindred/silo-mod#38
Depends on #268

Checklist

  • Commit messages follow conventional commits (feat:, fix:, chore:, docs:, art:)
  • Code follows project style (clang-format for C++, black for Python)
  • Changes are tested locally
  • Documentation updated (if applicable)
## Summary Add a read-only Manifest viewer that opens in an MDI subwindow when the user double-clicks the "Manifest" node in the Silo tree. Proves the full `doubleClicked()` → MDI subwindow pipeline that all subsequent viewers will reuse. ## Changes **New file:** - `silo_viewers.py` — `SiloManifestViewer` widget (`QFormLayout` with 7 manifest fields) + `create_viewer_widget()` factory with `_VIEWER_REGISTRY` dict for future viewer classes **Modified files:** - `silo_viewproviders.py` — `doubleClicked()` wired to open MDI subwindow with deduplication via widget `objectName()` - `CMakeLists.txt` — add `silo_viewers.py` to install list **Widget features:** - All `manifest.json` fields displayed as read-only labels - Copy buttons (`[⧉]`) for Part UUID and Silo Instance - Timestamp formatting: ISO 8601 → `YYYY-MM-DD HH:MM UTC` - Graceful degradation: empty/malformed manifest shows em-dashes - Subwindow deduplication: double-clicking again raises existing tab ## Related Issues Closes kindred/silo-mod#38 Depends on #268 ## Checklist - [x] Commit messages follow [conventional commits](https://www.conventionalcommits.org/) (`feat:`, `fix:`, `chore:`, `docs:`, `art:`) - [x] Code follows project style (clang-format for C++, black for Python) - [x] Changes are tested locally - [x] Documentation updated (if applicable)
forbes added 1 commit 2026-02-18 22:49:31 +00:00
feat(create): manifest viewer — read-only MDI widget for silo/manifest.json (#38)
All checks were successful
Build and Test / build (pull_request) Successful in 29m13s
90728414a9
Add SiloManifestViewer widget that opens in an MDI subwindow when the
user double-clicks the Manifest node in the Silo tree. Displays all
manifest.json fields in a read-only QFormLayout with copy buttons for
Part UUID and Silo Instance.

New files:
- silo_viewers.py: SiloManifestViewer widget + create_viewer_widget()
  factory with _VIEWER_REGISTRY for future viewer classes

Modified files:
- silo_viewproviders.py: doubleClicked() wired to open MDI subwindow
  with deduplication via widget objectName()
- CMakeLists.txt: add silo_viewers.py to install list

Closes #38
forbes added 1 commit 2026-02-18 22:50:20 +00:00
Merge branch 'main' into feat/manifest-viewer
All checks were successful
Build and Test / build (pull_request) Successful in 29m6s
b721e67c8d
forbes merged commit 92183ef697 into main 2026-02-18 22:50:34 +00:00
forbes deleted branch feat/manifest-viewer 2026-02-18 22:50:35 +00:00
Sign in to join this conversation.
No Reviewers
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: kindred/create#269