Skip to content

The signed-in homepage opens on the work, not on three buttons - #429

Merged
Apolloccrypt merged 2 commits into
mainfrom
design/signed-in-home-informative
Sep 4, 2026
Merged

Apolloccrypt merged 2 commits into
mainfrom
design/signed-in-home-informative

Conversation

@Apolloccrypt

Copy link
Copy Markdown
Owner

Signed in on a phone, the homepage was a band, "Your documents, mickbr.", one paragraph, three buttons, and then an empty screen down to the footer. The owner's two readings of it: "this is overly simple", and "I see ONLY 3 buttons, as if it were a test page. This never passed commerce or marketing."

The yardstick set for it is BeerWeer: one big reading at the top with a small drawn object beside it, then the rest laid out quietly in cards.

What the hero carries now

One figure. Open requests when there are any ("2 requests are waiting on a signature", with the oldest one dated). Otherwise the month's signature balance, "2 of 2 signatures left this month" on Community and "97 of 100" on Pro, with the day the count starts again. The buyer review of 5 September found no usage counter anywhere on the site while /api/user/dashboard/overview already carried one.

A strip of secondary readings under a hairline, in mono: documents, completed, and whichever of open or signatures-left the figure did not take.

Waiting on a signature. The open requests, one row each: the file name, who it is still waiting on, the day it went out, and how far it has got. A dot in ochre for waiting, petrol for in progress.

Recent. The last documents with their state and date, minus whatever the card above already shows, and a link to all of them.

The plan, in one line. "Community, free for good." or "ParaSign Pro, ends on 3 October 2026, nothing renews automatically.", with Renew appearing from seven days out. Same rule, same words and the same date helper as /account and /dashboard.

The three actions stay, under the work rather than instead of it. The paragraph that described those three buttons in prose one line above the three buttons is gone.

The two states that used to be a hole

A new account gets its own card, its own drawn object and the two first steps, at the same weight as the rest: "Nothing here yet. Sign your first document or send your first file; both take under a minute." The action row underneath is dropped in that one state, because the card already carries both buttons and the nav's user menu keeps carrying Documents. Nothing else changes shape.

Every route down gives one calm sentence where the figure would have been. No number is invented, no status code is shown, and the buttons keep working.

What it does not say, and why

"2 waiting for YOUR signature" is not a sentence this page can honestly write. /api/user/documents is the sent list: relay/envelope.js indexes an envelope under its creator (parasign:acct:<id>:envelopes, written once, in create()), there is no reverse index from a party's email hash to the envelopes it appears in, and an invited signer reaches his document by the capability link in the mail. So the figure counts requests that are open and says exactly that: waiting on a signature, not for yours. For the same reason the rows carry no per-row Sign button: the dashboard is deliberately never given the per-party invite token that opens a document.

An inbound worklist is buildable but is not a route, it is a data-model change: a party index written at create() time, a listPartyEnvelopes beside listAccountEnvelopes, a relay route, an admin proxy, a backfill, and a decision about how a recipient opens the document without the emailed token. That belongs in its own PR.

Plumbing

Three fetches, all on the session cookie, all to routes /dashboard and /account already read: /api/user/documents, /api/user/dashboard/overview, /api/user/billing/status. No new route. No key in the browser, so #413 stands. Every fetch resolves to null on any failure and a block whose data did not arrive hides itself. Values go in with textContent and rows are built from nodes, never from a string of markup. No inline script; js/home-auth.js?v=3 and js/format-date.js?v=1, so one notation for every date. design-system.css untouched.

Proof

tests/signed-in-home.test.mjs, 37 checks over four states with the API mocked the way navigation-shell mocks it, and the shapes copied from the real ones so a change in listAccountEnvelopes or the overview shows up red here rather than as an empty card in production. It measures that the figure on screen equals the number in the mock; that no state leaves a gap over 120px between the last thing <main> draws and the top of the footer; that no document is printed twice on one screen; and that no relay vocabulary reaches the words. Screenshots at 390x844 in all four states, plus 1440x900, taken and read.

Green: signed-in-home, navigation-shell (55), first-screen (9), ui-truthfulness, site-claims (40), theme-contrast, app-contrast, frontend-loading-contract (7), check-csp-inline, static-sanity, links, eslint.

Signed in, the homepage was a band, a heading, one paragraph and three
buttons over an empty screen down to the footer. Read on a phone it looked
like a page that had failed to load rather than the front of a product.

It now opens the way BeerWeer does. One large figure with a small drawn
object beside it: the open requests when there are any, otherwise the
signature balance for the month, which the buyer review of 5 September
found nowhere on the site while the route already carried it. Under it a
mono strip of secondary readings, a card of the requests still waiting
with who each one waits on and since when, a card of the last documents
with their state and date, and one line about the plan with its end date
and a Renew from seven days out. The three actions stay, under the work
instead of instead of it, and the paragraph that described them in prose
is gone.

A new account gets its own card with its own object and the two first
steps, at the same weight as the rest, so the first screen is full rather
than a hole; the action row is dropped in that one state because the card
already carries both buttons and the nav keeps carrying Documents. Every
route being down gives one calm sentence in the place the figure would
have been, no number invented and no status code shown.

Everything comes from the routes /dashboard and /account already read, on
the session cookie. No key reaches the browser, no new route was needed
and none was added.

One thing this deliberately does NOT say: "waiting for your signature".
/api/user/documents is the sent list. relay/envelope.js indexes an
envelope under its creator only, there is no reverse index from a party
to the envelopes it appears in, and an invited signer reaches his document
by the link in the mail. So the figure counts requests waiting ON a
signature and says exactly that. An inbound worklist needs a party index
written at create() time; that is a data-model change and not this PR.

tests/signed-in-home.test.mjs pins the four states with the API mocked the
way navigation-shell mocks it: the figure equals the number in the mock,
no state leaves a gap over 120px between the last thing drawn and the
footer, no document is printed twice on one screen, and no relay
vocabulary reaches the words.
@Apolloccrypt
Apolloccrypt merged commit 34c4448 into main Sep 4, 2026
14 checks passed
@Apolloccrypt
Apolloccrypt deleted the design/signed-in-home-informative branch September 5, 2026 18:55
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant