Web: stay logged in through the browser's password manager #158

Merged
littlefox merged 5 commits from issue-147-stay-logged-in into main 2026-10-19 12:21:23 +00:00
Owner

Closes #147

D-045: the password is kept only by the browser's own password manager.

  • Chrome, Edge, Android (and their installed app): Credential Management API. The password is stored after a login with 'Håll mig inloggad' and fetched silently on the next start. Logging out calls preventSilentAccess.
  • Safari, Firefox, iPhone: the form has name/autocomplete markup for the password manager, and submit reads the form's own values (filled fields may not fire input events). With a kept login, a form the browser fills by itself is submitted.
  • NeoKOM's own storage never holds the password, and the test checks that.
  • Also: D-045, D-046 (sign-up OK on kom.lysator.liu.se), D-032 marked partly superseded, DESIGN updated, and the login snapshots regenerated (new label and note).

Verified: remember.spec on desktop, Android and iPhone, with a stand-in password manager for each route: reload logs in, logout stops it, and a filled form waits for a press after logout. Login screenshots checked. Real password managers can't be driven headless, so it needs a try on a real phone.

🤖 Generated with Claude Code

https://claude.ai/code/session_01XJW2ocwLunyaLiUwCBHEP8

Closes #147 D-045: the password is kept only by the browser's own password manager. - **Chrome, Edge, Android (and their installed app):** Credential Management API. The password is stored after a login with 'Håll mig inloggad' and fetched silently on the next start. Logging out calls preventSilentAccess. - **Safari, Firefox, iPhone:** the form has name/autocomplete markup for the password manager, and submit reads the form's own values (filled fields may not fire input events). With a kept login, a form the browser fills by itself is submitted. - NeoKOM's own storage never holds the password, and the test checks that. - Also: D-045, D-046 (sign-up OK on kom.lysator.liu.se), D-032 marked partly superseded, DESIGN updated, and the login snapshots regenerated (new label and note). Verified: remember.spec on desktop, Android and iPhone, with a stand-in password manager for each route: reload logs in, logout stops it, and a filled form waits for a press after logout. Login screenshots checked. Real password managers can't be driven headless, so it needs a try on a real phone. 🤖 Generated with [Claude Code](https://claude.com/claude-code) https://claude.ai/code/session_01XJW2ocwLunyaLiUwCBHEP8
Web: stay logged in through the browser's password manager
Some checks are pending
ci / check (push) Has started running
ci / e2e (push) Has started running
ci / desktop (push) Has started running
9d1f51751e
A reload logged the user out: D-032 kept the password out of the
browser, and Protocol A has no tokens. D-045 allows it in the browser's
own password manager only. With 'Håll mig inloggad', the password goes
to the Credential Management API where there is one (Chrome, Edge,
Android) and signs in silently on the next start; logging out stops
that. Elsewhere the form is marked up for the browser's password
manager, its filled values are used, and a form filled by itself is
submitted when the user chose to stay logged in.

Also records D-046: sign-up is fine on kom.lysator.liu.se.

Refs #147

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01XJW2ocwLunyaLiUwCBHEP8
Roadmap: review 0.4, with its issues; D-044 for staying logged in on the web
All checks were successful
ci / check (push) Successful in 9m55s
ci / e2e (push) Successful in 25m31s
ci / desktop (push) Successful in 13m37s
092ae896f0
0.4 still holds. Search can't look up subjects on the server, saving and
who's-here partly exist, and #147 is added. Each item now has an issue
in the 0.4 milestone.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01XJW2ocwLunyaLiUwCBHEP8
Merge roadmap-0.4 into issue-147-stay-logged-in
Some checks failed
ci / check (push) Has started running
ci / e2e (push) Has started running
ci / desktop (push) Failing after 6m17s
d484a92cd6
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01XJW2ocwLunyaLiUwCBHEP8

# Conflicts:
#	docs/DECISIONS.md
Merge origin/main into issue-147-stay-logged-in
Some checks failed
ci / e2e (push) Has started running
ci / desktop (push) Failing after 7m21s
ci / check (push) Successful in 8m54s
79446ca4e7
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01XJW2ocwLunyaLiUwCBHEP8
Desktop lint: no needless return, unused_async expected
Some checks failed
ci / check (push) Successful in 10m31s
ci / desktop (push) Successful in 14m42s
ci / e2e (push) Failing after 45m57s
7635b661b0
CI's desktop clippy (desktop features alone) caught what the default web
build doesn't compile.

Refs #147

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01XJW2ocwLunyaLiUwCBHEP8
remember.spec: buttons by either language
All checks were successful
ci / check (push) Successful in 9m35s
ci / desktop (push) Successful in 12m56s
ci / e2e (push) Successful in 26m25s
17db8f591b
In the full suite i18n.spec leaves Bertil's UI in English, so 'Logga
ut' wasn't found (CI run #263).

Refs #147

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01XJW2ocwLunyaLiUwCBHEP8
littlefox referenced this pull request from a commit 2026-10-19 21:34:01 +00:00
Sign in to join this conversation.
No description provided.