Updates Design system App atlas Brand

Changelog

What changed, and why

Every push, in plain language, with the reasoning. If a change doesn't have a why, it doesn't ship.

September 24, 2026

Submitted for App Store review

Milestone
  • Filled in the App Store listing (description, screenshots, privacy answers, age rating) and sent the first build to Apple for review. Real venues on the map are referenced the same way any maps or listings app references a place, factually, not as a claimed partnership.

Why: The next email in this inbox should be Apple's review decision.

The first build lands in TestFlight

Milestone
  • Fixed a real gap in the Explore map's bottom panel: the tab bar isn't floating, so an old assumption about its height was leaving a strip of raw map exposed just above it. Also swapped the loading splash's logo for the arnd. wordmark, smaller and centered, and shipped the first TestFlight build.

Why: The App Store submission is finally moving: real device testing is next, then the store listing itself.

September 23, 2026

The sign-in screens finally breathe at the bottom

FixPolish
  • The last button on sign in, sign up, and password reset sat right against the bottom of the phone with no room to spare. The padding meant to sit below it was there in the code the whole time, it just never fit on screen without scrolling. Trimmed the header and a few tight gaps so the space that was always intended shows up without anyone having to scroll for it.

Why: A screen that looks cramped at the very first glance costs trust before anyone even reads a word of it.

The Apple button's text catches up to its neighbor

FixPolish
  • Sign in with Apple's own label still read a size smaller than the regular Sign in button beside it. Apple locks that text entirely; the one lever their component gives an app is that its internal label scales with the button's own height. Matching the two buttons' heights exactly closes the gap.

Why: Apple's guidelines do not allow touching the button's typography directly, so this is the honest fix available: match what can be matched, and say plainly what cannot be.

The two sign-in buttons finally match

FixPolish
  • Sign in with Apple sat right under the regular Sign in button with noticeably squarer corners and no room between them. It now shares the exact same corner rounding and a clean gap, so the two read as one family instead of two different components stitched together.

Why: Small mismatches like this are the first thing a design eye catches, and the first sign-in screen is the worst place to look unfinished.

A real Dynamic Type bug, found and fixed on a real phone

FixAccessibility
  • At the largest iOS text size, the sign in, sign up, and password reset screens were cropping their own headings and field labels; "Welcome back" showed only the tops of a few letters. This only showed up testing on an actual simulator, not in the browser-based check from a few weeks ago, since it depends on native text scaling behavior a website cannot reproduce.
  • Every heading, label, and line of body text on those three screens now grows in a controlled way instead of an unbounded one, the same policy already governing the rest of the app: reading text scales the most, short labels a little less, so a giant heading can never crowd out what is below it.
  • Verified by turning the simulator's text size to the actual iOS maximum and rebuilding: before the fix, real cropping; after, every line wraps cleanly and stays fully legible.

Why: A check that cannot reach the real behavior is not a substitute for one that does. This is what looking at the actual device caught that the earlier pass could not.

September 24, 2026

A database security pass, checked function by function

FixSecurity
  • Supabase's linter flagged 28 things. Most were either already correct by design (the counts anyone can see, the claim actions already locked to signed-in accounts) or belong to PostGIS itself, not to this app, the same category as a finding already documented and dismissed weeks ago.
  • Three were real: check-in, going live at a show, and marking a tip sent already refused an anonymous caller internally, but did not refuse them at the door, which is the layer that should do it. That door is shut now.
  • One had never been set at all (a nearby-shows search), and setting it wrong the first try broke the search entirely against production for a few minutes before it was caught and fixed. Both the mistake and the fix are written into the migration, since the next person touching this file should not have to relearn it.

Why: A security pass is only honest if every finding gets read, not rubber-stamped. Three were real, most were noise, and the app is more precisely locked down than it was this morning either way.

September 23, 2026

Sign in with Apple, built and waiting on one key

Feature
  • You will be able to sign in with Apple on iPhone: no password to make, no password to forget, and you can keep your real email private if you want to. Apple's own button, not a lookalike.
  • It respects a detail that quietly breaks a lot of apps: Apple sends your name exactly once, on the very first sign-in, and never again. It gets saved right then, so an account is never left nameless. If you choose to hide your address, the relay address Apple gives is treated as the real, working address it is.
  • The button only appears where it can actually sign you in. Until the key is installed it stays hidden rather than failing on tap, and backing out of Apple's sheet is treated as a decision, not an error.

Why: Signing up is the first thing anyone does and the easiest place to lose them. On an iPhone, Apple's button is two taps and no password.

Delete your account actually deletes your account

FixPrivacy
  • The Delete my account button has been in the app for a while, but the server side of it was never switched on, so tapping it failed with an honest error. It is on now, and it works: your login stops working and every row tied to you is removed, not hidden.
  • Checked the way it should be checked: a throwaway account was made, deleted through the app's own button, and then confirmed gone. Requests without a valid login are refused.

Why: A deletion button that does not delete is the worst kind of promise. It is also the one thing Apple requires of any app that lets you make an account.

Every control can say its own name

Accessibility
  • If you use the app by ear, the sign-in, sign-up, and hosting forms used to announce their fields as just "text field", with no way to know which one you were in. The placeholder text looks like a label but screen readers do not treat it as one, and it disappears the moment you type. Every field now carries its real label.
  • The map used to put dozens of nameless map tiles between you and the actual shows. They are scenery, so they are out of the way now.
  • Checked across nineteen screens: no unnamed controls, no unnamed images, no toggles that fail to say whether they are on.

Why: A form you cannot name your way around is a form you cannot fill in. This is the difference between an app that technically has labels and one someone can actually use without looking at it.

The app follows your text size, and the layout gets out of the way

Accessibility
  • If you turn your phone's text size up, the app now grows with it instead of cropping the words. The real bug was subtle: the system scales letters but not the line they sit on, so text was being cut off inside its own line box. Every piece of type now grows its line with it.
  • Forty-four containers that were locked to a fixed height (buttons, chips, rows, cards) now grow with what is inside them, and button labels wrap to a second line instead of trailing off into an ellipsis.
  • Scaling is tuned by what the text is for: what you read scales furthest, labels inside buttons scale a little less, and headlines that already dominate the screen scale least, so a large headline can never push away the thing it introduces.
  • Checked at 180% and 240% across eleven screens with no text cropped. Verifying it on a real iPhone is the remaining step.

Why: Text size is the accessibility setting people actually use, and an app that ignores it locks out the readers who need it most. WCAG asks for 200% without losing content; reading text here goes past that.

September 14, 2026

The Rex, restocked through September 28

Content
  • Thirty Rex listings are staged for September 16 to 28: the John Stetch Trio's four nights, the Coltrane Sutras with Pat LaBarbera, four nights celebrating John Coltrane at 100, two big-band matinees, the late sets, and Blues Sunday. September 22 is a private event and is deliberately left off; a closed room is not a show.
  • The catalog was down to six listings with the Rex ending tomorrow. Same lesson as two weeks ago: curated content expires on purpose, so the restock has to be a fixed weekly habit, not a rescue.

Why: An app about tonight with nothing on tonight is worse than no app. The weekly routine exists so this stops being an emergency.

When the catalog is down, the app says so, and stops blaming your wifi

FixInfrastructure
  • The database got paused by its host within a day of a healthy check, so for a few hours the feed said "check your connection" to people whose connection was fine. Now a failed load knows whose side it is on: a server outage reads "Our catalog is down right now. That is on our side, not your connection," and only a real network failure asks you to check yours.
  • The keep-alive that is supposed to prevent pauses now runs daily instead of every two days, exercises three surfaces (a read, auth, and a database call) instead of one, and has a second, independent pinger on a different scheduler. Either going red emails the owner.
  • arnd.app/api/keepalive is a public health check: it answers whether the catalog is up, in one line, for anyone.

Why: Honesty includes the bad days. If the app is down, the app should say the app is down.

September 5, 2026

Rooms say whether anything is on, and point you to where it is

FixFeature
  • The founder went to Osler Records on a night ARND had nothing listed, and the page said so. Now it also says where their nights actually go up: a room with no listing yet ends with one button, See what's on at @oslerrecords, straight to the room's own channel instead of a dead end.
  • On the map, a shop with something coming up wears a small ink number on its pin and its chip; a shop with nothing on says nothing. That is the filter: you can tell at a glance which rooms have a night this week without opening each one.

Why: Truthful and empty is only half the job. When ARND does not have the answer, the honest move is to send you to who does, and to make the difference visible before you tap.

September 4, 2026

Build an artist page as a demo, nothing published

Feature
  • Anyone can now build an artist page as a demo: the same form performers use, but the result lives on that phone only. No account, nothing sent to a server, nothing published. It is labelled Demo page wherever it appears, tipping stays off, and the page ends with one door: make it real.
  • Find it under Profile, Show someone, from the artists page on the site, or at /artist/claim?path=artist&demo=1. Every demo built on a phone is listed under Profile so it can be opened again.
  • Payment handles never enter a demo. A page that cannot be real must not be able to move money.

Why: The founder is in rooms full of musicians this week and wants to build someone's page in front of them without touching a real account or the live database. A musician on their own phone gets the same thing: see it first, then decide.

Record shops join the map, as landmarks, not listings

FeatureContent
  • Seven Toronto record shops now sit on the map as cream sticker pins, drawn under the show pins and never clustered with them: Osler Records, Sonic Boom, Kops, Rotate This, Play De Record, and both Cosmos rooms. Each has its own page: what it is in one honest line, its own channels, directions, opening hours where known, and any shows listed there.
  • Shows and shops are different things, so they wear different marks and different filters. A "Shops & rooms" pill in the map filters turns the landmarks off when you only want tonight; the show filters (live, tonight, free, genre) never touch them. The results sheet keeps its count to shows, with the shops in their own strip above.
  • A show at one of these rooms links through to the room's page from its details, and a room's page lists what is coming up there. Osler Records is the first that hosts shows; when one is listed, it lands on its page.
  • The map now says what it is. Under the results: "Picked by hand, so this is some of tonight, not all of it," with a door to tell us what is missing.

Why: The map is only as alive as the city between shows, and a record shop is where the people who care about this music already stand. The founder is standing in one tonight. Every address, coordinate, and line about these rooms was checked against the shop's own channels before it went in.

September 2, 2026

The calendar gets restocked, and the gap gets noticed

Content
  • The Rex's whole listing ran out on September 1, which left the map with four shows, all of them at 915 Dupont, and nothing at all for six days. Thirty fresh Rex listings are now staged, covering September 3 through 15: matinees, early sets, main stage, and the late shows, including four nights of the Roberto Occhipinti Quintet and two of Wired at 50.
  • One show on the Rex calendar is marked cancelled and was deliberately left out. Advertising a show that is not happening is the exact failure this app exists to avoid.
  • The Tuesday jam stays a single recurring listing rather than a row per week, so it never double-lists.

Why: Curated listings expire on purpose, and this is what that looks like when a restock slips: an app about tonight with nothing on tonight. The weekly routine in SEEDING.md exists for a reason, and it just proved it.

