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
2 changes: 2 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,8 @@ First 0.8.1 beta. Rolls up everything through 0.8.0 (below) plus the features, f

- **Smaller installer: the offline speech engine downloads on demand.** The private, on-device speech engine (whisper.cpp) is no longer bundled in the installer. The first time you use offline dictation or transcription, QUILL **offers to download it right there** — about 8 MB, checksum-verified, with a cancelable progress bar (disabled in Safe Mode) — and you can also get it any time from **Tools > Speech > Download Offline Speech Engine...**. **Upgrading from a release that bundled the engine? Your existing copy is kept and keeps working** — nothing to re-download. (First step of the AI footprint/optimization plan: a pinned, SHA-256-verified release-asset acquisition path.)
- **Smaller installer: Kokoro neural voices now download on demand.** The ~120 MB Kokoro voice models are no longer bundled in the installer (it is that much smaller to download and install). The first time you choose a Kokoro voice, QUILL downloads it for you — checksum-verified, with a cancelable progress bar — and other read-aloud voices (DECtalk, eSpeak NG, Piper, SAPI) work in the meantime. **If you are upgrading from a release that bundled Kokoro, your existing copy is kept and keeps working** — nothing to re-download. (Proof-of-concept for the AI footprint/optimization plan's "host redistributable components as verified release assets.")
- **Proofread Mastodon posts before sending (per account).** In **Tools → Share → Mastodon Accounts...**, select an account and tick **Spell-check posts before sending** to have QUILL open the Spelling Review (F7) on the post text when you press Post, so you can fix misspellings before it goes out. Off by default and per account, so existing accounts are unaffected until you turn it on.
- **Spell check a document before saving.** A new **Settings → Editing → Spell check a document before saving** option (off by default) opens the Spelling Review (F7) automatically when you Save or Save As, so you can correct the document before the file is written, then the save proceeds.
- **Hear how deep your indentation is.** Press **Tab** or **Shift+Tab** and QUILL can now speak the new indentation depth — "4 spaces", "8 spaces", "1 tab" — instead of just "Indented lines", so you always know where the line sits. It honours your tabs-vs-spaces and width choices (**Insert tab characters instead of spaces** and **Number of spaces per indent level** in Settings). Prefer the terse message? Turn off **Announce indentation depth on Tab** (Settings, Accessibility).
- **Quieter dialogs, your choice.** A new **Announce entering and leaving dialogs** setting (Settings, Accessibility) turns off the spoken "Entered / Exited *name* dialog" cues for people whose screen reader already announces dialogs. On by default.
- **Jump straight to an open document.** With several documents open, press **Alt+1** through **Alt+9** (and **Alt+0** for the tenth) to go directly to that document by its position, instead of cycling with Ctrl+Tab. If nothing is open at that position, QUILL tells you and stays put. The bindings are remappable in the Keymap Editor.
Expand Down
Binary file modified docs/release notes/release0.8.1-beta1.epub
Binary file not shown.
12 changes: 12 additions & 0 deletions docs/release notes/release0.8.1-beta1.html
Original file line number Diff line number Diff line change
Expand Up @@ -429,6 +429,18 @@ <h3 id="enhancements">Enhancements</h3>
is kept and keeps working — nothing to re-download.</strong> This is the
proof-of-concept for the footprint plan's "host redistributable
components as verified release assets."</li>
<li><strong>Proofread Mastodon posts before sending (per
account).</strong> In <strong>Tools → Share → Mastodon
Accounts...</strong>, select an account and tick <strong>Spell-check
posts before sending</strong>: pressing Post for that account then opens
the Spelling Review (F7) on the post text so you can fix misspellings
before it goes out. Off by default and per account, so existing accounts
are unaffected until you turn it on.</li>
<li><strong>Spell check a document before saving.</strong> A new
<strong>Settings → Editing → Spell check a document before
saving</strong> option (off by default) opens the Spelling Review (F7)
automatically when you Save or Save As, so you can correct the document
before the file is written; the save then proceeds.</li>
<li><strong>Hear how deep your indentation is.</strong> Tab / Shift+Tab
can now speak the new indentation depth — "4 spaces", "8 spaces", "1
tab" — instead of "Indented lines", honouring your tabs-vs-spaces and
Expand Down
9 changes: 9 additions & 0 deletions docs/release notes/release0.8.1-beta1.md
Original file line number Diff line number Diff line change
Expand Up @@ -219,6 +219,15 @@ keys line up again.
**Upgrading from a release that bundled Kokoro? Your existing copy is kept and
keeps working — nothing to re-download.** This is the proof-of-concept for the
footprint plan's "host redistributable components as verified release assets."
- **Proofread Mastodon posts before sending (per account).** In **Tools → Share
→ Mastodon Accounts...**, select an account and tick **Spell-check posts before
sending**: pressing Post for that account then opens the Spelling Review (F7) on
the post text so you can fix misspellings before it goes out. Off by default and
per account, so existing accounts are unaffected until you turn it on.
- **Spell check a document before saving.** A new **Settings → Editing → Spell
check a document before saving** option (off by default) opens the Spelling
Review (F7) automatically when you Save or Save As, so you can correct the
document before the file is written; the save then proceeds.
- **Hear how deep your indentation is.** Tab / Shift+Tab can now speak the new
indentation depth — "4 spaces", "8 spaces", "1 tab" — instead of "Indented
lines", honouring your tabs-vs-spaces and indent-width settings. Toggle with
Expand Down
Binary file modified docs/user guide/userguide.epub
Binary file not shown.
21 changes: 21 additions & 0 deletions docs/user guide/userguide.html
Original file line number Diff line number Diff line change
Expand Up @@ -1479,6 +1479,15 @@ <h4 id="spelling-review-f7">Spelling Review (F7)</h4>
misspelling, QUILL reads it letter by letter. The pause before spelling
starts is configurable.</li>
</ul>
<h4 id="spell-check-a-document-before-saving">Spell check a document
before saving</h4>
<p>Turn on <strong>Settings → Editing → Spell check a document before
saving</strong> (off by default) and QUILL opens the same Spelling
Review (F7) automatically whenever you save, so you can correct
misspellings before the file is written. Review or skip the issues as
usual; the save then proceeds with your corrections. This applies to
<strong>Save</strong> and <strong>Save As</strong> for the document you
are editing.</p>
<p><strong>Editor shortcuts</strong> (without opening the dialog):</p>
<table>
<thead>
Expand Down Expand Up @@ -4898,6 +4907,9 @@ <h3 id="settings-you-can-change-today">Settings you can change
<li>system tray mode</li>
<li>persistent undo</li>
<li>spell check as you type</li>
<li><strong>spell check a document before saving</strong> — when on,
saving opens the Spelling Review (F7) first so you can correct the
document before it is written. Off by default.</li>
<li>line-number visibility</li>
<li>whether Quill starts with no document open</li>
<li><strong>suggest a filename from the first line</strong> — when on,
Expand Down Expand Up @@ -5065,6 +5077,15 @@ <h3 id="adding-a-mastodon-account">Adding a Mastodon account</h3>
a default</strong>, or <strong>remove</strong> one (which deletes its
saved sign-in from this computer). Your sign-in is stored securely in
the Windows Credential Manager, never in a plain file.</p>
<p><strong>Proofread posts before sending.</strong> In <strong>Mastodon
Accounts...</strong>, select an account and tick <strong>Spell-check
posts before sending</strong> to turn on per-account proofreading (off
by default). When it is on, pressing <strong>Post</strong> for that
account first opens the Spelling Review (F7) on the post text so you can
fix misspellings, and the post is sent only after you finish or skip the
review. The setting is per account, so you can enable it for some
accounts and not others; existing accounts are unaffected until you turn
it on.</p>
<h2 id="working-with-different-document-types">Working with Different
Document Types</h2>
<p>Quill is strongest today with plain text, Markdown, HTML, RTF, EPUB,
Expand Down
11 changes: 11 additions & 0 deletions docs/user guide/userguide.md
Original file line number Diff line number Diff line change
Expand Up @@ -715,6 +715,14 @@ connection, nothing uploaded.
- **Spell word aloud** — after announcing the misspelling, QUILL reads it
letter by letter. The pause before spelling starts is configurable.

#### Spell check a document before saving

Turn on **Settings → Editing → Spell check a document before saving** (off by
default) and QUILL opens the same Spelling Review (F7) automatically whenever you
save, so you can correct misspellings before the file is written. Review or skip
the issues as usual; the save then proceeds with your corrections. This applies
to **Save** and **Save As** for the document you are editing.

**Editor shortcuts** (without opening the dialog):

| Key | Action |
Expand Down Expand Up @@ -2558,6 +2566,7 @@ Quill's current settings and customization surface covers the things you are mos
- system tray mode
- persistent undo
- spell check as you type
- **spell check a document before saving** — when on, saving opens the Spelling Review (F7) first so you can correct the document before it is written. Off by default.
- line-number visibility
- whether Quill starts with no document open
- **suggest a filename from the first line** — when on, saving an untitled document pre-fills the Save dialog with a name taken from the first line (across formats; leading markup like a Markdown heading, quote, or list bullet is stripped). Off by default.
Expand Down Expand Up @@ -2661,6 +2670,8 @@ The first time you post, Quill offers to add an account; you can also open **Too

You can add several accounts, give each its own nickname, **set a default**, or **remove** one (which deletes its saved sign-in from this computer). Your sign-in is stored securely in the Windows Credential Manager, never in a plain file.

**Proofread posts before sending.** In **Mastodon Accounts...**, select an account and tick **Spell-check posts before sending** to turn on per-account proofreading (off by default). When it is on, pressing **Post** for that account first opens the Spelling Review (F7) on the post text so you can fix misspellings, and the post is sent only after you finish or skip the review. The setting is per account, so you can enable it for some accounts and not others; existing accounts are unaffected until you turn it on.

## Working with Different Document Types

Quill is strongest today with plain text, Markdown, HTML, RTF, EPUB, and extracted text workflows. It also has intake and extraction review features for imported material such as PDF/OCR sources and structured import support for Office-style formats.
Expand Down
26 changes: 26 additions & 0 deletions quill/core/mastodon/accounts.py
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,11 @@ class MastodonAccount:
instance_url: str
handle: str # e.g. "@[email protected]", for display
client_id: str
# When True, posting through this account first opens the F7 spelling review
# on the post text so the user can fix misspellings before it is sent. Off by
# default; accounts saved before this field existed load as False, so the
# feature is purely opt-in and existing accounts are unaffected (#post-spellcheck).
spell_check_before_post: bool = False

@property
def display_name(self) -> str:
Expand Down Expand Up @@ -81,6 +86,9 @@ def list_accounts() -> list[MastodonAccount]:
instance_url=str(entry.get("instance_url", "")),
handle=str(entry.get("handle", "")),
client_id=str(entry.get("client_id", "")),
# Missing on accounts saved before the field existed -> False
# (opt-in migration: existing accounts stay off).
spell_check_before_post=bool(entry.get("spell_check_before_post", False)),
)
)
except KeyError:
Expand Down Expand Up @@ -114,6 +122,7 @@ def _persist(accounts: list[MastodonAccount], default_id: str | None) -> None:
"instance_url": a.instance_url,
"handle": a.handle,
"client_id": a.client_id,
"spell_check_before_post": a.spell_check_before_post,
}
for a in accounts
],
Expand All @@ -130,6 +139,7 @@ def add_account(
client_id: str,
client_secret: str,
access_token: str,
spell_check_before_post: bool = False,
) -> MastodonAccount:
"""Store a new account's metadata + secrets; return it. Becomes default if first."""
account = MastodonAccount(
Expand All @@ -138,6 +148,7 @@ def add_account(
instance_url=instance_url,
handle=handle,
client_id=client_id,
spell_check_before_post=spell_check_before_post,
)
save_secret(_token_cred(account.id), access_token)
save_secret(_secret_cred(account.id), client_secret)
Expand Down Expand Up @@ -166,6 +177,20 @@ def set_default_account(account_id: str) -> None:
_persist(accounts, account_id)


def set_spell_check_before_post(account_id: str, enabled: bool) -> None:
"""Turn the pre-post spelling review on/off for one account (off by default)."""
from dataclasses import replace

accounts = list_accounts()
if not any(a.id == account_id for a in accounts):
return
updated = [
replace(a, spell_check_before_post=bool(enabled)) if a.id == account_id else a
for a in accounts
]
_persist(updated, default_account_id())


def access_token_for(account_id: str) -> str:
"""Return the stored access token for *account_id* (``""`` when missing)."""
return load_secret(_token_cred(account_id))
Expand All @@ -181,4 +206,5 @@ def access_token_for(account_id: str) -> str:
"list_accounts",
"remove_account",
"set_default_account",
"set_spell_check_before_post",
]
5 changes: 5 additions & 0 deletions quill/core/settings.py
Original file line number Diff line number Diff line change
Expand Up @@ -83,6 +83,9 @@ class Settings:
tray_enabled: bool = False
persistent_undo: bool = False
spellcheck_as_you_type: bool = False
# When True, saving a document first opens the F7 spelling review so the user
# can correct misspellings before the file is written. Off by default.
spell_check_before_save: bool = False
intellisense_as_you_type: bool = False
snippet_trigger_expansion: bool = True
preview_browser: str = "system"
Expand Down Expand Up @@ -515,6 +518,7 @@ def from_dict(cls, data: dict[str, Any]) -> Settings:
tray_enabled = bool(data.get("tray_enabled", False))
persistent_undo = bool(data.get("persistent_undo", False))
spellcheck_as_you_type = bool(data.get("spellcheck_as_you_type", False))
spell_check_before_save = bool(data.get("spell_check_before_save", False))
intellisense_as_you_type = bool(data.get("intellisense_as_you_type", False))
snippet_trigger_expansion = bool(data.get("snippet_trigger_expansion", True))
preview_browser = str(data.get("preview_browser", "system")).strip() or "system"
Expand Down Expand Up @@ -1035,6 +1039,7 @@ def from_dict(cls, data: dict[str, Any]) -> Settings:
tray_enabled=tray_enabled,
persistent_undo=persistent_undo,
spellcheck_as_you_type=spellcheck_as_you_type,
spell_check_before_save=spell_check_before_save,
intellisense_as_you_type=intellisense_as_you_type,
snippet_trigger_expansion=snippet_trigger_expansion,
preview_browser=preview_browser,
Expand Down
10 changes: 10 additions & 0 deletions quill/core/settings_specs.py
Original file line number Diff line number Diff line change
Expand Up @@ -375,6 +375,16 @@ def _ai_tts_voice_choices() -> tuple[tuple[str, str], ...]:
feature_id="core.spellcheck",
keywords=("spelling", "spell check", "typos"),
),
SettingSpec(
"spell_check_before_save",
"Spell check a document before saving",
"editing",
"bool",
"Open the spelling review (F7) when you save, so you can correct "
"misspellings before the file is written. Off by default.",
feature_id="core.spellcheck",
keywords=("spelling", "spell check", "save", "proofread", "before saving"),
),
SettingSpec(
"intellisense_as_you_type",
"Word prediction and tag IntelliSense",
Expand Down
Loading
Loading