Commit Graph
1604 Commits
Author SHA1 Message Date
Simo e1b31ff773 feat(housekeeping): deliver people account workflows 2026-08-29 11:45:50 +02:00
Simo 7920d4f46c fix(housekeeping): complete people read fidelity
CI / check (pull_request) Successful in 31s
CI / deploy (pull_request) Skipped
CI / release (pull_request) Skipped
2026-08-29 10:34:44 +02:00
Simo d1382c839e fix(housekeeping): harden people read boundaries 2026-08-29 02:13:53 +02:00
Simo e3f8b51d31 feat(housekeeping): model people workflows 2026-08-29 01:17:51 +02:00
Simo c325c53774 fix(housekeeping): harden system workflow boundaries
CI / check (pull_request) Successful in 33s
CI / release (pull_request) Skipped
CI / deploy (pull_request) Skipped
2026-08-29 00:25:47 +02:00
Simo 3788ecd9f1 feat(housekeeping): deliver system vertical 2026-08-28 23:31:47 +02:00
Simo 0117b45d74 fix(housekeeping): make route matching deterministic
CI / check (pull_request) Successful in 29s
CI / release (pull_request) Skipped
CI / deploy (pull_request) Skipped
2026-08-28 21:55:07 +02:00
Simo e5c230ba35 feat(housekeeping): dispatch canonical domain routes 2026-08-28 21:35:08 +02:00
Simo 2970dff563 fix(housekeeping): harden readonly schema facade
CI / check (pull_request) Successful in 28s
CI / deploy (pull_request) Skipped
CI / release (pull_request) Skipped
2026-08-28 20:58:14 +02:00
Simo 139e8cfc3a Merge branch 'main' of https://gitlab.epicnabbo.nl/remco/EpicNext-Cms into codex/housekeeping-complete 2026-08-28 20:21:13 +02:00
openhands 944e8ff1d8 fix: harden update pipeline and restore a clean production build
CI / check (push) Successful in 29s
CI / release (push) Skipped
CI / deploy (push) Successful in 1m0s
- update-Nitrov3.sh: build CMS into .next-staging and swap atomically so a
  failed build never takes the live site down; auto-merge new variables
  from .env.example; validate env for duplicates/broken lines; restart the
  emulator/CMS only when rebuilt or unhealthy; fix step renumbering
- next.config.ts: support NEXT_DIST_DIR for staged production builds
- fix all TS errors (unused imports, missing tryDownloadCandidates helper)
  so tsc and the production build pass clean
- add Dockerfile/.dockerignore and switch docker-compose to a CMS container
- include prevailing UI/refactor changes (SurfaceCard, ticketing, tsconfig)
2026-08-28 12:48:04 +02:00
Simo 01dceac073 fix(housekeeping): close schema reflection escapes
CI / check (pull_request) Successful in 30s
CI / release (pull_request) Skipped
CI / deploy (pull_request) Skipped
2026-08-27 20:31:10 +02:00
Simo 7895188b56 fix(housekeeping): isolate executable command schemas 2026-08-27 19:55:57 +02:00
Simo 00618fb2a3 fix(housekeeping): harden command dispatch boundaries 2026-08-27 19:32:19 +02:00
Simo 796d009c07 fix(housekeeping): harden audited command dispatch 2026-08-27 18:58:14 +02:00
Simo 6aed71a8b2 feat(housekeeping): dispatch audited commands 2026-08-27 18:30:44 +02:00
Simo ca666d9f90 fix(housekeeping): contain provider failures 2026-08-27 18:11:26 +02:00
Simo 4c399873d1 feat(housekeeping): orchestrate partial providers 2026-08-27 18:02:23 +02:00
Simo 60968409aa fix(housekeeping): count preference payload bytes 2026-08-27 17:53:16 +02:00
Simo 4e0bf598ed fix(housekeeping): harden preference persistence 2026-08-27 17:44:53 +02:00
Simo 64bb230de5 Merge branch 'main' of https://gitlab.epicnabbo.nl/remco/EpicNext-Cms into codex/housekeeping-complete 2026-08-27 17:25:31 +02:00
openhands 750fcb2e5c refactor: resolve hotel name directly from HOTEL_NAME env
CI / check (push) Successful in 41s
CI / release (push) Skipped
CI / deploy (push) Successful in 1m1s
resolveHotelName() now returns env.HOTEL_NAME directly — the single source
of truth. The CMS hotel_name site setting and its DEFAULTS entry are removed
as dead code since they no longer influence the displayed name.