August 27, 2026

LowKey in the Park joins the map

Content
  • akaMatisse's LowKey in the Park (Final Chapter) is staged for the catalog: soulful classical piano, orchestral players, and singer songwriters at sunset in Little Norway Park, tonight at 7:30. It carries its own cover art in the app's sticker-block language.
  • Little Norway Park joins the venue list with real coordinates, so the show lands where it actually is on the map.
  • One honest gap it exposed: the live genre list has no Classical, so a piano-led night files under Folk. Worth fixing before the catalog grows past jazz and rock.

Why: The founder is in the room tonight. A curator should be able to open the app during the show and find the show they are standing at.

August 25, 2026

The liner notes get printed in 1974

Design
  • The tribute page now looks like it came out of a sleeve: the bellflower field aged with a warm ink soak and a vignette, press grain over the whole sheet, hairline rules between sections, a catalog strip reading KLS 001 / STEREO / 915 DUPONT TORONTO, and display type with a hair of letterpress relief.
  • On the thank-you card, the names carry their own links now: 915 Dupont goes to the room's Instagram, Steven Fernandez goes to On.rcrd's about page. The separate Tuesdays chip is gone, which gives phones back a row of space.

Why: A gift for a room that plays whole records should look like the back of one. And a link is warmer under a person's name than in a button beside it.

Liner notes for a room, and three humbler doors

DesignContent
  • arnd.app/liner-notes is a tribute page for Kiku Listening Sessions, typeset like the back of a record sleeve: one saturated bellflower field, dense credit type, the six sessions numbered 001 through 006 with their records, years, and guest hosts. Reachable from the thank-you card on the front door, and it prints to a 12 inch square for the sleeve.
  • The three doors got quieter: a handful of real shows picked by hand instead of a promise, "it's early days" instead of "first in, closest to it", and a free page for your shows instead of a pitch. The product is small and honest, so the front door should sound like it.

Why: A gift should be in the recipient's language, and a beta should sound like a beta. The credits page belongs to on.rcrd; the doors just got out of their own way.

The front door opens with a thank you

DesignContent
  • arnd.app now opens on a cream liner-note card before anything else: a thank you to Kiku Listening Sessions, Steven Fernandez, and On.rcrd, whose Tuesday ritual at 915 Dupont hosted ARND's first pitch. Every link on the card points outward to their world (@on.rcrd, onrcrd.ca, their Tuesday event page), and after the founder's review the copy mentions ARND exactly zero times: a thank you should be about the people being thanked.
  • Set on the design system's own rhythm: the poster voice for the headline, pill chips on the button scale, radius and padding from the tokens.

Why: The scene this app serves is built by people who curate rooms, not just people who play them. Credit where the culture comes from, on the front page, first.

August 24, 2026

The covers learn to breathe

DesignFix
  • The founder's eye caught the Kiku covers sitting too tight in the show page's hero: pills against the edge, the first one hiding under the back button. All six covers were recomposed with real margins, sized so every crop the app applies (the feed card, the hero, the poster) frames them instead of clipping them.
  • The hero's dark gradient dropped from a wash to a whisper. It existed to keep the floating buttons legible, but they carry their own backing, and at full strength it was muddying light cover art.

Why: First impressions are made of margins. Same art, now wearing them.

The Kiku nights get real covers

DesignContent
  • Each of the six on.rcrd listings now carries a proper cover image: the app's own sticker-block art (every word of the record's name in a bright pill on cream), captured from the same renderer the feed uses, so the show page's first impression matches the card that got you there.
  • The seed pipeline learned to attach cover images to listings, so any future curated show can arrive fully dressed.

Why: The founder compared the feed card he loves to the scattered backdrop on the event page and asked for a better first impression on the night that matters. Same art, everywhere the show appears.

on.rcrd's Kiku sessions join the catalog

