What\u2019s new

Changelog

Everything we\u2019ve shipped to CampSquad. We\u2019re in beta and publishing most weeks — share feedback at hello@campsquad.app.

  1. ·🔧 Improved

    Setting up now asks which city you’re in

    • If you signed up with Google, we never asked where you live — that question is only on the email sign-up form, and Google sign-in skips it entirely. So “camps near you” had nothing to measure from, and suggestions couldn’t tell an activity down the road from one an hour away.
    • Setup now asks once, on the last step, and only if we don’t already have it. Nothing changes for anyone who picked a city when they signed up.
    • You can change it any time from your profile.
  2. ·🐛 Fixed

    When you say who runs an activity, we listen

    • If you added an activity and told us who runs it, we ignored that. A family added “Hebrew school” and typed “Temple Sinai” as the provider, and we attached both their children to a synagogue’s programme in Napa — an hour away from the Oakland one they meant. The name of the activity matched perfectly, so it went to the top of the list, and nothing checked the name they had just given us.
    • Now, if you name an organisation and the listing we found belongs to a different one, we don’t attach it. We say so, and your activity saves as your own instead. Naming a person still works exactly as before — “Coach Kristi” is who runs it, not an argument that the listing is wrong.
    • Suggestions also tell you how far away they are now, when we know where you are. “Napa” only warns you if you happen to know the geography; “34 mi away” warns anyone. Anything more than about 25 miles is pushed below what’s closer.
    • Temple Sinai in Oakland was listed under the name of its summer camp, so searching for the temple found nothing at all. It’s now listed under its own name, with Camp Kesher as one of its programmes.
  3. ·🐛 Fixed

    Two fixes on the school-year grid and activity cards

    • On the Squad page’s school-year grid, choosing which of your kids to add a friend under opened a menu that appeared behind the grid, half hidden. It now sits on top where you can read it.
    • Activity cards now say whether each one is Shared or Private — whether families in your squad can see it. That was already true of every activity and already decided which ones could be shared with your squad; the card just never told you which it was.
  4. ·🔧 Improved

    Activities that haven’t started yet now say so

    • Add a league that starts next month and its card read “Every Wednesday · Sep 16 – Nov 18”, with nothing on this week’s schedule. The dates were right there, but it was easy to look at an empty week and think the activity had been lost.
    • Those cards now carry a “⏳ Starts Sep 16” badge until the first session comes around, so an empty week reads as “not yet” instead of “missing”.
  5. ·🔧 Improved

    Less scrolling to the things you came for

    • “What your squad is doing” sat at the top of the activities page as a wall of boxes — four of them already pushed the filters and the first listing off the screen, and it could show eight. It is one line per activity now: what it is, who runs it, when, and which family. The three most popular show, with a “Show more” for the rest. Same activities, same one tap to add one for your own kid, about a third of the height.
    • Your dashboard opened with two rows of housekeeping — a sentence explaining your invite link, sitting next to buttons that already said “Copy link” and “Share”. The sentence is gone and the buttons moved up alongside this week’s numbers, so the page starts with your kids.
    • Those buttons were also three different shapes and sizes in the same row, and the loudest one on the page was “Share” — in the strip meant to be the quiet reminder your link exists. They match now, and none of them shouts.
    • “Add a child” was a small link tucked in the corner above your kids. It is a card at the end of their row instead, the same size as the kids themselves — easier to find, and it fills the gap that sat there when you have fewer kids than the row has space for.
  6. ·🐛 Fixed

    Connecting with another family starts from your dashboard now

    • Your dashboard showed your invite link and nothing else. Sending someone a link and finding someone who is already on CampSquad are different things, and only the first one was possible without leaving the page you land on. There is now a “Find families” button next to the invite link — search by name and connect, without going anywhere.
    • The “Invite Friends” button on your squad card did nothing when clicked. Not the wrong place — nothing at all. It now goes to the page that actually does the job: search for a family, copy your invite link, or show a QR code for someone to scan.
    • If your family predates invite links and does not have one, the dashboard used to show you no way to connect whatsoever. Searching for someone already here never needed a link, so that is offered instead.
  7. ·🐛 Fixed

    Your Schedule shows your kids, and only your kids

    • Activities shared by families you are connected with were appearing in “Your Schedule” on your dashboard. Worse, in the week view they were drawn in your own child’s colour and labelled with your own child’s name — so another family’s Saturday bowling league looked like something your kid had been signed up for, and one activity belonging to two of their children read as your child’s name twice.
    • Nothing was ever added to your family. Those activities stayed with the family that created them the whole time, and the remove button on those cards could not have deleted anything — it was only ever labelled wrong.
    • That section now contains your kids’ activities and nothing else, which is what its name says and what its filters imply. You can still see what families in your squad have shared on the Squad page, which is the place built for coordinating across families.
  8. ·🔧 Improved

    The school-year grid caught up with the camp grid

    • You could star a friend in the camps grid to add them to one of your kids’ squads. In the school-year grid you could not — there was no star at all, on the half of the year this planner is actually built around. The same star is now on every friend’s row there, and it behaves identically: tap it on one of your kids’ tabs and it just toggles; on “Everyone”, with more than one kid of your own, it asks which of them you mean.
    • Adding an activity from that grid is possible again too. There was a prompt to add one, but only while the grid was completely empty — the moment anyone in your squad added a single class it vanished, taking the only “add” button on the page with it. It now stays, as one quiet line above the grid, and it sits above rather than below so you are not scrolling past everyone’s empty week to reach it.
  9. ·✨ New

    Tutu School — every Bay Area studio, with the days and times they run

    • Tutu School teaches ballet to very young children, from 6 months up to 8 years. All 22 of their Bay Area studios are now listed, across 20 cities — Oakland, Berkeley, Alameda, Walnut Creek, two in San Francisco, Larkspur, Daly City, San Bruno, Burlingame, Belmont, Redwood City, Union City, Hercules, Brentwood, Pleasanton, San Ramon, Sunnyvale, Milpitas, Morgan Hill and three around San Jose.
    • Each studio lists the divisions it genuinely runs — Baby Ballet, Tutu Toddlers, Exploring Ballet and Primary Ballet Prep — with the days and the class times for that studio. Those differ a lot: Primary Ballet Prep runs Monday, Thursday, Friday and Sunday in Oakland, but six days a week in Walnut Creek. So these classes land on the right day in your weekly planner, at the right time.
    • Where a division runs at one time on each day it meets, you get the times day by day — “Monday · 6:15 – 7:00 PM”. Where it runs several times on the same day, which is common here, every one of those times is written out on the listing instead. Ballet at 9:30 in the morning and again at 5:15 in the evening is a real choice, and picking one of them for you would have hidden the other.
    • Eleven of the 22 studios show Baby Ballet on their website menu but have no Baby Ballet class on the timetable, so we have not listed one for them. We would rather show you nothing than a class you cannot book.
    • We have not put a price on these. Tutu School does not publish tuition — it says only that membership is billed on the 1st of each month — so rather than guess, the listings send you to their registration page. Classes are 45 minutes each.
  10. ·🔧 Improved

    Your invite link is always on your dashboard now

    • The link that lets another family join your squad showed up on your dashboard only until you had five families connected — then it disappeared for good. That is backwards: the people most likely to be asked “how do I find you on here?” are the ones already using it.
    • If your squad is still small you get the same banner as before. Once it is established, the link stays put as one quiet line with Copy and Share — there when you want it, not nagging you when you do not.
  11. ·🐛 Fixed

    Finding other families is one tap again

    • The page for finding families — search by name, share your own invite link, or show a QR code for someone to scan — had become unreachable. Nothing linked to it. The only way in was a small button that appeared solely when you were looking at one child’s tab, so on the main Squad view there was no way to get there at all.
    • “Find families” is now a permanent button on your Squad page, next to Invite. The buttons in Settings work too — they were all pointing at the Squad page instead of the find page, and the “Invite friend” one led nowhere in particular.
    • Inviting someone by email and finding a family already on CampSquad are different things, and we had merged them into one button. If you both already use CampSquad, neither of you should have to type an email address to connect.
  12. ·🔧 Improved

    The day and time were in the text — now they are on the card

    • When we read a provider’s page and found something like “Tuesdays 3:30–4:30 PM”, we had nowhere to record it, so it went into the description as a sentence. It looked fine to read and it was useless to everything else — those classes could not appear on a weekday in your planner, and their cards said “Dates TBD” and “See website for times” while the times sat right there in the paragraph below.
    • We can now store a weekly day and time properly, and we have gone back over what was already listed: 35 more programmes now carry a weekday, and 127 carry a start and end time. Oakland Hills Tennis Club’s four junior classes, for one, now show Tuesday and Thursday afternoons with their real times.
    • For a weekly class the date chip used to read “Dates TBD”, which looks like we are missing something. These classes have no start and end dates because they do not have any — they just run every week. That chip now says “Runs weekly”, and the schedule sentence no longer repeats itself in the description underneath.
    • We also corrected 78 programmes that were filed under summer while plainly describing a fall or after-school term. That is what decides whether something is shown as out of season, so they were being pushed down the list at exactly the time of year you would be looking for them.
  13. ·🐛 Fixed

    Fall classes were labelled “Summer Camp”

    • Three after-school tennis classes at Oakland Hills Tennis Club were badged “Summer Camp” on their cards — while their own descriptions started “Fall after-school tennis program”. They were not alone: three quarters of everything we list had no kind recorded against it, and every one of those was shown as a summer camp by default.
    • A listing now takes its label from what it actually says. Those three read “After School”, and across the catalogue about 425 listings picked up an accurate label — classes, after-school programmes, clinics and leagues that had all been showing as camps.
    • And where we genuinely cannot tell what something is, we now say nothing instead of guessing “Summer Camp”. That was the case for around 330 listings that never mention a camp anywhere. A blank space is honest; a wrong label sends you to the wrong thing in the wrong season.
  14. ·🐛 Fixed

    A paid listing can no longer outrank a better match

    • Providers can pay for better placement. That is fine and we say so — but the boost was being mixed into the search score itself, which meant a paid listing could beat a genuinely better match outright rather than just winning a tie.
    • It showed. Searching “after school spanish class” put an after-school padel clinic first, ahead of every Spanish programme we list, because one word of its name matched and it had paid placement. The same thing happened on “after school program” and “after school sports”.
    • Paid placement no longer moves a result up the list. It now only settles the order between results that match you equally well — the same rule the browse page has followed for a while. Where we do promote a listing into a top slot, it carries a “Sponsored” label, as it did before.
    • Nothing was removed from anyone’s results, and the provider in question still comes up first when you actually search for what it does.
  15. ·🔧 Improved

    Search pays attention to the word that actually matters

    • Every word you typed used to count the same. So searching “after school spanish class” put after-school programs of every kind first — BMX, cooking, soccer — and the Spanish ones were nowhere near the top. “After” and “school” describe half the catalogue; “Spanish” was the only word narrowing anything, and it was getting outvoted.
    • Now the rarer a word is across everything we list, the more weight it carries. Type “after school spanish class” and the Spanish programs come up, because “Spanish” counts for more than two words that match almost everything.
    • Searching for one word is sharper too. A class called “Red Ball Beginners” at a tennis club used to look exactly as much like a tennis result as one actually called “Tennis Clinics”. We now go on what a class is called first, and where it is held second — so the things named for what you searched come first, and the rest of that club’s classes follow behind.
    • Nothing disappeared from your results — this only changes the order they arrive in.
  16. ·🐛 Fixed

    Search works when you type the way you talk

    • Searching for “oakland hills tennis club junior tennis program” found nothing — while Oakland Hills Tennis Club was listed the whole time. Searching “Oakland Hills Tennis Club” found it. Every extra word you typed made the search worse, which is the opposite of how searching should feel.
    • The cause: a search only counted if every single word matched. “Junior” and “program” are not in the club’s name, and either one on its own was enough to hide it from you.
    • Now a place turns up when most of what you typed matches it, and the closest match comes first. The words that describe what you are after — “program”, “class”, “lesson” — no longer have to appear in a business’s name for you to find it.
  17. ·✨ New

    Can’t find a place? Add it yourself

    • When a search turned up nothing, all we said was “try a different search”. But you are the one who knows the club your kid goes to — so if we are missing it, there is now a box right there to tell us. It fills in what you searched for; add a link if you have one and that is it.
    • If we already have the place under a name you did not think to search for, we will show you that instead of taking a duplicate. And if something similar is already listed, we will ask whether that is the one before adding a second.
    • Give us the website and we will read it while you wait — pulling out the classes they run, the days, and the ages — so you do not have to type any of that in. We will tell you what we found.
    • Everything you send gets checked by a person before it goes live.
  18. ·🔧 Improved

    Listing on CampSquad is free, and the pages now say so

    • Our pages for providers said we take a 10% commission on every enrollment that comes through CampSquad, invoiced monthly. We have never invoiced anyone. It described a billing arrangement that does not exist, to people deciding whether to trust us with their listing.
    • A basic listing is free and stays free. There are optional paid tiers for better placement, and that is the whole of it — no commission, no cut of your enrollments, nothing owed when a family signs up.
  19. ·🔧 Improved

    “For Camps” is now “For Providers”

    • The page where organisations sign up was called For Camps, and it addressed everyone who reads it as a camp director. Most of the places on CampSquad are not camps — they are gyms, dance studios, martial arts schools, swim clubs, music teachers and parks & rec departments running classes all year.
    • It now lives at /for-providers and talks about programs rather than camps. The old address still works and sends you to the new one.
    • The About page had drifted too: it promised "100+ camps and activities" when the catalogue holds well over nine hundred providers, and its "List your camp" button led to a page that no longer existed. Both fixed, and the number now comes from the live catalogue so it cannot go stale again.
  20. ·🐛 Fixed

    Help no longer points at a section that was renamed

    • Several Help answers told you to look for "This Summer at a Glance" on your dashboard. That section has been called "Your Schedule" for a while, and the year-round list is now "Other activities", so the instructions sent people hunting for headings that were not there.
  21. ·🔧 Improved

    Browse stops showing camps that are already over

    • On August 20, the top of Browse was a wall of summer camps ending August 21. They passed the "has it finished?" check on a technicality — they had not finished yet — but no family can enrol a child in a camp that ends tomorrow.
    • A program now needs at least a week of runway left to count as something you can act on. Twenty-six listings moved out of the way, and what is left at the top is the after-school classes, leagues and clubs that actually start in September.
    • The rule is about runway, not about summer: the same check leaves next June’s camps alone when you go looking for them in the spring.
  22. ·🔧 Improved

    Every activity card is the same shape now

    • Cards from providers with a photo were much taller than cards without one, so rows in Browse came out ragged with holes underneath the shorter ones.
    • Every card now has a picture area the same size — the provider’s own photo where there is one, a CampSquad placeholder where there is not — and cards fill their row properly.
  23. ·🔧 Improved

    The homepage describes what CampSquad is for

    • The homepage led with "See where your kids’ friends are, any day of the week." Read by a parent who has never heard of us, that is a sentence about watching other people’s children, and it buried the part families actually use: one schedule holding every class, practice, club, camp and sign-up date.
    • It now leads with the schedule. Seeing other families’ plans comes second, described the way it actually works — you only ever see what another parent has chosen to share with you, and they only ever see what you have chosen to share with them.
    • Importing your kids’ activities from Google Calendar is on the homepage now too. It was already the fastest way to fill in a schedule and it was not mentioned anywhere a new family would look.
  24. ·🔧 Improved

    Squad requests are on the Squad page now

    • When another family asked to join your squad, the only place to say yes was Settings → Squad. Four taps, through a page about notification preferences, to answer a friend.
    • Requests now sit at the top of your Squad page — the family’s name, when they asked, and Accept or Decline. Accepting drops their kids straight into the grid below without a reload. Invitations you have sent and are still waiting on show underneath, with a way to cancel.
    • Settings keeps the part that genuinely belongs there: your squad roster, and removing a family you no longer want to share plans with.
  25. ·🔧 Improved

    A shorter menu on your phone

    • The menu had grown to fourteen rows, and the word “Squad” appeared in three of them pointing at three different places. Hard to navigate is the polite version.
    • “My Profile” is now “My Family” — it was always your family’s page, with your kids, your co-parents, and the profile your squad sees. “My Kids” came out as its own row because My Family already opens straight onto your kids. “Invite friends” came out because the Squad page has an Invite button sitting right there on it.
    • Nothing was removed from the app — every page is still one tap from where you would look for it.
  26. ·🐛 Fixed

    Inviting a friend no longer says “this summer”

    • Sharing your invite link opened a message that read “See where our kids are going this summer.” Summer is over, and CampSquad is not a summer-only app any more — the invite was describing a product we stopped being.
    • The invite now says camps, classes, and activities all year, and reads the same in August as it does in February. The page your friend lands on was written the same way and has been updated to match: it lists what the squad has coming up rather than what it is doing “this summer.”
  27. ·✨ New

    Eighty-one more activities now show which day they run

    • The Bay Area providers we added yesterday came with descriptions rather than schedules — “weekly rehearsals Mondays 4:30–7:30pm” written out in a sentence, which is fine to read and useless to a calendar.
    • We have pulled the day out of those sentences where they say one. Eighty-one more activities now appear when you browse, and they carry the day they actually meet — fifteen of them the time as well. Kendo on Tuesdays, chess on Saturday afternoons, youth orchestra on Monday evenings.
    • Where a description did not say, we left it blank rather than guessing. Six were dropped by hand because the hours they listed were when the building is open, not when a class meets — a Tuesday you could plan around is worth more than a Tuesday that turns out to be the front door being unlocked.
  28. ·🐛 Fixed

    Weekly classes were missing from the school-year grid

    • If you signed your kid up for a class through CampSquad, the day it runs on sometimes lived only in the session’s name — “Tue 5:15pm with Ariel” — and nowhere the grid could read. Those classes were left off your week entirely, even though we knew when they were.
    • We now read the day out of the session name when it is not recorded anywhere else, so a Tuesday class lands on Tuesday.
    • We are deliberately careful about this: a class only moves onto a day when the name says so unambiguously. “Sunset Camp” does not become Sunday. If we cannot tell, the class stays off the grid rather than landing on the wrong day.
    • Separately, activities whose days were stored in calendar shorthand were being dropped by the same grid. That is the same problem we fixed on camp listings in the summer — it turned out to be in a second place too.
  29. ·🔒 Privacy

    A private activity could have appeared in your friends’ weekly email

    • Activities you keep private — including anything brought in from your Google Calendar, which arrives private by default — are hidden from your squad’s schedule. The weekly email never got that rule. It listed everything your kids had joined that week, private or not.
    • Nothing of yours was ever meant to be in there. The email now shows only activities you have explicitly made public, the same ones your friends can already see on the squad page.
    • We found this while testing a change to the same email, before it had gone out with anything private in it.
  30. ·🐛 Fixed

    The weekly email now knows what to say when your squad is quiet

    • The weekly email only went out when there was fresh squad activity or something starting in the next fortnight. If neither was true it sent nothing at all — so the families most worth hearing from heard from us least, which is exactly backwards.
    • When there is nothing to report, it now says so, once a month at most, and points you at adding an activity. It only goes to people who have actually used CampSquad, never to an address that has never opened it.
    • It was also missing activities already under way. A class running from January to December counted as neither upcoming nor current, so a term-long weekly class never appeared. Now anything that has not finished shows up.
    • Cancelled activities were being listed alongside real ones. They are not any more.
  31. ·🐛 Fixed

    Your squad page said 20 families in one place and 16 in another

    • Both numbers were right and neither said what it meant. The heading counts everyone you are connected to. The filter underneath counts the families who have actually added a child, because those are the only ones with a row in the schedule.
    • The filter now says which it is: “16 families with kids · 4 haven’t added any yet”. If everyone in your squad has added their kids, it reads exactly as it did before.
    • Those four families were invisible on the page — not in the grid, not in the filter, with nothing to say why. They are still not in the grid, since there is nothing of theirs to show, but at least you can see they exist.
  32. ·🐛 Fixed

    Your squad page was showing you a summer that had already ended

    • The Friends Overlap panel at the top of your squad page was listing camps from June — in the middle of August, in the present tense, as though your kids were about to go. It was doing the same thing to the “most popular” list underneath it.
    • It now only counts activities that have not finished yet, whatever time of year it is. A weekly class that runs from January to December counts while it is running; it used to be left out for having started before the summer.
    • When none of the families you are connected to have anything coming up, the panel says so plainly, instead of quietly filling the space with things everybody already did.
    • The panel is also about a third of its old height. Friends are listed as names side by side rather than a sentence each, so the schedule grid you came for is not pushed off the screen.
    • And “most kids going” now means kids from other families. If you have two children in the same weekly class, that used to be enough to list it back to you as something two kids go to — which you knew, because you signed both of them up.
  33. ·🔧 Improved

    The activities list stops leading with summer camps in September

    • School is back, but the activities list was still opening with summer camps — some of them already finished. That is the wrong answer for a parent looking for something their kid can start this term.
    • Things that are actually running now come first. Camps sink during the school year and come back up in the spring, and anything that has already ended drops to the bottom.
    • One provider can no longer take several of the top spots in a row. Previously two nearly identical clinics from the same place filled the opening of the list and pushed every after-school class out of sight. Nothing was removed — the second one just appears a little further down.
    • Adding an activity is now the main button on each card, and the full listing is one tap away rather than the other way round.
    • Searching does the same thing. A search for “soccer” in September was opening with camps that finished in August; those now sit at the bottom. If you search for a camp by name you will still find it exactly where you expect — nothing is hidden, it is only reordered.
  34. ·🔧 Improved

    We know a lot more of the places your kids actually go

    • School is back, and until now adding a weekday activity meant typing the whole thing yourself. If you typed “soccer” in September you got summer camps, because summer camps were most of what we knew about.
    • We have added 433 Bay Area providers that run things during the school year — swim schools, soccer clubs, gymnastics, martial arts, chess, coding, music, dance and language schools, across twenty cities from San Francisco to Napa. They come up as suggestions while you type.
    • Picking a suggestion instead of typing it out is worth doing. When you and a friend both pick the same one, we can tell it is the same activity — which is the whole point of seeing whose kids are doing what. Two people typing “Piedmont soccer” and “Piedmont Soccer Club” look like two different activities to us.
    • You can still type anything you like. Nothing is required, and these do not appear anywhere else on the site — they only show up when you are adding an activity.
    • There is also an “Add activity” button in the top bar now. Adding something used to mean going back to your dashboard first; it is one tap from wherever you are.
    • Searching the activities page now finds these providers too. Before, a search for “chess” turned up one result when we knew about five — the others were being quietly left out because we do not yet know their class times. You will see them now, and we will fill in the times as we learn them.
    • Two things that were showing on those providers and should not have been: a “Summer Camp” tag on year-round clubs like a soccer club, and a “0 weeks available” label. Both were us guessing out loud. Where we do not know something yet, we now say nothing rather than guess wrong.
  35. ·🐛 Fixed

    Combining two records for the same family was losing things

    • Sometimes there are two records for one family — you signed up and we already had you from a camp roster, or the same address came in twice. Combining them was supposed to move everything onto the record you keep. It moved your kids, your activities, your saved camps and your squad. It did not move anything else, and everything else was deleted along with the old record: your notifications, your saved preferences, any review you had written, and — worst of it — anyone you had invited as a co-parent or caregiver.
    • Worse, for most families it did not finish at all. If you had ever browsed a camp page, the last step failed, and you were left with your things moved but both records still there.
    • It now moves everything, across all twenty places your family is referenced, and it either completes fully or does nothing. There is no in-between state any more.
  36. ·🐛 Fixed

    Two listings were showing no days at all

    • Bay Padel’s two junior clinics had their days stored the way a calendar file writes them — “TU”, “TH”, “SA” rather than “Tue”, “Thu”, “Sat”. We only understood the second form, so we quietly dropped what we couldn’t read and showed the clinics with no days on them. One of them already had a family signed up.
    • We now read both. Nothing about the listings changed — we just stopped discarding half of what was there.
    • Underneath, “which day is this” had four separate definitions in the code, which is how one of them ended up not knowing about a format the others handled. It has one now.
  37. ·🐛 Fixed

    The “weeks you overlap with” card has never worked

    • The squad page has a card meant to tell you which of your kid’s weeks line up with their friends’ — “Maya overlaps with Sofia (3 weeks)”. It asked the database for a field that lives on a different table, so the whole request failed, and a failed request came back looking exactly like “no overlaps found”. It has been showing nothing to everyone since it shipped.
    • It works now. If your kids and their friends are booked into the same weeks, you’ll see it.
    • We found this by writing something that reads our own code and checks every database question we ask against what the database actually has. That check now runs on every build, so this particular kind of silent nothing can’t happen again.
  38. ·🐛 Fixed

    Camp listings update when they change, not five minutes later

    • The camp list is cached so it loads fast. The rule was that anything changing a listing clears the cache immediately — but several things weren’t clearing it: leaving a rating, a camp upgrading its listing, a director importing programs from their website, and us merging two duplicate entries for the same camp. Those all sat up to five minutes behind.
    • Nothing was ever wrong, just briefly stale. It’s now immediate in every one of those cases.
    • Separately: the “N weeks available” count on each camp card was calculated against a list of summer weeks that had 2026’s dates typed into it by hand. It was correct all this year and would have read “0 weeks” on every card come January. It works out the weeks properly now, for any year.
  39. ·✨ New

    Import what’s already in your Google Calendar

    • If you’ve connected Google Calendar, Settings now shows the repeating events from your last few weeks — soccer on Tuesdays, piano on Thursdays — and you tick the ones that are your kids’ activities. No typing.
    • Only things that actually repeat are offered. One-off appointments and all-day events (trips, birthdays, school holidays) are left out, because a list full of those is a list you close.
    • Nothing is written to your Google Calendar. What you import is already there, so we don’t add a second copy of it — and nothing is added to CampSquad until you press the button.
  40. ·🔧 Improved

    Adding an activity stops burying the obvious answer

    • When you type an activity name, we check whether we already list it. The problem: most of what we list is summer camps, so typing “soccer” in September offered you 51 summer soccer camps and not one weekly practice — and “no, just add mine” was a small grey link in the corner, underneath all of them.
    • Now adding your own is the first option, in full size, before any listings. Anything from our catalogue that’s out of season sits below it with a “Summer camp” tag so you can see at a glance why it isn’t the one you meant.
    • Programs that already finished no longer show up as suggestions at all. A camp that ended in July was never the answer to anything.
  41. ·🐛 Fixed

    We were describing the calendar sync as more than it is

    • Our homepage said “two-way sync.” It isn’t two-way. CampSquad writes to your Google Calendar — adding an activity creates the event, changing it updates the event, deleting it removes the event — but nothing you do inside Google Calendar comes back the other way. The wording now says what actually happens, and the help page spells out which direction it goes.
    • We also claimed scheduling conflicts get flagged before you book. They don’t. That was written but never switched on, so it has never once run for anybody. The claim is gone until the feature is real.
    • Neither was deliberate, and both had been up for months. If we say the product does something, it should do it.
  42. ·✨ New

    A nudge about Google Calendar, because nobody knew it was there

    • CampSquad can sync everything you add straight to your Google Calendar. It has worked for months, and almost nobody knew — the only way to find it was to go looking in Settings.
    • Now, once you have activities on your schedule, the dashboard offers it once. Dismiss it and it stays gone for a month. It won’t interrupt you while you’re still adding things — getting your schedule in matters more than syncing an empty one.
  43. ·🔧 Improved

    You no longer have to know when the class ends

    • Adding a weekly activity used to demand a start time AND an end time before it would save. You know soccer is Tuesdays at 4; you don’t necessarily know whether it finishes at 5:00 or 5:15, and the form wouldn’t take it until you picked one.
    • End time is now optional. Leave it blank and we’ll assume an hour — you can always correct it later. One-off events and camps already worked this way; weekly activities were the odd one out, which was backwards, because they’re the ones you add most.
  44. ·🐛 Fixed

    The weekly email was missing the part you signed up for

    • Your weekly email is meant to tell you when a family in your squad signs their kid up for something. That section has never once worked — a mistake in how we looked up recent sign-ups meant it always came back empty, so the email either arrived without the news in it or didn’t arrive at all. It works now.
    • The same mistake broke "Mark as enrolled" and "Mark as planning" on an activity page — the buttons looked fine and quietly did nothing. Fixed, along with the screen that confirms a registration after you finish signing up.
    • We’ve added a check that fails our own build if we ever ask for the wrong thing this way again, because this one hid in plain sight for months.
  45. ·✨ New

    Adding something new? Send us the link

    • When you type an activity we don’t already have, we now say so — so "it’s not in there" is a fact rather than a worry — and ask one optional question: got a link to it?
    • If you have one, we read that provider’s own page to fill in their dates and prices, so the next family doesn’t have to type any of it. Skip it and your activity saves exactly as before.
    • Your entry stays private either way. The link is used to look up the provider’s public page — nothing you wrote is ever published.
  46. ·🔧 Improved

    Filters that can actually answer

    • Filters now cover where, what age, and access needs. Season, schedule, price and gender are gone — not to hide anything, but because almost nothing in the catalogue carries that information, so choosing one mostly emptied the page and made it look like nothing existed for your kid.
    • Price was the worst of them: only 28 of the 225 activities have a price listed, so filtering by it hid the 197 whose price we simply don’t know.
  47. ·🔧 Improved

    One list of things your kid can actually do

    • Browse is now a single list of activities — the class or camp itself, with the provider underneath it — instead of two lists that made you work out whether you were looking at a company or a thing to sign up for.
    • Camps that already finished are out of it. A camp that ended in July isn’t a browsing result, it’s clutter, and it was most of what you were scrolling past.
    • The sort dropdown is gone too: its top two options did the same thing, and that’s just how the list is ordered now — what’s on soonest, nearest to you.
  48. ·🔧 Improved

    Browse shows providers that actually list something

    • Most of the directory was places we know exist — a name, a city, a website — with nothing listed to sign up for. Scrolling past hundreds of those to reach the handful with real dates was the main reason browsing felt like work.
    • Browse now shows the providers who list programs. Everyone else is still here: search finds them, and their pages are unchanged — so if you know the name, you’ll still find it.
  49. ·🔧 Improved

    Browse now separates what’s on from who exists

    • The page said "535 camps". In truth 36 programs have actual dates you can sign up for; the rest of the catalogue is a directory of providers — a name, a city and a website. Counting them together made a directory look like inventory.
    • Browse now opens with "What’s on": the programs running soon, with dates and prices. Underneath, "Providers" lists everyone else, honestly labelled and counted.
    • The row of category chips is gone. It counted the directory too ("Multi-Activity (185)"), and on a phone it pushed the first real result off the screen. Search does the same job — short terms filter, full questions ask AI — and age, price, region and inclusive options are one tap away under Filters.
  50. ·🐛 Fixed

    The invite link explains itself correctly

    • Sharing your invite link said the people you sent it to would "join as Co-Parents automatically". They don’t — anyone who opens it becomes a squad friend, and joining your family (sharing kids, calendars and your dashboard) is a separate choice they make on the page.
    • The wording now matches what actually happens, which matters when you’re deciding whether to send it to a friend.
  51. ·🔧 Improved

    An empty camp season now says so

    • When nobody in your squad has booked anything for the season the camp grid is showing, you get a line saying which season it is and that it's empty — instead of a wall of "TBD" that looks like something failed to load.
    • It comes with the one button that fixes it: add a camp you've booked, and it appears there for the friends you share it with.
    • This matters most next week. Summer's last week ends on August 21, so from the 22nd the camp view moves on to winter break — which is genuinely empty until families start adding to it.
  52. ·✨ New

    We recognise the camps you already know

    • Start typing an activity and we now show you whether it's already in CampSquad — "Camp Galileo Alameda · CIT", with the dates and the city. Pick it, and yours is linked to the same listing your friends use instead of being a copy only you can see.
    • Your own days, times and privacy setting stay yours: linking shares the listing, not your schedule.
    • If it isn't one of them, say "No, it's new" and carry on — nothing is forced, and we keep a note that it's something worth adding to the directory.
  53. ·🐛 Fixed

    You can actually see the form fields now

    • Every pop-up form — adding an activity, adding a child, inviting a friend — was see-through, and the boxes you type into had no background of their own. On a phone, where the form fills the screen, the page behind it showed through and the fields were close to invisible.
    • They're solid white now, with a border you can see. The sign-up and sign-in forms got the same treatment — their field outlines were so faint you had to guess where to tap.
  54. ·✨ New

    Add a camp yourself

    • You can now add a camp by hand, the same way you add a class or a vacation: Add Activity → Multi-day → Camp, with the week it runs. Until now the form had no way to record one, so a camp you booked anywhere other than through CampSquad simply couldn't go on your calendar.
    • A camp you add shows up in its week on the squad grid, exactly like one booked through a listing — so your kid's week reads the same whether the camp came from us or not.
    • It stays private unless you choose to share it, like everything else you add.
  55. ·🐛 Fixed

    The camp view knows about winter and spring break

    • The camp grid only ever showed summer. Once summer ended it jumped to the following June, so from late August until the spring you were looking at a set of weeks ten months away — and winter break, the next time you actually need camps, had nowhere to appear.
    • It now follows the calendar: winter break once summer is over, spring break after New Year, then summer again. The grid says which one you're looking at and the dates it covers, and the School year / Camps switch still overrides it whenever the guess is wrong for your family.
    • Break dates are a sensible default — the two weeks around Christmas, the first full week of April — because districts disagree with each other every year. Per-family school dates are still on the list.
  56. ·⚡ Faster

    Browsing activities is quick now

    • Every visit to the activities page used to rebuild the whole directory from scratch — every organization, every program, every location — before it could show you anything. It now reuses that work between visits, so the page arrives without the wait.
    • Nothing about what you see changes: the same listings, the same order, the same distances from your home city. Newly published camps still appear right away.
  57. ·🐛 Fixed

    Sharing a camp actually invites someone now

    • The "Share with Squad" button on a camp page only copied the web address — nothing about it involved your squad. It now sends a link that both opens the camp and invites whoever you sent it to: if they make an account from it, the two of you are in each other's squad, the same as a normal invite link.
    • They see who sent it before they sign up, so nobody ends up connected to a family they didn't expect. And if you're not signed in, the button says "Copy link", which is all it can honestly do.
  58. ·✨ New

    Invite your squad to an activity

    • On any activity you've shared with your squad, the Manage menu now has "Invite squad to join". Pick which families to tell, and they get a notification that adds it for their kid in one tap.
    • It only appears on activities you've already made visible to your squad — inviting never changes who can see something. Anything private stays private, and stays out of the menu.
  59. ·⚡ Faster

    Browsing camps loads much faster

    • The camps page was loading every single listing at once — over 700 of them — before showing you anything. It now loads a first batch with a "Show more" button, which cuts the page size by more than half. The difference is biggest on a phone.
    • Filters and sorting still work exactly as before, instantly, across the whole catalogue — the result count still reflects everything that matches, not just what's on screen.
  60. ·🔧 Improved

    Camps now opens with what your friends are doing

    • The browse page used to start with a directory of hundreds of listings. It now starts with a short list of the activities families in your squad have actually added — the classes, coaches and practices they use — with the full directory below it.
    • Anything there can be added to your own kid in one tap, and it shows when several families do the same one.
  61. ·🐛 Fixed

    Filters that never returned anything are gone

    • The camp filters included options that could never match — every listing in the catalog carries the same value for them, so choosing one produced an empty page. That was misleading if you took it to mean nothing existed for your kid. Those options have been removed rather than left to disappoint.
  62. ·✨ New

    "My kid does this too"

    • On the squad page, tap any activity a friend has shared and you can add it to your own kid in one step. The day, time, and who runs it all come across — no retyping.
    • It saves as private to you. Sharing is a separate choice, and your friend sharing theirs doesn't share yours.
    • This only works on activities friends have chosen to make public. Anything private stays invisible.
  63. ·✨ New

    A nudge when the school year starts

    • If your schedule has camps on it but nothing for the school year, your dashboard now points that out once and offers to add a weekly class or practice. Dismiss it and it stays gone until next school year.
    • The squad page does the same thing: when the school-year view has nothing in it yet, there's a button that takes you straight to adding one instead of leaving you to hunt for it.
  64. ·✨ New

    Say who runs an activity

    • Activities you add by hand now have a "Who runs it?" field — "Coach Kristi", "Ms. Rivera", or a company name. It shows on your schedule and on the squad page for friends you share the activity with.
    • This is the part other parents actually ask about. "Tennis" doesn't tell a friend much; "Tennis with Coach Kristi" is a recommendation. It's optional, and it only reaches the friends who could already see that activity.
  65. ·✨ New

    Your squad page now works during the school year

    • The squad page only ever showed summer, as a grid of weeks — which makes sense for camps, where a kid goes to one camp per week, but not for a Tuesday class that happens every week all year. So there are two views now, and a toggle at the top to switch between them.
    • "School year" shows a Monday-to-Friday grid: who has soccer Thursday, who's free. "Camps" is the week-by-week summer grid you already know. We pick one for you based on the time of year and remember it if you switch.
    • As always, only activities you've marked public appear to friends. Anything private stays on your own dashboard.
  66. ·🔧 Improved

    Vacations live with everything else now

    • Adding a vacation used to open its own small form that only knew about whole weeks. It now uses the same form as every other activity, so a trip can start on a Wednesday and end the following Tuesday instead of being rounded to the nearest week. Your existing vacations carried over and appear on the weeks they always did.
    • One consequence worth knowing: on the squad grid, vacation chips are now read-only. To change or remove one, use the activity card on your dashboard — that way a family-wide trip is edited once instead of separately for each kid.
  67. ·🐛 Fixed

    "Family-wide" activities save properly now

    • Adding an activity for the whole family — a vacation, a trip, anything with "Family-wide" picked instead of a single kid — failed to save and showed a technical error message. It now saves and appears on every kid's schedule as one shared card, the same way an activity two kids share already looks.
  68. ·🔧 Improved

    Friend sign-up emails are now a weekly digest

    • You used to get an email every single time a family in your squad signed up for something. Now it's one weekly roundup by default. You can change this in Settings → Friend Activity Emails: a weekly digest, a daily one (only on days something actually happened), an email for every sign-up if you like knowing right away, or off entirely.
  69. ·🐛 Fixed

    Your schedule no longer jumps ahead to next summer

    • Once summer camp season ended, the dashboard skipped straight to next June — showing a dozen empty weeks ten months away and reporting "0 camps confirmed" even when the week ahead was full. The schedule now always starts from the week you're actually in and runs four months forward, so fall classes, practices, and school-year activities have somewhere to live.
  70. ·🔧 Improved

    A simpler dashboard

    • One "+ Add" button replaces the four that used to compete at the top of your schedule — adding an activity by hand, pasting a plan in plain English, importing a spreadsheet, and adding a vacation are all in one place now, each with a line explaining what it does.
    • Your schedule has a new Agenda view alongside Day and Week, showing the weeks ahead at a glance with everything on them: camps, classes, vacations, and the weeks still open.
  71. ·🐛 Fixed

    Activities shared by two kids can be edited again

    • When two of your kids do the same thing — same class, same time — we show it as one card. But editing was switched off on those cards, so fixing a time meant deleting the activity and adding it back twice. You can now edit the schedule and notes on a shared card once and it applies to every kid on it.
    • The "View Details" button on activities you added yourself led to a "page not found" error. Activities you enter by hand don't have a public page, so that button no longer appears on them.
  72. ·🔧 Improved

    East Bay Regional Parks camps better organized

    • Tilden Little Farm camps now show up correctly when families browse by location, and we fixed a display bug on Wildcat View.
  73. ·🔧 Improved

    More camps sort correctly by distance

    • Pinpointed the exact location of 25 more Bay Area camps so they show up in the right order when families browse by distance.
  74. ·🐛 Fixed

    Nike Sports Camps now correctly shown in Berkeley

    • Nike Sports Camps' Cal Tennis Camp runs at UC Berkeley's Hellman Tennis Center but was tagged Oakland in our catalog, so distance-based search was treating it as 5 miles closer for Oakland parents than it actually is. Now correctly tagged Berkeley.
  75. ·🐛 Fixed

    19 camps now show their actual city

    • 19 camps were tagged as Oakland by default but actually run in Berkeley, Alameda, Albany, Concord, or Foster City. The "near you" sort was treating these as Oakland-zero-miles for Oakland parents when they're actually a drive away. Now they show the correct city in search results and rank by real distance. Affected camps include Camp Kee Tov, Footfire Soccer, JCC East Bay, Luna Dance & Creativity, Urban Adamah, Sticky Art Lab, Ozzy's Music Academy, The Village Kids' Club, and 11 others.
  76. ·🐛 Fixed

    Cleaner city labels on 9 camps

    • Eight camp listings had garbage in their city field — paragraphs, pickup-route descriptions, full address fragments, even a Google Maps URL — making location chips and the "near you" sort show nonsense. Now display the correct city: Adventure Day Camp (Moraga), Roughing It Day Camp (Lafayette), Corner House Art Studio (Oakland), Encore Gym (Walnut Creek), Berkeley Art Studio (Berkeley), Claremont Kids' Club (Berkeley), Kids in Motion (Oakland), Bay Explorers Camp (Berkeley). One additional listing (Sea Ranch Kids Club) was removed — its venue is on the Sonoma Coast, well outside the Bay Area service area.
  77. ·🐛 Fixed

    Back button keeps your camp search

    • Clicking a camp from /camps, then hitting Back, now returns you to the same search and filter state you had — "tennis" stays in the search box, Girls/age/season chips stay applied, results stay visible. State persists per browser tab until you close it. Different sign-in accounts get separate state, so a co-parent's filters don't leak into yours.
  78. ·🐛 Fixed

    11 more duplicate camp cards consolidated

    • Catches duplicate listings whose parent org's name carried decoration that the previous rule missed — parentheticals (MOCHA), ampersands (Junior Center), or trailing qualifiers like "Camp" / "School" / "Center" (Bay Explorers, Roughing It, Pear Tree, Prospect Sierra, Redwood Day, and 4 others). Distinct sibling programs at the same orgs are unaffected — Crowden School Summer Camp, Children's Fairyland Summer Camp, JCC Kids Club Summer Camp, etc. still surface.
    • Bonus fix: two camp listings (Head Over Heels and MOCHA's Summer Camp programs) had a wrong start date of April 13 from the same retired scraper. Date now shows as TBD instead of an obviously-wrong April for a summer camp.
  79. ·🐛 Fixed

    Footfire Soccer Camp listing clarified

    • Renamed the duplicate "Footfire Soccer Camp Summer Camp" program to "Footfire Soccer Camp 2026 Summer Session" so it's clearly distinct from the year-round "Footfire Soccer Camp" program and the parent org. Search for "footfire" now shows three clean cards.
  80. ·🐛 Fixed

    More duplicate camp cards consolidated

    • When an org has both a parent listing and a generic "<Org Name> Summer Camp" program with overlapping content, search and browse now show just one card. Affects 9 orgs including Chabot Space & Science Center, Head Over Heels, Lawrence Hall of Science, Kids in Motion, and others. Specific distinct programs (Clippers FC Recreational Soccer, Oakland Zoo Safari Camp, Camp Kee Tov Day Camp) are untouched.
  81. ·🔧 Improved

    Sponsored placements on short keyword searches

    • Short keyword searches (like "dance" or "chess") now pin up to 2 premium listings at the top of results, with a clearly-labeled "Sponsored" badge so you know when a placement is paid. Closer premium camps win the pinned slot — if multiple premiums match your search, the nearer one leads. Multi-word searches are unchanged.
  82. ·🐛 Fixed

    Cleaned up garbled dates and ages on 13 camp listings

    • 13 camp programs from the retired Campwing scraper had garbled end dates (years like 2001, 2013) and impossible age ranges (like "ages 5–145") caused by a parser bug. The bad fields are now hidden instead of misrendered; one program (Junior Center of Art & Science) had its age range filled in from a sibling program. No enrollments, sessions, or click history affected.
  83. ·🔧 Improved

    Aim High summer program: clearer listing

    • Aim High's summer program page now shows a distinct title and description instead of duplicating the org card. The 4 regional cohorts (Oakland/SJ/Napa, two SF/Marin/East Bay groups, and Tahoe/Truckee) are still visible on the program page and on your dashboard, squad grid, and calendar.
  84. ·🐛 Fixed

    More duplicate camp listings removed from search

    • Follow-up to the earlier cleanup today: removed 3 more stub listings from the same scraper run that didn't fit the '<Org> Summer Camp' naming pattern — Super Soccer Stars (duplicating Soccer Stars), Chess Challenge with Berkeley Chess School (duplicating Berkeley Chess School), and Summer@CIP (Berkeley) (duplicating Summer@CIP). Searches for 'soccer' and 'chess' now show one card per camp instead of two.
  85. ·🐛 Fixed

    Removed duplicate camp listings from search and browse

    • Cleaned up 74 stub camp listings that were duplicating their parent org in search results (you'd see, e.g., 'Future Star Baseball' as both an org card AND a 'Future Star Baseball Summer Camp' program card with the same description). These were leftovers from an early scraper run and added no real information beyond what the org card already shows.
  86. ·🔧 Improved

    Short keyword searches put nearby camps first

    • If you search for a single subject — "tennis", "jiu jitsu", "chess" — results now sort by distance from your family's city first, with match strength as the tiebreaker. Multi-word searches ("summer art camp", "rock climbing gym") still lead with match strength so a precise phrase isn't outranked by something closer but less relevant.
  87. ·🔧 Improved

    Search results now favor camps near you

    • When you're signed in and your family has a city set, camp search results are re-ordered to surface closer options first — a strong match 30 miles away no longer outranks an equally good match in your own city. Relevance still leads; distance breaks ties within each relevance band.
  88. ·✨ New

    Bulk paste import for multi-kid plans

    • Paste your whole summer plan at once — 'Antonio - Galileo Jul 6-10', 'Both - Oakland Zoo Jun 1-5', one line per activity — and we'll match each row to the catalog and let you confirm before saving. Find it on the dashboard next to ✨ Easy Add and in onboarding step 4.
  89. ·🐛 Fixed

    Year-round activities: tap a status badge to change it

    • Year-round activities: tap a status badge to change it (matches This Summer at a Glance). Removed the buggy 'status' field from the notes modal — there's now exactly one way to change status.
  90. ·🔧 Improved

    Cleaned up duplicate empty state on dashboard

    • Cleaned up duplicate empty state on dashboard. Users with no kids now see the IncompleteOnboardingBanner only, instead of both a banner and a redundant welcome card.
  91. ·🔧 Improved

    Enriched orgs auto-publish on first new program

    • Internal: enriched orgs auto-publish on first new program added. Hidden orgs go visible automatically when their pipeline-applied programs land.
  92. ·🐛 Fixed

    Per-kid rows when both kids are in the same camp

    • Fixed: when both kids are in the same camp, each kid now gets their own row. You can change one kid’s status or remove one kid without affecting the other.
  93. ·🐛 Fixed

    Squad banner no longer over-counts recurring activities

    • Fixed: the squad page no longer warns “N camps haven’t been linked to specific weeks” when those activities are recurring year-round programs that don’t need session linking by design.
  94. ·🐛 Fixed

    Multi-week camp registration

    • Adding a second week of a camp for the same kid no longer overwrites the first week. You can now register one kid for multiple weeks of the same camp.
  95. ·🔧 Improved

    Camp names link to camp pages on the dashboard

    • Camp names in “This Summer at a Glance” now link directly to the camp page. Tap the name to see other weeks, sessions, and registration details.
  96. ·🐛 Fixed

    Sign-in copy cleanup

    • Cleaned up sign-in copy now that Google’s consent screen shows campsquad.app branding correctly.
  97. ·✨ New

    150+ Bay Area camps and classes added

    • Added 150+ Bay Area camps and classes to the catalog — new orgs span swim, soccer, coding, music, dance, martial arts, math, and more, covering 20+ Bay Area cities.
  98. ·🔧 Improved

    Program descriptions on camp pages

    • Program cards on camp pages now show a 1–2 line description so you can scan what each program is about without clicking in.
  99. ·🔧 Improved

    Cleaner sign-in flow

    • Cleaner sign-in: email/password is now the primary option on /login and /signup, with Google sign-in below as an alternative.
    • Added a note explaining why Google’s consent screen briefly shows ‘supabase.co’ (it’s our auth provider) so the redirect doesn’t feel suspicious.
  100. ·🔧 Improved

    Cleaner dashboard empty state + onboarding Easy Add path

    • Cleaner empty state on the dashboard — when your kids don’t have any camps yet, the Easy Add prompt is now the primary call-to-action.
    • Onboarding step 4 also offers Easy Add as an alternate path next to the popular camps grid.
  101. ·🔧 Improved

    Internal: enrichment quality scoring + auto-apply

    • Internal: enrichment script now scores extraction quality (HIGH/MEDIUM/LOW/EMPTY). Use --auto-apply to skip review for HIGH-confidence extractions. EMPTY rows auto-skipped from queue. (UI tier badges deferred — admin still reviews via the existing list/detail pages.)
  102. ·🐛 Fixed

    Admin: Enrichment Review now appears in the left sidebar

    • Admin: Enrichment Review now appears in the left sidebar.
  103. ·✨ New

    Admin: enrichment review tool

    • Admin: enrichment review tool — review staged camp data updates and apply or reject in one click. Per-op approve/reject coming later if we need it.
  104. ·⚙️ Internal

    Enrichment apply infrastructure

    • Internal: enrichment apply infrastructure complete (Phase 3 groundwork — admin UI is the next ship).
  105. ·⚙️ Internal

    Camp enrichment script writes to staging by default

    • Internal: enrich-camps.mjs now writes to staging by default (groundwork for safer bulk camp enrichment, no behavior change for live data).
  106. ·⚙️ Internal

    Enrichment queue + staging tables

    • Internal: added enrichment queue + staging tables (groundwork for safer bulk camp data updates — no behavior change yet).
  107. ·🐛 Fixed

    Welcome emails are coming back

    • The welcome-email trigger is now installed on every signup — when you confirm your email address, a branded welcome email will arrive in your inbox.
    • Heads-up: a couple of operator-side configuration steps still need to happen (deploying the email-sending function and setting credentials) before this is fully live. New signups in the next day or two might still miss the welcome email — we’ll backfill once the pipeline is end-to-end green.
    • No impact on signing in or any other email — only the post-signup welcome message was affected.
  108. ·🐛 Fixed

    Cleaner camp page program tiles

    • Cleaned up camp pages — removed duplicate location-header rows and stripped redundant addresses from location names. Camps like Galileo now show clean program names without addresses repeated in the title.
  109. ·✨ New

    Camp pages now show picks from local parents

    • Camp detail pages now render curated reviews from Bay Area parents — quick takes on pros, cons, and who each camp is best for, with a short note from the reviewer.
    • First batch is live on 17 camps from Brooke Shapiro’s Sprinkles list (ANTS Sports, Berkeley Chess, Camp Kee Tov, Camp Tawonga, Oakland Parks & Rec, Cole Arts Camp, East Bay Regional Parks, Fairyland, Firecracker Math, Galileo, Head Over Heels, Jumpin’ Gymsters, MOCHA, Oakland Zoo, Piedmont Rec, Steve & Kate’s, Trackers Earth).
    • Camps without curated reviews look the same as before — the section quietly hides itself when there’s nothing to show.
  110. ·✨ New

    Curated parent reviews — starting with Sprinkles’ picks

    • Camp pages will soon show curated reviews from local Bay Area parents — quick takes on pros, cons, who the camp is best for, and a one-line note.
    • First batch: 17 favorite camps from Brooke Shapiro (writing as "Sprinkles") — ANTS Sports, Berkeley Chess School, Camp Kee Tov, Camp Tawonga, City of Oakland Parks & Rec, Cole Arts Camp, East Bay Regional Parks, Fairyland, Firecracker Math, Galileo, Head Over Heels, Jumpin’ Gymsters, MOCHA, Oakland Zoo, Piedmont Rec, Steve & Kate’s, and Trackers Earth.
    • You won’t see these reviews on camp pages yet — that’s coming in the next update.
  111. ·🔧 Improved

    Finish onboarding later — dashboard banner reminds you

    • Onboarding now has a clear escape hatch. The "Skip" button on step 1 became "I’ll finish later →" — clicking it lands you on the dashboard with a reminder banner naming exactly what’s still pending (e.g. "Finish setting up your family — add a kid, invite a co-parent, invite friends").
    • The banner has two buttons: Continue setup (jumps you back to /onboarding) and Dismiss (hides the banner and snoozes the prompt for 7 days). After 7 days, the next /dashboard visit redirects you to /onboarding again.
    • Quietly fixes a related issue: the previous step-1 Skip wrongly stamped your account as "onboarding completed" even though you’d added zero kids — which suppressed every future onboarding nudge. Now Skip postpones, it doesn’t conclude.
    • If you’ve already finished onboarding, nothing changes for you.
  112. ·🔧 Improved

    Easier friend invites and per-kid camp adds in onboarding

    • Friend invites in onboarding now use your phone or laptop’s native share sheet (Messages, WhatsApp, Slack, Mail, etc.) — one tap and your invite link goes out with a friendly pre-written note: "Hey! I’m planning summer camps with [your family] on CampSquad. Join my squad to coordinate." If your browser doesn’t support native share, you still get Copy message + Send via email buttons.
    • Multi-kid families now get a "Who’s going?" picker when adding a popular camp during onboarding — opt one kid out of a camp that doesn’t fit instead of having to clean up later. Single-kid families don’t see the picker.
    • Final onboarding button now reads "Done →" instead of "Go to your dashboard →" — frames the camp browsing as exposure, not a commitment.
    • Friend invite step copy updated to "Invite 2 friend families" so the ask is concrete instead of vague.
  113. ·🐛 Fixed

    Onboarding setup now actually opens for new signups

    • Critical fix: the automatic redirect from /dashboard to the setup flow for unfinished signups was silently failing. The result was that families who hadn’t finished onboarding could land on /dashboard and see a stale "Welcome to CampSquad!" inline card instead of the real setup steps.
    • Now every signup that hasn’t completed onboarding gets bounced to the proper 4-step flow (Kids → Co-parent → Friends → Camps) when they visit /dashboard.
    • User-facing impact: families with incomplete onboarding from the last few weeks will land on the setup flow next time they visit, picking up wherever they left off (e.g., kids already added → starts at the co-parent step). If you finished onboarding already, nothing changes for you.
  114. ·✨ New

    Co-parent invite now lives inside onboarding

    • New signups now hit a dedicated co-parent invite step right after adding their first kid — previously this step lived on a separate page after onboarding "finished," and barely anyone got to it. Co-parent invites are the single biggest retention lift we see in the data.
    • Skipping the step shows a one-button confirmation so accidental skips don’t lose the prompt: "You can invite a co-parent later from Settings — your co-parent won’t see your family’s camps until they accept."
    • Onboarding is now four steps (Kids → Co-parent → Friends → Camps) instead of three. Step indicator at the top reflects the new flow.
    • Settings → Family members card now links to the full /profile management UI (instead of the invite-only page) so you can see existing co-parents alongside the invite form.
  115. ·🔧 Improved

    Lighter onboarding step 1 + co-parent invite from Settings

    • Onboarding now asks just name and grade for your first kid — emoji and gender become optional touches you can add anytime from your dashboard. The old form asked for too much before you’d even seen what CampSquad looks like.
    • Settings now has a "Family members" card with a one-click "Invite a co-parent" button. Previously the only Settings entry point to co-parent invites was a dashboard banner — easy to miss.
    • Heads-up: this is the first of several onboarding-rebuild commits this week. The dedicated co-parent step inside onboarding lands in the next commit; until then, the dashboard "Add co-parent" nudge banner still surfaces the prompt for new signups.
  116. ·⚙️ Internal

    Per-step onboarding tracking columns

    • No user-visible change yet — this is groundwork for the onboarding rebuild landing this week.
    • Added 4 nullable timestamp columns to families (kids_added_at, coparent_invited_at, friends_invited_at, camps_browsed_at) so we can measure which onboarding steps families complete vs. skip and improve the flow with real data.
  117. ·🐛 Fixed

    Camps now sync to Google Calendar reliably

    • Adding or updating a camp via "Add to schedule" sometimes failed to sync to Google Calendar — the event wouldn’t appear even though CampSquad saved the booking.
    • Same Vercel fire-and-forget issue we fixed for personal entries on Apr 23. Now applied to camp enrollments too — adds, status changes ("Interested" → "Registered"), Easy Add bulk imports, and the email-confirmation one-click flow.
    • All adds, status changes, and removals sync within 30 seconds.
  118. ·🐛 Fixed

    Interested camps now visible on dashboard

    • "This Summer at a Glance" was hiding camps you marked as "Interested" — only showing confirmed registrations.
    • Now all plans appear: Registered camps as solid chips, Interested as muted italic with an "Interested" pill. Matches how /squad already worked.
    • Also fixed: the section was clipped to the next 6 weeks and silently hid anything later. Now shows all 12 summer weeks so a Jul or Aug camp doesn’t fall off the bottom.
  119. ·🐛 Fixed

    Camps you added were sometimes invisible

    • When you added a camp via "Add to schedule," it was saving with an old "planned" status that the dashboard and squad grid didn’t know how to display.
    • Now all new adds use "Interested" — the correct status. Your plan is visible immediately on the dashboard and squad grid.
  120. ·✨ New

    Install CampSquad on your home screen

    • CampSquad is now a Progressive Web App. Add it to your iOS or Android home screen and launch it like a native app — full-screen, no browser chrome, with the CampSquad icon.
    • Works offline for pages you’ve already visited. Your squad plans are still there even on spotty WiFi.
    • On iPhone: tap Share → Add to Home Screen.
    • Android auto-prompts after a visit.
  121. ·✨ New

    Richer squad notifications

    • "🎉 Jace is joining Galileo Jun 8-12 — Antonio AND Avalie are both going that week!" — notifications now name the kid, the camp, and the overlap with your own kids.
    • NEW: 🔥 Squad Milestone alerts fire when a camp hits 3+ squad kids. ("Galileo Innovation Camp is filling up with your squad.")
    • Multiple squad signups to the same camp now collapse into one row with a "+N more" pill.
    • Tap any notification → marks read and jumps straight to the relevant camp or squad view.
  122. ·🔒 Privacy

    Custom Supabase domain attempted (rolled back)

    • We tried to activate auth.campsquad.app so the Google sign-in screen shows our domain instead of the Supabase project URL. Google’s OAuth is still caching the old URL — pending a Supabase support response. Rolled back safely; all sign-ins continue to work.
    • We’ll retry once Supabase confirms the fix on their end.
  123. ·🔒 Privacy

    Analytics + error tracking shipped with privacy first

    • PostHog analytics and Sentry error monitoring are now live.
    • Events and errors carry only family IDs — never your email, name, or your kids’ names.
    • Session replays mask every text input and form field by default. We see the shape of your interactions, never the content.
  124. ·🔧 Improved

    Honest marketing numbers

    • Homepage now shows real camp + program counts pulled from live data (not hardcoded hype).
    • Location-specific copy: we show "Bay Area" to Bay Area visitors and "coming soon" honestly to everyone else.
    • No more fake "1,000+ families" — we’ll update the stat when we actually hit it.
  125. ·✨ New

    Shareable invite links

    • Invite links now read like "/join/sierra-3m6k" instead of a scary UUID.
    • Friendlier to share in iMessage, email, or written on a napkin at a birthday party.
    • Old invite links still work — no broken links anywhere.
  126. ·🔧 Improved

    Cleaner camp browsing

    • Browse page: one unified list of camps and programs instead of two confusing tabs.
    • Card actions flipped — "View Details" is the main action, "+ Add" is secondary.
    • New "Best for your family" sort with options for distance, popularity with squad, price, and newest.
    • Camp detail pages: 4 "track this" buttons collapsed into one clean 🔔 Track this camp.
  127. ·✨ New

    Friends Overlap on Squad

    • See who your kids will be with this summer — per-kid peer ranking by shared weeks.
    • "Most popular camps in your squad" shows where everyone’s heading.
    • Tap any cell in the squad grid to see everyone going that week. Peer names in the Overlap card highlight and scroll to their row in the grid.
  128. ·✨ New

    Co-parent / caregiver invites

    • Add a co-parent right after signup — they get the same dashboard, notifications, and can add activities too.
    • Separate role for caregivers (nanny, grandparent) with view-and-add access.
    • Branded invite email with the inviting family’s kid names.
    • Dashboard reminds you to add one if you skipped.
  129. ·🔧 Improved

    Squad grid is mobile-first

    • Kids run as rows, weeks as columns on mobile — see all your squad at once.
    • Kid names and week labels stay pinned while you scroll.
    • Above-the-fold slimmed down: one title line, single Invite button, family filters behind a collapsible drawer.
  130. ·🔧 Improved

    Dashboard trimmed

    • From 12 sections to 6.
    • New 1-line summary strip: camps confirmed, dollars planned, weeks open.
    • Kid cards spotlight TODAY / NEXT UP / UPCOMING with a clear label.
    • Squad activity feed capped at 5 most relevant with a link to see everything.
    • Broken calendar month view removed — it wasn’t usable.
  131. ·🔧 Improved

    Year-round activity cards

    • Spanish Class (or any class both kids attend) now shows as ONE card with stacked kid emojis.
    • Ongoing weekly classes no longer show a confusing single-date row.
    • When Google Calendar sync is on, the Add-to-Calendar button is replaced with a "Synced" indicator.
    • Tap any chip to edit — removed the hard-to-find tiny × delete button.
  132. ·🐛 Fixed

    Google Calendar sync runs to completion

    • New personal plan entries (vacations, trips, games) now sync reliably to Google Calendar within seconds.
    • Addresses entered on manual activities now write to the GCal event location field — enables Get Directions in the Google Calendar mobile app.
  133. ·🐛 Fixed

    Add Personal Item restored

    • The + Add personal item button crashed after the dashboard redesign. Fixed.
    • Personal entry chips are now fully tappable — tap opens the edit modal with a proper Delete button.
  134. ·⚡ Faster

    Pages load dramatically faster

    • Cold-start page loads cut from 6-8 seconds down.
    • Consolidated background data fetching — fewer requests per page load.
    • Loading skeletons appear within 50ms so the app feels instant even on first visit.
    • Nav links prefetch routes on hover so taps feel instant.
  135. ·✨ New

    Signup confirmation screen

    • After email signup, we now show a "Check your email" screen with a Resend button instead of silently redirecting.
    • You know your account was created.
  136. ·✨ New

    Branded emails

    • Confirmation email redesigned with CampSquad branding and a clear CTA.
    • Sent from hello@campsquad.app via Resend — no more generic noreply.
    • Family invite emails are branded + personalized with kid names.
  137. ·🔧 Improved

    Summer year is dynamic

    • Copy like "Summer 2026" automatically flips to "Summer 2027" after August each year, matching how families plan.
    • Schedule week grid generates from the first Monday of June for whatever summer is active.
  138. ·🔧 Improved

    Signup polish

    • Family-name placeholder no longer reads as pre-filled ("e.g. The Smith Family" instead of a real surname).
    • City dropdown expanded from 11 to 43 Bay Area cities, grouped by region.
    • Footer updated to "Bay Area families."
  139. ·🐛 Fixed

    Accurate numbers everywhere

    • Dashboard summary: camp counts, dollars, weeks open now reflect reality.
    • Camp cards: distance no longer shows "7943 mi" garbage — hides cleanly when unknown.
    • Cities extracted from addresses so street-addresses-as-city is gone.
  140. ·🔧 Improved

    Cleaner activity names

    • Manual activities (Spanish Class, Baseball Practice) no longer show "Sierra Family — Personal Activities" in labels. Just the activity.
  141. ·🔧 Improved

    Dashboard and Squad page load faster

    • Consolidated each page’s initial data fetch into a single server request — roughly 10x fewer auth handshakes per page load.
    • Squad header badges now render server-side with no client roundtrip after hydration.
  142. ·🔧 Improved

    Squad page + mobile discoverability + modal polish

    • Consolidated the /squad header into one card — squad stats, Copy + Share buttons, and your earned badges now live together.
    • Find Families is reachable in one tap on mobile — same header actions as desktop.
    • Add Activity and Add Personal Item modals now handle scrolling reliably on mobile — scrolling the form never closes the modal.
  143. ·🐛 Fixed

    Manual activity Google Calendar sync

    • Manually-added one-time and multi-day activities now sync to Google Calendar alongside recurring ones.
    • Editing or deleting a manual activity propagates to the paired Google Calendar event in seconds.
    • Added [gcal-sync] diagnostic logs so the next sync failure is easy to trace in Vercel.
  144. ·✨ New

    Easy Add Programs

    • Describe your kids’ activities in plain text — AI finds and adds them automatically.
    • Support for multiple kids at once via the kid picker.
    • Custom activities for programs not yet in CampSquad.
  145. ·✨ New

    City of Oakland Parks & Rec

    • 76 Town Camp sessions across 19 Oakland locations.
    • CIT (Teen Leadership) programs for ages 13–15.
    • Real-time availability (open, almost full, full).
  146. ·✨ New

    Inclusion & Gender filters

    • Filter by autism-friendly, sensory-friendly, aide accepted, small groups, IEP/504 experience.
    • Gender focus filters (all, girls only, boys only, gender inclusive).
    • Badges on camp cards, program cards, and detail pages.
  147. ·🔧 Improved

    Smart camp sorting

    • Premium camps now sort by distance from your home city.
    • All 8 premium camps always visible regardless of active filters.
    • A–Z and Newest sorts respect tier — premium first within each mode.
  148. ·🔧 Improved

    Invite flow

    • Fixed invite token surviving Google sign-in round-trips.
    • Share button uses the native iOS / Android share sheet on mobile.
    • Invite link surfaces on the dashboard, profile, and Navbar menu.
  149. ·✨ New

    Google Calendar sync

    • Sync so camp sessions appear in your personal calendar.
    • Pick which Google calendar to sync into.
    • Reset & re-sync button for duplicates.
  150. ·🚀 Launch

    CampSquad beta launch

    • Bay Area family camp coordination platform.
    • 700+ camps and programs across the Bay Area.
    • Squad coordination with co-parents.
    • Premium listings live for 8 Bay Area camps.

Hit a bug or have a feature request?

Visit the Help Center →