Call sites are unchanged (still await resolveHotelName()); only the lookup
behind it is gone, so the public site always shows the configured env name
with no DB round-trip and no preset.
2026-08-27 16:42:12 +02:00
openhands 164a4f4ef6 refactor: remove hotel-name fallback, fail fast when unconfigured
CI / check (push) Failing after 39s
CI / release (push) Skipped
CI / deploy (push) Skipped
Drop the hardcoded FALLBACK_HOTEL_NAME ("Atom") preset and the brand.ts
module. HOTEL_NAME is now a required env var: if it (and the CMS hotel_name
setting) is missing the site fails validation at startup/build with a clear
message instead of silently rendering a placeholder hotel name.

resolveHotelName() resolves CMS hotel_name -> required HOTEL_NAME only.
Callers that used the preset (api/home route catch branch, CMS settings form
default, mobile-nav/logo-generator prop defaults) now use the configured name
or an empty default; the real name is already passed in by server parents.
2026-08-27 16:35:00 +02:00
openhands 555c783d55 refactor: consolidate card components into a single SurfaceCard
CI / check (push) Successful in 41s
CI / release (push) Skipped
CI / deploy (push) Successful in 1m22s
Replace the three near-identical public card primitives (ContentCard for
content pages, SectionCard for auth/account, and the new SurfaceCard) by
merging SectionCard into SurfaceCard, which now supports an optional header
(title/icon/action). Every remaining ad-hoc inline `rounded-2xl border`
card across (site) is converted to SurfaceCard, preserving each card's unique
visuals (background images, blur, gradients) via the style passthrough.

Net result: the public site uses exactly two card components — ContentCard
(CMS/content pages) and SurfaceCard (everything else) — and the shadcn Card
in components/ui/card.tsx is left untouched for admin.

Also deletes the now-unused components/home-section.tsx.
2026-08-27 16:17:09 +02:00
openhands ed6eaf33a0 style: convert remaining ad-hoc inline cards to shared SurfaceCard
CI / check (push) Successful in 40s
CI / release (push) Skipped
CI / deploy (push) Successful in 1m11s
Introduce components/surface-card.tsx (Card + CardBody) mirroring the
.content-card / SectionCard token set, and use it on the (site) pages that
still hand-rolled card markup: me, search, and verify. This puts every
public page on one of the shared card components (ContentCard, SectionCard,
or SurfaceCard) for consistent radius/shadow/border.
2026-08-27 15:59:15 +02:00
openhands a3e3356ea7 style: align both card systems to shared design tokens
CI / check (push) Successful in 37s
CI / release (push) Skipped
CI / deploy (push) Successful in 58s
Unify the public site by making SectionCard and the verify status card use
the same --radius-lg / --shadow-card tokens and primary-tint header as the
existing CSS .content-card used by all content pages. This makes the entire
(site) group visually consistent without rewriting every page, and keeps the
shadcn Card in components/ui/card.tsx (used by admin) intact.
2026-08-27 15:51:32 +02:00
openhands b3340dbfdf style: unify remaining site card headers with SectionCard
CI / check (push) Successful in 35s
CI / release (push) Skipped
CI / deploy (push) Successful in 57s
Convert the settings page neon gradient section headers (blue/purple/green)
to the shared SectionCard, and replace the verify page's harsh multi-stop
status gradients with subtle status-tinted headers while keeping the
green/amber/red/blue semantics. The me page already used a consistent
rounded-2xl card style, so it needed no change.
2026-08-27 15:42:30 +02:00
openhands 087dd7d873 style: apply consistent professional layout to login page
CI / check (push) Successful in 35s
CI / release (push) Skipped
CI / deploy (push) Successful in 52s
Reuse the SectionCard component to unify the neon section headers, center
the page in a max-w-6xl container, and give the welcome panel and login
card consistent rounded corners and subtle shadows, matching the home
and register pages.
2026-08-27 15:32:32 +02:00
openhands 9f0ee74ce8 style: apply consistent professional layout to register page
CI / check (push) Successful in 34s
CI / release (push) Skipped
CI / deploy (push) Successful in 1m4s
Reuse the SectionCard component to unify the green/purple/blue neon
section headers, center the page in a max-w-6xl container, and give the
welcome panel and form card consistent rounded corners and subtle
shadows, matching the home page.
2026-08-27 15:24:59 +02:00
openhands 005af25773 style: make home page layout more professional
CI / check (push) Successful in 34s
CI / release (push) Skipped
CI / deploy (push) Successful in 1m1s
Unify the per-section neon gradient headers (blue/green/purple) into a
single consistent SectionCard component with a calm surface header and
hairline divider, constrain the page to a centered max-w-6xl container,
and soften the hero/cards with rounded-3xl corners and subtle shadows.
2026-08-27 15:21:25 +02:00
openhands 89c1751e79 refactor: extract shared login credential verification into auth/login-core
CI / check (push) Successful in 35s
CI / release (push) Skipped
CI / deploy (push) Successful in 58s
The username normalization, dummy-hash constant, password check and
email-verification gate were duplicated between precheckLogin and the
NextAuth credentials authorize handler. Move them into a single
login-core module so both paths share one source of truth and stay
consistent.
2026-08-27 15:17:54 +02:00
openhands e3ed37d170 build: align pinned Node.js version with CI runtime (26.8.1)
CI / check (push) Successful in 28s
CI / release (push) Skipped
CI / deploy (push) Successful in 1m1s
.nvmrc and package.json engines.node must match the exact version the
CI environment runs, otherwise scripts/check-node-toolchain.mjs fails
the strict equality assertion.
2026-08-27 15:12:03 +02:00
openhands ac5cd6bc3f fix: normalize username and password with NFC in login flow
CI / check (push) Failing after 5s
CI / release (push) Skipped
CI / deploy (push) Skipped
precheckLogin already normalized the username with NFC, but the
NextAuth credentials authorize handler only trimmed it. This caused a
mismatch for accounts with accented/non-ASCII usernames: the precheck
passed while the actual sign-in lookup found no user and returned
'invalid username or password'.

