Skip to content

feat: add Fluidd sidebar navigation support via Moonraker DB#23

Draft
bassco wants to merge 2 commits intoJohnBaumb:devfrom
bassco:feat/fluidd-nav-integration
Draft

feat: add Fluidd sidebar navigation support via Moonraker DB#23
bassco wants to merge 2 commits intoJohnBaumb:devfrom
bassco:feat/fluidd-nav-integration

Conversation

@bassco
Copy link

@bassco bassco commented Mar 18, 2026

Summary

Adds Fluidd navigation integration alongside the existing Mainsail navi.json approach. Instead of a file-based sidebar config, Fluidd stores custom navigation links in Moonraker's database. This PR injects a KlipperFleet link via the Moonraker DB API.

Blocked on: fluidd-core/fluidd#1786 (custom navigation links with drag-to-reorder and expandable sidebar)

Changes

  • install_scripts/setup_fluidd_navi.py — New script that adds/removes a CustomNavLink entry in Moonraker's DB at uiSettings.navigation.customLinks. Uses a stable UUID v5 id derived from "klipperfleet". Matches entries by id or title for idempotent install/uninstall.
  • install_scripts/setup_moonraker.py — Extended with --add-persistent-file and --remove-persistent-file flags to manage persistent_files in any [update_manager <section>] block. Used to register klipperfleet.html in [update_manager fluidd] so Moonraker preserves it across Fluidd updates.
  • install.sh — Deploys redirect shim to Fluidd web root, registers it as a persistent file, and injects the DB nav entry.
  • uninstall.sh — Removes the DB nav entry, the redirect shim, and the persistent_files registration.

How it works

  1. setup_fluidd_navi.py writes to Moonraker's database — the nav link appears in Fluidd's sidebar (users can reorder/hide/delete it via #1786's UI)
  2. klipperfleet.html redirect shim is deployed to Fluidd's web root (~/fluidd/)
  3. setup_moonraker.py --add-persistent-file fluidd klipperfleet.html ensures Moonraker preserves the shim when Fluidd updates

Reference

Test plan

bassco added 2 commits March 18, 2026 21:44
Add Fluidd navigation integration alongside the existing Mainsail
navi.json approach. Uses Moonraker's database API to inject a
KlipperFleet CustomNavLink entry (requires fluidd-core/fluidd#1786).

- setup_fluidd_navi.py: install/remove nav link via Moonraker DB API
- setup_moonraker.py: add/remove persistent_files for any update_manager
  section, used to preserve klipperfleet.html across Fluidd updates
- install.sh: deploy redirect shim to Fluidd web root + register as
  persistent_files in [update_manager fluidd]
- uninstall.sh: reverse all of the above

Reference: fluidd-core/fluidd#1802 (comment)
Signed-off-by: Andrew Basson <andrew.basson@gmail.com>
Signed-off-by: Andrew Basson <andrew.basson@gmail.com>
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