-
1addd22a24
fix: lock timeout 10s to match heartbeat interval
BOHA
2026-03-24 11:26:32 +01:00
-
3bc7fb6800
fix: lock heartbeat every 10s, timeout after 30s (was 2min/5min)
BOHA
2026-03-24 11:24:51 +01:00
-
9e6ce4359a
fix: use RichEditor with readOnly prop instead of raw HTML for locked/invalidated offers
BOHA
2026-03-24 11:23:34 +01:00
-
b1aaec4fb6
fix: read-only rich text — add word-break to prevent overflow from nbsp
BOHA
2026-03-24 11:19:19 +01:00
-
f9cb28afa0
fix: read-only rich text — use plain div instead of admin-form-input
BOHA
2026-03-24 11:15:51 +01:00
-
5593c2a229
fix: read-only rich text content overflowing container
BOHA
2026-03-24 11:14:24 +01:00
-
f8210d667f
fix: locked offers — selects, checkboxes, date pickers, rich editor all read-only
BOHA
2026-03-24 11:12:39 +01:00
-
0ad0e88853
feat: pessimistic locking for offer editing
BOHA
2026-03-24 11:08:41 +01:00
-
17da3b17c3
fix: scope page — logo inline with title in same flex row, matching page 1
BOHA
2026-03-24 10:52:29 +01:00
-
cb5c26c4b0
fix: scope page header — logo above header like page 1, not inside flex
BOHA
2026-03-24 10:48:04 +01:00
-
a8195d7d49
fix: move quotationNumber declaration before scope HTML usage
BOHA
2026-03-24 10:46:24 +01:00
-
ff05f98d14
fix: scope page header matches quotation page — title, number, project, valid until
BOHA
2026-03-24 10:45:05 +01:00
-
96cbaf3315
fix: stack item description fields vertically with flex column
BOHA
2026-03-24 07:54:10 +01:00
-
a866384f08
feat: add item_description field to offer items editor (matches PHP)
BOHA
2026-03-24 07:53:08 +01:00
-
34134c0e07
fix: dashboard attendance — format arrived_at as HH:MM matching PHP
BOHA
2026-03-24 07:51:48 +01:00
-
2fefdaf36a
fix: serialize dates as local time in JSON responses, not UTC
BOHA
2026-03-24 07:45:29 +01:00
-
8120f0a45e
fix: set TZ=Europe/Prague so new Date() returns local Czech time
BOHA
2026-03-24 07:41:58 +01:00
-
d92c5c56ac
fix: remove Content-Type header from logout request (no body to send)
BOHA
2026-03-23 20:46:29 +01:00
-
aec822adc2
fix: clearCookie must match setCookie options for browser to clear it
BOHA
2026-03-23 20:44:28 +01:00
-
04828fefe2
fix: logout deletes all tokens from same browser/IP, not just current
BOHA
2026-03-23 20:38:09 +01:00
-
f71ad6e2a8
fix: logout now properly cleans up session tokens
BOHA
2026-03-23 20:35:28 +01:00
-
456232cd82
fix: dashboard TOTP status always showing inactive
BOHA
2026-03-23 20:31:06 +01:00
-
33268b38ae
fix: TOTP login flow loses remember_me — sessions expire after 1 hour
BOHA
2026-03-23 20:28:54 +01:00
-
c4c4433561
feat: editable billing text on invoices
BOHA
2026-03-23 19:47:15 +01:00
-
2540efbec2
refactor: merge InvoiceCreate into InvoiceDetail (single page for create + edit)
BOHA
2026-03-23 19:34:16 +01:00
-
5285c3c7c9
fix: VAT select in invoices — use admin-form-select instead of admin-form-input
BOHA
2026-03-23 19:27:46 +01:00
-
d33c2b3416
fix: invoice numbering — use MAX from invoices table instead of sequence counter
BOHA
2026-03-23 19:25:16 +01:00
-
93ea9911f8
fix: invoice items table — match offer detail card style
BOHA
2026-03-23 19:22:01 +01:00
-
892d83cd90
feat: add drag-and-drop item reordering to invoice create and edit
BOHA
2026-03-23 19:18:01 +01:00
-
2b4a98b958
fix: save item position after drag-and-drop reordering
BOHA
2026-03-23 19:06:21 +01:00
-
bfb3a975ea
fix: restrict item drag to parent table bounds
BOHA
2026-03-23 19:04:55 +01:00
-
3bef879ff9
fix: move useSensors hook to component top level (React hooks rules)
BOHA
2026-03-23 19:03:38 +01:00
-
185157fe86
feat: offer items drag-and-drop reordering + fix scope template insertion
BOHA
2026-03-23 19:02:15 +01:00
-
95065f54eb
fix: offer scope sections — add blue EN / red CZ language badges on title labels
BOHA
2026-03-23 18:56:12 +01:00
-
bcad377f92
fix: dashboard — gate all sections by user permissions
BOHA
2026-03-23 18:51:29 +01:00
-
a1c70ba25f
fix: force all spinners inside buttons to 16px (admin-spinner-sm size)
BOHA
2026-03-23 18:48:06 +01:00
-
98454edcf1
fix: prevent buttons from resizing during loading state
BOHA
2026-03-23 18:46:18 +01:00
-
aeac76687b
fix: all item/sub-object schemas accept string numbers from form inputs
BOHA
2026-03-23 18:42:41 +01:00
-
a8a28d8472
fix: confirm modal — always use admin-btn-primary (admin-btn-danger has no CSS)
BOHA
2026-03-23 14:17:31 +01:00
-
040b41ed90
fix: pagination component — use correct CSS class names
BOHA
2026-03-23 13:59:49 +01:00
-
0b4b6b24e1
fix: attendance times showing +1 hour due to UTC timezone conversion
BOHA
2026-03-23 13:50:30 +01:00
-
bb0bf25ce0
fix: CSP and Permissions-Policy blocking GPS, geocoding, and map
BOHA
2026-03-23 13:44:50 +01:00
-
2718a7b716
fix: attendance admin — add user_name to records, fix Czech diacritics in table headers
BOHA
2026-03-23 13:41:55 +01:00
-
c817e004b7
feat: supplier name autocomplete on received invoices
BOHA
2026-03-23 13:32:38 +01:00
-
a4c4a377c9
fix: frontend VAT preview — extract VAT from inclusive amount, not add on top
BOHA
2026-03-23 13:27:50 +01:00
-
8b5f216960
fix: received invoices — amount field is VAT-inclusive, extract VAT from it
BOHA
2026-03-23 13:24:54 +01:00
-
fe12fde9db
fix: convert dates to yyyy-MM-dd when opening received invoice edit form
BOHA
2026-03-23 13:19:43 +01:00
-
9a0acb8983
fix: allow any authenticated user to list vehicles
BOHA
2026-03-23 13:12:22 +01:00
-
20c1aab14c
fix: use nodemailer address object for proper UTF-8 encoding in from name
BOHA
2026-03-23 12:55:32 +01:00
-
9f36ad0985
feat: configurable SMTP_FROM_NAME via .env (defaults to BOHA Automation)
BOHA
2026-03-23 12:52:21 +01:00
-
8a453deaac
feat: add email notification for new leave requests
BOHA
2026-03-23 11:54:29 +01:00
-
0baa604ade
fix: remove duplicate canSecurity declaration in Settings
BOHA
2026-03-23 11:43:27 +01:00
-
1a62b31cd2
fix: support PHP encryption format for TOTP secrets
BOHA
2026-03-23 11:42:32 +01:00
-
f40f9d2a4b
feat: wire up mandatory 2FA toggle in global settings
BOHA
2026-03-23 11:40:50 +01:00
-
2b42e636ae
chore: create Prisma migration baseline
BOHA
2026-03-23 11:09:12 +01:00
-
e0fbae1530
fix: received invoices — show skeleton only on initial load, not on sort/filter
BOHA
2026-03-23 11:03:22 +01:00
-
0ad88aa5ce
fix: invoice item schema accepts string numbers from form inputs
BOHA
2026-03-23 11:01:34 +01:00
-
d3a72c51a2
fix: table sort toggle — use single state object to prevent lost updates
BOHA
2026-03-23 10:58:56 +01:00
-
635c6fd0ff
fix: table sorting blocked by pointerEvents:none during loading
BOHA
2026-03-23 10:57:17 +01:00
-
56065c381b
fix: align useTableSort with PHP version — userClicked ref, nullable activeSort
BOHA
2026-03-23 10:53:26 +01:00
-
1a175e805b
fix: use vehicle initial_km as start_km for first trip record
BOHA
2026-03-23 10:49:42 +01:00
-
7ef25a077b
feat: add SPAYD QR payment code to invoice PDF
BOHA
2026-03-23 10:37:43 +01:00
-
47fb4dc8ac
feat: integrate ProjectFileManager into project detail page
BOHA
2026-03-23 10:22:10 +01:00
-
3c1a35ae9c
feat: add ProjectFileManager component with file browser UI
BOHA
2026-03-23 10:20:49 +01:00
-
b87081dd2c
feat: integrate NAS file operations with project CRUD
BOHA
2026-03-23 10:19:15 +01:00
-
49e668ee2a
feat: add project files REST endpoints with auth and audit logging
BOHA
2026-03-23 10:19:11 +01:00
-
ff26dc497d
feat: add NasFileManager service with security-hardened file operations
BOHA
2026-03-23 10:16:36 +01:00
-
373ea82279
fix: rewrite attendance print to match PHP design 1:1
BOHA
2026-03-23 09:39:31 +01:00
-
23ae832eeb
fix: attendance print - return proper data structure with records, leave balances, and fund stats
BOHA
2026-03-23 09:36:52 +01:00
-
8c1fd07293
feat: implement attendance admin print functionality
BOHA
2026-03-23 09:33:43 +01:00
-
ab71de78ce
fix: rewrite invoices PDF to match PHP POHODA-style design
BOHA
2026-03-23 09:22:55 +01:00
-
7a71d63f7f
chore: add TOTP encryption key rotation script
BOHA
2026-03-23 09:13:16 +01:00
-
bf9d54d9c0
test: add numbering tests
BOHA
2026-03-23 09:13:09 +01:00
-
071c36916b
test: add auth flow integration tests
BOHA
2026-03-23 09:13:05 +01:00
-
6618ef1abd
feat: add graceful shutdown handling (SIGTERM/SIGINT)
BOHA
2026-03-23 09:13:04 +01:00
-
5b56fc4dff
chore: add vitest testing infrastructure
BOHA
2026-03-23 09:13:01 +01:00
-
c0b8a94210
fix: resolve TypeScript compilation errors from service extraction
BOHA
2026-03-23 09:11:04 +01:00
-
28eb58946f
refactor: extract attendance business logic into attendance.service.ts
BOHA
2026-03-23 09:06:40 +01:00
-
0e9d30f5a8
refactor: extract orders business logic into orders.service.ts
BOHA
2026-03-23 09:04:03 +01:00
-
ba0e9617ad
refactor: extract invoices business logic into invoices.service.ts
BOHA
2026-03-23 09:04:02 +01:00
-
89fa3128cf
refactor: extract projects business logic into projects.service.ts
BOHA
2026-03-23 09:03:32 +01:00
-
dbf8749b37
refactor: extract users business logic into users.service.ts
BOHA
2026-03-23 09:03:31 +01:00
-
d26bbd8e7c
refactor: extract offers business logic into offers.service.ts
BOHA
2026-03-23 09:01:56 +01:00
-
2146696bc6
refactor: extract numbering logic into numbering.service.ts
BOHA
2026-03-23 09:00:07 +01:00
-
d2b22e9399
feat: add Zod validation schemas for all domain routes
BOHA
2026-03-23 08:57:38 +01:00
-
a4303b0188
feat: add Zod validation for auth endpoints
BOHA
2026-03-23 08:49:54 +01:00
-
7689b28d6d
security: timing-safe auth to prevent username enumeration
BOHA
2026-03-23 08:48:13 +01:00
-
333d1f7697
security: add request body size limits (1MB global, 10KB auth)
BOHA
2026-03-23 08:47:59 +01:00
-
8aa1d40ba1
security: add CSP (prod) and Permissions-Policy headers
BOHA
2026-03-23 08:47:16 +01:00
-
9b2da944b1
security: add stricter rate limit on login endpoint (20/min)
BOHA
2026-03-23 08:47:03 +01:00
-
4608494a3f
initial commit
BOHA
2026-03-23 08:46:51 +01:00