RSVP + news-ticker speed reader for the OpenCode TUI bottom bar. Local packs. No model calls for reading text.
FlashCodersRead is an OpenCode TUI plugin that speed-reads text in the bottom bar while you code: RSVP flash or news-ticker scroll, local templates and packs, click-to-pause, no chat-model calls for reading content.
Paste text (or pick a template), then flash one or two units at a time, or scroll like a news crawl, in the spare space under the prompt. Inspired by Spreeder-style reading, built as a small plugin instead of a full-screen app.
Focus now: OpenCode. The engine is shared and host-agnostic so a Grok Build adapter can live in this same repo later (see docs/HOSTS.md).
Flash PLAY | focus deeply | loop fade 1w 280wpm 42%
^ click to pause
git clone https://github.com/ActArtech/flashcodersread.git
cd flashcodersread
opencode plugin "file://$(pwd)" --globalWindows (PowerShell), after clone:
opencode plugin "file:///$((Get-Location).Path -replace '\\','/')" --globalOr pin options in ~/.config/opencode/tui.json:
{
"plugin": [
[
"file:///ABS/PATH/TO/flashcodersread",
{
"wpm": 280,
"words": 1,
"loop": true,
"fade": true,
"chrome": true,
"style": "flash",
"segment": "auto",
"enabled": true
}
]
]
}Restart OpenCode, then press ctrl+shift+f or run /flash.
Machine-oriented summary: llms.txt. Agent build/test notes: AGENTS.md.
Reading rail
- Bottom-bar reading rail inside OpenCode
- Two styles: flash (RSVP) and ribbon / ticker (news crawl)
- Any language: Unicode segmentation (
auto/words/chars/sentences) - Click the text to pause / resume; on-bar chips for play, restart, menu, hide
- Loop + adjustable loop rest; punctuation pause after sentence ends
- Arabic / RTL: contextual shaping + right-to-left display
- Optional fade-in; chrome on/off; hide the entire bar
- Templates + gitignored local packs (affirmations, thankfulness, and private packs)
- Anki-style EN↔SV Dev & Business (30) phrase flash (
/flash-ensv); multi-word terms stay one unit - Paste text or load a
.txt/.mdfile - Does not send reading text to the chat model
Flashcoders Stage 0 (CLI ribbon)
- Separate Stage 0 CLI that prints one status ribbon line from config + mock status JSON
- Product docs pack:
flashcoders-docs/flashcoders-docs/(00through06) - Scope review:
docs/STAGE0-SCOPE.md
See Install (copy-paste) above for the primary path.
opencode plugin flashcodersread@latest --globalWindows absolute file:// example:
file:///D:/work/launchpad/pads/flashcodersread
The bottom bar stays hidden until you open Flash. Plugin stays loaded so slashes work.
- Restart OpenCode
- Press
ctrl+shift+f(or run/flash) - Choose a template, Paste text, or Load from text file
- Click the flashing word to pause / resume
Important: do not paste reading text into the normal chat prompt. That sends it to the model. Always use the FlashCodersRead menu / dialog.
| Doc | What it is |
|---|---|
| docs/HOW-READING-WORKS.md | Learning / hifz reading path |
| docs/HOSTS.md | OpenCode now; Grok Build later |
| docs/STAGE0-SCOPE.md | Stage 0 shipped vs deferred |
| docs/PACK-AUTHORING.md | How to write packs |
| packs/README.md | Local pack format (gitignored data) |
| brandkit/ | Logo masters, icons, GitHub assets |
| flashcoders-docs/ | Product pack 00..06 |
| PUBLISH.md | GitHub / npm publish notes |
| Click | Action |
|---|---|
| Word (center) | Pause / resume |
P / Play chip |
Pause / resume |
R chip |
Restart from the beginning |
☰ / Flash chip |
Open menu (stays open) |
Hide chip |
Hide the entire bar |
Flash control mode starts when a session is playing. Then:
| Key | Action |
|---|---|
P |
Pause / resume |
R |
Restart |
S |
Toggle flash / ribbon style |
G |
Cycle language segment mode |
L |
Toggle loop |
F |
Toggle fade-in (flash style) |
C |
Toggle chrome (labels/chips) |
H |
Hide entire bar |
M |
Open menu |
+ / - |
Faster / slower |
1 / 2 |
One or two units at a time (flash) |
Esc |
Leave flash controls (bar stays) |
| Command | Action |
|---|---|
/flash |
Open menu |
/flash-affirm |
Start affirmations |
/flash-thanks |
Start thankfulness |
/flash-kabir |
Start Kabir mystic pack |
/flash-hirz |
Start Hirz Abu Dujana (Arabic, RTL) |
/flash-waqiah |
Start Surah Al-Waqi'ah (Arabic, RTL) |
/flash-punct |
Toggle punctuation pause |
/flash-pause |
Pause / resume |
/flash-repeat |
Restart |
Also available in the command palette under FlashCodersRead.
Plugin options in tui.json:
| Option | Type | Default | Meaning |
|---|---|---|---|
enabled |
boolean | true |
Disable the plugin without uninstalling |
visible |
boolean | false |
Show the bottom bar on OpenCode load |
wpm |
number | 280 |
Speed (flash units/min or ribbon crawl rate) |
words |
1 | 2 |
1 |
Units shown per flash |
loop |
boolean | true |
Restart / keep crawling |
fade |
boolean | true |
Soft fade-in on each flash unit |
chrome |
boolean | true |
Show labels/chips around the text |
style |
flash | ticker |
flash |
RSVP flash vs news-style ribbon |
segment |
auto | words | chars | sentences |
auto |
How text is split |
tickerWidth |
number | 48 |
Visible character window for ribbon mode |
punctPause |
boolean | true |
Extra pause after sentence dots and paragraph breaks |
punctPauseSec |
number | 1 |
Punctuation pause length in seconds (0.5-10) |
loopRestSec |
number | 6 |
Rest after each loop finishes (0-30) |
Built-in packs live in src/templates.ts:
- Affirmations (10): short focus / confidence lines (
/flash-affirm) - Thankfulness (10): gratitude lines for a calm reset (
/flash-thanks)
Local packs live in gitignored packs/*.json and load at runtime into the TUI menu and overlay dropdown. Personal or religious texts stay private and never enter a commit.
Format: packs/README.md. Authoring tips: docs/PACK-AUTHORING.md.
cd flashcoders
bun run test
bun ./src/cli.ts --config ./fixtures/config-running.json --status ./fixtures/status-running.json
# -> flashcoders speed running opus 62% ctx main 280wpmStages 1+ (packs, bilingual/RTL, suggest, paid PM, MCP news, monetization) are deferred.
Requirements:
- OpenCode
>= 1.3.14(tested on 1.18.x) for the TUI plugin - Bun for Stage 0 CLI and tests
- Mouse enabled in the TUI (OpenCode default)
bun installThere is no separate build step. OpenCode loads tui.tsx directly from the package export.
After local edits:
- Save files
- Fully restart OpenCode
- Confirm the startup toast:
FlashCodersRead: click bar to pause - ctrl+shift+f menu
Double-click either:
Open-FlashCodersRead.cmdin this repo, or- the FlashCodersRead shortcut on your Desktop (create/refresh with the script below)
pwsh -File scripts/install-desktop-shortcut.ps1Or from a terminal:
bun run overlaySource of truth: brandkit/master/*.svg. Layout and color tokens: brandkit/README.md.
brandkit/
master/ SVG sources (edit these)
app/ App / overlay icon
in-app/ UI mark copies
github/ Avatar / social
The old logoformats/ folder is a legacy inbox that points here. Edit masters under brandkit/master/ only.
flashcodersread/
tui.tsx OpenCode TUI adapter (exports "./tui")
src/ Shared engine
flashcoders/ Stage 0 CLI ribbon
flashcoders-docs/ Product pack 00..06
brandkit/ Logo masters and surfaces
docs/ Hosts, Stage 0 scope, pack authoring
overlay/ Optional Electron overlay
packs/ Local packs (gitignored data)
| Host | Status | Notes |
|---|---|---|
| OpenCode | Supported | Full bottom-bar TUI plugin |
| Grok Build | Planned | Same engine; skills + status-line adapter |
Do not fork a second public repo for Grok unless the product intentionally splits. See docs/HOSTS.md.
Public preview (0.1.0) on GitHub. OpenCode-first. Flashcoders Stage 0 CLI is usable locally via flashcoders/. Grok Build support is documented as a same-repo follow-on, not implemented yet.
- GitHub: https://github.com/ActArtech/flashcodersread
- Issues: https://github.com/ActArtech/flashcodersread/issues
- Contributing: CONTRIBUTING.md
- Changelog: CHANGELOG.md
- Security: SECURITY.md
An OpenCode bottom-bar speed reader: RSVP flash or ticker scroll for affirmations, notes, or any pasted text, without leaving the TUI.
Clone the repo, run opencode plugin "file://$(pwd)" --global, restart OpenCode, then /flash or ctrl+shift+f. Full block: Install (copy-paste).
No. Paste, file load, and templates stay in the TUI plugin UI. Do not paste reading text into the normal chat prompt.
Flash shows one or two units at a time (classic RSVP). Ribbon / ticker scrolls the full line continuously like a news crawl. Toggle with S or the menu.
Set "wpm": 280 (or another number) in the plugin options in tui.json, or use + / - while flash control mode is active.
Yes. Use segment: "auto" (default) or chars / words / sentences. Arabic packs can set rtl: true; the bar shapes letters and displays right-to-left.
Yes. Put packs/*.json in the gitignored packs/ folder. Format: packs/README.md.
OpenCode is the supported host. Grok Build is planned in the same repo (shared src/ engine). See docs/HOSTS.md.
MIT. See LICENSE. Citation of the public README and docs with attribution is welcome.
AGENTS.md for build/test commands, then llms.txt for the short map of docs.
MIT for FlashCodersRead. See LICENSE.
Citation of this README, FAQ, and public docs with a link back to https://github.com/ActArtech/flashcodersread is welcome.
- Built for OpenCode / OpenTUI
- RSVP reading pattern popularized by tools like Spreeder
- Not affiliated with OpenCode or Spreeder