1
0
Fork 0
mirror of https://github.com/maziggy/bambuddy.git synced 2026-05-09 08:25:54 +02:00

[GH-ISSUE #1038] [Feature]: Spoolman inventory integration – unified UI, storage location field & AMS deep-links #732

Open
opened 2026-05-07 00:13:14 +02:00 by BreizhHardware · 10 comments

Originally created by @netscout2001 on GitHub (Apr 19, 2026).
Original GitHub issue: https://github.com/maziggy/bambuddy/issues/1038

Originally assigned to: @netscout2001 on GitHub.

Problem or Use Case

Users who manage filament in Spoolman currently have to switch back and forth between Bambuddy and the Spoolman web UI to view or edit spool details. There is no shared "storage location" concept between both systems. Managing where a spool is physically stored requires maintaining that information separately in Spoolman without it ever being visible inside Bambuddy.

Proposed Solution

Three connected improvements that together make Spoolman feel like a first-class part of Bambuddy:

  1. Unified inventory UI for Spoolman mode – When Spoolman is enabled, the Bambuddy inventory page proxies all spool data through Spoolman (create, edit, archive, delete) while keeping the same table/card UI as the internal inventory. This means users have a single place to manage spools regardless of which backend is active.

  2. Storage Location field – A new "Storage Location" text field on every spool (e.g. "Shelf A, Box 3"). In internal inventory mode it is stored locally. In Spoolman mode it maps bidirectionally to Spoolman's native location field – reads on load, writes back on save, and can be explicitly cleared.

  3. "Open in Inventory" deep-link from AMS slot hover card – The hover card shown when hovering over an AMS slot now contains an "Open in Inventory" button (for both Spoolman-linked and internally-assigned spools). Clicking it navigates to /inventory?spool=<id>, which immediately opens the edit modal for that exact spool without having to scroll or search. The modal opens from the already-cached spool list when possible, or via a targeted single-spool fetch as fallback.

Alternatives Considered

  • The previous behaviour was an external link "Open in Spoolman" that sent the user to Spoolman's own web UI. This works but breaks the Bambuddy workflow and is not available for internally-managed spools.
  • Embedding Spoolman in an iframe inside Bambuddy was considered but discarded because it prevents deep-linking and makes the UI feel disconnected.

Feature Category

Spoolman Integration

Priority

Would improve my workflow

Mockups or Examples

Printer Inventory Link, when spoolman is activated is the same as with internal inventory:

Image

Inventory:

Image

Spool edit with storage location:

Image

Contribution

  • I would be willing to help implement this feature
Originally created by @netscout2001 on GitHub (Apr 19, 2026). Original GitHub issue: https://github.com/maziggy/bambuddy/issues/1038 Originally assigned to: @netscout2001 on GitHub. ### Problem or Use Case Users who manage filament in Spoolman currently have to switch back and forth between Bambuddy and the Spoolman web UI to view or edit spool details. There is no shared "storage location" concept between both systems. Managing where a spool is physically stored requires maintaining that information separately in Spoolman without it ever being visible inside Bambuddy. ### Proposed Solution Three connected improvements that together make Spoolman feel like a first-class part of Bambuddy: 1. **Unified inventory UI for Spoolman mode** – When Spoolman is enabled, the Bambuddy inventory page proxies all spool data through Spoolman (create, edit, archive, delete) while keeping the same table/card UI as the internal inventory. This means users have a single place to manage spools regardless of which backend is active. 2. **Storage Location field** – A new "Storage Location" text field on every spool (e.g. "Shelf A, Box 3"). In internal inventory mode it is stored locally. In Spoolman mode it maps bidirectionally to Spoolman's native `location` field – reads on load, writes back on save, and can be explicitly cleared. 3. **"Open in Inventory" deep-link from AMS slot hover card** – The hover card shown when hovering over an AMS slot now contains an "Open in Inventory" button (for both Spoolman-linked and internally-assigned spools). Clicking it navigates to `/inventory?spool=<id>`, which immediately opens the edit modal for that exact spool without having to scroll or search. The modal opens from the already-cached spool list when possible, or via a targeted single-spool fetch as fallback. ### Alternatives Considered - The previous behaviour was an external link "Open in Spoolman" that sent the user to Spoolman's own web UI. This works but breaks the Bambuddy workflow and is not available for internally-managed spools. - Embedding Spoolman in an iframe inside Bambuddy was considered but discarded because it prevents deep-linking and makes the UI feel disconnected. ### Feature Category Spoolman Integration ### Priority Would improve my workflow ### Mockups or Examples Printer Inventory Link, when spoolman is activated is the same as with internal inventory: <img width="839" height="552" alt="Image" src="https://github.com/user-attachments/assets/74dbb68f-e7d8-4e2f-b6cb-347f44230e09" /> Inventory: <img width="1628" height="903" alt="Image" src="https://github.com/user-attachments/assets/484b2354-36ae-428a-ab11-aaf5a41eb176" /> Spool edit with storage location: <img width="573" height="804" alt="Image" src="https://github.com/user-attachments/assets/30f89e73-aecd-4ba8-a883-b1ec502565c3" /> ### Contribution - [x] I would be willing to help implement this feature
Author
Owner

@maziggy commented on GitHub (Apr 20, 2026):

Users who manage filament in Spoolman currently have to switch back and forth between Bambuddy and the Spoolman web UI to view or edit spool details.

Don't understand this one. The workflow is the same as for the internal inventory?!

There is no way to jump directly from an AMS slot to the corresponding spool,

What's the purpose? You can configure all related settings in the "Configure AMS slot" modal.

and no shared "storage location" concept between both systems. Managing where a spool is physically stored requires maintaining that information separately in Spoolman without it ever being visible inside Bambuddy.

Yes, that's correct. We already have some related feature requests:

So we first should figure out if/how these three FR can be satisfied.

In general we must keep parity between Spoolman and the internal inventory. So both should have exactly the same funtionality. The frontend shouldn't care about what inventory is enabled.

Unified inventory UI for Spoolman mode – When Spoolman is enabled, the Bambuddy inventory page proxies all spool data through Spoolman (create, edit, archive, delete) while keeping the same table/card UI as the internal inventory. This means users have a single place to manage spools regardless of which backend is active.

So that means, that the frontend of the internal inventory is also being used for Spoolman? I like!!!

Storage Location field – A new "Storage Location" text field on every spool (e.g. "Shelf A, Box 3"). In internal inventory mode it is stored locally. In Spoolman mode it maps bidirectionally to Spoolman's native location field – reads on load, writes back on save, and can be explicitly cleared.

Yes, we need such a field. When thinking about the logic we should respect all three FR listed above.

"Open in Inventory" deep-link from AMS slot hover card – The hover card shown when hovering over an AMS slot now contains an "Open in Inventory" button (for both Spoolman-linked and internally-assigned spools). Clicking it navigates to /inventory?spool=, which immediately opens the edit modal for that exact spool without having to scroll or search. The modal opens from the already-cached spool list when possible, or via a targeted single-spool fetch as fallback.

Fine for me.

Just my 2 cents.

<!-- gh-comment-id:4279513172 --> @maziggy commented on GitHub (Apr 20, 2026): > Users who manage filament in Spoolman currently have to switch back and forth between Bambuddy and the Spoolman web UI to view or edit spool details. Don't understand this one. The workflow is the same as for the internal inventory?! > There is no way to jump directly from an AMS slot to the corresponding spool, What's the purpose? You can configure all related settings in the "Configure AMS slot" modal. >and no shared "storage location" concept between both systems. Managing where a spool is physically stored requires maintaining that information separately in Spoolman without it ever being visible inside Bambuddy. Yes, that's correct. We already have some related feature requests: - https://github.com/maziggy/bambuddy/issues/1004 - https://github.com/maziggy/bambuddy/issues/829 So we first should figure out if/how these three FR can be satisfied. In general we must keep parity between Spoolman and the internal inventory. So both should have exactly the same funtionality. The frontend shouldn't care about what inventory is enabled. > Unified inventory UI for Spoolman mode – When Spoolman is enabled, the Bambuddy inventory page proxies all spool data through Spoolman (create, edit, archive, delete) while keeping the same table/card UI as the internal inventory. This means users have a single place to manage spools regardless of which backend is active. So that means, that the frontend of the internal inventory is also being used for Spoolman? I like!!! >Storage Location field – A new "Storage Location" text field on every spool (e.g. "Shelf A, Box 3"). In internal inventory mode it is stored locally. In Spoolman mode it maps bidirectionally to Spoolman's native location field – reads on load, writes back on save, and can be explicitly cleared. Yes, we need such a field. When thinking about the logic we should respect all three FR listed above. > "Open in Inventory" deep-link from AMS slot hover card – The hover card shown when hovering over an AMS slot now contains an "Open in Inventory" button (for both Spoolman-linked and internally-assigned spools). Clicking it navigates to /inventory?spool=<id>, which immediately opens the edit modal for that exact spool without having to scroll or search. The modal opens from the already-cached spool list when possible, or via a targeted single-spool fetch as fallback. Fine for me. Just my 2 cents.
Author
Owner

@netscout2001 commented on GitHub (Apr 20, 2026):

Thanks for the detailed feedback!

On "switch back and forth":
Before this PR, Bambuddy had no inventory UI for Spoolman spools at all — Spoolman users had to open Spoolman's own web UI in a separate tab to create, edit, or delete spools. The internal inventory worked entirely within Bambuddy, but Spoolman users were left out. That's the friction this closes: both inventory backends now live inside Bambuddy with the same UI.

On Storage Location and the related FRs:
#1004 - already integrated in my feature
#829 - alternate use the new storage location field which is already there with this feature
Happy to align on the exact behavior if needed.

On parity:
That's exactly the goal — the frontend is inventory-backend-agnostic. The Spoolman proxy endpoints mirror the same CRUD surface as the internal inventory, so the UI doesn't need to know which backend is active.

<!-- gh-comment-id:4279971801 --> @netscout2001 commented on GitHub (Apr 20, 2026): Thanks for the detailed feedback! On "switch back and forth": Before this PR, Bambuddy had no inventory UI for Spoolman spools at all — Spoolman users had to open Spoolman's own web UI in a separate tab to create, edit, or delete spools. The internal inventory worked entirely within Bambuddy, but Spoolman users were left out. That's the friction this closes: both inventory backends now live inside Bambuddy with the same UI. On Storage Location and the related FRs: #1004 - already integrated in my feature #829 - alternate use the new storage location field which is already there with this feature Happy to align on the exact behavior if needed. On parity: That's exactly the goal — the frontend is inventory-backend-agnostic. The Spoolman proxy endpoints mirror the same CRUD surface as the internal inventory, so the UI doesn't need to know which backend is active.
Author
Owner

@maziggy commented on GitHub (Apr 20, 2026):

Now we are in sync :)

