-
0074e82a2a
docs(wiki): activity-log explainability, dates/i18n, KP-300H barcode fix
julian
2026-06-19 11:41:27 +02:00
-
bbf61c48df
fix(ticket): 11-digit IDs — fix KP-300H barcode line-overflow
julian
2026-06-19 11:35:13 +02:00
-
00f3d141b6
feat: human + relative dates; fix language/theme toggle stale-context
julian
2026-06-19 11:14:06 +02:00
-
f31e57b4ae
feat: explainable activity log — reasons, subscriber names, snapshot gaps
julian
2026-06-19 10:57:17 +02:00
-
040c0ff4ca
feat: tabbed setup, user metadata, light theme, scoped shift history
julian
2026-06-19 10:09:18 +02:00
-
8444bf34c3
feat(web): pop-out modal forms for setup/subscriptions/roles
julian
2026-06-19 10:08:33 +02:00
-
808fb26ab6
feat(web): UI component layer + dark-theme reskin
julian
2026-06-19 10:07:39 +02:00
-
ef0ecadff9
fix(auth): block privilege escalation via role/user management
julian
2026-06-19 01:27:02 +02:00
-
d0841c8601
feat(auth): dynamic RBAC — composable roles + resource×CRUD permissions
julian
2026-06-19 01:19:28 +02:00
-
d71ba82999
feat(booth): payment receipt / exit voucher — transparency slip + CP852 fixes
julian
2026-06-18 20:46:38 +02:00
-
9c9f777784
docs(wiki): record the two configured printers (Cashino at lane, Rongta at booth)
julian
2026-06-18 20:05:40 +02:00
-
486f8deae6
fix(shift): update Z-report title to Albanian translation
julian
2026-06-18 20:04:13 +02:00
-
3e6773a6d5
fix(devices): Cashino printer — ping-only driver (no false status) + Albanian role wording
julian
2026-06-18 20:00:42 +02:00
-
cf1ff5676d
feat(tariff): V2 — legacy-parity pricing (time-of-day, category, seasonal, flat)
julian
2026-06-18 20:00:13 +02:00
-
91cc79b14e
feat(web): adopt TRM design-system tokens (tokens only)
julian
2026-06-18 19:46:56 +02:00
-
dfa76346d6
feat(tariff): complete the progressive ladder — require open-ended last block, hours-based composer
julian
2026-06-18 16:58:47 +02:00
-
c9a2ef81a9
fix(tariff): forbid backdated effectiveFrom — versioning was retroactive
julian
2026-06-18 16:58:36 +02:00
-
b8ddda86e7
feat(subscription): RFID enrollment, any-credential exit, prepaid booth handling
julian
2026-06-18 16:26:48 +02:00
-
bba988c4e8
feat(subscription): QR credentials — operator-choose (QR-only now), auto-generate, multi-month, printed card
julian
2026-06-18 14:48:38 +02:00
-
5697137c52
feat(subscription): rename permit→subscription + monthly pricing
julian
2026-06-18 13:15:04 +02:00
-
ca8c7f2fa2
fix(exit): stuck active session — paid ticket with no vehicle_exit
julian
2026-06-18 13:14:45 +02:00
-
f87e4c0d6b
feat(devices): live device-status footer across all categories
julian
2026-06-18 13:14:36 +02:00
-
4e2e4feedb
feat(shift): site-wide single-open shift + booth money-path gate
julian
2026-06-18 12:13:17 +02:00
-
48660d3ec8
docs(wiki): reconcile with session — booth console, i18n, live WS
julian
2026-06-18 11:50:58 +02:00
-
14c83e182a
feat(web): i18n with react-i18next — Albanian default, English second
julian
2026-06-18 11:47:39 +02:00
-
445bca0bf6
feat(auth): per-user UI language preference (sq default, en)
julian
2026-06-18 11:47:30 +02:00
-
062feeae2f
docs(wiki): update index + log for booth console, drawer, and tariff research
julian
2026-06-18 11:05:43 +02:00
-
50a3095ef3
feat(shift): cash drawer balance carried across shifts + admin cash movements
julian
2026-06-18 11:05:36 +02:00
-
eb3dc18e67
feat(booth): active sessions panel + audited barrier re-open
julian
2026-06-18 11:05:26 +02:00
-
06dab1e790
feat(booth): pay-on-foot at the booth — ticket lookup, pay, exit, voucher, snapshots
julian
2026-06-18 11:05:10 +02:00
-
9956488fd5
chore: removed graphify
julian
2026-06-18 11:03:45 +02:00
-
49df2015c8
feat(web): frontend foundation — Tailwind terminal theme, Query, Router, Zustand + live booth screen
julian
2026-06-18 11:00:42 +02:00
-
c2f06a5d2a
feat(server): live booth WebSocket feed (/api/ws)
julian
2026-06-18 11:00:22 +02:00
-
58d8f06ba0
docs(wiki): tariff research — legacy ParkSQL2017 schema, time-tiers & validation/sponsorship design
julian
2026-06-18 10:59:21 +02:00
-
71aaad03b9
exit: open free within entry-grace, no pay-station visit
julian
2026-06-17 12:17:28 +02:00
-
727c62da90
ticket: site metadata header + scannable Albanian ticket; widen barcode
julian
2026-06-17 12:17:21 +02:00
-
1efa77bf56
devices: pool-of-spaces model — drop lane, per-relay direction
camera-driver-and-wsl-net
julian
2026-06-16 20:29:38 +02:00
-
15d3e1ba08
update .gitignore and CLAUDE.md for graphify integration; add settings.json for pre-tool hooks
julian
2026-06-16 14:34:20 +02:00
-
ff3b011fe0
qr-reader: reply Connection: close (fixes ~10s beep delay)
julian
2026-06-16 12:56:10 +02:00
-
5705098054
devices: stub-access driver (bench-test flows without a relay)
julian
2026-06-16 12:50:05 +02:00
-
68d61f2d99
qr-reader: gee-qr-reader driver — assign in wizard, resolve lane by serial
julian
2026-06-16 12:36:58 +02:00
-
04135b27cf
qr-reader: register all server-language extensions (reader posts .jsp)
julian
2026-06-16 12:30:00 +02:00
-
392d44d842
server: GEE/Dingtian QR reader endpoint + synchronous ReadOutcome
julian
2026-06-16 12:12:09 +02:00
-
f67c1ead87
wiki: ER80 protocol = HTTP GET poll + JSON verdict (from QRCode SDK)
julian
2026-06-16 12:05:05 +02:00
-
bf37106c5c
wiki: ingest GEE-QR-ER80 QR access reader datasheet
julian
2026-06-16 08:22:23 +02:00
-
e579fe5b6e
server+web: capacity / FULL gate (occupancy fold + transient refuse)
julian
2026-06-16 08:13:06 +02:00
-
644bfa1462
server+web: shifts — open/close + signed Z-report (manned mode)
julian
2026-06-16 08:01:59 +02:00
-
3429642edb
permits: admin CRUD (route + UI)
julian
2026-06-15 19:53:03 +02:00
-
c24d99b0f4
server: permit entry/exit branch + read dispatcher
julian
2026-06-15 19:47:01 +02:00
-
b4d0dfadd6
tariff composer: admin publishes rate-card versions (pay station now operable)
julian
2026-06-15 19:35:33 +02:00
-
f18e28eeca
server: pay station + fee calc — full transient loop now passes
julian
2026-06-15 19:15:53 +02:00
-
a8c6d6e714
auth: JWT valid until logout (drop 8h expiry)
julian
2026-06-15 19:15:53 +02:00
-
2a36830880
server: exit flow (pay-on-foot validation)
julian
2026-06-15 18:57:14 +02:00
-
2696d281ce
server: transient entry flow (button -> ticket -> signed entry -> open)
julian
2026-06-15 18:32:40 +02:00
-
648d3254d6
wiki: valet / over-capacity mode; 'full' is a soft operator policy
julian
2026-06-15 18:32:40 +02:00
-
8c2cf93067
db: business-layer schema — ledger/device event split, tariffs, permits, sessions
julian
2026-06-15 18:13:35 +02:00
-
9a4c7ee27b
wiki: split signed business ledger from device telemetry
julian
2026-06-15 18:08:56 +02:00
-
8a8e74561d
wiki: design the business layer (session, tariff, permit, vision, shift, ops)
julian
2026-06-15 17:41:38 +02:00
-
2ab5a39a57
Permanent WSL2 dev fix for multi-subnet source-address trap
julian
2026-06-15 16:17:59 +02:00
-
fa65b2df86
Real Hikvision/Dahua camera driver; gate Backend-push-IP on capability
julian
2026-06-15 16:17:49 +02:00
-
59bfe2013f
Event log: resolve input_received lane from the firing device
main
julian
2026-06-15 12:51:21 +02:00
-
f5fd61984a
Dingtian web password: set the admin's chosen password, verified
julian
2026-06-15 12:26:34 +02:00
-
7db5cfa0e4
Dingtian: close password-less string-protocol relay-fire hole
julian
2026-06-15 11:29:55 +02:00
-
add5fc0166
Append-only signed event log; persist Dingtian input pushes
julian
2026-06-15 11:29:23 +02:00
-
39d4bac419
Setup: manage multiple device instances per category (add/remove)
julian
2026-06-14 20:39:39 +02:00
-
b2a0471b08
Rongta 80mm printer: driver, role-based failover, live status monitoring
julian
2026-06-14 20:26:45 +02:00
-
2a86e578a8
Dingtian harden(): rotate the admin/admin web login (cosmetic)
julian
2026-06-14 19:00:42 +02:00
-
382c32f2bc
Setup wizard: show + override the backend push IP (multi-NIC hosts)
julian
2026-06-14 18:47:23 +02:00
-
7fd407ac82
Harden Dingtian: authenticated binary relay + disable unused channels
julian
2026-06-14 18:34:35 +02:00
-
0375227a16
Setup wizard: Test connection + Save & configure
julian
2026-06-14 16:59:36 +02:00
-
3294f188dd
Dingtian input push: HTTP Digest auth + auto-config on assign
julian
2026-06-14 16:39:08 +02:00
-
23919164ee
Dingtian input HTTP-push to backend (no polling)
julian
2026-06-14 15:10:50 +02:00
-
355026dcf7
Remove UHPPOTE/ZKTeco; Dingtian is the only access driver
julian
2026-06-14 14:28:52 +02:00
-
1b55e2034d
Dingtian relay driver — resolves the ticket-first entry blocker
julian
2026-06-14 14:15:00 +02:00
-
4319fb86dc
wiki: Dingtian relay decision, HTTP-over-MQTT, unmanned direction
julian
2026-06-14 13:27:01 +02:00
-
dbf1fa17d7
wiki: document dev environment (WSL networking, workflow)
julian
2026-06-14 13:09:35 +02:00
-
6df9927b94
Add root
pnpm seed:admin script
julian
2026-06-14 11:32:21 +02:00
-
0a8258a672
seed-admin: prompt for username (default "admin")
julian
2026-06-14 11:31:03 +02:00
-
2d55d40405
Fix dev server hang (broken dev script + IPv6 proxy stall)
julian
2026-06-14 11:27:07 +02:00
-
64d5e45f11
Cookie-based auth/authz with CSRF; remove auth bypass
julian
2026-06-14 10:45:38 +02:00
-
77606da2c9
UHPPOTE hardware bring-up + entry-flow blocker
julian
2026-06-14 10:29:43 +02:00
-
a0e0fd9118
Add device discovery (UHPPOTE LAN scan) to setup
julian
2026-06-14 08:21:27 +02:00
-
7438c0bdc2
Add real UHPPOTE access driver via official
uhppoted lib
julian
2026-06-14 08:12:27 +02:00
-
72ba4099ea
Device-agnostic driver registry + first-run setup
julian
2026-06-14 07:59:46 +02:00
-
7de5c74500
wiki: record JWT key open question; defer ESP32 controller
julian
2026-06-14 07:45:14 +02:00
-
94dd3fcff4
Harden JWT auth: require strong secret, expire tokens
julian
2026-06-14 07:42:22 +02:00
-
bfe64032d8
Initial scaffold: Turborepo monorepo + design wiki
julian
2026-06-14 00:34:11 +02:00