Repository navigation
feat(updates): add owner-controlled web updates - #152
Merged
Merged
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Add System settings → Software updates so the platform owner can inspect official SubLane stable releases and queue an update after acknowledging a verified backup. The page retains progress through restarts and confirms completion only when the target server version is serving.
An opt-in systemd user worker runs the existing checksum-verified installer for script-managed Linux Docker and binary deployments. A single filesystem job survives the application restart; the web process receives a mailbox instead of Docker control. Includes regression coverage, all 11 UI dictionaries, and checksummed installer/worker release assets.
Validation
make generate-check SQLC=/tmp/sublane-online-sqlcpassed using SQLC 1.31.1 built from the local module cache.make lintpassed after rebasing onto the currentmain.go test -race ./internal/updates ./internal/server -run 'TestSoftwareUpdates|TestClientVersionSettings' -count=1passed for the selected server tests; the complete updates package is verified separately.pnpm --dir web testpassed after rebasing: 543 tests across 68 files. The affected settings/update tests also passed separately (24 tests).pnpm --dir web buildand the production Go build passed.node --test scripts/install.test.mjs scripts/updater.test.mjspassed (83 tests), andgo test -race ./internal/updatespassed. Synthetic installer/worker tests cover both deployment modes, download/checksum/startup failures, concurrent jobs, interrupted execution, downgrade rejection, symlinks, and empty mailbox settings.cfa6a38: validation, all three Go race groups, amd64/arm64 native container builds and smoke tests, and the required aggregate check. Successful run.Compatibility and migration
--enable-updatesduring installation or--update; Linux, jq, and a running systemd user manager are required. The first compatible release must publish the checksummedinstall.shandupdater.shassets.SUBLANE_UPDATE_DIRis optional. Docker mounts only the generated mailbox; binary setup writes its absolute path. Custom deployments and development/prerelease builds retain release checks and manual upgrade guidance.Checklist