Skip to content

Releases: Pavel1778/Klyrshift

v0.2.9

Choose a tag to compare

@github-actions github-actions released this 19 Oct 08:48
e453bc1

What's Changed

  • fix(screenshots): make README renders byte-reproducible; harden update URL by @Pavel1778 in #22
  • chore(site): pin sharp past the libvips/libheif/librsvg advisories by @Pavel1778 in #23
  • chore(site): migrate landing page to Astro 7 + Tailwind CSS 4 by @Pavel1778 in #33
  • fix(site): complete the LinguaFix → Klyrshift rename (live hosts) by @Pavel1778 in #34
  • Pin the Node major (24), not a patch, for the Layero build by @Pavel1778 in #35
  • Add always-on learning and stop re-fixing undone corrections by @Pavel1778 in #36
  • chore(deps): bump actions/checkout from 4 to 7 by @dependabot[bot] in #24
  • chore(deps): bump actions/setup-node from 4 to 7 by @dependabot[bot] in #25
  • chore(deps): bump actions/setup-python from 5 to 7 by @dependabot[bot] in #26
  • chore(deps): bump actions/upload-artifact from 4 to 7 by @dependabot[bot] in #28
  • chore(deps): update tomli requirement from >=2.0.1 to >=2.5.0 by @dependabot[bot] in #29
  • chore(deps): bump softprops/action-gh-release from 2 to 3 by @dependabot[bot] in #30
  • Correct the Layero Node notes against the real deploy log by @Pavel1778 in #37
  • Prepare v0.2.9: Debian 13 hardening, undo safety, dependency drift by @Pavel1778 in #38

New Contributors

Full Changelog: v0.2.8.4...v0.2.9

v0.2.8.4

Choose a tag to compare

@github-actions github-actions released this 18 Oct 14:16

Full Changelog: v0.2.8.3...v0.2.8.4

v0.2.8.3

Choose a tag to compare

@github-actions github-actions released this 18 Oct 10:54

Full Changelog: v0.2.8...v0.2.8.3

v0.2.8

Choose a tag to compare

@github-actions github-actions released this 08 Oct 17:20

What's Changed

  • v0.2.8 — fix text deformation + full audit (tasks 1–10, features A/B) by @Pavel1778 in #21

Full Changelog: v0.2.7...v0.2.8

v0.2.7

Choose a tag to compare

@github-actions github-actions released this 08 Oct 11:15
e689f26

What's Changed

  • fix: undo hotkey docs match the real default (SHIFT+BACKSPACE), v0.2.7 by @Pavel1778 in #20

Full Changelog: v0.2.6...v0.2.7

v0.2.6

Choose a tag to compare

@github-actions github-actions released this 08 Oct 11:06
9b45759

What's Changed

  • fix: v0.2.6 — daemon-written history, config-safe persist, short-word hotkey by @Pavel1778 in #18
  • fix(packaging): prune nested bytecode + empty dirs on purge (v0.2.6 release recovery) by @Pavel1778 in #19

Full Changelog: v0.2.5...v0.2.6

v0.2.5

Choose a tag to compare

@github-actions github-actions released this 08 Oct 10:12

Full Changelog: v0.2.4...v0.2.5

v0.2.4

Choose a tag to compare

@github-actions github-actions released this 08 Oct 09:19

Full Changelog: v0.2.3...v0.2.4

v0.2.3

Choose a tag to compare

@github-actions github-actions released this 07 Oct 22:12
440f9dc

v0.2.3

Установка / Install

wget https://github.com/Pavel1778/LinguaFix/releases/download/v0.2.3/linguafix_0.2.3_all.deb
sudo apt install ./linguafix_0.2.3_all.deb

SHA-256: 0be9878a1ac47f877bf96697343bbc671f89f295222b95d6fed5cbe741515948

[0.2.3] - 2026-10-07

