- Add build-macos-launcher job (runs on macOS, parallel with GoReleaser)
that builds the CGO-enabled launcher with systray support, signs and
notarizes it via rcodesign, then uploads as artifact.
- Add patch-macos-archives job (runs on cheap Linux runner, needs both
GoReleaser and build-macos-launcher) that downloads the launcher
artifact and darwin release archives, replaces the launcher binary,
and re-uploads the patched archives.
- Fix Docker image tag errors: GITHUB_REPOSITORY_OWNER is immutable in
GitHub Actions. Introduce REPO_OWNER (lowercase) in workflows and
reference it in .goreleaser.yaml for GHCR image names and nfpms
homepage.
- Make Docker Hub login conditional on DOCKERHUB_USERNAME secret being
set, so forks without Docker Hub credentials don't fail.
- Make Docker Hub image in goreleaser conditional on DOCKERHUB_IMAGE_NAME
being non-empty (empty image names are ignored by GoReleaser).
Verified on fork: both nightly and release workflows pass all jobs.
Nightly: https://github.com/BeaconCat/picoclaw/actions/runs/24848808843
Release: https://github.com/BeaconCat/picoclaw/actions/runs/24849753787
Co-authored-by: BeaconCat <BeaconCat@users.noreply.github.com>
- centralize web search provider readiness and resolution logic
- fall back when the configured provider is unavailable or invalid
- allow native-search-capable models to use built-in search without the client tool
- simplify the tools page and add direct access to web search settings
- add backend, agent, and integration tests for the new selection behavior
* refactor: support explicit model list providers
* fix(web): preserve explicit model providers
* fix(web): preserve legacy provider prefixes on model updates
fix(models): normalize explicit provider-prefixed ids
fix(api): preserve legacy model updates across providers
fix(agent): preserve config identity for explicit provider refs
* fix ci
* feat(web): download attachments in frontend
* fix: proxy pico media and force svg downloads
* feat(web): hide ephemeral media refs from persisted session history
- Add `create-tag.yml`: creates annotated tag at a specified commit or
latest main HEAD, with duplicate tag and commit validation
- Simplify `release.yml`: only accepts existing tags, removes create_tag
toggle, validates tag via GitHub API before checkout
- Always checkout main branch (fetch-depth: 0 fetches full history),
then create tag at the specified commit
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
Add a context window usage indicator to the web chat UI and a /context
slash command that works across all channels.
Backend:
- Add computeContextUsage() estimating history + system + tool tokens
- Attach ContextUsage to outbound messages via the pico WebSocket protocol
- Add /context command showing context stats as formatted text
- Add EstimateSystemTokens() on ContextBuilder for system prompt estimation
Frontend:
- Add ContextUsageRing component (SVG ring + hover/tap popover)
- Show usage percentage, token counts, and compression threshold
- Hover on desktop (150ms leave delay), tap on mobile
- "View Details" sends /context with 1s cooldown
- i18n support (en/zh) for popover labels
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
Add reusable channel array list controls and parsing utilities for channel forms.
Normalize channel string-array payloads in the backend, including pasted values,
numeric IDs, hidden characters, duplicates, and empty clears.
Also allow FlexibleStringSlice to unmarshal null values and cover the new behavior
with backend and config tests.
Filter raw tool messages from session history and avoid duplicate summaries for visible message-tool output. Preserve final assistant replies after tool delivery and add coverage for visible transcript counts.
Also refine the chat UI with collapsible reasoning blocks, send shortcut hints, command-style user messages, stable scroll gutters, and updated i18n strings.
- stop exposing the raw Pico token to the frontend
- add /api/pico/info for non-secret Pico connection metadata
- proxy /pico/ws through the launcher with same-origin and dashboard auth checks
- inject the upstream Pico websocket protocol server-side
- update frontend chat connection flow and Vite websocket proxy path
- refresh related docs and tests
* refactor(docs): reorganize docs by type and locale
* chore(docs): add docs layout lint target and contributor guidance
Introduce a lint-docs script and Makefile target for common
documentation naming and placement checks. Expand docs/README.md
with layout and translation conventions, and update CONTRIBUTING.md
to point contributors to the new docs guidance and validation step.
* docs: add section index pages and fix localized doc links
- add reader navigation to docs/README.md
- add index pages for guides, reference, operations, security, architecture, and migration
- update localized project README links to prefer existing translated docs
* docs: fix broken wecom link in Malay README