Open every link already signed in, and add a dashboard row #9

Merged
geusebio merged 4 commits from feature/signed-in-links into main 2026-08-17 16:06:18 +00:00
Owner

Part of #577. Needs the platform's #665 and scclient's companion.

Every link the tray opened landed on /login. Each one now trades its path for a one-shot sign-in link first — Open in browser, the unread bell, and the Top up credit… row the credit gate reveals.

Open dashboard is new, and is the thing a person actually wants from a tray icon: the control panel, signed in, without going via an application first.

The fallback is the ordinary case

A platform older than the endpoint answers 404; one that is down answers nothing. Either way the plain URL opens and the user signs in as they did before this existed. Failing the click instead would trade a minor annoyance for a broken button — so both halves are tested.

The ratchet earned its keep again

This landed at 27.7% → 26.4% with the new plumbing untested, and CI would have said so. The path extraction and both fallback paths are tested now and the floor rises to 29.9%.

go build, go vet, go test, hack/lint.sh clean; captures regenerated (the stub answers the hand-off, so the row is drawn by a client that can actually use it).

Part of [#577](https://git.grey.ooo/Grey.ooo/Someones.Computer/issues/577). Needs the platform's [#665](https://git.grey.ooo/Grey.ooo/Someones.Computer/pulls/665) and scclient's companion. Every link the tray opened landed on `/login`. Each one now trades its path for a one-shot sign-in link first — **Open in browser**, the unread bell, and the **Top up credit…** row the credit gate reveals. **Open dashboard** is new, and is the thing a person actually wants from a tray icon: the control panel, signed in, without going via an application first. ## The fallback is the ordinary case A platform older than the endpoint answers 404; one that is down answers nothing. Either way the plain URL opens and the user signs in as they did before this existed. Failing the click instead would trade a minor annoyance for a broken button — so both halves are tested. ## The ratchet earned its keep again This landed at **27.7% → 26.4%** with the new plumbing untested, and CI would have said so. The path extraction and both fallback paths are tested now and the floor rises to **29.9%**. `go build`, `go vet`, `go test`, `hack/lint.sh` clean; captures regenerated (the stub answers the hand-off, so the row is drawn by a client that can actually use it).
Open every link already signed in, and add a dashboard row
Some checks failed
CI / build (pull_request) Failing after 1m7s
811b2c8e55
The tray holds a token and knows exactly who the user is; the browser it
handed a URL to knew nothing, so every link it opened landed on /login —
re-authenticating to reach a page the client could already prove they own.
Every link now trades its path for a one-shot sign-in link first: Open in
browser, the unread bell, and the top-up row the credit gate reveals.

Open dashboard is new, and is the thing a person actually wants from a tray
icon — the control panel, signed in, without going via an application.

**The fallback is the ordinary case, not an error path.** A platform older
than the endpoint answers 404 and one that is down answers nothing; either
way the plain URL is opened and the user signs in as they did before. Failing
the click instead would trade a minor annoyance for a broken button.

Coverage went 27.7% → 26.4% when this landed untested and the ratchet said
so, which is what it is for. The path extraction and both halves of the
fallback are tested now, and the floor rises to 29.9%.
Pin scclient to the merged browser-session commit
All checks were successful
CI / build (pull_request) Successful in 1m18s
5c6a05ecc5
The branch commit it pointed at was squashed away when that PR merged, and a
pseudo-version naming a commit the remote no longer has fails anything that
resolves the module — which in CI is the Go cache warm, before a single step
of ours runs.
geusebio changed title from WIP: Open every link already signed in, and add a dashboard row to Open every link already signed in, and add a dashboard row 2026-08-15 14:13:09 +00:00
Merge remote-tracking branch 'origin/main' into feature/signed-in-links
All checks were successful
CI / build (pull_request) Successful in 4m0s
c2de1dfdaf
# Conflicts:
#	docs/images/linux/tray-activate.png
#	docs/images/linux/tray-gestures.png
#	docs/images/linux/tray-menu.png
#	docs/images/macos/tray-activate.png
#	docs/images/macos/tray-gestures.png
#	docs/images/macos/tray-menu.png
#	docs/images/windows/tray-activate.png
#	docs/images/windows/tray-gestures.png
#	docs/images/windows/tray-menu.png
Merge main, regenerating the captures around the new row
All checks were successful
CI / build (pull_request) Successful in 3m15s
36f141bdea
main's #11 re-took every capture to describe the menu *without* `Open
dashboard`, which is the row this branch adds — so all twelve files under
`docs/images/` conflicted, and `menu.golden` did not. The golden merged
cleanly because only main touched it, and main's side deletes the row: a
tree that merged would have drawn a row its own golden file denied, and
`check.sh` would have failed on main for the second time for the same
reason. Regenerated rather than resolved by hand, then re-blessed — the
diff against main is the three captured menus and the golden gaining one
line each.

Two things this merge is also cleaning up, both found while checking it:

- `hack/screenshot/menudump` was committed in 5c6a05e — 4.4MB of
  unstripped arm64 Linux build output, and gitignored, so it should
  never have been added. Removed.
- `tray.go` and `links_test.go` were not gofmt-clean (`net/url` sorted
  after `os`, and a map literal realigned by the shortest key leaving).
  `.golangci.yaml` enables no formatter, so the gate had no opinion.
geusebio stopped working 2026-08-17 16:03:21 +00:00
14 minutes 42 seconds
geusebio scheduled this pull request to auto merge when all checks succeed 2026-08-17 16:04:01 +00:00
Sign in to join this conversation.
No reviewers
No labels
in-progress
No milestone
No project
No assignees
1 participant
Notifications
Total time spent: 14 minutes 42 seconds
geusebio
14 minutes 42 seconds
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
Grey.ooo/someones.computer_tray!9
No description provided.