* fix(a11y): improve landmark semantics and control labeling across web UI
* refactor(web): simplify frontend patterns and reduce duplication
Introduce shared composables and reusable UI shells to keep pages smaller while preserving behavior across settings, bots, selectors, and realtime streaming.
* style(web): apply lint autofix formatting
* refactor(web): modularize chat helpers and split settings sections
This reduces frontend maintenance risk by moving shared logic into focused modules/components while keeping existing behavior and import paths stable.
* refactor(web): remove legacy chat-list and unify dialog submit flow
Drop the unused legacy chat-list stack to reduce maintenance overhead, and centralize dialog mutation error handling so submit behavior stays consistent across create/edit dialogs.
- Trigger Docker build on push to main (with paths-ignore for docs/md/devenv)
- Push `dev` tag on main, `latest` + semver on release tags, build-only on PRs
- Skip QEMU/provenance/sbom for non-release builds to reduce CI time
- Rename ci.yml to migrations.yml for clarity
* chore: add large file check in husky
* refactor(husky): modularize pre-commit hooks
* chore(lint): add vitepress generate cache dir to eslint ignores config
* fix(container): propagate host timezone to all containers
Replace TZ env var with /etc/localtime bind-mount in docker-compose
and inject timezone spec opts into containerd bot containers.
* ci(docker): add docker-publish workflow and clean up release.yml
Add dedicated docker-publish.yml with full CI/CD pipeline:
- Build & push server/agent/web/mcp images on tag, main push, and PR
- Publish to both Docker Hub and GHCR
- Semver tag strategy (latest, version, major.minor, major, sha)
- GHA build cache, SLSA provenance, and SBOM
- PR builds validate without pushing
Remove superseded dockerhub job from release.yml.
* ci: add migration validation workflow
Run migrate up -> down -> up against a temporary PostgreSQL service
container on every PR and push to main, verifying all migrations
apply, rollback, and re-apply correctly.
* ci(docker): only push on tag, skip latest for prereleases
- Remove push-to-main trigger; only tag push publishes images
- Prerelease tags (e.g. v0.1.0-beta.2) publish their version tag
only, without updating latest or short semver tags
* ci: optimize workflow performance
- PR docker builds use single arch (amd64 only), tag push uses dual
- Add paths-ignore to skip CI on docs-only changes
- Add concurrency groups to cancel stale runs on re-push
- Build Go binary once instead of 3x go run in migrate job
* ci: only run migrate job when db/migrations changes
* fix: change memory message role from system to user caused by the imcompatibility of anthropic messages api
* chore(husky): rm web build
---------
Co-authored-by: BBQ <ckr@chenkr.cn>
Co-authored-by: Acbox <acbox0328@gmail.com>
- PR docker builds use single arch (amd64 only), tag push uses dual
- Add paths-ignore to skip CI on docs-only changes
- Add concurrency groups to cancel stale runs on re-push
- Build Go binary once instead of 3x go run in migrate job
- Remove push-to-main trigger; only tag push publishes images
- Prerelease tags (e.g. v0.1.0-beta.2) publish their version tag
only, without updating latest or short semver tags
Run migrate up -> down -> up against a temporary PostgreSQL service
container on every PR and push to main, verifying all migrations
apply, rollback, and re-apply correctly.
Add dedicated docker-publish.yml with full CI/CD pipeline:
- Build & push server/agent/web/mcp images on tag, main push, and PR
- Publish to both Docker Hub and GHCR
- Semver tag strategy (latest, version, major.minor, major, sha)
- GHA build cache, SLSA provenance, and SBOM
- PR builds validate without pushing
Remove superseded dockerhub job from release.yml.