Rewrite on Better-T-Stack, archive v1 - #21
Merged
Merged
Conversation
Reimagine Learn Manoonchai on a modern stack (SvelteKit 2 + Svelte 5 runes, Tailwind v4, Bun workspace, Oxlint/Oxfmt, Vite+/Vitest). The previous app is archived under v1/ and the new app is promoted to the repo root. - Honest per-keystroke stats engine (raw WPM, net WPM, accuracy) replacing v1's mislabeled running-average chart (see docs/adr/0001). - Reimagined UI: focus lens with per-char feedback, animated keymap with next-key glow, LayerChart raw+net+error chart, end-of-drill summary. Light/dark theming (system default), WCAG AA, reduced-motion. - Grapheme-cluster rendering (Intl.Segmenter) so Thai combining marks stay attached to their base; error states carry a non-color cue. - All 30+ lessons and the Manoonchai layout ported verbatim. - Domain language in CONTEXT.md, product brief in PRODUCT.md. - Tests: 26 unit + 10 component (Vitest) + 3 e2e (Playwright); type-check, lint, and build all clean. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
The monorepo build placed adapter-auto's Vercel output under apps/web/.vercel/output, but Vercel looked at the repo root and failed with "No Output Directory named 'public'". The app has no server routes, so switch to @sveltejs/adapter-static with full prerendering (prerender = true) — index.html keeps its <head> meta/OG tags — and add a root vercel.json pointing the output to apps/web/build. This is dashboard-independent and works with Root Directory at the repo root. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
The v1 workflows ran `yarn install` on Node 16 against the repo root, which is now the bun-workspace v2 app — failing on the `bun@1.4.0` packageManager field and the absent root yarn.lock. - Rewrite test.yml: setup-bun, `bun install --frozen-lockfile`, then check, test (Vitest), build, and Playwright e2e from apps/web. - Remove release.yml: the v1 semantic-release/npm flow no longer applies (v2 is a private static app deployed via Vercel). Its config remains under v1/. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Member
Author
|
Follow-up: CI and deploy are now fixed for the new root layout.
Supersedes the "`.github/` CI is unchanged" note in the description above. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What
A ground-up rewrite of Learn Manoonchai (the Manoonchai Thai-layout typing trainer) on a modern stack, plus a repo restructure:
v1/(moved intact, still runnable).Stack: SvelteKit 2 · Svelte 5 (runes) · Tailwind v4 · TypeScript · Bun workspace · Oxlint + Oxfmt · Vite+ (Vitest) · self-hosted Sarabun · LayerChart. Scaffolded with Better-T-Stack.
Why
v1 was on Svelte 3 with broken tests, an unthemed Tailwind-default look, and a stats chart that was mislabeled and faked (labeled "Raw WPM" while plotting a cumulative running average; per-second values hardcoded to
+12/keystroke). This rewrite modernizes the stack and corrects the domain model.Highlights
docs/adr/0001-honest-stats-engine.md.prefers-reduced-motionhonored.Intl.Segmenter) keeps combining tone marks attached to their base; error feedback carries a non-color cue (underline), not color alone.CONTEXT.md, product brief inPRODUCT.md.Tests & checks (all green)
svelte-checkoxlintbun run buildReviewer notes
.github/CI is unchanged and still targets v1's layout (semantic-release,yarn build); it will need updating to run against the new root.adapter-auto(deployment was out of scope).🤖 Generated with Claude Code