Hoshina
9ca73b944f
fix(agent): preserve prompt hook and cache semantics
2026-04-25 01:25:17 +08:00
Hoshina
48d8952591
feat(agent): migrate tool prompts to capability slots
2026-04-24 19:36:46 +08:00
Hoshina
2e65b1be83
feat(agent): add structured prompt layering
2026-04-24 18:14:28 +08:00
Junghwan
293477b02a
Keep launcher locale changes from mutating shared web-search routing ( #2573 )
...
The launcher wired UI language changes into a process-global backend
switch that changed auto web-search provider selection and the
reported current service for every handler in the same process.
This narrows the fix to the validated leak: remove backend sync from
frontend locale changes, drop the now-unused UI endpoint, and make
auto selection fall back to a stable default when the query itself
does not contain a script hint.
Constraint: Keep the patch small and mergeable without redesigning per-user preference storage
Rejected: Add per-user backend language state | larger scope than the validated bug and unclear maintainer preference
Rejected: Persist preferred language in config | still shares mutable state across clients of the same instance
Confidence: high
Scope-risk: narrow
Reversibility: clean
Directive: If locale-aware provider routing is reintroduced later, scope it to explicit config or request context instead of package-global state
Tested: go test ./web/backend/api ./pkg/tools -count=1; pnpm lint; pnpm build
Not-tested: Full make check; live multi-browser manual launcher run after the backend endpoint removal
2026-04-24 13:45:25 +08:00
dependabot[bot]
47a881b11f
build(deps-dev): bump typescript-eslint in /web/frontend ( #2638 )
...
Bumps [typescript-eslint](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/typescript-eslint ) from 8.58.2 to 8.59.0.
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases )
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/typescript-eslint/CHANGELOG.md )
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v8.59.0/packages/typescript-eslint )
---
updated-dependencies:
- dependency-name: typescript-eslint
dependency-version: 8.59.0
dependency-type: direct:development
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot] <support@github.com >
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-04-24 12:05:08 +08:00
dependabot[bot]
743d7e69f2
build(deps): bump github.com/larksuite/oapi-sdk-go/v3 ( #2637 )
...
Bumps [github.com/larksuite/oapi-sdk-go/v3](https://github.com/larksuite/oapi-sdk-go ) from 3.5.3 to 3.5.4.
- [Release notes](https://github.com/larksuite/oapi-sdk-go/releases )
- [Changelog](https://github.com/larksuite/oapi-sdk-go/blob/v3_main/changelog.md )
- [Commits](https://github.com/larksuite/oapi-sdk-go/compare/v3.5.3...v3.5.4 )
---
updated-dependencies:
- dependency-name: github.com/larksuite/oapi-sdk-go/v3
dependency-version: 3.5.4
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <support@github.com >
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-04-24 12:04:47 +08:00
dependabot[bot]
047a904b4f
build(deps): bump github.com/rs/zerolog from 1.35.0 to 1.35.1 ( #2635 )
...
Bumps [github.com/rs/zerolog](https://github.com/rs/zerolog ) from 1.35.0 to 1.35.1.
- [Commits](https://github.com/rs/zerolog/compare/v1.35.0...v1.35.1 )
---
updated-dependencies:
- dependency-name: github.com/rs/zerolog
dependency-version: 1.35.1
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <support@github.com >
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-04-24 12:02:04 +08:00
dependabot[bot]
1dba8e9e91
build(deps-dev): bump vite from 8.0.8 to 8.0.10 in /web/frontend ( #2634 )
...
Bumps [vite](https://github.com/vitejs/vite/tree/HEAD/packages/vite ) from 8.0.8 to 8.0.10.
- [Release notes](https://github.com/vitejs/vite/releases )
- [Changelog](https://github.com/vitejs/vite/blob/main/packages/vite/CHANGELOG.md )
- [Commits](https://github.com/vitejs/vite/commits/v8.0.10/packages/vite )
---
updated-dependencies:
- dependency-name: vite
dependency-version: 8.0.10
dependency-type: direct:development
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <support@github.com >
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-04-24 11:59:54 +08:00
dependabot[bot]
73594a07ca
build(deps): bump github.com/aws/aws-sdk-go-v2/config ( #2633 )
...
Bumps [github.com/aws/aws-sdk-go-v2/config](https://github.com/aws/aws-sdk-go-v2 ) from 1.32.14 to 1.32.16.
- [Release notes](https://github.com/aws/aws-sdk-go-v2/releases )
- [Commits](https://github.com/aws/aws-sdk-go-v2/compare/config/v1.32.14...config/v1.32.16 )
---
updated-dependencies:
- dependency-name: github.com/aws/aws-sdk-go-v2/config
dependency-version: 1.32.16
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <support@github.com >
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-04-24 11:59:30 +08:00
dependabot[bot]
ffd22c7fb6
build(deps): bump i18next from 26.0.3 to 26.0.7 in /web/frontend ( #2632 )
...
Bumps [i18next](https://github.com/i18next/i18next ) from 26.0.3 to 26.0.7.
- [Release notes](https://github.com/i18next/i18next/releases )
- [Changelog](https://github.com/i18next/i18next/blob/master/CHANGELOG.md )
- [Commits](https://github.com/i18next/i18next/compare/v26.0.3...v26.0.7 )
---
updated-dependencies:
- dependency-name: i18next
dependency-version: 26.0.7
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <support@github.com >
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-04-24 11:55:19 +08:00
dependabot[bot]
39d7b3a63e
build(deps): bump react-i18next from 17.0.3 to 17.0.4 in /web/frontend ( #2631 )
...
Bumps [react-i18next](https://github.com/i18next/react-i18next ) from 17.0.3 to 17.0.4.
- [Changelog](https://github.com/i18next/react-i18next/blob/master/CHANGELOG.md )
- [Commits](https://github.com/i18next/react-i18next/compare/v17.0.3...v17.0.4 )
---
updated-dependencies:
- dependency-name: react-i18next
dependency-version: 17.0.4
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <support@github.com >
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-04-24 11:50:45 +08:00
Mauro
9fc72c1fb3
feat(tool-feedback): add separate message mode for chat feedback ( #2644 )
...
* feat(tool-feedback): add separate message mode for chat feedback
* add parameter in conf
2026-04-24 11:49:41 +08:00
美電球
0d1b041d74
Merge pull request #2485 from afjcjsbx/fix/telegram-oauth-links
...
fix(telegram): preserve raw OAuth links in HTML rendering
2026-04-24 11:35:16 +08:00
BeaconCat
9fba52d0fa
ci: parallel macOS CGO launcher build, lowercase Docker tags, conditional Docker Hub login ( #2643 )
...
- 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 >
2026-04-24 09:53:07 +08:00
Mauro
f440047263
Merge pull request #2640 from sipeed/dependabot/go_modules/github.com/aws/aws-sdk-go-v2/service/bedrockruntime-1.50.5
...
build(deps): bump github.com/aws/aws-sdk-go-v2/service/bedrockruntime from 1.50.4 to 1.50.5
2026-04-23 19:32:21 +02:00
dependabot[bot]
ac4db35c0b
build(deps): bump github.com/aws/aws-sdk-go-v2/service/bedrockruntime
...
Bumps [github.com/aws/aws-sdk-go-v2/service/bedrockruntime](https://github.com/aws/aws-sdk-go-v2 ) from 1.50.4 to 1.50.5.
- [Release notes](https://github.com/aws/aws-sdk-go-v2/releases )
- [Commits](https://github.com/aws/aws-sdk-go-v2/compare/service/ssm/v1.50.4...service/ssm/v1.50.5 )
---
updated-dependencies:
- dependency-name: github.com/aws/aws-sdk-go-v2/service/bedrockruntime
dependency-version: 1.50.5
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <support@github.com >
2026-04-23 17:19:51 +00:00
美電球
0c0a582559
Merge pull request #2586 from kunalk16/fix-functions-deduplication
...
refactor(deduplication): functions deduplication in pkg/providers
2026-04-23 20:55:11 +08:00
wenjie
cac4f21746
fix(tools): improve web search provider fallback ( #2629 )
...
- 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
2026-04-23 15:39:16 +08:00
Kunal Karmakar
7616470137
Revert deduplication
2026-04-23 05:50:38 +00:00
Kunal Karmakar
4ae11406d2
Deduplicate further functions
2026-04-23 05:50:37 +00:00
Kunal Karmakar
bc077db0ee
Deduplicate ParseDataAudioURL function
2026-04-23 05:50:37 +00:00
Kunal Karmakar
e901e70c14
Fix linting
2026-04-23 05:47:58 +00:00
Kunal Karmakar
c71146b1d5
Functions deduplication
2026-04-23 05:47:58 +00:00
lxowalle
451db2f5d8
Feat(channels): unify animated tool feedback across chat channels and Pico ( #2622 )
...
* feat(channels): unify tool feedback animation across discord telegram and feishu
* fix(tool-feedback): unify fallback and single-message delivery
* fix(channels): finalize tool feedback in place
* fix ci
* feat: improve tool feedback
* fix review blockers in pico token cache and tool feedback
fix(provider): preserve function thought signatures
fix(feishu): recover tool feedback after edit fallback
* * delete dead code
* fix(pico): clean up tool feedback progress state
* fix ci
* fix(web): preserve tool feedback line breaks in chat
* fix(channels): preserve tool feedback progress state
fix(pico): preserve context usage when finalizing tool feedback
chore: record branch review pass
fix: preserve tool feedback finalization state
fix(web): handle pico history update fallback
* fix ci
2026-04-23 10:35:50 +08:00
Mauro
68ceb54b36
Merge pull request #2535 from afjcjsbx/feat/mcp-channel-commands
...
feat(commands): add MCP slash commands and tool details
2026-04-22 14:54:28 +02:00
wenjie
f367a9c010
fix(web): use raw token for Pico media proxy and refresh chat attachment UI ( #2618 )
2026-04-22 15:14:20 +08:00
lxowalle
77b0c43392
refactor: support explicit provider field in model list entries ( #2609 )
...
* 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
2026-04-22 11:28:47 +08:00
Mauro
3316ee6923
feat(web): download files on frontend ( #2563 )
...
* feat(web): download attachments in frontend
* fix: proxy pico media and force svg downloads
* feat(web): hide ephemeral media refs from persisted session history
2026-04-22 11:28:04 +08:00
Guoguo
023ca2e4c1
ci(release): split tag creation and release into separate workflows ( #2614 )
...
- 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 >
2026-04-22 10:07:14 +08:00
Mauro
279c496bb2
Merge pull request #2613 from sky5454/tmp_govet_fix
...
chore(isolation): fix govet shadow declaration of "err" shadows
2026-04-21 18:30:48 +02:00
sky5454
d0507df894
chore(isolation): fix govet shadow declaration of "err" shadows
2026-04-21 23:23:50 +08:00
wenjie
71c877a67f
refactor(web): switch dashboard auth from tokens to passwords ( #2608 )
...
- replace token-based launcher auth with password-based login and sessions
- migrate legacy launcher_token values into bcrypt-backed password storage
- add one-shot local auto-login bootstrap
- update config UI, i18n strings, docs, and auth-related tests
v0.2.7
2026-04-21 18:04:15 +08:00
肆月
a5379d5fff
feat(feishu): Add group chat trigger and random emoji response frontend configuration ( #2607 )
...
- 添加 group_trigger.mention_only 开关配置(群聊仅提及时响应)
- 添加 random_reaction_emoji 数组配置(自定义表情回应列表)
- 更新中英文国际化翻译
2026-04-21 18:01:16 +08:00
afjcjsbx
175682f152
chore: refresh PR mergeability
2026-04-21 11:01:04 +02:00
afjcjsbx
5a13616b64
fix(mcp): surface MCP init failures to command handlers
2026-04-21 11:01:04 +02:00
afjcjsbx
e5a6960078
fix lint
2026-04-21 11:01:04 +02:00
afjcjsbx
276f5425f0
feat(commands): add MCP slash commands and tool details
2026-04-21 11:01:04 +02:00
Guoguo
6ca7311273
feat(agent): add context usage ring indicator and /context command ( #2537 )
...
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 >
2026-04-21 16:30:02 +08:00
LC
9c3dc0ee3a
fix(auth): canonicalize Google Antigravity provider and enhance credential management ( #2599 )
...
* fix(auth): canonicalize Google Antigravity provider and enhance credential management
* fix(auth): improve error handling in credential storage tests
* fix(auth): stabilize canonical provider merge precedence
2026-04-21 16:28:29 +08:00
LC
b798fa4b7b
docs: update documentation for Gemini native protocol ( #2601 )
...
* docs: update documentation for Gemini native protocol
* docs: fix capitalization and grammar of Gemini
2026-04-21 16:15:09 +08:00
wenjie
ba6992234f
feat(web): support list editing for channel array fields ( #2595 )
...
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.
2026-04-21 16:04:28 +08:00
wenjie
dcb4b67e00
fix(web): clean up restored chat transcripts and optimize chat UI ( #2605 )
...
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.
2026-04-21 11:52:58 +08:00
sky5454
329e68e017
refactor(agent): Agent Looper refactor phase2, restructure pipeline and rename loop files to agent ( #2585 )
...
* refactor(agent): introduce interfaces for MessageBus and ChannelManager
Phase 2 of loop.go refactor — dependency inversion using adapter pattern.
- Add interfaces.MessageBus and interfaces.ChannelManager interfaces
- Create adapters/messagebus.go wrapping *bus.MessageBus
- Create adapters/channelmanager.go wrapping *channels.Manager
- Update AgentLoop to use interfaces instead of concrete types
- Update registerSharedTools to accept interfaces.MessageBus
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
* refactor(agent): restructure pipeline and rename loop files
Pipeline refactoring:
- Split pipeline.go (1400 lines) into focused files:
- pipeline_setup.go (~115 lines): SetupTurn method
- pipeline_llm.go (~519 lines): CallLLM method
- pipeline_execute.go (~693 lines): ExecuteTools method
- pipeline_finalize.go (~78 lines): Finalize method
- Pipeline struct and NewPipeline remain in pipeline.go (~39 lines)
Agent file renaming:
- Rename loop_*.go to agent_*.go for consistent naming:
- loop.go -> agent.go, loop_message.go -> agent_message.go, etc.
- Merge turn.go + turn_exec.go into turn_state.go
- Rename loop_turn.go -> turn_coord.go
Documentation:
- Update docs/pipeline-restructuring-plan.md
- Add docs/agent-rename-plan.md
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
* fix(agent): code format fixed
* refactor(agent): code test file added/renamed
* docs(agent): update agent refactor docs
* fix(agent): fix agent hardAbortX
---------
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com >
2026-04-21 10:55:50 +08:00
Guoguo
4e2f80b79a
docs: update wechat qrcode ( #2604 )
2026-04-21 09:37:31 +08:00
lxowalle
6421f146a9
Revert "Feat/channel tool feedback animation ( #2569 )" ( #2596 )
...
This reverts commit e556a816e4 .
2026-04-20 18:30:29 +08:00
lxowalle
e556a816e4
Feat/channel tool feedback animation ( #2569 )
...
* feat(channels): unify tool feedback animation across discord telegram and feishu
* fix(tool-feedback): unify fallback and single-message delivery
* fix(channels): finalize tool feedback in place
* fix ci
* feat: improve tool feedback
2026-04-20 15:20:26 +08:00
wenjie
8461c996e5
chore(web): update linting and router dependencies ( #2592 )
...
Bump TanStack Router, ESLint, React Hooks plugin, TypeScript ESLint, and Prettier packages. Disable the react-hooks/set-state-in-effect rule in the frontend ESLint config.
2026-04-20 11:18:42 +08:00
Guoguo
74c98a5acf
refactor(web): secure Pico websocket access behind launcher auth ( #2545 )
...
* refactor(web): secure Pico websocket access behind launcher auth
- 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
* fix(web): improve Pico URL and origin handling behind proxies
- read client scheme from X-Forwarded-Proto and RFC 7239 Forwarded
- derive client-visible ports from forwarded host information
- add coverage for HTTPS origins without explicit ports
- verify behavior when proxies omit forwarded protocol headers
* fix(web): stop pinning Pico WebSocket origins during setup
- remove request-origin seeding from `EnsurePicoChannel`
- keep `allow_origins` empty by default for auto-configured Pico channels
- relax launcher Pico WebSocket proxy origin validation
- update Pico backend tests for the new setup and proxy behavior
2026-04-20 11:17:42 +08:00
wenjie
f8190f04b7
fix(web): stop pinning Pico WebSocket origins during setup
...
- remove request-origin seeding from `EnsurePicoChannel`
- keep `allow_origins` empty by default for auto-configured Pico channels
- relax launcher Pico WebSocket proxy origin validation
- update Pico backend tests for the new setup and proxy behavior
2026-04-20 10:11:03 +08:00
wenjie
d002e1517b
fix(web): improve Pico URL and origin handling behind proxies
...
- read client scheme from X-Forwarded-Proto and RFC 7239 Forwarded
- derive client-visible ports from forwarded host information
- add coverage for HTTPS origins without explicit ports
- verify behavior when proxies omit forwarded protocol headers
2026-04-20 10:11:03 +08:00