Skip to content

Add xovi extension management with Vellum integration#7

Merged
cuttlefisch merged 3 commits into
mainfrom
feat/xovi-extensions
Mar 24, 2026
Merged

Add xovi extension management with Vellum integration#7
cuttlefisch merged 3 commits into
mainfrom
feat/xovi-extensions

Conversation

@cuttlefisch
Copy link
Copy Markdown
Owner

@cuttlefisch cuttlefisch commented Mar 24, 2026

Summary

  • Deploy/remove curated xovi QMD extensions directly from the Device & Sync page — unlock Methods content, page size normalization, quicksheet template inheritance, and prevent notebook zoom-out
  • One-click xovi install/uninstall via Vellum package manager (detects Vellum, checks reenable status after firmware updates)
  • Normalize device model codenames from /sys/devices/soc0/machine (e.g. "reMarkable Chiappa" → rmPPM) for correct UI labels
  • Ref-counted busy state so xovi and sync operations independently block page navigation
  • Fix rebuild_hashtable hang (script has interactive read -p prompt — now piped via echo |)
  • Fix Vellum uninstall to explicitly remove all three packages (qt-resource-rebuilder, xovi-extensions, xovi)
  • SHA-512 checksum validation for bundled QMD files in CI and Docker build
  • Clear stale error messages when re-checking xovi status

Test plan

  • pnpm test — 995 tests pass
  • pnpm lint — clean
  • pnpm build — clean
  • Check xovi Status on device without Vellum → shows static SSH install guidance
  • Check xovi Status on device with Vellum but no xovi → shows "Install xovi" button
  • Install xovi via button → progress, success, status auto-refreshes
  • Deploy extensions → QMD files pushed, hashtable rebuilt, xochitl restarted
  • Remove All Extensions → files removed, hashtable rebuilt
  • Uninstall xovi → all three packages removed via Vellum
  • Navigation blocked during operations (navbar shows "Operation in progress…")
  • Docker build includes checksum validation step

🤖 Generated with Claude Code

cuttlefisch and others added 3 commits March 24, 2026 20:16
Deploy/remove curated QMD extensions (unlock Methods content, page size
normalization, quicksheet template inheritance, prevent zoom-out) directly
from the Device & Sync page. Detects xovi/Vellum/qt-resource-rebuilder
on the device, with one-click install/uninstall via Vellum.

Key changes:
- xovi status checking, deploy, remove, and Vellum install/uninstall routes
- Extension definitions with firmware version mapping and SHA-512 validation
- DeviceXoviCard component with extension selection, deploy progress, and
  error handling
- Normalize device model codenames (Chiappa→rmPPM, Merlot→rmPP) from
  /sys/devices/soc0/machine for correct UI labels and recommendations
- Ref-counted busy state so xovi and sync operations independently block
  page navigation
- Fix rebuild_hashtable hang by piping stdin (script has interactive prompt)
- Fix Vellum uninstall to explicitly remove all three packages
- CI and Docker checksum validation for bundled QMD files
- Documentation for xovi extensions, updated quickstart and device-sync docs

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Add server/data/xovi-extensions/ to git (was excluded by data/ ignore
  rule) — CI and Docker need manifest.json + QMD files for validation
- Move rebuild_hashtable stdout out of step messages into a separate
  log field — prevents huge xochitl output from flooding the UI
- Add "Download log" button for verbose rebuild output
- Fix Vellum uninstall to remove all three packages explicitly
- Default page size normalization to None instead of auto-recommending
- Improve page size description to explain sync-target reasoning
- Clear stale operation errors when re-checking xovi status

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
The rebuild_hashtable script temporarily starts xochitl to build the
hashtable, causing the device UI to restart during the process. Update
progress messages to set expectations.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@cuttlefisch cuttlefisch merged commit 3d06de6 into main Mar 24, 2026
2 checks passed
@cuttlefisch cuttlefisch deleted the feat/xovi-extensions branch March 24, 2026 20:22
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant