Changelog

Changelog

What changed for the people who use Convova, newest first. Internal work is in the git history.

Unreleased

  • An agent skill at /skills/convova/ teaches any coding agent to build on the public API: the rules, the checkout, API keys. A read-only MCP server at /mcp gives chat agents the same published content as tools. Both are documented under Sell on your own site.
  • Every docs page is served as markdown at its address plus .md, and /llms.txt now indexes the whole site, not only the API.
  • A product is no longer on sale once its event has ended, and browsers can read Retry-After on a 429.
  • Every page shows only what the role can do. Admins no longer see New product or the Status field they could not use; member invites are re-sent by owners; a super admin who is only a member of a host sees a member's host pages. "Host an event" goes to a host the person owns. The tabs an attendee cannot open yet show a lock on desktop too, and a refused host page says so with a way onward.
  • Host owners and members can open the attendee list, the desk, and the event members list without being event members. Only host owners and super admins can add, change, or remove event members; a missing check had let any signed-in person do it.
  • An event published under the yearly plan keeps its first block covered after the plan ends; before, it was charged that block again from its first ticket.
  • Revoking a ticket by hand now revokes its add-ons, as a refund already did, and restoring the ticket brings them back.
  • A docs site at /docs: guides, a glossary, roles, pricing, how to sell on your own site, and the API reference with request samples. This changelog is at /changelog. The design docs are retired.
  • The API reference covers the host behind an event. Money and counts in the public API are never negative.
  • An event is always created as a draft; publishing goes through the publish screen, where a full event pays. A published free event refuses a priced ticket until it is upgraded. Only a host owner can publish, unpublish, or archive, or re-send a member's invite.
  • Updating the card on the Payments page pays the growth blocks Stripe had given up on, and later blocks charge the card on file at Stripe. Buying the yearly plan confirms when the host comes back from Stripe.
  • A buyer no longer gets a second invitation email at the door, and a send that ran out no longer blocks the holder from claiming the ticket.
  • A registration form adding an attendee with an API key must name the ticket type.
  • The pricing page and the terms no longer promise that a paid event keeps its prices; a fee already paid never changes, and a price change applies to fees charged after it.

2026-09-24

  • A claimed ticket is the holder's for good: it cannot be sent, and a new owner means a new ticket. Check-in claims the ticket. Only the address a ticket was sent to can accept it, in the app.
  • Emails only open the app or the event. No email acts on click or carries a secret.
  • The Convova checkout asks the buyer to sign in before paying and keeps the cart. Nothing can be ordered once an event has ended.
  • The app has Tickets and Orders pages. An order shows its Stripe receipt and invoice.
  • Hosts connect Stripe on Accounts v2 and choose their country when connecting.
  • The terms and the privacy policy are rewritten.
  • Dashboard addresses name the host: /dashboard/<host>/…. The host's Events, Members, Payments, and Settings sit in the sidebar. Members are invited from a dialog. A host's address is set once and never changes.
  • The homepage speaks to attendees and hosts. The app lists your events, then upcoming and recent ones. "Host an event" sits on the Events page.

2026-09-23

  • The public event page, the pricing page, and the homepage are redesigned.
  • Host settings: profile, members with the last-owner rule, payments; a public host page.
  • Pricing: free events up to the free cap; full events pay a base fee at publish and a growth block as they grow; the yearly plan covers every event; the store share on sales.
  • The store: ticket products and add-ons, prices with windows, promo codes, holds while paying, free orders, refunds.

2026-09-22

  • Hosts are the tenant: a host owns its events and members, and the dashboard switches between a person's hosts.
  • Tickets record where they came from, and are claimed one by one. Placeholder attendees are gone.
  • A ticket can be sent to someone by email, accepted, or the send cancelled.

2026-09-21

  • API errors no longer leak SQL; a malformed body answers 400 and a bad id 404.
  • Email dates print in UTC and say so.
  • The check-in desk ignores a slow answer for a person no longer selected.
  • An inbox reply cannot go to the wrong attendee.
  • A failed email send is reported instead of looking delivered.
  • Tag chips in the attendee's detail follow the Manage tags order.
  • robots.txt and the sitemap use the deployed address.
  • Event dates no longer shift by the editor's UTC offset.

