Commit Graph
237 Commits
Author SHA1 Message Date
tiennm99 81c21d7998 feat(outputs): add customer feedback synthesis report for Basecamp Rewards program
Synthesizes 20 documents (surveys, emails, interviews, support tickets)
into a structured analysis covering 6 key themes: app reliability,
expiration policy, staff consistency, redemption options, VIP tier demand,
and value perception. Includes contradictions matrix, customer segment
patterns, feature requests, and prioritized recommendations.
2026-03-09 21:45:33 +07:00
tiennm99 6612d7c149 feat(workflow): process inbox files and move to categorized processed folders
Runs file-processor skill on 5 inbox files: moves and renames to
processed/receipts, processed/invoices, processed/documents, and
processed/images using ISO date naming convention. Generates
outputs/processing-log-2026-03-09.md. Inbox is now empty.
2026-03-09 21:27:40 +07:00
tiennm99 72ee54db66 feat(inbox): add sample inbox files for file processing workflow demo
Adds 5 realistic test files: Amazon receipt, freelance contract draft,
web design invoice, product sync meeting notes, and an app bug screenshot.
These serve as demo input for the file-processor skill.
2026-03-09 21:23:33 +07:00
tiennm99 0424a4949c feat(workflow): add file processing system with inbox/processed/outputs/reference folder structure
Introduces a repeatable file management workflow: inbox for new files,
processed for organized output, outputs for Claude-generated reports,
and reference for read-only context. Includes a file-processor skill
with naming conventions and categorization rules. Updates README with
usage instructions.
2026-03-09 21:21:13 +07:00
tiennm99 2b5b1b74c1 feat(scenarios): add file-chaos scenario with 56-file organization into 9 business categories
Organizes 56 chaotically named files into 9 typed folders (Invoices, Receipts,
Contracts-Legal, HR, Operations, Financial, Marketing, Screenshots, Compliance).
Files renamed with ISO dates and descriptive names. Flags 2 exact duplicates
and 3 urgent action items. Includes detailed ORGANIZATION-LOG.md.
2026-03-09 21:15:08 +07:00
tiennm99 a7bb6131f0 feat(scenarios): add done-framework scenario with DONE-status file organization
Organizes 19 files into 7 topic folders using DONE/In Progress status labels
(Analytics, Budget, Marketing, Meetings, Menu & Recipes, Operations, Training).
Files renamed with ISO dates and descriptive names. Includes organization-summary.md.
2026-03-09 20:56:28 +07:00
tiennm99 b12526ac03 refactor(scenarios/first-task): reorganize files into 5 business-function subfolders with descriptive names
Replaces 4 lowercase technical folders with 5 human-readable business-function
folders (Finance & Invoicing, Contracts & Compliance, Internal Notes & Meetings,
Marketing & Social, Planning & To-Dos). Files renamed with full context (date,
entity, type). Updates CHANGES.md accordingly.
2026-03-09 20:46:42 +07:00
tiennm99 299fba04c6 feat(scenarios): add first-task scenario with organized file structure
Organizes 10 files from root into 4 subfolders (finance, operations,
marketing, planning) with descriptive names. Includes CHANGES.md
documenting the reorganization.
2026-03-09 20:40:34 +07:00
tiennm99 c09d2207c0 chore(docs): add hello.txt welcome file 2026-03-09 20:35:48 +07:00
tiennm99 4bd824d707 feat(commands): add /ideas command to generate actionable vault insights
- Add .claude/commands/ideas.md: scans vault and CLI graph data to
  produce tools to build, essays to write, connections to make,
  and experiments to run
- Update my-commands.md with /ideas description and usage
2026-03-08 22:22:06 +07:00
tiennm99 ed27f4cd80 feat(commands): add /challenge and /emerge thinking tool commands
- Add .claude/commands/challenge.md: pressure-tests beliefs by finding
  contradictions and counter-evidence within vault notes
- Add .claude/commands/emerge.md: surfaces hidden patterns and unstated
  ideas implied by the vault's collective content
- Update my-commands.md with descriptions and usage for both commands
2026-03-08 22:15:55 +07:00
tiennm99 2ccd355dfe feat(commands): add /connect thinking tool command
- Add .claude/commands/connect.md: bridges two disparate vault topics
  by tracing backlinks and surfacing unexpected connections
