Skip to content

Horizon 2.4.0 ​

Released on 2026-10-02

Download here.

Added ​

  • Log syncing with Solstice! Simply go to the app menu, and click "Manage Data" to find the "Sync with Solstice" option. [Commit]
    • You'll need Solstice version 2026.9.0 or later to access its log sync function.
  • Added a toggle to open every clicked link in Incognito Mode. It's under 'Advanced' in the app settings menu. [Commit]

Changed ​

  • Dates and timestamps shown in the app now follow your display language instead of always using English formatting. [Commit]
  • The summary messages shown after exporting or importing a backup are now translated. [Commit]
  • Counted things ("5 messages", "1 channel") now use the correct plural forms for your display language, including languages with more than two plural forms like Russian. [Commit]
  • The green "Update ready" button now stops nagging you after 5 animation cycles. [Commit]
  • MacOS versions no longer use a tray icon and its functionality is now inside the dock icon's context menu. [Commit]
  • Changing your log directory now restarts the app instead of shutting it down. [Commit]
  • Places with character select dropdowns (like on the profile viewer and friends dialog) now show the selected character's avatar. [Commit]
  • Lamia and naga are not marked as the same species in the hover preview. [Commit]

Fixed ​

  • Grouped channel pruning now has a more sensible grace period. [Commit]
    • This should fix issues where your channels would be ungrouped (with a console message too!) even though you managed to join them correctly after 10 seconds.
  • Fixed various F-Chat Rising bugs with ads and smart filters not firing correctly: [Commit]
    • Smart filters should now work, even if you disable 'Colorize ads'
    • Having too many ads in the queue no longer lets some of them slip by without getting matched/ filtered. First in, first out.
    • Ads are now shown/ hidden retroactively if you change filter settings.
  • Fixed various bad colors in colorblind mode. [Commit]
  • Fixed various buttons not using proper 4.7:1 contrast ratios for their text. [Commit]
  • Guestbooks with more than 15 posts now show an accurate number. [Commit]
  • Toggling the HQ Profile Pics setting now works without needing to restart. [Commit]
  • Having 'Standardize profile fonts' no longer fucks up BBCode parsing if a profile uses characters that are parsed into [ or ]. [Commit]
    • This also makes it so that emoji are now properly visible (even if they aren't technically ASCII characters).
  • Scrolling upwards in the log viewer while searching now loads older messages better, without you needing to scroll upward more than once. [Commit]
  • The tab line no longer slightly overlaps with the window content if you resize the window and then switch tabs. [Commit]
  • Large backup .zip exports now stream to disk, to fix memory overconsumption during the export process. [Commit]
  • Sending a friend request from the profile viewer no longer incorrectly shows you as that person's friend, instead of showing your request as "Pending". [Commit]
  • The mobile quick switcher on top now respects channel group orders. [Commit]
  • Names in the "All Friends" tab to the right are no longer all green if you have "Color friends/ bookmarks in a different color" enabled. Obviously, those are your friends and bookmarks. [Commit]
  • Fixed screen reader and tooltip labels for the public and private channels always claiming a channel is official. [Commit]
  • Did not fix using /roll commands with NaN values :^) [Commit]

Security ​

  • Tightened security for popups and Node in the image/ URL previewer. [Commit]

Development ​

  • Upgraded to Electron 42 (v42.4.1) from 40.10.0. [Commit]
  • Upgraded to Ghostery v2.18.2 from 2.18.1. [Commit]
  • Upgraded the pinned package manager to pnpm 11 (v11.7.0) from 10.33.0. pnpm settings moved into pnpm-workspace.yaml, using the new allowBuilds map for build approvals and disabling the release-age cooldown.
  • The localization runtime now supports named placeholders (l('key', { name }) with {name} in the string), plus a new LocalizedText component for using them in templates. [Commit]
    • All existing locale strings were migrated to full sentences with named placeholders, so translators can reorder words naturally instead of translating sentence fragments. [Commit]
  • Added lp() for plural-aware string lookups backed by CLDR plural rules (via Intl.PluralRules). [Commit]
    • The locale checker now validates plural groups too, so locale files with missing or bogus plural categories fail CI. [Commit]
  • The dev-only "Test Language" is now a readable pseudo-locale: accented characters and length padding make untranslated strings and too-tight layouts easy to spot. [Commit]
  • Locale codes are now valid BCP47 (en-US, en-x-uwu, en-x-pseudo); previously saved display language settings are migrated automatically. [Commit]
  • Removed locale keys that were no longer referenced anywhere. [Commit]
  • The Nix flake now automatically fixes its dependency hash based on PNPM updates. [Commit]
  • Fixed issues with Dev tools not opening properly for the window and image preview web instance. [Commit]
  • Switched to using an API key for CI/CD Mac notarization. [Commit]

Documentation ​

  • Updated the localization docs (docs/localize.md) to cover named placeholders and plural groups. [Commit]

Merged Pull Requests ​

Non PR'd changes by @CodingWithAnxiety and @FatCatClient