跪拜 Guibai
← Back to the summary

Ink-Learner Puts Active Recall and Spelling Back Into a Desktop Vocabulary App

A Memory Tool for Keyboard Users: I Built a "Type to Memorize Words" Desktop App

Author: Sui_Lang Tags: Frontend, Programmer, AI Programming

You can recognize words but can't spell them; you remember them when looking at flashcards, but as soon as you touch the keyboard, you "forget how to write"—if you're a keyboard person, you've probably encountered this awkwardness.

There are many vocabulary memorization tools on the market: flashcard recognition, app dictation, web-based typing speed tests. For me, two things were missing: first, actively recalling the meaning while typing the correct spelling into my fingers; second, the hope of using AI in the future to fill in pronunciation, definitions, example sentences, and other materials, with the generated results stored locally—so next time it reads directly from local storage, instead of querying the model again every time you open it. So I made Ink-Learner: a desktop English memory tool for keyboard users—remember English through typing, with all vocabulary and practice data stored locally on your machine, usable offline.

This article will cover: what problem it solves, how it can be used now, how it differs from Qwerty Learner, and what I still want to build together with the community.

Repository: github.com/suilang/ink-learner


1. What Is This

Ink-Learner is a desktop application (Tauri) for macOS / Windows, not just another practice page that can only live in a browser tab.

Who it's for:

Built-in 11 syllabus-oriented word lists (middle school, high school, CET-4/6, postgraduate entrance exams, TOEFL, SAT, IELTS, GRE, GMAT, BEC). Practice records, wrong words, and configurations are stored in local SQLite, supporting backup and recovery.

Start page: Continue Practice, Smart Review You can "Continue Practice" right after opening, and due words can go through the "Smart Review" on the start page.


2. Core Experience: Spelling → Occluded Recall → Dictation → Short Sentences

Unlike "see English, choose Chinese" or "pure typing WPM tests," Ink-Learner emphasizes active recall and solidifies words through a progressive chain:

  1. Spelling—see the target word, type it out completely (form ↔ key positions)
  2. Occluded Recall—hide the English, leave only the definition, recall the spelling from memory (recognition becomes recall)
  3. Dictation (optional)—remove prompts further, forcing yourself to retrieve it
  4. Associated Short Sentences—type the word within a sentence, avoiding "can type it alone, but can't use it in context"

Word Practice: Occluded Recall, spell based on definition Select a book by word list and chapter to start practicing, supporting common practice options like random order, multiple rounds, and infinite loop:

Select Book: Start practice by word list and chapter Two things are deliberately made "slower, but more controllable":

If you've used any product where "one mistake permanently pollutes your wrong-question book," you'll understand how important this manual collection is: the wrong-word book should be your study list, not a mis-tap recorder.


3. Word Details: See Words Clearly Anytime During Practice

The most annoying thing when memorizing words: vague phonetic symbols, template-like example sentences, needing to switch out to a browser just to confirm the part of speech.

In Ink-Learner, you can open Word Details (available via shortcut during practice, and also accessible from word list browsing, chapter summaries, wrong-word book, etc.):

word-detail.png Details are not a decorative page, but a "pause, see clearly, then continue" step within the practice chain.


4. Optional AI: Generate Once, Write Locally, Use Directly Next Time

A very practical motivation for me to make a desktop + SQLite app is: AI should not be a real-time plug-in during every practice session, but rather a "material production line".

Missing definitions, empty phonetic symbols, dry example sentences—a model can fill these in; but after filling, the results should be written into the local word list / dictionary, so next time it opens, it reads directly from the database. Pronunciation caches are the same, stored on the local disk. This way, practice remains an offline closed loop, and you don't burn tokens repeatedly for the same word. If "AI auto-fetching / batch completion" is done later, a stable landing spot is also needed—the local database is that spot.

Let's clarify the boundaries first:

Currently available capabilities include:

The design principle is simple: AI handles production; the local database handles sedimentation; practice reads from local. It's an accelerator for word lists and example sentences, not another chat-wrapper vocabulary memorizer.


5. Relationship with Qwerty Learner

