Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
33 commits
Select commit Hold shift + click to select a range
f95950f
Update README with new features and improvements
akira69 Feb 11, 2026
b0ff1e3
feat(printing): add filament label printing and AML export
akira69 Feb 11, 2026
62b32eb
docs: add changelog entry for printing updates
akira69 Feb 11, 2026
7f5e26b
Revert Readme
akira69 Feb 11, 2026
4175eff
feat: improved labels with manufacturer logo
akira69 Feb 18, 2026
4b3177d
Revert "feat: improved labels with manufacturer logo"
akira69 Feb 18, 2026
94a9126
feat(vendors): add searchable column filters and vendor list filtering
akira69 Feb 18, 2026
953d1de
feat(vendors): add manufacturer logo sync, previews, and auto-matching
akira69 Feb 18, 2026
39565e7
Refine export preset UX and filename preview behavior
akira69 Feb 19, 2026
abcce86
Add logo-driven label workflows and vendor logo sync improvements
akira69 Feb 19, 2026
3ce81a7
Add spool-count filtering and stabilize filter dropdown sizing
akira69 Feb 20, 2026
4eebec1
Merge branch 'master' of https://github.com/akira69/Spoolman_Labels
akira69 Feb 20, 2026
3797ea1
Merge pull request #2 from akira69/feat/manufacturer-logo-labels
akira69 Feb 20, 2026
dbe98f5
fix(filaments): fix spool_count sort/filter 500 and optimize list query
akira69 Feb 20, 2026
fdcf534
fix(vendors): harden logo sync base-path handling and spool-count query
akira69 Feb 21, 2026
9c5693d
fix(ui): align coextruded color preview swatches
akira69 Feb 21, 2026
9e7af19
fix(migrations): avoid duplicate spool.filament_id index creation
akira69 Feb 21, 2026
7e3c5fb
style(ui): use orange app-link styling on show pages
akira69 Feb 21, 2026
4d3170e
perf(filaments): optimize list filtering and name lookups
akira69 Feb 21, 2026
ab9f128
style(ui): enforce app-link color overrides in typography contexts
akira69 Feb 21, 2026
10d183c
feat(labels): persist column visibility in label pickers
akira69 Feb 21, 2026
d076029
feat(vendors): add web-to-print logo converter
akira69 Feb 21, 2026
6d9b561
feat(ui): add resizable columns and consistent floating edit actions
akira69 Feb 21, 2026
53d8254
fix(ui): align floating form actions with camera button
akira69 Feb 21, 2026
56a7fd6
fix(ui): align floating action button bottoms with camera button
akira69 Feb 21, 2026
07e71af
fix(ui): lift floating actions and lock camera anchor offsets
akira69 Feb 21, 2026
8d802f7
Make spool and filament edit Save button stateful
akira69 Feb 21, 2026
f4b27c1
feat: expand list column filtering across spool/filament/vendor
akira69 Feb 22, 2026
a9c651b
fix: show selectable values for date/weight filters
akira69 Feb 22, 2026
8208660
fix: enforce min-width table scrolling with resizable columns
akira69 Feb 22, 2026
99ff9c2
feat(tables): pin Actions column and add double-click auto-fit for re…
akira69 Feb 22, 2026
dccb123
fix: follow-up fixes for logo sync, spool_count, and UI table behavior
akira69 Feb 23, 2026
723bb32
[Review Stack] 846+860 cumulative — updated 2026-03-18
akira69 Mar 18, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
# Changelog

## Unreleased
- Add filament label printing with separate presets, QR codes, and filament QR scanning support.
90 changes: 88 additions & 2 deletions client/package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

