sipeed/picoclaw · warning
The login passwords do not match.
Error message
The login passwords do not match.
What it means
Validation error thrown in handleSave (web/frontend/src/components/config/config-page.tsx:305, message from i18n key pages.config.dashboard_password_mismatch) when the trimmed password and confirm strings differ while the password fields are dirty. Standard double-entry confirmation for POST /api/auth/setup; it is purely client-side and fires before any request.
Source
Thrown at web/frontend/src/components/config/config-page.tsx:305
? err.message
: t("pages.config.factory_reset_error"),
)
} finally {
setShowFactoryResetDialog(false)
}
}
const handleSave = async () => {
try {
setSaving(true)
const password = launcherForm.dashboardPassword.trim()
const confirm = launcherForm.dashboardPasswordConfirm.trim()
if (launcherPasswordDirty) {
if (!password) {
throw new Error(t("pages.config.dashboard_password_required"))
}
if (password !== confirm) {
throw new Error(t("pages.config.dashboard_password_mismatch"))
}
if (Array.from(password).length < 8) {
throw new Error(t("pages.config.dashboard_password_min_length"))
}
}
if (configDirty) {
const workspace = form.workspace.trim()
const dmScope = form.dmScope.trim()
if (!workspace) {
throw new Error("Workspace path is required.")
}
if (!dmScope) {
throw new Error("Session scope is required.")
}
if (View on GitHub (pinned to 49183d7e8d)
Solutions
- Re-enter the same password in both fields and save again
- Check for a trailing/leading space in one field — trim is applied, so an internal-only difference such as capitalization is the cause
- Use a password manager paste rather than manual typing to avoid typos
Defensive patterns
Strategy: validation
Validate before calling
if (launcherPasswordDirty && password !== confirm) {
setFieldError("The login passwords do not match.")
return
} Try / catch
try {
await handleSave()
} catch (err) {
if (err instanceof Error) setError(err.message) // show next to confirm field
} Prevention
- Show an inline mismatch indicator as the user types in the confirm field
- Offer a 'show password' toggle so users can compare values directly
- Disable save while dirty password fields differ
When it happens
Trigger: Typing different values in dashboardPassword vs dashboardPasswordConfirm, trailing/leading whitespace in exactly one field (both are trimmed before comparison), or paste errors.
Common situations: Caps Lock on for one field, autocomplete filling only one input, user re-types password differently, or invisible trailing space pasted into one field.
Related errors
- Enter and confirm the new login password.
- Login password must be at least 8 characters.
- ${label} must be a JSON object.
- ${label}.${key} must be a string.
- Workspace path is required.
AI-assisted analysis of sipeed/picoclaw@49183d7e8d (2026-08-15).
Data as JSON: /api/errors/19e0e2acd014bdc5.
Report an issue: GitHub.