Skip to content

Release v0.10.0: extension updates, releases page, and consent improvements - #91

Closed
Bryan Fawcett (bryanfawcett) wants to merge 20 commits into
mainfrom
staging
Closed

Bryan Fawcett (bryanfawcett) wants to merge 20 commits into
mainfrom
staging

Conversation

@bryanfawcett

Copy link
Copy Markdown
Member

This release brings the Toddle Enhancement Extension v0.10.0 to the Chrome Web Store and adds comprehensive release notes infrastructure.

Summary

Updates the learning.nyuchi.com site to reflect the v0.10.0 release of the Toddle Enhancement Extension (published 13 October 2026), adds a new Releases page documenting all extension versions, improves consent handling for Google Analytics, and refactors legal/security documentation to reflect two adversarial reviews and updated extension capabilities.

Key Changes

Extension Release & Documentation

  • Added src/data/releases.ts with complete release notes for all extension versions (v0.10.0 newest, with test builds 0.8.3–0.8.13 and 0.9.1–0.9.10)
  • Created /toddle-enhancement-extension/releases page to display release notes with version anchors for toolbar menu linking
  • Updated extension version references throughout: v0.9.0 is now current (on store since 7 October), v0.10.0 is latest (on store since 13 October)

Consent & Analytics

  • Refactored Google Analytics loading to only fetch Google's tag after explicit consent (not just set to "denied" mode)
  • Added tests/consent.test.ts to verify Analytics loads only after consent in the built output
  • Updated Analytics.astro to queue loader function that runs only when stored consent exists and matches current banner version
  • Handles legacy consent records (older banner versions) as "no consent"

Security & Legal Updates

  • Added dataProtection export documenting Zimbabwe's CDPA and EU/UK GDPR standards applied uniformly
  • Updated security page to reference two adversarial reviews (1 October and 6 October 2026) instead of one
  • Clarified that extension v0.9.0+ never hides Toddle's own flags; teachers can "conceal" them with a free switch
  • Updated terminology throughout: "hide flags" → "conceal flags" to reflect actual behavior

Infrastructure & Maintenance

  • Added scripts/clean.mjs to remove build artifacts, caches, finished worktrees, and merged local branches
  • Added scripts/install-hooks.mjs to enable .githooks/post-merge for automatic cleanup after pulls
  • Added .githooks/post-merge hook to run cleanup after merging pulls
  • Added .claude/settings.json hook to run cleanup after Claude Code merges PRs
  • Added versioning workflows (.github/workflows/main-version.yml, staging-version.yml) for semantic versioning on main/staging branches
  • Added LICENSE file (UNLICENSED)
  • Added .github/dependabot.yml for action pinning

Testing & Quality

  • Added tests/purchase.test.ts to verify checkout messaging promises claim links, not keys
  • Added tests/toolchain.test.ts to verify Prettier and vp fmt settings agree
  • Updated tests/seo.test.ts to verify all tagged test builds have release anchors
  • Updated tests/consent.test.ts and tests/security.test.ts for new consent model

Documentation & Configuration

  • Updated CHANGELOG.md with detailed release notes for v0.10.0 and infrastructure changes
  • Updated README.md to reflect staging/main branch workflow and git tag versioning
  • Updated CONTRIBUTING.md with new data locations and cleanup procedures
  • Updated docs/toolchain.md to remove Vite+ evaluation (no longer relevant)
  • Updated GitHub Actions workflow to deploy from main and staging branches
  • Updated vercel.json CSP headers for new analytics loading model

Content Updates

  • Updated extension product page to describe v0.9.0 as current, reference v0.10.0 features
  • Updated legal pages (privacy, security, data, terms, cookies, student-privacy) with new extension capabilities and data handling
  • Updated public/llms.txt to reflect flag concealment (not hiding) and new extension behavior
  • Updated pricing descriptions and checkout flow documentation

