Skip to content

feat: rebuilt interface, landing page, and the disclosure #40 asked for - #41

Merged
jayteemoney merged 1 commit into
mainfrom
feat/revamp
Aug 16, 2026
Merged

feat: rebuilt interface, landing page, and the disclosure #40 asked for#41
jayteemoney merged 1 commit into
mainfrom
feat/revamp

Conversation

@jayteemoney

@jayteemoney jayteemoney commented Aug 16, 2026

Copy link
Copy Markdown
Contributor

Answers the review in one pass. Closes #12 and #40.

VitePress — removed

It was not only local: it built a static site for GitHub Pages, with the deploy workflow present but disabled. It is redundant now, though — GitHub renders docs/ perfectly well, and the landing page does the educating far better than a docs site would. A second frontend is a second thing to keep current, so it is gone.

The interface, rebuilt

A real landing page at /, dashboard moved to /app.

The jargon is gone from anything a visitor reads. No stroops, no SEP-41, no TTL, no "accrual". In the app, Withdrawn / Claimable / Held became Taken / Ready / Held, and a cancelled stream's remainder now reads Back with the sender rather than "Unstreamed" — which was also factually misleading, since that money had already gone home.

Two pieces do the explaining that prose could not:

  • The hero counter is already ticking when you arrive. It is the fastest possible explanation of what a stream is.
  • The milestone gate is interactive. You press "Approve the milestone" and watch the held portion release. Explaining that in a paragraph has never worked as well as letting someone press the button.

The section I would point at is "The interesting part is what StelFlow deliberately cannot do" — no upgrade button, no admin over funds, withdrawals that can never be blocked — followed immediately by an amber box saying it is unaudited and on testnet. Leading with the honesty rather than burying it is the tone throughout.

#40 — the disclosure the threat model was relying on

T6 and T7 are accepted on the explicit condition that the interface discloses them. That made the acceptance dishonest for as long as it did not.

  • Clawback is resolved from the asset's issuer and reported before anything is escrowed, since escrow is the irreversible step. Failure resolves to an explicit "we could not check" rather than a silent pass — reporting "no clawback" because a lookup failed is the one answer that could talk someone into a stream they would otherwise avoid.
  • Naming yourself as approver warns inline, because the milestone editor defaults to exactly that and it is the easy path to fall into.

#12 — Spanish README

Produced as you asked, and labelled honestly at the top: an AI translation, English authoritative, corrections invited. Technical terms stay in English per that issue's own rule, and the status banner keeps its full force.

Code quality

Contract comment density cut from 36–58% down to 16–25%. Kept what explains why and cannot be derived from the code; dropped the essays restating the line below them. Tests untouched and still 75/75.

The two new guides

TESTING.mdFreighter is the recommendation: built by the SDF, best Soroban support, and the app's default. It covers getting free test XLM from the faucet, setting up three accounts so you can play payer, earner and reviewer, a 5-minute short version, then the awkward cases — two-signature cancel, cliffs, deadlines, double withdrawal, finished streams.

DEMO.md — a timed 120-second script. The setup section exists because most of the risk is there, the narration is written to cover the 5–8 second confirmation gaps rather than leaving silence, and there is an explicit list of what to cut if you run long and what never to.

Verification

Check Result
Contract tests 75/75
clippy (wasm lib + host targets) clean
cargo fmt clean
markdownlint 0 issues, 28 files
Links + anchors 0 broken, 29 files
Web typecheck / lint / build clean
Browser landing and app both exercised, gate demo confirmed working

#40 asked for

Answers the review in one pass.

**Landing page.** A real front door at `/`, with the dashboard moved to `/app`.
Eight sections written to explain rather than impress: a hero whose counter is
already ticking when you arrive, the problem stated in human terms, three steps,
an interactive milestone gate you open yourself, three use cases, and a "what
StelFlow deliberately cannot do" section that leads with the honesty rather than
burying it.

The jargon is gone from anything a visitor reads. No stroops, no SEP-41, no TTL,
no accrual. "Withdrawn / Claimable / Held" became "Taken / Ready / Held". A
cancelled stream's remainder is "Back with the sender" rather than "Unstreamed".
Event descriptions read as sentences.

**#40 — the disclosure the threat model was relying on.** T6 and T7 are accepted
*on condition* that the interface discloses them, which made the acceptance
dishonest while it did not. Now: the asset's issuer is resolved and clawback
status reported before anything is escrowed, with an explicit "we could not
check" state rather than a silent pass on lookup failure — reporting "no
clawback" because a request failed is the one answer that could talk someone
into a stream they would otherwise avoid. Naming yourself as approver warns
inline, since the milestone editor defaults to exactly that.

**VitePress removed.** It built a real static site, not just a local preview, but
it was redundant once the landing page existed: GitHub renders `docs/` fine, and
a second frontend is a second thing to keep current.

**Comment density cut roughly in half** across the contract — 36-58% down to
16-25%. Kept what explains *why* and cannot be derived from the code; dropped the
essays restating what the line below already says.

**#12 — Spanish README**, produced as asked and labelled honestly at the top: an
AI translation, with the English as authoritative and corrections invited.
Technical terms stay in English per that issue's rule.

**TESTING.md** — wallet-by-wallet walkthrough. Freighter is the recommendation:
SDF-built, best Soroban support, and the app's default. Covers three funded
accounts so you can play all three roles, a 5-minute short version, then the
awkward cases worth trying — two-signature cancel, cliffs, deadlines, double
withdrawal, and a finished stream.

**DEMO.md** — a timed 120-second script with the setup that de-risks it, lines
written to cover the 5-8 second confirmation gaps, and an explicit list of what
to cut if you run long (and what never to).

Verified: 75/75 contract tests, clippy clean on both targets, fmt clean,
markdownlint clean across 28 files, 0 broken links across 29, web typechecks,
lints and builds, and both routes exercised in a browser.

Closes #12, #40.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@jayteemoney
jayteemoney merged commit 9ad2bcf into main Aug 16, 2026
5 checks passed
@jayteemoney
jayteemoney deleted the feat/revamp branch August 16, 2026 22:22
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.

docs: Spanish translation of the README

1 participant