aboutsummaryrefslogtreecommitdiffstats
path: root/src
Commit message (Collapse)AuthorAgeFilesLines
...
* The door opens on the right room: a profile link claims the very first paint ↵Adam Soltys2026-08-261-1/+26
| | | | | | | — a shell with the asked-for name holds the frame while the registrar answers, the username seeds the avatar's fallback art so no npub prefix or empty circle shows, and an unknown name falls quietly through to the front door Co-Authored-By: Claude Fable 5 <[email protected]> Claude-Session: https://claude.ai/code/session_019eA8JRq9Wr7z2fRQk99HLi
* The profile page steps out front: /username resolves at page load — not ↵Adam Soltys2026-08-261-25/+42
| | | | | | | wallet open — and for a visitor with no account it renders as a truly public page over the front door, threads included, with wallet-only actions held back and Back leading into the app Co-Authored-By: Claude Fable 5 <[email protected]> Claude-Session: https://claude.ai/code/session_019eA8JRq9Wr7z2fRQk99HLi
* A doormat note is read once: the profile deep link is consumed by the first ↵Adam Soltys2026-08-261-4/+9
| | | | | | | wallet to see it, so logging out and starting fresh in the same tab lands on the new home screen, not the last visitor's profile Co-Authored-By: Claude Fable 5 <[email protected]> Claude-Session: https://claude.ai/code/session_019eA8JRq9Wr7z2fRQk99HLi
* The old address book habit carries over: v3.coinos.io/<username> opens that ↵Adam Soltys2026-08-261-0/+29
| | | | | | | user's profile — the server already hands every stray path to the app, which now reads a lone name (or npub, or bare key) off the doormat, asks the registrar who lives there, and shows you in Co-Authored-By: Claude Fable 5 <[email protected]> Claude-Session: https://claude.ai/code/session_019eA8JRq9Wr7z2fRQk99HLi
* Every face is a door: note-row avatars open the author's profile again — ↵Adam Soltys2026-08-241-1/+3
| | | | | | | the thread view had them inert, and even in the feed a tap on the picture now means the person, not the post Co-Authored-By: Claude Fable 5 <[email protected]> Claude-Session: https://claude.ai/code/session_019eA8JRq9Wr7z2fRQk99HLi
* Dead coins stop travelling: an expired vtxo leaves the balance and the coin ↵Adam Soltys2026-08-241-8/+35
| | | | | | | picker (sub-dust IOUs excepted), a shortfall names the dead weight it can't spend, and the names float renews any coin a day ahead of the reaper — a 100k forward left home on an expired coin and the recipient rightly refused it at the door Co-Authored-By: Claude Fable 5 <[email protected]> Claude-Session: https://claude.ai/code/session_019eA8JRq9Wr7z2fRQk99HLi
* The open tab learns the same manners as the worker: a wallet on the wrong ↵Adam Soltys2026-08-221-0/+9
| | | | | | | network holds its tongue for three seconds before erring on a pay request, giving the right device's answer the floor Co-Authored-By: Claude Fable 5 <[email protected]> Claude-Session: https://claude.ai/code/session_017Fc8SHJRvBBXgMCntjNCri
* One record answers, and failure learns patience: a rewritten mirror disarms ↵Adam Soltys2026-08-223-25/+86
| | | | | | | stale sibling copies of its connections, the responder pays from the record whose network the invoice names (standing down when none fits), a ghost coin reconciles and retries instead of dying, and error replies wait out a grace period so a sibling's success reaches the client first Co-Authored-By: Claude Fable 5 <[email protected]> Claude-Session: https://claude.ai/code/session_017Fc8SHJRvBBXgMCntjNCri
* The claim sorts its coins the way the server counts them: HTLC vtxos line up ↵Adam Soltys2026-08-181-4/+13
| | | | | | | by outpoint in internal byte order — the display-hex sort read the txid backwards and nine-coin receives bounced off the positional check Co-Authored-By: Claude Fable 5 <[email protected]> Claude-Session: https://claude.ai/code/session_012u4oe1KPx9faCsDBLfZYqi
* A many-coined receive keeps the server's own order: the claim step stops ↵Adam Soltys2026-08-181-3/+6
| | | | | | | alphabetizing HTLC vtxos the ASP matches positionally, and the expiry guard reads the true earliest deadline instead of whoever sorted first Co-Authored-By: Claude Fable 5 <[email protected]> Claude-Session: https://claude.ai/code/session_012u4oe1KPx9faCsDBLfZYqi
* A refresh learns to let go: a participation rejected for unusable inputs ↵Adam Soltys2026-08-182-4/+106
| | | | | | | asks the server which coins died and rebuilds around the survivors instead of resubmitting the doomed set every sync forever; the balance reconciles on a ten-minute cadence so ghosts can't pose as sats; and arkRescue() reclaims a round output whose action a device lost Co-Authored-By: Claude Fable 5 <[email protected]> Claude-Session: https://claude.ai/code/session_012u4oe1KPx9faCsDBLfZYqi
* Delivery moves at the speed of the best relay, not the worst: publish ↵Adam Soltys2026-08-183-21/+30
| | | | | | | resolves on the first acceptance, DMs stop idling on the peer's inbox lookup, and the dimming departs — a sent message simply appears Co-Authored-By: Claude Fable 5 <[email protected]> Claude-Session: https://claude.ai/code/session_012u4oe1KPx9faCsDBLfZYqi
* The tick bows out: delivery speaks through the dimming alone — faint in ↵Adam Soltys2026-08-182-9/+6
| | | | | | | flight, full strength once a relay has it Co-Authored-By: Claude Fable 5 <[email protected]> Claude-Session: https://claude.ai/code/session_012u4oe1KPx9faCsDBLfZYqi
* A message sends the instant you let go of it: the rumor hashes synchronously ↵Adam Soltys2026-08-184-43/+68
| | | | | | | onto the screen as a dimmed bubble, crypto and relays catch up in the background, and one small tick marks the moment a relay takes it Co-Authored-By: Claude Fable 5 <[email protected]> Claude-Session: https://claude.ai/code/session_012u4oe1KPx9faCsDBLfZYqi
* The composer lets go of a sent message: the morph rightly won't rewrite a ↵Adam Soltys2026-08-181-2/+12
| | | | | | | focused field, so sending clears the live input itself, not just the draft state Co-Authored-By: Claude Fable 5 <[email protected]> Claude-Session: https://claude.ai/code/session_012u4oe1KPx9faCsDBLfZYqi
* Money stops arriving without a story: the mailbox checkpoint stays local ↵Adam Soltys2026-08-183-8/+22
| | | | | | | reading progress (a merged one skipped every unprocessed message), vtxos that beat their message here get a backfilled receive, and the commit stamp takes its own footer line Co-Authored-By: Claude Fable 5 <[email protected]> Claude-Session: https://claude.ai/code/session_01JtaatFfAbx91Nh3xqKVqKz
* The footer reads as a sentence: Running, then the hash, and only the hash is ↵Adam Soltys2026-08-181-3/+3
| | | | | | | the link Co-Authored-By: Claude Fable 5 <[email protected]> Claude-Session: https://claude.ai/code/session_01JtaatFfAbx91Nh3xqKVqKz
* The footer says what it stamps: the word commit, the short hash git actually ↵Adam Soltys2026-08-181-3/+4
| | | | | | | knows, and a link to it — the build token stays where it belongs, inside the service worker Co-Authored-By: Claude Fable 5 <[email protected]> Claude-Session: https://claude.ai/code/session_01JtaatFfAbx91Nh3xqKVqKz
* The pom-pom earns its fluff: a soft outline and knit marks make it read ↵Adam Soltys2026-08-181-1/+1
| | | | | | | against any background instead of vanishing into the light Co-Authored-By: Claude Fable 5 <[email protected]> Claude-Session: https://claude.ai/code/session_01JtaatFfAbx91Nh3xqKVqKz
* The party hat leaves the party: gone from catalog and price list alike — ↵Adam Soltys2026-08-181-7/+0
| | | | | | | heads that bought one on staging simply go bare Co-Authored-By: Claude Fable 5 <[email protected]> Claude-Session: https://claude.ai/code/session_01JtaatFfAbx91Nh3xqKVqKz
* The toque finds its Canadian posture: perched at the crown, band kissing the ↵Adam Soltys2026-08-181-1/+1
| | | | | | | head, face free for the winter Co-Authored-By: Claude Fable 5 <[email protected]> Claude-Session: https://claude.ai/code/session_01JtaatFfAbx91Nh3xqKVqKz
* A missing signer opens a door instead of a toast: the reconnect screen ↵Adam Soltys2026-08-185-3/+61
| | | | | | | offers the extension, the signer-app link, or a pasted key — same account enforced — and the silent reattach closes it on its own when it lands Co-Authored-By: Claude Fable 5 <[email protected]> Claude-Session: https://claude.ai/code/session_01JtaatFfAbx91Nh3xqKVqKz
* The restored shop remembers to go shopping: a session that wakes on the hat ↵Adam Soltys2026-08-181-3/+12
| | | | | | | screen refetches its data instead of filtering a collection nobody loaded — the crash that bricked every tap on the phone Co-Authored-By: Claude Fable 5 <[email protected]> Claude-Session: https://claude.ai/code/session_01JtaatFfAbx91Nh3xqKVqKz
* A crashed render confesses instead of playing dead: the error goes on screen ↵Adam Soltys2026-08-181-0/+26
| | | | | | | with a Reload button, ending the silent every-tap-is-a-no-op brick Co-Authored-By: Claude Fable 5 <[email protected]> Claude-Session: https://claude.ai/code/session_01JtaatFfAbx91Nh3xqKVqKz
* The collection is always wearable: every owned hat offers itself in the shop ↵Adam Soltys2026-08-181-5/+7
| | | | | | | — the crown included, for the one head it belongs to — so a new purchase never strands an old favourite Co-Authored-By: Claude Fable 5 <[email protected]> Claude-Session: https://claude.ai/code/session_01JtaatFfAbx91Nh3xqKVqKz
* Every hat learns to perch: brims ride the crown of the head instead of the ↵Adam Soltys2026-08-181-9/+9
| | | | | | | eyebrows, and the face underneath gets to be seen Co-Authored-By: Claude Fable 5 <[email protected]> Claude-Session: https://claude.ai/code/session_01JtaatFfAbx91Nh3xqKVqKz
* Mutinynet runs on our own rails: a coinos-hosted electrs serves the chain ↵Adam Soltys2026-08-181-3/+6
| | | | | | | for both the wallet and the ark flows — no CDN clocks, no rate limits, mutinynet.com demoted to fallback Co-Authored-By: Claude Fable 5 <[email protected]> Claude-Session: https://claude.ai/code/session_01JtaatFfAbx91Nh3xqKVqKz
* The HTLC expiry stops trusting a cached clock: tip fetches bypass the CDN, ↵Adam Soltys2026-08-181-1/+15
| | | | | | | and when the server names its own tip the payment adopts it and retries instead of dying Co-Authored-By: Claude Fable 5 <[email protected]> Claude-Session: https://claude.ai/code/session_01JtaatFfAbx91Nh3xqKVqKz
* The board drive gets a second witness: the wallet's own chain view vouches ↵Adam Soltys2026-08-182-4/+28
| | | | | | | for confirmations when the ark esplora is rate-limited or walled off, and chain errors finally surface instead of masquerading as unconfirmed Co-Authored-By: Claude Fable 5 <[email protected]> Claude-Session: https://claude.ai/code/session_01JtaatFfAbx91Nh3xqKVqKz
* The footer signs its build: one glance settles whether the PWA is running ↵Adam Soltys2026-08-181-1/+4
| | | | | | | today's code or last Tuesday's Co-Authored-By: Claude Fable 5 <[email protected]> Claude-Session: https://claude.ai/code/session_01JtaatFfAbx91Nh3xqKVqKz
* A confirmed board stops waiting on a flaky tip: confirmation itself counts ↵Adam Soltys2026-08-182-5/+13
| | | | | | | for one, and a failed mailbox read no longer starves the drives that only need the chain Co-Authored-By: Claude Fable 5 <[email protected]> Claude-Session: https://claude.ai/code/session_01JtaatFfAbx91Nh3xqKVqKz
* The top-up prompt counts money already on its way: a board awaiting ↵Adam Soltys2026-08-182-2/+11
| | | | | | | confirmation quiets both the card button and the wizard step Co-Authored-By: Claude Fable 5 <[email protected]> Claude-Session: https://claude.ai/code/session_01JtaatFfAbx91Nh3xqKVqKz
* The crown leaves the shop floor for good — it was never merchandiseAdam Soltys2026-08-181-4/+2
| | | | | Co-Authored-By: Claude Fable 5 <[email protected]> Claude-Session: https://claude.ai/code/session_01JtaatFfAbx91Nh3xqKVqKz
* A wallet keeps one name per domain, not one name total: staging and mainnet ↵Adam Soltys2026-08-181-3/+37
| | | | | | | claims stop clobbering each other, the registrar answers who-am-I per domain, and a custom name claimed on one device replaces the npub placeholder on every other Co-Authored-By: Claude Fable 5 <[email protected]> Claude-Session: https://claude.ai/code/session_01JtaatFfAbx91Nh3xqKVqKz
* The ark send review joins the boarding party: an amount Spending can't cover ↵Adam Soltys2026-08-181-1/+11
| | | | | | | swaps Send for the board door instead of walking into the insufficient-balance wall Co-Authored-By: Claude Fable 5 <[email protected]> Claude-Session: https://claude.ai/code/session_01JtaatFfAbx91Nh3xqKVqKz
* The on-chain send from Spending shows both doors: the cooperative exit it ↵Adam Soltys2026-08-182-1/+15
| | | | | | | always was, with the unilateral hatch one quiet link away — promoted to a button the moment the server stops cooperating Co-Authored-By: Claude Fable 5 <[email protected]> Claude-Session: https://claude.ai/code/session_01JtaatFfAbx91Nh3xqKVqKz
* Money finds its way to Spending: the setup wizard ends with a top-up step ↵Adam Soltys2026-08-183-3/+34
| | | | | | | when Savings can fund one, and a low Spending face wears a one-tap Top up from Savings button Co-Authored-By: Claude Fable 5 <[email protected]> Claude-Session: https://claude.ai/code/session_01JtaatFfAbx91Nh3xqKVqKz
* An empty Spending stops being a dead end: the zap button becomes the door to ↵Adam Soltys2026-08-173-10/+33
| | | | | | | boarding, prefilled with what the payment needs and open to more Co-Authored-By: Claude Fable 5 <[email protected]> Claude-Session: https://claude.ai/code/session_01JtaatFfAbx91Nh3xqKVqKz
* The claim field greets you by name: your nostr username arrives pre-filled ↵Adam Soltys2026-08-171-0/+24
| | | | | | | when the registrar confirms it's free (or already yours) — editable, never auto-claimed Co-Authored-By: Claude Fable 5 <[email protected]> Claude-Session: https://claude.ai/code/session_01JtaatFfAbx91Nh3xqKVqKz
* The avatar ask learns to recognize a face: an identity with a published ↵Adam Soltys2026-08-172-1/+11
| | | | | | | picture skips the punk picker and lands straight on done Co-Authored-By: Claude Fable 5 <[email protected]> Claude-Session: https://claude.ai/code/session_01JtaatFfAbx91Nh3xqKVqKz
* Typed names take the instant rail too: a Send button outranks the Zap for ↵Adam Soltys2026-08-172-4/+19
| | | | | | | our domains, resolving to the ark address instead of an LNURL round-trip that needs the recipient awake Co-Authored-By: Claude Fable 5 <[email protected]> Claude-Session: https://claude.ai/code/session_01JtaatFfAbx91Nh3xqKVqKz
* Our names get a second answer: when DNS is late the registrar speaks for its ↵Adam Soltys2026-08-171-9/+26
| | | | | | | own records, and unknown staging names say so instead of zapping a webroot that only serves HTML Co-Authored-By: Claude Fable 5 <[email protected]> Claude-Session: https://claude.ai/code/session_01JtaatFfAbx91Nh3xqKVqKz
* Old money stops surprising: a payment confirmed more than fifteen minutes ↵Adam Soltys2026-08-171-1/+6
| | | | | | | ago is news, not an event — the celebration is reserved for arrivals you could actually be waiting on Co-Authored-By: Claude Fable 5 <[email protected]> Claude-Session: https://claude.ai/code/session_01JtaatFfAbx91Nh3xqKVqKz
* A full profile fetch outranks the day-old cache: the freshest kind 0 stamps ↵Adam Soltys2026-08-171-1/+8
| | | | | | | the light cache and repaints the header, so a face changed elsewhere shows up in seconds instead of after the TTL Co-Authored-By: Claude Fable 5 <[email protected]> Claude-Session: https://claude.ai/code/session_01JtaatFfAbx91Nh3xqKVqKz
* Staging names its own: mutinynet claims land at @staging.coinos.io — play ↵Adam Soltys2026-08-171-15/+19
| | | | | | | personas and their testnet addresses stop squatting the real namespace Co-Authored-By: Claude Fable 5 <[email protected]> Claude-Session: https://claude.ai/code/session_01JtaatFfAbx91Nh3xqKVqKz
* A picked punk publishes its full address: the avatar step stops writing ↵Adam Soltys2026-08-171-2/+5
| | | | | | | relative paths into kind 0, where they broke real faces on every other client Co-Authored-By: Claude Fable 5 <[email protected]> Claude-Session: https://claude.ai/code/session_01JtaatFfAbx91Nh3xqKVqKz
* Mutinynet gets the full name experience: the payment-address pane, the claim ↵Adam Soltys2026-08-171-1/+6
| | | | | | | card, the re-registration — staging stops showing raw ark addresses to people who just claimed a name Co-Authored-By: Claude Fable 5 <[email protected]> Claude-Session: https://claude.ai/code/session_01JtaatFfAbx91Nh3xqKVqKz
* The spending tap keeps its promise and then makes an offer: the account ↵Adam Soltys2026-08-171-3/+8
| | | | | | | exists before the username and avatar prompts, so declining them costs nothing Co-Authored-By: Claude Fable 5 <[email protected]> Claude-Session: https://claude.ai/code/session_01JtaatFfAbx91Nh3xqKVqKz
* One tap grows the Spending side: same seed, named Spending, no wizard — ↵Adam Soltys2026-08-171-9/+14
| | | | | | | and deliberate latches carry timestamps so the phantom-healer only eats the legacy booleans Co-Authored-By: Claude Fable 5 <[email protected]> Claude-Session: https://claude.ai/code/session_01JtaatFfAbx91Nh3xqKVqKz
* The savings-only card offers the door: Set up a spending account sits right ↵Adam Soltys2026-08-172-3/+6
| | | | | | | on the balance instead of hiding behind a face you can't swipe to Co-Authored-By: Claude Fable 5 <[email protected]> Claude-Session: https://claude.ai/code/session_01JtaatFfAbx91Nh3xqKVqKz