Commit Graph
134 Commits
Author SHA1 Message Date
jessikittyandClaude Opus 5 3b6cb77388 Add /admin/labels/dymo
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Vunz4VLxAYDBnU5tLciLDC
2026-10-13 11:01:05 +11:00
jessikittyandClaude Opus 5 7e74ee56ed Gang drawer labels onto Dymo die-cut stock
Stock presets, column packing, 300dpi rendering and a PDF whose page size
is exactly the sticker size. Labels are drawn by tape_printer.render_fixed
so they match the tape-printed ones.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Vunz4VLxAYDBnU5tLciLDC
2026-10-13 11:00:34 +11:00
jessikittyandClaude Opus 5 6a5a6eafff Register the Dymo blueprint
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Vunz4VLxAYDBnU5tLciLDC
2026-10-13 10:59:34 +11:00
jessikittyandClaude Opus 5 085fe1d701 Tape page: combine/split buttons, text size slider, print guard
Tick labels under the preview to put them on one label; the grouping is
rebuilt from the whole plan, not just the twelve previewed. Text size
gains a slider and Normal/Large/Huge/Max presets. The print button
disables itself after a click so a double-click can't spend the tape
twice.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Vunz4VLxAYDBnU5tLciLDC
2026-10-13 10:31:25 +11:00
jessikittyandClaude Opus 5 fbfd66d889 Hand-built label groups, and text that grows when you ask it to
parse_group_spec / spec_from_groups let the page combine any parts onto
one label, and plan_groups never breaks a hand-made group up.

Text size now goes to 3x and means it: the name is sized first, the
image shrinks out of its way, and the floor no longer rises with the
setting - which is what truncated long names at large sizes. The meta
line takes the leftover room instead of pushing itself off the label.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Vunz4VLxAYDBnU5tLciLDC
2026-10-13 10:30:10 +11:00
jessikittyandClaude Opus 5 fb59530f0e Send tape jobs paced, and carry the manual grouping through
Print, preview, PDF and the redirect back all honour a groups= spec, so
a hand-built label survives printing instead of reverting to drawers.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Vunz4VLxAYDBnU5tLciLDC
2026-10-13 10:28:09 +11:00
jessikittyandClaude Opus 5 deb009b80e Treat "busy" as retryable and pace jobs behind the printer
The VC-500W accepts one job at a time; anything sent while the tape is
moving comes back server-error-busy. Add IPPBusy, wait_until_idle and
print_job_paced so a batch goes through instead of failing from the
second label on.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Vunz4VLxAYDBnU5tLciLDC
2026-10-13 10:27:14 +11:00
jessikittyandClaude Opus 5 041eb60485 Document job pacing, manual label combining and text size
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Vunz4VLxAYDBnU5tLciLDC
2026-10-13 10:26:06 +11:00
jessikitty d2c330a4bc Add the default label size setting 2026-10-12 22:45:18 +11:00
jessikitty cfcad5b071 Save a default label size in label settings 2026-10-12 22:44:45 +11:00
jessikitty b4bc31556b Label size controls, per-label preview with its mm size 2026-10-12 22:43:39 +11:00
jessikitty b5a639c737 Plan the run as physical labels, not one per part
A drawer with two part types is one label, so the page, the preview, the
print loop and the PDF all work from plan_groups rather than iterating
the selection. The preview takes the parts that share a label, and the
page reports how much tape the run will use.
2026-10-12 22:42:49 +11:00
jessikitty d86a71de67 Fixed 40 x 15mm drawer labels, 40 x 20mm for a shared drawer
Drawer labels are now a set physical size rather than however long the
text happens to be:

  one part type in the drawer    40 x 15 mm
  two part types                 40 x 20 mm

They lie across the tape, so the 40mm spans the width and each label only
costs its height in tape length - 1.5m per 100 standard labels instead of
4m. That needs 50mm tape, which is now the default; a narrower tape is
detected and warned about rather than silently clipping.

Two part types in one drawer are matched on the location field and
combined onto a single taller label. Nothing is ever dropped: in
"always 40 x 15" a shared drawer simply yields two labels, and a third
part type grows the label by 5mm rather than vanishing.

Part names are wrapped to two lines and the type auto-sized to fit, so
"Plate, Modified with Clip" prints in full instead of truncating.

"Fit the tape width" keeps the previous content-sized behaviour.
2026-10-12 22:42:01 +11:00
jessikitty ba11a52909 Add a default tape orientation setting 2026-10-12 22:14:01 +11:00
jessikitty 432bd5b219 Send the options marker from the sheet print form 2026-10-12 22:13:34 +11:00
jessikitty 4f26360cf2 Send the options marker, warn on an empty label 2026-10-12 22:12:55 +11:00
jessikitty 3b48935204 Save a default tape orientation in label settings 2026-10-12 22:12:17 +11:00
jessikitty 9406de237d Keep tape options across the print redirect, honour saved rotation
Printing redirected back to a bare tape page, so every option - rotation
most visibly - reverted to the default the moment you pressed Print.
Carry the chosen options through the redirect instead.

