Repository navigation
feat: operator print station (locked print-only mode with scanner input) - #6
Merged
Merged
Conversation
…cing Add StationConfigLoader (station.json next to the labels, a folder, a single label or the ProgramData policy file), validated with StationConfig.* message keys; StationPin (PBKDF2-SHA256 hash and constant-time verify); and the UI-free ScanSequencer that turns Enter, Tab and Shift+Tab into field moves, print and label selection.
A locked, print-only station window with label tiles and search, large prompt fields with scanner input, quantity limits, live preview and a big plain-words printer status. Printing goes through IPrintService with the status check on, then the prompts reset keeping the configured values. Exit is PIN-gated with a lockout. Entry points: --station, --station-pin and two File menu items. Strings in en and es.
Add docs/print-station.md (entry points, station.json schema, problem keys, status meanings, PIN), a decisions entry, the README feature rows and sections in English and Spanish, and the changelog entry.
This was referenced Oct 24, 2026
Collaborator
Author
|
CI note: the one failure on deeed47 is Generated by Claude Code |
glenntosco
added a commit
that referenced
this pull request
Oct 27, 2026
feat: operator print station (locked print-only mode with scanner input)
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.
Requested by Glenn · project thread
What changed and why
Assessment item 9. Stacks on #5 (printer status): merge #5 first and GitHub retargets this to
main.A print station: a locked, print-only screen for warehouse operators, opened with
Rotula.exe --station <folder | station.json | label>or File > Open print station.... Labels appear as large tiles with search; the label's prompts become large fields that take keyboard-wedge scanner input; printing goes through the existingIPrintServicepath with the~HSstatus check; the result is shown in large plain words. No menus, design tools or file dialogs. Leaving needs a PIN when one is set.Rotula.Files.Station):StationConfigLoaderreadsstation.jsonfrom a folder, a given file, next to a single label, or%ProgramData%\Rotula\station.json(--stationwith no path). Allowed labels and scan keys, named printers (Windows queue or TCP), printer per label or default, copy defaults and limits, data merge on/off, kept values, print on last scan, scan to select, full screen. Unknown settings are rejected; every problem is aStationConfig.*message key with setting and line.StationPinstores a PBKDF2-SHA256 hash (600,000 iterations, random salt), constant-time check, framework only. Created with File > Create print station PIN... orRotula.exe --station-pin. Five wrong PINs lock the box for 30 seconds.ScanSequencer. Enter/Tab validates against the prompt rules (required, length, pattern) and advances, Shift+Tab goes back, the last scan prints or moves to Print. Scanning a label's key opens that label.docs/print-station.md(fullstation.jsonschema), decisions entry, README (en/es), CHANGELOG.How it was tested
StationConfigTests: loading, defaults, overrides, every validation key, resx coverage of the keys.StationScanTests: PIN hash/verify, scan sequencing, scan-to-select.AppStationTests: view-model flow with a fake print service (advance and print, reset with kept fields, refused scan, held back, verified, not verified, fault, copy limit, no printer, data merge on/off, PIN-gated exit with lockout, command-line parsing, designer menu, PIN tool).Checklist
Strings.en.resxandStrings.es.resxCHANGELOG.mdupdatedNotes
station.jsoncan remove it, and Windows key / Ctrl+Alt+Del are not blocked). For a fully locked PC, use Windows Assigned Access withRotula.exe --station; the docs say so."checkStatus": falseturns it off per printer.Generated by Claude Code