Commit Graph
152 Commits
Author SHA1 Message Date
jake 913dfe26bd feat: add Clicker to home page projects list 2026-10-12 17:12:52 -04:00
jake 3baffbbd29 fix: add cacheLife("max") to build-time cached functions and clarify throw-vs-catch caching rule
- Add `cacheLife("max")` to `getLocalImage` (OG image) and `getStaticRoutes` (sitemap) so entries are held as long as possible during prerender instead of expiring at the default TTL
- Update AGENTS.md to distinguish build-time reads (catch inside the cached function, return a fallback, use a short `cacheLife` on the error path) from request-time reads (may throw from the cached function since they never run during prerender)
- Expand the `getCachedComments` comment to explain why throwing is only safe there: a throw inside `"use cache"` during prerender fails the build even if the caller catches it
2026-10-03 09:55:33 -04:00
jake d3b2d07de7 refactor: use "use cache: remote" for request-time reads and updateTag/refresh for mutations
- Replace `"use cache"` with `"use cache: remote"` on functions that run inside dynamic holes (`getContributions`, `getRepos`, `getPostStats`, `getCachedComments`) so entries are shared across server instances
- Switch comment and view server actions from `revalidatePath`/`revalidateTag` to `updateTag` + `refresh` for read-your-writes invalidation
- Extract a `commentsTag(pageSlug)` helper so each page's comment cache is expired independently instead of blowing the whole "comments" tag
- Refactor `getComments` to delegate to a cached inner function that throws on failure (so errors are never cached); `getCommentCount` now reuses that cache entry instead of issuing a separate COUNT query
- Drop `lib/data/views.ts` (`getAllViewCounts`) — the `/api/hits` route now calls `getPostStats()` instead
- Remove `revalidateTag("views")` from `incrementViews`; view counts in `getPostStats` are allowed to lag by a cache TTL
- Remove the `Suspense`/`Skeleton` wrapper on the projects page since `getContributions` is now a remote-cached call
2026-10-03 09:50:06 -04:00
jakeandClaude Sonnet 5.5 6d255ce822 refactor: move read queries into server-only lib/data and render post stats on the server
Reads no longer live in "use server" files (which made them public
endpoints). /notes stats come from one cached query pair rendered on the
server; the post page comment count streams in as a dynamic hole.
revalidateTag("views"/"comments") now invalidates the cached stats.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-03 08:40:14 -04:00
jake 7393b723ea fix: improve view transition handling for notes and static pages 2026-10-01 18:18:27 -04:00
jake f110c3aa04 refactor: centralize feed handler creation, use typed route props 2026-10-01 18:14:25 -04:00
jake 541489dfc9 refactor: redesign notes opengraph image template 2026-09-26 14:33:36 -04:00
jake ed62c0cd6e feat: change main font to Schibsted Grotesk, adjust sizes 2026-09-26 13:17:25 -04:00
jake 2403842f39 fix: address react-doctor violations 2026-09-26 12:54:00 -04:00
jake f91bcd5dae chore: replace sonner with base-ui toast primitive 2026-08-16 18:28:44 -04:00
jake 9b19f9eb39 fix: make sitemap.xml prerenderable 2026-08-16 18:04:40 -04:00
jake 38a00cf203 chore: next 16.3, drizzle v1, other cleanup (#2620) 2026-08-16 16:17:10 -04:00
jake dcddf6e3ec fix: exclude route groups from sitemap 2026-06-30 16:49:52 -04:00
jake b6cf79ff12 refactor: integrate content-collections for notes (#2609) 2026-06-30 16:29:50 -04:00
jake c2bf0c610e chore: update to pnpm 11, bump other deps 2026-06-04 11:58:19 -04:00
jake 62d632f909 refactor: replace react-countup with @number-flow/react 2026-04-30 10:36:33 -04:00
jake b2416ff0db refactor: overhaul view transitions with granular per-page animation components
- Replace single `<ViewTransition>` wrapper in layout with `FadeTransition` and `DirectionalTransition` components applied per page
- Add `components/page-transition.tsx` with reusable transition wrappers
- Expand view transition CSS with named classes: fade, slide, nav-forward/back, morph, text-morph, scale — all driven by CSS custom property durations
- Use React `<ViewTransition name=... share="text-morph">` for shared note title element between list and detail views
- Wrap comments suspense boundary with enter/exit slide transitions
- Add `persistent-nav` and `persistent-footer` view-transition-name groups to keep chrome static during navigation
- Fix reduced-motion override to target delay and duration instead of `animation: none`
- Add tracking-tight and letter-spacing tweaks to home page typography
2026-04-25 10:50:31 -04:00
jake ad90539df4 chore: update dependencies and add new project icon
- Bump versions for @base-ui/react, better-auth, react-activity-calendar, and other dependencies.
- Introduce new 'jarvis-ui' project in the home page with an associated icon.
- Update pnpm-lock.yaml to reflect changes in dependency versions.
2026-04-15 14:14:58 -04:00
jakeandClaude Opus 4.6 e59aee63c5 fix: load OG image fonts from @fontsource/inter instead of Google Fonts
Vercel's build infra was intermittently hitting ETIMEDOUT against
fonts.googleapis.com, causing OG image generation errors during
prerender. Ship the Inter .woff files with the function via
outputFileTracingIncludes so the build is network-free. Also add
turbopackIgnore hints on process.cwd() calls to silence an NFT warning
that was over-tracing next.config.ts into the route bundle.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-08 15:44:40 -04:00
jake 5a3c7b9613 refactor: redesign home page, remove old video pages, migrate to @tailwindcss/typography
- Replace root page with new (home) route featuring a project showcase (Domainstack, Sofa, Versioneer, Snoozle)
- Remove /birthday and /hillary video pages
- Replace custom hand-rolled .prose styles with @tailwindcss/typography via a .markdown utility class
- Remove heading-anchor component and .nvmrc
2026-04-08 15:00:49 -04:00
jake 5a1636baa3 refactor: migrate from Biome to oxlint/oxfmt, remove contact form
- Replace Biome with oxlint + oxfmt (OXC toolchain) for linting and formatting
- Add .oxlintrc.json and .oxfmtrc.json configuration files
- Update VS Code settings and devcontainer to use oxc-vscode extension
- Remove contact form, Resend email integration, and related server action/schema
- Remove unused UI components (accordion, alert, card, tabs, toggle, etc.)
2026-04-05 19:45:18 -04:00
jake b857ab2754 feat: increase GitHub repository limit and enhance styling
- Updated repository limit from 12 to 24 in getRepos function.
- Added new icons and adjusted styles for better visual consistency in the page component.
- Modified text sizes and spacing for improved layout and readability.
2026-02-19 14:44:29 -05:00
jakeandClaude Opus 4.6 6f86fd1ca9 refactor: remove @t3-oss/env-nextjs, use process.env directly
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-19 14:12:42 -05:00
jake c30197ccc5 refactor: eslint/prettier ➡️ biome 2026-02-19 14:02:03 -05:00
jake 4858c8928c refactor: update font imports and variables
- Replaced GeistSans and GeistMono with Inter and JetBrainsMono in globals.css and layout.tsx.
- Updated font variable names to reflect the new font choices in fonts.ts.
2026-02-19 13:36:13 -05:00
jakeandClaude Opus 4.6 eecf93e7cc fix: remove wildcard view transition animations causing double fade-in
The ::view-transition-old(*) and ::view-transition-new(*) rules were
applying fade animations to the root snapshot (header/footer/chrome)
in addition to the main-content transition, causing a double fade
effect and blocking interactivity during navigation.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-17 15:11:09 -05:00
jake 62ebedabf4 fix: update PageTitle component styling
- Changed font weight from 'font-semibold' to 'font-medium' for better visual consistency.
- Added 'not-prose' class to improve layout handling.
- Updated Link component's class to include 'text-foreground' for enhanced visibility.
2026-02-01 10:26:19 -05:00
jakeandClaude Opus 4.5 bcc595e141 refactor: migrate contact form to TanStack Form
- Replace manual state management with @tanstack/react-form
- Add proper Field/FieldLabel components for accessibility
- Simplify server action (remove useActionState signature)
- Remove use-debounce dependency
- Update PGP key links and minor styling tweaks

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-29 22:08:54 -05:00
jakeandClaude Opus 4.5 013311a618 fix: improve accessibility across components
- Add aria-hidden to decorative SVG icons
- Add title attributes to iframe embeds (CodePen, Gist, YouTube)
- Add aria-labels to comment form textareas
- Use proper button element for Markdown help popover trigger
- Use proper ellipsis character in placeholders

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-29 21:38:39 -05:00
jake 74be4382a9 refactor: improve comment components and enhance styling
- Refactored CommentActions to use a state machine for managing action modes (replying, editing, deleting).
- Introduced CommentAvatar component for better avatar handling in comments.
- Updated CommentForm to use context for managing form state, allowing for better state sharing among components.
- Enhanced styling in next.config.ts for improved prose formatting.
- Adjusted CommentSingle to utilize the new CommentAvatar component for consistency.
2026-01-29 21:18:24 -05:00
jake 4dca81b58a fix: batch server requests from posts list 2026-01-28 14:37:37 -05:00
jake 9d8e775fcd chore: update shadcn primitives 2026-01-28 13:56:39 -05:00
jake 5fc9efb181 fix: don't pre-render view and comment count components
- Introduced a new PostStats component to handle view and comment counts, replacing the previous async implementation with a client-side approach.
- Updated CommentCount component to use client-side state management for fetching comment counts.
- Removed unnecessary caching logic from view and comment fetching functions.
- Simplified date formatting by moving it inline, enhancing performance and readability.
2026-01-28 13:35:16 -05:00
jake 29487e6d5f refactor: simplify next link component usage 2026-01-28 12:40:59 -05:00
jake 0d6e489cc8 refactor: neon -> planetscale 2026-01-28 12:26:17 -05:00
jake 928ec66cf6 fix: view transitions 2026-01-28 11:18:56 -05:00
jake b80768cab6 feat: enhance mobile navigation with simple dropdown menu 2026-01-28 10:57:34 -05:00
jake 7743976db8 fix: remove unnecessary flex classname from post titles 2026-01-28 09:35:46 -05:00
jake 2ece5c79fa 2026 Redesign (#2531) 2026-01-27 22:53:59 -05:00
jake e50074bff3 feat: add Domainstack link to the homepage 2025-12-21 13:35:04 -05:00
jake 9cd2810bff chore: bump deps 2025-12-07 14:27:58 -05:00
jake 5ac49b9fe1 fix: disable prefetching for links across multiple components to improve performance 2025-11-27 11:21:40 -05:00
jake b81a9aca91 fix: remove /previously stylesheet from DOM when navigating away 2025-11-23 15:15:05 -05:00
jake 8a09aa918c chore: Next.js 15 → 16 (#2503) 2025-11-22 17:11:42 -05:00
jake 2fa9b73f8d Enhance notes page with comment counts and display. Update data fetching to include comment counts alongside views, and integrate comment count badges in both the notes listing and individual post pages. 2025-09-07 16:26:45 -04:00
jake 20d8aad41f Add @bprogress/next dependency and update layout to use Providers component 2025-09-02 19:00:19 -04:00
jake a05357bc90 soft launch https://snoozle.ai 2025-08-29 18:18:18 -04:00
jake b0ed5ceaf8 Rename app/instrumentation.client.ts to instrumentation-client.ts 2025-08-28 20:09:01 -04:00
jake ab6b188a99 Remove Cloudflare Turnstile integration and replace it with Vercel's BotID for spam protection in the contact form. Update environment variables and dependencies accordingly. 2025-08-28 18:08:05 -04:00
jake 06ac28df1f bump some deps 2025-06-09 22:02:27 -04:00