Skip to content

v1.5.6

Choose a tag to compare

@shenaba shenaba released this 16 Jul 06:12
229627d

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 release SHA256SUMS before 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 ERESOLVE on every npm install build path (release, Windows, Docker, build.sh) after the pinia 4 bump — vue-router 5.0.7 declared peerOptional 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 — no v prefix, and a tag that never existed in this repo. install.sh interpolates the argument verbatim into both the raw.githubusercontent.com ref and the release download URL, and every tag here is vX.Y.Z, so both 404'd. Corrected across all six locales. #41
  • install.sh no longer prints s-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 own v. The prefix is now normalised, so both 1.5.6 and v1.5.6 work as the version argument. #41
  • Drop an API dedup interceptor that never actually ran. #30

Frontend

  • New VersionMenu popover and UpdateModal, backed by a dedicated version store; 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-api is 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 plain git clone now gives you the whole tree, with no submodule update --init. Build scripts and docs are rewired accordingly. #33
  • CI now runs go vet, a tagged Go build, and vue-tsc + vite build on every pull request. #31
  • Bump golang.org/x/crypto to 0.54.0, actions/setup-node to v7.

Full changelog: v1.5.5...v1.5.6