Skip to content

grammar-forge: v0.1.0

Choose a tag to compare

@github-actions github-actions released this 11 Jul 15:20
c6e0f33

0.1.0 (2026-07-11)

Features

  • api: add CompleteRequest/CompleteResponse types and BridgeClient.complete() (94b1313)
  • bridge: �1 sentence LLM context behind GF_LLM_SENTENCE_CONTEXT (e2e3386)
  • bridge: acceptance-rate fields on /stats (c9b54df)
  • bridge: add offline GET /synonyms (Moby Thesaurus II, public domain) (2679a6d)
  • bridge: aggregate top_issues/streak/words_this_week in /stats (28a5634)
  • bridge: all replacement candidates via grpc (2aeef8a)
  • bridge: anthropic messages provider (a8b4c4c)
  • bridge: apply over-edit repair chain before LLM diff (88ee716)
  • bridge: byte to utf-16 offset conversion (bdc3603)
  • bridge: calibrated confidence on the wire behind GF_CONFIDENCE_CALIBRATION (581dbb0)
  • bridge: calibrated-confidence escalation behind GF_ESCALATION_CALIBRATED (531efff)
  • bridge: completion temperature + dialect-aware LLM prompts (db34404)
  • bridge: config and wiring for the semantic verifier (b2f28fb)
  • bridge: default and wire user dictionary (7f2a906)
  • bridge: default over-edit rule chain (e3675bd)
  • bridge: deterministic dialect-spelling revert as an over-edit rule (0c1a11a)
  • bridge: deterministic reject suppression in finalize (GF_REJECT_SUPPRESSION) (26fa0a4)
  • bridge: dictionary rest endpoints (8de3107)
  • bridge: embedded VarCon-derived British dialect lexicon (fdb6eae)
  • bridge: GF_ESCALATION_TRUSTED_CATEGORIES with eval-gated enablement protocol (80d3ebb)
  • bridge: GF_OVEREDIT_FILTER config wiring (default on) (58df729)
  • bridge: iterative GECToR decoding behind GF_GECTOR_PASSES (6f103c0)
  • bridge: merge-not-replace escalation spike flag (4ab0e09)
  • bridge: MiniLM semantic verifier behind the ORT build tag (ba7ae7e)
  • bridge: mount lt-compat routes on rest server (54243a4)
  • bridge: N-best LLM sampling with majority-vote merge behind GF_LLM_NBEST (e045d25)
  • bridge: named over-edit rules with firing counters (c90997b)
  • bridge: native languagetool-compatible v2 check (3d44a7e)
  • bridge: optional fast-path-only spelling serve (0562b0a)
  • bridge: over-edit rule reverting nor/or proximity-agreement flips (235315e)
  • bridge: over-edit rule reverting proper-noun comma restructures (2216001)
  • bridge: per-edit signal logging (39756d6)
  • bridge: per-model-category signal rate aggregation (dba065f)
  • bridge: protect dictionary words in llm prompt (422c194)
  • bridge: rephrase backend override and variants (b22858e)
  • bridge: rephrase override and alternatives REST (eb75e69)
  • bridge: request body cap and server timeouts (5260d97)
  • bridge: retention pruning for corrections db (75b967e)
  • bridge: semantic verifier gate discards low-similarity LLM rewrites (737f83f)
  • bridge: sentence segmentation with offsets (35b835f)
  • bridge: sentence suggestion cache (3fc5f68)
  • bridge: sentence-level pipeline with cache (8efb394)
  • bridge: signal-derived confidence calibrator (ca68353)
  • bridge: spike fast-path spelling hints in prompt (4c222db)
  • bridge: sqlite wal and busy timeout (1585317)
  • bridge: sse /correct/stream endpoint (b30222a)
  • bridge: staged correction with fast-path preview (08adfcb)
  • bridge: suppress all-allowlisted multiword edits (28821f1)
  • bridge: suppress llm re-flags of dictionary words (742a434)
  • bridge: T5a multi-frame incremental fast-path streaming (b224d02)
  • bridge: tag grpc requests with lt source (3b8064a)
  • bridge: trusted-category escalation routing generalizes spelling-only skip (be65b8b)
  • bridge: TTL-cached reject suppressor over the personalization signal (1074b2d)
  • bridge: user dictionary store (ae4e7df)
  • bridge: wire dialect spelling guard for british deploys (GF_DIALECT_SPELLING_GUARD) (191da7e)
  • bridge: wire sentence cache and prompt caching (3af70a0)
  • bridge: wire tone analysis (cache, gate, GF_TONE_* backend) (8cc7a41)
  • bridge: word-granularity merge spike modes (88eb529)
  • browser: accept hotkey applies all in field (d27cd93)
  • browser: accessibility for pill popover and chip (112e4aa)
  • browser: add extension icon (492a619)
  • browser: add multiword edits to dictionary (161795b)
  • browser: add rephraseHotkey setting (default Ctrl+/) (ad5d7ac)
  • browser: add shared getCaretOffset + keepHighlightsBeforeEdit helpers (a8146cc)
  • browser: add suppressNativeSpellcheck setting (1fc5e4b)
  • browser: adopt Legion Works design system + Forge Caret mark (ab7a737)
  • browser: apply-moment highlight flourish (1b31cdb)
  • browser: beforeinput check trigger (1d89919)
  • browser: bridge-backed dictionary options (68110a4)
  • browser: clearer clean-state affordance (bbb0d70)
  • browser: collapse hover tooltip into preview chip (2e410a4)
  • browser: correctstream with remembered fallback (2c54c92)
  • browser: debug logging setting toggle (ff025c0)
  • browser: default accept hotkey to Alt+Enter (365cb6f)
  • browser: delay grammar check after paste (061dfc1)
  • browser: dictionary api client (6208d03)
  • browser: draggable faint bottom-right pill (2acb42d)
  • browser: expose rephrase hotkey in settings UI (f87187c)
  • browser: fetch-stream sse parser (51d8f5a)
  • browser: include hostname in tab status (b842510)
  • browser: main-world apply agent for slate (00f25ea)
  • browser: native highlight api for contenteditable (3948e74)
  • browser: options toggle for spellcheck suppress (125a5a8)
  • browser: pill breakdown bar and top-right anchor (ec2585c)
  • browser: pill panel api + optional rephrase (df8672e)
  • browser: popover API top-layer for click card (4b4d5a7)
  • browser: recheck focused field on re-enable (0e89ea6)
  • browser: rephrase api client (ed512f5)
  • browser: rephrase card pending and error states (7cd50f0)
  • browser: rephrase selection button and card (70f381a)
  • browser: rephrase settings section (cd97882)
  • browser: route slate editors through safe apply (0e2579e)
  • browser: slate-safe rich editor apply module (2eef83b)
  • browser: soft highlight replaces underline (9b6baf7)
  • browser: staged preview rendering via sse (c8e9e9c)
  • browser: suppress native spellcheck on fields (ec14d89)
  • browser: sync pipeline builder with preview flag (ec38015)
  • browser: tabbed popup with status and settings (87e992e)
  • browser: tune highlight intensity ladder (1b2cf1b)
  • browser: tune hover chip timing (71b7a89)
  • browser: undo bookkeeping module (fc8643a)
  • browser: undoable ignore with toast (d696c46)
  • browser: unified pill panel with action row (3bf8bde)
  • browser: widen category palette and scrim polish (13373dc)
  • browser: wire add-to-dictionary popover action (931b890)
  • browser: wire Bug 1 scoped-clear-on-edit + 4 siblings into content orchestrator (230f651)
  • browser: wire rephrase hotkey (default Ctrl+/) in content keydown (4b317f5)
  • browser: wire rephrase selection flow (7b2e06d)
  • browser: wire undo, panel rephrase, paused pill (f7a8cff)
  • ci: publish bridge image to GHCR on release (f35015e)
  • compose: build the custom PremiumOn LanguageTool image (4747c13)
  • compose: idle VRAM offload via llama.cpp --sleep-idle-seconds 300 (77d4e82)
  • config: add GF_ARTICLE_FIX flag and wire article fix into service (69afce3)
  • config: add GF_COMPLETE_ENABLED gate for /complete endpoint (d1c82aa)
  • config: GF_ESCALATE_ON_FAST_EDIT (default true) wires the policy flag (1b6d580)
  • config: GF_PERSONALIZATION_TTL/ENABLED + wire the cache in main (3aac3aa)
  • config: GF_TONE_* tone backend + gate env vars (4dd2183)
  • correction: add deterministic a/an article fix for silent-h words (1d1d8f6)
  • correction: add EscalateOnFastEdit policy (escalate on any fast edit) (46acce8)
  • correction: add Rephrase to the core (rephrase prompt + service) (996d5a0)
  • correction: add Service.Complete + CompleteEnabled gate (8478bce)
  • correction: add style Category + Picky request flag (907dd66)
  • correction: correct Harper irregular-plural possessive misfires on the fast path (043469a)
  • correction: drop GECToR/Harper mid-sentence capitalization of function words (b1ea370)
  • correction: emit category + replacements[] on /correct (209ac8f)
  • correction: per-text-unit tone tag LRU cache (0e2c429)
  • correction: revert LLM clause-final modal-perfect over-edits (5bbc4f4)
  • correction: revert LLM contraction-expansion and singular-they over-edits (42ae17e)
  • correction: run gated style pass on picky requests (cb3c93a)
  • correction: Service.AnalyzeTone (field + sentence, cached) + parser nit tests (c62b6cc)
  • correction: tag LLM-diff edits with Harper's spelling/punctuation category (51c0460)
  • correction: tolerant tone-JSON parser (61062ff)
  • correction: tone domain types + fixed tag vocabulary (830462f)
  • eval+bridge: trustworthy benchmarks + concurrency/resilience (613f54e)
  • eval: 125/125 baseline with LLM over-edit repair chain (e1a4aef)
  • eval: add benchmark fetch script + M2 parsing lib (WS-C) (23f15bc)
  • eval: add CoNLL-2014 (m2scorer) + BEA-2019 (ERRANT) runners (WS-C) (4f13520)
  • eval: clean-text corpus builder with register tags (fa2a760)
  • eval: clean-text FP scorer with per-model attribution and --require-exact gate (5375d18)
  • eval: machine-enforceable gates in run_all (--require-exact, --max-fp-rate, GF_GATE) + metric summary (83276fe)
  • eval: per-rule fired-pair-conditioned over-edit threshold study (df3586d)
  • eval: per-suggestion confidence capture and per-edit ECE with a distance-reduction oracle (8ce9c48)
  • eval: record clean-text FP baseline and document the gate (6eadb4d)
  • eval: semantic-verifier threshold calibration study + equivalence probe (ab8c0d6)
  • extension: add api/ layer (wire types, byte offset conversion, category) (07e48fd)
  • extension: add batched signal queue (d4b0e2f)
  • extension: add bridge REST client + exact-IPv4 local-URL guard (1268c6a)
  • extension: add input/ layer (detect, observe, debounce, paste-guard, apply) (e098c71)
  • extension: add liquid-glass overlay (underline, popover, status) (d31b399)
  • extension: add local-only settings store + accept-hotkey logic (9e78174)
  • extension: hover tooltip + click card, full-word hit target, fix pill (97f6cb4)
  • extension: liquid-glass edge refraction + refractive rim on overlays (9cf103b)
  • extension: pill power button, collapse-to-disable, hover Apply-all panel (1251c1c)
  • extension: red->green word-level diff preview in tooltip + popover (f80b854)
  • extension: wire content orchestrator + popup/options + pipeline (87bd706)
  • harper: apply style-gating in Correct (suppresses style false positives) (d6bb427)
  • harper: classify lints by LintKind via vendored harper-c fork (c081f8a)
  • harper: configurable dialect + per-rule enable/disable + max-input guard (0f8a097)
  • harper: gate style/word-choice "Vocabulary enhancement" lints (3ebe65a)
  • harper: structured suggestions + Markdown parsing via FFI (1097b93)
  • harper: user dictionary via MergedDictionary (SPEC �6) (450c052)
  • hotkeys: extract shared rephrase-target decision (browser + vencord) (eae3b7f)
  • lib: add pluggable debug-log backends (4e-1) (8c25719)
  • lib: add process-monotonic checkSeq initializer (638790a)
  • lib: add shared settings-core schema and resolver (4f-1) (5d682ba)
  • llm: send a fixed sampling seed for reproducible output (df430be)
  • ltgrpc: inject premium:true on emitted matches (d4157c3)
  • main: wire GF_COMPLETE_ENABLED to service gate (c24394b)
  • opencode: add completeFn injection seam to OrchestratorDeps (8c4bc38)
  • opencode: add completionEnabled + completionDebounceMs settings (3657313)
  • opencode: add nextIssueHotkey / prevIssueHotkey settings (1d8768a)
  • opencode: add status-line state machine (A6) (58b2485)
  • opencode: add ungated review-jump commands (ctrl+g/ctrl+shift+g) (bee5326)
  • opencode: at-word suggestion details overlay (f86a53e)
  • opencode: completion accept/dismiss keymap layer (�Tab / esc) (51e7ca8)
  • opencode: completion status-line state (� completion ready) (aa4a31c)
  • opencode: completion trigger with line-looks-unfinished heuristic (e907ece)
  • opencode: eagerly clear completion ghost on edit (WS-C + A8) (076ae1a)
  • opencode: ghost completion overlay component (Path A self-render) (055d496)
  • opencode: live grammar-check orchestrator with underlines (19b0b65)
  • opencode: mask paste placeholders from bridge text (9e28a4a)
  • opencode: mouse accelerator (A7) + eager dismiss (A8) (7f8e9ad)
  • opencode: mouse accelerators + status-line category fix (97520c5)
  • opencode: remap cycle defaults to ctrl+n/ctrl+p (40599ba)
  • opencode: rephrase alternatives + regenerate + cycle (8abfc91)
  • opencode: scaffold tui plugin with display-width primitives (6a3337b)
  • opencode: suggestion actions - cycle, apply-all, rephrase (2c67285)
  • overlay: add updateItem + clearItem per-item primitive to HighlightLayer (f99b19c)
  • overlay: add updateItem + clearItem per-item primitive to NativeHighlighter (668d220)
  • perf: cache verifyByteSpan by (suggestionId, textHash) (T2/P1) (7ec9de8)
  • personalization: TTL few-shot cache from the signal log (5b9e4e0)
  • pipeline: drop suggestions whose span abuts or crosses a newline (C1 belt) (6646f06)
  • premium: add PremiumOn shim + custom LanguageTool image (1da7556)
  • prompt: add BuildComplete + completeSystemPrompt for /complete endpoint (b144370)
  • prompt: add BuildStyle picky-mode prompt (4cc7e4e)
  • prompt: BuildTone (chat tone prompt; GRMR-native skip) (633ed3d)
  • prompt: inject accept/reject few-shots into the chat system prompt (11a5ee6)
  • redesign: #5 build stamp � [gf] build <sha> <iso-time> at content-script load (b7d4406)
  • redesign: browser extension icon = GrammarForge pencil logo (0674e18)
  • redesign: field scan-line streaming visual (both clients) (cad22be)
  • redesign: port shared design system to OVERLAY_CSS (91a9bcf)
  • redesign: vencord review panel rephrase button (b86f437)
  • redesign: w0 shared types + card helpers (c918ab6)
  • redesign: w1-1 underline tint-on-hover to .gf-u (8195923)
  • redesign: w1-2 hover pill re-skin to .gf-tip (7295c6a)
  • redesign: w1-3 correction card to .gf-card (08edd51)
  • redesign: w1-4 rephrase card scope/tone/skeleton/regenerate (6266ed8)
  • redesign: w1-5 undo toast re-skin (b041733)
  • redesign: w2-1 score orb + streaming fast/slow viz (47e1f1c)
  • redesign: w2-2 review panel (10a9f12)
  • redesign: w2-3 goals popover (c56503a)
  • redesign: w2-4 stats tab + dictionary manager (74f677c)
  • redesign: w2-5 synonyms popover (155802d)
  • redesign: w2-fnd client stats/tone/synonyms methods + shared types (8267ef0)
  • redesign: w2-fnd view-model helpers (score/band/visible/high-conf/mute/tone) (e44acdf)
  • redesign: w2b styles for review panel + goals popover (956e85c)
  • redesign: w3-1+3b browser wire orb/panel/streaming/synonyms + paused empty-state (8fd2034)
  • redesign: w3-2 settings goals + w3-4 theme detect (a52f786)
  • redesign: w3-2 settings goals + w3-4 theme detect (0cc885f)
  • redesign: w3-3 vencord wire panel/goals/stats/synonyms + w3-3b chatbar power glyph + w3-4 dark theme (7fb9629)
  • redesign: wire disabled=paused panel state (both clients) (dd2882e)
  • rest: add POST /rephrase endpoint (b618240)
  • rest: advertise premium:true on /health for bridge-native clients (3276e9f)
  • rest: POST /tone endpoint (f0a0233)
  • restserver: add CORS so browser clients can call the bridge (29366ff)
  • restserver: add POST /complete handler with CompleteEnabled gate (e856d40)
  • rest: thread picky flag through /correct (d7d1284)
  • scripts: add fetch-models.sh to provision GGUF + native libs + GECToR files (45ccd9d)
  • sensitive-field exclusion + split rephrase/synonyms control (7769023)
  • store: add PersonalizationExamples aggregation query (c52d091)
  • store: tone_signals Phase-3 log + AnalyzeTone best-effort logging (ec76249)
  • vencord: add rephraseHotkey setting (default ctrl+/) (7258fc3)
  • vencord: chat-bar button with pill and panel (6d73cd8)
  • vencord: click and focus-flow debug tracing (9fce5be)
  • vencord: composer check orchestrator (6550318)
  • vencord: debug logging setting + hotkey guard (54cb85a)
  • vencord: default accept hotkey ctrl+period (789b1ae)
  • vencord: discord composer detection gate (a9d1afc)
  • vencord: expose rephrase hotkey in settings UI (111ca11)
  • vencord: full apply/selection instrumentation (67e3768)
  • vencord: hover preview tooltip on flagged words (click still opens panel) (41af6bb)
  • vencord: Legion re-skin polish + dead code removal (2d1a0b0)
  • vencord: panel, undo, dictionary, rephrase (953a4d0)
  • vencord: plugin entry with settings (eb96d50)
  • vencord: scaffold toolchain and bundler (5e76c4c)
  • vencord: validated plugin config with defaults (cbd2242)
  • vencord: wire Bug 1 scoped-clear-on-edit + 4 siblings into orchestrator (ed6f54f)
  • vencord: wire rephrase hotkey (default ctrl+/) in capture keydown (8cd4090)