Also read tape_rotate_default so an untick can be made permanent in
Settings; it only applies to a fresh arrival, never over an explicit
choice on the page.
2026-10-12 22:11:09 +11:00
jessikitty 5319870a7c Fix: unticking every sheet field silently reset to the defaults
Same absent-checkbox bug as the tape page, caught alongside it. The
hidden form marker lets an empty field list be honoured as a real
choice instead of being treated as "nothing was submitted".
2026-10-12 22:09:41 +11:00
jessikitty 4a1bfc4acd Fix: unticking "Rotate for tape feed" had no effect
An unticked checkbox is absent from a form submission entirely, so
"rotate unticked" and "rotate never mentioned" arrived at the parser
looking identical - and rotate defaults to on, so it snapped straight
back every time. Add a hidden marker the options form always sends, so
absent-but-submitted can be read as unticked.

Same bug silently reset the field list when every field was unticked;
that is fixed by the same marker. rotate_default lets a saved site-wide
preference apply on a fresh arrival without overriding an explicit
untick on the page.
2026-10-12 22:08:51 +11:00
jessikitty bad4787e00 Document the catalogue sync, tape printing and the skin 2026-10-12 21:33:41 +11:00
jessikitty b8571697dd Apply catalogue skin to the label form 2026-10-12 21:33:06 +11:00
jessikitty dea750927c Apply catalogue skin to the categories page 2026-10-12 21:32:42 +11:00
jessikitty 86b3f5a481 Add tape printer settings panel and catalogue skin 2026-10-12 21:32:14 +11:00
jessikitty 70443028e3 Reskin label list and add tape printing entry points 2026-10-12 21:31:49 +11:00
jessikitty 6433f1b172 Persist tape printer settings alongside sheet defaults 2026-10-12 21:31:09 +11:00
jessikitty f86efd875d Create parts catalogue tables at boot 2026-10-12 21:30:13 +11:00
jessikitty d455647a18 Register catalogue and tape blueprints and models 2026-10-12 21:29:57 +11:00
jessikitty f8c53e91ad Add parts catalogue migration script 2026-10-12 21:29:32 +11:00
jessikitty 60f83fc002 Add tape printing page with live preview and printer probe 2026-10-12 21:29:20 +11:00
jessikitty b1c071ff88 Add catalogue browse page with the Update button 2026-10-12 21:28:45 +11:00
jessikitty ee8806c2a6 Add shared catalogue header and tab strip 2026-10-12 21:27:57 +11:00
jessikitty dc4b9c90fb Add dense catalogue skin for the labelling pages 2026-10-12 21:27:47 +11:00
jessikitty 92365d3541 Add tape printing blueprint (preview, probe, print, PDF) 2026-10-12 21:27:05 +11:00
jessikitty 41ea7cab3b Add parts catalogue blueprint (browse, update, import, map) 2026-10-12 21:26:32 +11:00
jessikitty 7d32ad8fd6 Add 313dpi continuous-tape rendering for the VC-500W 2026-10-12 21:26:02 +11:00
jessikitty 832ab97d08 Add minimal IPP client for AirPrint label printers 2026-10-12 21:25:12 +11:00
jessikitty f6f1f4e2bc Add the Update button: Rebrickable CSV dump sync 2026-10-12 21:24:28 +11:00
jessikitty 63c3ece271 Add local Rebrickable catalogue mirror models 2026-10-12 21:23:54 +11:00
jessikitty 9d7fb66c6a Document the parts labelling feature 2026-10-03 00:59:20 +10:00
jessikitty 8fa0e7e4ef Add Parts Labels to the admin menu 2026-10-03 00:58:58 +10:00
jessikitty dcafe2b408 Create part label tables at boot 2026-10-03 00:58:15 +10:00
jessikitty 1046318caf Register parts labels blueprint, models and uploads/parts folder 2026-10-03 00:57:58 +10:00
jessikitty 88fdfe0169 Add printable label sheet template 2026-10-03 00:57:26 +10:00
jessikitty e36331e2d6 Add label settings page 2026-10-03 00:56:52 +10:00
jessikitty a4c760beac Add category management page 2026-10-03 00:56:37 +10:00
jessikitty a7ba8e511e Add label create/edit form 2026-10-03 00:56:17 +10:00
jessikitty 527f354f4a Add parts labels browse page 2026-10-03 00:55:54 +10:00
jessikitty 900edea065 Add admin-only parts labels blueprint 2026-10-03 00:55:15 +10:00
jessikitty b0614a11f7 Add label sheet geometry, layout engine and optional PDF export 2026-10-03 00:54:25 +10:00