Also normalize the password to NFC in both the precheck and the
authorize handler to match how register.ts hashes it.
2026-08-27 15:09:43 +02:00
Simo 2eb0456999 feat(housekeeping): persist operator preferences 2026-08-26 22:17:52 +02:00
Simo 86a2d9d069 fix(housekeeping): preserve pathological operation errors 2026-08-26 22:08:56 +02:00
Simo b5957015e7 fix(housekeeping): preserve frozen operation errors 2026-08-26 22:07:00 +02:00
Simo 483d5b8c67 fix(housekeeping): restore audit search interpolation 2026-08-26 22:04:16 +02:00
Simo 21cd88ccfd fix(housekeeping): preserve audit failure evidence 2026-08-26 22:03:02 +02:00
Simo 89dec9da05 feat(housekeeping): correlate command audit evidence 2026-08-26 21:56:51 +02:00
Simo 7c93d3e766 feat(housekeeping): add audit and preference storage 2026-08-26 21:42:14 +02:00
Simo bdb8f0b02b test(housekeeping): isolate request capability contexts 2026-08-26 21:28:26 +02:00
Simo edc165ba8d refactor(housekeeping): reuse request capability context 2026-08-26 21:20:12 +02:00
Simo cc6bb9a9a3 fix(housekeeping): preserve error correlation IDs 2026-08-26 21:09:18 +02:00
Simo b7edbca043 refactor(housekeeping): stabilize service contracts 2026-08-26 21:04:42 +02:00
Simo 67cb4b488d fix(housekeeping): satisfy ase route types 2026-08-26 20:52:13 +02:00
Simo a9bdd6bd5d fix(housekeeping): avoid ase preview self-redirect 2026-08-26 20:50:09 +02:00
Simo f72a2b6c74 refactor(housekeeping): adopt ase route namespace 2026-08-26 20:44:38 +02:00
Simo 74756dfed2 docs: plan complete ase housekeeping cutover 2026-08-26 20:26:19 +02:00
Simo d42cd2af53 docs: define complete housekeeping cutover 2026-08-26 20:08:42 +02:00
Simo d5eadeb3a7 Merge pull request 'feat: add housekeeping inventory foundation' (#51) from codex/housekeeping-foundation into main
CI / check (push) Successful in 28s
CI / release (push) Skipped
CI / deploy (push) Successful in 42s
Reviewed-on: #51
2026-08-26 19:50:40 +02:00