Viet Tran
52c67d6d92
feat(build): embed web UI in backend binary + simplify Docker variants ( #620 )
...
- Add internal/webui/ package with //go:build embedui tag for optional
SPA embedding (handler.go serves static files with SPA fallback)
- Add internal/version/ shared semver comparison (DRY: extracted from
gateway/update_check.go and updater/updater.go)
- Enhance UpdateChecker: release notes, ETag caching, filter lite-v* tags
- Add web UI build stage to Dockerfile with ENABLE_EMBEDUI build arg
- Simplify CI: 7 Docker variants → 4 (base, latest, full, otel)
- Add SHA256 checksums job to release workflow
- Add Makefile build-full target (embeds web UI in Go binary)
- Default make up now embeds web UI (no separate nginx needed)
- Add WITH_WEB_NGINX=1 flag for optional nginx reverse proxy
- Update README + 30 translated READMEs: make up, port 18790
- Update docker-compose comments and prepare-env.sh
- About dialog: show release notes with markdown rendering
- Health card: amber badge for available updates
BREAKING: Default Docker setup no longer requires selfservice overlay.
Web dashboard served at :18790 (same port as API).
2026-04-01 15:25:59 +07:00
Kai (Tam Nhu) Tran
4c60dd021e
fix: clarify container-scoped runtime warnings for minimal images ( #395 )
...
* fix(ui): clarify container-scoped runtime warnings
* docs(runtime): clarify docker image variant expectations
* test(tools): align media path expectations with workspace policy
* docs(tests): narrow message media path contract wording
2026-03-30 21:44:53 +07:00
viettranx
b373561f72
fix(desktop): fetch up to 100 releases to find lite-v* tags
...
GitHub API returns 30 releases by default. With 30+ v2.x releases,
lite-v* tags were pushed out of page 1 causing "No desktop release
found" error.
2026-03-27 23:44:59 +07:00
viettranx
e1b8217e45
fix(desktop): keep PowerShell window open on install errors
...
Add Exit-WithPause helper that waits for keypress before closing the
window, so users can read error messages when fetch/download fails.
2026-03-27 23:37:06 +07:00
viettranx
4102d4f321
fix(scripts): auto-launch app after install on macOS and Windows
2026-03-27 12:23:29 +07:00
viettranx
c2cb37afcf
fix(desktop): improve Windows install script error handling
...
- SilentlyContinue progress preference (10x faster download)
- try/catch on API + download calls with colored error messages
- Non-fatal shortcut creation (works without admin)
- Colored output for better UX
2026-03-27 10:32:10 +07:00
viettranx
e5175a044a
fix(desktop): install script pipefail on missing release
...
grep returns exit 1 when no lite-v* tags exist yet, which
pipefail propagates before the -z check. Add || true.
2026-03-27 10:31:03 +07:00
viettranx
b9c1731e31
feat(desktop): packaging, auto-update, CI/CD, and install scripts
...
- GitHub Actions: release-desktop.yaml builds macOS (arm64+amd64) + Windows
on lite-v* tag push, creates DMG + tar.gz + zip GitHub Release assets
- Install scripts: install-lite.sh (macOS curl) + install-lite.ps1 (Windows PowerShell)
- Auto-update: internal/updater checks GitHub Releases, downloads + atomic
app swap with path traversal guards, size limits, symlink handling
- UpdateBanner: thin notification bar with download progress + restart
- Wails bindings: CheckForUpdate, ApplyUpdate (server-cached, no URL from JS),
RestartApp (graceful gateway shutdown before exit)
- AboutTab: dynamic version from backend via GetVersion()
- Windows build assets: icon.ico, info.json, wails.exe.manifest
- Makefile: desktop-dev, desktop-build, desktop-dmg targets
- README: Desktop Edition section with install commands + feature comparison
- .gitignore: desktop packaging artifacts, SQLite DB files, update backups
Security: HTTPS-only downloads, io.LimitReader on all extractions,
zip/tar path traversal validation, symlink target guard, no untrusted
URL from frontend (ApplyUpdate uses server-cached info).
2026-03-27 10:15:15 +07:00
Thieu Nguyen
7f19db14f5
fix(install): bundle migrations in release tarball and install script ( #249 )
...
The install script only copied the binary, so `goclaw migrate up` and
`goclaw onboard` failed when run from the installed location because the
migrations directory was missing.
- Include migrations/ in the release tarball
- Install migrations to /usr/local/share/goclaw/migrations
- Guide users to export GOCLAW_MIGRATIONS_DIR before onboard
- Align next-steps output with onboard's own instructions
2026-03-18 07:32:53 +07:00
Goon
9429a7c844
ci: publish Docker images to GHCR and Docker Hub ( #237 )
...
* feat(ci): add node/python/full runtime variants to Docker publish
Add runtime image variants alongside existing build-tag variants:
- :node (pre-installed Node.js)
- :python (pre-installed Python)
- :full (Node.js + Python + all skill deps)
* feat(ci): add install scripts, release binaries, and Discord notifications
- scripts/install.sh: one-liner binary installer from GitHub Releases
- scripts/setup-docker.sh: interactive Docker setup with variant selection
(alpine/node/python/full), auto-generates .env + docker-compose.yaml
with persistent volumes for data, skills, workspace, storage
- release.yaml: build cross-platform binaries (linux/darwin × amd64/arm64)
and attach to GitHub Release, notify Discord on new releases
- .gitignore: ignore Apple Double (._*) files from external volumes
* docs(docker): add pre-built image references and update docker-compose workflows
- Add `image:` directives to docker-compose.yml, docker-compose.selfservice.yml, and docker-compose.upgrade.yml pointing to ghcr.io/nextlevelbuilder/goclaw pre-built images
- Add Docker Hub mirror references (digitop/goclaw) for public access
- Document available image tags (latest, node, python, full, otel, tsnet, redis) with descriptions
- Update README with pre-built image pull instructions and semver tag examples
- Clarify deployment workflows: use pre-built images by default (no --build), add --build only when building from source
- Update upgrade workflow to pull pre-built images instead of rebuild
- Add note about build args requirement for otel/tsnet/redis overlays
- Update .dockerignore to exclude macOS temp files (._*)
* fix(ci): use claude_code_oauth_token instead of anthropic_api_key
2026-03-17 12:44:18 +07:00