Notable Implementation Details

  • Release notes are centralized in src/data/releases.ts with structured `

https://claude.ai/code/session_01CoDNYz27iJ7o8PPztCzTpq

Every merge into `staging` (the live beta) is released as the next patch
under the org versioning policy (nyuchi/.github#80), through the pinned
reusable-staging-release.yml. The build workflow now also runs on pushes
to `staging`, so the beta branch carries the same checks as master.


Claude-Session: https://claude.ai/code/session_017T4NxM5wbhJ3LjHt7bnuwr

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
* chore: the default branch is main

The default branch was renamed from master to main on 2026-10-04. Point
the build trigger and the README at it.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_017T4NxM5wbhJ3LjHt7bnuwr

* ci: build on pushes to main

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_017T4NxM5wbhJ3LjHt7bnuwr

---------

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
…claim matches its code (#66)

* docs(legal): every claim about the extension matches its code, for 0.8.2 and 0.8.4

Checked against the extension at 75876d4 (docs/toddle-data-fields.md, the
security reviews, SECURITY.md, licence.js, background.js and the code).

- Flags: from 0.8.4 they are shown as Toddle shows them and the free switch
  hides them everywhere; before 0.8.4 they were hidden by default. Unless
  flags are hidden, the sidebar asks Toddle for them each time it opens.
- Memory: answers stay in the tab until it is closed or reloaded, reused
  for at most 5 minutes (2 for a student's day); never written to storage.
- Storage: licenceCheck and licenceViewer in the extension's storage, and
  the four values on Toddle's site, each described. Drops a "message button
  style" value the code does not have.
- Switches: adds gradebook tools and the Attendance dashboard's details.
- Licence keys may, not must, name who they are for.
- Reads: gradebook, home page, profile page and Attendance dashboard, plus
  the sign-in headers and academic year noted from Toddle's own requests.
- What leaves the device, listed exactly, student photos included.
- Security page: the review of 6 October 2026 (findings 13 to 16) and what
  code inside Toddle's page cannot promise; says which versions it covers.
- Version facts in one place (extensionVersions); dated 6 October 2026.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01CoDNYz27iJ7o8PPztCzTpq

* docs(legal): privacy rests on Zimbabwe's Act and the GDPR; fix missing spaces

- The privacy policy names the two laws Nyuchi holds itself to: Zimbabwe's
  Cyber and Data Protection Act [Chapter 12:07], and the EU and UK GDPR,
  applied to everyone. "The law we follow" names POTRAZ, says where data goes
  and how transfers out of the EU and UK are covered. The rights section
  lists each right, the one-month answer and where to complain (POTRAZ, the
  ICO, or an EU authority). Each legal basis carries its GDPR article.
- Breaches go to POTRAZ within 24 hours (Zimbabwe's Act), and to an EU or
  UK regulator within 72 where the GDPR requires it (privacy and data pages).
- Student privacy names both laws. Singapore's PDPA is no longer named, in
  the pages or the consent notes. The facts live once, in `dataProtection`.
- compressHTML off: Astro's compression dropped the space where a line break
  sat next to an inline tag ("Applies to<strong>…"), about 90 times across
  the legal and product pages. Now none; CSP hashes unchanged.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01CoDNYz27iJ7o8PPztCzTpq

---------

Co-authored-by: Bryan Fawcett <noreply@anthropic.com>
…oncealed, not hidden (#67)

* docs: the extension page and legal pages describe 0.9.0, with flags concealed, not hidden

The pages described 0.8.4 as the next release and said the flag switch
hides flags. Patches are now test releases that do not go to the Chrome Web
Store, so the next release teachers get is 0.9.0, and from it the extension
no longer hides Toddle's own flags: a teacher can conceal them for a shared
screen.

- Flags, said once in `flags` (src/data/legal.ts): "conceal" and "flag
  visibility", never "hide"; "Show flags" in the sidebar for one student;
  concealing is a screen, not a lock. A test fails on "hide flags".
- The rebuild in closed shadow roots, the student sidebar's timetable,
  email and admin-portal changes, a class's teachers by email, and My
  classes switching at once.
- For schools: the rollout steps and the organisation key on the extension
  page, a help centre link, and the data schema, described and on request.
- Data handling: the licence server keeps a hash of each key, not the key.
- The Zimbabwe CDPA and GDPR framing is unchanged.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01CoDNYz27iJ7o8PPztCzTpq

* fix: sitemap lastmod is an ISO string, and source-map-js 1.2.2 for GHSA-68fv-2mgg-jv7q

- astro.config.mjs: the sitemap's serialize hook set `lastmod` to a Date,
  but a sitemap item's `lastmod` is a string (TS2322 in `npm run lint`).
  It is now `new Date().toISOString()`; the sitemap output is the same
  ISO 8601 timestamp.
- package-lock.json: source-map-js 1.2.1 → 1.2.2, the patched release for
  GHSA-68fv-2mgg-jv7q (high), which failed "Audit what ships". Every
  dependent's range already allows 1.2.2, so it is `npm update
  source-map-js`, run with the repo's npm (11.12.1); no override needed.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01CoDNYz27iJ7o8PPztCzTpq

* docs: the newest patch is 0.8.9

Extension PR #38 (My classes switches at once; docs/data-schema.md) merged
into staging and shipped in the v0.8.9 patch.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01CoDNYz27iJ7o8PPztCzTpq

---------

Co-authored-by: Bryan Fawcett <noreply@anthropic.com>
…s it (#68)

* feat: a public Releases page for the extension; the terms say who owns it

Releases need a public home: the extension's repository is private and its
GitHub releases are internal test builds.

- /toddle-enhancement-extension/releases: each version's notes in plain
  words for teachers, newest first, from the extension's changelog. 0.9.0
  is coming soon to the Chrome Web Store; 0.8.2, 0.8.1, 0.8.0, 0.7.x and the
  early builds follow, condensed; 0.8.3 to 0.8.13, test builds for pilot
  schools, are one line. Every version has the anchor #v<version> for the
  extension's menu. No downloads, no GitHub links. Data in
  src/data/releases.ts. Linked from the extension page, the footer and
  llms.txt; in the sitemap.
- Terms: the extension and its code belong to Nyuchi Web Services, all
  rights reserved, not open source; a licence grants use, not ownership; no
  copying, modifying, reusing or redistributing its code in another product
  or service without written permission. Reading the code stays welcome;
  building a competing product stays forbidden. Said once in `ownership`.
- Flags facts as 0.9.0 ships them (grey, no colour; 0.8.2 updaters
  concealed); the newest test build is 0.8.13.
- Tests: the releases page's anchors, no downloads or GitHub links, and the
  organisation price is US$149.99 everywhere.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01CoDNYz27iJ7o8PPztCzTpq

* @bundu/ui 0.5.0; the site's code is proprietary

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01CoDNYz27iJ7o8PPztCzTpq

---------

Co-authored-by: Bryan Fawcett <noreply@anthropic.com>
The legal pages, the extension page, llms.txt and SECURITY.md name the
new host for the daily check for cancelled keys, and say that earlier
versions ask licences.nyuchi.dev, the same server, which still answers
(nyuchi/nyuchi-licence-server#24). The legal pages' date is 7 October.


Claude-Session: https://claude.ai/code/session_017T4NxM5wbhJ3LjHt7bnuwr

Signed-off-by: Bryan Fawcett <bryan@nyuchi.com>
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
* docs: one account of 0.9.0 across the site (review of the release)

- The extension page and the Security page say the gradebook's toolbar
  and the Attendance dashboard's details run in closed shadow roots from
  0.9.0, as the releases page and the extension's code (rebuild steps 5
  and 7) do; they no longer say these are still moving.
- The second review's fixes are in 0.8.4, a test build, and reach schools
  in 0.9.0, not '0.8.4 before it is published'.
- Concealing flags: a new install starts with flags shown; updating from
  0.8.2 keeps them concealed. Not 'off until you switch it on'.
- llms.txt: the sidebar asks for a student's active flags each time it
  opens, as legal.ts says.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GHjaH1Vt2dVLWU68iz8tFq
Signed-off-by: Bryan Fawcett <bryan@nyuchi.com>

* docs: re-review fixes: 0.9.0 is still to come; llms.txt matches the pages

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GHjaH1Vt2dVLWU68iz8tFq
Signed-off-by: Bryan Fawcett <bryan@nyuchi.com>

* docs: re-review fixes: the 0.8.4 fixes reach schools in 0.9.0; every reviewed rebuild step named; llms.txt flags say what 0.8.2 does

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GHjaH1Vt2dVLWU68iz8tFq

* docs: the extension page's flags paragraph says from which version

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GHjaH1Vt2dVLWU68iz8tFq

---------

Signed-off-by: Bryan Fawcett <bryan@nyuchi.com>
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
…that follows your Chrome account, and the upgrade (#72)

* wip

* wip2

* docs: an older unpacked copy's licence is entered once more

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GHjaH1Vt2dVLWU68iz8tFq

---------

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
* ci: a release to main is tagged as the next minor

The repo tagged staging merges as patches (staging-version.yml) but had
nothing on main, so a release to main produced no tag. This calls the
org's reusable auto-tag on main with the version computed from the tags
(channel main: the next minor), the RELEASE_BUMP_TOKEN, and a GitHub
release.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GHjaH1Vt2dVLWU68iz8tFq

* ci: the main version workflow runs only on main

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GHjaH1Vt2dVLWU68iz8tFq

---------

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
…ate, the changelog cut to 0.1.0 (#75)

* docs: release review fixes: the licence host per version, one legal date, the changelog cut to 0.1.0

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GHjaH1Vt2dVLWU68iz8tFq

* docs: the README's version is the latest tag

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GHjaH1Vt2dVLWU68iz8tFq

* docs: the changelog's licence-host entry names the versions

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GHjaH1Vt2dVLWU68iz8tFq

* docs: the staging patch tags start at v0.0.1

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GHjaH1Vt2dVLWU68iz8tFq

---------

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
…laims, fixed review history (#76)

* docs: second release review fixes: what 0.9.0 reads, versioned flag claims, fixed review history

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GHjaH1Vt2dVLWU68iz8tFq

* docs: the flags summary keeps its full stop

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GHjaH1Vt2dVLWU68iz8tFq

* style: no blank line in flags

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GHjaH1Vt2dVLWU68iz8tFq

---------

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
* docs: the extension's 0.9.0 is on the Chrome Web Store

0.9.0 was approved and published on 7 October 2026. The Releases page marks
it "On the Chrome Web Store", dated 7 October 2026. extensionVersions.current
is 0.9.0, with no `next` until another minor waits for the store; `previous`
(0.8.2) names the release before it where updating from it still matters.
The "0.8.2, on the store today" wording and every "from version 0.9.0" are
gone from the product page, the legal pages, llms.txt and SECURITY.md;
what helps a teacher updating from 0.8.2 stays, as history.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GHjaH1Vt2dVLWU68iz8tFq

* docs: review fixes: 0.9.0 reached schools, versions before 0.9.0, grammar

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GHjaH1Vt2dVLWU68iz8tFq

---------

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
What teachers get in 0.10.0: more of a flag's formatting in the sidebar,
the fix for a flag line that could freeze Toddle, and licences on
internationalised school domains. 0.9.1 to 0.9.5 (test builds) anchor to
it. The releases test now checks each version's part of the page.


Claude-Session: https://claude.ai/code/session_01CoDNYz27iJ7o8PPztCzTpq

Co-authored-by: Bryan Fawcett <noreply@anthropic.com>
scripts/clean.mjs (the same script as the extension's and the licence
server's) removes the build output, the QA report, the tools' caches,
finished Claude Code worktrees and local branches already in main or
staging, touching only what Git ignores. It runs after a git pull that
merges (.githooks/post-merge, turned on by npm ci through a new prepare
script) and after Claude Code merges a pull request (.claude/settings.json,
PostToolUse), and as npm run clean.


Claude-Session: https://claude.ai/code/session_01CoDNYz27iJ7o8PPztCzTpq

Co-authored-by: Bryan Fawcett <noreply@anthropic.com>
#87)

* fix: load Google Analytics only after consent

Google's tag is no longer requested behind Consent Mode set to denied.
Analytics.astro queues the denied defaults and holds the only loader,
which runs on a stored yes from the current banner version or when the
banner records one. Older versions, the legacy key and malformed records
count as no answer, in the banner and the support widget alike. The
privacy and cookie policies now say Google Analytics contacts Google only
after you agree. Tests run the built script against each case; the
consent probe fails on any Google Analytics request before consent.

Closes #83

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01CoDNYz27iJ7o8PPztCzTpq

* fix: anchors for the extension's test builds 0.9.6 to 0.9.8

The extension has tagged v0.9.6, v0.9.7 and v0.9.8 since the 0.10.0
entry was written, and their menus link to anchors the Releases page did
not have. They join 0.9.1 to 0.9.5 under 0.10.0, which stays "coming".
taggedTestBuilds lists every tagged test build, and a test fails the
build if one has no anchor or more than one.

Part of #85

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01CoDNYz27iJ7o8PPztCzTpq

* ci: least-privilege permissions, pinned actions, no persisted credentials

Workflows grant nothing at the top level and each job asks for its own
permissions: contents read for build and audit, write only for tagging.
The build workflow's checkouts no longer persist the token, since nothing
there pushes. actions/checkout and actions/setup-node are pinned to full
commit SHAs with the version in a comment, and Dependabot now keeps the
github-actions pins current. The nyuchi/.github reusable workflows were
already pinned to a commit.

Closes #84

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01CoDNYz27iJ7o8PPztCzTpq

* chore: bring the docs up to date, drop react, keep the formatters agreed

README, CONTRIBUTING and docs/toolchain.md now describe the Astro site's
pages, the staging to main release flow, Vite+ as adopted, the inline
scripts the CSP hashes and the current audit; the dead Lint badge, the
vitest pin, master and "two pages" are gone. react and react-dom are
removed: nothing imports them and @bundu/ui declares no peers. Prettier
and vp fmt both stay, since a required org gate runs each, and a test
fails if their settings differ.

Closes #86

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01CoDNYz27iJ7o8PPztCzTpq

* fix(deps): take the patched http-cache-semantics; hold postcss-selector-parser at 7.1.6+

npm audit fix brings http-cache-semantics past GHSA-ch52-4w7c-c8xp, so its
dated exception in scripts/audit.mjs goes. @tailwindcss/typography pins
postcss-selector-parser 6.0.10 (GHSA-rj75-hqrm-r3gf, moderate); an npm
overrides entry takes 7.1.6, and the built CSS is byte-for-byte unchanged.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01CoDNYz27iJ7o8PPztCzTpq

---------

Co-authored-by: Bryan Fawcett <noreply@anthropic.com>
The Releases page shows 0.10.0 as on the store since 13 October 2026, and
the test builds 0.9.9 and 0.9.10 open its notes.


Claude-Session: https://claude.ai/code/session_01CoDNYz27iJ7o8PPztCzTpq

Co-authored-by: Bryan Fawcett <noreply@anthropic.com>
The checkout note on the extension page said the licence key is emailed.
The licence server now emails a one-time claim link instead (72 hours,
single use): the note says so, how to use it, how to get a new one, and
how a school licence differs. tests/purchase.test.ts holds it to that.


Claude-Session: https://claude.ai/code/session_01CoDNYz27iJ7o8PPztCzTpq

Co-authored-by: Bryan Fawcett <noreply@anthropic.com>
@vercel

vercel Bot commented Oct 14, 2026 •

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated
learning Ready Ready Preview Oct 15, 2026 5:08am UTC

Request Review

Comment thread tests/purchase.test.ts Outdated
Comment on lines +20 to +22
return page
.slice(at, page.indexOf("</p>", at))
.replace(/<[^>]+>/g, "")
Mukoko Lingo, a partner app developed by Nyuchi Learning as part of
Mukoko, gets its own page at /mukoko-lingo, a product card on the home
page beside the Toddle Enhancement Extension, a header link, and a place
in the footer's Products column. JSON-LD, Open Graph, sitemap and
llms.txt match. Every claim is from Lingo's public repository; the old
home-page copy (French, Portuguese, "free for personal use") is gone.

Releases: 0.11.0 is on the Chrome Web Store and current; anchors for the
0.10.x and 0.11.x test builds; 0.12.0 is not listed. extensionVersions
gains changedIn (0.9.0) so "versions before" wording stays true.


Claude-Session: https://claude.ai/code/session_01CoDNYz27iJ7o8PPztCzTpq

Co-authored-by: Bryan Fawcett <noreply@anthropic.com>
…koko by Nyuchi; Swahili in beta (#93)

Claude-Session: https://claude.ai/code/session_01CoDNYz27iJ7o8PPztCzTpq

Co-authored-by: Bryan Fawcett <noreply@anthropic.com>
The licence server still emails the key; claim links ship with extension
0.12.0. Production should describe what buyers get today. Restore #89 when
0.12.0 and the server's claim links go live.


Claude-Session: https://claude.ai/code/session_01CoDNYz27iJ7o8PPztCzTpq

Co-authored-by: Bryan Fawcett <noreply@anthropic.com>

Copy link
Copy Markdown
Member Author

Closing in favour of #95, which releases staging to main as v0.4.0 without conflicts. #95's tree is staging's exactly, built on main the same way the API's release bot builds its release PRs. It also holds back the claim-link checkout copy (#94) until extension 0.12.0 ships.


Generated by Claude Code

This branch was successfully deployed

1 active deployment
Preview — 763a2a34 Deployed Oct 15, 2026 by vercel[bot]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants