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 2 commits into
Conversation
Deploying with
|
| Status | Name | Latest Commit | Preview URL | Updated (UTC) |
|---|---|---|---|---|
| ✅ Deployment successful! View logs |
hyperformula-docs | 4ab3cc6 | Commit Preview URL Branch Preview URL |
Aug 20 2026, 12:58 PM |
|
Task linked: HF-107 Import/export files (XLSX, CSV) |
8228e6c to
cb9b03e
Compare
Performance comparison of head (4ab3cc6) vs base (aa835bf) |
5d67b5d to
46ac32d
Compare
cb9b03e to
b038fa9
Compare
|
Paired tests PR: handsontable/hyperformula-tests#38 — merge it BEFORE this one. |
b038fa9 to
9933ba3
Compare
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
9933ba3 to
4ab3cc6
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:
|
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.
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
Medium Risk
Changes commercial license entitlement resolution and console notification behavior for typed keys; incorrect grant wiring could wrongly gate CRUD-related API areas once package keys go live, though tests and additive opt-in rules aim to prevent regressions for keys without add-ons.
Overview
Wires the
spreadsheetandimport_exportcommercial add-on tokens per the 2026-08-12 packages meeting, and adds a usage-axis expiry notice for typed keys.The
spreadsheettoken (Spreadsheet Bundle) now grants CRUD, undo/redo, clipboard, and batching viaCAPABILITY_TABLE.import_exportgrantsFeatureId.ImportExportas a reserved entitlement with no public API gate until HF-107. Keys that name neither add-on are unchanged in practice: the existing opt-in rule still injects allfeat:*tokens when a key does not speak the feature vocabulary, so this release remains additive and does not strip CRUD or related areas from current keys.resolveLicenseevaluatesexpiryWithinNoticeWindowfor valid, non-silent typed keys on the usage-until axis and callsnotifyLicenseKeyNotice, which warns once per distinct key string (separate from the global invalid/missing/expired_notifiedflag). Per-key tracking is cleared inresetLicenseKeyNotificationForTests. Docs and changelog describe add-on semantics and note that missing add-ons still do not restrict anything in this release.Reviewed by Cursor Bugbot for commit 9933ba3. Bugbot is set up for automated code reviews on this repo. Configure here.