<!-- gh-comment-id:4280199378 --> @maziggy commented on GitHub (Apr 20, 2026): Now we are in sync :)
Author
Owner

@ic9888 commented on GitHub (Apr 20, 2026):

I love the idea of a fully featured front end for spoolman in bambuddy, thanks for incorporating #829 in the discussion,

Do you think we can include the concept of a printer location as the default storage location for a spool? i.e. When a spool is removed from an AMS attached to a printer in Location A, that is the default storage location assigned to the spool unless a more specific location is configured.

<!-- gh-comment-id:4280457350 --> @ic9888 commented on GitHub (Apr 20, 2026): I love the idea of a fully featured front end for spoolman in bambuddy, thanks for incorporating #829 in the discussion, Do you think we can include the concept of a printer location as the default storage location for a spool? i.e. When a spool is removed from an AMS attached to a printer in Location A, that is the default storage location assigned to the spool unless a more specific location is configured.
Author
Owner

@netscout2001 commented on GitHub (Apr 20, 2026):

@ic9888 whats with that? alternate use the new storage location field which is already there with this feature.
This storage location field can be edited and not controlled by bambuddy like the location ams field.

<!-- gh-comment-id:4280478599 --> @netscout2001 commented on GitHub (Apr 20, 2026): @ic9888 whats with that? alternate use the new storage location field which is already there with this feature. This storage location field can be edited and not controlled by bambuddy like the location ams field.
Author
Owner

