From 963fcc6458d13ebb1141419128bd836d18e5f9b6 Mon Sep 17 00:00:00 2001 From: Kyle Isom Date: Tue, 31 Mar 2026 17:15:48 -0700 Subject: [PATCH] Embed fonts from repo instead of ~/.local/share/fonts Move BrassMono font files into fonts/ and use a repo-relative include_bytes! path so the build is self-contained. Add CLAUDE.md. Co-Authored-By: Claude Opus 4.6 (1M context) --- CLAUDE.md | 33 ++++++++++++++++++++++++++++++++ fonts/BrassMono-Regular.ttf | Bin 0 -> 41804 bytes fonts/BrassMonoCode-Regular.ttf | Bin 0 -> 44900 bytes src/main.rs | 5 +---- 4 files changed, 34 insertions(+), 4 deletions(-) create mode 100644 CLAUDE.md create mode 100644 fonts/BrassMono-Regular.ttf create mode 100644 fonts/BrassMonoCode-Regular.ttf diff --git a/CLAUDE.md b/CLAUDE.md new file mode 100644 index 0000000..bbcf851 --- /dev/null +++ b/CLAUDE.md @@ -0,0 +1,33 @@ +# CLAUDE.md + +This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository. + +## Project + +Redactor is a two-pane text redaction GUI built in Rust with eframe/egui. Users paste text in the left panel, select regions and press Ctrl+R to toggle redaction, and the right panel shows a live preview with redacted regions replaced by block characters (U+2588). The entire application lives in `src/main.rs`. + +## Build & Run + +```bash +cargo build # debug build +cargo build --release # release build +cargo run # run the app +``` + +Nix flake provides the dev environment (Rust toolchain + native deps for egui). Direnv auto-loads it via `.envrc`. + +## Architecture + +All logic is in `src/main.rs` (~490 lines) in the `RedactorApp` struct: + +- **State**: source text (`String`) + sorted non-overlapping byte ranges (`Vec>`) of redactions +- **Left panel**: editable `TextEdit` with redacted regions highlighted via `LayoutJob` text formatting +- **Right panel**: read-only preview where redacted bytes become full-block characters, preserving whitespace +- **Reconciliation**: when source text is edited, `reconcile_redactions` adjusts byte ranges by detecting unchanged prefix/suffix regions +- **Range operations**: `add_redaction` merges overlapping ranges; `remove_redaction` splits ranges; all operations snap to UTF-8 character boundaries + +## UI + +- Nord color palette (dark theme) with BrassMonoCode monospace font (bundled .ttf files, embedded at compile time) +- Keyboard: Ctrl+R toggles redaction on selection, Cmd+Q quits +- Toolbar has keyboard help and "Copy Redacted" button diff --git a/fonts/BrassMono-Regular.ttf b/fonts/BrassMono-Regular.ttf new file mode 100644 index 0000000000000000000000000000000000000000..2b2b959fa00bb48c92c5bf584f26cd4928bb1d01 GIT binary patch literal 41804 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 literal 0 HcmV?d00001 diff --git a/fonts/BrassMonoCode-Regular.ttf b/fonts/BrassMonoCode-Regular.ttf new file mode 100644 index 0000000000000000000000000000000000000000..c4f6b4456eec3a44f0ad131c483f5a80ac44d8e2 GIT binary patch literal 44900 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 eframe::Result { let options = eframe::NativeOptions {