docs: the phone client, and the Glyph traps worth not re-learning

The android README still described the app as unbuilt and pointed `glyph/libs/`
at a path that does not exist. It now covers what the app is made of, how to get
the SDK, and the three Glyph behaviours that cost an afternoon — two of which
fail with no exception and no log at all.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
timka123andClaude Opus 5 committed 2026-10-19 16:17:25 +03:00
1 parent 535830bacc
commit 738734d485
3 files changed
+84 -19

No files matched your search

+9 -1
View File
@@ -51,11 +51,19 @@ class Api:
return json.loads(body) if body else None
except urllib.error.HTTPError as exc:
detail = _detail(exc)
if exc.code == 401:
hint = (
"Set the API token in Settings → Backend."
if self.token
else "No API token configured — add it in Settings → Backend."
)
raise ApiError(f"{detail} {hint}", exc.code) from exc
raise ApiError(detail, exc.code) from exc
except (urllib.error.URLError, TimeoutError) as exc:
raise ApiError(
f"Cannot reach the backend at {self.base_url} ({exc}). "
"Is `docker compose up` running?"
"Check the server URL in Settings → Backend, or is "
"`docker compose up` running locally?"
) from exc
except json.JSONDecodeError as exc:
raise ApiError(f"The backend sent something that is not JSON: {exc}") from exc