diff --git a/CHANGELOG.md b/CHANGELOG.md index a5eb665..bf02f79 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -17,7 +17,7 @@ PDFs and dictation can be set up the way you like them, the Mac window is cleane ### Changed - **A clean top of the window on a Mac.** The grey title bar with the name in it is gone: the page's top row takes its place, with the three round buttons at its left. Windows and Linux keep their own window frame. -- **A short README**, with the details in `docs/` (installing, what Lucid does, the note formats, accessibility, dictation), and a few words on why Lucid exists: so that notes can be taken by voice, or with one hand. The website says the same. +- **A short README**, with the details in `docs/` (installing, what Lucid does, the note formats, dictation), and, in the README, why I made Lucid: so that notes can be taken by voice, or with one hand. The website says the same. - Tables in the PDF are set ragged right with a little more room between rows, and the bars of a chart use the same greys as on screen. - Dictation: the docs say that any app that pastes works, and list the free and open-source ones (OpenWhispr, VoiceNative) next to Wispr Flow. - The picture of each note format (`docs/format-samples`) is made with the real app, with real diagrams and every section filled. diff --git a/README.md b/README.md index a603b4a..9c6fd30 100644 --- a/README.md +++ b/README.md @@ -31,14 +31,35 @@

-## Why - -- **Speech becomes structure, not a wall of text.** Dictation apps give you the words. Lucid gives you the document: an outline - of sections, a list of options with the rejected ones crossed out, a table that compares them, a diagram of how the parts - connect. -- **Hands-free, or one-handed.** Lucid began when its author broke their right hand and still wanted to take notes while learning - system design. Notes, commands (*"cross out Memcached"*, *"add a CDN in front of the web server"*, *"undo"*) and even diagrams - can be spoken. [More on accessibility](docs/accessibility.md). +## Why I made it + +I'm the author. For a while I couldn't type comfortably. I wasn't working, but I still wanted to use the time to keep learning, +so I went back to system design and other concepts I wanted to revise. Taking notes was the hard part. + +There are good open-source tools that turn voice into text, and others that draw diagrams. I couldn't find one project where I +could just speak and get something *structured*: sections, a list of options with the rejected ones crossed out, a table, a +diagram. I like minimal themes, so I built the one I wanted, for myself first. + +This is the first version, and it doesn't listen by itself. You dictate with an app that pastes text, like +[Wispr Flow](https://wisprflow.ai), [OpenWhispr](https://github.com/OpenWhispr/openwhispr) or +[VoiceNative](https://github.com/triggeredcode/voicenative) (my own open-source voice-to-text for macOS), and Lucid turns what +lands in the box into the page. A fully local voice pipeline will take me some time to get right; you can start with those. + +The hardest part was the drawing: a diagram engine and a table engine good enough to build from speech. Command mode edits the +page by talking to it, and the history keeps what you said, what the model understood and what it changed, so you can always see +why a page looks the way it does. The model runs on your own computer. I hold it to a bar of 90% on my own evaluation +([docs/evals.md](docs/evals.md)), and Edit mode and undo are for the rest. + +Where it might go, in no particular order: a faster, more live mode with smaller local models (5B to 8B, maybe Gemma) or with +cloud models through Ollama; fine-tuned models; and fields other than system design. Voice stays in its own project, +VoiceNative, and I may integrate the two without merging them. These are ideas, not promises. + +## What you get + +- **Speech becomes structure, not a wall of text.** Dictation gives you the words. Lucid gives you the document: an outline of + sections, a list of options with the rejected ones crossed out, a table that compares them, a diagram of how the parts connect. +- **By voice or by keyboard.** Notes, commands (*"cross out Memcached"*, *"add a CDN in front of the web server"*, *"undo"*), + diagrams and tables can all be spoken. See [dictation](docs/dictation.md) for the apps and for using Lucid with one hand. - **Made for system design, open to other fields.** The note formats are plain data: a concept note, a system design, a comparison, an inference-maths note, a benchmark, and one more entry for anything else. [See them](docs/formats.md). - **You stay in charge.** Every change by the model is one undo step, any earlier change can be reverted on its own, and your @@ -78,8 +99,7 @@ To dictate, use any app that pastes text: [Wispr Flow](https://wisprflow.ai), | [User guide](docs/guide.html) | the whole app on one page (also in the app: Help → Lucid Guide) | | [What Lucid does](docs/features.md) | typed blocks, three modes, diagrams and tables by voice, history, export and the PDF look | | [Note formats](docs/formats.md) | the five formats, with the PDF of a sample of each | -| [Dictation](docs/dictation.md) | which apps to speak with, and a ten-minute check-list | -| [Accessibility](docs/accessibility.md) | why Lucid exists, and using it by voice or with one hand | +| [Dictation](docs/dictation.md) | which apps to speak with, using Lucid by voice or with one hand, and a ten-minute check-list | | [For AI agents](docs/mcp.md) | the MCP tools and how to connect Claude Code | | [Installing](docs/install.md) | steps for each system, checksums, troubleshooting | | [Architecture](docs/architecture.md) · [Evals](docs/evals.md) | how it fits together; how the model is scored | diff --git a/docs/accessibility.md b/docs/accessibility.md deleted file mode 100644 index 2066077..0000000 --- a/docs/accessibility.md +++ /dev/null @@ -1,46 +0,0 @@ -# Lucid and accessibility - -## Why Lucid exists - -Lucid started because its author broke their right hand and still wanted to take notes while learning system design. Typing -with one hand is slow, and a dictation app on its own gives you a wall of text, when what you want is the structure: headings, -the options with the rejected ones crossed out, a table, a diagram. So Lucid takes what you say and builds the structured -document while you talk. - -It is not a medical or assistive device, and it has not been audited with screen readers or checked against accessibility -standards. What follows is what it does today, so you can judge whether it helps you. - -## Using it by voice - -Lucid does no speech recognition itself: a dictation app turns your voice into text and pastes it into Lucid's input box (see -[dictation](dictation.md) for free and open-source choices). From there: - -- **Notes without pressing Enter.** A pasted dictation is sent by itself about half a second after the last piece arrives. - Settings → **Dictation** makes the pause 1 s or 2 s (slower speech), or turns it off so the words wait in the box until you - press Enter and you can read them first. -- **Commands by voice.** In Command mode, say what to change: *"cross out Memcached, we are choosing the local LRU"*, *"add a - CDN in front of the web server"*, *"undo"*. Say *"command mode"*, *"input mode"* or *"edit mode"* to change mode. -- **One key for one command.** Hold the **right ⌥ key** (right Alt on Windows and Linux) and everything you dictate while it is - held is one command. It is a single key, which you can reach with one hand. -- **Diagrams and tables without a mouse.** Say *"diagram mode"*, then the components, then the connections (*"client to - server"*), then fix them by number (*"rename 3 to Cache"*). *"Done"* inserts it. Tables work the same way. -- **Pointing by number.** Every block has a number in the margin; say *"in block 3, add a row for cost"*. -- **Everything can be taken back.** Every change by the model is one undo step, and the history lists each change, so a - misheard word never costs more than one *"undo"*. - -## Using it with one hand - -- The three modes and both builders have shortcuts (⌘1 to ⌘5, ⌘/ to switch between Input and Command), and Esc and ⌘L go back to - the input box. Zoom for the page is ⌘+, ⌘− and ⌘0. The full list is in the [guide](guide.html#keys). -- Choose a push-to-talk key for your dictation app that you can press with one hand. Lucid's own command key is the right ⌥, - so pick another for dictation (VoiceNative's default, the right Shift, does not meet it). -- Light and dark themes, three typefaces for the page and a zoom for the page are in Settings and the View menu. - -## What it does not do yet - -- It does not listen to you itself; it needs a dictation app. -- Speech recognition mistakes (a name, a tool) are kept as heard. Settings → **Words to expect** lists names that should be kept - as written, and *Edit and send again* in the history puts your words back in the box to fix. -- The language model is usually right, not always. Edit mode is there for the rest. -- Buttons and fields have names that a screen reader can read and the app is tested through those names, but nobody has used it - with a screen reader for real work. If you do, please [say what happens](https://github.com/triggeredcode/lucid/issues/new/choose). diff --git a/docs/dictation.md b/docs/dictation.md index 10974a3..cac6d81 100644 --- a/docs/dictation.md +++ b/docs/dictation.md @@ -1,4 +1,4 @@ -# Dictating into Lucid +# Dictating into Lucid, and using it by voice Lucid does no speech recognition. A dictation app turns your voice into text and pastes it, and Lucid's input box takes the paste. Any app that pastes (or types) into the focused window works; you do not need to pick one of these. @@ -22,6 +22,33 @@ Two things to know: - Lucid's own command key is the **right ⌥ key** (right Alt on Windows and Linux). Choose another key for your dictation app's push-to-talk (VoiceNative's is right Shift) so they do not meet. +## Using Lucid by voice, or with one hand + +Lucid began because for a while I couldn't type comfortably (see [the README](../README.md#why-i-made-it)), so this is what works by +voice today: + +- **Notes without pressing Enter.** A pasted dictation is sent by itself about half a second after the last piece arrives. + Settings → **Dictation** makes the pause 1 s or 2 s (slower speech), or turns it off so the words wait in the box until you + press Enter and you can read them first. +- **Commands by voice.** In Command mode, say what to change: *"cross out Memcached, we are choosing the local LRU"*, *"add a + CDN in front of the web server"*, *"undo"*. Say *"command mode"*, *"input mode"* or *"edit mode"* to change mode. +- **One key for one command.** Hold the **right ⌥ key** (right Alt on Windows and Linux) and everything you dictate while it is + held is one command. It is a single key, which you can reach with one hand. +- **Diagrams and tables without a mouse.** Say *"diagram mode"*, then the components, then the connections (*"client to + server"*), then fix them by number (*"rename 3 to Cache"*). *"Done"* inserts it. Tables work the same way. +- **Pointing by number.** Every block has a number in the margin; say *"in block 3, add a row for cost"*. +- **Everything can be taken back.** Every change by the model is one undo step, and the history lists each change, so a + misheard word never costs more than one *"undo"*. +- **Shortcuts for one hand.** ⌘1 to ⌘5 switch the modes and open the builders, ⌘/ switches between Input and Command, Esc and ⌘L + go back to the input box, and ⌘+, ⌘− and ⌘0 zoom the page. The full list is in the [guide](guide.html#keys). Choose a + push-to-talk key for your dictation app that you can press with one hand, and not the right ⌥. + +What it does not do yet: it does not listen by itself (it needs a dictation app); speech mistakes (a name, a tool) are kept as +heard, and Settings → **Words to expect** keeps the names you list as you wrote them; the model is usually right, not always, and +Edit mode is for the rest. The buttons and fields have names a screen reader can read and the app is tested through them, but I +have not used it with a screen reader for real work and it has not been audited: if you do, please +[tell me what happens](https://github.com/triggeredcode/lucid/issues/new/choose). + ## Try it with your voice (a check-list) The automated tests paste with ⌘V, which is what these apps do; only you can check it with your voice. About ten minutes. diff --git a/docs/features.md b/docs/features.md index 316216b..15f3934 100644 --- a/docs/features.md +++ b/docs/features.md @@ -92,8 +92,7 @@ plain files in `~/Lucid` (one JSON file per page). A **note format** is the skeleton of a page. See [formats](formats.md). -## Agents, dictation, accessibility +## Agents and dictation -- [Dictation](dictation.md): which apps to speak with, and a ten-minute check-list. -- [Accessibility](accessibility.md): why Lucid exists, and how to use it by voice or with one hand. +- [Dictation](dictation.md): which apps to speak with, how to use Lucid by voice or with one hand, and a ten-minute check-list. - [For AI agents](mcp.md): Lucid is an MCP server. diff --git a/site/index.html b/site/index.html index 231f876..54262ee 100644 --- a/site/index.html +++ b/site/index.html @@ -182,9 +182,9 @@

## The database

Why it exists

Made so you can take notes without typing.

- Lucid began when its author broke their right hand and still wanted to take notes - while learning system design. A dictation app gives you a wall of text; Lucid gives - you the structure. + For a while I couldn't type comfortably, but I still wanted to keep learning system + design. A dictation app gives you a wall of text, so I built Lucid to give me the + structure.

@@ -206,8 +206,8 @@

Speak the changes

Always one step back

Every change by the model is one undo step, so a misheard word costs one “undo”. - Read moreRead the story.