v0.2.0 brings multi-provider Claude authentication, token usage tracking, complete localization in 7 languages, and several security + bug fixes.
Highlights
Multi-provider Claude auth
Each user can pick which backend their messages go through:
- Pro/Max (default): OAuth via the
claude loginsession on the server. Runs against your Pro/Max subscription. Same behavior as v0.1.0. - Anthropic API: direct console API key (
sk-ant-…). Pay-as-you-go billing against the Anthropic Console account. - AWS Bedrock: routes via Amazon Bedrock with your AWS credentials. Supports Claude Opus 4.7 on Bedrock-pinned model IDs.
Picker lives in Settings → Claude connection in both the app and the web UI.
Token usage tracking
Per-user aggregate of input/output/cache tokens lives in Settings → Token usage. Useful for the Anthropic-API and Bedrock paths where each request shows up on a real invoice.
Complete localization
All user-facing strings in the app and web UI translated into 7 languages: English, German, Spanish, French, Brazilian Portuguese, Simplified Chinese, Japanese. Switch language under Settings → Appearance → Language (app) or Settings → Language (web UI).
Security hardening
- Bash skill is off by default. Set
ALLOW_BASH=1in.envto opt in. Closes a hole where any app-account user could execute commands as thepocket-claudesystem user. BILLING_ACCOUNT_IDis no longer hardcoded — set via env var; the billing widget hides itself when unset.
Bug fixes
- New-chat button: tapping "New chat" from the drawer used to scroll to the end of the current chat instead of opening a fresh conversation. Fixed.
- Installer:
install-linux.shnow skips Node + npm + claude-cli installation when a workingclaudebinary is already on PATH. Also warns when the binary isn't visible to the service user. - Installer: repo URL updated to the new mono-repo (
joshtech90/PocketClaude). - systemd unit: removed
ProtectHome=true— it silently broke OAuth (CLI couldn't read its credential file). The other hardening flags stay on.
Multi-auth correctness fixes
- Mode-switch session-stale: switching from Pro/Max → API → Bedrock used to leave cached CLI session IDs in place, so the first message after a switch failed (user had to resend). The server now drops session IDs across the user's conversations on a real mode change.
- Bedrock pre-flight: switching to Bedrock without AWS credentials now fails eagerly with a clear 400 instead of producing an opaque CLI timeout on the next chat.
- Bedrock model-alias validation: PUT used to accept any string for
bedrock_model_aliasand silently fall back to opus; now returns 400 with a clear message.
i18n consistency fixes
- A broken
settings_tts_section_cloud_bodysource string (German + truncated, that all 6 translations had dutifully copied) was rewritten and re-translated. - The Effort chips (Off / Low / Medium / High / Very high / Maximum) and the Info-popup OK button ("Got it") were the last hardcoded German strings — now properly localized.
Web-UI fixes
- A dead
openSettingsreassignment meant the image-API-key block and admin user list never loaded when the settings modal opened. Fixed. %%printf-escape now renders as%(was showing literally as "80%% context").- "Error: …" prefixes localized.
- Settings-modal status text auto-clears on close.
SDK upgrade
claude-agent-sdkconstraint raised to>=0.2.82,<1.0. The 0.1 line is incompatible with current Claude Code CLI builds.
Upgrade
For existing v0.1.0 installations:
# On the Linux host
sudo systemctl stop pocket-claude
cd /opt/pocket-claude && sudo -u pocket-claude git pull
sudo -u pocket-claude .venv/bin/pip install -r requirements.txt --upgrade
# IMPORTANT — re-install the systemd unit (the ProtectHome=true line was
# silently breaking OAuth):
sudo cp deploy/systemd/pocket-claude.service /etc/systemd/system/
sudo systemctl daemon-reload
sudo systemctl start pocket-claudeThen install the new APK from this release.
Full changelog
See CHANGELOG.md.