9 changes: 5 additions & 4 deletions client/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@
"i18next": "^25.7.3",
"i18next-browser-languagedetector": "^8.2.0",
"i18next-http-backend": "^3.0.2",
"jszip": "3.10.1",
"react": "^19.2.3",
"react-dnd": "^16.0.1",
"react-dnd-html5-backend": "^16.0.1",
Expand All @@ -39,19 +40,19 @@
"@refinedev/cli": "^2.16.50",
"@types/loadable__component": "^5.13.10",
"@types/node": "^25.0.3",
"@types/react-dom": "^19.2.3",
"@types/react": "^19.2.7",
"@types/react-dom": "^19.2.3",
"@types/uuid": "^10.0.0",
"@vitejs/plugin-react": "^5.1.2",
"eslint": "^9.39.2",
"eslint-config-prettier": "^10.1.8",
"eslint-plugin-react": "^7.37.5",
"eslint-plugin-react-hooks": "^7.0.1",
"eslint-plugin-react-refresh": "^0.4.26",
"eslint-plugin-react": "^7.37.5",
"eslint": "^9.39.2",
"globals": "^17.0.0",
"prettier": "3.7.4",
"typescript-eslint": "^8.52.0",
"typescript": "^5.9.3",
"typescript-eslint": "^8.52.0",
"vite": "^7.3.0",
"vite-plugin-mkcert": "^1.17.9",
"vite-plugin-pwa": "^1.2.0"
Expand Down
40 changes: 38 additions & 2 deletions client/public/locales/en/common.json
Original file line number Diff line number Diff line change
Expand Up @@ -65,11 +65,21 @@
"helpMargin": "Margins should be configured to match your label paper and printer, changing these will affect the size of the entire grid.",
"helpPrinterMargin": "Safe-Zone should be set to how close to the paper edge your printer can print, changing these will not affect the entire grid.",
"print": "Print",
"exportLabels": "Export Labels",
"columns": "Columns",
"rows": "Rows",
"paperSize": "Paper Size",
"customSize": "Custom",
"dimensions": "Dimensions",
"amlLabelSize": "AML Label Size",
"exportFormat": "Export Format",
"exportFormatOptions": {
"png": "PNG",
"aml": "AML"
},
"exportAsZip": "Export as .zip",
"exportDpi": "Export DPI",
"exportDpiHelp": "Higher DPI makes sharper PNG/AML exports but increases file size and export time.",
"showBorder": "Show Border",
"previewScale": "Preview Scale",
"skipItems": "Skip Items",
Expand All @@ -92,6 +102,10 @@
"grid": "Grid"
},
"settings": "Presets",
"spoolPrintPresets": "Spool Print Presets",
"filamentPrintPresets": "Filament Print Presets",
"spoolImagePresets": "Spool Image Presets",
"filamentImagePresets": "Filament Image Presets",
"defaultSettings": "Default",
"addSettings": "Add New Preset",
"newSetting": "New",
Expand All @@ -100,13 +114,25 @@
"deleteSettingsConfirm": "Are you sure you want to delete this preset?",
"settingsName": "Preset Name",
"saveSetting": "Save Presets",
"saveAsImage": "Save as Image"
"saveAsImage": "Save as Image",
"saveAsAmlLabels": "Save as AML (Labels)"
},
"qrcode": {
"button": "Print Labels",
"exportButton": "Export Labels",
"exportFilamentTitle": "Export Filament Labels",
"exportSpoolTitle": "Export Spool Labels",
"printFilamentTitle": "Print Filament Labels",
"printSpoolTitle": "Print Spool Labels",
"selectButton": "Export/Print",
"selectTitle": "Export / Print Labels",
"title": "Label Printing",
"template": "Label Template",
"filenameTemplate": "Filename Template",
"filenameTemplateTooltipSpool": "Use {} to insert values of the spool object as text. Refer to the label template rules and available tags for more details.",
"filenameTemplateTooltipFilament": "Use {} to insert values of the filament object as text. Refer to the label template rules and available tags for more details.",
"templateHelp": "Use {} to insert values of the spool object as text. For example, {id} will be replaced with the spool id, or {filament.material} will be replaced with the material of the spool. if a value is missing it will be replaced with \"?\". A second set of {} can be used to remove this. In addition, any text between the sets of {} will be removed if the value is missing. For example, {Lot Nr: {lot_nr}} will only show the label if the spool has a lot number. Enclose text with double asterix ** to make it bold. Click the button to view a list of all available tags.",
"templateHelpFilament": "Use {} to insert values of the filament object as text. For example, {id} will be replaced with the filament id, or {vendor.name} will be replaced with the vendor name. If a value is missing it will be replaced with \"?\". A second set of {} can be used to remove this. In addition, any text between the sets of {} will be removed if the value is missing. For example, {Article: {article_number}} will only show the label if a filament has an article number. Enclose text with double asterix ** to make it bold. Click the button to view a list of all available tags.",
"textSize": "Label Text Size",
"showContent": "Print Label",
"useHTTPUrl": {
Expand All @@ -127,12 +153,22 @@
},
"spoolSelect": {
"title": "Select Spools",
"description": "Select spools to print labels for.",
"description": "Select spools to export or print labels for.",
"searchPlaceholder": "Search vendor, filament, material, location, lot #",
"showArchived": "Show Archived",
"noSpoolsSelected": "You have not selected any spools.",
"selectAll": "Select/Unselect All",
"selectedTotal_one": "{{count}} spool selected",
"selectedTotal_other": "{{count}} spools selected"
},
"filamentSelect": {
"title": "Select Filaments",
"description": "Select filaments to export or print labels for.",
"searchPlaceholder": "Search vendor, name, material, article #",
"noFilamentsSelected": "You have not selected any filaments.",
"selectAll": "Select/Unselect All",
"selectedTotal_one": "{{count}} filament selected",
"selectedTotal_other": "{{count}} filaments selected"
}
},
"scanner": {
Expand Down
5 changes: 5 additions & 0 deletions client/src/App.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -194,7 +194,9 @@ function App() {
/>
<Route path="edit/:id" element={<LoadableResourcePage resource="spools" page="edit" />} />
<Route path="show/:id" element={<LoadableResourcePage resource="spools" page="show" />} />
<Route path="labels" element={<LoadablePage name="spoolLabels" />} />
<Route path="print" element={<LoadablePage name="printing" />} />
<Route path="export" element={<LoadablePage name="printingExport" />} />
</Route>
<Route path="/filament">
<Route index element={<LoadableResourcePage resource="filaments" page="list" />} />
Expand All @@ -208,6 +210,9 @@ function App() {
/>
<Route path="edit/:id" element={<LoadableResourcePage resource="filaments" page="edit" />} />
<Route path="show/:id" element={<LoadableResourcePage resource="filaments" page="show" />} />
<Route path="labels" element={<LoadablePage name="filamentLabels" />} />
<Route path="print" element={<LoadablePage name="filamentPrinting" />} />
<Route path="export" element={<LoadablePage name="filamentExport" />} />
</Route>
<Route path="/vendor">
<Route index element={<LoadableResourcePage resource="vendors" page="list" />} />
Expand Down
Loading