Skip to content

v0.2.0 — Multi-provider auth + token usage + full i18n

Latest

Choose a tag to compare

@joshtech90 joshtech90 released this 19 May 14:30
· 44 commits to main since this release

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 login session 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=1 in .env to opt in. Closes a hole where any app-account user could execute commands as the pocket-claude system user.
  • BILLING_ACCOUNT_ID is 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.sh now skips Node + npm + claude-cli installation when a working claude binary 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_alias and silently fall back to opus; now returns 400 with a clear message.

i18n consistency fixes

  • A broken settings_tts_section_cloud_body source 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 openSettings reassignment 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-sdk constraint 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-claude

Then install the new APK from this release.

Full changelog

See CHANGELOG.md.