feat: QwenPaw support config username/password - #13478
Conversation
There was a problem hiding this comment.
🟡 Changes recommended
It includes repo-wide dev/build configuration changes (hardcoded Vite proxy IP and inconsistent Makefile build tags) plus a new HTTP credential-update flow without accompanying tests.
Once you've addressed the issues Copilot identified, you can request another Copilot review.
This review doesn't count toward merge requirements. Sign up for the private preview to control whether Copilot approvals count.
Pull request overview
This PR adds QwenPaw support for configuring dashboard login credentials (username/password) end-to-end, aligning the UI and agent backend behavior with the existing Hermes dashboard-auth flow.
Changes:
- Frontend: introduce
supportsAgentDashboardAuth()and surface dashboard credential fields for bothhermes-agentandcopaw, including updated helper text and i18n strings. - Agent backend: generalize dashboard-auth env handling for Hermes + QwenPaw, and add a QwenPaw-specific API flow to update credentials without restarting the container.
- Build/dev tooling updates: Makefile clean/build adjustments and a Vite dev proxy target change.
File summaries
| File | Description |
|---|---|
| Makefile | Cleans built frontend index and tweaks local (darwin) build flags. |
| frontend/vite.config.ts | Changes dev proxy target for /api/v2. |
| frontend/src/views/ai/agents/agent/index.vue | Shows config/action UI based on dashboard-auth support. |
| frontend/src/views/ai/agents/agent/config/tabs/settings/other.vue | Adds QwenPaw dashboard auth fields + resets defaults before loading config. |
| frontend/src/views/ai/agents/agent/config/index.vue | Enables Settings tab for copaw and adjusts initial active tab/load behavior. |
| frontend/src/views/ai/agents/agent/add/index.vue | Enables dashboard auth fields for copaw during agent creation. |
| frontend/src/utils/agent.ts | Adds supportsAgentDashboardAuth() helper. |
| frontend/src/lang/modules/zh.ts | Adds dashboardAuthImmediateHelper message. |
| frontend/src/lang/modules/zh-Hant.ts | Adds dashboardAuthImmediateHelper message. |
| frontend/src/lang/modules/tr.ts | Adds dashboardAuthImmediateHelper message. |
| frontend/src/lang/modules/ru.ts | Adds dashboardAuthImmediateHelper message. |
| frontend/src/lang/modules/pt-br.ts | Adds dashboardAuthImmediateHelper message. |
| frontend/src/lang/modules/ms.ts | Adds dashboardAuthImmediateHelper message. |
| frontend/src/lang/modules/lo.ts | Adds dashboardAuthImmediateHelper message. |
| frontend/src/lang/modules/ko.ts | Adds dashboardAuthImmediateHelper message. |
| frontend/src/lang/modules/ja.ts | Adds dashboardAuthImmediateHelper message. |
| frontend/src/lang/modules/fa.ts | Adds dashboardAuthImmediateHelper message. |
| frontend/src/lang/modules/es-es.ts | Adds dashboardAuthImmediateHelper message. |
| frontend/src/lang/modules/en.ts | Adds dashboardAuthImmediateHelper message. |
| frontend/src/api/interface/ai.ts | Makes userTimezone / npmRegistry optional in the update request interface. |
| agent/i18n/lang/zh.yaml | Adds QwenPaw auth update error messages. |
| agent/i18n/lang/zh-Hant.yaml | Adds QwenPaw auth update error messages. |
| agent/i18n/lang/tr.yaml | Adds QwenPaw auth update error messages. |
| agent/i18n/lang/ru.yaml | Adds QwenPaw auth update error messages. |
| agent/i18n/lang/pt-BR.yaml | Adds QwenPaw auth update error messages. |
| agent/i18n/lang/ms.yaml | Adds QwenPaw auth update error messages. |
| agent/i18n/lang/lo.yaml | Adds QwenPaw auth update error messages. |
| agent/i18n/lang/ko.yaml | Adds QwenPaw auth update error messages. |
| agent/i18n/lang/ja.yaml | Adds QwenPaw auth update error messages. |
| agent/i18n/lang/fa.yaml | Adds QwenPaw auth update error messages. |
| agent/i18n/lang/es-ES.yaml | Adds QwenPaw auth update error messages. |
| agent/i18n/lang/en.yaml | Adds QwenPaw auth update error messages. |
| agent/app/service/agents.go | Routes Copaw “other config” updates to QwenPaw credential update flow and unifies dashboard auth env keys. |
| agent/app/service/agents_utils.go | Introduces generalized dashboard-auth env read/write helpers for Hermes + Copaw. |
| agent/app/service/agents_hermes.go | Removes Hermes-only dashboard-auth helpers (now centralized). |
| agent/app/service/agents_copaw.go | Implements QwenPaw auth status/login/register/update-profile integration. |
| agent/app/dto/agents.go | Makes userTimezone / npmRegistry non-required at validation layer to support Copaw flow. |
Review details
Suppressed comments (1)
Makefile:47
- Same consistency issue as
build_core_on_darwin: applying-tags=enterpriseonly here can produce different agent binaries depending on the build target used. Consider removing it or wiring it through a shared Makefile variable used by all build targets.
build_agent_on_darwin:
cd $(AGENT_PATH) \
&& CGO_ENABLED=0 GOOS=linux GOARCH=amd64 $(GOBUILD) -tags=enterprise -trimpath -ldflags '-s -w' -o $(BUILD_PATH)/$(AGENT_NAME) $(AGENT_MAIN)
- Files reviewed: 37/37 changed files
- Comments generated: 3
- Review effort level: Lite
We're testing this review assessment. Please use 👍 or 👎 to tell us if it's correct.
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 1f12f1282a
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
1f12f12 to
4bd1709
Compare
There was a problem hiding this comment.
🟡 Changes recommended
The Copaw credential update path can bypass important runtime checks (disabled/out-of-sync) and can unintentionally rotate credentials when required fields are omitted.
Once you've addressed the issues Copilot identified, you can request another Copilot review.
This review doesn't count toward merge requirements. Sign up for the private preview to control whether Copilot approvals count.
Review details
Suppressed comments (1)
agent/app/service/agents_copaw.go:51
- The early return when
current == nextbypasses the/statuscheck and (when users already exist) any verification that the current credentials still work. This means saving unchanged credentials won’t surfaceErrQwenPawAuthDisabled/ErrQwenPawAuthOutOfSync, and it may also rewrite.env(including forcingQWENPAW_AUTH_ENABLED=true) without confirming the running app state.
if current == next {
return writeAgentDashboardAuthEnv(install.GetEnvPath(), constant.AppCopaw, next, true)
}
- Files reviewed: 35/35 changed files
- Comments generated: 1
- Review effort level: Lite
We're testing this review assessment. Please use 👍 or 👎 to tell us if it's correct.
| if agent.AgentType == constant.AppCopaw { | ||
| return updateQwenPawDashboardAuth(install, normalizeAgentDashboardAuth(req.DashboardUsername, req.DashboardPassword)) | ||
| } |
No description provided.