- Update my-commands.md with /connect description and usage
2026-03-08 22:09:31 +07:00
tiennm99 b107ad318b feat(commands): add /my-world command and document it
- Add .claude/commands/my-world.md: loads all 10 vault notes and runs
  CLI graph queries (tags, backlinks, orphans) to summarize context
- Update my-commands.md with /my-world description and usage
- Add my-vault/.obsidian/ config generated during lesson setup
2026-03-08 21:52:34 +07:00
tiennm99 3336f04dff feat(content): add course lessons, scenarios, and start guide
Adds the full initial course content including:
- START-HERE.md with navigation and teaching instructions
- 12 lesson scripts covering delegation, frameworks, research, automation, and more
- Scenario files for customer-feedback, done-framework, file-chaos, first-task,
  large-corpus, receipts, and strategy-notes exercises
2026-03-08 21:09:46 +07:00
Tien Nguyen MinhandGitHub 7091f5f2bf Initial commit 2026-03-08 21:07:39 +07:00
tiennm99 2b505dd5e1 chore(lesson): add Vin Obsidian Workflows lesson assets
Add initial lesson structure for Vin Obsidian Workflows mini-lesson:
- CLAUDE.md: full lesson script and teaching instructions
- my-vault/: 10 interconnected Obsidian notes about Claude Code best practices
- .claude/commands/start-lesson.md: slash command to launch the lesson
- my-commands.md: documentation for custom commands
2026-03-08 21:04:22 +07:00
Tien Nguyen MinhandGitHub 9b34990d35 Initial commit 2026-03-08 21:02:50 +07:00
tiennm99 824e820335 docs(my-plan): add v1 PRD for light novel reading website
Define 9 features with requirements and test conditions covering auth,
reading experience, history tracking, search/discovery, ratings, comments,
notifications, and guest access. Includes UI and technical decisions
using Next.js + PostgreSQL.
2026-03-08 20:11:15 +07:00
tiennm99 06c4f11e14 chore(project): add Claude Code config, project instructions, and plan
Add CLAUDE.md with Ross Mike Workflows lesson instructions, my-plan.md for
project planning, and .claude/ directory with project configuration.
2026-03-08 18:55:03 +07:00
Tien Nguyen MinhandGitHub d04ae8dd06 Initial commit 2026-03-08 18:50:33 +07:00
tiennm99andGitHub bffafe25aa Merge pull request #1 from tiennm99dev/ts-to-js-migration
refactor: migrate quiz-project, gstack, and superpowers to JS+JSDoc
2026-08-18 09:50:40 +07:00
tiennm99 51a4b90163 refactor: migrate quiz-project, gstack, and superpowers to JS+JSDoc
Convert all 41 TypeScript source/config files in cc4e-course/quiz-project
(Next.js), gstack (Astro), and superpowers (Vite/React/Phaser) to plain
JavaScript with JSDoc type annotations, replacing tsconfig.json with
jsconfig.json (strict + checkJs) in each subproject. No behavior changes:
lint, typecheck, test, and build gates match their TypeScript baselines
exactly in all three subprojects. Update stack references in the affected
READMEs accordingly.
2026-08-18 09:49:42 +07:00
tiennm99 364efd422b build(gstack): move from bun to npm
Replace bun.lock with package-lock.json and add package.json#allowScripts for
esbuild and sharp, the two native packages whose install scripts npm 11 gates.

Update README, RUNBOOK, TODOS and CLAUDE.md to npm commands. CLAUDE.md also
claimed ./setup requires bun; it does not any more.

