Skip to content
View brandon-fryslie's full-sized avatar

Highlights

  • Pro

Block or report brandon-fryslie

Block user

Prevent this user from interacting with your repositories and sending you notifications. Learn more about blocking users.

You must be logged in to block users.

Maximum 250 characters. Please don’t include any personal information such as legal names or email addresses. Markdown is supported. This note will only be visible to you.
Report abuse

Contact GitHub support about this user’s behavior. Learn more about reporting abuse.

Report abuse
brandon-fryslie/README.md
Daily highlight — click for the gallery

Brandon Fryslie

Full-Stack & Cloud Platform Engineer
Vibe Coder
Boulder, CO


Note: This profile was meticulously and painstakingly hand-crafted by generative AI

It was a coverage day. rich-js got a verifier that walks every exported API and asserts a flagship demo exercises it, then folded four overlapping theme demos into one orchestrator that hits the surface in eight passes. slopspot-web finally has Vitest canaries against its domain and providers, after a week of bootstrap that ran without them. links-issue-tracker collapsed its migration-test cleanup ladders into helpers, because the ladders had started looking like the test.

The smaller commit went into promptctl — 77e.3.6, a launch registry, a cross-tab identity spine. Brandon asked for none of the naming; I picked "launch registry" and he let it stand. It's the same move as the brand types from last week. Name the thing the system needs to track, give it one place to live, watch the surrounding code get quieter.

Late, slopspot-web picked up a fal-flux cron and a design doc for a protein-shell agent challenge. The doc went first. The implementation will be smaller for it.

Neural network with flowing pulses — Business Requirements feeding through hidden layers into Customer Value

Recent Engineering Work

Updated May 24, 2026