@ic9888 commented on GitHub (Apr 20, 2026):

@ic9888 whats with that? alternate use the new storage location field which is already there with this feature. This storage location field can be edited and not controlled by bambuddy like the location ams field.

The goal of #829 is to populate the spool location in spoolman via bambuddy with a storage location based on the location of the printer the spool was last used in. It's not already there but under consideration and sounds like it might be rolled up into this feature @maziggy ?

<!-- gh-comment-id:4283816056 --> @ic9888 commented on GitHub (Apr 20, 2026): > [@ic9888](https://github.com/ic9888) whats with that? alternate use the new storage location field which is already there with this feature. This storage location field can be edited and not controlled by bambuddy like the location ams field. The goal of #829 is to populate the spool location in spoolman via bambuddy with a storage location based on the location of the printer the spool was last used in. It's not already there but under consideration and sounds like it might be rolled up into this feature @maziggy ?
Author
Owner

@netscout2001 commented on GitHub (Apr 21, 2026):

consideration

Ok i understand. But you can do manually with this feature when you set the printer Location in the storage location field correct? This field won't be changed by bambuddy.
But you need this automatically correct?
This is an additional Feature but this FR is a good base for this.

<!-- gh-comment-id:4286390264 --> @netscout2001 commented on GitHub (Apr 21, 2026): > consideration Ok i understand. But you can do manually with this feature when you set the printer Location in the storage location field correct? This field won't be changed by bambuddy. But you need this automatically correct? This is an additional Feature but this FR is a good base for this.
Author
Owner

@ic9888 commented on GitHub (Apr 21, 2026):

consideration

Ok i understand. But you can do manually with this feature when you set the printer Location in the storage location field correct? This field won't be changed by bambuddy. But you need this automatically correct? This is an additional Feature but this FR is a good base for this.

Perhaps I should make it more clear in #829 but the intention is for this to be done automatically by bambuddy when a spool is removed from the AMS, the point is to not need to do it manually in spoolman or bambuddy. The location field for the printer is just to let bambuddy know what location to assign the removed spool.

<!-- gh-comment-id:4287873197 --> @ic9888 commented on GitHub (Apr 21, 2026): > > consideration > > Ok i understand. But you can do manually with this feature when you set the printer Location in the storage location field correct? This field won't be changed by bambuddy. But you need this automatically correct? This is an additional Feature but this FR is a good base for this. Perhaps I should make it more clear in #829 but the intention is for this to be done automatically by bambuddy when a spool is removed from the AMS, the point is to not need to do it manually in spoolman or bambuddy. The location field for the printer is just to let bambuddy know what location to assign the removed spool.
Author
Owner
<!-- gh-comment-id:4377835403 --> @maziggy commented on GitHub (May 5, 2026): Test plan -> https://github.com/netscout2001/bambuddy/blob/feature/spoolman-inventory-ui/docs/spoolman-inventory-test-plan.md
Author
Owner

@maziggy commented on GitHub (May 5, 2026):

docker pull ghcr.io/maziggy/bambuddy:spoolman-test_20260505

<!-- gh-comment-id:4377841516 --> @maziggy commented on GitHub (May 5, 2026): docker pull ghcr.io/maziggy/bambuddy:spoolman-test_20260505
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
starred/bambuddy-maziggy-1#732
No description provided.