Content
  • Six listening sessions curated from onrcrd.ca and staged for the weekly import: 88 Keys (Herbie Hancock's Thrust) on August 25, then the whole Trip Hop month, Massive Attack, Morcheeba, DJ Shadow, Portishead, and a Toronto record to close, Esthero's Breath From Another. Each one credits its source and carries both seatings.
  • Listings can now carry their own titles, so a listening night is named after its record instead of repeating the series name six times.
  • The series is filed under "Kiku Listening Sessions" at 915 Dupont, which means the organizers can walk up to any of their listings and tap "This is me", the same reviewed handshake every performer gets. The rows go live the moment the founder runs the import.

Why: Tomorrow's pitch happens inside one of these nights. The room should be able to open the app and find itself on the map, and the people who run it should be able to claim it on the spot.

August 23, 2026

The full-circle sweep

FixInfraDesign
  • Every unhappy path got walked on purpose: the lost-route screen, wrong passwords, already-registered emails, the signed-out claim gate, claims for performers with nothing to claim, demo mode, the feedback box's field-by-field validation, and account deletion's honest failure. All of them answer honestly. The sweep also discovered the /feedback ideas box is fully live, one owner task cleared itself.
  • A guest can no longer overbook a nearly full night: the party picker now caps at the seats that actually fit ("The room has space for you +1"), typing a bigger number clamps, and a guest changing their answer gets their own seats back first.
  • The App atlas now photographs the hosting screens like everything else: 33 screens, light and dark, including the invite page fully dressed with a seeded night.
  • One real App Store blocker fixed before it could bite: the cover-photo picker shipped with no iOS photo-library permission text, which is an automatic review rejection. It now asks properly.
  • The onboarding doc caught up with reality: server-side social, open claims, hosted nights, the motion rules, migrations through 013, and the current repo map. HISTORY gained Era 5 (the living room and the switch), SECURITY documents the RSVP door, and the atlas stopped claiming it had 31 screens when it has 33.

Why: A pitch-ready product is not the happy path demoed well, it is every wrong turn answered honestly and every doc telling the same story as the code. New people should be able to walk in through ONBOARDING.md and find nothing stale.

The server starts remembering: claims open, RSVPs stick

FeatureInfra
  • The founder ran migrations 012 and 013, and both were verified end to end against production the same hour.
  • "I'm going" now reaches the server for signed-in users on real shows: your plans survive a reinstall, and the going number on a show page is counted by the database (nobody named), not guessed.
  • Artist claims are open for real: "This is me. Claim this page" files a reviewed claim and hands back a handshake code. The door checks its guest list: signed-out callers are refused, and so are claims for performers with no listings to claim.
  • The keep-alive heartbeat also went live this weekend, so the free-tier database can no longer pause itself and take the app down.

Why: Three owner steps, run once, and features that were built weeks ago switched on with zero code changes. That is what the seams were for.

August 22, 2026

Invites travel by text, and the going count shows up

FeatureImprovement
  • Sharing a hosted night finally works on phones: on iPhone and Android the share button now opens the system share sheet with the whole invite as a text message (what, when, where, what's spinning, "text me back to claim a spot"), since a device-local night has no link to send yet. On the web it keeps the swipeable poster.
  • The invite stopped introducing you as "Your host" when you're not signed in: it now just says what the night is, and picks your name up the moment you have one.
  • Editing a night now shows when it's currently scheduled, so picking a new day is a choice instead of a guess, and the profile row's date no longer truncates mid-word.
  • A show's going count, which the backend has been carefully keeping all along, is now actually on the show page: "4 going so far" before you join, "You + 4 going" after, with the number taking its little breath when it changes. Zero stays silent, as counts here always have.
  • The front door at arnd.app now mentions the third way in: skip the venue entirely and host a listening night at your place.

Why: A feature is not done when it demos, it is done when it survives a real phone in a real pocket. Hosting is about to get its first real night, so the sharp edges a host would hit went first.

The link card becomes a ticket

Design
  • Sharing arnd.app anywhere (a DM, a group chat, a post) now unfurls as the app's own ticket stub instead of a logo on a wall: cream ticket, LIVE IN TORONTO badge, Live Music Arnd You in the poster type, a perforation, and ADMIT ONE at the bottom.
  • The card is generated by a committed script (scripts/gen-og.mjs) from the same design language as the in-app share tickets, at the link-preview standard size, so it stays reproducible instead of being a one-off export.
  • The image URL carries a version stamp so chat apps that cached the old card fetch the new one.

Why: The founder shared the link in a DM and the preview undersold the product. A link to a live-music app should look like something you'd keep in your pocket.

The polish pass polices itself

FixDesignInfra
  • The accessibility net widened to the hosting screens the day after they shipped, and it caught one real defect: the address-privacy checkbox was not announcing whether it was checked. Fixed there and in the two other checkboxes with the same pattern; the app and all thirteen site pages are back to zero violations in both color schemes.
  • The hosting screens now speak the design system's own language: the invite page uses the shared cards and type ramp instead of hand-rolled lookalikes, so it can never drift out of step with the rest of the app.
  • One web-focus workaround that had been copy-pasted into eight files now lives in exactly one, so it can be retired in one move when the platform fixes it.
  • The design system page gained its missing chapter: Motion and touch. The rules the app already follows (one spring curve, numbers that breathe, haptics that carry meaning, celebrations only when earned, Reduce Motion as a contract) are now written down where the rest of the system lives, and the App atlas cards for hosting caught up with the custom caps and the confetti.

Why: Yesterday's delight pass moved fast; today's pass checked its work. New screens get audited the day after they exist, hand-rolled UI gets folded back into the system, and anything the app does gets written into the public design docs. That loop is the product too.

The app answers your fingers now

ImprovementDesign
  • A micro-interaction pass across the highest-traffic screens, tuned for phones first. Every chip, pill, and button in the hosting flow now springs under your finger with the same tactile press the feed cards already had, plus a soft tick for choices and a success buzz when an invite is created or an RSVP lands.
  • Numbers move like they mean it: the spots-open pill and the in-count take a little breath when they change, an artist's follower count pops when you follow, and the rating stars snap and bloom as you drag your score up.
  • Saying "I'm in" earns a confetti burst on the confirmation card, the same celebration language as checking in at a show. New names on the guest list pop in one by one.
  • Smaller joys: the tab bar icon takes a bow when you land on it, and the cover shuffle button does a full spin per tap, like rolling dice.
  • All of it respects Reduce Motion: with the setting on, the springs and confetti stand down and everything still works.

Why: Delight is not decoration, it is feedback. On a phone your finger covers the thing you tapped, so the app has to answer some other way: a spring, a tick, a breath. Now it does, everywhere the beta gets touched most.

Hosting learns real numbers

Improvement
  • Spots stopped being multiple choice: type any room size up to 10,000 alongside the quick picks, or keep it an open invite.
  • Guests can bring the whole crew: the RSVP sheet's plus-one control now takes any number up to 99, with quick chips, plus and minus, or straight typing. Capacity math counts every one of them against the spots.
  • Both caps are beta guardrails and say so; they lift when we expand.

Why: The founder test-drove hosting on day one and the first friction was fixed numbers. Real nights come in real sizes.

August 21, 2026

Host a night: the invite is the product

Feature
  • Anyone can now throw a listening night from their profile, not just artists. Pick the kind of night (listening night, album club, house show, jam, backyard set), name it, say what's spinning, shuffle a cover until it feels right, pick a day and time, and set how many spots the room can hold.
  • The invite page does the hosting: when and where cards, the plan, an RSVP flow with plus-ones that counts heads against the cap, and a guest list that fills in as answers land. Hosts get a Preview-as-guest lens to walk the exact flow a friend would.
  • Addresses are private by default. Guests see the place name ("Allen's place") and the exact address unlocks only after they say they're in. The share poster only ever carries the place name, never the street address.
  • During the beta a night lives on the host's device and the page says so: the poster does the traveling, and the host logs the yeses that come back by text. Server invites with real links are the follow-up.

Why: ARND started as a map of other people's stages. Hosting makes the living room a venue too, and the fastest way to learn what invites need is for the founder to throw a real one.

The audit turned on our own claims

FixInfra
  • Three independent reviewers read every line shipped in the past day: one hunting bugs, one attacking security, one checking whether our words match our code. Security came back clean. The other two did not, and everything they proved is now fixed.
  • Real bugs caught and fixed: signing out no longer leaves your follows and plans on the device for the next account to inherit; unfollowing finally sticks across devices instead of resurrecting on the next sync; a show's going-count no longer drops your own RSVP; and the claim screen's "found your shows" count now matches the claim check exactly.
  • Honesty corrections: the review sheet stopped promising a verified badge that cannot light up until check-ins reach the server, a failed review post now says so and offers a choice instead of silently saving to the device, six pages that were missing their link-preview card got it, the accessibility net widened to all thirteen pages and caught the design-system page failing its own documented contrast, and several docs and changelog entries were corrected where they ran ahead of production.
  • The changelog entries above were amended in place where they overclaimed, because a changelog that flatters itself is worthless.

Why: Shipping fast all day earns an adversarial look before bed. The point of an audit is not the clean parts, it is that the findings got fixed the same day and written down here, including the ones about our own words.

August 20, 2026

Accessibility: measured, fixed, and now zero

FixInfra
  • A real audit tool (axe-core, the WCAG A and AA rule set) now runs against all thirteen site pages, and seven key app screens in both light and dark, via a committed script anyone can re-run. The first pass covered ten pages; the audit-of-the-audit widened the net and caught seven more failing elements on the design-system page itself, including the exact grey this same sweep had retired in the app. Ending score, everywhere: zero.
  • What it caught and what changed: light mode's muted text was readable on white but not on tinted cards, so it deepened a shade everywhere; the HAPPENING NOW banner's small line ran at reduced opacity and fell under the contrast bar, now full ink; the feed and map's tap-to-search fields secretly contained a real text input inside a button, which reads as two tangled controls to a screen reader, now they draw plain text; one magenta poster card darkened so its small label clears the bar; and links sitting inside sentences gained underlines so color-blind readers can find them.
  • Already right and verified along the way: every form error announces itself to screen readers, and keyboard focus outlines are global.

Why: Accessible by vibes is not a claim, it is a hope. A committed audit script turns it into a number, and the number is zero.

The last seam violations are gone

Infra
  • The password-reset screen and the artist setup screen were the last two reaching around the auth seam to touch the backend directly. The seam gained the four functions they needed (session lookup, recovery watching, reset email, password update) and both screens now go through it.
  • Verified by search: no screen imports the backend modules directly anymore, which is the rule the whole architecture rests on.

Why: The seams are what make the app testable, demoable offline, and honest about which world it is in. A rule with two exceptions is a suggestion; now it is a rule again.

Follows and RSVPs learn to survive your phone

Feature
  • Following an artist while signed in now reaches the server, so a reinstall or a second device keeps your follows. Your device and the server are merged both ways at launch; nothing you ever tapped gets dropped.
  • "I'm going" gets the same treatment the moment migration 013 is applied (a founder switch, listed in the status page); until then RSVPs keep working on-device exactly as before, and shows will carry an honest server-counted going number that names nobody once it flips.
  • Guests and the demo catalog behave exactly as before, and if the server is unreachable your tap still lands on-device: the mirror is extra, never a wall.

Why: A follow that dies with your phone was not a real connection, and a going count only means something when it is counted, not styled. Privacy stayed the constraint: counts are public, lists never are.

Shared links finally dress for the occasion

DesignFix
  • Every arnd.app link pasted into Instagram, iMessage, or anywhere else now unfurls with a proper card: the wordmark on a bold ring field in the cover language, instead of a bare grey nothing.
  • Every page carries the card: the app's own pages (every shared show and artist link, injected into the deployed shell at build time) and all thirteen site pages, each with its own title where it has one. The first pass missed six pages; the same-day audit caught it and closed the gap.
  • One image for now; per-show preview images need server-side rendering and are noted as future work.

Why: The share cards push links into feeds all day, and every one of those links was arriving underdressed. The preview card is the first pixel most people ever see of ARND.

Reviews reach the room now

Feature
  • A review written by a signed-in person on a real show now posts to the show's page for everyone, under their real name.
  • One honest correction from the same day's audit: the verified-by-check-in badge is computed on the server, but check-ins do not reach the server yet, so the badge stays off until that wiring ships. The review sheet no longer implies otherwise.
  • The sheet tells you which world you are in before you type: "posts to this show's page for everyone" when it will, and the old honest "saved on this device" when you are a guest or browsing the demo.
  • After posting, the list refreshes from the server, so what you see is what everyone sees, not a local echo.

Why: Reviews that only the writer could see were the biggest promise-shaped hole left in the app. The device-local save was honest about itself, but honesty about a gap is not the same as closing it.

The Poster studio: the share cards learn your words

FeatureDesign
  • The Brand studio's second bench: all four share-card styles (ticket stub, stamp, price tag, widgets) now render with whatever you type, headline, artist, venue and address, date and time, genre chip, plus the going and checked-in states, at full 1080 by 1350 share resolution with one-click PNG download.
  • It draws with the app's own card code, ported line for line, so a studio poster and an in-app share are the same picture.
  • Shuffle art rerolls the seeded flourishes (the stub's moons, the stamp's blobs) without touching your words.

Why: Promo material for a pitch should take three fields and zero design skill, and it should be impossible to make something off-brand. Porting the real card code, instead of imitating it, guarantees both.

The Brand studio learns where everything lives

DesignFix
  • Every shelf item now says where it lives in the product: section chips name the surfaces (feed cards, map peek, event heroes, the share button, the atlas), and each captured cover is labeled with the real show wearing it, linked straight into the app.
  • The studio's size presets map to real surfaces too: App cover is the app's exact cover shape at five times scale, alongside IG post, story, square, and X header.
  • The transit-map concept was redrawn with proper discipline: everything on a strict grid, terminal bullets alone at line ends instead of on top of stations, interchange rings only where two lines truly meet, and The Rex now earns its ring as a real Jazz and Electronic interchange.
  • The page got wayfinding: a section nav rides along as you scroll and lights up the section you are in, so scanning the room no longer means scrolling blind.

Why: A brand room is only useful if it maps to the product it serves, and a transit map only convinces if it obeys transit-map rules. Both critiques came from using the page for real, which is exactly what it is for.

The Brand studio gets its own room

FeatureDesign
  • Brand is now its own tab beside Updates, Design system, and App atlas, behind the founder key like the atlas.
  • It opens on a working studio: pick a pattern (the app's five cover motifs), a background, a size (wide, square, story, banner), type an optional label, shuffle art or colors until it sings, and download the PNG. It draws with the app's own seeded cover math, so everything made there is on-language by construction, and every look has a number that always draws the same art.
  • The shelf of captured materials (concept posters, sticker specimens, live cover captures, the four share posters) moved here from the atlas, which goes back to being purely about screens.

Why: A brand needs a maker's room, not just a gallery. The same customization we promised artists, patterns, colors, shuffle-not-drag, now exists for the founder first, and the artist version can grow from this exact code.

A brand library on the atlas

Design
  • The atlas gained a Brand library: one consolidated home for every graphic ARND generates, each a click-to-download PNG.
  • In it: the Tonight, Toronto transit-view concept poster (with a live version where The Rex pulses), the inked-sticker specimens with their spec, six of the generated show covers captured live from current listings, and all four share posters at full 1080 by 1350 share resolution.
  • The cover and poster captures are photographed from the running app by a script, so re-running it after visual changes keeps the shelf current; the concept posters and sticker specimens are built files, shown as what they are.

Why: Concepts and stickers kept getting shown in chats and screenshots that evaporate. Brand material needs a shelf: one gated page where every graphic lives, current, and downloadable.

The atlas wears freshness stickers

Design
  • Screens added in the last two weeks wear a tilted white NEW sticker on the atlas; screens meaningfully changed wear a gold UPDATED one, in the app's own inked-sticker language.
  • They retire themselves: fourteen days after the date on the entry, the sticker disappears on its own, so a stale date can only ever mean no sticker, never a false one.

Why: The atlas now opens with the founder key, and the first question a founder asks their own map is "what moved since I last looked". Stickers answer it at a glance and are built to never lie.

Walk a night: the app gives first-time visitors a tour

Feature
  • A first visit to the web app now offers a 60-second guided walk: four stops through the real feed, the live map, an actual show, and an artist page, each with one honest line about what it is.
  • It has manners. Decline once and it never asks again, close it mid-walk and it stays gone, and Help keeps a "take the 60-second tour" door for whenever you want it back.
  • The App atlas moved behind the founder key (same one as the applications desk) now that it is a working tool rather than a public page, and every card on it gained a "Try it live" link straight into the running app.

Why: A stranger's first minute decides everything. A short guided walk through real screens beats a wall of features, and a tour that knows when to be quiet beats one that begs.

The atlas catches up with the app

Docs
  • The App atlas (/map) now includes the claim screen, and every one of its 31 stills was recaptured fresh in light and dark, so the artist page shows its new OFFICIAL stamp and nothing on the atlas is older than today's app.
  • Show detail and artist page captions caught up too: the 4-style share picker, the claim invitation on community listings, and the Official stamp are all in the map's own words.
  • The architecture and status docs are current through migration 012, and the status page's done list now records the front door, share cards, and the claim handshake.

Why: The atlas only earns trust if it never lies about what the app looks like. Today added a whole screen and a badge, so the atlas had to follow the same day.

Three paper cuts off the website

FixDesign
  • The fees page's comparison table has its column headers back over their columns. A sitewide style for the homepage's fee list shared a name with the table and quietly dissolved its layout.
  • The full story page (/site) now tells the current story: real curated Toronto listings that credit their venues, the claim handshake and the Official stamp, share-card posters, and the receipts, with doors to the live map, the changelog, and the app atlas. It also has its own tab title instead of borrowing the front door's.
  • The long placeholder hints on the fan and musician forms no longer chop off mid-letter on phones: the hints are shorter (the helper text below each field keeps the detail), and any future overflow fades with an ellipsis instead of clipping.

Why: All three came from Allen using the site on his phone the way a stranger would. The table bug is the sneakiest kind, two pages disagreeing about what a word means, so the fix renames the table's class instead of nudging pixels.

This is me: artists can claim their listings

FeatureCommunity
  • Every community listing's "This is me. Claim this page" button now goes somewhere real: a claim screen that finds the shows under your name, files your claim, and hands you a short code.
  • Proof stays human. You DM the code to @arnd.app from the Instagram account already on your posters; we match the DM to the claim, and only then do the listings move to your page.
  • Approved pages wear a new OFFICIAL stamp, the same inked-sticker language as verified attendance. The sample artist page shows what claiming earns.
  • At the desk, claims arrive in a Page claims section with Approve and Decline beside the applications and feedback, each with its handshake code ready to match.
  • One switch still rests with the founder: the claim tables go live when migration 012 is applied. Until then the app ends the flow on an honest "claims are almost open" screen, and this entry describes what is built, arriving in production imminently.

Why: The map carries real Toronto shows for performers who haven't joined yet, and the whole point is handing those pages to their owners. Claiming had to be possible without being stealable, so a human reviews every handshake before anything links.

arnd.app now opens on a front door

FeatureDesign
  • Typing arnd.app now lands on a start page with three doors: peek at the live map, put yourself on the list as a fan, or get on the map as a musician, plus a one-tap way to pull up the scan codes.
  • The full story stays at arnd.app/site, and every app link (the feed, shows, artist pages, shared cards) keeps working exactly as before.
  • The scan-code page's back link now returns to the front door instead of the long-form site.

Why: When someone hears the name at a show and types it in later, the first screen has one job: point them the right way in a glance. The app's own front page was doing that job badly, it assumed you already knew what ARND was.

Pick your poster: four share-card styles

Feature
  • Tapping Share on a show now opens a picker you can swipe through: four original card styles, a perforated ticket stub, a scallop-edged postage stamp, a starburst price tag, and a widget stack, each drawn from scratch in ARND's palette and type.
  • The cards know your state. RSVP and the stub's chip flips to I'M GOING and the widget grid stamps ★ YES; check in and the stamp's postmark cancels with CHECKED IN.
  • Your last-used style is remembered, arrows and dots serve desktop while swipe serves phones, and the chosen card goes straight to the share sheet, Instagram included.

Why: One look gets old, and the person posting knows best what fits their story. The formats riff on real-world ephemera, ticket stubs, stamps, price tags, but every composition is ours, built in our own type and colors rather than traced from anyone's work.

Closing a pop-up no longer freezes the app on the web

Fix
  • Closing any pop-up sheet on the web could freeze it half-faded and stop every later tap from working. The styling library watches the page for late style changes, and a modal's closing animation triggered a code path in it that throws, killing the app's update loop mid-close.
  • That code path is now disabled at startup (the app runs its own theme system and never used that feature), and the app's boot screen no longer depends on it either.

Why: The new share picker made this long-dormant bug fire on its very first close. A bug that freezes the whole app on the feature meant to spread it is the definition of load-bearing.

August 19, 2026

A shared link no longer traps you

Fix
  • Opening a show or artist page straight from a shared link left the back arrow doing nothing: arriving from an Instagram story means there is no previous page to go back to, so the visitor was stuck one tap from leaving.
  • Back now falls through to the feed when there is nowhere to go back to, which is exactly the tour a first-time visitor should get.

Why: Sharing a show is the growth loop, and every person who taps that link is a stranger meeting ARND for the first time. Handing them a dead button and a dead end wastes the best introduction we get.

Backdrops that look like the feed

Design
  • The pattern behind show pages, the map's peek card, and the map list thumbnails was one quatrefoil tile in two colorways, so thirty shows read as one repeated wallpaper. Backdrops now speak the feed's poster language: organic blobs, scattered stickers, chunky color bands, halftone dots, and the original quatrefoil, all drawn in the same vibrant palette the feed covers use.
  • Each show keeps one identity: the art is seeded by the show itself, so the thumbnail you tap on the map is the same art you land on, just bigger.

Why: Generated art earns its keep only while it keeps surprising. The feed already rotated eight poster families; the map deserved the same wardrobe instead of one outfit.

Share a show to your story

Feature
  • The share button on every show page now produces a branded ticket image and hands it straight to your phone's share sheet, Instagram included. The card carries the show, the artist, tonight's time and room, and arnd.app, in the same ink-and-cream ticket language as the proof-of-attendance card.
  • If you've tapped I'm going, the card says so: a bellflower I'M GOING chip instead of the standing LIVE IN TORONTO invitation. Sharing your plans is the oldest way shows fill up.
  • Checked in? A Share ticket button now sits right on the show page and shares your verified-attendance card. The card generator for this existed and was never connected to anything; it is connected now.
  • On a computer the card downloads as a PNG and the show link lands on your clipboard. Everywhere else it is the native share sheet.

Why: This is how Strava and Spotify grew: the thing worth bragging about produces the brag for you. A fan at a show tonight is the best advertising ARND will ever have, and until now they had nothing to post.

The app now tells the same money story as the website

Fix
  • The full-scope audit found the app's interior still speaking the abandoned in-app payments model. The Earnings screen showed a payout balance and a 5% tip fee from a demo ledger; it is now a Tips screen that says the truth: fans pay you directly, ARND holds nothing, and its one job is getting your tip handles set up.
  • The show-listing form told artists 'fans tip you in-app, you keep the majority.' It now says what happens: tips go straight to your own CashApp, Venmo, or PayPal, and ARND takes nothing.
  • The fee constants in the code itself now match the published model: tips 0%, never a percentage, with the 25 cent fan-side cap written in.
  • The Terms of Service, the last place still promising a 5% tip fee, now carries the real model, and the Privacy Policy now discloses exactly what is stored: the check-in point that powers the verified badge, and what the website forms collect.
  • Closed a real safety gap: in demo mode, sample artist pages could open real payment links to fictional handles that strangers could claim on the payment apps. Tipping is now disabled on every sample page in every mode.

Why: One story, everywhere. A musician who reads the fees page, opens the app, and finds a different fee model inside has just learned not to trust either. And a demo should never be able to move real money toward a made-up name.

Nothing fabricated, nothing inert

Fix
  • Swept the app for decoration pretending to be data: the first feed card no longer wears an automatic '#1 Trending' badge with invented save counts, a brand-new user no longer starts with someone else's 'recent searches', the suggestions header stopped claiming to be based on your activity, unrated shows no longer show 0.0 stars, and past-show rows now say 'reviews' instead of presenting review counts as attendance.
  • Three privacy toggles that controlled nothing are gone, replaced by one real control (your phone's location permission) and honest copy about the one location we store: your check-in point. 'Download my data' now says exactly what it exports, and account deletion clears created shows and the demo ledger too, on both backends.
  • Follower counts stopped borrowing from the demo catalog: an artist who happened to share a name with a sample act inherited fictional followers. The tile now says 'syncs soon' until the real number exists.
  • A show with no end time was advertised as live for three hours but only accepted check-ins for two; both doors now agree on three.
  • Both signup funnels now keep a reserved handle on re-submission: sending the form again with the handle box empty no longer released your name.

Why: Fake numbers teach people to ignore all numbers, and a switch that does nothing teaches people the settings page is theatre. Every count in the app is now measured, labeled, or absent.

Readable by everyone, in every sense

Design
  • Form errors now announce themselves to screen readers on every funnel, invalid fields are flagged, and the success stamps receive focus instead of dropping keyboard users at the top of a hidden form.
  • The muted text color was quietly below the contrast bar the design page claims; it now clears AA on every surface, along with poster kicklines, the promo eyebrow, and the design page's own specimen.
  • Genre pickers are honest toggle buttons, removable chips on the preview card are real focusable buttons with names, filter pills on the changelog and atlas announce their active state, the desk's remove buttons say who they remove, and heading levels no longer skip.
  • Mobile keyboards behave: the music-link field gets a URL keyboard, handle fields stop autocapitalizing, and the waitlist email field autofills and shows focus.
  • Docs caught up with the week everywhere they had drifted: the security page now documents the ops side, the atlas map lists all eleven pages, and the App Store guide's reviewer path matches the actual screens.

Why: Accessibility is the honesty doctrine applied to bodies: if the page only works for the hands and eyes we tested with, it is making a quiet false claim about who is welcome.

arnd.app, everywhere

Feature
  • The site lives at arnd.app now. Every address the project publishes, canonical links, share previews, the sitemap, the app's legal and crash-report links, the applicant email, moved to the short domain in one sweep: 41 references across 22 files, zero left behind.
  • All three QR codes were regenerated to encode the short address and re-proven against it. Shorter address, simpler code: the squares got chunkier, which scans better from across a room.
  • Photos of the old codes keep working forever: the vercel.app address still serves and simply hands visitors to the same site.

Why: arnd.app/fans is an address you can say out loud across a bar, and the handle promise on the signup pages, arnd.app/@you, now names a domain we actually hold. Short enough to speak is the whole point of having bought it.

Packed for the App Store

Docs
  • The submission guide now carries the whole store listing ready to paste: name, subtitle, keywords, promotional text, and the full description, in the site's own voice.
  • The privacy declaration was corrected before it could mislead: check-ins store the reported location point per account, that is what makes verified attendance real, so location is declared as linked data. Saying otherwise to Apple would have been false.
  • One new step on the list: allow arnd.app in Supabase's redirect settings, because password-reset emails now point at the short domain.

Why: TestFlight is the next stop, and review goes smoothest when every answer is already written down and every answer is true. The location correction matters most: a privacy label is a promise to users, not paperwork.

The desk can no longer die silently

Fix
  • The desk broke again, the same way as before: an escaping mistake in how the page's code is generated produced invalid JavaScript, and the whole page died without a word. The broken line is fixed, and rewritten in a form that cannot hit that trap at all.
  • The check that was supposed to catch this class of bug was checking a slightly wrong version of the page, so it approved code that then failed in a real browser. It is now a permanent test that processes the page exactly the way a browser does, and it provably catches both past breakages.
  • The page also tells you when it is broken now: a tiny separate guard survives even when the main code dies, and shows what happened, in plain words, with the reassurance that it is our bug and not your key. Blank staring is retired.

Why: This page has now failed twice by dying with no message, and both times the person at the keyboard was left to suspect their own key. A tool you rely on owes you a straight answer when it is broken, and a test suite owes you the truth about what will actually run.

Tips will never carry a percentage

Feature
  • The future fee model changed before it ever charged a cent: tips are no longer 5%, they are never a percentage at all. When tipping moves in-app, the fan covers payment processing plus a flat amount capped in writing at 25 cents, both shown before they send, and the artist receives every dollar of the tip.
  • The $10 example on the fees page now ends the way it starts: $10 sent, $10 received, today through the artist's own CashApp, Venmo, or PayPal, and later in-app too.
  • Processing fees were never ours and never hidden: the fees page now links the payment networks' own published rates (Stripe, Cash App, Venmo, Apple) so every number can be checked at the source.
  • Ticketed shows stay at 10% and venue bookings at 15%, both still ceilings, both still announced on the fees page before anything changes.

Why: A tip is a gift from someone who watched you play, and percentages punish the artists who succeed: 5% of a generous night is real money taken from a gift. A flat few cents covers the cost of moving the money and nothing more, and 'every dollar reaches you' is a promise that stays true at any size.

A suggestion box, with a person on the other end

Feature
  • New page at /feedback: ideas, bugs, rooms that deserve more people, music we are missing, or anything else. Name, email, and the message itself; topic chips and the rest are optional. The stamp on success says what happens next: HEARD.
  • Every note lands on the applications desk in its own card, full text, topic, and sender, with the same Remove control as everything else. Each note is its own row, so one person can send ten ideas and each is handled on its own.
  • The box is linked from every marketing footer, and from Help inside the app: Send an idea.

Why: The fans form already proved that the open box collects the best information we get, but it only asked people who were signing up. This is the same door for everyone else, and it keeps the promise that made the first box work: a person reads every one.

Placeholder text you can actually read

Fix
  • On iPhones, the grey example text inside form fields was nearly invisible, dark grey on a dark background, because the site never told the browser it was a dark design. It does now, and placeholder text is pinned to a readable grey on every form, the applications desk included.
  • Autofilled fields no longer flash white over the dark inputs when the browser fills in your email.

Why: A form you cannot read is a form you do not fill in. The bug never showed on the desktop browsers we tested in, which is exactly why it survived until someone looked at a phone.

Remove a row from the desk itself

Feature
  • Every row on the applications desk now has a Remove button, so clearing out a test entry no longer means opening a terminal and pasting a database password.
  • It asks first, by name: remove Jasmine Lin (her address) from fan signups? Nothing happens unless you say yes, and cancelling sends no request at all.
  • Deleting is permanent, so the removed record stays on screen in a Removed panel until you reload, with its full details, in case the click was a mistake.
  • The waitlist finally has a table of its own. Its emails were being counted but never shown, so there was no way to see or manage who was on it.
  • The server only accepts the three intake tables by name and only ever matches a whole address, never a pattern, so a request can remove exactly the one row it names and nothing else.

Why: The desk is where real people's applications live, and the only way to tidy it was a terminal command with the database password in it. Anything you do often should be doable in the place you already are, and anything irreversible should say what it is about to do first.

The desk stops blaming you for the server's problems

Fix
  • The key check now trims both sides. A key pasted into a hosting dashboard usually carries an invisible trailing space or line break, and the old comparison rejected the correct key forever because of it.
  • When something fails, the page now says which thing failed: no admin key set on the server, a key that does not match, a database that is not connected, or a server error. Before, all four said the same thing, that your key was wrong, which sent you looking in the one place that was fine.
  • The endpoint finally has tests: the keyless viewer page carries no data, a wrong key never reaches the database, the right key returns all three tables, and a failed table read is reported rather than passed off as zero.

Why: This desk is the only door to real people's applications, and when it would not open there was no way to tell why. An error message that guesses wrong costs more time than no message at all.

The audit after the party

FixSecurity
  • A fourteen-agent audit swept everything shipped for the event: both funnels, the scan page, the intake endpoint, the desk, and the docs. Every finding was adversarially verified before it was fixed.
  • The landing page had been promising platform fees in the present tense, contradicting the fees page's own 'we take nothing today'. It now tells the same story as /fees: nothing charged today, the future caps in writing, with a link to the sourced version.
  • Tapping the arnd logo on the landing or fees page dropped visitors into the app's private-beta onboarding instead of the marketing site. Every wordmark now stays on the site.
  • Spreadsheet safety at the desk: a signup whose name or note starts with a formula character could have executed in Excel when the CSV was opened. Cells are neutralized now.
  • If the database is unreachable, the desk says so instead of quietly showing zeros as if nobody had ever applied.
  • A fan who later applies as a musician with the same email keeps their handle, in both directions. Same person, same name.
  • Smaller catches: the artists page now links its sibling /fans page and shows the red border on a taken handle, a genre chip can no longer look selected while not being counted, both pages state that underscores are allowed in handles, the scan page holds still at every phone width and its tabs answer to arrow keys, and the waitlist now says what the email will be used for.
  • The test suite had a blind spot: a missing headers object meant the rate limiter was silently skipped in every test. It is now exercised for real, which also caught two tests passing for the wrong reasons.

Why: Before advertising this to a room full of people, the site has to say one true thing everywhere. The audit's job was to catch the places where three weeks of fast shipping left two pages telling different stories, and the fixes make the honest version the only version.

August 18, 2026

A third code, for the people who already run the rooms

Feature
  • The scan page has a third tab, For hosts: venues, promoters, and anyone who puts nights together. It points at the Instagram DMs and the email rather than a form, because that conversation should start as a conversation.
  • It says the true thing out loud: you know this city better than I do, so I would rather listen than pitch. There is nothing to sign up for on that tab.
  • Every address under a code is now a real link. Held up in a room it is still a code to scan, and sent to someone in a message it is a page you can tap straight through.
  • Switching tabs no longer moves the page. Each tab reserves the same space, so the code, the addresses, and everything under them stay exactly where they were when you tapped.

Why: The people booking rooms have been doing this for years and have more to offer us than we have to offer them right now. Asking them for a form would get the relationship backwards, and a tappable address means the same page works whether it is held up at a show or sent in a DM.

The app stops handing out a personal inbox

Fix
  • Support inside the app pointed at a personal Gmail, shown in Help and attached to every report link. It now uses allen@mooque.xyz, the same address as the website, which the domain forwards to a real person.
  • The Help screen's Twitter row is now an Instagram row pointing at @arnd.app. It had been linking a placeholder account that was never ours, the last copy of a link already removed from the website.

Why: One published address, in one place, that actually reaches someone. A personal inbox on every screen is the kind of detail that is easy to ship and awkward to unship once people have it.

A real address, and no more mail to nowhere

Fix
  • Every contact address on the site now goes to allen@mooque.xyz, a real inbox. The site had been publishing support@, hello@, artists@, and venues@arnd.app in twenty places, including the Privacy Policy and Terms, and none of them existed. Anyone who wrote to us was writing into the void.
  • The in-app venue enquiry and the error messages on both forms point at the same real address.

Why: Telling someone to email you and then not receiving it is the quietest way to lose them, and it is worse on the legal pages, where a contact address is the whole point. One real inbox beats four handsome fake ones.

Something to hold up at a show

Feature
  • New page at /qr: a full-screen code you can hold up in a room. One tap switches between the fan code and the musician code, and the address is printed underneath for anyone who would rather type it.
  • The code always sits on white, whatever the theme, because scanners are far less reliable on an inverted code in a dim room.

Why: ARND is being built in person, at shows, and asking someone in a dark bar to type a long address is asking them to give up. Pointing a camera takes a second.

A good night can no longer lock people out

Fix
  • Raised the signup limit from 20 to 60 an hour per network. A whole room at a venue shares one wifi, so the old ceiling would have started turning people away on exactly the night we most wanted them.
  • If it ever does trip, both forms now say so plainly: lots of people are joining from this wifi right now, wait a minute and send it again.

Why: The limiter exists to stop scripts, not to stop a crowd. Being punished for a successful night is the wrong failure, and a person who gets a blank error at a party does not try again.

An open box, and a person on the other end of it

Feature
  • The last question on /fans is wide open: anything else on your mind. An idea, a question, something we are getting wrong, a room that deserves more people. Optional, and as long or short as you like.
  • These do not get buried in a spreadsheet column. The applications desk now has a What people said section under the fans table where every note is quoted in full with the name attached, so they get read instead of scrolled past.

Why: Everything else on the form is a field we chose in advance. This is the one place someone can tell us something we did not think to ask, which is usually the most useful thing they have to say.

Follow along at @arnd.app

FeatureFix
  • ARND has an Instagram, @arnd.app, and it is now linked from the footer of every marketing page and offered right on the success screen after you join or apply. That moment, when someone has just said yes, is the one time a follow button is a gift rather than an interruption.
  • Removed a placeholder link to a Twitter account, @arndapp, that was sitting in three footers. It was never a real ARND account, so pointing people at it was a promise to somebody else's page.

Why: People who sign up at a show want somewhere to watch this get built, and until now there was nowhere to send them. The removed Twitter link is the other half of that: an unowned handle in a public footer is worse than no link at all.

The front row, not the founding listener

Design
  • The button on /fans now says put me on the list, because that is exactly what it does. Being on the list is the best feeling in live music, and it needs no explaining when you are handing someone your phone at a show.
  • The people who join are the front row now, not founding listeners. The word shows up on the section head, on your card badge, and in the stamp you get when you join: YOU'RE ON THE LIST.
  • Front row means first and closest here, not a reserved seat we cannot promise at somebody else's venue. The copy is careful about that difference.

Why: Founding listener was startup language wearing a band tee. It described a funding round, not a night out. The front row is a thing every person who has ever loved a show already understands, and it costs nothing to explain in person.

Two questions worth asking a music fan

Feature
  • Joining at /fans now asks where you go to hear something good, and who we should be listening to. Both optional, both free-form, both answered in a few words.
  • Answers land at the applications desk in their own columns, Listens at and Recommends, and ride along in the fans CSV. A named room is a venue to go visit; a named act is a musician to reach out to.
  • Nobody is quizzed. The placeholders invite real answers: a room, a night, a friend who always knows.

Why: The map is only as good as what is on it, and the people signing up already know the rooms and the acts we have not found yet. Asking their taste instead of their data makes the signup feel like a conversation, and it turns the fan list into the map's own scouting report.

The fans page gets the full poster treatment

Design
  • /fans now speaks the same visual language as /artists: floating hero stickers, a live listener card that fills in as you type, and the stamp-and-confetti payoff when you join. The first version was a plain form; the two funnels are siblings now, and they finally look like it.
  • The listener card is editable in place, just like the artist card. Type your name on the card or in the form, they stay in sync, and your handle shows up on it as the address it will become: arnd.app/@you.

Why: Fans deserve the same craft musicians got. If the invitation to be a founding listener looks like an afterthought, it reads like one, and the people we meet at shows deserve a page that feels like the product they are joining.

Where did we meet?

Feature
  • Both application forms now ask one small human question: where did we meet? We onboard people in person, at shows, and a name in a database loses the story of the night it came from. Now the answer rides along with the application and shows up at the desk next to the name.
  • It is optional and free-form: 'your set at The Rex' or 'the Kiku session on Dupont' is exactly the right amount of detail.

Why: ARND is being built at shows, face to face. Remembering that the person behind an email was the one dancing at the Kiku session is worth more than any analytics field, and it keeps onboarding personal as the list grows.

The applications desk looks like ARND now

DesignFix
  • The private applications desk was a plain white utility page from another universe. It now wears the site's own skin: dark, bellflower accents, the wordmark, and a proper Musicians and Fans layout with the new where-we-met notes highlighted.
  • Fixed a bug that had quietly broken the desk in the browser: a wrong escape in the fans CSV export was a syntax error that stopped the whole page script from running, key gate included. Downloads and the gate both work again, and the file now carries a note explaining the trap so it is not reintroduced.

Why: The desk is where real people's applications are read and decided on. A broken, off-brand page invites mistakes and makes the work feel unserious; the private tools should hold the same standard as the public ones.

Peek at the map always shows the real map

Fix
  • The 'Peek at the map' button on /fans now explicitly switches demo mode off before opening the feed. If a device had been used for an in-person demo, it could keep showing the demo catalog (sample artists like Marcus Bell) instead of the real Toronto listings. Public pages now always land on live data; the demo catalog stays where it belongs, behind the demo link.

Why: Honesty is the house rule. A public button that says peek at the map has to show the actual map, not a leftover demo state from someone's earlier pitch.

Fans get a front door of their own

Feature
  • A new page for listeners at /fans: become a founding listener in about a minute. Name and email, and if you want them, your phone, Instagram, and city.
  • Fans can claim a handle too, and it is one namespace for everyone: once a fan or a musician claims a name, nobody else can. First come, first served, held until launch.
  • The signup gate now comfortably clears a crowd. Signing up a whole table of people at a show from the same venue wifi no longer trips the bot protection.

Why: Musicians need an audience waiting when they arrive, so onboarding fans is not a side quest, it is the other half of the marketplace. And a fan who claims a handle is not an email on a list, they own a small piece of the thing before it opens.

Claim your handle before anyone else does

Feature
  • Applying as a musician now lets you claim your handle, the address your page will live at when ARND opens. First come, first served: once you claim it, nobody else can, and the application form shows your future address as you type it.
  • Handles follow the same rules the app will enforce at launch (3 to 20 characters, letters, numbers, dots, underscores, dashes), so a handle we hold for you is one we can actually deliver.

Why: Your name is the first thing you own as an artist. Reserving it early is a real, concrete thing we can give musicians for signing up before launch, and it only means something if the reservation is enforced, so it is: the database itself refuses a second claim on the same handle.

Musician applications got a real desk, and the demo stopped bending time

FeatureFix
  • Applications from musicians now land somewhere a human can actually work with: a private table of every applicant, their genres, links, and tip handles, with a one-tap spreadsheet download. Same locked door as before, just a readable room behind it.
  • Applying will soon earn a real reply. The plumbing is in for a thanks-you're-on-the-list email the moment someone applies, plus a heads-up to us, switching on as soon as the mailing account is connected.
  • The demo city's two real shows now wear their true calendar dates. Once those nights pass, the shows retire like any ended show instead of claiming to be today forever.

Why: A musician trusting us with their info deserves two things: that a person actually sees it, and that they hear something back. And the demo obeys the same honesty rule as everything else: nothing gets to pretend it is happening today when it is not.

July 25, 2026

Blocking a reviewer now sticks to the person, not just their name

Fix
  • Now that reviews are real, blocking someone keys off their account, not their display name. So a block holds even if they rename themselves, and it never sweeps up a stranger who happens to share a name. Demo reviews, which have no account behind them, still block by name.

Why: A block should mean the one person you meant, and it should keep meaning that tomorrow. Matching on a name is easy to slip past and easy to get wrong; matching on the account is neither.

Reviews go live, with a verified mark you can actually trust

Feature
  • Show pages now read real reviews from the backend instead of the demo set. A review can carry a verified mark, and that mark is earned: it shows only when the reviewer actually checked in to that show, worked out on the server where a phone cannot fake it.
  • Until the first real reviews land, a show's reviews section is simply empty rather than padded with samples pretending to be real.

Why: A review is only worth trusting if the "was really there" mark cannot be gamed, so the check runs on the server, out of reach of the app, and we would rather show nothing than show a fake. Same rule the whole app runs on: never look more real than you are.

Put the new report and block logic under test

Fix
  • Added unit tests for the report-and-block store: filtering hidden and blocked reviews, deduping, saving, and loading on start. Nothing you see changes; it just keeps the moderation controls working as the code grows around them.

Why: Report and block are exactly the kind of quiet safety feature that should never silently break. Tests are how we keep a promise like that honest over time.

Reporting or blocking a review now actually does something, everywhere

FixFeature
  • Reporting a review hides it for you right away, and blocking a person hides every review they have left, across the whole app, not just the show you happened to be looking at. Both choices stick between sessions.
  • The report action used to promise a review within 24 hours and then quietly do nothing. It now has a real effect and says only what actually happens.

Why: A moderation control that only pops a thank-you is worse than none: it tells people they are protected when nothing changed. Report and block should change what you see, immediately and everywhere, and the wording should promise only what it delivers.

Trimmed a dead data layer out of the app

Fix
  • Removed a second, unused data-fetching system that had been shipping in the app without ever running. Reads now take one clear path, through the same seam every screen already used, and the download is a little smaller for it.

Why: Two overlapping ways to load the same data is the kind of quiet debt that makes every later change slower and riskier. One is enough, so the dead one is gone. Nothing you see changes; the app just carries less weight.

Deleting your account really deletes it, a site search engines can read, and one font across the app

FeatureFix
  • Deleting your account now truly deletes it. On the live backend, "Delete my account" removes your record on the server, which cascades to your profile and everything tied to it, instead of only signing you out. If the delete cannot go through, the app says so plainly rather than pretending it worked.
  • The website can finally be found. Added a sitemap, a robots file, and canonical and social-preview tags to every page, so search engines and shared links resolve to the right page instead of guessing.
  • The venue board and artist pages now use the same Inter type as the rest of the app. Three screens had drifted onto a different font; the chrome reads as one app again, while the gig posters keep their display type.

Why: Account deletion is something Apple checks, and more importantly something people deserve to have actually work: if you ask to be forgotten, you should be. The search basics let the artists and fans we are trying to reach find the site at all. And one consistent typeface is part of the difference between an app that feels considered and one that feels stitched together.

July 22, 2026

The front door got the poster treatment, and the design system wrote itself down

DesignFeature
  • The who-are-you screen joined the poster family: dark canvas, big display headline, and each role wearing its own performer color, matching the welcome carousel and the performer pitch. It used to look like step zero of a survey.
  • The design system page grew up: every shared component with rules for when to use it, the color and shape scales, the poster-vs-tool screen split, and the honesty patterns, all written down at arnd-alpha.vercel.app/design.
  • The website's menu is the same on every page now. Updates, the design system, and the app atlas live together under Changelog as three tabs, so the main menu never changes shape as you browse.

Why: A design system that lives only in the code is folklore. Writing the rules down, and making the front door follow them, is how the look survives the next hundred changes.

A way back from a forgotten password, and colors everyone can read

FeatureFixDesign
  • Forgot your password? There's a reset flow now: request a link from the sign-in screen, set a new password, you're back in. Before this, a forgotten password meant a lost account.
  • The performer dashboard says RSVP counts sync later in the beta instead of showing a fabricated zero, and publishing a show says plainly that it lives on your device while cross-device publishing rolls out.
  • The welcome screens' buttons wear the brand blue on every slide and pass accessibility contrast; the per-slide colors still paint the artwork. The candy and paper themes' accents deepened just enough to clear the same bar.
  • Behind the scenes: the application and crash endpoints are rate limited, the admin export key moved out of URLs, database setup left the request path, and tip links are built so a crafted handle can never point somewhere unexpected.

Why: The unglamorous fixes are the ones a beta tester actually hits: a lost password, a number that lies, a button they cannot read. Each one is a small promise kept.

Your library keeps every real show, and breakage stops being invisible

FixInfra
  • Saving a real Toronto listing sticks now. Saved shows and followed artists load through the shared data layer, so live listings no longer silently vanish from your Library, and achievements and profile stats count check-ins at real shows too.
  • If live data cannot load, the app says so and offers a retry instead of quietly presenting demo content as if it were real.
  • Switching how you use ARND (fan, performer, scout) saves to your account again. For signed-in accounts the switch silently did nothing.
  • When the app breaks, it now tells us: a technical crash report (what broke, never who you are) is sent automatically, so beta problems get found without you filing a bug. The privacy page says exactly this.
  • The notifications preview stopped inventing events. No more fake tips or fake badges; it shows your real followed artists and the real upcoming-show count.

Why: A beta earns trust by remembering what you saved, admitting when it fails, and never inventing good news.

Money and claims you can trust

FixInfra
  • Tipping is purely person to person now: pick an amount and jump straight into the artist's own CashApp, Venmo, or PayPal. The old in-app tip screen could show a success message while no money actually moved. That screen is gone for good.
  • Claiming a community listing goes through a quick review before the shows link to a page, so nobody can claim another band's shows or point their fans' tips at the wrong pocket.
  • Check-in records are locked down: nothing about your attendance can be edited after the fact except the tip marker, so a verified badge always means what it says.
  • The venue gig board says what it is: sample gigs from fictional venues, previewing how briefs and applications will work. Pitches save on your device, and the old "application sent" confirmation that sent nothing is gone.

Why: Trust is the product. A success screen that lies, a claim that steals, or a verified badge that can be forged would each poison it. Better an honest preview than a beautiful fake.

Fresh shows every week, and a feed that never lies about them

FeatureFixCommunity
  • The feed, map, and search now only show performances you can still walk to. A show that already happened stays on the artist's page as track record, but discovery never advertises it as happening.
  • The happening-now banner counts real upcoming sets, and on a genuinely quiet day it steps aside instead of shouting about nothing.
  • Twenty-three fresh community listings landed, covering every day through August 9 at The Rex, curated straight from the venue's public calendar.
  • Restocking the calendar is a written weekly routine now, so the city never quietly runs dry.

Why: ARND's pitch is that what you see is really happening. That has to be literally true: the number on the banner, the pins on the map, every card in the feed.

July 21, 2026

What's New reads every update again

Fix
  • The What's New screen could show an error instead of the changelog when an update carried a type it didn't recognize. It reads every update again now, and an unfamiliar type falls back to a plain label instead of taking the screen down.
  • Community is a proper update type now, with its own label, colour, and filter, alongside Feature, Design, Fix, and Under the hood.

Why: A page whose whole job is to explain what changed should never be the thing that breaks.

Tightened the database's row-level security

InfraFix
  • Turned on row-level security for the one database table a routine audit flagged, and wrote down exactly which rules guard every table.
  • That table only ever held public map-projection reference data, never anyone's information, so nothing was exposed. This clears the warning and documents the posture.

Why: Shipping the app's public key is only safe if every table enforces who can read and write it. Now that is verified, documented, and clean.

One callout card, so every prompt looks like it belongs

DesignFix
  • Every promo, invitation, and call to action now shares one card: the same corner radius, the same icon tile, the same type. The happening-now banner, the you-play invite, the community-listing claim, the this-could-be-you payoff, and the venue-board prompts read as one family instead of twenty slightly different boxes.
  • The feed dropped a duplicate become-a-performer promo, so there is one clear invitation instead of two competing ones.
  • The sample artist page now ends on a single action, Create your page, instead of stacking a second button beneath it.

Why: Small inconsistencies in shared pieces, a radius here, a tint there, are what quietly make an app feel unfinished. Fixing them in one component means they stay fixed, everywhere at once.

July 17, 2026

Your whole identity, saved: vibe, tips, and cover follow your account now

Feature
  • A performer's full identity now lives in their account, not their phone: vibe color, tip handles (CashApp, Venmo, PayPal), TikTok, genres, custom tags, and their generated cover choice all save to the shared database.
  • Tip handles are editable anytime from Edit Profile, so adding or changing where fans pay you takes seconds.
  • Artist pages honour a saved vibe and cover: pick your identity once and every visitor sees it, on any device.

Why: Half of a performer's setup used to quietly stay on the device that typed it. Now the page a musician builds is the page everyone gets.

Covers with a pulse, edits that stick, and one button radius

DesignFeatureFix
  • Artist pages wear generated minimal covers now: a waveform, radiating rings, or a drifting dot field, drawn in the performer's own color. No more stock photos, no more bare placeholder. Each artist's cover is theirs and stays theirs.
  • Editing your profile saves to your account for real. Before, on a live account, edits quietly stayed on your own phone; now your name, bio, and links update in the shared database and everywhere the app shows them.
  • Every button on the artist page finally agrees on a corner radius, and chips, cards, and buttons each follow the design system's tokens instead of hand-typed numbers.

Why: A musician's page should look designed, not defaulted, and editing it should mean everyone sees the change. Details like a consistent corner radius are how a page earns trust before a single note is played.

See what your page could be: the sample artist

FeatureCommunity
  • Musicians can now see a finished artist page before creating one: a labeled sample page (meet Amara, the park busker) with real-looking shows, verified reviews, and everything a performer gets.
  • It's linked where the decision happens: from the performer pitch and from every community listing's claim card.
  • The sample page ends with the invitation that matters: you don't need a venue booked. A park corner, a patio, your street: post it, go play, and the neighbourhood can find you.
  • Honesty guardrails: the page wears a "Sample artist page" badge, and tipping is disabled on sample pages so no real money can go to a fictional handle.

Why: ARND isn't a mirror of venue calendars. It's a place to originate shows, and the fastest way to say that is to show a busker's finished page and hand over the pen.

Artist pages have a story now: past shows, reviews, and a place to listen

Feature
  • Every artist page now shows their track record: Past shows with the rating and how many people were verified there. Proof they actually perform, not just a promise.
  • A "What fans say" section pulls reviews from across their shows, from people who checked in on site. The unfakeable kind of praise.
  • A "Listen" section puts their music one tap away instead of buried in a tiny social icon.
  • Under the hood, artist pages load through the shared data layer, so a real musician who claims their page gets a real profile, not just the demo artists.

Why: An artist page is a musician's storefront. It should answer the question a fan or a booker actually asks: are they any good, and do they really show up? ARND can prove both, so the page should say so.

July 16, 2026

Artist page, tidied: one green, the brand's blue, and a real TikTok icon

DesignFix
  • The tip buttons, verified badge, and the profile and check-in greens all use the same teal-leaning success color now, in both light and dark mode. Solid tip buttons pick a foreground that stays readable either way.
  • The Follow button wears the brand's bellflower blue instead of the performer's accent color, which read as an off-brand pink. The performer's color still washes the hero, the genre chip, and the glyph.
  • The social icons are one clean monochrome set. The TikTok icon used to be a black note that vanished against the dark button; it's a real, legible TikTok logo now.
  • Tipping is now one shared button everywhere, always a green gift, whether it's the big "Tip" on an artist page or the compact one on a show. It used to be a different icon and color on each screen; now it's a single component with just a size and emphasis.
  • The "Emerging" artist chip shifted into the same green family too.

Why: The artist page is a musician's storefront, so it has to feel considered. One green, the brand blue on the main action, legible icons, and a single tip style: small things, but together they read as care.

Two-persona audit: the fan never dead-ends, the musician's page is real

FeatureFix
  • Every show page now ends with "More at this venue": the rest of that room's calendar, one tap away. Browsing never hits a wall.
  • Show dates got warmer: "Today, July 16" and "Tomorrow" instead of a flat weekday when the show is close.
  • Community listings stop saying the performer's name twice when the show is simply named after them.
  • The big one for musicians: finishing your artist page now writes your stage name, bio, links, and home turf to the shared database, not just your device. Before this, a performer could complete setup and exist only on their own phone.
  • Claiming pays off: if community listings match your stage name, they transfer to you the moment your page saves, and the success screen tells you how many shows are now yours.
  • Known gap, said plainly: vibe theming, tip handles, extra genres, and custom tags still live on-device until the artist-extras migration lands.

Why: We walked the app twice, once as a fan, once as a musician, and fixed what each would hit first. The fan's map should keep unfolding; the musician's leap of faith (build a page, claim your shows) should land somewhere real.

Credit where it's due, and a museum for the demo city

FeatureCommunity
  • Every community listing now links back to the original public posting, the venue's own calendar or the listing site we curated from. The source keeps the credit and the click.
  • Venues and performers can request a correction or removal right from any community listing, one tap, straight to us.
  • The demo era is preserved: docs/HISTORY.md records the twelve shows and thirteen acts of the demo city, from Distillery Soul Sessions to After Hours, with a promise that the catalog never gets deleted. Demo mode remains the museum, and the exhibits still play.
  • Marcus Bell, first face of the feed, gets his line in the history books.

Why: ARND should make venues stronger, not compete with their calendars, so the original posting gets honoured, not absorbed. And the demo city earned its place in the record: every screen in this app was built against it.

The map is real now: live Toronto shows

FeatureFix
  • The map, feed, and search now serve real Toronto shows from the shared database: 19 curated community listings across The Rex, Jazz Bistro, the Reservoir Lounge, Grossman's, El Mocambo, and more.
  • Live show pins know exactly where they are: venue coordinates decode straight from the database's geography column.
  • Feed pills understand real shows: Live Tonight goes by the clock, Free Entry by pricing, Jazz & Blues by genre, instead of a hand-curated list that only knew the demo catalog.
  • The map screen reads the same data source as everything else, so what you see on the map is what the feed knows.

Why: A discovery app earns trust the first time it points you at a real stage and the band is actually there. Tonight the Toronto map does that.

Real accounts: ARND is no longer single-player

Feature
  • You can create a real account now, backed by a shared, secure database instead of one that only lived on your phone. Your name, profile, and how you use ARND are saved to your account.
  • Signing in is instant during the beta: no confirmation email to wait on before you can start.
  • This is the foundation the social side is built on. Following artists, RSVPs, and syncing across devices layer on top of it and are rolling out next.

Why: For months ARND was a polished demo you could explore but not truly join. This is the day it became a place real people can sign up to, and everything social is built on it.

Beta-ready: honest copy, help that helps, hardened plumbing

FixFeature
  • Help & Support tells the truth now: the FAQ covers check-in, artist-on-site, community listings, and person-to-person tips, exactly how they really work.
  • A "Send beta feedback" button prefills a bug report with your app version and platform, straight to the founder. Support email actually reaches a human inbox.
  • Onboarding says its sample artists are samples, and the notifications inbox says its entries are previews, no fake activity presented as real.
  • Two web-only bugs where a button lived inside another button (map results header, recent searches) are gone, along with the hydration errors they caused.
  • The test suite is back from the dead and grew: 90 tests including full coverage of the public application endpoint's spam traps and validation.
  • The application endpoint answers storage failures gracefully instead of crashing with a bare 500.

Why: Beta testers forgive rough edges, but not being misled. Before inviting people in, every promise in the app had to be one it can keep, and every report they send had to reach us.

Covers that coach you, and images you upload

FeatureDesign
  • The title helper actually audits now: it simulates your real cover render and tells you which word sets the size, or which one will render small. No more reflexive "looks great".
  • One-tap tag suggestions: acoustic set, full band, DJ set, open mic, jam session and more. Genres say what you play, tags say what the set is like.
  • Cover images are uploaded from your library now, or dropped straight onto the preview on desktop. The URL paste box is gone.
  • Classic covers wear a proper vintage print treatment: balanced colors, sunburst marks, halftone grain.

Why: The create flow is a musician's first minute in ARND. Every control in it should tell the truth: real feedback about the cover, real presets that save typing, and a real upload instead of a link that can rot or mislead.

A green that belongs, and colors everyone can read

DesignFix
  • Verified moments (attendance, artist on site, tips received) wear a new teal-leaning green that sits in the same cool family as bellflower.
  • Every semantic color now clears accessibility contrast in light mode: warning, danger, live, the rating gold, and both greens. Measured, not eyeballed.

Why: Trust colors only work if everyone can read them. The old green sat outside the brand's palette and under the contrast bar; the new one passes both tests.

Small things that respect you

FeatureFix
  • "Search this area" actually searches now: it scopes the map and the list to what you're looking at, with one tap back out.
  • The notification dot only appears when there's plausibly something new, not always.
  • Add any show to your calendar in one tap. Recurring shows roll themselves forward to next week.
  • Share a check-in as a printed ticket image, drawn in the poster language, ready for a story.

Why: Dead buttons and fake urgency are small lies, and small lies read loudest in a new app. Every control should do what it looks like it does.

July 13, 2026

The artist is here, and you can see it

Feature
  • Artists go live when they arrive at their own show, under the same time and distance rules fans face.
  • Fans see "Artist is on site" on the map pin, in the results list, on the feed card, and on the show page. It outranks the clock: the artist saying "I'm here" beats "it should be happening".
  • Check-ins only count at the show: they open 30 minutes before, close when it ends, and want you near the venue.
  • You can't check into your own show, and the sample catalog's numbers came down to honest street scale.

Why: Verified attendance is the promise ARND makes to musicians, and the map's promise to fans is that a live pin means live music. Both sides now prove it: fans prove they came, artists prove they showed.

Four screens, sharpened

DesignFix
  • The show page has one clear primary action per zone, and the review button is visible in dark mode everywhere (it was black on black).
  • Sheets stop stretching across the whole window on desktop.
  • The map opens with the results list showing, and tapping a row goes straight to the show.
  • The feed speaks the map's filter language, the "Happening now" banner can be dismissed for the day, the header got tighter, and the greeting finally matches the time of day.

Why: A screenshot-by-screenshot review pass: consistency between the two discovery surfaces, honest color hierarchy, and desktop that looks intentional instead of stretched.

July 12, 2026

The map tells you what's worth walking to

FeatureDesign
  • Every pin wears its genre's color and one state: live pulses coral, starting soon glows amber, trending carries a flame, brand new says so.
  • The filter pills actually filter: Live now, Genre, Tonight, and Free drive the pins and the results together.
  • A results sheet lists what's around you, sortable by Trending or Nearby, with real distances.

Why: The old map tabs set a highlight and did nothing. A map you trust has to answer one question at a glance: what's happening near me right now, and is it worth the walk.

A first open that feels finished

FixDesign
  • The library shows a loading shimmer instead of flashing "empty" at people who have saved shows.
  • Guests get a real path to creating an account instead of a dead end on their own profile.
  • Muted text passes accessibility contrast in every theme, keyboard users get a visible focus ring on the web, animations respect reduce-motion, and every control announces itself to screen readers.

Why: First opens decide everything: a musician we onboard in person, or a reviewer, should never see a false empty state, an unreadable caption, or a dead end.

July 10, 2026

Every show gets its own poster, generated from its name

DesignFeature
  • Retired the stock photos. Each show now renders a procedural banner: its own title set in bold type on colored shapes, in ARND's poster language.
  • Eight looks rotate deterministically (a show always looks the same): type blocks, signage tags, stickers, poster grid, classic, minimal, black and white.
  • New City Streets family: the quarter-circle logo piece tiled into winding roads, a map of the city. The show page hero wears it in the genre's color.
  • Added a vibrant expanded palette behind it all; bellflower stays the one brand accent.

Why: Stock photos read generic and off-brand. Generating the poster from the show's own name (the way Partiful does) makes every gig feel designed, and the streets pattern ties it back to what ARND is: performers on the streets of a city, drawn in our own logo geometry.

July 9, 2026

Musicians can claim their spot before launch

Feature
  • New page on the site, arnd-alpha.vercel.app/artists: local musicians apply in two minutes and we build their ARND profile for day one.
  • A live preview shows your future artist page taking shape as you type, in your genre's colors.
  • Applications are stored for real now (so is the fan waitlist), and they map one-to-one onto app profiles at launch.

Why: We onboard musicians in person and the app isn't public yet. The site can start the relationship today: collect the exact fields an artist profile needs, show people we sweat their presentation, and hand every application straight to the app when it opens.

July 7, 2026

Switch modes, edit your shows, and a real inbox

FeatureFix
  • You can now switch between Music Enthusiast, Performer, and Talent Seeker anytime from Profile, How you use ARND. Your account and history stay put.
  • Listed a show? You can edit every detail or cancel it now, from an Edit button on the show, using the same form you created it with.
  • The bell in the feed opens a real notifications inbox: new shows from artists you follow, live sets near you, tips, and badges.
  • Fixed the last of the amber: Edit Profile, the artist avatar ring, and other themed screens are bellflower now.
  • Removed a Rate ARND row that did nothing.

Why: Mapping the whole app on one page showed the gaps: no way to change how you use ARND, no way to fix a show after posting, and a bell that led nowhere. These close the dead-ends. The amber came from a second color system quietly overriding the brand blue; one token fixed every screen at once.

July 6, 2026

One sign-up flow, one character

Design
  • Every onboarding step now wears the same face as the artist setup: a centered title with a Step X of 3 progress bar, big rounded headings, and one bellflower button.
  • Fans pick genres from the exact same chips artists tag their shows with, so your taste maps to real shows (no more separate rainbow list).
  • Retired a stray white-on-dark card and an emoji icon from the genre step.

Why: The artist setup felt considered and the fan flow didn't. Sharing one chrome and one genre picker makes the whole start-up experience feel like one product, and ties fan taste to the tags artists actually use.

July 4, 2026

A show page with poster energy, and a map that fits the mood

DesignFix
  • The show page picks up the poster voice: playful display headings and a tilted gold rating sticker.
  • The map now matches your theme, a clean light map by day and a dark one at night, with modern dot pins instead of the old teardrop on a glaring white map.
  • Fixed the tip button sitting shorter than Get directions in the bottom bar.
  • Tip and review prompts show a quick inline message instead of doing nothing on web.
  • Added a one-tap 'live sets around you' card to the home feed that opens the map.

Why: Small misalignments and a jarring white map break the spell. The poster language and a theme-matched map make the whole thing feel considered, and the home card gives a first-time visitor one obvious thing to do.

No more white box around the icon

Fix
  • The app icon and splash now have truly transparent corners, so the rounded mark sits cleanly on a dark browser tab instead of on a little white square.

Why: The icon was rasterized on a white background, which leaked into the rounded corners. Now it's exported with real transparency.

Your genres, your tags, everywhere

FeatureFix
  • Listing a show now takes multiple genres plus your own custom tags, same as artist setup.
  • Tags you've used anywhere come back as one-tap suggestions, the app remembers your vocabulary per account.
  • Fans can add their own taste tags during preferences, and search now filters by several genres at once and matches custom tags.
  • Fixed: your own shows could vanish from the feed and search on a fresh app start.

Why: Customization is the point of ARND, and it only works if it's the same everywhere: one picker, one tag memory, one behavior across artist setup, listing shows, fan preferences, and search.

Badges you mint, rings you chase

Design
  • Achievement badges are now collectible seals: earn any tier and the badge becomes a scalloped stamp in its own color.
  • A progress ring wraps each seal showing how close you are to the next tier, replacing the plain progress bar.

Why: The seal makes an earned badge feel minted and worth screenshotting; the ring keeps it alive by always showing the next goal. Collectible energy and momentum in one glyph.

Proof you were there, and there early

Feature
  • New Achievements board (Profile, Your supporter status): badges for shows attended, neighborhoods explored, genres heard, artists you tipped, and rising acts you backed while they were still small.
  • Each badge tiers up as you show up more, with a progress bar to the next tier.
  • Your supporter stats now headline your profile.

Why: Being there in person, early, and often should count for something. This turns real-world support into earned status, the way Strava does for runs, and quietly rewards the behaviors the whole scene runs on: showing up, exploring the city, and backing small artists first.

July 3, 2026

Sharper icon at a glance

Design
  • Reworked the app icon to four bolder waveform bars, thicker and taller, so it stays crisp at browser-tab size.

Why: The five thin bars blurred together as a favicon. Fewer, heavier bars read instantly small, the way the best app icons do.

A waveform to call our own

Design
  • New app icon and favicon: a minimal white waveform on the brand blue, on iOS, Android, web, and the marketing site.
  • Locked the brand blue to its final shade (#504BF1) across every surface.

Why: The old map-pin mark read generic and the blue was still a placeholder. A waveform says "live sound" at a glance and holds up at favicon size; fixing the exact hex means every screen now shares one deliberate color.

Address by area, not by doorstep

Feature
  • "Where you perform" now autocompletes real places from a map service and only ever suggests an area or neighborhood, never a house number.
  • A privacy note on the field, plus a warning if you type a specific street address.

Why: A performer's home address should never end up on a public profile. Suggesting areas (and nudging away from exact addresses) keeps artists findable without exposing where they live. The fuller "store precise privately, show only the area" pattern, like Airbnb, lands with the backend.

Safer tags, cleaner inputs

FeatureFix
  • Custom tags are checked before they post: profanity, links, contact info, and stray symbols get a friendly heads-up instead of going public.
  • Fixed the harsh blue focus box on the artist form; inputs now show a soft accent border instead of the browser default.
  • Cleared the last amber callout boxes on the artist, venue, and profile pages.

Why: Tags are public, so they need a basic safety net, a fuller moderation pass (including off-topic detection) comes with the backend. And a focus ring that looks like a raw browser default makes a page feel broken.

The logo lands, and the lists come alive

DesignFix
  • The arnd mark is now the app icon, favicon, and splash, on iOS, Android, web, and the marketing site.
  • Library, Search, and the feed's artist cards animate in with a gentle stagger; every tappable card uses the same spring.
  • Fixed the Profile page clipping the Edit button under the hero.
  • Swept out the last stray oranges: a rating star, a grid chip, scout badges, the Android icon background.

Why: Small breaks in polish, a clipped button, a leftover orange star, an old favicon, are what make software feel unfinished. Motion is gated behind Reduce Motion so it never gets in the way.

Bellflower blue, everywhere the orange was

Design
  • The whole app moved off amber to a bellflower periwinkle-blue: wordmark, buttons, active tabs, map pins, loading and error screens, the onboarding intro, and the marketing site.
  • The time-of-day ambiance cooled to match, so the app no longer washes orange during the day.
  • Star ratings stay gold and warning states stay amber; those aren't brand color.

Why: The original design spec called for a blue primary, but the build had drifted to amber and every surface read that one token. Blue is the brand identity we wanted. Because it's a single design token, the exact shade is a one-line change if we want to fine-tune it.

July 2, 2026

The changelog, in your pocket

Feature
  • This screen: every update with its reasoning, right in the app.
  • The same entries live on the website at /changelog.

Why: Transparency about what changed and why shouldn't require leaving the app.

Artist setup you can't get stuck in, and pages in your own words

FixFeature
  • Artist setup no longer fails silently: if something's missing, the form tells you right above the button.
  • Genres are multi-select now. Pick as many as fit; the first one suggests your page's vibe.
  • Custom tags: describe your act in your own words (lo-fi, wedding sets, K-indie). They show on your profile.
  • Typing no longer zooms the screen on iPhone.

Why: Validation messages used a native alert that never renders on web, so a missed field looked like a broken app. And a platform for artists can't force every act into one genre box; customization is the point.

Check-ins worth screenshotting

Design
  • Checking in bursts confetti around a ticket with a stamped CHECKED IN and the show's name.
  • Empty states, the artist promo, and the performer pitch picked up the poster language: stickers, tilts, big type.
  • Artist pages stamp their verified attendance count in ink.

Why: Proof of attendance is the emotional core of ARND. The moment you earn it should feel earned. Reduce Motion skips the confetti; screen readers skip the decoration.

July 1, 2026

Gig posters, not gray cards

Design
  • Every gig on the venue board is a poster in its genre's color: display type, a cropped instrument watermark, a tilted price sticker, a dashed ticket-stub date.
  • Thin decorative accent bars removed app-wide.

Why: The gray-card-with-accent-strip look reads as template output. Our reference points commit to color: Spotify, Le Festif!, Davie Studios, Jacob Collier.

Performer vibes

Feature
  • Artists pick a vibe (brass, strings, vocal, keys, percussion, electronic, folk, pop) and their pages wear it: hero wash, chip, follow button.
  • Suggested from genre, one tap to change.

Why: A trumpeter's page shouldn't look like a DJ's. Identity is a benefit performers actually feel.

Onboarding you can run on a sidewalk

FeatureFix
  • "Performing? Get on the map" on the welcome screen opens a benefits-first pitch, then a two-minute setup with a skippable last step and a real payoff screen.
  • Your shows sit on your dashboard with live RSVP counts.
  • Fixed: fresh signups now save their artist profile without an app restart; new shows honestly start at 0 RSVPs.

Why: We onboard musicians in person. The pitch has to land in sixty seconds, and the first number an artist sees can't be invented.

June 29, 2026

App Store readiness

InfraFix
  • Report and block on reviews, honest privacy screen, privacy manifest, build and submit config, tests and CI on every push.
  • The website's Privacy Policy and Terms are what the app links to.

Why: The fastest way through review is having nothing to hide: controls that do what they say, and labels that match behavior.

June 27, 2026

Feature flags for every big swing

Infra
  • The redesigned feed, artist page, and show page each sit behind a flag. Any surface can fall back to the classic version on its own.

Why: Big design changes shouldn't be one-way doors. One branch, both versions, per-surface kill switches.