Commit Graph
6 Commits
Author SHA1 Message Date
tonym 83f4d0d232 ci: re-run after the mini runner's socket-mount failures (no code change)
Build / Build and release (push) Failing after 28m22s
2026-10-19 02:44:02 -05:00
tonymandClaude Fable 5.1 59ed6a5951 feat(otm): shared OTM login look, ported verbatim (0.4.2)
Build / Build and release (push) Failing after 1s
Port OTM_LOGIN_CSS + the otm-login markup structure from
@otm/account-panel otm-login-core.ts 0.44.0 verbatim into
login_page() (brand "13ft" / "Read the article without the cruft.",
accent --otm-accent:#b5562a copper, otherwise the module's neutral
ink defaults). Still OTM-only (no "Other ways to sign in"), fail-closed
503 copy + reasons + tides beacon unchanged.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014LCQmFvKshyAJsE8C3B5ET
2026-10-19 00:21:58 -05:00
tonymandClaude Fable 5.1 9b37dd5f2b feat(otm): sign-in page onto the shared OTM standard (0.4.1)
Build / Build and release (push) Failing after 15s
Restyle login_page to the platform standard: brand (name + tagline)
above one centered card, "Sign in with OTM" as the full-width primary
button, and a muted Face ID/Touch ID/passkey helper line under it.
13ft has no local accounts, so there's no "Other ways to sign in"
step. The fail-closed "isn't wired to OTM yet" 503 copy and the tides
beacon are unchanged.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014LCQmFvKshyAJsE8C3B5ET
2026-10-18 23:32:37 -05:00
tonym f76c562a29 docs: 13ft is live as a first-party app behind Sign in with OTM (2026-10-19)
Build / Build and release (push) Failing after 13s
2026-10-18 23:18:34 -05:00
tonymandClaude Fable 5.1 71abf89784 feat: Sign in with OTM, health, changelog, tides beacon, Ideas — first OTM release (0.4.0)
Build / Build and release (push) Failing after 19s
app/otm.py is the Python port of pickup's ticket verifier (HS256, mandatory
exp, audience check, alg only read to reject, never raises) plus a signed
session cookie and an in-memory single-use jti guard. portable.py gates every
route but PUBLIC_PATHS behind a session and fails CLOSED (503) with no secret
— it is a fetch proxy. /api/health reports the version, /changelog renders
CHANGELOG.md, the footer carries version/sign-out/Ideas, tides beacon from
TIDES_HOST/TIDES_SITE_ID. Dockerfile: OTM labels + HEALTHCHECK. 17 tests.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014LCQmFvKshyAJsE8C3B5ET
2026-10-18 22:22:27 -05:00
tonymandClaude Fable 5.1 d2d8c55d46 docs: CLAUDE.md — OTM fork context + the first-party-app plan
Build / Build and release (push) Failing after 11s
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014LCQmFvKshyAJsE8C3B5ET
2026-10-14 11:23:49 -05:00