feat(ui): app UX/UI redesign + marketing landing site
App (Vue SPA) — 100% presentational, global design-token rebuild in style.css + polished App/Login/Chat/MyBoard/Personas/Setup/Training. No logic/API/route/i18n changes (verified: build clean, 4/4 vitest, independent review PASS 5/5). website/ — new self-contained static marketing landing site (TH-primary + EN toggle, CSS chat mockup, Hallmark theme), verified responsive at 320-768 (no horizontal scroll). Pricing uses placeholders pending owner. Docs: engineering-log 2026-08-19 + HANDOFF updated. NOT pushed (push to main auto-deploys to EasyPanel production; operator approval + JWT_SECRET check required before deploy).
This commit is contained in:
@@ -24,6 +24,16 @@ filesystem JSON storage (no SQL). i18n TH/EN. No self-registration (admin provis
|
||||
- **user** (trainee) — trains against personas, own board.
|
||||
|
||||
## Current state — local code/security gate passed; production-operation gate pending
|
||||
> **2026-08-19:** app UX/UI redesign (8 files, 100% presentational: global design-token system
|
||||
> rebuild in `style.css` + polish of App/Login/Chat/MyBoard/Personas/Setup/Training) AND a new
|
||||
> self-contained marketing landing site (`website/index.html` + `main.css`, TH-primary with EN
|
||||
> toggle, CSS chat mockup) were built in parallel subagents. Frontend `vite build` clean, vitest
|
||||
> 4/4, independent reviewer PASS (5/5 checks), marketing site verified responsive at 320–768
|
||||
> (no horizontal scroll). **ALL UNCOMMITTED.** Pushing to `main` auto-deploys to EasyPanel — so
|
||||
> the push needs operator approval. Confirm production `JWT_SECRET` is set before deploying
|
||||
> (backend `validate_runtime_security` fails closed without a ≥32-char secret; that is the
|
||||
> existing production-operation gate, not a regression). See
|
||||
> `docs/engineering-log/2026-08-19-ux-redesign-and-marketing-site.md`.
|
||||
> **2026-08-18:** live-QA UX fixes landed (committed locally, not yet pushed): persona
|
||||
> replies can no longer leak raw JSON into the chat bubble; all persona openers are natural
|
||||
> greetings (wrong_text cools off only after the seller's first reply); and the chat now
|
||||
@@ -115,6 +125,13 @@ cd backend && uv run python run.py # Flask :5001
|
||||
Responsive CSS (640px, single-column, `flex-wrap`, `.btn-back`) is present + deployed.
|
||||
|
||||
## Next actions / backlog (also docs/FUTURE_WORK.md)
|
||||
- **2026-08-19 UX + marketing-site push (operator-approved):** the app UX/UI redesign (8 files)
|
||||
and new `website/` landing site are uncommitted on `main`. Commit + push ships the redesign to
|
||||
the live EasyPanel app AND adds the marketing site to the repo. **Confirm production
|
||||
`JWT_SECRET` is set (≥32 chars) in EasyPanel env before/with the push** (backend fails closed
|
||||
without it). Then re-verify the live bundle. Optionally deploy the `website/` landing page as a
|
||||
standalone static site (e.g. nginx / EasyPanel static or another host) — serve from
|
||||
`website/index.html`; set real pricing before public launch.
|
||||
- **Sprint 1 live-operation gate:** deploy behind restricted access, set/verify `BOOTSTRAP_ADMIN_PASSWORD`, rotate `JWT_SECRET` after the patch, inspect audit data, and run a fresh authenticated smoke. Do not open public access before this checklist.
|
||||
- **Sprint 2:** implementation and local regression gate complete; retain current tests as the contract.
|
||||
- **P1:** run real-provider QA and browser/mobile E2E; local contract tests use deterministic fakes.
|
||||
|
||||
Reference in New Issue
Block a user