Changelog
All notable changes to arkashj.com are documented here. Format: Keep a Changelog · Versions: SemVer.
[Unreleased] — Money Stuff daily log (W19 May 4–7), new W20 ribbon, 4 Benmore case-study projects
Added
- 2026-W19 Money Stuff daily log (May 4 – May 7). Four daily Matt Levine columns added to the
readrail with TL;DR bullets and Bloomberg-icon branding, plus a new prose section per day with ASCII flow diagrams:- May 4 — GameStop Doesn't Have Enough Stock ($56B financing waterfall + moonshot-pay continuum + social-casino tangent).
- May 5 — Investment Banking Without a License (Morgan Stanley Budapest + the PASPA → Murphy → Kalshi → "states have no jurisdiction" trap diagram).
- May 6 — ChatGPT Can't Pick the Stocks (Nof1 Alpha Arena scoreboard + Apollo daily-pricing + Sklarov fake-margin-loan + TD3C-as-Libor).
- May 7 — Sell on eBay to Buy eBay (real-to-fake takeover continuum + 30-lawyer insider-ring pipeline + Blue Owl ouroboros + HSBC/Atlas SP three-layer cake + Aave run).
content/weekly/2026-W20.mdx— new W20 ribbon (May 11 – May 17). Money Stuff KKR/FSK column with the preferred-at-NAV / tender-at-discount split + VA Kalshi timeline + OpenAI tender; Stratechery × 3 (SpaceXAI/Anthropic, the deployment-company arc, MoffettNathanson interview); SemiAnalysis EDA Primer Part 1 with the 13-stage chip-design waterfall, PDK access tiers, Intel 18A timeline, FinFlex/NanoFlex, and DTCO/STCO; TBPN × 3 (Trump-Xi summit, Condé Nast CEO, AI-SPVs/BuzzFeed); All-In Koch interview; Uncapped #49 (Kevin Hartz / A* Capital); Invest Like the Best (Patrick O'Shaughnessy).- 4 new entries in
PROJECTS(lib/data.ts). Cattle Logic (Durham, KS — agriculture, Texas pilot live with the on-site walkthrough video as a reference link), Home Service Pass (SLC — hospitality), Propurti (Calgary — proptech), Noble Gas (Windsor, CT — automotive + enterprise LLM). Each links to its benmore.tech case study; Cattle Logic also surfaces the YouTube walkthrough atyoutu.be/kfNiCBbhrBg. links?: {label, href}[]onProjectandWorkTooltypes (lib/data.ts). Renders as a new "References" section inProjectDetailModalfor projects that need multiple outbound links (case study + walkthrough video, etc.) without overloading the singlehref.
Filtered
- Money Stuff May 8 podcast-only promo, the TLDR AI marketing newsletter, and the Google OAuth security-alert email were intentionally excluded — only editorial-content newsletters and podcasts surface on
/weekly.
[Earlier Unreleased] — Weekly icon polish + playwright-cli skill pipeline + W19 merge
Added
LOCAL_ICON_MAPinlib/weekly-render.ts— branded SVGs for Bloomberg, SemiAnalysis, Stratechery, and TBPN, served frompublic/assets/weekly/icons/. Consulted before the SimpleIcons CDN and the gstatic favicon fallback so weekly entries no longer render washed-out gstatic icons.playwright-cliskill capture pipeline —scripts/capture-weekly.shdrives theplaywright-cliglobal binary (the Claude skill's CLI) through 30 scroll-position screenshots;scripts/frames-to-gif.shstitches them withgifski;scripts/cli-demo.taperecords the CLI session viavhs. Newbun runscripts:capture:weekly,demo:gif,demo:cli. Setup + tuning indocs/playwright-cli-demo.md.- CLAUDE.md visual-verification section — documents the skill-only convention and explicitly rules out the Playwright MCP and
@playwright/test.
Changed
- 2026-W19 Tuesday reading log merged into
content/weekly/2026-W19.mdx. The standalonecontent/weekly/2026-W19-tuesday-reads.mdxfile is gone; its 8 read entries, tags, prose sections (Avis squeeze + SemiAnalysis flows + LATAM/Stripe cross-currents), and changelog note now live under May 5 inside the main W19 page.
Removed
@playwright/testdevDependency. The skill's binary covers every browser-automation need; no Node-side Playwright runtime is required.
[2.6.0] — 2026-05-03 — Site overhaul: branded share image, /experience removed, home rolling-log, /changelog page, Clerk-gated weekly admin, LLM-copyable everywhere, /knowledge collapsed into /writing
Added — Round 2 (post-merge user followups)
- NowSection moved to the top of
/(right under Hero) and converted to horizontal-scrollable rails (overflow-x-auto snap-x snap-mandatory, 6 items per rail instead of 3, fixed-width snap cardsw-72 sm:w-80). /knowledge/*collapsed entirely into/writing/. All 9 remaining articles (ai/{ai-hardware-stack,fsdp-vs-tensor-parallel,spatialdino-lessons},distributed-systems/{flink-checkpointing,merkle-tree-rust-poc,raft-in-five-minutes,rocksdb-write-amplification},math/{convergence-intuition,optimizers}) moved intocontent/writing/withoriginalDomainfrontmatter.app/knowledge/deleted.lib/content.tsgetKnowledgeDomains/getAllKnowledgePosts/getKnowledgePostdeleted.lib/data.tsKNOWLEDGE_DOMAINSdeleted. TheSecond Brainblock on/writingremoved — single searchable index now.- 308 redirects added in
next.config.jsfor every/knowledge/<domain>/<slug>→/writing/<slug>, plus catch-alls/knowledge→/writingand/knowledge/:domain→/writing.
Changed — Round 2
/aboutno longer renders the "Tools & CLIs" section —WORK_TOOLSwas duplicated context with/projects+/work. Section + subnav anchor + import all removed./weekly/[slug]no longer renders the long-form MDX prose body below the item grid. Detail-on-demand: full content stays accessible via the per-item modal and the/weekly/[slug]/rawendpoint (LLM-copyable)./skillsnav label → Claude Skills (lib/site.tsNAV_LINKS)./weeklyindex header dropped the "one entry per ISO week" subtitle — multiple entries per week are explicitly allowed.
Build — Round 2
- Vercel env:
ADMIN_EMAIL=arkashjain17@gmail.comset on Production + Development viavercel env add(CLI v50.37.3).vercel env pull .env.local --environment=developmentpopulates the local file..env.localadded to.gitignore. app/sitemap.tsno longer enumerates knowledge URLs; adds/changelog.components/architecture/Diagrams.tsxsource rail updated.
Original release (initial commit)
Added — Home rolling log + merged Now section
components/sections/RollingLog.tsx— paginated date-stamped feed of weekly logs (5/page via?page=N, server component, fully indexable). Replaces the single "This Week" card.components/sections/NowSection.tsx— unifies the old "Now" + "This Week" sections into one block with four anchor-linked rails: Milestones / Writing / Media / Projects.components/sections/CurrentUpdates.tsxremoved.
Added — /changelog route + commits-and-history sidebar
app/changelog/page.tsx— new top-level route. Two-column desktop layout: parsedCHANGELOG.mdleft (⅔),<CommitsSidebar />right (⅓, sticky).lib/changelog-md.ts— Keep-a-Changelog 1.1.0 parser (handles em-dash separators, long descriptive section labels), module-level cache.components/sections/CommitsSidebar.tsx— type-grouped accordion (feat/fixopen by default), 20 commits per group, deep-links to GitHub commit + to/weekly/<slug>when commit date overlaps a published week.app/weekly/[slug]/page.tsxnow renders a "Released in CHANGELOG: vX.Y.Z →" badge when a release date falls inside the week.
Added — /admin/weekly editor (Clerk-gated, server-action MDX append)
app/admin/weekly/{page,ClerkAuthGate,WeeklyItemForm,actions}.tsxmirroring the/ce-planpattern.- Server action
addWeeklyItem(formData)checksauth().sessionClaims.email(fallbackcurrentUser()) againstprocess.env.ADMIN_EMAILallowlist; parses + appends tocontent/weekly/<current-iso-week>.mdxviagray-matter; revalidates/,/weekly, and/weekly/<slug>. - Auto-creates the current ISO-week MDX file from a template if missing.
- Wraps
fs.writeFileSyncin try/catch — surfaces a friendly "filesystem read-only" message on Vercel prod (admin is local-only by design; commit the diff to ship). lib/weekly-dates.ts— extracted ISO-week math (getIsoWeek,isoWeekSlug,weekToRange).
Added — Weekly clickable + fzf tag index on /weekly
components/weekly/TagFzf.tsx— client component with debounced filter over the top-30 tags by frequency. Press Enter on first match navigates to/weekly?tag=<slug>.app/weekly/page.tsxreadssearchParams.tagand filters cards. Active tag shows an "× clear filter" affordance.
Added — LLM-copyable everywhere
app/writing/[slug]/raw/route.ts,app/weekly/[slug]/raw/route.ts,app/knowledge/[domain]/[slug]/raw/route.ts— each emits the underlying MDX (frontmatter + body) astext/plain; charset=utf-8, cacheds-maxage=86400. Mirrors the existing/skills/<slug>/rawpattern.components/ui/CopyForLlm.tsx+lib/copy-for-llm.ts— generic Safari-safe Clipboard-API button. Wired into the back-link header of every writing, weekly, and knowledge detail page.
Added — Bidirectional CHANGELOG ↔ weekly
- See
lib/changelog-md.ts#findReleaseInWeekand the badge wiring inapp/weekly/[slug]/page.tsx.
Changed — Default share image is now branded, not the headshot
lib/metadata.ts#buildMetadatano longer defaultsopenGraph.images/twitter.imagesto/images/profile.jpeg. Next.js's file-conventionapp/opengraph-image.tsx(which renders the branded card vialib/og.tsx#renderOg) is now the source of truth for OG/Twitter cards on every route.lib/structured-data.ts#personSchemastill usesprofile.jpegforPerson.image(correct per schema.org).- Existing per-route OG renderers (e.g.
app/writing/[slug]/opengraph-image.tsx) are unaffected.
Changed — Weekly subtitle, item cards, filter bar
/weeklyindex header dropped the "one entry per ISO week." italic accent — multiple entries per week are now allowed.app/weekly/[slug]/WeeklyGrid.tsxItemCardno longer renders the body-text paragraph below the title. Click still opens the full-body modal.- The filter bar (search + kind + tag pills) is no longer sticky — sits in flow.
Changed — Skills nav label
lib/site.tsNAV_LINKS:Skills → Claude Skillsto make the surface readable at-a-glance from the navbar.
Changed — Essay-shaped knowledge articles moved to /writing
- Moved (with
originalDomainfrontmatter + 308 redirects innext.config.js):physics/why-i-left-physics,physics/supercritical-fluids-paperfinance/aggregation-theorysoftware/claude-code-as-an-os,software/why-typescript-strict
lib/data.tsKNOWLEDGE_DOMAINSno longer listsphysicsorsoftware(vacated).financeretained for its index + thesis/trade sections.
Removed — /experience page
app/experience/page.tsxdeleted. Removed fromlib/site.tsNAV_LINKS,app/sitemap.ts,components/architecture/Diagrams.tsx. CommandPalette + Footer auto-synced.- 308 redirect
/experience → /about#careeradded innext.config.js./about#careeris the canonical career history.
Refactored — Cross-cutting deduplication (post-overhaul /ce-simplify-code pass)
lib/weekly.ts#getAllWeeklyLogsnow caches at module scope (eliminates ~3 redundant FS scans per/weekly+/changelogrender).app/weekly/page.tsxmemoizesgetAllItems()per log into aMap<slug, items>(was called 3× per log).components/ui/ExternalLinkIcon.tsxextracted; replaces inline copies inCommitsSidebar+GitChangelog.lib/git-commit.tsexportsCommitTypeunion + adds'weekly'toKNOWN_TYPES;CommitsSidebarimports instead of redeclaring.lib/weekly-types.tsnow exportsRAIL_ORDER+RAIL_DEFAULT_KIND; admin form imports instead of redeclaring.app/admin/weekly/actions.tsreplaces TOCTOUexistsSync→readwithtry/read/catch ENOENT; addsinstanceof Errorguard beforeErrnoExceptioncasts; drops redundantsessionClaims['email']fallback.
Build
package.json2.5.0 → 2.6.0.- New routes generated:
/changelog,/admin/weekly,/writing/<slug>/raw,/weekly/<slug>/raw,/knowledge/<domain>/<slug>/raw. - Vercel env:
ADMIN_EMAIL=arkashjain17@gmail.comset on Production + Development. - Recommended git tag:
v2.6.0.
[2.5.0] — 2026-05-02 — Weekly grid, cached git changelog, per-project pages, polished modals
Added — Flat weekly item grid (drops the 6-rail bucket UX)
app/weekly/[slug]/WeeklyGrid.tsx(renamed fromWeeklyRails.tsx): one unified grid of cards (3-col lg / 2-col md / 1 mobile). Each card shows title, source, kind badge (Video / Podcast / Article / Repo / Meeting / Note), and a 3-line notes preview. Click opens the existing<DetailModal>(anchor section markdown -> notes -> fallback CTA).- Sticky filter bar above the grid: search input (matches title/source/notes/tags), kind facet chips, and frequency-ranked tag pills (top 8 + "+N more"). All three filters serialize into
?q=&tag=&kind=for shareable URLs via the newuseUrlStatehelper (lib/url-state.ts). - Per-item tag derivation: log-level
tags:propagate to every item; an item's owntags:adds to the pool;kindandsourceauto-tag too. Pure-stringlearneditems auto-promote to{ text, kind: 'note' }. - Card stagger entry animation (30 ms cap at 12 cards) via new
.weekly-card-enterkeyframes;prefers-reduced-motionfalls back to opacity-only. - Tag wall removed from the page header on both
/weeklyand/weekly/[slug]. Tags now render as a footer "Tags · N" section beneath the prose, with the in-grid pills as the canonical filter surface. - Removed four placeholder mock entries from
content/weekly/2026-W18.mdx(Andreessen, Tyler Cowen, Karpathy, Latent Space). Only real consumed items remain.
Added — Cached git changelog under the grid
scripts/sync-git-changelog.mjsgenerator: readsgit log --no-merges -n 200, parses conventional-committype(scope): subject(and multi-scopefeat(weekly,projects):) tolerantly, falls back gracefully on non-conventional messages, drops trivial.WIP commits, and writescontent/_generated/git-changelog.json. Wired aspredevandprebuildhooks inpackage.json. Vercel build hasgit; runtime doesn't — JSON is committed.lib/git-changelog.ts(server-only loader,'server-only'guarded) +lib/git-commit.ts(client-safe types +commitGithubUrl/shortHash). Splitting preventsfsfrom leaking into the client bundle.components/sections/GitChangelog.tsx: filterable client component grouped by day. Type/scope tag pills (top 12 + expand), search across subject/body/type/scope, "This week / All time" scope toggle, click-to-expand commit body, link-out to GitHub commit.
Added — Per-project detail pages
app/projects/[slug]/page.tsx(new dynamic route) andlib/projects.tsloader. Mirrors the/writing/[slug]pattern: header (name + year + kind + GitHub CTA), full description, highlights bullets, run-it command blocks, tech badges, GitHub CTA card.- Slug derivation in
lib/projects.ts:projectSlug(): kebab-case, parens-stripped (soBenmore-Meridian (bm CLI)->benmore-meridian); collisions betweenPROJECTSandWORK_TOOLSget a-toolsuffix. components/sections/ProjectCard.tsxclick ALWAYS keeps the user on-site. Card body navigates to/projects/<slug>; the only off-site path is the explicit "GitHub →" footer link.app/sitemap.tsenumerates every/projects/<slug>URL.- New
scripts/sync-project-readmes.mjs+lib/projects-readme.ts: at build time,gh api repos/<owner>/<repo>/readmesnapshots are written tocontent/projects/<slug>.mdand rendered at the bottom of each project page via<MdxContent>.
Added — Lifted helpers reusable across surfaces
lib/tags.ts:tagsByFrequency()— generic frequency rank used by weekly grid and git changelog.lib/url-state.ts:useUrlState()— smalluseSearchParams/router.replacewrapper for shareable filter URLs.lib/weekly-types.ts— pure types + helpers (nofs) so client components can import without dragging the server-only loader into the bundle.
Changed — Weekly modal sized for substance
max-w-lg→max-w-3xl,max-h-[78vh]→max-h-[82vh].bg-background→bg-surface.- Body-portaled via
createPortal(…, document.body)to escape an ancestortransformthat scopedposition: fixedaway from the viewport. - Entry/exit animation:
scale(0.96) + translateY(8px) + opacityover 220 ms withcubic-bezier(0.23, 1, 0.32, 1); exit 160 ms;motion-reducecollapses to opacity-only. Per Emil Kowalski's design-engineering framework.
Build
package.json2.4.1 → 2.5.0. Newpredev+prebuildscripts run the changelog + readme sync. Newsync:changelogandsync:readmesfor manual rerun.server-onlyadded to dependencies.- Recommended git tag:
v2.5.0.
Docs
docs/release-notes/2026-05-02-weekly-grid-and-changelog.md: full release notes.- README routes table refreshed.
[2.4.2] — 2026-05-02 — Weekly log modal reader, full podcast notes, expanded tags
Added — Click-to-read modal on weekly rail items
app/weekly/[slug]/WeeklyRails.tsx(new client component): rail items with a frontmatteranchor:field now open a scrollable detail modal instead of jumping to a page anchor. Modal features: semi-transparent backdrop, max-w-2xl × 85vh scrollable container, thumbnail + title + watch/listen link in header, full section notes rendered viareact-markdown+remark-gfm, closes on X button / backdrop click / ESC key, body scroll locked while open.app/weekly/[slug]/page.tsx: server-sideextractSections()splits the MDX source on<div id="..."></div>markers and passes per-anchor markdown strings toWeeklyRailsas props. Prose body retained below rails for linear reading and SEO.lib/weekly.ts+lib/weekly-render.ts:WeeklyItemgains optionalanchorfield (links item to a detail section) andnotesfield (inline summary shown in the rail card).
Added — Full podcast notes for 2026-W18
content/weekly/2026-W18.mdx: 5 new watched entries with full structured notes:- Stripe Sessions keynote — AI replatforming, solopreneurs (5M Americans, $100k+), Tempo CLI stablecoin micro-payments, complement theory (data / network effects / physical moats), Solow Paradox.
- Odd Lots — Taiwan/China — Eyck Freymann: Xi's political legitimacy motivation, silicon shield, KMT vs DPP, China's shock absorbers, ruble trade playbook, avalanche decoupling.
- Odd Lots — METR — Joel Becker & Chris Painter: time horizon methodology, 50% success threshold, 4-month capability doubling, Baptist-and-Bootlegger dynamic.
- Odd Lots — Dinosaur fossils — Salomon Aaron: Stan T-Rex $31M / Apex Stegosaurus $45M pricing reset, bone maps, pre-buy strategy, sovereign wealth fund competition.
- Pershing Square PSUS — Bill Ackman: closed-end fund structure, no incentive fees, permanent capital compounding, Vantage Holdings insurance float model, 19% ROE / 24.9% 8yr track record.
- Thursday (Apr 30) deep-dive session backfilled in
learnedrail. - Tags expanded to 35 covering: Agentic Commerce, Stablecoin Payments, Solow Paradox, Silicon Shield, TSMC Dependence, KMT vs DPP, Avalanche Decoupling, Time Horizons, Capability Doubling, Baptist-and-Bootlegger, Alternative Assets, Fossil Market, Pre-Buy Strategy, Closed-End Funds, Permanent Capital, Insurance Float, and more.
[2.4.1] — 2026-05-02 — Rich weekly logs, home-page surfacing, mobile fix
Fixed — Safari "Copy for LLM" button silently failed
app/skills/SkillsClient.tsxandapp/skills/[slug]/SkillCopyButton.tsxpreviously didawait fetch('/skills/<slug>/raw')followed bynavigator.clipboard.writeText(text). Safari (and Chromium under strict clipboard policies) revokes the user-activation gesture across the async hop, so the clipboard write threwNotAllowedErrorand the button rendered the red "Copy failed" state.- New
lib/copy-skill.tsuses the spec-blessednavigator.clipboard.write([new ClipboardItem({'text/plain': fetch(url).then(r => r.blob())})])pattern — Safari preserves the user gesture across aPromise<Blob>passed toClipboardItem. Falls back towriteTextfor older browsers withoutClipboardItem. Errors now log to console for diagnosability.
Added — Rich rail items on weekly logs
lib/weekly.tsextended: each entry inread/watched/built/shipped/learned/metis nowstring | { text, href?, image?, source?, kind? }. Plain strings still work for quick logging.- New
lib/weekly-render.tsderives renderable items: YouTube URLs auto-resolvehttps://i.ytimg.com/vi/<id>/mqdefault.jpgthumbnails (youtube.com/watch?v=…,youtu.be/…,youtube.com/shorts/…); known sources (YouTube, Substack, Medium, GitHub, LinkedIn, X, arXiv, Spotify, Apple Podcasts, Overcast, Latent Space) auto-fetch monochrome SimpleIcons logos viacdn.simpleicons.org. Falls through cleanly when nothing matches. app/weekly/[slug]/page.tsxrails now render link cards: 64×36 thumbnail (YouTube) or 16×16 logo (SimpleIcons), linked title with hover, source label in muted mono caps. Externalhrefs open in new tab; internalhrefs use anchor navigation.content/weekly/2026-W18.mdxupdated to use the rich format end-to-end (Karpathy YouTube → auto-thumbnail, Latent Space podcast, a16z article, GitHub repos with auto-resolved logos).
Added — "This week" home-page section
app/page.tsxnow renders a "This week" card directly under the hero, surfacing the latest weekly log: title, week range, six-category counts grid (Read · Watched · Built · Shipped · Learned · Met), tags, click-through to/weekly/<slug>. Wired via newgetLatestWeeklyLog()export fromlib/weekly.ts.
Fixed — /skills horizontal overflow on mobile
- The three-column "How to use these skills" grid contained
<pre>blocks with unbreakable shell commands (curl -fsSL "https://www.arkashj.com/skills/$s/raw"). CSS Grid items default tomin-width: auto=min-content; on a 390px viewport this expanded each cell to 565px, forcing horizontal page scroll despite the inner<pre>havingoverflow-x-auto. - Added
min-w-0to the three grid children so they can shrink below intrinsic min-content and the inneroverflow-x-autocan engage. iPhone 13 (390×844) viewport probe goes fromhOverflow: true(175px excess) to clean. - Audited all 19 public routes at iPhone width with a programmatic Playwright probe (
document.documentElement.scrollWidthvsinnerWidth, walking offending elements) — every other route was already responsive-clean.
Docs
- Release note:
docs/release-notes/2026-05-02-weekly-rich-items.md. CLAUDE.md— "Adding content" cheatsheet now documents the rich weekly-item shape and auto-derivation rules.
Build
package.jsonversion bumped 2.4.0 → 2.4.1.- Recommended git tag:
v2.4.1.
[2.4.0] — 2026-05-02 — Public skills library, unified search, weekly logs
Added — Public skills library
- New
/skillsroute renders all 71 Claude Code skills authored across Benmore engagements as a browsable, copy-for-LLM index. content/skills/*.mdis the source of truth — flat directory of 71 skill markdown files (lessons, system prompts, scripts) loaded server-side vialib/skills.ts(fs+gray-matter).app/skills/page.tsx— server-rendered list, filtered by category via<SkillsClient>(client-only filter UI; data is server-fetched).app/skills/[slug]/page.tsx— per-skill detail page with rendered body, line count, category, and a<SkillCopyButton>("Copy for LLM") that streams the raw markdown to clipboard.app/skills/[slug]/raw/route.ts— plain-text endpoint at/skills/<slug>/rawreturning the raw markdown withtext/plain; charset=utf-8. Unauthenticated, cacheable, designed to becurl-able and pasteable into any LLM.app/skills.json/route.ts— JSON index of all skills (slug, name, description, category, lineCount) for programmatic discovery and crawler hints.lib/skills.ts— single loader. Categorization via regex rules (Payments, Python Backend, Frontend & Apps, Compliance & Security, SEO & AI, Design Engineering, Product & Discovery, Workflow & Ops, Tooling & Integrations, Misc).- LLM install instructions surfaced on each skill page; references to the public
skills.shinstall script (replaces per-skill GitHub link). - Page-tour screenshots committed under
docs/screenshots/final/(01–09 covering home, about, experience, projects, research, writing, learnings, skill-detail, media). app/sitemap.tsenumerates/skills+ every/skills/[slug]route.public/llms.txtupdated to advertise/skills.jsonand/skills/<slug>/rawendpoints to AI crawlers.- Benmore badge (
components/ui/BenmoreBadge.tsx) lives on/skillsonly — moved out of nav to keep main chrome neutral.
Added — Unified search on /writing
app/writing/WritingIndexClient.tsxrewritten to search across essays + knowledge-domain articles in one input. Tag filter pills run alongside the search input; results merge writing entries and knowledge entries with source-type badges./learningscontent folded into/writing(the standalone/learningsroute is being retired as the primary surface).
Added — Projects search + tag filter + pagination
app/projects/ProjectsClient.tsx— search box, tag filter collapsed to top 8 tags + "+N more" expander, paginated grid, andWORK_TOOLS(internal CLIs from/work) folded into the same surface so Foundry / RTK / Compound Skills / Excalidraw appear next to public projects.app/projects/page.tsxslimmed to a server shell that delegates to the client component.
Added — Home page rewiring
- Skills card on the homepage promoting
/skills(replaces the prior Knowledge two-up). - "Recent wins" rail and Featured-banner support for surfacing the latest highlight.
- "Second brain" section removed from home and from
/writing(folded into the unified search experience).
Added — /weekly running logs
- New
/weeklyroute renders ISO-week running logs sourced fromcontent/weekly/(MDX) andlib/weekly.ts(typed loader). lib/highlights.ts— typed data bank for "highlights of the week"; consumed by the home Recent Wins rail and/weekly.- Plan:
docs/plans/2026-05-02-004-feat-weekly-logs-and-data-bank-plan.md.
Changed — Navigation
lib/site.tsNAV_LINKSupdated:/skillsand/writing(with merged learnings) added/promoted;/knowledgedemoted to secondary.- Benmore badge removed from
<Nav>; only renders on/skills.
Changed — Timeline avatars
components/sections/TimelineItem.tsx— avatars bumped to 36 px, monogram fallback when no logo is available,bg-elevatedbackground, consistent ring treatment across major and minor entries.
Docs
- New plans:
docs/plans/2026-05-02-003-feat-llm-copy-and-skills-public-plan.md— design + rollout for the public skills library and "Copy for LLM" affordances.docs/plans/2026-05-02-004-feat-weekly-logs-and-data-bank-plan.md—/weeklyroute + highlights data bank.
- Release note:
docs/release-notes/2026-05-02-skills-library.md.
Build
package.jsonversion bumped 2.3.0 → 2.4.0.- Recommended git tag:
v2.4.0.
[2.3.0] — 2026-04-27 — Asset consolidation, mobile, Trustpilot, GitHub live charts
Added — Live GitHub activity section on the homepage
- New
components/sections/GitHubActivity.tsxrendering:- Live 12-month contribution heatmap (
ghchart.rshah.org) — horizontal-scrollable inside anoverflow-x-autowrapper on mobile - Live stats card, current streak, top languages (
github-readme-stats.vercel.app,streak-stats.demolab.com) themed to the Metior-Pro palette (mint primary#5EEAD4, warm-tan accent#F4A66A) - Personal commit-tracker snapshot from
public/images/receipts/github-activity.pngplus structured snapshot table (30d, 7d, active days, raw lines, adjusted output)
- Live 12-month contribution heatmap (
- Wired into
app/page.tsxbetween Projects and Tools+Knowledge sections.
Added — Real Trustpilot screenshots on /media
Reviewtype extended withreviewer,date,excerpt,image.- 5 reviewers (Jim Watkins, Jack Frisbie, Daniel Adewumi, Brad Pierce, Allan Bell) shown as image-cards with
<Image>(fill,aspect-[4/3],object-top); each card links to the live Trustpilot page. - Remaining 5 reviews kept as compact link list under
+ N more verified reviews. - Replaces the synthetic "Verified Benmore engagement" placeholder boxes flagged in design feedback.
- Receipts folder renamed
public/images/reciepts/→public/images/receipts/; macOS-screenshot filenames (with NARROW NO-BREAK SPACE) renamed to clean kebab-case.
Added — Cover-letter response doc
docs/cover-letters/2026-04-keith-liston-o1-response.md— point-by-point evidence inventory mapping to all 8 USCIS O-1A criteria. Private working draft (folder excluded fromlib/docs.tsso it is not served by the website).
Changed — Hero stat box
- Replaced
887% Revenue Growthstat with6+ Years Tech Experienceper design feedback (the work-history claim was misleading on a public landing surface).
Changed — Real X / Twitter handle
lib/site.ts:https://x.com/_arkash→https://x.com/ArkashJ__(the prior handle 404'd).
Changed — Mobile responsiveness
- Added
min-w-0to grid items in the STU STREET disclosure list, the link-only Trustpilot list, the Medium articles list, and the Press list. Withoutmin-w-0, CSS Grid items default tomin-width: autoand refuse to truncate, which was producing 343 px of horizontal overflow on/mediaat a 375 px viewport. - Verified via Playwright at iPhone 13 Pro width (375 × 812): all 13 public routes (
/,/about,/research,/experience,/projects,/work,/writing,/knowledge,/coursework,/credentials,/stack,/learnings,/architecture) reportdocumentWidth ≤ viewportWidth.
Changed — GitHub profile README (separate repo)
ArkashJ/ArkashJ: rewrote profile README to reflect the current Benmore role, 4 published papers, real social handles, and livegithub-readme-statswidgets. Old README still claimed "Currently I'm building a UNet architecture for Image Segmentation" — that work was published months ago.
Changed — Image consolidation
- All site images consolidated under
public/images/:public/myImg.jpeg→public/images/profile.jpegpublic/logos/*.svg→public/images/logos/*.svgpublic/files/*.pdf→public/images/files/*.pdf- 37 unused legacy logos/JPGs at
public/root →public/images/legacy/
- Updated all source references:
app/about/page.tsx,app/about/archive/page.tsx— profile import pathlib/structured-data.ts,lib/metadata.ts— Person JSON-LD + OG fallback URLscomponents/ui/InstitutionLogo.tsx— institution logo URLsapp/credentials/page.tsx,lib/data.ts— verifiable credential PDF URLs
- 58 dev/walkthrough screenshots at repo root →
docs/screenshots/ public/root now contains only:favicon.svg,images/,timeline/,llms*.txt,humans.txt,robots.txt, and verification keys (Google, IndexNow).gitignore: added!public/**/*.pngexception so consolidated images atpublic/images/legacy/are tracked.
Changed — Documentation
CLAUDE.mdrewritten end-to-end. Old version still described the legacy Next 13 Pages Router site with three pages and "lint errors are ignored". New version reflects the App Router + TypeScript-strict architecture, the actual route table, thelib/data layer, the MDX content tree, and the new image conventions.README.mdrewritten as a comprehensive author dossier — full life timeline, credentials, publications, knowledge domains, internal tools, repo tree, stack, links, badges. Goes well beyond a project-only README to consolidate the website's content into a single Markdown reference.
Build
- Production build passes after the move.
npm run lintclean (4 pre-existing warnings unrelated to this change).npm run format:checkpasses. package.jsonversion bumped 1.0.0 → 2.3.0 to align with CHANGELOG.
[2.3.0-prev] — 2026-04-26 — Initial 2.3 draft (superseded)
Changed — Single image location
- All site images consolidated under
public/images/:public/myImg.jpeg→public/images/profile.jpegpublic/logos/*.svg→public/images/logos/*.svgpublic/files/*.pdf→public/images/files/*.pdf- 37 unused legacy logos/JPGs at
public/root →public/images/legacy/
- Updated all source references:
app/about/page.tsx,app/about/archive/page.tsx— profile import pathlib/structured-data.ts,lib/metadata.ts— Person JSON-LD + OG fallback URLscomponents/ui/InstitutionLogo.tsx— institution logo URLsapp/credentials/page.tsx,lib/data.ts— verifiable credential PDF URLs
- 58 dev/walkthrough screenshots at repo root →
docs/screenshots/ public/root now contains only:favicon.svg,images/,timeline/,llms*.txt,humans.txt,robots.txt, and verification keys (Google, IndexNow)
Changed — Documentation
CLAUDE.mdrewritten end-to-end. Old version still described the legacy Next 13 Pages Router site with three pages and "lint errors are ignored". New version reflects the App Router + TypeScript-strict architecture, the actual route table, thelib/data layer, the MDX content tree, and the new image conventions.README.mdrewritten as a comprehensive author dossier — full life timeline, credentials, publications, knowledge domains, internal tools, repo tree, stack, links, badges. Goes well beyond a project-only README to consolidate the website's content into a single Markdown reference.
Build
- Production build passes after the move. No code-level behavior changes.
[2.2.0] — 2026-04-26
Added — Metior-Pro inspired visual identity
- New navy palette:
bg #0A1628,surface #0E1B30,elevated #14233A,border #1C2D48 - Mint primary
#5EEAD4+ warm-tan italic accent#F4A66A - Sharp edges throughout (Tailwind
borderRadiusmapped to 0) - Full-coverage faint grid background (replaced radial-masked grid)
- Secondary 256px grid layer with subtle teal tint
- Geist Sans + Geist Mono via
geistpackage, wired through CSS variables - Theme system: dark + light via
next-themeswithdata-themeattribute - Sun/moon ThemeToggle in nav (lucide-react icons), works on mobile + desktop
- All Tailwind colors are now CSS variables — single source of truth in
globals.css
Added — Hero overhaul
- Two-column layout: copy + animated career-arc demo card on the right
- Pill eyebrow with pulsing teal dot
- Italic warm-tan display callout ("Build, ship, compound.")
- Tag pill row beneath CTAs
- New
<Pill>and<HeroDemo>components
Added — Consistent page headers
SectionHeaderrebuilt: Pill eyebrow → bold title → optional italic-accent line → muted description- Applied across all 11 pages (
/about,/research,/experience,/projects,/work,/writing,/knowledge,/media,/stack,/learnings,/architecture)
Added — Animations (restrained)
- Page entrance fade-up (320ms ease-out) on every
<main>child .staggerutility (40ms incremental delays for grid children).dot-pulsekeyframe for live status dots- Card hover-lift with mint glow
- All animations honor
prefers-reduced-motion
Added — Life Changelog visual hierarchy
- Major milestones (Published / Current / Live) get spotlight treatment
- Larger title, primary border, gradient bottom rule, ring-shadow on node
- Routine "Completed" entries quieter
- Reverse-chronological order
Added — /stack, /learnings, /media, /architecture
/stack— uses.tech-style page, 36 entries × 7 categories/learnings— 12 lessons cards, reverse chronological/media— STU STREET podcast YouTube embeds (4 episodes), Medium articles (7), Substack posts (3), press/architecture— 6 React/SVG diagrams (replaced ASCII)- All wired into NAV_LINKS
Added — Real public links
- BioRxiv: SpatialDINO + ER Exit Sites FIB-SEM
- Journal of Cell Biology (DOI URLs)
- Journal of Chemical Physics 2022 (full title + DOI)
- Harvard Kirchhausen Lab profile page
- Medium @arkjain (7 distributed-systems posts)
- STU STREET podcast (Spotify, Apple, 4 YouTube episode IDs)
- 6 real GitHub repos surfaced as projects (Raft, CloudComputing, NEXMARK, Implicit-SGD, CS411, Spotify)
Added — MDX embeds
<Tweet>,<YouTube>,<LinkedInPost>,<Substack>,<Gist>components incomponents/embeds/- Wired via
components/MdxContent.tsx(server-side vianext-mdx-remote/rsc) - react-tweet themed to navy palette via CSS vars
Added — Documentation
docs/HANDOFF.md— comprehensive 1900-word project orientationdocs/TODO.md— open work + cheatsheet- This CHANGELOG fully refreshed
Changed
app/work/page.tsx— removed all 4 "Demo coming" placeholder stringscomponents/sections/PaperCard.tsx— link always present (URL or "Link forthcoming")components/sections/ProjectCard.tsx— link always present (URL or "Internal / private")app/knowledge/[domain]/page.tsx— grid adapts to single-article (no empty column)app/architecture/page.tsx— dropped redundantbg-bgwrapper, added Pill eyebrowcomponents/Meta.js→ integrated into rootapp/layout.tsx- Active nav link uses primary teal (was reserved-cyan); fixes color rule violation flagged by audit
Removed
- 10 stale feature branches (post-merge cleanup)
pages/directory (entirely; App Router replaces it)components/MdxContent.jsand other legacy.jsduplicatesapp/architecture/flows.ts+components/architecture/AsciiDiagram.tsx(unused after diagram replacement)
[2.1.0] — 2026-04-26 — App Router + TypeScript migration
Added
- Next.js 13 → 15.5, React 18 → 19, plain JS → TypeScript strict
- Pages Router → App Router (
app/directory, server components default) app/layout.tsxwith Person JSON-LD, Nav, Footer, OG metadataBase- All page routes converted:
/,/about,/research,/experience,/projects,/work,/writing,/writing/[slug],/knowledge,/knowledge/[domain],/knowledge/[domain]/[slug],/architecture,/404 app/sitemap.ts(native MetadataRoute, dynamic MDX routes)app/robots.ts(native MetadataRoute)app/VC+app/Volunteering— server-side redirects- MDX migrated to
next-mdx-remote/rsc(server component, zero client JS) lib/site.ts,lib/data.ts,lib/finance.ts,lib/content.ts— all typedlib/structured-data.ts(Person/Article/ScholarlyArticle factories)lib/metadata.tsbuildMetadata()factory typed againstnext/Metadatatsconfig.jsonstrict mode +@/*path aliasestypes/css.d.tsfor CSS side-effect imports.eslintrc.jsondisablesno-html-link-for-pages(nopages/dir)
Added — Dynamic OG images
lib/og.tsxsharedrenderOg()template (1200×630)- Static OG for
/,/about,/research,/experience,/projects,/work,/writing,/knowledge,/architecture - Dynamic per-post OG for
/writing/[slug],/knowledge/[domain],/knowledge/[domain]/[slug]
Added — More MDX content
- 7 additional articles: o1-visa-evidence-hub, FDE feedback loop, Raft in 5 minutes, RocksDB write amplification, convergence intuition, why TypeScript strict, FSDP vs tensor parallel
[1.1.0] — 2026-04-26 — V2 site overhaul on legacy stack
Added
- Design system, all 8 new pages, SEO infra (JsonLd, sitemap, robots), Finance Thesis Tracker + Trade Log, MDX content pipeline, /media page, dynamic OG images, real paper URLs
(Largely superseded by 2.x — kept here for historical traceability.)
[1.0.0] — 2026-04-26 — Foundation
Added
- Apache 2.0 LICENSE
- Production tooling: Prettier, ESLint (stricter), Husky, lint-staged, EditorConfig
vercel.jsonwith security headers + caching- Dependabot config (security scanning, no auto-PRs)
- GitHub Actions CI (lint + format:check + build)
- Comprehensive README with shields.io badges
- ASCII architecture flows in
docs/architecture/ - Public
/architecturepage v1.0.0git tag marking legacy snapshot
Changed
next.config.js: security headers, removedignoreDuringBuildspackage.json: renamedarkashj-com, added dev scripts
Legacy (pre-1.0.0)
- Next.js 13 Pages Router, 3 pages:
/,/VC,/Volunteering - No TypeScript, no tests, no SEO, fixed 1500px width
- Outdated bio (still said "junior at BU")
Roadmap
See docs/TODO.md for prioritized open work. Highlights:
- P0 — Connect custom domain
arkashj.comto Vercel · ffmpeg demo recordings for/work· Submit sitemap to Google Search Console - P1 —
/press,/talks,/achievements,/coursework,/collaborators,/teaching,/open-sourcesurfaces - P2 — Light-mode contrast audit · RSS for
/writing· cmd+k search · resume PDF