v1.5.6
This release brings in-panel self-update, inlines the frontend into the main repository, and refreshes the whole frontend dependency stack. No database migration is required.
Upgrading from v1.5.5 is a manual install — self-update ships in this release, so 1.5.5 panels do not have it yet. From v1.5.6-alpha.1, the in-panel updater will offer this build.
Features
- In-panel self-update. Check, download and apply a new panel release from the dashboard — no shell, no
s-ui update. The archive is verified against the releaseSHA256SUMSbefore the running binary is replaced, and the panel restarts itself on success. #30 - Self-update works in Docker too, not just on systemd hosts. The container path swaps the binary in the writable layer and re-execs the entrypoint; the confirm dialog spells out that recreating the container reverts it. #30
- Update surfacing in the UI: a sidebar version pill with an update popover (manual re-check included), and an update-available chip on the dashboard server card. The GitHub release lookup runs from the browser and is cached for 24h, so the panel host never needs outbound access. #30
Bug Fixes
- Fix
ERESOLVEon everynpm installbuild path (release, Windows, Docker,build.sh) after the pinia 4 bump — vue-router 5.0.7 declaredpeerOptional pinia@^3.0.4. Bumped to vue-router 5.2.0, which widens the range to^3.0.4 || ^4.0.2. #39 - The documented legacy-install command now works. The README example passed
VERSION=1.0.0— novprefix, and a tag that never existed in this repo.install.shinterpolates the argument verbatim into both theraw.githubusercontent.comref and the release download URL, and every tag here isvX.Y.Z, so both 404'd. Corrected across all six locales. #41 install.shno longer printss-ui vv1.5.6. It kept a v-prefixed tag in one code path and a bare version in the other, while every message hardcoded its ownv. The prefix is now normalised, so both1.5.6andv1.5.6work as the version argument. #41- Drop an API dedup interceptor that never actually ran. #30
Frontend
- New
VersionMenupopover andUpdateModal, backed by a dedicatedversionstore; update strings added across all six locales (en / fa / vi / ru / zh-CN / zh-TW). #30 - Dependency refresh: pinia 4.0.2, vue-router 5.2.0, vite 8.1.4, axios 1.18.1, vue-i18n 11.4.6, eslint 10.7.0, vue-tsc 3.3.7, @vitejs/plugin-vue 6.0.8, typescript-eslint 8.64.0, @types/node 26.1.1, globals 17.7.0.
@vue/devtools-apiis now declared explicitly. pinia 4 requires it as a non-optional peer, and until now it resolved only because vue-router happens to depend on it directly — the range was inherited rather than owned. #41- form-data 4.0.6, up from 4.0.5 (GHSA-hmw2-7cc7-3qxx). Hygiene rather than a security fix: it reaches the tree through axios but never shipped — the browser build uses the native
FormData, and the Node adapter that imports the package is tree-shaken out. The bundle is byte-identical before and after. #41
Maintenance
- The frontend is now inlined under
frontend/. It used to be a submodule (shenaba/2s-ui-frontend); a plaingit clonenow gives you the whole tree, with nosubmodule update --init. Build scripts and docs are rewired accordingly. #33 - CI now runs
go vet, a tagged Go build, andvue-tsc+vite buildon every pull request. #31 - Bump
golang.org/x/cryptoto 0.54.0,actions/setup-nodeto v7.
Full changelog: v1.5.5...v1.5.6