Added

  • Two-edit typo correction for long words: a word of at least six characters may
    now be corrected within typo_max_distance_long edits (default 2), but only
    when the best candidate is clearly more frequent than the runner-up. Short
    words keep the strict one-edit rule. Config keys: typo_max_distance_long,
    typo_long_word_threshold, typo_top1_ratio_strict.
  • Adaptive idle timeout (analysis_timeout_adaptive, on by default): the
    fallback that flushes a word typed without a separator now follows the user's
    typing speed — shorter for a fast typist, longer for a slow one — clamped to
    0.3–2.0 s. Only inter-key timing is recorded, never characters.
  • A "Т9" tab in the GUI with a single master toggle for typo correction and the
    new punctuation cleanup, plus per-rule rows.
  • Opt-in punctuation cleanup (punctuation.py): dashes, ellipsis, Cyrillic smart
    quotes and spacing, applied only when layout detection and typo correction both
    decline. A replacement the input backend cannot type is refused wholesale rather
    than half-applied. Off by default.
  • Search-engine metadata for two indexed hosts: each host declares itself
    canonical (https://linguafix.layero.app for the Russian primary,
    https://linguafix.vercel.app for the English mirror) and cross-links the other
    with hreflang (ru, en, x-default), so the copies do not compete as
    duplicate content. A generated robots.txt and a sitemap are emitted per host,
    the default description/og:locale/JSON-LD follow the host language, and the
    README carries a keyword paragraph plus both site links.
  • Google and Yandex site-verification files served on both hosts, an
    apple-touch-icon, and a footer "About" block in the host language.
  • Packaging contract tests (tests/test_packaging_contract.py): the systemd
    user unit (no Nice/CPUSchedulingPolicy, Restart=always), the desktop
    entry, package-data coverage, bytecode stripping in build_deb.sh, the
    release workflow's tag filter, and a real dpkg-deb contents check.

Changed

  • linguafix fix now loads the user dictionary before detection, so a taught
    brand such as vercel is corrected by the CLI exactly as the daemon does.

Fixed

  • The GUI no longer freezes ("приложение не отвечает"): the home page ran its
    daemon probes (systemctl, g3kb-switch, xprop, the focused-app D-Bus query)
    synchronously on the GTK main thread on a timer and on every toggle click. They
    now run on a worker thread (gui/async_utils.run_in_background) and report back
    on the main thread; the toggle click and its reconcile poll are async too.

  • The window tab labels are no longer truncated ("Глав…"): the fixed wide
    ViewSwitcher is replaced by a header ViewSwitcherTitle plus a bottom
    ViewSwitcherBar that appears only on narrow windows.

  • daemon_control._systemctl backs off for 10 s after a timeout so a hung user
    D-Bus cannot re-pay the 5 s timeout on every GUI refresh.

  • The desktop launcher declares StartupWMClass equal to the application id, so
    GNOME associates the running window with its installed entry.

  • Both hosts publish their own sitemap and robots.txt instead of the preview
    suppressing them, so each is independently discoverable without duplicate content.

  • Landing page mobile audit (8 items): removed the leaked developer note
    «Плейсхолдер — замените реальным скриншотом» from all four mock-up SVGs;
    replaced the external shields.io footer badges (broken behind a slow/blocked
    CDN, and not proxied by the host) with self-hosted SVGs in
    site/public/badges/; the footer now names the single canonical host
    (linguafix.layero.app) instead of a mirror link that hit a login wall; code
    blocks now wrap instead of clipping
    at 375 px; the install tabs stack vertically on mobile; localised the
    «Privacy First» feature title to «Приватность»; softened the step-03 copy to
    «Атомарно, одной транзакцией».

  • The opt-in update check no longer blocks the keyboard event loop: the daily
    network request runs on a worker thread, so a slow or offline network cannot
    freeze typing for the whole request timeout.

  • Landing page: the power glyph in the hero and the placeholder window is centred
    again. The arc's sweep flag was inverted, which pushed the icon to the top of
    the button instead of forming a ring around its centre.

  • Landing page demo leaves URL, e-mail, path and version tokens untouched,
    matching the daemon's structural-separator rule.

  • Re-synced black formatting of tests/test_data_sync.py with the current
    release of the formatter.

Removed

  • Stale release tag v0.2.0-stage2 and the merged feature branches; main is
    the only branch left in origin.

Full Changelog: v0.2.2...v0.2.3

v0.2.2

Choose a tag to compare

@github-actions github-actions released this 07 Oct 20:12
e0bf334

What's Changed

  • v0.2.2: stop/kill via daemon_control, GUI config push, window resize fix, button restyle by @Pavel1778 in #16

Full Changelog: v0.2.1...v0.2.2