Files

51 lines
2.8 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Rewrite plan
Orchestrator: Opus (plans, designs core abstractions, reviews, integrates,
commits). Bulk porting: Sonnet subagents. Hard algorithmic cores: Codex
(gpt-6-astra) or Opus. Progress lives in `STATUS.md`.
## Phases
### Phase 0 — scaffolding (done)
Workspace, crate skeletons, docs, lints.
### Phase 1 — leaf crates (parallel)
- W1 `ghostty-vt` part A: Parser, parse_table, UTF8Decoder, osc + osc/parsers/*, osc/encoding, color, x11_color, kitty/color.
- W2 `ghostty-vt` part B: csi (incl. `SepList`), sgr, modes, charsets, ansi, device_status, mouse_shape, kitty/key, kitty/graphics_command, apc, dcs.
- W3 `ghostty-unicode` + `ghostty-datastruct`.
- W4 `ghostty-os`.
- W5 `ghostty-input`.
- W6 `ghostty-config` (+ cli/args, CommaSplitter, diagnostics).
- W7 `ghostty-font`: Metrics + sprite/*.
### Phase 2 — terminal core
- `ghostty-vt::stream` (stream.zig) once W1/W2 land.
- `ghostty-terminal`: style, hyperlink, size, point, ref_counted_set, page, PageList (Codex/Opus: hardest part), then Screen, Tabstops, Terminal, ScreenSet, Selection, stream_readonly, formatter, render, highlight, search/*, kitty graphics storage/image/exec/unicode, tmux.
### Phase 3 — font engine
discovery (fontconfig), freetype face, harfbuzz shaper (+run, feature, Cache), opentype tables, Collection, CodepointResolver, CodepointMap, DeferredFace, SharedGrid, SharedGridSet, Atlas, embedded fonts, nerd_font_attributes.
### Phase 4 — termio
pty, Command (fork/exec), Exec backend, Termio, Thread, mailbox, stream_handler, shell_integration (+ copy `ZIG/src/shell-integration`).
### Phase 5 — renderer
OpenGL backend (glow), generic renderer logic, cells, cursor, image, link, size, State, Thread, Overlay, shadertoy custom shaders.
### Phase 6 — core + GTK app
ghostty-core: App, Surface, surface_mouse, apprt action/structs, CLI actions. ghostty-apprt-gtk: application, windows, tabs, splits, surface widget (GLArea, input, IME, clipboard), config reload, dialogs, notifications, quick terminal, IPC (+new-window), CSS/UI.
### Phase 7 — integration and polish
End-to-end run, vttest-ish smoke tests, perf, inspector (maybe), docs, CHANGELOG.
## Review protocol
After each work package: orchestrator reads the agent report + notes, spot-checks
code (esp. tricky logic), runs quality gate on the workspace, commits. Larger
cores get an `/astrareview` or Codex review pass.
## Stopping criterion for review rounds (decided 2026-10-12)
Audit rounds RV1–RV17 converged to P3-only findings (no P1 in the last five
rounds). To avoid an endless review loop, RV18 is the final audit round. From
it, only P1/P2 findings, user-visible behaviour in normal use, memory-safety
issues and regressions are fixed; remaining P3 nitpicks are recorded in
docs/rewrite/KNOWN_DIFFERENCES.md instead of triggering further rounds.