πŸ”” Amber gets fewer surprise prompts - Cordn join-request bell notices are encrypted, so reading them costs a signer prompt on Amber. They now wait until you actually open the bell. Passive signers (nsec/bunker/extension) still preload them quietly, and the NIP-17 DM push path is unchanged. - The capability check uses the safe signer probe, so an extension that has not injected yet cannot crash the bell. πŸ› Zapstore listing refreshed - Added map, spot and marketplace screenshots; updated copy for crews, private chat, the Lab, translation, community and notifications; expanded supported NIPs and added a publisher-key guard. - No behaviour change outside the listing. --- 🧹 Leaner repo, same features - Removed 1,295 stale Gradle build files that were accidentally tracked under the NFC plugin; Gradle regenerates them locally and they were already ignored. - Dropped the unused sticker-design source and recompressed the large logo, newsletter cover and Sasquatch guide images. No app image paths changed. - The on-device translation worker runs ONNX Runtime single-threaded, so the unused threaded WASM variants were removed. The SIMD and non-SIMD fallbacks remain, so every browser/device path is unchanged. - README rewritten to match the current app; the tracked tree is ~47 MB instead of ~66 MB. Git history is untouched (no rewritten hashes). --- πŸ–Ό Load images and crews only where they matter - Content images now default to lazy loading + async decode. Long spot, gear, event and crew lists no longer pull every off-screen photo up front. - Crew notifications no longer fetch every crew: the bell asks only for crews that actually list you as a member. The full crew directory is loaded only when an admin has an incoming join request to resolve. - These are local rendering/query changes β€” no CDN, no analytics, no new server. --- πŸ”” The notification bell is off the critical path - The whole notification center is now code-split and deferred until the app has painted (or until you tap the bell). The bell icon is still there immediately; its five data sources no longer compete with the map/profile queries on a cold start. - The map and route chunks get the first network slots; the bell chunk and its feeds arrive after first paint. If you tap the bell before that, it loads and opens immediately. - Still local-first: no analytics, no new vendor, no notification server. The existing push path is unchanged. --- ⚑ Faster cold starts, same ethos - Profile lookups are batched: one relay round-trip per 100 authors instead of three per card. Avatars and names on the map, crews and lists stop stampeding the relays. - The map only asks for layers that are actually on. Events and Crews are opt-in and no longer fetch until you toggle them; Shops, Gear and Tours follow the same rule. - The local public cache now rehydrates crews, tours, the shop directory and newsletter issues on a cold start, so those screens render from disk before the relay answers. - No analytics, no new vendor, no server-side shortcut: this is batching, gating and local-first caching. Next targets are the notification bell's cold-start query storm, map pagination, a no-vendor app-shell service worker, and a smaller translation model. --- 🧭 The map footer is back - DIY, Newsletter, License and Privacy are always visible on the desktop map again, plus the OpenSats note. We removed the hide toggle that could bury the only footer on the map forever. Mobile keeps the compact Links chip. πŸ”” Cordn private-chat join requests now push - A background watcher checks the coordinator every minute and turns each new request into a NIP-17 DM (so the phone can wake with the app closed) and an encrypted notification-bell card. - The bell shows "Private chat request" with Review and Dismiss; the in-app request dot still works. The watcher uses its own key β€” never an admin key. πŸ›‘ Inline crew roles + private-chat controls - The founder can promote/demote a member directly from the Private chat member row (it republishes the crew event with the updated admin tag). - Private chat now has reactions, delete-for-everyone and read receipts. These ride as encrypted MLS control messages; the coordinator still sees ciphertext only. Delete is a tombstone, not a relay hard-delete. Automatic read receipts are silent-signer only (Amber users aren't prompted behind their back). πŸ“Š Translation matrix runner (and a real finding) - Added `npm run translation:matrix` to drive the actual built worker in a browser. First runs: en↔es ~54s, en↔ca ~21s; the Basque model downloads did not finish in 25 minutes. The 617 MB M2M100 is too slow for low-end phones β€” this needs a smaller model or native ONNX, not another checkbox. All-language APK/low-end verification is still open. --- πŸ“° The weekly newsletter builds itself (almost) - The newsletter now assembles a complete weekly draft: four shipped highlights, three rotating South Park-style roasts, current tech headlines, and a fresh cover built from the same Drop #006 foundation. - Admins get a "Weekly draft ready" banner. The composer loads every field, previews the Markdown safely, and publishes. Subscribers still get issues in the notification bell's News tab, and the archive no longer duplicates a backfilled live issue. - A weekly timer generates the draft every Monday at 08:00. The first one is ready now. Auto-publish is opt-in after review (NEWSLETTER_AUTOPUBLISH=1), so the roast gets a second pair of eyes before it goes out under the founder key. - The generator runs locally with the admin signer; no subscriber list or key leaves the box. Covers are uploaded to our own Blossom. --- πŸ§‘β€πŸ€β€πŸ§‘ Private chat: devices + members - Link a new phone or device with a QR code. An existing member scans it, and the new device joins without another founder approval round trip. - Remove a member/device from the member list. Founders also get an Edit Crew link for admin roles. - Copy or reply to any private-chat message. - The Private chat tab keeps its unread and join-request dots. πŸ” Dependency hardening - Patched the critical protobufjs advisory used by the on-device translation runtime and updated sharp. Only the write-only xlsx advisory remains. --- πŸ’¬ Private chat badges + remembered joins - The Private chat tab now shows a dot when new messages arrive while you’re reading Events or Chat; opening the tab clears it. - Founders/admins get a red dot when someone is waiting to join. - A pending join request survives a reload; the auto-check resumes when you come back. - Background checks run only for silent nsec/bunker signers. Amber and browser extension users are never prompted behind their back. --- πŸ” Sign up from anywhere, without losing the flow - The sign-in/sign-up dialog now lives above the app, not inside cards, sheets or menus. Creating an account from Spot Chat, Settings, alerts or a profile card no longer closes the profile/backup steps when you log in. - The language search clears when the menu closes, and the compact sign-in icons have proper screen-reader labels. πŸ”— Safer trip links - Links in AI-generated trip itineraries are sanitized before they render. --- πŸ” Sign-in from the menu, fixed - Logging in or creating an account from the burger menu no longer opens behind the menu; the menu closes first and the auth dialog is always on top. - Welcome β†’ sign up/log in and Log In ↔ Create Account now keep exactly one dialog open. - The desktop welcome prompt no longer pops over an in-progress sign-in. - Choosing a language in the menu returns you to the menu. --- πŸ’¬ SkateSpots Community room - New Community chat for questions and feedback β€” end-to-end encrypted. - A community bot approves new devices automatically; admins can still approve. - Find it in the menu or About, share the link/QR, or open it from Cordn. - Menus: the language picker now has its own view, crew tabs fit long labels, and touch targets are roomier. --- πŸ“± Invite QR fixed on Android - Invite QR codes now use the public skate-spots.org link instead of the app's local address, so another phone can scan them. The link opens the crew's Private chat tab. --- πŸ” Basque translation, repaired - Basque ↔ English now gives real translations and stops cleanly instead of repeating a word. No new download of the large model is needed. πŸ’¬ Private crew chat polish - After "Ask to join", the app checks for the invite automatically, so you can leave the page open. - Three plain steps explain how to start or join; Cordn, group links and key packages now live under Advanced. - Connection trouble shows a plain message and Retry; a new device can be set up again without losing access. - See who's in the chat with avatars and founder/member roles, plus Sending… / Sent / Failed β€” Retry on messages. - Invite links open the Private chat tab and have a QR code; the promo banner is dismissible. --- 🌍 Hindi, CatalΓ , Euskara and Galego - The app is now fully available in Hindi (ΰ€Ήΰ€Ώΰ€¨ΰ₯ΰ€¦ΰ₯€), Catalan, Basque and Galician β€” pick them from the language menu. - The picker now shows the real regional flags: England, Catalonia, the Basque Country and Galicia, plus PortuguΓͺs (Brasil) and PortuguΓͺs (Portugal). - Long translations no longer clip the menus: wider language menu, aligned flags, one-column language grid on phones, and a wider "More" menu. - Devanagari, CJK and Thai labels are no longer letter-spaced, and the settings language grid now shows flags instead of file paths. πŸ—Ί One world, no repeated continents - Zooming out stops where the single world covers the map β€” no grey bands and no duplicated continents. - You can still drag horizontally across the Pacific to Hawaii and the Pacific islands; the map wraps at the date line, and vertical panning stops at the poles. --- πŸ—Ί The map is authoritative again - Spots and shops on the map now come only from the SkateSpots community relay, so everyone sees the same pins β€” and it fixes the empty map some of you hit. - A missing spot was restored to the community relay. πŸ“² Pass SkateSpots on - On Android, the About page now has a "Share SkateSpots" card: show a QR, use the share sheet, or write the install link to an NFC tag. πŸ”‘ A clearer way in - Sign-in now leads with three plain choices β€” browser extension, signer app, or sign in with your phone β€” plus a quiet secret-key option. - On desktop the welcome sign-in appears once per session for logged-out visitors (dismissible). πŸ›‘ Security & stability - Updated core libraries (router, validation, Nostr client) and cleared the known app-facing vulnerabilities; the dependency scanner now runs in the scheduled job too. --- πŸ”‘ A clearer way in - Sign-in now leads with three clear choices β€” browser extension, signer app (bunker/Amber), or scan a code to sign in with your phone β€” plus a quiet "Secret Key" option. - On desktop, a welcome sign-in card appears once for logged-out visitors (you can dismiss it). πŸ›‘ Dependency security - Updated Vite, Vitest, unhead and yaml and pinned TypeScript; the OSV scan now reports far fewer known issues (remaining ones are upstream major versions or have no fix). πŸ“„ License - The Zapstore listing now shows the real licence: AGPL-3.0-only (was "custom"). --- πŸ”§ Amber signing fix - Fixed messages (and other long encrypted data) occasionally failing to open when signed with Amber β€” the signer can compress large results and the app now reads them correctly every time. - Clearer wording if Amber doesn't respond (it no longer suggests Amber isn't installed). --- πŸ’¬ Crew chat, simplified and faster - The crew Chat always uses standard end-to-end encryption now β€” no more silent transport switching. (Coordinator/MLS chat lives in the crew's Private chat.) - Messages you send appear instantly; the app no longer re-decrypts your whole inbox as you move around, and it remembers decrypted messages on your device, so reopening the app is quick. Far fewer signer prompts. πŸ” Private crew chat - Admins can now Invite members straight from the private chat. 🌍 Languages - All 20 languages are complete again (recent screens were falling back to English). --- πŸ’¬ Crew chat fixes - Messages you send now appear straight away (they could seem to vanish before). - Moving between Messages and a crew no longer re-decrypts your whole inbox, so the Amber app stops flashing and things feel faster. You're asked to approve each tap once per message, not over and over. --- 🩹 Crew chat sends with Amber - Sending to a crew no longer fails with "Amber didn't respond". The approvals now come one at a time instead of all at once, so each one lands. (A 2-person crew still needs a few approvals β€” that's the encrypted-message cost.) For fewer taps, the crew's Private chat needs about one approval per message. --- 🧹 Fewer signer pop-ups - Navigating around no longer re-decrypts your messages over and over, so the Amber app stops flashing as you move between screens. New messages are pulled in with a Refresh button on Messages. πŸ’¬ Crews in Messages - Your crews now show up in the Messages tab, with a one-tap link straight into each crew's private chat. 🧭 Clearer crew chat - The crew's "Encrypted chat" card no longer contradicts itself: it shows Chat (always on) and Private chat (MLS) side by side with their real state, and takes you straight to the private chat. - Joining now confirms ("Request sent…"), and admins are told how to add members. --- 🧹 Fewer onboarding pop-ups - The "get started" card on the map now shows only for genuinely new accounts β€” it no longer appears for returning skaters. - "Save your login" no longer comes back every session once you've saved your key during signup, and the browser's save-password prompt is less likely to appear. --- πŸ†• Private crew chat, end to end (MLS) - Crews now get a real encrypted group chat: RFC 9420 MLS through our own self-hosted coordinator. Open a crew β†’ "Private chat". Founders create it and approve join requests; members tap "Ask to join". Roughly a second to join. - Send photos, copy the group link to open the same chat in Cordn or Staircase, and your messages stay between members. The coordinator routes ciphertext and metadata only β€” it never sees what you write. πŸ”’ Our infrastructure, not someone else's - The community relay and photo/media storage now run on our own servers, so your spots, crews and photos no longer depend on a third party. Same data, faster and more independent. πŸ›’ Marketplace: close the deal in-app - Accept an offer and pay right there (NWC / WebLN / Cashu), with the invoice amount verified so you can't be overcharged. - Escrow now uses the mint the seller advertises, and confirmation is safer. πŸ›‘ Trust you can steer - Mute an account and it disappears everywhere (NIP-51 list). - "Alerts" flags accounts you follow that trusted people reported. - Choose your trust provider in Settings β†’ Trust, and every badge says who decided. πŸ—Ί Map & weather - Search now suggests spots and places as you type. - Spots show a 6-day forecast with a colour legend, sunrise/sunset, and a manual refresh. 🧡 New in The Lab - Clothing Designer joins the craft roles. πŸ›  Fixes & polish - Long menus scroll properly, and the language picker is searchable. - Spot cards are tappable across the whole card again. - Deleted spots no longer flash back from cache after a refresh. - Lighter on first load (CJK fonts download only if you pick that language). --- 🌍 Ten new languages - Simplified Chinese, Traditional Chinese, Ukrainian, Turkish, Vietnamese, Indonesian, Swedish, Czech, Romanian and Greek are now selectable β€” full coverage, not partial. (And North/South Korean stay separate, as before.) - Locales lazy-load, so picking a language only downloads that language. πŸ’Έ A proper support page - New /donate β€” three honest rails: ⚑ Lightning, πŸ•΅οΈ private on-chain (silent payments) and β›“ Angor. Each with a clear purpose, so you pick what fits you. - The Supporters wall now thanks backers with amounts, tiers and on-chain proof. πŸ›Ή Fixes - Top Shops shows real skateshops again (the community relay is shared, so other apps' shops no longer leak in). - The Monday newsletter reminder no longer covers the map on phones. - New comments appear immediately, and event tickets verify properly at the door. πŸ”§ Under the hood - A full bug + UI/UX audit pass: safer payments, stricter verification, fewer mobile layout rough edges. --- πŸ“ The map, cleaner - Fixed the search bar sitting on top of the map's zoom buttons. - The "Offline β€” showing saved spots" banner now appears only when your device is actually offline (not just when one relay is slow), and you can dismiss it. - The "you are here" dot shows your own profile picture. βœ… Spots are verified by real skaters - Community confidence now counts what other skaters actually do here: photos, status reports, comments, reactions, zaps, saves, links from crews and Lab pros. Cheap signals count for less, a zap or a crew link counts for a lot. - The spot page explains itself ("2 photos Β· 1 crew Β· 3 comments") and nudges you to help confirm a new spot. πŸͺͺ More than one handle - Crews, shops and your profile can each carry up to 5 NIP-05 handles, each with a live verified check. πŸ” Private things stay private - Stash backups can now be password-protected (with a strength meter) β€” the exported file is no longer plain text. - Marketplace payments verify the invoice amount; private messages verify the sender's signature. ✨ Smaller fixes - Crew form tidied into groups (Advanced tucked away), with a "Check" button for a custom chat coordinator and "Sasquatch Β· Pro" naming. - Stash and the marketplace listing form now fit narrow phone screens β€” the header, item rows and condition buttons no longer overlap. - The Lab's "Offer" menu is now a tidy, scrollable list (small colour chips instead of a wall of coloured buttons), with "Get Rider Card" pinned at the bottom. - Marketplace reputation no longer shows a stuck "Loading…". --- v1.5.10 🧭 Directions, rebuilt for a phone - Search a new destination right in the app: skate spots, skate shops and Bitcoin merchants (no Google/Apple Maps handoff). - The map is much bigger and the vehicle picker moved below it. - Following is smoother β€” it re-centres only when you actually move, so GPS jitter no longer twitches the map. πŸͺ™ Mints, with the info that matters - Tap a mint for community rating, reliability, uptime, location and a liveness audit β€” plus copy/open/terms. Ratings come from the community MintRadar data. 🀝 Haggling: counter-offers + barter - Offers are now a real back-and-forth: accept, decline, withdraw, or counter with a new amount β€” either side, any number of rounds. - Swapping instead of buying? Offer an item ("my 8.25 deck") instead of, or alongside, sats. Barter counts for reputation exactly like a sale. - New Trades tab in the notification bell, plus notifications for every step: new offer, counter, accepted, declined, and confirm-a-trade requests. ✨ Smaller fixes - Crews: one tidy type control (no more horizontally-scrolling chips). - Spot sheet: single close button. - Map controls float over the map so the map fills the screen. --- v1.5.9 πŸ—£οΈ Navigation you can actually follow - Directions now talks: a prompt at 150 m and again at 40 m before each turn, plus "You've arrived". It's your phone's own voice β€” offline, no account, nothing sent anywhere. - The screen stays awake while you're following, so guidance doesn't die mid-route. - The map gets bigger when you hit Start, and the step list steps aside. Mute anytime with the speaker button. πŸ—ΊοΈ A bigger map on the home screen - The map controls now float over the map instead of taking a bar above it, so the map fills the screen β€” especially on a phone. --- v1.5.8 πŸ›°οΈ Pick your own group-chat coordinator - New Settings -> Coordinator: point SkateSpots at a Cordn coordinator you choose, see whether it's up, copy or scan its link, and share it on your profile so people can add it in one tap. πŸ“± Run one β€” even on a phone - A coordinator can live on an old phone, a Raspberry Pi, or any small box you leave on. We hand you the doorway (the Cordn app, or a one-line Docker command), and your crew can route its encrypted chat through it. Crew founders get a "Use my coordinator" button. πŸ‘€ Edit Profile got a face - See how you actually look β€” banner, avatar, handle, bio and badges β€” before you save, plus a short "finish your profile" list instead of guesswork. πŸ”Ž Coordinators are discoverable - If someone runs their own coordinator, their profile now shows it with an Add button instead of a bare link. --- v1.5.7 ⏰ Event reminders - RSVP "going" or "interested" to an event and your phone nudges you an hour before it starts β€” even when SkateSpots is closed. It's an alarm the device holds, not a server, so nothing leaves your phone. - Turn it on in Settings -> Notifications (Android app). --- v1.5.6 πŸ›Ή The map is quicker off the mark - Pins no longer rebuild themselves several times while the map loads, and they stream in instead of freezing the screen in a busy city. Same map, less waiting. πŸ”” Notifications (opt-in) - Turn them on in Settings -> Notifications and your phone can buzz for DMs, crew invites and join requests, zaps, replies and mentions, and new newsletter drops. - Privacy first: nothing new is sent anywhere, and direct-message alerts never unlock your messages β€” so an Amber user is never asked to approve one just to be told a message arrived. - Honest limits: alerts come from the device while the app is running. A fully closed app can't be reached without a push server, which SkateSpots doesn't run β€” we'd rather say that than pretend otherwise. 🏷️ Badges on your profile - A free name@skate-spots.org handle now shows the SkateSpots badge, and you can list your own badges (Cordn, Cashu, NWC, Amber, BTCMap…) as clickable chips. πŸ“ "Closest spot to me" - Ask the Sasquatch where to skate and it can sort by what's nearest β€” worked out on your device, without sending your location anywhere. ⚑ Keep the map free - The Supporters page now has a one-tap way to chip in (zap publicly, or pay quietly), if you want to. --- v1.5.5 πŸ—ΊοΈ The map works offline now - The basemap you've already looked at is cached on your device, so the map still draws when the signal drops at the park β€” no more blank grid. πŸ–ΌοΈ A dead image host no longer leaves a blank spot - Photos upload to two hosts, and if one goes down the app quietly loads the copy from the other. Same for avatars and gear pics. πŸ’¬ Past conversations actually show up now - Messages reads your real DM inbox relays, so older threads appear instead of the "No messages yet" screen. And if something genuinely can't be decrypted, the app says so rather than pretending your inbox is empty. βœ… Free `name@skate-spots.org` - Pick a handle when you sign up β€” free, optional, changeable any time β€” and it shows a verified badge on your profile. --- v1.5.4 🧹 Keeping the map real - Every new spot now needs at least one photo β€” the cheapest defence against test entries and off-topic pins ("test of secret island airport"). - Spots only say "Community verified" when another skater has contributed (a photo or a status report). Until then they are labelled "Unverified" instead of looking endorsed. - The weather score is now labelled "Conditions Β· weather only". It was never a verdict on whether a place is a real spot. - One-tap "Not a skate spot" for off-topic pins (test entries, airports, malls, private land), plus an admin review queue that surfaces them for a human. - The queue also weighs mapper trust, whether any skater has reported on the spot, and whether anyone has added a community photo β€” and a review can now **Confirm** a spot as well as hide it (a staff-vouched spot gets a badge). - Moderation is **reversible**: Hide and Confirm can both be undone, returning the spot to neutral without hiding or vouching for it. - **Reports now reach a human**: the review queue surfaces reported spots at the very top, above the automated signals β€” so "not a skate spot" actually lands. - **Adding a spot warns you if one already exists** within 60 m, and links you straight to it instead of letting you create a duplicate. - **If a moderator hides or vouches for your spot, you're told** β€” right there on the spot page (your own spots stay visible to you either way). - **A photo is now strongly recommended, not required.** No picture on hand right now? Publish anyway β€” the spot just stays marked Unverified until one lands. - **Empty map? It now says so and offers to fix it**: "No spots mapped yet β€” be the first to map your park", with a one-tap Add spot. - The admin review queue now covers **shops, events, tours, gear, crews and Lab profiles** too, not just spots β€” and has a **report inbox** (every report, with the reported item resolved, not just whatever's already flagged) plus **bulk undo** for clearing old verdicts. πŸ› App Shop β€” a new section (empty on purpose, with free printables) - Free to print, no sats needed: a 55 Γ— 86 mm "DO YOU EVEN SKATE BRO?" sticker and an A3 poster, both print-ready vector files with a working QR. - Merch is coming, and it'll be paid in sats: Lightning or Cashu, your choice. No cards, no accounts, no processor skimming the drop. - To be clear: we hold no stock and nothing is for sale yet. No pre-orders, no countdown timers, no fake scarcity β€” the teasers are labelled "not for sale yet" and there are no prices anywhere. βœ‰οΈ Direct messages actually arrive now - Your DM inbox relays were being forgotten every time the app loaded, so messages were sent to your normal relays instead of the ones the other person actually reads β€” which is why DMs looked like they never arrived. Your DM relays, local relays and relay blocklist now persist properly. - Sending and loading DMs no longer stall or break because of one dead or login-only relay in your list; they now run in parallel. 🧭 Directions look and feel like a navigation screen - A much bigger map, with a metric scale bar, and the plan at a glance: distance, time, arrival, step count and the average speed the route assumes. - The map stays put while the details scroll, and Start/Stop is pinned at the bottom where your thumb already is. πŸ“° Newsletter reader - Issue intros render as proper italics instead of showing literal underscores. --- v1.5.3 🧭 Real navigation, not just a route preview - Travel modes finally give genuinely different answers: walking 13 min, biking 5, driving 2 on the same trip. Before, every mode showed the same number. - Route steps β€” the actual turns and street names. Tap a step to jump to it on the map, and use "Whole route" to zoom back out. - Tap Start and it follows you: your dot moves, the current step highlights, and it shows the next turn plus how far is left. (Still no voice guidance.) - Arrival time ("arrive ~08:10 PM"), and it remembers the mode you picked last. - Going somewhere first? "From β†’ Choose on map" sets your start point instead of routing from where you're standing. - Lose signal mid-route and it keeps showing your last route, clearly marked as saved, instead of going blank. - Skating gets its own honest estimate ("~6 min cruise on a board") next to the walking time, and moto is labelled as using driving roads. πŸ”” Amber stays out of the way - Amber now only opens for real signed actions: log in / sign up, messages, your Stash, marketplace trades, invites, publishing. Browsing and moving between sections no longer trigger a signer prompt β€” the app's encrypted cross-device data stays local-only on Amber instead of decrypting on every screen. --- v1.5.2 πŸ›’ Marketplace, levelled up - Every listing lives in one hub now: Browse, Selling (your own listings with one-tap Mark sold), your Trades, and Reputation. - Rate a trade 1–10 skateboard decks when you confirm it. Ratings show on both profiles with an honest average β€” and every confirmation is with a real person, so two accounts can't pump each other's rep. 🧭 Directions actually work now - Fixed the route map never drawing (you'd get an empty dialog and "no route"). Routes now show your position, the spot, and the line between them. - Opens instantly from your last known location; "Near Me" sorts by distance. πŸ“± Nav fixes - The desktop "More" menu no longer vanishes when you pin Marketplace. - Marketplace is now in the phone menu (☰) β€” pin it to the bottom bar too. πŸͺ™ Mints loads in the app again - The mints list was showing a JSON error on phones; it's fixed. πŸ“° Newsletter - Fixed a bug that pegged your CPU on the newsletter page. - Issues and subscriptions now publish to the community relay so everyone sees the drops. ✨ Smoother everywhere - Amber only pops for things that need a signature β€” no more prompts just for reading your notifications. - Logo no longer crowds the nav. --- v1.5.1 🦧 Sasquatch β€” the AI guide, levelled up - Ask real questions and get answers streamed as they're written. - Sasquatch Pro unlocks AI answers plus personal actions (drafting posts & listings, your Stash/Crews in chat). Pay with Lightning β€” from 7 days. - Free, always: trick & term lookups, and finding spots, events, crews, shops, tours and gear straight from the relays. - Your Pro balance shows right in the guide. πŸš‡ Directions that stay in the app - Route to any spot by public transport, bike, moto or car β€” drawn on our own map, no bouncing out to Google or Apple Maps. Pick a mode, see the line. πŸ§‘πŸŽ¨ New in The Lab: Barbers & Hairstylists - Cuts, fades, beard trims and colour β€” shop chair or mobile. Find a fresh trim on the scene. ✨ Smoother everywhere - The app shell no longer rebuilds on every screen, so the Sasquatch chat and your scroll position survive navigation. - Directions opens instantly now (it draws from your last known location first). - The signer only pops for things that need it β€” log in, messages, your Stash, the marketplace and publishing. No more prompts just from moving between tabs. - Mints is now in the phone nav; tidier tab labels. --- v1.4.5 πŸ”„ Cross-device sync - Your read state (notifications, messages, crew chat, newsletter) and app preferences now sync across devices via encrypted NIP-78 app data. πŸ”’ Security hardening - Amber signatures are verified, and trust scores verify event signatures before they're used. - Cashu wallet seed is stored in the native Keychain/Keystore with a mandatory first-time backup. - The agent (CVM) server only serves signature-verified events. πŸ—ΊοΈ Map & spots - Crisp map pins with spot-type and shelter glyphs, plus smoother loading. - New "Shelter" (weather protection) field. - Better spot dedupe across geohash/city and name variants. - Faster cold-start: query persistence, optimistic geolocation, skeleton pins. πŸ“… Tours & events - Tour countdown badges, session times on scheduled local tours, and calendar export. Polished Create Tour flow. 🐿️ Sasquatch - Faster answers via a local fast-path, honest spot counts, deduped results, and no more empty/typo dead-ends. 🎨 Polish & accessibility - Lighter onboarding, shared empty states, improved contrast, a skip-to-content link, and live-region announcements. - Relay list UI polish with live connection indicators. - Mobile fix: detail-page grids no longer overflow horizontally on narrow screens. --- v1.3.3 πŸ“‘ NEW β€” Local Relay (Citrine) Β· Android Run a private Nostr relay right on your phone with the free Citrine app, then flip it on in Settings β†’ Relays. When it's connected you get: - Instant reads β€” the map, spots, crews and messages load from your device - Works offline β€” browse (and queue posts) at a spot with no signal - On-device backup β€” a durable local copy of your own events It's opt-in, Android-only, and your Stash and messages stay end-to-end encrypted exactly as before β€” the local relay only speeds things up. πŸ›Ή Reliability & polish across the app - Events/Tours: month calendar view with a list⇄calendar toggle - Notifications: RSVP/update alerts now open the event, not the sender - Map: fixed trusted-first sorting and stash card borders - Crews: fixed roster edits clobbering each other on rapid changes - Lab/Market/Stash: always show the newest revision of a profile - Wallet: clear warning (with the exact sats at risk) before removing a mint - Spot claims: cleaner ownership history - Newsletter: recurring issue titles no longer overwrite older issues - Messages: group chats no longer leak into your 1:1 conversations --- v1.2.14 πŸ”’ Security hardening (payments & trust signals) - Auto-pay now verifies every Lightning invoice's amount before paying (zaps, crew zaps, listing fee). A server can no longer return an inflated invoice to overcharge your wallet. - Pro access is granted only by a verifiable, provider-issued zap receipt (plus platform owners). Self-signed receipts no longer grant Pro. - "Verified payment" badges on featured listings now require a provider-issued zap receipt β€” self-published receipts can't fake verification. - Crew funding goals tally only real invoice-backed zaps, so totals can't be inflated with fake zap receipts. Plus the delete diagnostics from 1.2.13 to pinpoint the signing/publish step. --- v1.2.10 πŸ› οΈ Fixes a startup crash (black screen) introduced in the previous build and keeps the Amber signing fix: signing now opens Amber the same reliable way login does, so delete / accept invite / zap complete instead of hanging. After updating, log OUT and log back IN once. --- v1.2.8 πŸ› οΈ Amber finally pops up β€” signing works (the real fix) The big one. On some Android setups (notably GrapheneOS), tapping delete, accepting a crew invite, sending a zap, or editing your profile would spin forever and Amber never appeared. Root cause: the app's browser layer was silently dropping the request that opens Amber, so the approval screen never launched. We added a native hand-off so signing requests now open Amber directly β€” exactly like login already does. Now every signing/encryption action launches Amber, you approve, and the action completes. If Amber genuinely doesn't respond you get a clear message in seconds instead of an endless spinner. IMPORTANT: after updating, log OUT and log back IN once. Then delete, accept invite, zap, and profile edits will just work. πŸ”” Notification bell "Mark read" actually clears the badge Marking notifications read now clears the count for crew items too, while your pending invites and requests stay visible in the Crews tab until you act on them. 🧹 Housekeeping Behind-the-scenes reliability fixes across the signing and notification flows.