aboutsummaryrefslogtreecommitdiffstats
path: root/src/features/hats.js
Commit message (Collapse)AuthorAgeFilesLines
* Footer: "Show your support" beside How it works opens the hat shop from any ↵Adam Soltys6 days1-0/+2
| | | | | | page (shown once a wallet is open, since the shop pays from it) Co-Authored-By: Claude Opus 5.5 <[email protected]>
* A knight's helm, for one small knight.Adam Soltys2026-09-141-0/+20
| | | | | | | | | | A gifted hat that covers the whole face — its own square drawing over the avatar rather than perched on it: steel great helm, cross slit, breathing holes, a red plume. Never sold; the registrar's gift endpoint knows it beside the beta hard hat. Co-Authored-By: Claude Fable 5.1 <[email protected]> Claude-Session: https://claude.ai/code/session_01QYJfZ4A1TDCEY4Foq3CApR
* Hats no longer pop in a beat after page load. The hats feature is a deferred ↵Adam Soltys2026-09-041-0/+38
| | | | | | | chunk, so every boot painted bare heads until it arrived — but the core bundle can't carry the hat art. Instead, wrapAvatar now leaves a STAMP per head in localStorage (art + percent geometry, size-independent, capped at 40, cleared when a head goes bare so removals can't ghost), and the core avatar factory replays stamps until hatsReady answers — from then on a null from wrapAvatar genuinely means bare. Verified headless: a stamped hat is on the header avatar 15ms after DOM-ready, and once the chunk lands with a bare-head answer the stamp is cleared with no double-wrap Co-Authored-By: Claude Fable 5 <[email protected]> Claude-Session: https://claude.ai/code/session_01MGzU12QrAA4G6BYGzGVdXz
* Bills meet their bands: the hard hat's and trucker cap's side bills get flat ↵Adam Soltys2026-08-311-2/+2
| | | | | | | undersides that land exactly on the band's bottom edge instead of a curved lip that dipped past it and left a visible seam at the junction Co-Authored-By: Claude Fable 5 <[email protected]> Claude-Session: https://claude.ai/code/session_01MrkLsNScXe9b6BviUSdmMr
* The hard hat goes safety-orange and gets a trucker-style bill off the right ↵Adam Soltys2026-08-311-4/+5
| | | | | | | side, band and bill in the darker shade Co-Authored-By: Claude Fable 5 <[email protected]> Claude-Session: https://claude.ai/code/session_01MrkLsNScXe9b6BviUSdmMr
* A hard hat for the crew that builds this with us: an operator-giftable ↵Adam Soltys2026-08-311-3/+13
| | | | | | | construction hat joins the catalog (never listed for sale — like the crown it appears only in a rack that holds it), the registrar grows POST /hats/grant behind the admin token (hex or npub, crown excluded), and a gifted hat settles into the rack instead of knocking a paid hat off a bare-headed recipient wears it at once Co-Authored-By: Claude Fable 5 <[email protected]> Claude-Session: https://claude.ai/code/session_01MrkLsNScXe9b6BviUSdmMr
* The wizard hat stops demanding 42k sats of phantom headroom: the shop's ↵Adam Soltys2026-08-311-2/+5
| | | | | | | affordability check drops from 2% to max(10, 0.2%) routing allowance — hat invoices live on the ASP's own node where the quoted route fee is a couple of sats, and a wallet holding 2,133,786 was told it couldn't afford a 2,100,000 hat Co-Authored-By: Claude Fable 5 <[email protected]> Claude-Session: https://claude.ai/code/session_01MrkLsNScXe9b6BviUSdmMr
* A first-tap Safari hiccup stops costing a hat sale: the shop's registrar ↵Adam Soltys2026-08-301-9/+23
| | | | | | | posts retry once on network-shaped failures (Safari's bare 'Load failed' included — fresh NIP-98 header per attempt, /hats/claim already idempotent, a real refusal never re-posts), and the shop listing quietly retries once before declaring itself offline Co-Authored-By: Claude Fable 5 <[email protected]> Claude-Session: https://claude.ai/code/session_01MrkLsNScXe9b6BviUSdmMr
* A hat swapped on one device reaches the others in minutes, not by ↵Adam Soltys2026-08-301-4/+16
| | | | | | | dinnertime: the worn-hat cache revalidates after two minutes instead of six hours (still painted from cache instantly — the refresh rides behind), and learning a hat came OFF now repaints too, where the old check only redrew for fresh hats Co-Authored-By: Claude Fable 5 <[email protected]> Claude-Session: https://claude.ai/code/session_01MrkLsNScXe9b6BviUSdmMr
* Hat fitting, final millimetres: everything settles three pixels lower and ↵Adam Soltys2026-08-301-10/+10
| | | | | | | one further left Co-Authored-By: Claude Fable 5 <[email protected]> Claude-Session: https://claude.ai/code/session_01MrkLsNScXe9b6BviUSdmMr
* Hat fitting, round two: the six whose art carries less bottom padding come ↵Adam Soltys2026-08-301-7/+9
| | | | | | | down ten points (crown and wizard stay perched), and the whole rack rides five percent left of center — dead-center read as drifting off the head Co-Authored-By: Claude Fable 5 <[email protected]> Claude-Session: https://claude.ai/code/session_01MrkLsNScXe9b6BviUSdmMr
* Hats return to perching: the banner overlap now moves the row's direct child ↵Adam Soltys2026-08-301-8/+8
| | | | | | | (pulling the avatar up inside its hat-wrap left the crown planted on the face), and the whole catalog rises 20 points — hats covered a quarter of every avatar and now kiss the top few pixels Co-Authored-By: Claude Fable 5 <[email protected]> Claude-Session: https://claude.ai/code/session_01MrkLsNScXe9b6BviUSdmMr
* The hat stand gets its button back: "Support Coinos, Buy a Hat!" — a ↵Adam Soltys2026-08-281-1/+1
| | | | | | | proper button beside the avatar, not a shy link Co-Authored-By: Claude Fable 5 <[email protected]> Claude-Session: https://claude.ai/code/session_019eA8JRq9Wr7z2fRQk99HLi
* The hat pitch moves next door to the head it would sit on: a small "Support ↵Adam Soltys2026-08-261-1/+3
| | | | | | | Coinos — buy a hat for your avatar" link beside the profile avatar replaces the block button buried in the editor Co-Authored-By: Claude Fable 5 <[email protected]> Claude-Session: https://claude.ai/code/session_019eA8JRq9Wr7z2fRQk99HLi
* The app arrives in movements: real ESM chunks split the bundle (entry 333KB, ↵Adam Soltys2026-08-261-1/+1
| | | | | | | shared chunks alongside, 61KB of gifts/NWC/hats deferred past first paint into slots that keep their hook seniority), the lazy scripts wear IIFE coats so their names can't collide with the page's — which is what silently broke the remote-signer button — nip98 moves out of the login module so minimal builds stop hauling backup relays, and the smoke test learns the front door's new steps while the regtest stack rises from its IBD nap Co-Authored-By: Claude Fable 5 <[email protected]> Claude-Session: https://claude.ai/code/session_019eA8JRq9Wr7z2fRQk99HLi
* 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-181-2/+10
| | | | | | | 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
* 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
* 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
* Staging gets a hat economy of its own: mutinynet mints on its own CLN into ↵Adam Soltys2026-08-171-27/+35
| | | | | | | its own registry, play sats never buy mainnet flex — plus the toque earns its Canadian name, the wizard takes the throne at 2.1M, the crown leaves the menu, and every hat sits a little higher and straighter Co-Authored-By: Claude Fable 5 <[email protected]> Claude-Session: https://claude.ai/code/session_01JtaatFfAbx91Nh3xqKVqKz
* Hats: put your money where your head is — supporter hats perch above the ↵Adam Soltys2026-08-161-0/+337
avatar everywhere it appears, from 21-sat beanie to 2.1M-sat top hat; the crown stays on the founder Co-Authored-By: Claude Fable 5 <[email protected]> Claude-Session: https://claude.ai/code/session_01JtaatFfAbx91Nh3xqKVqKz