Make the plain page (public/resume.html) a generated declared mirror so it and
the terminal share one source, and enrich that source to the superset both need.
- resume.org: merged to the superset — richer achievement-oriented bullets,
per-item subtitle/location/tech tags, all projects (adds Terrapin Rocket,
Robotics@UMD) and the full course list.
- org-to-json parser: optional subtitle/location fields + `- tech :: X` tagged
bullets; `list` flag so education stays bullet-free; empty tag arrays dropped.
- scripts/build-resume-html.mjs + resume.template.html: the template owns the
design (unchanged look); content is rendered from resume.json. Adds a global
search box that filters every card and course pill across sections, with a
no-results empty state. HTML-escaped; arXiv ids linkified.
- resume:build now generates both mirrors; resume:check + CI canary verify both.
Verified: yarn build + tsc clean; both canaries green; driven headless — design
preserved, 17 cards render, search isolates by keyword/tech/course, no errors.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Nt6ycjAMdUMqGTGtbKocrs
Make MiTerm the canonical app (was the stale LiveTerm template) and strip it
back to a clean, minimal terminal wired to the resume.json single source.
Port:
- Bring the evolved components/pages/utils in from the github.io fork; drop the
old history/ folder + api_commands.ts. Import matrix theme + tailwind resolver.
De-bloat:
- Remove the CRT barrel-distortion generator, SVG filters, and crt-frame/inner
wrappers from _app.tsx; keep only the live clock/age ticker.
- Delete the crt command (and warp/curve) and the dead .login-* overlay CSS.
- global.css trimmed to base + flat sumfetch + hover/clickable styling.
SSOT wiring:
- New src/utils/resume.ts: single typed accessor over resume.json. commands,
sumfetch, and api read identity/content from it; config.json now holds only
site config (identity/contact facts live once, in resume.org).
- sumfetch and ls reduced from boxed ASCII widgets to flat text: tree default
listing, hover-highlight rows, clickable links (arXiv auto-linkified).
Verified: yarn build + tsc clean; driven headless — landing renders, live clock
ticks, help has no crt, links clickable, no console errors.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Nt6ycjAMdUMqGTGtbKocrs
Establish the canonical résumé authoring layer, the heart of the MiTerm
redesign toward a single source of truth.
- resume.org: canonical résumé as org-roam nodes (one :ID: heading per
experience/project/education/org/publication item + profile + skills).
- scripts/org-to-json.mjs: contract-first, dependency-free parser that emits
a deterministic resume.json declared mirror; --check is the drift canary.
- resume.json: generated mirror consumed (next phase) by the terminal and the
plain résumé page.
- prebuild/predev generate the mirror; .github/workflows/resume-canary.yml
fails CI when resume.json drifts from resume.org.
- docs/decisions/0001: MADR record of the source/pipeline/topology/minimalism
decisions. docs/resume-pipeline.org: reference + mirror table.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Nt6ycjAMdUMqGTGtbKocrs
When you run a command such as `help`, the terminal will automatically scroll down to the bottom of the output and to the next prompt. This doesn't happen for api commands such as `weather Miami`. This PR changes that and matches the api command behavior to the regular ones.