Bug Fixes

  • bridge: bypass sentence split for code-like text (f636820)
  • bridge: close verifier session on shutdown + warn on stub no-op (7d5d45d)
  • bridge: coalesce same-word llm diff edits (2d3128a)
  • bridge: expand allowlist check to word bounds (133ed0c)
  • bridge: give anthropic max_tokens thinking headroom (eee7c4c)
  • bridge: guard against truncated llm output (1c50058)
  • bridge: inject vocabulary block only on dictionary match (d2a3928)
  • bridge: reconstruct word-level personalization pairs (9183ef5)
  • bridge: revert LLM mid-word case-flip over-edits (82a31c8)
  • bridge: rune-safe personalization truncation (3372a34)
  • bridge: sort dialect splices before apply + lexicon cleanup pass (03985a2)
  • bridge: tighten chat prompt against restyle + or/nor overcorrection (d0a62d4)
  • bridge: widen zero-length insertions in v2 check (8d4d1c5)
  • browser: 30s rephrase timeout (2dcd15a)
  • browser: add whole words to dictionary (7269bb9)
  • browser: allowlist bridge url schemes (be8aa79)
  • browser: check paste and undo/redo in rich editors (75864fd)
  • browser: clear chip aria-describedby on teardown (7d34533)
  • browser: detach fields nested in removed containers (d52eb07)
  • browser: drop jagged SVG glass-rim distortion (545580a)
  • browser: harden multi-field pill and popover (524ea52)
  • browser: harden shared overlay + apply/telemetry correctness (11704a2)
  • browser: highlight word range not edit span (ca0acc6)
  • browser: include span in verifyByteSpan cache key (267ab52)
  • browser: isolate measurement mirror from page DOM (8f53e77)
  • browser: keep overlay on SPA nav, persist pill pos (94e5903)
  • browser: keep pill alive across render swaps (2f95f9e)
  • browser: keep popover anchored not centered (526f20d)
  • browser: line-aware contenteditable text model (0c1cbdf)
  • browser: match hotkey by physical key code (8ef0753)
  • browser: mount runtime at startup (nextPauseMode returned off from initial off-state) (abd1874)
  • browser: orb positions via left/top + popover card resets popover API centering (90c7df6)
  • browser: paused pill seeds from last-focused field (ed76484)
  • browser: persist highlights across edits, focus-only pill (491eb73)
  • browser: pill keeps field focus, visible debug logs (7e89f0f)
  • browser: pill power-button click, faint idle, count badge (1e09b86)
  • browser: pill tracks field, refresh native rects (470ffd9)
  • browser: popup contrast for tabs and surfaces (063eeff)
  • browser: reconcile underlines and track scroll (cbc1b06)
  • browser: revert slate apply to legacy path (46a15ef)
  • browser: stored undefined cannot clobber defaults (80fc569)
  • browser: svg namespace on pill icon constants (c0b129f)
  • browser: unspoofable native-highlight style marker (2adf946)
  • clients: keep highlights when focus moves into our overlay popover (c890659)
  • config: realign LogLevel to new Tone column position (4518ba9)
  • correction: decouple per-segment dispatch from sentence cache; cover cache-off newline path (90dec63)
  • correction: drop zero-effect LLM-diff suggestions (D2) (457427a)
  • correction: feed the LLM the original text on escalation (d688eb0)
  • correction: finalize picky style suggestions once on the llm-only path (e287dee)
  • correction: gofumpt-format fakePB method group (64671b3)
  • correction: guarantee extractJSONObject termination (no infinite loop on pathological inputs) (888174b)
  • correction: sort combined suggestions by span before finalize (78c3d23)
  • correction: tolerate stray braces around tone JSON (balanced + json.Valid scan) (9768de9)
  • correction: treat '\n' as hard sentence boundary in SegmentSentences (639f9e5)
  • eval: correct benchmark tokenization (CoNLL PTB-tokenize, BEA caveat) (21476dd)
  • eval: gitignore exception for clean corpus + per-request error handling in clean_eval (e4ce6f8)
  • eval: record relative source path in calibration artifact (e9af194)
  • eval: submit de-tokenized CoNLL source to the bridge (D3) (7cc7692)
  • extension: atomic Apply-all (no text corruption) + real glass edge distortion (73e986c)
  • extension: bake colour into wavy underline SVG (was invisible on dark pages) (3475bfb)
  • extension: clear stale underlines on re-render + repair /signal (7c02d1b)
  • extension: drop stale check results so the pill can't lag (race) (7e12f04)
  • extension: reliable Apply-all + add a recheck button to the pill (b79eac2)
  • ltgrpc: always set a non-empty match description (55d8867)
  • ltgrpc: widen zero-length insertion spans for LanguageTool (5db1f35)
  • opencode: address cross-family review � blocking + nits + A8 test (457f7e8)
  • opencode: address cross-family review � BLOCKING 1+2, SHOULD-FIX 3, NITS 4-5 (fee0dd7)
  • opencode: completion polish, render/status fixes, bridge completion scoping + cache (a048a30)
  • opencode: import Category from @/api/types not @/api/category (823ca29)
  • opencode: paste-mask privacy leak, ghost/rephrase conflict, theming (b93cc04)
  • opencode: refine overlay interaction (4ba9983)
  • opencode: rendering regressions from the redesign pass (637f40b)
  • opencode: word-wrap rephrase card (no truncation) (530f2b0)
  • overlay: HighlightLayer updateItem/clearItem look up by data-item, not pool index (cdc2bc0)
  • overlay: placement + z-index audit across all floating surfaces (41b5ddd)
  • personalization: escape user text in few-shot prompt lines (prompt-injection guard) (a38de50)
  • pipeline: C1 filter only drops suggestions whose span CONTAINS a newline (b8a4652)
  • prompt: escape rephrase tone/style to prevent prompt injection (03f67cd)
  • prompt: forbid accent-stripping and correct-agreement changes (565ab87)
  • redesign: #1 panel refreshes after accept-all/category/item (no stale list) (090f256)
  • redesign: #1 rephrase card + button close on scroll (417a3f8)
  • redesign: #1 spellcheck suppression on by default; #2 orb 60�44px (DC: z(46,40)) (8a0a770)
  • redesign: #1 underline � replace invalid border-bottom:wavy with SVG mask wave (20571ea)
  • redesign: #1/#3 dismiss one-shot + Goals/synonyms onClose calls destroy() (79df9a8)
  • redesign: #10 rephrase card closes after accept + onClose wired (22d8184)
  • redesign: #2 hover pill centered on actual width (not TOOLTIP_WIDTH_MAX) (75fed5d)
  • redesign: #2 hover pill centered on word (left = wordCenterX - pillWidth/2) (f610b2b)
  • redesign: #3 hover pill hover-bridge (400ms grace + pill mouseenter/leave) (327d670)
  • redesign: #3 tab switch in-place (no rebuild flash) + #4 card closes on scroll (e14f10d)
  • redesign: #4 tab swap atomic (off-DOM fragment + replaceChildren, no flash) (cd59ae9)
  • redesign: gf-card compact sizing + orb clickable (pointer-events) vs pre-redesign (655e9aa)
  • redesign: Goals/synonyms light-dismiss + Goals closes with panel (f1e682b)
  • redesign: Goals+synonyms light-dismiss � mousedown�pointerdown (0eda976)
  • redesign: highlight tint hover/active-only (remove focused�is-on) (09000da)
  • redesign: hover pill defaults above word with caret flip (b95eeef)
  • redesign: hover pill position + quick-accept button (DC: gf-pillok) (1e795dc)
  • redesign: panel light-dismiss + Stats�Review tab rebuild (68a8236)
  • redesign: panel-aside glass opacity + misleading gf-card comment (da341ef)
  • redesign: rephrase card styling (DC parity) + outside-click dismiss (ded87d5)
  • redesign: synonyms closes on selectionchange/input (stale anchor) (fdff939)
  • redesign: synonyms word-resolution for textarea (use selectionStart) (263e8cd)
  • redesign: SYSTEMIC-1 � scroll/resize closes transient surfaces + panel out-of-viewport (6de0121)
  • redesign: SYSTEMIC-2 � unified window-capture dismiss (Goals/synonyms/panel/popover) (3288eac)
  • redesign: underline-at-rest regression + tooltip z-index + goals/syn opacity (4dd2c1b)
  • redesign: vencord blur must not clear items when focus moves to GF orb/panel (8fa2224)
  • redesign: vencord rerunFor reset phase on stream error (4f7d37f)
  • redesign: vencord review panel builds from live items on open (4dcf23c)
  • redesign: vencord review panel refreshes on check results + accept (99b9752)
  • redesign: vencord scan-line removal on detach + blur (leak fix) (fb68c83)
  • redesign: vencord tab sync + orb removed; panel Stats-guard on refresh (57c91f2)
  • redesign: w1b review � vencord stub status field + toast timer test (56ef8bb)
  • redesign: w2-fnd align score/band/ring/insights to reference DC (8d4bb0a)
  • redesign: w2c review nits - getBodyContainer null-on-destroy + synonyms ownerDocument (12a85ce)
  • redesign: w3a review - onAcceptItem re-measure live + drop dead anchor ternary + unused param (0abb809)
  • rest: reject trailing data after JSON body in all POST handlers (bd28c0f)
  • scripts: atomic GGUF download in fetch-models.sh (622c8db)
  • store: order rejected examples by recency, not count (0500fdc)
  • vencord: apply via synthetic replacement events (0a25a61)
  • vencord: clear field state when Enter send empties the composer (11358b3)
  • vencord: correct oxfmt invocation in fmt script (e495e08)
  • vencord: drive checks from beforeinput events (5db1c9f)
  • vencord: goals persistence, teardown leaks, hotkey collision (23fe399)
  • vencord: inline selection offsets in traces (d504cb5)
  • vencord: keep synonyms popover clear of composer and selection toolbar (b4f16ed)
  • vencord: paste fallback cancels pending check (9f2b602)
  • vencord: pill above button, solid, first in bar (c6128ac)
  • vencord: pill update survives rect-measure fail (dd81928)
  • vencord: slate-aware apply prevents caret desync (ac72c33)
  • vencord: use pnpm with local workspace config (9d21e2f)
  • vencord: widen insertions for slate target ranges (7c2ad8e)

Performance Improvements

  • browser: cache textarea mirror style (43aa309)
  • browser: hit-test index and hover-only restyle (40445d6)
  • browser: native hover skips category rebuild (3e886a2)
  • browser: one shared scroll resize loop (e8746de)
  • browser: reconcile and transform the pill (5858a18)
  • browser: single-walk contenteditable rect batch (798d0f3)
  • client: null-caret short-circuit in applyScopedClearToField (Finding 5) (44e42a0)
  • extension: fix SPA listener leak, debounce text read, batch span rects (9a92532)
  • opencode: cache display spans to avoid per-cursor rescan (b2ce8df)
  • verify-cache: bound at 4096 entries (FIFO eviction) (5cf359f)