F
FrankenTUI
100-Hour Sprint

Built in
5 Days.

From zero lines of code to a published Rust crate. The granular story of how FrankenTUI was stitched together in a single intense engineering cycle.

Key Stats

The numbers behind the sprint. Every hour counted.

of development
100hours

≈100.1h from sprint kickoff (2026-01-31) to publish (2026-02-05)

in the workspace
12crates

Split into focused crates for strict layering and clean boundaries

implemented
20+algorithms

BOCPD, conformal, VOI, CUSUM, fairness guards, and more

published to crates.io
v0.1.1

Published 2026-02-05 (after the 100-hour sprint)

Full Timeline

Selected milestones timestamped from the real commit history (2026-01-31 → 2026-02-05).

Day 1 — 2026-01-31 14:21

Architecture Plan Locked

  • Initial commit: FrankenTUI plan documents.

  • Upgraded plan to a hybrid architecture (V5.0 → V6.1).

  • Expanded the bead graph to cover core components, dependencies, and acceptance tests.

System Log v0.1
Day 1 — 2026-01-31 17:48

Reference Library Sync

  • Added a reference library sync script + build infrastructure.

  • Fixed idempotency and Makefile bugs in the sync tooling.

  • Seeded beads for syntax highlighting, forms/pickers, and other showcase surfaces.

System Log v0.1
Day 1 — 2026-01-31 23:23

Workspace Born

  • Initialized the Rust workspace with the `ftui` crate structure.

  • Added 15 comprehensive feature beads with 46 subtasks.

  • Added a comprehensive test bead graph for 15 new feature areas.

System Log v0.1
Day 2 — 2026-02-01 02:10

Terminal Session + Core Data Types

  • Added terminal session lifecycle, color downgrade, style system, and a TerminalModel.

  • Implemented the Buffer API and supporting infrastructure.

  • Implemented GraphemePool with reference counting; reinforced the one-writer rule.

System Log v0.1
Day 2 — 2026-02-01 12:57

Render Kernel Online

  • Implemented BufferDiff and Presenter (state-tracked ANSI emission).

  • Hardened inline mode safety and added comprehensive inline mode tests.

  • Added geometry primitives and the Flex layout solver; fixed build issues across the workspace.

System Log v0.1
Day 2 — 2026-02-01 22:03

Showcase Expansion + Correctness Blitz

  • Major expansion: demo showcase, PTY improvements, and documentation.

  • Broad correctness sweep: saturating arithmetic across widgets/drawing + overflow fixes.

  • Added ftui-render coverage for wide glyph handling and diff engine edge cases.

System Log v0.1
Day 3 — 2026-02-02 23:25

Benchmarks + Validation

  • Added DoubleBuffer swap benchmarks and repaired E2E scripts.

  • Introduced an async deadline controller (survival analysis) for budget enforcement.

  • Expanded action-timeline and visual-fx tests; synced multi-agent workspace changes.

System Log v0.1
Day 4 — 2026-02-03 21:36

Evidence Telemetry + Policy Controls

  • Added evidence structs and optimized diff buffer reuse in the runtime.

  • Added env-var controls for Bayesian diff, BOCPD, and conformal in the harness.

  • Optimized ANSI emission and extracted diff helpers; updated BOCPD evidence field docs.

System Log v0.1
Day 5 — 2026-02-04 16:35

Crates.io Publish Prep

  • Crates.io publish prep + crate docs (bd-3lul4).

  • Stabilized tests (flaky fixes, isolation, snapshot baselines).

  • Kept the project graph and issue tracker synced as publish tasks closed out.

System Log v0.1
Day 5 — 2026-02-05 01:25

Publish: v0.1.1

  • Published v0.1.1 crates (bd-17unx publish 0.1.1 crates).

  • Updated the changelog for the 0.1.1 publish.

  • Captured and shipped the initial public announcement artifacts.

System Log v0.1

The Making Of

Highlights reconstructed from real sprint artifacts: git history plus archived Claude Code + Codex CLI session logs (2026-01-31 → 2026-02-05).

Claude Code Sessions
286

Counted from archived session logs for /data/projects/frankentui (2026-01-31 → 2026-02-05)

Codex CLI Sessions
516

Session files with cwd=/data/projects/frankentui across the 5-day window (2026-01-31 → 2026-02-05)

Git Commits
1001

Commits in the FrankenTUI repo between 2026-01-31 and 2026-02-05 (inclusive)

2026-01-31Day 1Breakthrough

Workspace Born

The sprint started by locking an architecture plan and scaffolding a multi-crate Rust workspace early, so every new capability had a clean home (core, render, runtime, widgets, harness).

2026-02-01Day 2Breakthrough

Render Kernel Online

The deterministic render pipeline landed fast: BufferDiff + a state-tracked Presenter that emits ANSI deltas without hidden I/O or terminal desync.

2026-02-02Day 3Decision

Benchmarks + Validation

The focus shifted from raw feature throughput to budgets and verification: benchmarks, E2E scripts, and test expansions to keep high-velocity changes safe.

2026-02-02Day 3Crisis

Beads Pages Export Debug

A report claimed `bv -pages` had deployed only a few "test" beads. Checking the exported bundle and deployed SQLite confirmed 266 issues were present; the apparent mismatch came from local, uncommitted beads not included in the export snapshot.

2026-02-03Day 4Breakthrough

Evidence Telemetry + Policy Controls

