Today
Standardized the Frisp brand name across the app while keeping identifier-safe slugs separate.
Live pulse of my work. It reads my commit history across every project I work on. Design work, client work, learning, and thinking don't show up here.
Standardized the Frisp brand name across the app while keeping identifier-safe slugs separate.
Shipped an SVG optimization lane with guarded automatic tuning, vector-true previews, and a 215-file benchmark corpus that outperformed nano and ImageOptim. Also added calibrated film grain across formats with live preview and per-image controls.
Updated the mobile header menu to use the browser's native command invoker.
Shipped subject-first drafts review with per-item promotion, editable model rows, identity questions, evidence-safe layouts, and creatable benchmark suggestions. Added DeepSWE 1.1, CursorBench 3.2, Grok 4.5 scores, and automatic re-judging against the live site.
Defined the next codec work around JPEG XL, jpegli, transcoding, and automatic quality, alongside the CLI shape. Reserved a scoped npm placeholder after the unscoped frisp name hit npm's similarity filter and opened a support ticket.
Shipped full-page Pulse lab experiments and Quiet Secret locks that show private activity as a count, plus automatic dev commit refreshes with a last-updated readout. Completed the theme picker keyboard and ARIA model, fixed article prerendering, removed lab data from production, and reorganized the lab navigation.
Built evidence-led drafts review and inbox labs across several variants, added fail-closed model promotion and a reasoning-level attribution ruling that drops unsupported claims to the default cell. Also fixed product variants crashing the models page, made model deletion cascade, hardened provenance with a mismatch checker, and sped up profile scoring.
Explored a graphite-first intro identity through billboard, frame, split, ledger, prism, and showcase concepts, one morphing the hero into the real editor. Also fixed lingering bulk apply timers on reset, unified the encode-signature projection, and cleaned the bulk editor without changing behavior.
Advanced the admin lab with version sub-tabs, a dedicated lab gallery, draft-review layout variants, and a redesigned draft triage flow, while documenting onboarding-audit findings that reduced repeated discovery work for future agents.
Moved project pages from /projects to the site root, made the projects grid the home page, added redirects for old URLs, refreshed discovery and OG generation, and tightened Pulse self-exclusion.
Taught the menu bar to resolve a raster favicon variant for sites that only ship an SVG, and fixed monochrome detection to count CSS named colors as explicit. Reworked the rows to lead with the project name, parenthesized the port and domain, and pruned recents for deleted folders.
Synced the latest Dev Servers changelog into the site.
Hardened RAGI simulation and admin workflows, shipped command-palette navigation, built the draft review and promotion path with evidence screenshots, ingested Seed 2.1, and recorded SEO, accessibility, and model-page audits.
Completed a porcelain crop-tool lab and experiment gallery, while landing core editor performance work for decoded-source caching, worker buffer transfers, bulk drain loops, sparse overrides, tests, and Svelte idiom cleanup.
Improved the menu bar experience with favicons, tinted fallbacks, red kill controls, auto-open handling, and better detection of pnpm, helper binaries, shim-relative launches, and ephemeral listeners.
Reworked the landing intro: a rebuilt brand lockup with capability-aware copy, a livelier animated blob field you can click anywhere to open the picker, and OS light/dark theming with a softened load button. Refreshed the logo and wordmark assets and set a clearer page title.
Finished the Sqush-to-Presk-to-Frisp rename with the brand centralized in one module, moved the app to Cloudflare Workers static-assets hosting, and stood up a sunset Worker that takes over the old domains with a verified kill switch and query-preserving redirects. Also fixed an e2e bulk-override race and hardened CI flakiness.
Renamed the project entry twice as Sqush became Presk then Frisp, updating the slug, registry, route, redirects, and pulse data, and repointed the registry at the renamed local repo folder.
Shipped the contextual left panel with image info and Compare as controls, then promoted bulk mode with two-or-more-file routing, folder import, dropped-folder traversal, ZIP Save all, keep-larger safeguards, undo, and the stack resting stage.
Enabled the accepted level-aware simulation priors in production, kept the failed Pro floor off, added reassessment gates for new data, removed the unapproved public levels table, fixed level ordering and composite percents, and trimmed dead scoring config.
Designed the bulk UI around production editor components, landing the stack stage, multi-select, hero stats, and a promotion spec. Grew the bulk engine with relative-path import, keep-larger export, pure undo, encode sharing, persistent workers, and 58 tests.
Drove the score-record migration through family merges, provenance, redirects, per-score source UX, and reasoning-level editing. Designed level-aware simulation priors with a seedable CV harness, shipped /api/export, and retired old scoring code.
Shipped a menu bar command with per-server actions, frecency starts, and per-project Kill All. Made Shopify theme startup choose a free port when 9292 is busy and explain conflicts clearly.
Built the Raycast extension with model and benchmark search, /api/export SWR loading, detail panels, and AI tools. Fixed production JSON parsing, hid blank level tables, and moved documentation to the wiki.
Registered Presk and a private project, folded wiki repos and linked worktrees into main checkouts, and synced Dev Servers and Tab Limiter changelogs.
Shipped a safer update path: new service-worker versions now prompt users to refresh, hashed assets cache immutably, stale fractional settings self-heal on load, and CI separates formatting from deeper checks.
Added Sonnet 5 and refreshed leaderboard data.
Updated Vite to 8.1.2.
Updated Vite.
Updated Vite to 8.1.2.
Fixed deploy freshness by auto-activating new service workers, reloading controlled tabs onto the latest build, and preventing stale cached service-worker files.
Fixed tab limiting so already-open tabs are never closed when a window is over its limit.
Shipped undo/redo with buttons and shortcuts, backed by a new encode-result cache and history foundation. Overhauled resize and zoom, made size presets shrink-only, added Reset view, and unified codec panels into Quality, Effort, and Advanced tiers.
Added dev-only deltas to the Pulse Today, week, and month cards and widened the hourly snapshot to three days. Fixed NumberRoll baseline alignment, logged the XPlus changelog, and tightened Pulse self-scan exclusions.
Trimmed the codec set by removing browser JPEG, PNG, GIF, and QOI outputs, then reconciled e2e coverage, benchmarks, and docs with the leaner encoder list. Bumped Vite to clear a high-severity advisory.
Upgraded the site to Astro v7 and bumped the sitemap integration to 3.7.3.
Shipped 1.7.3, fixing a break-ending warning that fired at the same time as the redirect.
Made an early work-in-progress commit.
Updated the frontend toolchain and clarified the npm package manager.
Preserved non-square project icons' natural aspect ratio and bumped the Fill project's order.
Added an OG image generation system, generated social cards for every page, and wired the OG/Twitter meta tags, hooking the Pulse card into the pulse automation. Shipped a resolved-order theme picker as the header control and synced the TubePlus and XPlus changelog/privacy from source docs.
Updated the privacy policy permissions (declarativeNetRequest, retained tabs), dropped the unused tabs permission, and cleaned em dashes from the changelog and privacy copy.
Removed an em dash from the 1.7.2 changelog entry.
Shipped releases 1.7.1 and 1.7.2: break-ending warnings now fire before a break ends rather than after it resumes, plus a popup visual refresh with a zinc/amber palette, abbreviated units, a shared dialog backdrop, and no opening animation.
Refreshed Code DesignArena coverage across new and existing models, adding Minimax M3 and Grok Build 0.1 while recomputing RAGI scores.
Added GLM 5.2 and Kimi K2.7 Code to the leaderboard with refreshed benchmarks and recomputed RAGI scores, fixed a Button href resolution bug that was crashing the admin during SSR, and patched a high-severity devalue DoS advisory.
Upgraded the build to Vite 8 and vite-plugin-svelte 7, and cleared outstanding security advisories with an npm audit pass.
Patched a high-severity devalue DoS advisory.
Patched a high-severity devalue DoS advisory.
Patched a high-severity devalue DoS advisory.
Released 1.5.0 with a redesigned popup, granular mix and playlist cleaning controls, and playlist-context stripping before load, plus clearer privacy and architecture docs.
Self-hosted the Outfit font as static WOFF2 assets and added type declarations so the UI keeps its typography without depending on fontsource and the type gate passes.
Redesigned the studio UI around a stronger landing hero, canvas stage, glass toolbars, floating panels, a semantic results footer, refreshed option primitives, and Outfit-based design tokens, with dev startup pre-bundling wasm-feature-detect.
Shipped dashboard upgrades: live-tailed startup logs, Copy Network URL and port actions, and Open in Editor with a shared editor preference. Cut polling cost with cached process metadata and fixed LAN exposure and branch-switch detection.
Slimmed the public simulated-data payload by 10x and capped prerendered rows, simplified RAGI Studio around v5, made sidecar generation hash-gated and read-only, fixed simulator rounding, and added Claude Fable 5.
Moved the Pulse datasets out of the client bundle and behind server loads, dropping a 118 KB script from the Pulse pages, and swept away redundant prerender flags.
Halved the first-visit payload, 14.3 MB down to 6.8 MB, with variant-aware codec precaching, lighter landing assets, and a calmer blob frame loop.
Shipped the core softbox tool: persistent brightness and color-temperature controls, keyboard and drag adjustment, shareable URL state, wake-lock lightbox mode, and user/dev docs.
Added the tavlean project page and generated AI discovery files from prerendered output, then kept private stack references out of the public build and refreshed the Fill project page.
Modernized the package to Svelte 5 runes with latest dependencies, kept navigation transitions in the layout, and restored Playwright coverage after pruning the old CI setup.
Added an upstream signal ledger for tracking codec and dependency signals.
Made Pulse badge reveals flicker-free with staggered timing and no layout shift, and fixed the dark mobile body background.
Stabilized the Pulse badge rows so they hold a steady layout instead of shifting.
Shipped project Pulse timelines with per-project rows, header nav icons, and a tab icon, plus a leak-proof Dev-view projection for local private-project reveal, refreshed Pulse summaries, synced the Slift UI changelog, and defaulted the site to dark.
Released 0.0.3 and fixed the npm publish pipeline: moved CI to Node 24 with pnpm 11.5.1, restored provenance now that the repo is public, and surfaced the changelog for consumers.
Added detection for Shopify CLI dev servers.
Shipped the Dev/Live preview switch, made the toggle accessible, published the Slift UI project page and changelog tab, and expanded Pulse with rolling numbers, linear hourly charts, staggered badges, and prior-year grids.
Collapsed the package into a single @slift/ui library, switched releases to npm OIDC trusted publishing, released 0.0.2, renamed the repo, added release docs and a roadmap, and optimized NumberRoll rendering.
Built the native odometer that rolls Pulse toggle numbers in their trend direction, added a dev-only hourly PulseHours card with a Today/Last-24h toggle and sync button, extracted InsetCard, and reverted to the system font.
Rebuilt the editor landing screen as a pink-blob drop/paste affordance with a horizontal logo lockup, resolved the spinner into a green Optimised badge, defaulted WebP to quality 80, and consolidated docs into one README.
Stood up the Slift monorepo with @slift/ui, the slift CLI, and the sliftui alias. Added CI and provenance release workflows, a publishing guide on Node 22, and a dark docs design spec.
Upgraded major image codecs to CVE-closing maintained versions, restored cross-origin isolation for WASM threads, removed dead codecs, and added codec benchmarks plus cross-engine Playwright regression coverage.
Tuned Pulse charts with a diminishing-returns curve, emerald sparkline ramp, and per-day stats, refined dark surfaces and card layouts, rewrote the About bio, and polished site text wrapping.
Hardened the SvelteKit editor with value-typed controls, load-scoped reactivity, diagnostics cleanup, shared option wrappers, loopback-safe service worker guards, accessible landing behavior, and refreshed handoff docs.
Added a dev-only UI lab for morph-based theme switchers, preserved earlier picker explorations, refined the mirrored close animation, improved CommitCount typography, and added Fira Code.
Pulled in upstream contributions.
Completed the SvelteKit migration, promoted the app to root, rebuilt the dual-side editor with synced zoom, codec panels, processing controls, shallow-routing history, browser-native encoders, and parity fixes.
Reworked Pulse into badge-led per-project day summaries, retuned count styling and responsive heatmap behavior, added the Frisp project page, and excluded daily routine commits from the scan.
Set browser theme color and mobile tint from the canvas surface, refined Pulse surfaces and heatmap behavior, documented the daily routine, and made summary freshness fingerprint-based.
Added a runnable Svelte 5 single-image compressor for WebP, AVIF, and JPEG XL, then verified browser behavior with measured results and corrected the recorded numbers.
Refreshed benchmark data.
Reworked Pulse into digest sections with real per-day summaries and visual stats: headline numbers on the graph, sparkline digests, a finalized heatmap scale, instant custom tooltips, and a project registry as the single source of truth for repo wiring.
Hardened the dev-server flow: fixed a log file-descriptor leak, excluded failed spawns from the expecting set, fixed stale-snapshot recents removal, and improved spawn reliability and focus handling.
Shipped the /engine page explaining the simulated-data scoring methodology and wired the hybrid v1+v2 estimator into production, backed by a cross-validation harness and a v2 factor-model estimator; refreshed model data with Terminal-Bench 2.1.
Released the Start Dev Server command: a native folder picker, an empty-state and per-row action, a launchContext state machine owning the spawn flow, and startup logs surfaced on failure.
Added Opus 4.8 and Qwen 3.7 Max benchmark data and switched dev to portless run --name for worktree-friendly URLs.
Added a 3s timeout to the portless list call and tidied changelog formatting.
Overhauled the changelog renderer with an unreleased badge, lead line, and text sizing, tweaked the project badge style, and synced the dev-servers and tab-limiter changelogs.
Pushed the SvelteKit migration deep into the codec layer, proving asset paths for WebP, AVIF, JPEG XL, OxiPNG, MozJPEG, QOI, ImageQuant, resize, and rotate, then shared worker, service-worker, and image-pipeline seams.
Added searchable project and branch filtering, worktree-aware grouping with per-row branch tags, and portless custom-domain detection, then moved detection into TypeScript and hardened restart behavior.
Pushed the SvelteKit migration deep into its codec layer, proving WebP, OxiPNG, resize, quantize, MozJPEG, QOI, rotate, worker bridge, service-worker cache, and shared image-pipeline seams, then recorded the prototype verdict.
Added synced project markdown tabs driven from source repos, with collapsible changelog entries, per-tab entry counts, draft hiding, and clear warnings for stale or missing content mappings.
Fixed CWD paths with spaces and taught detection to recognize direct-script node servers, rendering their favicons via data URIs.
Updated the privacy and changelog docs.
Updated the privacy and changelog docs.
Updated the privacy policy format.
Ran a deep refactor pulling the editor and bulk-processing app into small, testable state helpers and workflows, with async-update guards and listener cleanup. Built out the bulk queue with snapshots, restore, requeue, abort handling, export naming, and concurrency limits.
Renamed the project to Sqush and stood it up as a standalone repo with domain metadata, CI across macOS, and a dependency-audit sweep. Built the bulk image processing architecture with orchestration and tests.
Added a user-controllable theme picker with View Transitions crossfades, paired light/dark project screenshots, TechChip variants, theme-variable colors, featured-project homepage focus, and swipe navigation for the project lightbox.
Added branding assets and updated the DeepSeek price.
Added assets.
Added WebP screenshots.
Added WebP screenshots.
Added branding assets.
Built the shared project page: a header tile with redesigned typography, route-backed tabs, and a slim sidebar, plus a screenshot carousel with lightbox. Extended ProjectMeta with link kinds, platforms, images, and markdown bodies, added build-time prerendered privacy and articles tabs, and tech-icon chips.
Enabled an SSR-safe player shell with SEO metadata.
Refined site surface styling and dark-mode hover, improved layout, and trimmed clutter: dropped project status badges and external-link labels, updated the mail icon, and removed the footer click focus ring.
Expanded project detail pages and linked homepage projects through, added the Dev Servers project, set explicit project ordering, and polished listing copy.
Added Gemini 3.5 Flash.
Differentiated the project from Port Manager in the docs per reviewer feedback.
Added Composer 1 and optimized the icon.
Built out AI discoverability: build-time Markdown companions served via content negotiation, an llms.txt overview, site structured data and JSON-LD, and a permissive crawler signal. Expanded the sources methodology page with the composite score formula, a data-access FAQ, and simulated-evidence controls.
Added AI discovery: canonical and site-identity schema, AI protocol files, and Markdown companions served to agents via the Accept header. Polished the About page, added a service FAQ, sharpened the pricing FAQ, and fixed JSON-LD lint.
Added an AI visibility FAQ page and llms summary metadata, refreshed project positioning, fixed canonical metadata output, restored view transitions, and pinned the Cloudflare Node version.
Added a reusable Button component and migrated existing buttons to it, built /terms and /privacy pages from the live site, and reworked the footer with Privacy/Terms and copyright. Extracted Cta and Showcase components, wired service icon assets, and removed orphaned components and fonts.
Rebuilt the home page from the Figma design with an infinite horizontal showcase marquee that slows on hover. Extracted a shared Brand component reusing the favicon as the mark, dropped BEM for shorter scoped class names, and documented project conventions.
Improved YouTube URL cleaning, added popup controls, simplified the extension runtime, and tidied the build and documentation.
Updated logos, including the Fill logo.
Reworked the content system: scaffolded an article aggregator, cut articles over to it and dropped the mdsvex pipeline, migrated projects to a per-page model, wired bidirectional related content, and filtered drafts from production builds. Centralized page SEO via load and the root layout, and switched Tailwind to the Vite plugin.
Started a new ambient audio app: scaffolded the SvelteKit project, built a web-audio engine, added full-bleed looping video with scene crossfade, and replaced DialKit with custom Svelte controls for volume and per-track progress sliders. Wired auto-advance, first-click audio unlock, and creator docs.
Added global-rank reveal: rank on hover plus tap-to-reveal on mobile, with a faster forward transition. Surfaced model size next to name and org across the homepage and admin lists, linked admin model names to their edit pages, and refreshed the model dataset.
Reworked the simulated-data UI: per-profile scoring with simulated data, soft-orange accent, simplified controls, a hover rank style with tooltip, and an icon-only columns button. Added an admin sort dropdown and collapsible sidebar, plus a benchmark dataset refresh.
Major scoring work: added v4 and v6 pairwise-Elo backends, wired v4 through admin previews and the leaderboard, and refined the V5 frontier simulation with controlled extrapolation and sparse-data handling. Redesigned the lazy-fetched simulated-data toggle with smooth transitions and a sparkle-marked cell, and added a Visualizations lab of score-decomposition variants.
Reorganized the admin Models routes and refreshed the sidebar, dashboard thresholds, and model data.
Built adaptive countdown prompts and risk-state focus friction: surfaced focus risk in the popup, used risk states to scale friction, and included active breaks in the focus report. Refined the break-flow copy and cleaned up the release changelog.
Refreshed model data and added Grok 4.3.
Laid the Astro foundation: tokens, routes, and draft case studies, then ran a multi-variant comparison harness with screenshots and a report. Reworked the hero into a Strategy, Design, Code flow and toned the copy down.
Upgraded to Astro 6.1.10, added dynamic OG images, removed dead CSS and a keyframe conflict, and pinned Node 22 for Cloudflare Pages.
Tracked adaptive focus-break friction and updated the snooze options.
Added Mistral Medium 3.5 and minor UI tweaks.
Added more GPT 5.5 benchmark data.
Added Mimo open-source model data and updated the dev setup.
Refreshed benchmark data with a DeepSeek price update and asset cleanup.
Centralized composite-column styling through shared category config, routing the matrix palette and admin list through it and tinting headers by category. Added per-profile percentage or rank display with smooth cell swapping, refreshed brand assets and OG image, and skipped search autofocus on touch devices.
Built the admin benchmark matrix: moved it to a top-level route, added an open-source license filter, and redesigned the dashboard around weakest-coverage models with a live contribution panel. Solved a thorny SPA-nav picker focus bug, and hardened the data layer with rolling backups and a per-file write mutex.
Refined the benchmark sheet's composite chips: a Lucide star icon for proper sizing, letter-only collapse when squeezed, and tint that follows category. Synced the dot palette to the sheet, drove profile visibility from data, unhid the Overall column publicly, and added GPT 5.5 plus Toolathlon and DesignArena Code.
A small data refresh.
Tuned the inset shadow on table surfaces.
Pinned the site footer to the viewport bottom, extracted it to its own component, and made it sticky only on the home page while tuning the table height. Fixed the model detail page width, and added Qwen 3.6 Max and Kimi K2.6 plus a data refresh.
Rebuilt the benchmark sheet as a spreadsheet-style viewport that saves without reloading, with sticky thead/tfoot separators via inset shadows, sort that respects saved patches, click-sort, and editable model-meta columns. Stopped the dev server reloading when the lab writes data files, and added a portless setup.
Built the model-form lab through many modes (Command Center, Benchmark Grid, Leaderboard Editor, Inspector, Compare, Dial, Command) with a shared live-scoring helper, then scaffolded the fill-one-benchmark-across-models sheet with sort, fill, and paste-match. Fixed the Save-all 404 by repointing forms, refined benchmark inputs, and added Muse Spark with new benchmarks.
Restructured the admin lab into tabbed sub-routes with a polished, grouped, collapsible sidebar. Added the RAGI Agentic composite and removed the legacy computedFrom system, applied the squircle style across admin buttons and the search bar, fixed a11y warnings, renamed assets to rankedagi, and added GPT 5.4 Pro.
Promoted the v3 scoring to production with its gamma curve, coverage knobs, and lab page, then sorted the public site by the configured RAGI profile. Fixed a silent delete button in the model edit dialog, rearranged benchmarks, and added Opus 4.7.
Shipped the initial Dev Servers Raycast extension: stable port detection, Bun-server detection with the right package manager for restart, terminal/finder/refresh actions, a tool filter, validated favicons, confirm-on-destructive actions, and error surfacing. Added README, changelog, linting, Raycast Store screenshots, and optimized icons.
Added windowed rendering to the admin models table for better performance, and sped up admin navigation by caching JSON reads on mtime and size with hover preloading.
Made the v2 split-pane editor the canonical model editor, retiring the old edit route, with snapshot reset and forced remount on model switch. Converted the admin top nav to a collapsible left sidebar, added a read-only aesthetic preview page, and fixed RAGI benchmark visibility and a model-edit form leak.
Shipped v1.5.0 with a friction overhaul, reworked snooze, and a popup sync fix, plus tightened focus-feature copy.
Renamed a folder.
Rearranged the layout.
Rebuilt RAGI Studio with live preview, a Lean scoring mode, and unified controls, redesigning the source table with ChipSelect controls and aligning its design language with the rankings preview. Standardized benchmark keys to lowercase-with-dashes, unified admin model form styling, and handled currency negatives.
Added a dedicated RAGI studio with scoring controls, added the Vending Bench 2 benchmark with currency-format support and negative values, and polished the model edit form. Refined the mobile layout: a brain icon for thinking, compact dates, tighter padding, and a hidden version badge.
Reworked the admin: redesigned the benchmarks page as a table, added delete-model and unsaved-changes warnings, persisted table sort, and replaced license/type/version dropdowns with segmented toggles plus a ThinkingEffort field. Settled column drag-and-drop after several reverts, and refined mobile table layout.
Migrated the rankings grid from an HTML table to CSS Grid with subgrid, with conditional frozen-pane and header shadows on scroll. Added drag-and-drop column reordering with persistent visibility, fixed lint and svelte-check errors across files, and improved the model edit form.
Fixed an O(N^2) DataTable bottleneck and replaced $effect anti-patterns with idiomatic Svelte 5, removed 8 unused shadcn families, and dropped date-fns for a native relative-time helper. Added benchmark archiving, model filters, and a multi-link array, unified benchmark category sort order, and centralized admin styling.
Refactored JSON data access for SvelteKit, fixed benchmark form save behavior, sorted admin models by release date while keeping edits in place, and added the GLM 5.1 model.
Scoped CSS to load only where needed, made navigation consistent with a Home link, improved accessibility, and refreshed the avatar.
Cleaned up the repo root, simplified the Svelte and Wrangler config, tightened syntax highlighting, and trimmed icons and dev dependencies.
Added SEO JSON-LD, a nav helper, and CI checks.
Made admin updates.
Added model table header sorting and a delete dialog, refactored the admin layout and styling for responsiveness and dark mode, set a 404 fallback for unknown URLs on static hosts, and sourced benchmark columns from benchmarks.json.
Dropped Supabase for local data functions, adding model helpers and a pre-sorted models.json. Adopted a new font and color stack with dark mode, moved filters to bindable state with $derived.by, and migrated to $app/state and resolve()-based navigation.
Revised the privacy policy and made the copyright year update dynamically.