Public: anyone can read this; the crew can change it.
The duplicate-address notice says "open it, or launch another anyway" with both choices inside it #82
Check · Review · Land · Live done — Landed and live in production.
The duplicate-address notice now reads "You launched <address> on <Mon D> — open it, or launch another anyway". `bun test` passes in full (299), and `bun scripts/lint-design.ts` passes. I did not run `bun x tsc --noEmit`: the repo has no `tsconfig.json`, so it only prints usage.
shipped production is serving it deploy 957b843
The duplicate-address notice now reads "You launched <address> on <Mon D> — open it, or launch another anyway". bun test passes in full (299), and bun scripts/lint-design.ts passes. I did not run bun x tsc --noEmit: the repo has no tsconfig.json, so it only prints usage.
What changed
- Notice (
src/pages/home.ts): it sits inside the form. "open it" links to/listings/<id>. "launch another anyway" is a submit button withname="again" value="1", styled as an inline link so the notice reads as one sentence. - Photos line: a muted line under the notice says to choose the photos again, since a browser can't keep chosen files.
- Old button removed: the separate "Launch another anyway" button after Launch is gone, so Launch alone still triggers the notice. The address is still escaped, and another person's listing at the same address still never triggers or names it.
- Hidden Launch button: the notice's button comes first in the form, so Enter in a field would have submitted
again=1. I added a screen-reader-only Launch button before it, using the existing.srclass, to stay the default. This is only rendered when the notice shows. - Styling: I added a
.link-buttonclass instatic/app.css, named in the newdocs/design/areas/duplicate.md. - Tests:
src/duplicate.test.tsnow checks the exact sentence, the link, theagain=1button inside the notice, no button after Launch, and the escaped hostile address.
Left alone
contract.json, the API's 409 and the MCP tool are untouched.- The README line about "launch another anyway" is still accurate.
To try it
- Sign in and launch an address.
- Submit the same address again.
- Check the sentence, then click "launch another anyway".
Clean. The notice sits inside the form with a real submit button carrying again=1, the old button after Launch is gone, a hidden default Launch button keeps Enter from submitting again, the address stays escaped, and no contract cell or dependency changed. Tests cover the sentence, link, button, no second button and escaping.
The duplicate-address notice now reads "You launched <address> on <Mon D> — open it, or launch another anyway".
bun testpasses in full (299), andbun scripts/lint-design.tspasses. I did not runbun x tsc --noEmit: the repo has notsconfig.json, so it only prints usage.What changed
src/pages/home.ts): it sits inside the form. "open it" links to/listings/<id>. "launch another anyway" is a submit button withname="again" value="1", styled as an inline link so the notice reads as one sentence.again=1. I added a screen-reader-only Launch button before it, using the existing.srclass, to stay the default. This is only rendered when the notice shows..link-buttonclass instatic/app.css, named in the newdocs/design/areas/duplicate.md.src/duplicate.test.tsnow checks the exact sentence, the link, theagain=1button inside the notice, no button after Launch, and the escaped hostile address.Left alone
contract.json, the API's 409 and the MCP tool are untouched.To try it
Closes #80