Probabilistic pieces were made auditable: evidence structs, docs, and environment-driven policy controls for Bayesian diff, BOCPD resize coalescing, and conformal alerts.

2026-02-04Day 5Grind

Crates.io Publish Prep

Docs, metadata, and tests were hardened for a real release artifact. Publish tasks closed out in dependency order while the project graph stayed synced.

2026-02-05Day 5Ship It

Publish: v0.1.1

The initial crate set shipped to crates.io and the changelog was updated immediately after publish, closing out the sprint with a concrete release.

Sprint Git Log

Selected, timestamped commit messages from the sprint (local tz).

git log --oneline (selected)

[2026-01-31 14:21] 7a23b45a Initial commit: FrankenTUI plan documents

[2026-01-31 15:54] 40b720d4 Upgrade plan to V6.1: practice-proven hybrid architecture

[2026-01-31 22:27] 6c9158cf Add 15 comprehensive feature beads with 46 subtasks

[2026-01-31 23:23] aadc5679 feat: initialize Rust workspace with ftui crate structure

[2026-02-01 02:10] ced1e5e7 feat: Add terminal session, color downgrade, style system, and terminal model

[2026-02-01 02:15] 0da0ba05 feat: Implement Buffer API and supporting infrastructure

[2026-02-01 12:52] 9abb1bf9 feat(ftui-render): Implement BufferDiff with row-major scan

[2026-02-01 12:57] aa58e858 feat: Implement Presenter with state-tracked ANSI emission

[2026-02-01 13:07] 0baccfdd feat(layout): Add Flex layout solver and terminal_writer fixes

[2026-02-01 22:03] 0d03d898 feat: major expansion with demo showcase, PTY improvements, and documentation

[2026-02-03 21:36] 02427dbf feat(runtime): add evidence structs and optimize diff buffer reuse

[2026-02-04 16:35] 2020c901 docs: crates.io publish prep + crate docs (bd-3lul4)

[2026-02-05 01:25] b8f0d6d3 bd-17unx publish 0.1.1 crates

[2026-02-05 02:34] 5383ae71 Update changelog for 0.1.1 publish

What People Said

Posts and commentary from the build — technical deep-dives, architectural rationale, and demo reveals.

Jeffrey Emanuel

@jeffemanuel

2026-02-05

I just built a complete TUI framework in Rust from scratch in 5 days. 12 crates, 20+ algorithms including Bayesian diff strategy selection, BOCPD resize coalescing, and conformal prediction alerts. Not heuristics — real math.

42
128
REPOST

Jeffrey Emanuel

@jeffemanuel

2026-02-04

The 'alien artifact' quality bar: every statistical decision in FrankenTUI records an evidence ledger. You can literally read WHY the renderer chose dirty-row diff over full diff. No black boxes.

42
128
REPOST

Jeffrey Emanuel

@jeffemanuel

2026-02-03

FrankenTUI's inline mode preserves your scrollback while keeping UI chrome stable. This is the thing that Ratatui and every other Rust TUI framework gets wrong — they destroy your terminal history.

42
128
REPOST

Jeffrey Emanuel

@jeffemanuel

2026-02-03

Zero unsafe code in the entire render pipeline, runtime, and layout engine. #![forbid(unsafe_code)] at the crate level. Correctness over cleverness.

42
128
REPOST

Jeffrey Emanuel

@jeffemanuel

2026-02-02

The Cell type in FrankenTUI is exactly 16 bytes — 4 cells per 64-byte cache line. Single 128-bit SIMD comparison for equality. This is what I mean by alien-artifact engineering.

42
128
REPOST

Jeffrey Emanuel

@jeffemanuel

2026-02-02

Resize coalescing uses Bayesian Online Change-Point Detection. It detects when you're dragging vs pausing and adapts the coalescing delay. No magic thresholds — the model learns.

42
128
REPOST

Jeffrey Emanuel

@jeffemanuel

2026-02-04

FrankenTUI demo running in Ghostty with real-time resize. Watch the BOCPD coalescer adapt between steady and burst regimes.

42
128
REPOST

Jeffrey Emanuel

@jeffemanuel

2026-02-03

Visual effects in FrankenTUI: metaballs, plasma, Gray-Scott reaction-diffusion, Clifford attractors, Mandelbrot — all deterministic math, not random shader noise.

42
128
REPOST

Jeffrey Emanuel

@jeffemanuel

2026-02-03

E-processes for anytime-valid monitoring: you can check after every frame without inflating false positive rates. P(∃t: W_t ≥ 1/α) ≤ α under null. No peeking penalty.

42
128
REPOST

Jeffrey Emanuel

@jeffemanuel

2026-02-04

Rio terminal CRT effect demo of FrankenTUI's demo showcase. Every effect is a concrete dynamical system or PDE with explicit time-stepping.

42
128
REPOST

Jeffrey Emanuel

@jeffemanuel

2026-02-01

The Elm Architecture in Rust: Model + update + view. Commands for side effects, subscriptions for event streams. Type-safe, composable, testable.

42
128
REPOST

Jeffrey Emanuel

@jeffemanuel

2026-02-02

Formal proof sketches in the codebase: sync bracket completeness, diff completeness, dirty tracking soundness. This isn't 'move fast and break things' — it's 'move fast and prove things.'

42
128
REPOST

See what 100 hours produced

Explore the screenshots and video demos, dive into the architecture, or add FrankenTUI to your own Rust project.