Let's be clear upfront: Ink-Learner's main interaction—"memorizing words through typing"—directly references Qwerty Learner (hereinafter QL).

QL turned "whole-word retry for wrong words, merging memory and typing" into a minimalist, out-of-the-box web experience, with a mature community, rich word lists, and even a VSCode plugin. When starting the project, I seriously considered: whether to submit a PR to QL, or start a new project. The judgment later was—QL's main line is indeed lightweight practice on Web + plugins; what I wanted was a desktop main panel, local SQLite, manual wrong-word book + SRS, a progressive memory chain, and later using AI to fill in materials and store them long-term locally (rather than temporarily generating in the browser and discarding after use)—these are not incremental changes that a few PRs could merge upstream. So Ink borrows the validated typing practice interaction and book selection ideas (only borrowing design, not copying source code), deepening the desktop and memory closed loop on another product line.

Therefore, if you just need to open a webpage and do a round of word typing, I still recommend Qwerty Learner first:

Ink-Learner is not a reskin, but targets another type of scenario:

Qwerty Learner Ink-Learner
Form Web / VSCode Plugin Desktop Main Panel (Tauri)
Data Browser Local SQLite offline, backup/restore; AI / fetched results can be stored
Memory Closed Loop Mainly typing practice Progressive chain + Manual wrong-word book + SRS
Word Entry Side Lightweight practice-oriented Word details; AI fills in and writes locally, reused during practice

In one sentence: Lightweight web typing word practice → use QL; want a full desktop learning panel, orchestrated memory chain → then look at Ink-Learner. The two paths are not mutually exclusive; thanks to QL for pioneering this path first.


6. A Technical Note

Choosing desktop over pure web is for the main panel, offline capability, pronunciation caching, and backup—these "local capabilities a learning tool should have," rather than pinning practice forever in a browser tab.

Open Source License:


7. Getting Started and Download

You can start like this now:

  1. Open the app → "Continue Practice" on the start page
  2. "Select Book" → choose word list and chapter → start practicing
  3. When there are due words, use "Smart Review" on the start page

Download macOS .dmg / Windows .exe installation packages from GitHub Releases:

https://github.com/suilang/ink-learner/releases

Repository homepage:

https://github.com/suilang/ink-learner

If macOS prompts that it's unsigned, you can right-click → Open (instructions are in the repository docs). Stars are welcome, and feedback can be submitted directly via Issues.


8. Capabilities Still on the Way

The project is still in its early stages; the following already have directions but haven't been polished enough to be main selling points, so I'll briefly list them:

Intensive Reading

The goal is: paste a URL or short text → type sentence by sentence for intensive reading; click a word to see its definition, and connect to the wrong-word book / dictionary completion. Import, sentence segmentation, complex web page cleaning, handling unlisted words, etc., are all still being polished.

Other Planned Items

Anyone is welcome to co-create: submit bugs, write specific usage scenarios, or directly submit PRs (word lists/example sentences, interactions, documentation are all fine). The docs/ directory in the repository is very comprehensive—product boundaries, interaction flows, and implemented behaviors are all explained, so you don't need to digest the entire codebase first; if you have ideas, you can also let AI implement a version against the docs and then open a PR. In the startup phase, real feedback is much more useful than vague "hope it gets better."


9. Final Words

What Ink-Learner wants to verify is very narrow:

For keyboard users, is active recall + correct spelling more worth making a daily habit than "recognition-style swiping"?

The current version focuses on the main window: book selection, progressive word practice, short sentences, statistics, wrong-word book, word details, optional AI completion—these are already usable seriously. Intensive reading, mini window, mobile, etc., will continue to advance.

If this article was a bit useful to you, try downloading and practicing a chapter; if you encounter problems or have ideas, feel free to bring them to GitHub Issues.

— Ink-Learner: https://github.com/suilang/ink-learner

Comments

Top 1 of 2 from juejin.cn, machine-translated. The original thread is authoritative.

Rex_Li

Bro, your tool's line wrapping needs adjusting, 'twinkling' got broken apart.

碎_浪

Could you provide a screenshot, or open an issue? The first version hasn't been polished much yet; I'll optimize it later based on my own learning habits.