Verified: astro check 0 errors, 39 tests pass, 4 pages build, clean npm ci.
2026-08-17 16:57:29 +07:00
tiennm99 2956ced600 docs: update Pages host to miti99dev after repository transfer 2026-08-13 09:06:30 +07:00
tiennm99 67bd88f41e feat: host cc4e-course quiz and advanced-claude-workflows lesson on the unified Pages site
The quiz app is a pure client-side Next.js page, so it static-exports with
output: 'export' and a basePath under the site; the lesson thumbnail is a
self-contained HTML file served as that directory's index.
2026-08-11 11:45:21 +07:00
tiennm99 5157b63023 chore: unify the labs under one GitHub Pages site
Each web demo builds with its base path under /ai-coding-workflow-labs/,
a single deploy workflow assembles them with a root index, and the
per-directory workflows from the standalone repos are removed.
2026-08-10 18:04:52 +07:00
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
7b49784c18 chore(deps): bump next from 16.2.3 to 16.2.11 in /quiz-project (#6)
Bumps [next](https://github.com/vercel/next.js) from 16.2.3 to 16.2.11.
- [Release notes](https://github.com/vercel/next.js/releases)
- [Commits](https://github.com/vercel/next.js/compare/v16.2.3...v16.2.11)

---
updated-dependencies:
- dependency-name: next
  dependency-version: 16.2.11
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-07-25 16:16:10 +07:00
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
5de91cd232 chore(deps-dev): bump js-yaml from 4.1.1 to 4.3.0 in /quiz-project (#5)
Bumps [js-yaml](https://github.com/nodeca/js-yaml) from 4.1.1 to 4.3.0.
- [Changelog](https://github.com/nodeca/js-yaml/blob/master/CHANGELOG.md)
- [Commits](https://github.com/nodeca/js-yaml/compare/4.1.1...4.3.0)

---
updated-dependencies:
- dependency-name: js-yaml
  dependency-version: 4.3.0
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-07-25 16:15:42 +07:00
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
c3b81f5a0b chore(deps-dev): bump flatted from 3.3.4 to 3.4.2 in /quiz-project (#2)
Bumps [flatted](https://github.com/WebReflection/flatted) from 3.3.4 to 3.4.2.
- [Commits](https://github.com/WebReflection/flatted/compare/v3.3.4...v3.4.2)

---
updated-dependencies:
- dependency-name: flatted
  dependency-version: 3.4.2
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-05-07 13:35:12 +07:00
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
7b8fccee95 chore(deps): bump picomatch in /quiz-project (#3)
Bumps  and [picomatch](https://github.com/micromatch/picomatch). These dependencies needed to be updated together.

Updates `picomatch` from 2.3.1 to 2.3.2
- [Release notes](https://github.com/micromatch/picomatch/releases)
- [Changelog](https://github.com/micromatch/picomatch/blob/master/CHANGELOG.md)
- [Commits](https://github.com/micromatch/picomatch/compare/2.3.1...2.3.2)

Updates `picomatch` from 4.0.3 to 4.0.4
- [Release notes](https://github.com/micromatch/picomatch/releases)
- [Changelog](https://github.com/micromatch/picomatch/blob/master/CHANGELOG.md)
- [Commits](https://github.com/micromatch/picomatch/compare/2.3.1...2.3.2)

---
updated-dependencies:
- dependency-name: picomatch
  dependency-version: 2.3.2
  dependency-type: indirect
- dependency-name: picomatch
  dependency-version: 4.0.4
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-05-07 13:33:22 +07:00
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
0d98a30554 chore(deps): bump next from 16.1.6 to 16.2.3 in /quiz-project (#4)
Bumps [next](https://github.com/vercel/next.js) from 16.1.6 to 16.2.3.
- [Release notes](https://github.com/vercel/next.js/releases)
- [Changelog](https://github.com/vercel/next.js/blob/canary/release.js)
- [Commits](https://github.com/vercel/next.js/compare/v16.1.6...v16.2.3)

---
updated-dependencies:
- dependency-name: next
  dependency-version: 16.2.3
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-05-07 13:33:17 +07:00
tiennm99andGitHub 8c949bf4ca v0.0.4.0 feat(module-2): tam giác đồng dạng (lớp 8, scale slider) (#4)
* feat(component): similarity-scale slider controller

Single-slider similarity demo for Module 2. Fixed △ABC, scaled △A'B'C' computed
each frame as `centroid_target + k · (vertex − centroid_ABC)` for k ∈ [0.5, 2].
The slider's input event is the only event listener — no Pointer Events here
(we're not dragging vertices in this MVP). AbortController teardown on
astro:before-swap as before.

The renderTicks helper is duplicated from congruence-sss.ts for now — when
Module 4 lands we'll factor it out into a shared module. Premature
abstraction would force a circular import structure for one helper.

* feat(module-2): tam giác đồng dạng (lớp 8) with scale slider

Page at /lop-8/tam-giac-dong-dang/. △ABC fixed on the left at scalene scale-72.8 / 83.2 / 93.4 sides. △A'B'C' is the runtime scaled image, controlled by a
single range input k ∈ [0.5, 2] step 0.05.

Live readout table shows all six side lengths and all three ratios. The killer
moment: drag the slider, watch all 3 ratios stay numerically equal to each
other (= 1/k). That equality IS the definition of similarity, made visible.

Tick marks per Decision D3: 1/2/3 ticks color-paired (#D7263D / #1B998B /
#F46036). Triangle 1 ticks rendered once on mount; triangle 2 ticks redrawn
on every slider input.

Hub: lớp 8 card flips to live status. All 3 grade cards now active —
the autoplan 3-module hero set is complete.

* chore: VERSION 0.0.4.0 + CHANGELOG + TODOS update

v0.0.4.0 = scaffold + Module 3 (góc nội tiếp) + Module 1 (tam giác bằng nhau)
+ Module 2 (tam giác đồng dạng). All three MVP modules from autoplan now live.

Move 2 P1 items to Completed (scale slider, ratio readout) and reduce Module 2
remaining items to P2 (free-drag mode) + P3 (numeric angle readouts).

---------
2026-04-30 00:25:08 +07:00
tiennm99andGitHub 80379c7c08 v0.0.3.0 feat(module-1): drag-to-explore tam giác bằng nhau (lớp 7, SSS) (#3)
* feat(geom-engine): triangle module + position-strict congruentSSS

Third pure module under src/geom-engine/. Adds Triangle type, sides() (returns
named AB / BC / CA lengths), and congruentSSS() with position-strict semantics:
labels define the correspondence (AB↔A'B', BC↔B'C', CA↔C'A'), permuted matches
are NOT counted as congruent. This preserves SGK pedagogy where the labels and
the matched-pair encoding (color + tick marks) carry meaning.

10 new unit tests: identical, translated-congruent, similar-not-congruent (2x scale),
shape-different, EPSILON_LEN tolerance (within and just outside), label-permutation
rejection, and symmetry of the relation.

Total tests: 29 → 39.

* feat(module-1): drag-to-explore tam giác bằng nhau (lớp 7, SSS)

Second interactive theorem demo. Page at /lop-7/tam-giac-bang-nhau/.

Component: src/components/congruence-sss.ts owns 6 draggable vertices (3 per
triangle), each independently captured via setPointerCapture per vertex.
Drag-clamping (16px viewBox padding) keeps every vertex on-screen.

Encoding per autoplan Decision D3 (a11y + SGK-correct in one move):
  AB / A'B' → pair1 #D7263D + 1 tick
  BC / B'C' → pair2 #1B998B + 2 ticks
  CA / C'A' → pair3 #F46036 + 3 ticks
Tick marks are SVG line segments perpendicular to each side at the midpoint,
spaced 5 viewBox-units apart for multi-tick. Redrawn live during drag.

Page: viewBox 400x300 (4:3, side-by-side triangles), single 6KB page including
inline JS bundle (entire geom-engine + canvas controller, minified).

Live side-length readout table + green badge "Hai tam giác bằng nhau (c.c.c)"
that appears when SSS condition holds within EPSILON_LEN. Badge has
role="status" + aria-live="polite" so screen readers announce the moment the
triangles become congruent.

Rigid-motion overlay animation EXPLICITLY DROPPED per autoplan — color+tick
match is the success state.

* feat(hub): activate lớp 7 card linking to tam giác bằng nhau module

Status flips from sap-ra-mat to live; href points at the new module.
i18n/vi.ts gains module1.* strings (intro, instruction, theorem, example,
SGK-aligned theorem statement) so every user-facing string still routes
through t() — adding English in the future is one en.ts file away.

* chore: VERSION 0.0.3.0 + CHANGELOG + TODOS update

v0.0.3.0 = scaffold + Module 3 (góc nội tiếp) + Module 1 (tam giác bằng nhau).
2 of 3 MVP modules now live. Module 2 (tam giác đồng dạng) is next.

* chore: TODOS Module 1 reflects v0.0.3.0 (SSS shipped)

Original P1 items "SSS detector" + "SGK tick-mark encoding" already moved to
Completed in the previous commit. Replace the still-pending M1 section with
the actual remaining work: P2 toggles for SAS/ASA/AAS/cạnh huyền cases, P3 for
extra examples.

---------
2026-04-30 00:17:26 +07:00
tiennm99andGitHub 65326f9e10 v0.0.2.0 feat(module-3): drag-to-explore góc nội tiếp (lớp 9) (#2)
* chore: ignore .gstack/ deploy reports

/land-and-deploy writes per-deploy artifacts to .gstack/deploy-reports/. Those
shouldn't enter the repo. Captured here so future runs don't surface stale diffs.

* feat(geom-engine): circle module + inscribed-angle invariance test

Add the second pure module per autoplan eng decision E1: src/geom-engine/circle.ts
with circle(), pointOnCircle(), projectToCircle() (snap-to-circle for Module 3 drag),
and angleAtVertex() (clamped against IEEE-754 drift to prevent acos NaN at exactly
collinear angles).

The killer-demo property test pins the inscribed-angle theorem as a CI gate: pick
two fixed points A and B on a unit circle, sample 7 different M positions on the
major arc, and assert all sampled inscribed angles AMB stay within 0.5° of the
reference. If this test ever fails, Module 3's central premise is broken.

13 new unit tests, total 29 passing.

* feat(module-3): drag-to-explore góc nội tiếp page (lớp 9)

Ship the first interactive theorem demo. Page lives at /lop-9/goc-noi-tiep/.

Component: src/components/inscribed-angle.ts wires Pointer Events +
setPointerCapture per autoplan eng decision E1. Drag M; on every pointermove,
project the pointer to the circle (M = center + r·normalize(pointer − center))
so M never escapes the circle. Live readouts: ∠AMB at M (inscribed, pair1 red),
∠AOB at center O (central, pair2 teal). All listeners use AbortController
keyed on astro:before-swap so view-transition navigation doesn't leak.

Page: src/pages/lop-9/goc-noi-tiep.astro holds the SVG canvas (viewBox 400x400,
touch-action: none scoped to canvas), theorem panel, and one worked example
walking the 120°/60° canonical case. Astro bundles the script inline so the
single page ships ~7KB total (including the entire geom-engine + component).

* feat(hub): link lớp 9 card to góc nội tiếp module

Hub landing page now branches each grade card on grade.href:
- live cards render as <a> with hover affordance (lớp 9 only, for now)
- coming-soon cards stay as <li> with opacity 0.7 and "Sắp ra mắt" badge

Status taxonomy extended: 'sap-ra-mat' | 'live' so future modules just flip the
status when their page ships.

i18n/vi.ts gains module3.* (intro, theorem, example, instruction copy) plus a new
'live' status string ("Khám phá") so every user-facing string stays inside vi.ts.

* chore: VERSION 0.0.2.0 + CHANGELOG entry

First feature release. v0.0.2.0 = scaffold + Module 3 góc nội tiếp.

* chore: mark TODOS items completed by v0.0.2.0

- Drag M with circle constraint → DONE in src/components/inscribed-angle.ts
- TheoremCanvas primitive first cut → DONE (built directly in Astro)
- Theorem panel + worked examples → PARTIAL (1 of 3 examples shipped)

---------
2026-04-30 00:03:34 +07:00
tiennm99andGitHub 89c5152780 v0.0.1.0 chore: scaffold Hình Học Sống (Astro + GitHub Pages) (#1)
* chore: add gstack skill routing rules to CLAUDE.md

Append a "## Skill routing" section so future Claude Code sessions in this repo route
each task through the matching gstack skill (e.g., /investigate for bugs, /ship for PRs,
/office-hours for product brainstorming).

* chore: scaffold Astro 5 + TypeScript strict with base /try-gstack/

Initialize the project per the autoplan-locked decisions:
- Astro 5 SSG, output static, base path /try-gstack/ for GitHub Pages subdirectory hosting
- TypeScript strict (Astro's strict tsconfig + path alias ~/* -> src/*)
- @astrojs/sitemap for SEO meta
- bun as the package manager (lockfile committed)

* feat: Vietnamese landing page with Be Vietnam Pro + i18n stub

Implement the locked design decisions D2 (typography) and D3 (palette) plus the i18n
discipline from autoplan eng review:
- Be Vietnam Pro single family (woff2, weights 400/500/700, vietnamese subset) self-hosted
  via @fontsource so KaTeX/CDN-blocking ISPs cannot break the page
- font-feature-settings: "kern", "locl" for proper VN diacritic positioning
- 17px body / 1.6 line-height / max-w-prose 56ch (denser than English)
- 3-color SGK-aligned palette in tailwind config: pair1 #D7263D, pair2 #1B998B, pair3 #F46036
- BaseLayout with lang="vi", canonical URL, OpenGraph (vi_VN), X-Frame-Options DENY
- src/i18n/vi.ts holds every user-facing string; t() helper resolves the active locale.
  Adding English later means adding en.ts; no string churn through templates.
- Landing page lists three grade cards with "Sắp ra mắt" status (modules ship later)

* test: bootstrap Vitest with pure geom-engine vec module

Establish the math-engine boundary and test discipline from autoplan eng decision E2:
- src/geom-engine/ is pure (no DOM imports allowed); first module is vec.ts
- Vec2 helpers: vec, add, sub, scale, dot, len, dist, normalize, approxEqualLen
- EPSILON_LEN=0.5 viewBox units justified vs ~4px human drag precision
- scale() normalizes IEEE-754 -0 back to +0 so consumers don't see signed-zero ghosts
- Vitest config gates the module at 95% line/function/statement, 90% branch
- 16 unit tests covering commutativity, mutation safety, orthogonality, normalization,
  and EPSILON tolerance behavior

Property tests via fast-check come with the first canvas module; this commit establishes
the test scaffold so adding them later is one dependency away.

* ci: GitHub Actions test workflow + Pages deploy via deploy-pages@v4

Wire the autoplan-locked CI/CD pipeline (decision E3) for GitHub Pages hosting:
- ci.yml: typecheck + tests + build on every PR and push to main
- deploy.yml: build + actions/deploy-pages@v4 on push to main, concurrency-grouped
  so a force-push retry doesn't abort an in-flight rollback
- Build env pins SITE_URL=https://tiennm99.github.io and SITE_BASE=/try-gstack so
  astro.config.mjs produces correct canonical/OG URLs against the subdirectory host
- bun 1.3.13 pinned for both workflows

Lighthouse-CI + size-limit gates deferred until the first canvas module ships
(no JS bundle to budget yet — current pages are zero-JS).

* chore: VERSION 0.0.1.0 + CHANGELOG + RUNBOOK + README rewrite

Initial 4-digit gstack version (matches package.json), changelog entry for the scaffold,
operations runbook covering rollback and the deferred .vn domain trigger (500 sessions/30d
OR 1 organic teacher share OR 5+ modules shipped). README rewritten as the project README
for Hình Học Sống with the locked architectural decisions visible to teammates.

* chore: TODOS.md tracking deferred autoplan items

Capture the deferred work surfaced by the /office-hours + /autoplan reviews so the
backlog is visible to teammates and bisectable from the source-of-truth design doc.
Organized by component (Phase 0 distribution, TheoremCanvas, Module 3/1/2, testing
infrastructure, retention, domain) then priority P0–P4. Per the gstack TODOS.md
format conventions.

---------
2026-04-29 23:43:37 +07:00
tiennm99 7bba22131b chore: add Apache-2.0 license 2026-04-29 21:33:41 +07:00
tiennm99 59d28a8da2 chore: add Apache-2.0 license 2026-04-29 21:33:27 +07:00
tiennm99 dc970daa0c Add CLAUDE.md so teammates pick up gstack
Documents the one-time install steps, the /browse-only browsing policy,
and lists the available gstack slash commands so a Claude Code session
in this repo has the convention loaded.
2026-04-29 13:08:07 +07:00
tiennm99 0285c26cbb Initial commit: sandbox for trying gstack 2026-04-29 11:31:32 +07:00
tiennm99 a4a79e6761 feat: v3 — tiers, drones, medals, bonus waves, announcer, hit-stop, top-5 leaderboard
Chicken-Invaders + 1942-inspired additions: stack a booster to level it
(L1-L3, larger spread / faster fire / deeper pierce), new drone
power-up spawning 1-2 orbital companions that fire along with you,
medal pickups that fly up on kill for bonus score and combo, a
meteor-rain bonus wave every 4th non-boss wave, flavor-specific
announcer banners (ROLL CALL, SHOOTERS JOIN, BOSS APPROACHING,
PERFECT WAVE), hit-stop on boss kills and combo bumps, and a
persistent top-5 local leaderboard with game-over placement
highlight. Verifier approved with zero blockers.
2026-04-19 10:25:28 +07:00
tiennm99 6683717d26 feat: v2 — power-ups, dash, boss waves, starfield, floaters, settings
Adds Chicken-Invaders-style booster drops (rapidfire/spread/pierce/
shield/heal/bomb) with magnetism pickup, Shift-dash with invuln +
ghost trail, boss fight every 5th wave (radial + aimed attacks),
shooter enemy with projectiles from wave 3+, parallax starfield,
combo score floaters, and a pause-screen settings overlay (volume
+ shake toggle) persisted to localStorage. Built in parallel by a
4-worker OMC team; blockers found by verifier were patched in place.
2026-04-19 09:56:27 +07:00
tiennm99 4a2ef342d6 ci: deploy static site to GitHub Pages on push to main 2026-04-19 09:31:15 +07:00
tiennm99 454ad11b6b feat: add OMC Neon Arena webgame demo
Browser arcade survival shooter built to showcase oh-my-claudecode
multi-agent orchestration: engine, gameplay, UI, and docs delivered
in parallel by specialist workers with dependency-gated task graph.
2026-04-19 09:27:32 +07:00
tiennm99 eab88abedd chore: add oh-my-claudecode project configuration
Enable the oh-my-claudecode plugin and vendor the OMC project
instructions plus the omc-reference skill so session-start guidance
and agent catalog are available without plugin re-install.

Confidence: high
Scope-risk: narrow
2026-04-19 08:36:49 +07:00
tiennm99andGitHub 5779037e93 Initial commit 2026-04-19 08:26:27 +07:00
tiennm99 2b0b9166bf fix: update package-lock.json libc fields for cross-platform compatibility 2026-04-14 12:28:30 +07:00
tiennm99 bc85f0b690 fix: use separate CSS translate/scale properties for smooth animations
Tile pop and merge @keyframes were setting transform: scale() which
overrode transform: translate() used for tile positioning, causing
tiles to jump to (0,0) during animation. Fix by using individual CSS
properties: translate for positioning, scale in keyframes.
2026-04-14 10:48:37 +07:00
tiennm99 039e994e1e fix: resolve Svelte 5 effect_update_depth_exceeded infinite loop
- ScoreBoard: wrap floats mutation in untrack() to prevent $effect
  from re-triggering when it reads+writes floats in same cycle
- App: split bestScore effect and use untrack() to prevent read/write
  loop on bestScore within the same $effect
2026-04-14 10:25:40 +07:00
tiennm99 c13a529898 feat: add tile glow, dynamic font sizing, and GitHub Pages deployment (Epic 5, Stories 5.1-5.3)
- Add box-shadow glow effect on tiles with value 128+
- Dynamic font sizing already implemented in Epic 4 responsive work (Story 5.2 = no-op)
- Set Vite base path to /try-bmad/ for GitHub Pages
- Add GitHub Actions workflow for automated deploy on push to main
- Production bundle 22.4KB gzipped (under 50KB target)
2026-04-14 09:43:14 +07:00
tiennm99 2a74680a77 feat: add multi-input support and responsive layout (Epic 4, Stories 4.1-4.3)
- Add WASD and Vim hjkl keyboard mappings to input handler
- Add touch/swipe input with 10px threshold and dominant-axis detection
- Refactor all component dimensions to CSS custom properties
- Add responsive breakpoint at 520px (500px→280px container, scaled fonts)
- Add 31 new tests (21 input-handler + 10 swipe), 90 total passing
2026-04-14 09:27:35 +07:00