Traveler PDF (pdf/traveler.py): each work-order line now fits its own box. It shrinks down to 70% of its size, then is cut with "...". A long work order, operation or drawing no longer runs over the next QR code. The gap between boxes is 18 pt (was 12), a quiet zone for the kiosk scanner.
Work orders tab: card text wraps inside the card, the work order is 22 px (was 26), and cards are at least 340 px wide (was 240), one per row on a narrow screen.
New setting SESSION_DESK_MINUTES (default 60). Admin and Clerical sessions (admin, clerical, clerical_supervisor) wait that long before both the screen lock and the idle sign-out. It never shortens SESSION_LOCK_MINUTES or SESSION_IDLE_MINUTES.
Everyone else keeps 3 and 15 minutes.
GET /api/auth/me answers session.lock_minutes, and the browser's idle lock follows it.
The hidden-tab lock after a minute is unchanged.
Tests
Locally: server tests 5456 passed, 519 skipped (no PostgreSQL on this PC; CI runs them). ruff and mypy are clean. Frontend typecheck, eslint and vitest (304) pass.
New: test_traveler_fit.py (text fits), and test_sessions.py tests for the desk minutes (Clara, Leo, Ann, Mia at 59/61 minutes) and the shop 3 minutes. The two existing 3/15-minute tests now sign in as Wade (Warehouse), since Clara now gets 60.
Not run here: the PostgreSQL tests and Playwright e2e. CI covers both.
Not in this PR
#43 (Clerical sync by department) still needs checking in the rebuild.
Fixes #42, fixes #44, fixes #45.
## #42 Work-order codes overlap
- **Traveler PDF** (`pdf/traveler.py`): each work-order line now fits its own box. It shrinks down to 70% of its size, then is cut with "...". A long work order, operation or drawing no longer runs over the next QR code. The gap between boxes is 18 pt (was 12), a quiet zone for the kiosk scanner.
- **Work orders tab**: card text wraps inside the card, the work order is 22 px (was 26), and cards are at least 340 px wide (was 240), one per row on a narrow screen.
## #44 Packet tabs
- Materials now comes before Heat map. The rebuild has one tab order for every role.
## #45 Idle timeout for Admin and Clerical
- New setting `SESSION_DESK_MINUTES` (default 60). Admin and Clerical sessions (`admin`, `clerical`, `clerical_supervisor`) wait that long before both the screen lock and the idle sign-out. It never shortens `SESSION_LOCK_MINUTES` or `SESSION_IDLE_MINUTES`.
- Everyone else keeps 3 and 15 minutes.
- `GET /api/auth/me` answers `session.lock_minutes`, and the browser's idle lock follows it.
- The hidden-tab lock after a minute is unchanged.
## Tests
- Locally: server tests 5456 passed, 519 skipped (no PostgreSQL on this PC; CI runs them). ruff and mypy are clean. Frontend typecheck, eslint and vitest (304) pass.
- New: `test_traveler_fit.py` (text fits), and `test_sessions.py` tests for the desk minutes (Clara, Leo, Ann, Mia at 59/61 minutes) and the shop 3 minutes. The two existing 3/15-minute tests now sign in as Wade (Warehouse), since Clara now gets 60.
- Not run here: the PostgreSQL tests and Playwright e2e. CI covers both.
## Not in this PR
- #43 (Clerical sync by department) still needs checking in the rebuild.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
- Traveler: each work-order line shrinks, then clips, to fit its own box; 18 pt gap between boxes
- Work orders tab: card text wraps inside the card, smaller work order, wider cards
- Packet tabs: Materials before Heat map
- Sessions: SESSION_DESK_MINUTES (60) for Admin and Clerical lock and sign-out; /me answers
lock_minutes and the browser's idle lock follows it
Co-Authored-By: Claude Opus 5.5 <[email protected]>
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Fixes #42, fixes #44, fixes #45.
#42 Work-order codes overlap
pdf/traveler.py): each work-order line now fits its own box. It shrinks down to 70% of its size, then is cut with "...". A long work order, operation or drawing no longer runs over the next QR code. The gap between boxes is 18 pt (was 12), a quiet zone for the kiosk scanner.#44 Packet tabs
#45 Idle timeout for Admin and Clerical
SESSION_DESK_MINUTES(default 60). Admin and Clerical sessions (admin,clerical,clerical_supervisor) wait that long before both the screen lock and the idle sign-out. It never shortensSESSION_LOCK_MINUTESorSESSION_IDLE_MINUTES.GET /api/auth/meanswerssession.lock_minutes, and the browser's idle lock follows it.Tests
test_traveler_fit.py(text fits), andtest_sessions.pytests for the desk minutes (Clara, Leo, Ann, Mia at 59/61 minutes) and the shop 3 minutes. The two existing 3/15-minute tests now sign in as Wade (Warehouse), since Clara now gets 60.Not in this PR
🤖 Generated with Claude Code