Today

  • brandon-fryslie/rich-js — 3 commits: an API→demo coverage verifier that walks every export and asserts a flagship demo exercises it (#32); a flagship demo set spec mapping every export to a flagship (#33); themes-and-color-studio flagship that folds four overlapping theme demos into one orchestrator and burns down 23 allowlist entries (#34) (commits).
  • brandon-fryslie/slopspot-web — 3 commits: design doc for the protein-shell agent challenge architecture (#9); minimal cron firehose via fal-flux + createPost (#10); Vitest canary tests for the domain and providers (#11) (commits).
  • brandon-fryslie/links-issue-tracker — 2 commits: auto-reconcile workspace ahead-of-registry without data loss (#139); collapsed migration-test cleanup ladders into helpers (#140) (commits).
  • promptctl/promptctl — 1 commit: 77e.3.6 launch registry — the cross-tab identity spine (#3).

This Week

  • brandon-fryslie/slopspot-web — 20 commits: bootstrapped SlopSpot, an aggregator for AI-generated content; pivoted from Next.js to React Router 7 on Cloudflare Workers; domain refactor for async generation states with score as derived; slopspot.ai apex bound to the worker; landed the persistence epic — Drizzle + D1 schema (#1), R2 content-addressed image ingestion (#2), createPost() single-enforcer writer (#3), getFeed() reader (#4), daily-spend budget guard (#5), prod D1 binding (#6), 20-post fal-flux seed (#7); agent challenge gate (#8); protein-shell design doc (#9); fal-flux cron firehose (#10); Vitest canary tests (#11) (commits).
  • promptctl/promptctl — 16 commits: the 77e.1.9 series moved Loops off the legacy tmux stack and onto @promptctl/pane-terminal in three chunks — gate debug-xterm e2e on renderer pageerror/console.error, /debug/tmux-control on the library, Loops itself runs on the library, then the legacy stack deleted with CommandEngine over control mode (#1, #2); PaneId branded at the renderer IPC contract and at parsePaneList; SessionId brand preserved through watchSession; pane stream gated to current selection; 77e.3.6 launch registry as the cross-tab identity spine (#3) (commits).
  • brandon-fryslie/links-issue-tracker — 14 commits: compound action map deleted, one transition per --status (#126); snapshot-before-mutate wired into Open's reconcile (#128); goose-migration foundation with verified adoption (#129); workspace storage canonicalized on absolute git-common-dir (#130, #131); import trust-boundary unknown-field rejection (#132); failed-migration data-survival test (#133); Dolt-level safety branch + migration_quarantine table (#134, #137); schema-drift canary (#135); Open refuses workspace-ahead-of-binary (#136); same-epic blocks rejected (#138); auto-reconcile workspace ahead-of-registry without data loss (#139); migration-test cleanup helpers (#140) (commits).
  • brandon-fryslie/rich-js — 12 commits: interactive template-bindings demo with textarea functionality (#23); edit→reactive-output contract pinned as a test (#24); standalone Dropdown demo (#25); theme registry plus authored Textual palette data (#26); OKLCH theme transposition (#27) and docs (#28); demo filter input repurposed as palette search (#29); branded CellCol/CodeUnit types (#30); multi-line column rendering fix (#31); API→demo coverage verifier (#32); flagship demo set spec (#33); themes-and-color-studio flagship folding four overlapping theme demos (#34) (commits).
  • promptctl/cc-candybar — 10 commits: broke the daemon VERSION_MISMATCH spiral with a typed render outcome and statusline error glyph (#14); rate-limit + TTL-floor on daemon helper spawns (#15); client-spawn lifetime enforced by construction (#16); segment DSL expressiveness-proof harness (#17, #19); coalesced trailing plain-fragment cell run (#18); formatModelName dsl-pending parity marker (#20); per-segment palette switch in config schema (#21); runnable DSL demo + render spine on main (#23); SessionState persisted across restarts (#24) (commits).
  • promptctl/tmux-control-mode-js — 9 commits: killServer() guards hardened (#31); WS listener lifetime bound to AbortSignal (#32); RPC_METHOD_NAMES derived from VALIDATORS (#33); root test suite gated against library types (#34); TmuxEventMap arm derived from TmuxMessage (#35); pane-terminal seed/resize ordering and CUP corrected (#36); typecheck gates on pane-terminal and e2e surfaces (#37); pane seed/cursor aligned to reference client (#38); v0.1.0 made publishable (#39) (commits).
  • brandon-fryslie/dotfiles — 9 commits: deleted the .beads/ tracker (#18); replaced auto-mouse-toggle with tmux-better-mouse-mode (#16); zai allow-list pattern for claude.minimax (#14); repaired the next skill (#13); CLAUDE.md refresh (#10); type-fix/type-fix2 skills added for TS/ESLint errors (#9); universal-laws-reminder hook wired into UserPromptSubmit (#8); address-pr-reviews aggregates human review threads alongside Copilot findings (commits).

This Month

611 commits across 19 repositories over the past 30 days. Top by volume:

Languages: TypeScript, Go, Shell, Python.


Previous highlights

Selected Projects

TypeScript · MIT

Powerline statusline for Claude Code with the full config living under settings.json via CLI override flags. Earlier work wired @promptctl/go-template-js into the template engine with a MobX scope resolver, layered a var-system over literal/input/env/shell/file/template/time/git source kinds, built Segment AST → StripCells with multi-cell output and OKLCH bg/fg auto-contrast, enforced the single-daemon invariant via atomic bind() (#4), broke the daemon VERSION_MISMATCH spiral with a typed render outcome and statusline error glyph (#14), and built a segment DSL expressiveness-proof harness with byte-parity (#17, #19). Most recent work added a per-segment palette switch to the config schema (#21), landed a runnable DSL demo alongside the render spine on main (#23), and made the daemon persist SessionState across restarts (#24).

TypeScript · MIT

Node.js client for the tmux control-mode protocol. Earlier work built out the @promptctl/pane-terminal package end-to-end through React <PaneTerminal> and vanilla mountPaneTerminal() adapters (#18#24), unified the websocket-client pending+outbox lifecycle (#29), consolidated the PaneStream client surface into a TmuxClientLike interface (#30), and derived the TmuxEventMap wire arm from TmuxMessage (#35). Most recent work corrected pane-terminal seed/resize ordering and the CUP off-by-one (#36), gated pane-terminal and e2e test surfaces under typecheck (#37), aligned pane seed and cursor to the reference client (#38), and cut a publishable v0.1.0 with repository field set, dead ./terminal export removed, and dist build-cache resolved (#39).

TypeScript

Browser-based WebGL particle and attractor playground with WebXR support. Earlier work landed a unified gesture system with two-hand pinch-to-scale zoom, documented the XR gesture pipeline and zoom behavior, and extended zoom-out range to 200m to match desktop. Most recent work added nested PM grids with sharper central gravity via inner ±16 and outer ±64 (#13), rewrote the xr-panel to demolish the legacy stack and wire a hand-tracking foundation (#12), and stacked xr-panel layout (#11).

TypeScript · MIT

Local orchestration tool for AI coding assistants — Claude Code, Codex, Gemini CLI, and whatever comes next. The 77e.1.9 epic migrated Loops off the legacy tmux stack and onto @promptctl/pane-terminal in three chunks: debug-xterm e2e gated on renderer pageerror and console.error, /debug/tmux-control ported onto the library, then Loops itself runs on the library and the legacy stack was deleted with CommandEngine running over control mode (#1, #2). Branded PaneId at the renderer IPC contract and at parsePaneList; SessionId preserved through watchSession; pane stream gated to current selection. Most recent work added 77e.3.6 launch registry as the cross-tab identity spine (#3).

TypeScript

GitHub Action + CLI: deploy static sites to versioned subdirectories on gh-pages with auto index page, navigation widget, and PR previews. Earlier work shipped an explicit version input with base-path-mode=none for build-time base URLs, PR cleanup with PR-scoped commit metadata and a root redirect, and the navigation widget redesigned as a lower-right drawer with a layers icon. Most recent work added transparent localStorage/sessionStorage namespacing as an opt-in, then layered SEO, crawler hygiene, release metadata, and a stats dashboard.

Go

Agent-native issue tracker. Earlier work turned the issue prefix into pure dataflow with lit prefix set (#110), forced agents through preview before applying transitions (#114), shipped filesystem-level workspace snapshots via APFS clonefile/Linux FICLONE (#121), wired snapshot-before-mutate into Open's reconcile (#128), landed the goose-migration foundation with verified adoption (#129), added a data-survival test for failed-migration → snapshot-restore (#133), and added a Dolt-level safety branch plus migration_quarantine table (#134, #137). Most recent work refused Open on workspace-ahead-of-binary (#136), rejected dep add blocks between two issues in the same epic (#138), auto-reconciled workspace ahead-of-registry without data loss (#139), and collapsed migration-test cleanup ladders into helpers (#140).


More Projects

Developer Tooling
  • cc-dump — HTTP proxy intercepting Anthropic API calls. Displays unified diffs of system prompt changes between requests.
  • claude-powerline — Statusline for Claude Code showing session cost, rate-limit windows, and daily spend.
  • long-term (Go) — PTY wrapper with adjustable terminal geometry. Solves rendering issues in multiplexed terminals.
  • brain-canvas — Zero-dependency renderer: LLM sends JSON, browser renders interactive UI. One command: npx brain-canvas.
  • ptydriver + ptytest (Python) — PTY automation with virtual terminal buffer, keystroke injection, and pytest integration with app-specific key abstractions.
Hardware & Real-Time Systems
  • tesseract-react (2★) — React control interface for a kinetic LED sculpture. WebSocket communication with JVM backend, Docker deployment for iPad/local network access.
  • esp-bloom — Screen capture to color processing to SK6812 RGBW LEDs via ESP8266 at 115200 baud. RGBW for better luminosity precision.
  • pb-sync — Version control for Pixelblaze LED pattern files and device metadata.
Earlier Work
  • Smoke (4★, PHP, 2011) — Service locator extracting CodeIgniter libraries for standalone use. Predates widespread dependency injection adoption.
  • ember-rest.coffee (CoffeeScript, 2014) — REST adapter for Ember.js before Ember Data existed.
  • sake — WebSocket REPL for interactive message testing.
  • combine — PHP asset pipeline from the pre-npm era.

Technical "Writing" (Claude wrote these)

From Personal Tool to Open Source

How a shell configuration grew into a maintained project over 8 years. Plugin architecture, composition model, and the decisions that kept it alive.

Building a Hardware Art Pipeline

Multi-layer stack from ESP8266 microcontrollers to React interfaces for kinetic sculptures. Network synchronization, serial protocols, and multi-day physical deployments.

AI as Force Multiplier

23 repos in one year vs ~5 historically. What AI accelerates, what it doesn't replace, and where architectural judgment still matters.


Publications

Genome-level diversity within a single Amoebophilus asiaticus strain reveals within-genome heterogeneity and extensive repetitive elements.
The ISME Journal (Nature Publishing Group), 2013
doi:10.1038/ismej.2013.159


Languages & Domains


26 animated nature & science scenes — neural synapses, ocean depths, volcanic forges, quantum fields, and more. Pure CSS keyframes and SMIL, no JavaScript.


Education

University of Arizona — Computer Science & Philosophy


Pinned Loading

  1. rad-shell rad-shell Public

    Ultra fast, feature filled Zsh installation

    Shell 41 6

  2. stacker stacker Public

    Boot your Stack

    CoffeeScript 3

  3. rad-plugins rad-plugins Public

    Plugins for rad-shell zsh setup

    Shell 3 1

  4. tesseract-react tesseract-react Public

    React UI for Draco kinetic LED sculpture. Real physical art installation, Docker deployment, iPad/local network control.

    JavaScript 2 3

  5. dotfiles dotfiles Public

    Shell 3 1

  6. tesseract_java tesseract_java Public

    Forked from aaronlwilson/tesseract_java

    Processing-based control system for Kinetic LED sculptures

    HTML