POST .../auto-generate/interpret parses NL conditions into a clamped
AutoLayoutRequest via AiTextRouter (Claude, injection-guarded JSON-only
prompt; degraded:true fallback keeps manual form authoritative).
auto-generate?ai=true attaches metric-grounded pros/cons per option
(generation never blocked by AI failure). AutoLayoutDialog gains an NL
input bar + interpreted-note + AI summary cards with WISE AI label.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
auction/visitor/marketing sample data + cms.css headers now state the
real wiring status (live API primary, samples are degraded fallback
only; G-04 SMTP follow-up noted). Mark hygiene item resolved in
GAP_AUDIT.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Replace hand-rolled zebra tables with KxDataTable (sort/filter/CSV,
per-column control) on HolidayAdminPage, ProgramAdminPage and
RulesetVersionsPage. Manage columns excluded from CSV/sort/search;
empty states delegated to the table.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Replace hardcoded TENANTS array and disabled add button with live
GET/POST /api/admin/tenants via react-query: list states, create modal
(server-authoritative validation mirrored client-side), KxDataTable
search/sort/CSV. tenant.* i18n 17 keys x 4 locales (parity kept).
Mark G-01 resolved in GAP_AUDIT.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
EAS preview APK is staged at /opt/kintex/downloads and reinjected into the
web root during deploy, keeping /downloads/kintex.apk (QR install page) alive.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Normalize 13 custom page roots to the .kx-page canon (flex:1, min-width:0,
overflow-y:auto) fixing right-side dead space and bottom clipping inside the
shell content flexbox; add missing narrow-width breakpoints to settlement KPIs
and hall-assignment forms. No visual redesign - WISE shell and kx tokens intact.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Remote main was force-rewritten by the deploy pipeline into a single snapshot
commit built from local 0add2cd/490b723. Local HEAD supersedes it (deliverables
docs, icons.tsx, title-icon sweep, gitignore, solution-name fix), so this merge
keeps the local tree verbatim while preserving the remote commit in history.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
- PublicShell: track tabs get icons + title tooltips (right-aligned), login link restored at >=768px
- VisitorTrackPage: wayfinding/checkin CTAs point to #guide/#transport//tickets/lookup instead of /login
- accent buttons: enforce --color-on-accent (white text) across approval/docs/home/movein/schedule/work/public
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
KintexPrincipal.hasAccess/roleFor ignored global role_code=ADMIN, so
admin@ users got 403 on all event-scoped endpoints. Add isAdmin() and
treat ADMIN as hall-manager equivalent (all-event read + approve).
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
- HomePage: wire fetchHolidaySet, is-holiday cell class + holiday name label
- home.css: is-holiday red daynum, kx-home__cal-holiday-name, neutral-100 grid lines
- PublicShell: absorb 3-track switcher into single top header (COEX 1-frame), drop dark topbar
- public.css: remove .kxp-topbar styles, tracktabs bar/menu variants
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Root cause: dark theme remaps --color-white to --dk-surface (a dark color),
so every 'color: var(--color-white)' on a colored background (primary/error/
success buttons, badges, chips, hero CTAs) rendered dark/invisible text in
dark mode (e.g. '등록 신청' blue button showed navy text).
Add always-white --color-on-accent token and repoint 77 text-color usages
across 28 files to it. Background/border usages of --color-white untouched
(they legitimately flip to dark surface). Full-CSS audit applied.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Root cause of persistent Tomcat cat favicon: public/favicon.ico was the
Tomcat default (21630 bytes), shipped by every build; browsers prefer
/favicon.ico over the correct favicon.png. Regenerate favicon.ico from the
KINTEX wordmark PNG (multi-size 16/32/48/64) and bump cache-bust to v3.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
- icons.tsx: new IconShieldCheck (stroke/line, 24 viewBox standard)
- OtpChallengePanel: shield badge above 2차 인증 title (was icon-less/bare)
- login.css: .kx-otp__badge circular primary-tinted badge
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
- ExhibitionSchedulePage MiniCalendar: pass/receive holidays prop, apply
is-holiday class + title/aria per date cell
- schedule.css: neutral-200 border on kx-cal cells; is-holiday cells in error color
- mobile.css: disabled CTA label neutral-500 (contrast fix)
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>