From f5a8ed40e7d19c6612f67b7e3a051c07a08d3fd4 Mon Sep 17 00:00:00 2001 From: Local Dev Date: Fri, 23 Oct 2026 01:17:54 +0300 Subject: [PATCH] prometheus: submit page is a collapsible 4-card wizard MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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
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
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". --- service/pages.js | 368 ++++++++++++++++++++++++++++++++--------------- 1 file changed, 256 insertions(+), 112 deletions(-) diff --git a/service/pages.js b/service/pages.js index 0e59930..5e2bab4 100644 --- a/service/pages.js +++ b/service/pages.js @@ -334,6 +334,60 @@ export function submit() { 'Upload an app to Prometheus. We scan it, generate the manifest, you sign with your BNS key and the listing goes live.', here: '/submit', body: ` + +

Submit an app

Upload → fill manifest → sign with your wallet → publish. @@ -342,50 +396,56 @@ export function submit() {

- -
-
    -
  1. Upload the binary (up to 2 GiB — free below 100 MiB)
  2. -
  3. Describe name, publisher name, category, description
  4. -
  5. Sign with the BCH key for your publisher BNS name
  6. -
  7. Publish POST to the directory
  8. -
-
- -
-

1 · Upload the binary

-

The server scans with ClamAV + VirusTotal (where configured), - computes the SHA-256, and attaches a signed scan report to your listing. - Only clean uploads can proceed.

+
+ +
+

Drop a binary below, or pick a file. The server scans with + ClamAV + VirusTotal (where configured), computes the SHA-256, and + attaches a signed scan report to your listing. Only clean uploads can + proceed.

-
- - -
-
+ - -
+
- +
+ + +
+ + +
- + - +