Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 4 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -72,8 +72,9 @@ What stays true whatever you say:
- **You stay in charge.** Every change by the model is exactly one undo step, any earlier change can be reverted on its own,
and your words are never lost: if the model cannot use them, they are kept as written.
- **One view.** The page, one input box under it, an optional history panel. It scales to a full-screen window.
- **Voice or keyboard.** Dictate with [Wispr Flow](https://wisprflow.ai) (optional) or just type. Lucid takes the text from
there.
- **Voice or keyboard.** Dictate with any app that pastes text, or just type. [Wispr Flow](https://wisprflow.ai),
[OpenWhispr](https://github.com/OpenWhispr/openwhispr) (free, open source) and
[VoiceNative](https://github.com/triggeredcode/voicenative) (free, macOS) are covered in [docs/dictation.md](docs/dictation.md).
- **A toolbox for AI agents.** An MCP server lets Claude Code, or a model in LM Studio's chat, read and edit the same blocks.

## Install
Expand Down Expand Up @@ -219,7 +220,7 @@ wrong are in [`docs/mcp.md`](docs/mcp.md).

Lucid has no account, no analytics and no cloud service. Your notes are files on your disk, and the language model runs in
LM Studio on your computer. The only time Lucid's own PDF engine uses the internet is the one-time download of typesetting
files described above. If you dictate with Wispr Flow, that is a separate app with its own privacy terms; Lucid only sees the
files described above. If you dictate with another app, that is a separate app with its own privacy terms; Lucid only sees the
text it pastes.

## Build from source
Expand Down
2 changes: 1 addition & 1 deletion docs/architecture.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ the same way.

```mermaid
flowchart TD
say["Speech (Wispr Flow) or typing"] --> box["Input box"]
say["Speech (any dictation app) or typing"] --> box["Input box"]
box --> input["Input mode<br/>notes → blocks"]
box --> command["Command mode<br/>instructions → ops"]
box --> guided["Guided builders<br/>diagram and table grammar"]
Expand Down
49 changes: 49 additions & 0 deletions docs/dictation.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
# Dictating into Lucid

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.

| App | Where | Cost and source | Speech runs |
| --- | --- | --- | --- |
| [Wispr Flow](https://wisprflow.ai) | macOS, Windows | commercial, closed source | in the cloud |
| [OpenWhispr](https://github.com/OpenWhispr/openwhispr) | macOS, Windows, Linux | free, MIT | on your computer (Whisper or Parakeet models), or your own cloud key |
| [VoiceNative](https://github.com/triggeredcode/voicenative) | macOS | free, made by Lucid's author | on your computer (WhisperKit, Neural Engine) |
| The system's own | macOS Dictation, Windows Voice Typing (Win+H) | built in | depends on the system |

Lucid was first used with Wispr Flow, because that is what its author had at hand, and the automated tests paste the way Wispr
does. It is a good place to start, but it is one option. If you want something free and open source, or that keeps your voice on
your computer, use OpenWhispr or VoiceNative, which paste the same way. Their privacy terms are theirs, not Lucid's: Lucid only
sees the text that arrives.

Two things to know:

- A **paste** is sent about half a second after the last piece arrives, with no Enter. Text that is typed key by key is not
sent on its own: press Enter.
- 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.

## 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.
Read ⌘ as Ctrl and ⌥ as Alt on Windows and Linux; on Linux, use OpenWhispr or type.

1. **Plain dictation.** Open a page, hold your dictation key and say a thought ("Load balancer. Multiple application servers
behind it. Health checks to avoid unhealthy servers."). The text appears in the input box and the notes appear in the page
about half a second later, without pressing Enter. ✅
2. **A long ramble** (hands-free mode, 30 to 60 s about caching). One set of notes, even if the app pasted it in pieces. ✅
3. **Focus somewhere else.** Click **History**, **Markdown** or the page text, then dictate. The words still go to the input
box. ✅ (Click into a field of Settings and dictate: the words go into that field, not the box.)
4. **Correct before sending.** Dictate a sentence and, within half a second, type a word. The automatic send is cancelled;
fix the text and press Enter. ✅
5. **A command by voice.** Hold the **right ⌥ key** and dictate "cross out MongoDB" (with a list on the page). It is run as
a command, one undo step. Say "undo". ✅ Then say "command mode" alone: the mode changes, nothing is written. ✅
6. **Say "Lucid, add a row for cost to this table"** in Input mode: one command, then back to notes. ✅
7. **The diagram builder.** Say "diagram mode", then "client, server, DNS, database", then "connections", then "client to
server". Each phrase is read as a step. "Done" inserts the diagram. ✅
8. **Clipboard.** After a paste press ⌘V yourself somewhere else. Dictation apps often restore your previous clipboard; note
what you get, it is not Lucid's doing. ℹ️
9. **The app's own command mode** (Wispr Flow's Fn+Ctrl, for example) is not used by Lucid. If you try it, nothing should be
double-processed or crash.

If a step does not behave as written, please open an issue and say which step, and which app (and "style", if it has one: it
can change the text before pasting) you use.
18 changes: 9 additions & 9 deletions docs/guide.html
Original file line number Diff line number Diff line change
Expand Up @@ -141,7 +141,7 @@ <h2>On this page</h2>
<a href="#formats">Note formats</a>
<a href="#files">Saving, export and import</a>
<a href="#export">Export</a>
<a href="#wispr">Dictating with Wispr Flow</a>
<a href="#wispr">Dictating</a>
<a href="#wrong">When something goes wrong</a>
<a href="#where">Where things live</a>
<a href="#agents">For AI agents</a>
Expand All @@ -160,7 +160,7 @@ <h2>In one minute</h2>
<ol class="steps">
<li><div><b>Have LM Studio running with the model loaded.</b> The small pill at the top of Lucid shows a green dot and the model name when it is ready. If it says <i>No model loaded</i>, click the <b>Load …</b> button in the pill (it asks first, and takes about half a minute).</div></li>
<li><div><b>Click New page</b> (top of the left column), type a title, press Enter.</div></li>
<li><div><b>Talk or type into the box at the bottom.</b> With Wispr Flow just dictate: the words appear in the box and are sent about half a second after you stop. Typing: press Enter.</div></li>
<li><div><b>Talk or type into the box at the bottom.</b> With a dictation app just dictate: the words appear in the box and are sent about half a second after you stop. Typing: press Enter.</div></li>
<li><div><b>Watch the page.</b> Your words become notes. To change something, say what to change (Command mode, below). To undo anything, say <code>undo</code>.</div></li>
<li><div><b>Download PDF</b> (top right) when it looks right.</div></li>
</ol>
Expand Down Expand Up @@ -452,14 +452,14 @@ <h2>Export</h2>
</section>

<section id="wispr">
<h2>Dictating with Wispr Flow</h2>
<p class="sub">Lucid does no speech recognition. Wispr Flow turns your voice into text and pastes it; Lucid's input box takes the paste.</p>
<h2>Dictating</h2>
<p class="sub">Lucid does no speech recognition. A dictation app (Wispr Flow, OpenWhispr, VoiceNative, the system's own) turns your voice into text and pastes it; Lucid's input box takes the paste.</p>
<ul>
<li>A paste goes to the input box <b>wherever the focus is</b> (after clicking a button, a pill, the page, or with the cursor in the title) and is sent about half a second after the last piece arrives. Several pastes in a row are joined.</li>
<li>It stays where you meant it when it should: into a field of an open dialog, and into the page itself in Edit mode. While a builder is open, it goes to the builder.</li>
<li>Start typing after a paste and the automatic send is cancelled, so you can correct the words first.</li>
<li>For one command by voice, hold the <b>right ⌥ key</b> while you dictate, or begin with <code>Lucid, …</code>. Wispr's own command mode is not used.</li>
<li>There is a short check-list for trying it with your own voice: <a href="https://github.com/triggeredcode/lucid/blob/main/docs/wispr.md">docs/wispr.md</a> on GitHub.</li>
<li>For one command by voice, hold the <b>right ⌥ key</b> while you dictate, or begin with <code>Lucid, …</code>. The dictation app's own command mode is not used.</li>
<li>There is a short check-list for trying it with your own voice: <a href="https://github.com/triggeredcode/lucid/blob/main/docs/dictation.md">docs/dictation.md</a> on GitHub, which also lists the free and open-source dictation apps.</li>
</ul>
</section>

Expand All @@ -477,7 +477,7 @@ <h2>When something goes wrong</h2>
<tr><td><i>Tectonic, the PDF engine, was not found</i></td><td>The copy of Lucid is damaged. Download it again from the project’s releases (Help, Check for Updates…). Markdown export works meanwhile.</td></tr>
<tr><td>PDF without some diagrams, and a note that they could not be drawn</td><td>The note says which. Send the page to Lucid again, or fix the diagram in its builder (click the diagram), then download the PDF again. Please report it if it keeps happening.</td></tr>
<tr><td>Revert is greyed out</td><td>The blocks that change touched were changed after it (by another change or by you). Use undo, or fix it in Edit mode.</td></tr>
<tr><td>Nothing happens when you dictate</td><td>Click once in the Lucid window so it has the focus; check that Wispr Flow is pasting (the text should appear in the box).</td></tr>
<tr><td>Nothing happens when you dictate</td><td>Click once in the Lucid window so it has the focus; check that your dictation app is pasting (the text should appear in the box).</td></tr>
</table></div>
</section>

Expand All @@ -502,9 +502,9 @@ <h2>Honest limits</h2>
<ul>
<li>The model is a local 27-billion-parameter model. It is usually right, not always; Edit mode, undo and Revert are for the rest.</li>
<li>A request takes 10 to 25 seconds, which is normal for a 27B model on a laptop (the first one after a change is the slowest). The line above the input box counts the seconds.</li>
<li>Pasting, not hearing: Lucid depends on Wispr Flow (or you typing) for the words.</li>
<li>Pasting, not hearing: Lucid depends on a dictation app (or you typing) for the words.</li>
<li>A diagram with 15 parts in one long column cannot be big on a single PDF page.</li>
<li>The app is tested with a scripted model and with the real one; how Wispr Flow behaves on your voice can only be checked by you (<a href="https://github.com/triggeredcode/lucid/blob/main/docs/wispr.md">a check-list</a>).</li>
<li>The app is tested with a scripted model and with the real one; how a dictation app behaves on your voice can only be checked by you (<a href="https://github.com/triggeredcode/lucid/blob/main/docs/dictation.md">a check-list</a>).</li>
</ul>
</section>

Expand Down
24 changes: 0 additions & 24 deletions docs/wispr.md

This file was deleted.

12 changes: 7 additions & 5 deletions site/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -315,8 +315,9 @@ <h2>Talk, refine, export. You stay in charge.</h2>
<li class="reveal">
<h3>Say or type</h3>
<p>
One input box. Dictate with Wispr Flow on macOS or Windows (optional), or just type.
Your words are never lost: if the model cannot use them, they are kept as written.
One input box. Dictate with any app that pastes text (Wispr Flow, OpenWhispr,
VoiceNative), or just type. Your words are never lost: if the model cannot use them,
they are kept as written.
</p>
</li>
<li class="reveal" style="--d: 0.08s">
Expand Down Expand Up @@ -946,11 +947,12 @@ <h2>Good to know.</h2>
</div>
</details>
<details>
<summary>Do I need Wispr Flow?</summary>
<summary>Do I need a dictation app?</summary>
<div class="details-body">
<p>
No. Dictation is optional: Wispr Flow pastes your words and Lucid takes the paste.
You can just type. Wispr Flow is a separate app with its own privacy terms.
No. Dictation is optional: a dictation app pastes your words and Lucid takes the
paste. You can just type. Wispr Flow, OpenWhispr (free, open source) and
VoiceNative (free, macOS) are separate apps with their own privacy terms.
</p>
</div>
</details>
Expand Down
Loading