prometheus/service
Local Dev f5a8ed40e7 prometheus: submit page is a collapsible 4-card wizard
Three polish fixes from a publisher's view in Theseus:

1. The redundant "1 · Upload the binary" h2 under a progress indicator
   that already said "Upload" is gone. The step indicator IS the step
   content now — each step is one <article> card whose head is always
   visible (number + title + state chip) and whose body opens only when
   that step is current.

2. Upload input became a proper drag-and-drop zone. 46 px tall, dashed
   border that lights up acid on dragover (and the whole card wobbles
   1% so there's no doubt the drop will land). Click opens the file
   picker; drop handles files directly.

3. Step headers are clickable. A publisher can jump back to any
   completed step to re-check or edit (canReach() guards: step 4 can't
   be clicked if step 3 hasn't produced a signature yet). The head's
   sub-text updates as each step completes:
     1 · "Upload" → "theseus-setup.exe · 137 MiB · $1 listing fee"
     2 · "Describe" → "My App by foo.x · browsers · v1.0.0"
     3 · "Sign" → "signed · IJIEBM6U…"

Internals:
- One <article data-step="N" data-state="current|complete|pending"> per
  step. CSS keys off data-state for the open/closed body and the chip's
  colour. One setState() helper, one show(n) that walks the four and
  decides each's state based on canReach() + hasStepData(n).
- scroll-to-top replaced by scrollIntoView on the active card, so a
  publisher who jumps back to step 2 after reaching step 4 lands on the
  step-2 header, not the hero.
- acceptSignature(base64, how) is now one path used by both the Theseus
  wallet handler and the paste listener — stops the two from drifting
  on what counts as "signature captured".
2026-10-23 01:17:54 +03:00
..
lib prometheus: signed listings — BIP-137 publisher sign, SQLite index 2026-10-08 01:48:12 +02:00
admin-pages.js prometheus: BCH payments — invoices, price oracle, admin reconcile 2026-10-08 21:52:01 +02:00
admin-session.js prometheus: admin panel — login, listings, 3-mode toggle, audit log 2026-10-08 21:35:48 +02:00
admin.js prometheus: BCH payments — invoices, price oracle, admin reconcile 2026-10-08 21:52:01 +02:00
audit.js prometheus: admin panel — login, listings, 3-mode toggle, audit log 2026-10-08 21:35:48 +02:00
bns.js prometheus: signed listings — BIP-137 publisher sign, SQLite index 2026-10-08 01:48:12 +02:00
clamd.js prometheus: VirusTotal enrichment, gated on VIRUSTOTAL_API_KEY 2026-10-08 21:44:34 +02:00
db.js prometheus: BCH payments — invoices, price oracle, admin reconcile 2026-10-08 21:52:01 +02:00
invoice-api.js prometheus: BCH payments — invoices, price oracle, admin reconcile 2026-10-08 21:52:01 +02:00
layout.js prometheus: standalone identity + first-wave Silent Mode listings 2026-10-09 01:23:21 +02:00
listings.js prometheus: size-tiered pricing, 2 GiB cap, new hero copy, SEO LD 2026-10-22 23:31:43 +03:00
modes.js prometheus: admin panel — login, listings, 3-mode toggle, audit log 2026-10-08 21:35:48 +02:00
pages-browse.js prometheus: SEO terms in the Browsers & web tools blurb 2026-10-22 22:50:24 +03:00
pages.js prometheus: submit page is a collapsible 4-card wizard 2026-10-23 01:17:54 +03:00
payments.js prometheus: size-tiered pricing, 2 GiB cap, new hero copy, SEO LD 2026-10-22 23:31:43 +03:00
price.js prometheus: BCH payments — invoices, price oracle, admin reconcile 2026-10-08 21:52:01 +02:00
seo.js prometheus: weekly s3 snapshot of the browse surface to bns/prometheus 2026-10-08 21:42:54 +02:00
server.js prometheus: taxonomy — Apps / Games / FinTech, with sub-chips inside Apps 2026-10-22 22:39:08 +03:00
signing.js prometheus: upload + ClamAV scan + signed scan reports 2026-10-05 22:41:55 +02:00
uploads.js prometheus: size-tiered pricing, 2 GiB cap, new hero copy, SEO LD 2026-10-22 23:31:43 +03:00
virustotal.js prometheus: VirusTotal enrichment, gated on VIRUSTOTAL_API_KEY 2026-10-08 21:44:34 +02:00