v0.2.0
Upgrading a self-hosted copy from 0.1.0: set ENABLE_LANDING, ENABLE_DOCS
and ENABLE_DEMO to true for whichever parts you serve, since unset now
means off, and rebuild. Run the new migrations before deploying, except
20260925170000_drop_one_argument_accept.sql, which runs after
(docs/self-hosting.md).
Added
- An Org switcher: the Org name at the top of the sidebar, or of the phone
header, opens a list of your Orgs, including one still waiting for approval.
The Org you pick is remembered on that device. - Invitations in the dashboard: the switcher lists the ones sent to your
signed-in address, with Accept and Decline, and keeps an expired one for a
week so you can dismiss it. An Admin sees a declined invitation as declined
and can invite the same person again. - Leave an Org from the switcher. The only Owner is asked to make somebody
else an Owner first. - New Org, at the bottom of the switcher, which now always opens. It asks for
a name and, where sign-up asks for one, a plan; the new Org waits for
approval like a sign-up, or opens at once where approval is off. You can have one
Org of your own waiting at a time. The waiting page carries the switcher
too, so you can switch out of an Org that is waiting. It emails the platform
admins the same way a sign-up does, and just as little: nothing with
approval off, nothing once the Org is active. - A read-only live demo, off unless
ENABLE_DEMO=true: "Try the demo" beside sign-up
on the landing and pricing pages opens two made-up Orgs with six invented
people each and 60 days of generated usage and transcripts. Every page is
visible and every save answers "This is a demo". A daily
/api/demo/refreshkeeps the window current. The demo's Costs and Sessions
pages are cached per day, for the demo visitor only. A signed-in visitor
doesn't see "Try the demo", since their own account opens instead. - Browser tests: the repo's first Playwright suite (
apps/web/e2e, run with
pnpm --filter web e2e) accepts an invitation from the Org switcher and
starts a New Org from it. It signs in without a Supabase project and seeds
a*_testdatabase directly. ENABLE_LANDING,ENABLE_DOCSandENABLE_DEMO, eachtrueorfalse
and off when unset, so a self-hosted copy serves only the dashboard. With
the landing page off,/goes to sign-in or the dashboard and/pricingis
a 404; the privacy and terms pages stay. With the docs off,/docsis a
404 and docs links go to sessclone.com. A signed-in visit to/opens the
dashboard, and the dashboard's logo links back to the landing page.
Changing a flag needs a rebuild. Before deploying: set all three on
Vercel, for Production and Preview (truefor sessclone.com), and remove
DEMO, which nothing reads any more; unset, the landing page, docs and demo
are all off.- A sign-in that Supabase sends to the bare site with
?code=now continues
to/auth/callbackinstead of stopping on the home page. /.well-known/security.txt(RFC 9116), pointing to GitHub private advisories
and, when set, the deployment's contact address. Its expiry is always a
year ahead.
Changed
- The Collector plugin's version now follows the release, starting at
0.2.0. It was pinned at0.0.0, and Claude Code only updates a plugin
whose version changed, so/plugin updatereported every install as
current and kept the code it was installed with. Update once to pick up
everything since.
Removed
- The one-argument
sessclone_accept_invitation(text), kept only while the
Org switcher deployed. Migration20260925170000_drop_one_argument_accept.sql
drops it; nothing calls it.
Fixed
-
A hydration error on every dashboard page and on the waiting page: the Org
switcher was nested inside the brand line's<p>. -
Someone in more than one Org saw every Org's Devices, Keys and transcripts
on each Org's pages, and the oldest Org's appearance; they now show the Org
you are in. Settings, Members, Keys and invitation forms refuse to act on an
Org other than the one the page was opened for.