* fix(thread-page): make thread auto updates opt-in
Wire `Auto` and `Update` to the same manual refresh path and cover the thread flow with an e2e harness.
* fix(thread-page): address PR review findings
* fix(electron): restore packaged desktop app loading
Rebuild and verify Electron native modules before packaging and use the Vite base URL for packaged asset preloads.
* test(preload-utils): cover non-root base urls
Spaces in Electron Forge filenames (e.g. "5chan Setup.exe") broke
markdown download links in the release body. Also add allowUpdates
to finalize-release so it succeeds when a release already exists.
Restructure the release workflow so build jobs upload workflow artifacts
instead of creating GitHub releases directly. A single finalize-release
job downloads all artifacts and creates the release only when every
platform build succeeds. Also removes the unused gradle bundle step
from the Android job and adds retry logic to gradlew assembleRelease.
Add a `postinstall` repair step for the git-based `@bitsocialhq/bitsocial-react-hooks` package so test and build environments stop tripping over extensionless relative imports in dist. This keeps GitHub Actions aligned with local installs without changing app logic.
Replaced test.yml with ci.yml, added a built-app smoke runner in scripts/smoke-web-app.js, and inserted a release preflight so tags run the same core checks before packaging.
Add static blotter snapshot, route /blotter, compact board blotter (Hide/Show All).
Include yarn blotter tooling and AGENTS rules so every changelog version has a
release line. 4chan-style table UI, subplebbit→board and plebchan→5chan in messages.
Multi-adapter boundary in normalizeDirectoriesData() supports both
communities[] and directories[] upstream schemas. Sync script mirrors
logic and writes canonical format. Preserves directoryCode and features
for future use.
Adds sync-directories.js script that fetches 5chan-directories.json from bitsocialhq/lists and updates the vendored fallback. Runs before generate:assets in prestart and prebuild to ensure the fallback is fresh for every build. Non-fatal: if fetch fails, existing file is kept.
Update button calls useReplies().reset() for manual refresh. Auto button
shows translated informational alert. Register reply feed reset in Post
desktop/mobile when on post page.
Added fallback variable to track valid candidates that don't match appName. Now returns immediately on exact match, otherwise continues searching and falls back to any valid executable. Applied fix consistently across Windows, Darwin, and Linux branches including .app directories and .AppImage files.