release: ship v1.5.0 with on-device writing suggestions
Adds next-sentence suggestions while typing, weekly input insights and a personal phrase memory to the desktop app, and fixes custom instructions so they process the text instead of inserting the instruction's own wording. Local model requests are now bounded and individually cancellable. Bumps the product version to 1.5.0 (Android/iOS build 1050000), refreshes the landing and web download links, and records the new INPUT feature rows and the open verification gaps in the infrastructure map.
This commit is contained in:
parent
99f06c253c
commit
5c11ee2fde
104 changed files with 14410 additions and 174 deletions
63
CHANGELOG.md
63
CHANGELOG.md
|
|
@ -13,6 +13,69 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|||
- Cloud-optional backup (encrypted, opt-in)
|
||||
- Plugin system for custom pipelines
|
||||
|
||||
## [1.5.0] - 2026-09-23
|
||||
|
||||
> Published from an annotated tag. Installer and update metadata are served by the
|
||||
> canonical Forgejo feed; no binaries are committed to this repository.
|
||||
|
||||
### Added
|
||||
- **Next-sentence suggestions while you type.** With the feature turned on, a small
|
||||
ghost-text panel sits next to the caret in whatever app has focus and offers up to
|
||||
three ways to continue the sentence. `Ctrl+Alt+Right` accepts, `Down`/`Up` move
|
||||
between candidates, `Left` or the panel's X dismisses, and all four are ordinary
|
||||
rebindable shortcuts. The panel never takes focus and is click-through until you
|
||||
turn interaction on.
|
||||
- **Typed-text learning from the field you are in,** read through UI Automation and
|
||||
diffed as a snapshot, so committed Korean and Japanese IME text is counted
|
||||
correctly (key codes cannot reconstruct it). Password fields are refused before any
|
||||
read, and IME composition suppresses learning and suggestions until the character
|
||||
is committed.
|
||||
- **Weekly input insights** (`Settings > Input` and a dashboard card): keystroke,
|
||||
click and scroll totals, mouse travel converted to meters, top hours and apps, flow
|
||||
windows, edit friction (edits per 100 characters) and per-app suggestion quality.
|
||||
- **A personal phrase memory** built from your own typed sentences and voice history,
|
||||
ranked by frequency, recency (30-day half-life) and same-app usage, and offered as
|
||||
prompt hints. Phrases can be deleted individually or all at once.
|
||||
- **A privacy receipt** that reports the real number of retained rows and the 30-day
|
||||
retention rule, plus **smart exclusion**: only the app you are in can be suggested
|
||||
for the exclusion list, and only after repeated unreadable fields, never
|
||||
automatically.
|
||||
- **A shortcut safety audit** in Settings that flags invalid or conflicting bindings
|
||||
across every action.
|
||||
- **A local personal graph** that links your sentences by "follows" and shared-terms
|
||||
relationships, so related context can surface even when the current prefix differs.
|
||||
It is local SQLite only, with no embeddings or network.
|
||||
|
||||
### Changed
|
||||
- **Local model requests are now bounded and individually cancellable.**
|
||||
`LocalLLMService` gives every request its own abort controller, relays external
|
||||
cancellation, requires a `done` frame before a stream counts as successful, and
|
||||
clears incomplete streams. Generation and streaming are capped at 2048 tokens /
|
||||
120 seconds and chat at 512 / 60 seconds. Text suggestions use `keep_alive: 2m` and
|
||||
no longer warm the model at startup.
|
||||
- **Voice conversations are single-flight** and pass their cancellation through to
|
||||
the active local chat request, so ending a conversation aborts its own inference
|
||||
instead of only changing what the UI shows.
|
||||
- Console windows are suppressed for the app's Windows helper processes (text to
|
||||
speech, voice actions, audio-device and active-window enumeration, and every ffmpeg
|
||||
path).
|
||||
|
||||
### Fixed
|
||||
- **Custom instructions ran the instruction instead of your text.** Every built-in
|
||||
instruction (translate, summarize, rephrase, explain code, free prompt) inserted the
|
||||
instruction's own wording rather than the processed result, and only `{{text}}` was
|
||||
ever substituted, which none of the presets use. The instruction is now the system
|
||||
prompt, the transcript is the text, and `{{text}}`, `{{userPrompt}}` and
|
||||
`{{targetLanguage}}` are resolved in one shared place. This path had never worked in
|
||||
any shipped release.
|
||||
- **The suggestion panel could refuse to close, revive itself, or appear on a bare
|
||||
click.** Holding the modifier that Windows turns into `Ctrl+Alt` no longer fires the
|
||||
voice shortcut underneath, closing the panel during generation discards that request
|
||||
instead of re-showing it, a click without typing no longer triggers a suggestion,
|
||||
and pressing Enter stops the same text from being suggested again.
|
||||
- **The global input hook is reference-counted**, so the shortcut service and input
|
||||
telemetry can attach at the same time without one disabling the other.
|
||||
|
||||
## [1.4.0] - 2026-09-21
|
||||
|
||||
### Added
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue