feat(settings): Applications Framework for Optional Extensible Features#878
Draft
akira69 wants to merge 3 commits intoDonkie:masterfrom
Draft
feat(settings): Applications Framework for Optional Extensible Features#878akira69 wants to merge 3 commits intoDonkie:masterfrom
akira69 wants to merge 3 commits intoDonkie:masterfrom
Conversation
10 tasks
…og UI - Rename spoolman/complex_fields.py to spoolman/applications.py All ComplexField* classes renamed to Application* Added icon and app_key fields to ApplicationDefinition - Add spoolman/demo_applications.py with 8 concept app stubs: Drying Tracker, Inventory Alerts, Print History, Weight Audit, QR Customization, Spool Count, Filament Textures, Storage Conditions - Wire register_demo_applications() into startup in main.py - Rename API endpoints: /field/complex/ to /field/application/ - Rename setting keys: complex_fields_* to applications_* - Add Alembic migration to rename existing setting rows in DB - Frontend: rename ComplexField* types/hooks to Application* in queryFields.ts - Frontend: remove Complex Fields from Settings page (menu + route) - Frontend: add Applications to sidebar navigation (AppstoreOutlined icon) - Frontend: new ApplicationCard compone- Frontend: new ApplicationCard compone- Frontend: new ApplicationCard compone- Frontend: new ApplicationCard compone- Frontend: new ApplicationCa en- Frontend: new ApplicationCard compone- Frontend: new Applicas to applications keys
…emo apps - Move 'applications' i18n keys from settings.applications to top-level - Add status.active/partial/inactive keys for badge text - Add display:flex to Col and Card for uniform card heights - Remove spool_count (already exists as a feature in separate PR) - Remove filament_textures (better implemented as a common extra field) - Add Filament Calibration Profiles app (flow rate, PA, temp tower per filament) - Add Bambu AMS Sync app (auto-sync spool data with AMS unit)
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Introduces the Applications Framework — infrastructure for optional, user-configurable applications that extend Spoolman without modifying core code.
Rebrands "Complex Fields" to "Applications" — a more user-familiar ecosystem paradigm. The framework is independent: it merges standalone with a demo registry, and future features build on top without modifying core Spoolman.
Architecture
register_application()at startup, runtime dict, DB persistence for enabled stateWhat Changed
Backend
spoolman/applications.py(NEW) —ApplicationDefinition,ApplicationSurface, registry, enable/disable logicspoolman/demo_applications.py(NEW) — 8 concept stubs registered at startup (Drying Tracker, Inventory Alerts, Print History, Weight Audit, QR Customization, Spool Count, Filament Textures, Storage Conditions)spoolman/api/v1/field.py(MODIFIED) — endpoints renamed to/field/application/{entity_type}(GET/POST)spoolman/settings.py(MODIFIED) — setting keys updated toapplications_*(wascomplex_fields_*)spoolman/complex_fields.py(DELETED) — replaced byapplications.pymigrations/versions/…_rename_complex_fields_to_applications.py(NEW) — Alembic upgrade/downgrade for setting key renameFrontend
client/src/components/applicationCard.tsx(NEW) — Card with emoji avatar, per-surface enable toggles, Configure buttonclient/src/pages/applications/index.tsx(NEW) — Catalog page with Segmented filter (All/Enabled), responsive gridclient/src/pages/applications/detail/index.tsx(NEW) — Detail page with surface table and enable switchesclient/src/utils/queryFields.ts(MODIFIED) — types/hooks/API paths renamed to Applicationsclient/src/App.tsx(MODIFIED) — Applications resource +/applicationsand/applications/:appKeyroutes addedclient/src/pages/settings/index.tsx(MODIFIED) — Complex Fields menu removedclient/src/pages/settings/complexFieldsSettings.tsx(DELETED)client/public/locales/en/common.json(MODIFIED) — i18n keys updatedCode Quality Compliance ✅
Next Steps
Test Checklist
/applicationscatalog page loads with 8 demo app cards/applications/:appKeydetail pageGET /api/v1/field/application/spoolreturns demo apps