Skip to content

Repository files navigation

FlashCodersRead

FlashCodersRead

RSVP + news-ticker speed reader for the OpenCode TUI bottom bar. Local packs. No model calls for reading text.

OpenCode TUI Version 0.1.0 MIT

FlashCodersRead

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

Install (copy-paste)

git clone https://github.com/ActArtech/flashcodersread.git
cd flashcodersread
opencode plugin "file://$(pwd)" --global

Windows (PowerShell), after clone:

opencode plugin "file:///$((Get-Location).Path -replace '\\','/')" --global

Or 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.

Highlights

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 / .md file
  • Does not send reading text to the chat model

Flashcoders Stage 0 (CLI ribbon)

Install details

See Install (copy-paste) above for the primary path.

From npm (after publish)

opencode plugin flashcodersread@latest --global

Windows absolute file:// example:

file:///D:/work/launchpad/pads/flashcodersread

Quick start

The bottom bar stays hidden until you open Flash. Plugin stays loaded so slashes work.

  1. Restart OpenCode
  2. Press ctrl+shift+f (or run /flash)
  3. Choose a template, Paste text, or Load from text file
  4. 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.

Docs in this repo

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

Controls

Click the bar

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

Keys (flash control mode)

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)

Slash / palette

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.

Options

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)

Templates and local packs

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.

Flashcoders Stage 0 CLI

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  280wpm

Stages 1+ (packs, bilingual/RTL, suggest, paid PM, MCP news, monetization) are deferred.

Develop

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 install

There is no separate build step. OpenCode loads tui.tsx directly from the package export.

After local edits:

  1. Save files
  2. Fully restart OpenCode
  3. Confirm the startup toast: FlashCodersRead: click bar to pause - ctrl+shift+f menu

Standalone overlay (one-click)

Double-click either:

  • Open-FlashCodersRead.cmd in this repo, or
  • the FlashCodersRead shortcut on your Desktop (create/refresh with the script below)
pwsh -File scripts/install-desktop-shortcut.ps1

Or from a terminal:

bun run overlay

Brand

Source 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.

Repo layout

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)

Other hosts (planned, same repo)

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.

Status

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.

Links

FAQ

What is FlashCodersRead?

An OpenCode bottom-bar speed reader: RSVP flash or ticker scroll for affirmations, notes, or any pasted text, without leaving the TUI.

How do I install FlashCodersRead in OpenCode?

Clone the repo, run opencode plugin "file://$(pwd)" --global, restart OpenCode, then /flash or ctrl+shift+f. Full block: Install (copy-paste).

Does FlashCodersRead send my reading text to the AI model?

No. Paste, file load, and templates stay in the TUI plugin UI. Do not paste reading text into the normal chat prompt.

What is the difference between flash and ribbon (ticker)?

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.

How do I change reading speed (WPM)?

Set "wpm": 280 (or another number) in the plugin options in tui.json, or use + / - while flash control mode is active.

Does it support Arabic or other RTL languages?

Yes. Use segment: "auto" (default) or chars / words / sentences. Arabic packs can set rtl: true; the bar shapes letters and displays right-to-left.

Can I add private reading packs without committing them?

Yes. Put packs/*.json in the gitignored packs/ folder. Format: packs/README.md.

Does it work with Grok Build or Claude Code today?

OpenCode is the supported host. Grok Build is planned in the same repo (shared src/ engine). See docs/HOSTS.md.

What license is FlashCodersRead?

MIT. See LICENSE. Citation of the public README and docs with attribution is welcome.

Where should coding agents look first?

AGENTS.md for build/test commands, then llms.txt for the short map of docs.

License

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.

Credits

  • Built for OpenCode / OpenTUI
  • RSVP reading pattern popularized by tools like Spreeder
  • Not affiliated with OpenCode or Spreeder

About

RSVP + news-ticker speed reader for the OpenCode TUI bottom bar

Resources

Contributing

Security policy

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages