ColorTxt: a TXT novel reader that colors the prose and admits to being for novel reading
「彩读 3.0 书源 × AI+」——一款会给内容上色的本地 TXT 小说阅读器,带给你不一样的阅读体验!(也支持打开常见的电子书格式,如 .epub)。还有章节识别、简繁互转、划线标注、记笔记、词典、翻译、多角色语音朗读、AI 阅读助手、书源找书等功能。支持 macOS、Windows 和 Linux。
At a glance
- What is it?
- An Electron reader built on Monaco where the central feature is coloring text by content rather than choosing a theme, with local AI, dictionaries and WebDAV sync around it.
- Who is it for?
- ColorTxt is a genuinely personal project rather than a general-purpose reader, and reading it as one is the fastest way to understand its tradeoffs. The content coloring is unusual and the reason the app exists; the Monaco patches that make it work are the price, and the documented memory behavior of the advanced line wrapping strategy is the clearest signal of that.
- Can I use it commercially?
- Yes, with conditions. MPL-2.0 is a weak copyleft licence: you can use it inside commercial and closed-source software, but if you distribute changes to its own files, you must publish those changes under the same licence.
- Is it still maintained?
- Yes. The repository last received commits 1 day ago.
- What is it written in?
- Mainly TypeScript, according to GitHub's language statistics.
Answers come from the project's GitHub data, last synced on October 7, 2026, and from our analysis. They are not legal advice.
Editorial analysis
The feature is coloring text by what it is
Most readers let you pick a theme. ColorTxt's headline feature is different: it applies its own highlighting rules to the content itself, so the text is colored according to what kind of thing it is rather than what color scheme you chose. That is the whole premise, and it is why the project describes itself as a reader that gives content color.
Around that sit the conventional reading features, and there are a lot of them. Chapter detection with built-in matching rules plus your own custom rules. Simplified and traditional Chinese conversion, and full-width to half-width conversion for letters and digits. Global text replacement, which the documentation points out doubles as a way to swap character names or strip advertisement blocks. Bookmarks with notes, underline annotations, and an edit mode for fixing typos in the source file itself. A pomodoro timer, scheduled auto-scrolling by screen or by line, and a sticky title bar that keeps the chapter name in view.
Two of the reading aids are aimed at attention rather than comprehension. A reading ruler focuses the current lines and dims the rest, configurable down to how many lines stay lit and how dim the others get. A minimalist view hides the top bar, side bar and bottom bar so the text fills the window, with panels summoned by moving the mouse to the window edge. Both arrived in version 3.8, and both change page-turn behaviour: with the ruler enabled, paging moves the ruler by its configured line count instead of scrolling a screen.
A stealth window that the author describes twice
One feature deserves its own section because it is unusual, prominent in the release notes, and described in the documentation with a repeated phrase that translates roughly as nobody knows what it is for.
The stealth mode opens a borderless, transparent, always-on-top reading window with no taskbar entry. Global shortcuts turn pages and switch chapters, and the scroll wheel adjusts font size, font opacity and background opacity in three different modifier combinations. A right-click menu toggles auto-scroll, opens a separate settings window, or exits the mode.
Version 3.8.11 refined it substantially. Entry now shows a semi-transparent green tap target on the left and right edges labelled previous and next page, dismissed after you click, rather than requiring you to know where the invisible zones are. On Windows the window can shrink to a single line of height, working around the system minimum by setting the window shape directly. Right-clicking to open the menu no longer also flips the page, and dragging no longer slowly grows the window.
There is a matching hide shortcut for the whole application, defaulting to Ctrl and backtick, configurable in the shortcuts panel. Hiding the dock icon on macOS requires a separate system setting change, which the documentation calls out. And the known-issue list is honest about one real limit: on Linux under Wayland the global shortcuts stop working, with no fix currently available.
Local AI through Transformers.js, plus dictionaries
The AI features run against a local model rather than a hosted API. The dependency list includes the Hugging Face Transformers library and jieba for Chinese word segmentation, and the feature set describes an AI reading assistant that can analyze plot, answer questions about the book, and produce a mind map or a word cloud.
There is a more unusual one. Character cards are generated by searching the text for a character, summarizing what the book says about them, and then generating an illustration from a text-to-image prompt. Combined with multi-voice narration and character cards, the reader claims multi-character speech synthesis, where different characters are read with different voices rather than one voice for the whole book. An AI typesetting feature handles hard line breaks and punctuation correction, which is genuinely useful on older Chinese web novels that arrive with one line per paragraph and inconsistent punctuation.
The dictionary support is the part that surprised me most, in a good way. Beyond the built-in Wiktionary and Wikipedia lookups, it imports local dictionaries in StarDict, MDict, DICT, Slob and BGL formats, with a download index in the documentation and practical advice attached: prefer StarDict and MDict generally, use Slob for offline Wikipedia, and FreeDict for open-licensed bilingual pairs. Translation works on selected text and accepts either AI translation or one of several translation services.
Chapter and content search cover both bases. Full-text search returns a result list across every loaded file, distinct from the find-in-page behavior in the reading area. The file list accepts drag and drop of files or directories, recurses into subdirectories, and offers categories, sorting, filtering and both list and tree layouts.
Ebook support that converts to Markdown and gives up the styling
ColorTxt reads TXT and Markdown natively, plus EPUB, MOBI, AZW3, FB2, FBZ, PDF and CHM by converting them to Markdown on open. The documentation is blunt about the consequence: the original styling is discarded and only text is extracted for display. For a book with careful typesetting, it says plainly that a dedicated reader is the better choice and that this one suits plain text or books with simple illustrations.
That is a reasonable boundary and an honest description of it. It also means the app is not competing with Calibre on reflowable typography. What it is doing is making many formats openable in one place, then applying its own coloring, typography and annotation model to the extracted text.
Markdown support is deliberately narrow. Headings, links and images are the only syntax handled, chapters are recognized by ATX hash headings, and the chapter list indents by heading level with collapsible parents. The stated purpose is novel text, not documents.
Portability comes through the app's own book package format, importable and exportable for sharing and cross-device sync, alongside WebDAV for syncing application configuration and those packages. There is also automatic encoding detection so both UTF-8 and ANSI files open without manual guessing, and reading progress, recent files and session state are restored on launch.
Why the build script patches Monaco five times
The dependency list is the interesting part for anyone deciding whether to fork this. ColorTxt is an Electron app built with electron-vite and Vue, rendering in Monaco, the code editor that also powers VS Code. That choice buys a lot: a mature text layout engine, selection handling, and an editor you already know how to theme.
It also costs, and the project is open about where. The postinstall script runs electron-rebuild for the two native modules, then runs four patch scripts:
"postinstall": "electron-rebuild -f -w better-sqlite3,opencc && node scripts/patch-nested-sharp-stub.mjs && node scripts/patch-monaco-hover-pointer-below.mjs && node scripts/patch-vite-plugin-monaco-rmdir.mjs && node scripts/patch-xpath-following.mjs"Each patch targets a specific upstream problem: a nested sharp stub, hover positioning, a directory removal behavior in the Monaco Vite plugin, and XPath following. The pattern is standard for an app that vendors an editor, and it means an upstream Monaco release can break one of them without warning.
There is a fifth, bigger intervention the documentation describes at length. ColorTxt patches Monaco so that the simple line-wrapping strategy handles Chinese text acceptably, which is why the documentation recommends against enabling the advanced wrapping strategy unless you have a reason to. The advanced strategy is more accurate and noticeably slower, and on large files the layout pass visibly stalls. The known-issue list links to a Monaco memory issue and states plainly that enabling it carries a large memory cost that is hard to release.
Native modules are rebuilt for both build and release, and a prune step keeps packaged dependencies down. The build and release scripts differ only in the electron-builder publish flag, `--publish never` against `--publish always`.
The README says 3.0 and the manifest says 3.8.11
The project title in the README carries a 3.0 label and a book-source and AI+ subtitle, while the package manifest is at version 3.8.11. Both are current statements in the same repository, and the release history supports the manifest: the three published releases are 3.8.11, 3.8.8 and 3.8.
The practical reading is that the README heading is a product generation label rather than a version number, and the 3.x series is the current one. If you want to know what you actually installed, check the application about screen rather than the README title.
Two smaller signals are worth recording. The package is marked private in the manifest, so there is no npm distribution and installation happens through the tagged builds. And the lint script is a placeholder that echoes that no lint is configured, while the test script runs a single Node test file against the voice-reading punctuation pause logic, using Node's built-in test runner with type stripping. One focused test for one recent feature is an honest signal about where automated coverage currently sits.
For maintenance, the repository is not archived, was last pushed on 2026-09-08, and the same push produced the 3.8.11 release, with 3.8.8 four days earlier. That cadence is active. GitHub reports the license as MPL-2.0, which is a reasonable choice for an application: file-level copyleft that allows proprietary additions without obliging you to open the whole codebase.
Editorial conclusion
ColorTxt is a genuinely personal project rather than a general-purpose reader, and reading it as one is the fastest way to understand its tradeoffs. The content coloring is unusual and the reason the app exists; the Monaco patches that make it work are the price, and the documented memory behavior of the advanced line wrapping strategy is the clearest signal of that. For plain text novels it has an unusually complete feature set, including dictionary formats most competitors skip and offline AI that runs through Transformers.js. Install the latest tagged build rather than assuming the README's 3.0 label is the version, expect the epub support to strip styling down to text, and check whether the stealth window mode is something you actually want before turning it on.
Frequently asked questions
What does ColorTxt do that other TXT readers do not?
It colors text content itself using its own highlighting rules, rather than only offering a set of themes. That is the core of the product. Around it sit chapter detection with custom rules, Simplified and traditional conversion, underline notes, a reading ruler for focus, and an edit mode for fixing the source text.
Does ColorTxt handle EPUB and other ebook formats well?
It opens EPUB, MOBI, AZW3, FB2, FBZ, PDF and CHM by converting them to Markdown, and the documentation is explicit that the original styling is discarded and only text is kept. For a book with careful typesetting it recommends a dedicated reader instead.
Do the AI features send my book to a server?
The AI reading assistant, character cards and typesetting features run against local models, with the Hugging Face Transformers library and a Chinese word segmenter among the dependencies. Translation is the exception worth checking, since it can use either AI translation or an external translation service depending on how you configure it.
What local dictionary formats can I import?
StarDict, MDict, DICT, Slob and BGL are all supported, alongside built-in Wiktionary and Wikipedia lookup. The documentation suggests preferring StarDict and MDict generally, Slob for offline Wikipedia, and FreeDict when you need openly licensed bilingual pairs.
Official sources
Add this badge to your README
If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.
[](https://hysenlabs.com/projects/ssnangua-colortxt)