HF-307: wire the two commercial add-on tokens, strictly additively (6/8) - #1737
HF-307: wire the two commercial add-on tokens, strictly additively (6/8)#1737marcin-kordas-hoc wants to merge 4 commits into
Conversation
Deploying with
|
| Status | Name | Latest Commit | Preview URL | Updated (UTC) |
|---|---|---|---|---|
| ✅ Deployment successful! View logs |
hyperformula-docs | 3dbcbe6 | Commit Preview URL Branch Preview URL |
Aug 26 2026, 03:43 AM |
|
Task linked: HF-107 Import/export files (XLSX, CSV) |
8228e6c to
cb9b03e
Compare
Performance comparison of head (3dbcbe6) vs base (db92bcd) |
5d67b5d to
46ac32d
Compare
cb9b03e to
b038fa9
Compare
|
Paired tests PR: handsontable/hyperformula-tests#38 — merge it BEFORE this one. |
b038fa9 to
9933ba3
Compare
9933ba3 to
4ab3cc6
Compare
Tobiadefami
left a comment
There was a problem hiding this comment.
Reviewed at 4ab3cc6 together with the paired tests at 26cd09d5. I checked the additive grant mapping, the exact Spreadsheet Bundle and reserved import/export feature sets, current-key fallback behavior, guide and changelog wording, current automated findings, and later stacked branches. The 13 focused license suites pass (223 tests), all current engine checks are green, and I found no material issue in this PR.
Per the 2026-08-12 packages meeting: `spreadsheet` backs the Spreadsheet
Bundle add-on and grants Crud, UndoRedo, Clipboard and Batching ("chyba tez"
batching - Kuba, 12.08); `import_export` grants FeatureId.ImportExport, a
reserved grant with no gated method until HF-107 ships the feature.
Additive only: a key naming neither add-on keeps every feature area it has
today (the opt-in rule for keys carrying no feat:* tokens is untouched), so
no real key can start throwing as a side effect of this change. The open
product question - does a package key without the bundle keep CRUD once
packages go live - stays open and is documented as such in the guide.
Implemented by a prep-ship lane (task HF-307-addon-grants); verified here:
license suite 165/165 under Jest, tsc --noEmit clean, eslint clean.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01PdHPZAjciZFWqGa19Yf7it
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01PdHPZAjciZFWqGa19Yf7it
…tops where it does Three things the add-on documentation got wrong or left unsaid: - The guide named `resumeEvaluation()` as part of the batching grant. It is the one method deliberately left ungated, so that losing the entitlement while evaluation is suspended cannot strand an engine. `batch()` is gated and was missing from the list. - The guide claimed unconditionally that every key already grants CRUD, undo/redo, clipboard and batching. That is true only of keys naming no feature token — which is every key the generator can issue today, but the reason matters, and named expressions was missing from the list of areas such a key receives. - The capability table grants the bundle four areas and not named expressions, matching what was scoped at the 12.08 packages meeting. Nothing said so, leaving a reader unable to tell a decision from a slip. Recorded on the entry itself. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Same cleanup as on the branches below, for the comment this branch introduces. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
aa835bf to
db92bcd
Compare
4ab3cc6 to
3dbcbe6
Compare
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## spike/hf307-notice-window #1737 +/- ##
==========================================================
Coverage 97.38% 97.38%
==========================================================
Files 204 204
Lines 16236 16236
Branches 3493 3493
==========================================================
Hits 15812 15812
Misses 424 424
🚀 New features to boost your workflow:
|
Wires the two commercial add-on tokens decided in the 12.08 packages meeting, strictly additively. Stacks on #1731; rebased onto its current head on 19.08 (the base moved during PR3/PR4's review passes, which had left this PR conflicting).
What changed
spreadsheet(Spreadsheet Bundle add-on) now grantsFeatureId.Crud,UndoRedo,ClipboardandBatching("chyba też" batching — Kuba, 12.08).import_exportgrantsFeatureId.ImportExport— a reserved grant: no public method is gated on it until HF-107 ships the feature it would gate.feat:*tokens is untouched), so no real key can start throwing as a side effect. The open product question — does a package key without the bundle keep CRUD once packages go live — stays open and is documented as such indocs/guide/license-key.md.Verification
Paired tests:
hyperformula-tests@spike/hf307-addon-grants(6 assertions incl. the pin that a key without either add-on keeps all five pre-existing feature areas). Full license suite 212/212 under Jest (12 suites,unit/license+unit/helpers/licenseKeyValidator), re-measured after the 19.08 rebase onto the current #1731 (e9863f27) — the earlier 165/165 predated PR3's and PR4's review fixes,tsc --noEmitclean,eslint --quietclean.🤖 Generated with Claude Code
Note
Low Risk
License capability metadata and documentation only; runtime gating for current keys is unchanged because grants are additive and import/export has no gates yet.
Overview
Wires the
spreadsheetandimport_exportcommercial add-on tokens intoCAPABILITY_TABLE, matching the 2026-08-12 packages meeting.The
spreadsheet(Spreadsheet Bundle) token now grants CRUD, undo/redo, clipboard, and batching — named expressions stay outside the bundle by design.import_exportgrantsFeatureId.ImportExportas a reserved entitlement; nothing in the public API gates on it until HF-107 ships import/export.Behavior for existing keys is additive: keys that name neither add-on keep every feature area they have today (the “no
feat:*tokens ⇒ grant all features” rule is unchanged). Docs and the changelog spell out that add-on tokens describe what was sold rather than tightening access for keys issued today.Reviewed by Cursor Bugbot for commit 3dbcbe6. Bugbot is set up for automated code reviews on this repo. Configure here.