2026-09-19

  • Sessions are scheduled on a calendar: drag to move or resize, a day view, and one editor with searchable pickers for contributors and organizations.
  • Dashboard pages use the full width, with the attendee page stacked and Print badge in the badge card. The overview counts questions waiting. Tag filters follow the Manage tags order.

2026-09-18

  • The dashboard shows each person only the sections they may use in that event.
  • A session's times keep their instant whatever timezone the editor is in.

2026-09-17

  • Anyone can sign up, with Google or an email code. Claiming an account and filling in the profile are two steps.

2026-09-16

  • Linking a Google account can no longer race a code sign-in, and a password can only be set from a signed-in session.

2026-09-15

  • Sign-in runs on Better Auth: Google, email codes, and passwords. Codes are limited per address.
  • The landing page is redesigned.

2026-08-13

  • Pages carry proper titles, descriptions, and a sitemap for search engines.
  • A push to main deploys.

2026-07-18

  • A badge can be printed from a page that works without a connection.

2026-07-16

  • Attendees ask the host private questions from the app; the host answers from an inbox.

2026-07-15

  • The attendee, ticket, order, and connection lists search on the server, so a big event's list finds everyone.
  • The schedule is split by day.
  • Onboarding takes the optional profile fields.
  • The first check-in of someone who never got an email sends them the sign-in invite.
  • A badge prints from the attendee's page too.

2026-07-14

  • Scanning someone you already connected with shows the connection instead of an error. After a scan, the pass shows the other person's card, with Scan next. New connections get a dot and "new" pills. Admins see every connection made at the event.
  • Emails are branded. An invite names the event, the ticket type, and the role; a paid order gets an itemized receipt.

2026-07-13

  • Walk-ins: an event can let the desk issue a ticket at the door.
  • Badge designer: the host designs the badge once, and the desk prints to the design.

2026-07-08

  • The store: hosts connect Stripe and sell tickets and add-ons, with promo codes, holds while paying, refunds, and revocation. Order creation is rate-limited.

2026-06-25

  • Page views are counted with Plausible.

2026-06-22

  • Tags can be reordered, and are managed from the pages that use them.

2026-06-18

  • Images upload: event covers, avatars, and logos.
  • Contributors and organizations can be reordered.
  • The app's speaker, organization, and session pages are redesigned. The dashboard works on a phone.

2026-06-17

  • The product is named Convova, with a homepage, terms, and a privacy policy.
  • Attendees can save and like sessions.

2026-06-16

  • The pass works without signal.
  • Connections show a name card, paginate, and export as CSV.
  • A badge prints only when the check-in was recorded.

2026-06-14

  • The public API: a host's own website reads a published event's program. The reference is at /docs, and llms.txt describes it for models.
  • The app groups contributors and organizations by tag. Pending invitations show a badge.

2026-06-13

  • Tickets are their own record: an attendee holds tickets, each with a type.

2026-06-08

  • Duplicate tags are refused; a tag in use cannot be deleted.
  • An import is all-or-nothing, and every attendee needs a ticket.
  • Every participant can be checked in.

2026-06-03

  • Email change, with a code to each inbox.
  • The check-in desk: scan a pass or a barcode, look someone up, check them in.
  • Imports from Luma and Eventbrite by CSV, and from a host's own form with an API key.

2026-06-01

  • Check-in, and an app that shows each attendee what fits their state.
  • Environment settings are checked at start.

2026-05-31

  • Invitations for attendees and members, by email.
  • The onboarding page.
  • The app: the program, networking, and announcements for attendees.
  • Events are listed by who is asking: the public catalog, the events you manage, the events you attend.

2026-05-28

  • Change and reset a password by email.

2026-05-26

  • The dashboard: sessions, contributors, organizations, tags, and attendees, with pagination, search, and filters.
  • Networking: attendees connect by scanning each other.

2026-05-24

  • Contributors, organizations, ticket types, and attendees, with their APIs.
  • Profile and password.

2026-04-10

  • The first version: events, event members with roles, tags, sign-in, and onboarding.