Commit Graph

  • 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