@sheetpane/grid 0.4.0 → 0.4.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,11 +1,11 @@
1
1
  # sheetpane — the full public contract
2
2
 
3
- > Everything llms.txt links to, inlined: the package READMEs, the docs, the laws and the component records. Version 0.4.0; links pinned to v0.4.0.
3
+ > Everything llms.txt links to, inlined: the package READMEs, the docs, the laws and the component records. Version 0.4.2; links pinned to v0.4.2.
4
4
 
5
5
 
6
6
  ---
7
7
 
8
- <!-- source: README.md (https://github.com/arpitarya/sheetpane/blob/v0.4.0/README.md) -->
8
+ <!-- source: README.md (https://github.com/arpitarya/sheetpane/blob/v0.4.2/README.md) -->
9
9
 
10
10
  <div align="center">
11
11
 
@@ -269,7 +269,7 @@ the evidence**. Start at [`CLAUDE.md`](CLAUDE.md) if you are one.
269
269
 
270
270
  ---
271
271
 
272
- <!-- source: packages/grid/README.md (https://github.com/arpitarya/sheetpane/blob/v0.4.0/packages/grid/README.md) -->
272
+ <!-- source: packages/grid/README.md (https://github.com/arpitarya/sheetpane/blob/v0.4.2/packages/grid/README.md) -->
273
273
 
274
274
  # @sheetpane/grid
275
275
 
@@ -986,7 +986,7 @@ The specs are the records [SR-GRID](../../records/0105_GRID.md) and
986
986
 
987
987
  ---
988
988
 
989
- <!-- source: packages/export/README.md (https://github.com/arpitarya/sheetpane/blob/v0.4.0/packages/export/README.md) -->
989
+ <!-- source: packages/export/README.md (https://github.com/arpitarya/sheetpane/blob/v0.4.2/packages/export/README.md) -->
990
990
 
991
991
  # @sheetpane/export
992
992
 
@@ -1202,7 +1202,7 @@ The spec is the record [SR-EXPORT](../../records/0103_EXPORT.md).
1202
1202
 
1203
1203
  ---
1204
1204
 
1205
- <!-- source: packages/import/README.md (https://github.com/arpitarya/sheetpane/blob/v0.4.0/packages/import/README.md) -->
1205
+ <!-- source: packages/import/README.md (https://github.com/arpitarya/sheetpane/blob/v0.4.2/packages/import/README.md) -->
1206
1206
 
1207
1207
  # @sheetpane/import
1208
1208
 
@@ -1269,7 +1269,7 @@ The spec is the record [SR-IMPORT](../../records/0104_IMPORT.md).
1269
1269
 
1270
1270
  ---
1271
1271
 
1272
- <!-- source: packages/numfmt/README.md (https://github.com/arpitarya/sheetpane/blob/v0.4.0/packages/numfmt/README.md) -->
1272
+ <!-- source: packages/numfmt/README.md (https://github.com/arpitarya/sheetpane/blob/v0.4.2/packages/numfmt/README.md) -->
1273
1273
 
1274
1274
  # @sheetpane/numfmt
1275
1275
 
@@ -1380,7 +1380,7 @@ How plugins plug in: [`work/compare/plugins.compare.md`](../../work/compare/plug
1380
1380
 
1381
1381
  ---
1382
1382
 
1383
- <!-- source: packages/formulas/README.md (https://github.com/arpitarya/sheetpane/blob/v0.4.0/packages/formulas/README.md) -->
1383
+ <!-- source: packages/formulas/README.md (https://github.com/arpitarya/sheetpane/blob/v0.4.2/packages/formulas/README.md) -->
1384
1384
 
1385
1385
  # @sheetpane/formulas
1386
1386
 
@@ -1493,7 +1493,7 @@ How plugins plug in: [`work/compare/plugins.compare.md`](../../work/compare/plug
1493
1493
 
1494
1494
  ---
1495
1495
 
1496
- <!-- source: packages/styles/README.md (https://github.com/arpitarya/sheetpane/blob/v0.4.0/packages/styles/README.md) -->
1496
+ <!-- source: packages/styles/README.md (https://github.com/arpitarya/sheetpane/blob/v0.4.2/packages/styles/README.md) -->
1497
1497
 
1498
1498
  # @sheetpane/styles
1499
1499
 
@@ -1599,7 +1599,7 @@ How plugins plug in: [`work/compare/plugins.compare.md`](../../work/compare/plug
1599
1599
 
1600
1600
  ---
1601
1601
 
1602
- <!-- source: packages/validation/README.md (https://github.com/arpitarya/sheetpane/blob/v0.4.0/packages/validation/README.md) -->
1602
+ <!-- source: packages/validation/README.md (https://github.com/arpitarya/sheetpane/blob/v0.4.2/packages/validation/README.md) -->
1603
1603
 
1604
1604
  # @sheetpane/validation
1605
1605
 
@@ -1830,7 +1830,7 @@ the rule rows when you need them.
1830
1830
 
1831
1831
  ---
1832
1832
 
1833
- <!-- source: packages/condfmt/README.md (https://github.com/arpitarya/sheetpane/blob/v0.4.0/packages/condfmt/README.md) -->
1833
+ <!-- source: packages/condfmt/README.md (https://github.com/arpitarya/sheetpane/blob/v0.4.2/packages/condfmt/README.md) -->
1834
1834
 
1835
1835
  # @sheetpane/condfmt
1836
1836
 
@@ -1948,7 +1948,7 @@ How plugins plug in: [`work/compare/plugins.compare.md`](../../work/compare/plug
1948
1948
 
1949
1949
  ---
1950
1950
 
1951
- <!-- source: packages/images/README.md (https://github.com/arpitarya/sheetpane/blob/v0.4.0/packages/images/README.md) -->
1951
+ <!-- source: packages/images/README.md (https://github.com/arpitarya/sheetpane/blob/v0.4.2/packages/images/README.md) -->
1952
1952
 
1953
1953
  # @sheetpane/images
1954
1954
 
@@ -2034,7 +2034,7 @@ LibreOffice are owed by W-30.
2034
2034
 
2035
2035
  ---
2036
2036
 
2037
- <!-- source: packages/charts/README.md (https://github.com/arpitarya/sheetpane/blob/v0.4.0/packages/charts/README.md) -->
2037
+ <!-- source: packages/charts/README.md (https://github.com/arpitarya/sheetpane/blob/v0.4.2/packages/charts/README.md) -->
2038
2038
 
2039
2039
  # @sheetpane/charts
2040
2040
 
@@ -2168,7 +2168,7 @@ How plugins plug in: [`work/compare/plugins.compare.md`](../../work/compare/plug
2168
2168
 
2169
2169
  ---
2170
2170
 
2171
- <!-- source: packages/comments/README.md (https://github.com/arpitarya/sheetpane/blob/v0.4.0/packages/comments/README.md) -->
2171
+ <!-- source: packages/comments/README.md (https://github.com/arpitarya/sheetpane/blob/v0.4.2/packages/comments/README.md) -->
2172
2172
 
2173
2173
  # @sheetpane/comments
2174
2174
 
@@ -2308,7 +2308,7 @@ Spec: [`work/open/W-22-comments.md`](../../work/open/W-22-comments.md).
2308
2308
 
2309
2309
  ---
2310
2310
 
2311
- <!-- source: packages/visibility/README.md (https://github.com/arpitarya/sheetpane/blob/v0.4.0/packages/visibility/README.md) -->
2311
+ <!-- source: packages/visibility/README.md (https://github.com/arpitarya/sheetpane/blob/v0.4.2/packages/visibility/README.md) -->
2312
2312
 
2313
2313
  # @sheetpane/visibility
2314
2314
 
@@ -2348,7 +2348,7 @@ Spec: [SR-VISIBILITY](../../records/0121_VISIBILITY.md). MIT.
2348
2348
 
2349
2349
  ---
2350
2350
 
2351
- <!-- source: packages/tables/README.md (https://github.com/arpitarya/sheetpane/blob/v0.4.0/packages/tables/README.md) -->
2351
+ <!-- source: packages/tables/README.md (https://github.com/arpitarya/sheetpane/blob/v0.4.2/packages/tables/README.md) -->
2352
2352
 
2353
2353
  # @sheetpane/tables
2354
2354
 
@@ -2395,7 +2395,7 @@ Spec: [SR-TABLES](../../records/0122_TABLES.md). MIT.
2395
2395
 
2396
2396
  ---
2397
2397
 
2398
- <!-- source: packages/compare/README.md (https://github.com/arpitarya/sheetpane/blob/v0.4.0/packages/compare/README.md) -->
2398
+ <!-- source: packages/compare/README.md (https://github.com/arpitarya/sheetpane/blob/v0.4.2/packages/compare/README.md) -->
2399
2399
 
2400
2400
  # @sheetpane/compare
2401
2401
 
@@ -2467,7 +2467,7 @@ Spec: [SR-COMPARE](../../records/0124_COMPARE.md). MIT.
2467
2467
 
2468
2468
  ---
2469
2469
 
2470
- <!-- source: packages/review/README.md (https://github.com/arpitarya/sheetpane/blob/v0.4.0/packages/review/README.md) -->
2470
+ <!-- source: packages/review/README.md (https://github.com/arpitarya/sheetpane/blob/v0.4.2/packages/review/README.md) -->
2471
2471
 
2472
2472
  # @sheetpane/review
2473
2473
 
@@ -2599,7 +2599,7 @@ Spec: [SR-REVIEW](../../records/0123_REVIEW.md). MIT.
2599
2599
 
2600
2600
  ---
2601
2601
 
2602
- <!-- source: packages/fixtures/README.md (https://github.com/arpitarya/sheetpane/blob/v0.4.0/packages/fixtures/README.md) -->
2602
+ <!-- source: packages/fixtures/README.md (https://github.com/arpitarya/sheetpane/blob/v0.4.2/packages/fixtures/README.md) -->
2603
2603
 
2604
2604
  # @sheetpane/fixtures
2605
2605
 
@@ -2639,7 +2639,7 @@ The spec is the record [SR-FIXTURES](../../records/0115_FIXTURES.md).
2639
2639
 
2640
2640
  ---
2641
2641
 
2642
- <!-- source: packages/testing/README.md (https://github.com/arpitarya/sheetpane/blob/v0.4.0/packages/testing/README.md) -->
2642
+ <!-- source: packages/testing/README.md (https://github.com/arpitarya/sheetpane/blob/v0.4.2/packages/testing/README.md) -->
2643
2643
 
2644
2644
  # @sheetpane/testing
2645
2645
 
@@ -2689,7 +2689,7 @@ The spec is the record [SR-TESTING](../../records/0118_TESTING.md).
2689
2689
 
2690
2690
  ---
2691
2691
 
2692
- <!-- source: packages/skills/README.md (https://github.com/arpitarya/sheetpane/blob/v0.4.0/packages/skills/README.md) -->
2692
+ <!-- source: packages/skills/README.md (https://github.com/arpitarya/sheetpane/blob/v0.4.2/packages/skills/README.md) -->
2693
2693
 
2694
2694
  # @sheetpane/skills
2695
2695
 
@@ -2760,7 +2760,7 @@ the elements do not have. The spec is the record
2760
2760
 
2761
2761
  ---
2762
2762
 
2763
- <!-- source: packages/mcp/README.md (https://github.com/arpitarya/sheetpane/blob/v0.4.0/packages/mcp/README.md) -->
2763
+ <!-- source: packages/mcp/README.md (https://github.com/arpitarya/sheetpane/blob/v0.4.2/packages/mcp/README.md) -->
2764
2764
 
2765
2765
  # @sheetpane/mcp
2766
2766
 
@@ -2801,7 +2801,7 @@ Spec: [SR-MCP](../../records/0119_MCP.md). MIT.
2801
2801
 
2802
2802
  ---
2803
2803
 
2804
- <!-- source: docs/ARCHITECTURE.md (https://github.com/arpitarya/sheetpane/blob/v0.4.0/docs/ARCHITECTURE.md) -->
2804
+ <!-- source: docs/ARCHITECTURE.md (https://github.com/arpitarya/sheetpane/blob/v0.4.2/docs/ARCHITECTURE.md) -->
2805
2805
 
2806
2806
  # sheetpane — architecture
2807
2807
 
@@ -3040,7 +3040,7 @@ How it is all tested — Vitest, real browsers, fixtures, goldens — is the
3040
3040
 
3041
3041
  ---
3042
3042
 
3043
- <!-- source: docs/GLOSSARY.md (https://github.com/arpitarya/sheetpane/blob/v0.4.0/docs/GLOSSARY.md) -->
3043
+ <!-- source: docs/GLOSSARY.md (https://github.com/arpitarya/sheetpane/blob/v0.4.2/docs/GLOSSARY.md) -->
3044
3044
 
3045
3045
  # Glossary
3046
3046
 
@@ -3081,7 +3081,7 @@ How it is all tested — Vitest, real browsers, fixtures, goldens — is the
3081
3081
 
3082
3082
  ---
3083
3083
 
3084
- <!-- source: docs/ERRORS.md (https://github.com/arpitarya/sheetpane/blob/v0.4.0/docs/ERRORS.md) -->
3084
+ <!-- source: docs/ERRORS.md (https://github.com/arpitarya/sheetpane/blob/v0.4.2/docs/ERRORS.md) -->
3085
3085
 
3086
3086
  # Error codes
3087
3087
 
@@ -4162,7 +4162,7 @@ throws: each problem is one `note` error, `author: 'host'`, with its `code`.
4162
4162
 
4163
4163
  ---
4164
4164
 
4165
- <!-- source: records/0001_LAWS.md (https://github.com/arpitarya/sheetpane/blob/v0.4.0/records/0001_LAWS.md) -->
4165
+ <!-- source: records/0001_LAWS.md (https://github.com/arpitarya/sheetpane/blob/v0.4.2/records/0001_LAWS.md) -->
4166
4166
 
4167
4167
  # SR-LAWS — the laws have exactly one home each
4168
4168
 
@@ -4248,7 +4248,7 @@ carries a law's normative text.
4248
4248
 
4249
4249
  ---
4250
4250
 
4251
- <!-- source: records/0002_LAW-0-authority.md (https://github.com/arpitarya/sheetpane/blob/v0.4.0/records/0002_LAW-0-authority.md) -->
4251
+ <!-- source: records/0002_LAW-0-authority.md (https://github.com/arpitarya/sheetpane/blob/v0.4.2/records/0002_LAW-0-authority.md) -->
4252
4252
 
4253
4253
  # SR-LAW-0 — L0, the records are the only source of truth
4254
4254
 
@@ -4364,7 +4364,7 @@ is never listed here.*
4364
4364
 
4365
4365
  ---
4366
4366
 
4367
- <!-- source: records/0003_LAW-1-retired-records-archived.md (https://github.com/arpitarya/sheetpane/blob/v0.4.0/records/0003_LAW-1-retired-records-archived.md) -->
4367
+ <!-- source: records/0003_LAW-1-retired-records-archived.md (https://github.com/arpitarya/sheetpane/blob/v0.4.2/records/0003_LAW-1-retired-records-archived.md) -->
4368
4368
 
4369
4369
  # SR-LAW-1 — L1, a retired record is archived, never deleted
4370
4370
 
@@ -4457,7 +4457,7 @@ is never listed here.*
4457
4457
 
4458
4458
  ---
4459
4459
 
4460
- <!-- source: records/0004_LAW-2-foss-dependencies.md (https://github.com/arpitarya/sheetpane/blob/v0.4.0/records/0004_LAW-2-foss-dependencies.md) -->
4460
+ <!-- source: records/0004_LAW-2-foss-dependencies.md (https://github.com/arpitarya/sheetpane/blob/v0.4.2/records/0004_LAW-2-foss-dependencies.md) -->
4461
4461
 
4462
4462
  # SR-LAW-2 — L2, every dependency is free and open source
4463
4463
 
@@ -4566,7 +4566,7 @@ is never listed here.*
4566
4566
 
4567
4567
  ---
4568
4568
 
4569
- <!-- source: records/0005_LAW-3-xlsx-and-csv-only.md (https://github.com/arpitarya/sheetpane/blob/v0.4.0/records/0005_LAW-3-xlsx-and-csv-only.md) -->
4569
+ <!-- source: records/0005_LAW-3-xlsx-and-csv-only.md (https://github.com/arpitarya/sheetpane/blob/v0.4.2/records/0005_LAW-3-xlsx-and-csv-only.md) -->
4570
4570
 
4571
4571
  # SR-LAW-3 — L3, sheetpane supports XLSX and CSV only
4572
4572
 
@@ -4679,7 +4679,7 @@ is never listed here.*
4679
4679
 
4680
4680
  ---
4681
4681
 
4682
- <!-- source: records/0006_LAW-4-web-component.md (https://github.com/arpitarya/sheetpane/blob/v0.4.0/records/0006_LAW-4-web-component.md) -->
4682
+ <!-- source: records/0006_LAW-4-web-component.md (https://github.com/arpitarya/sheetpane/blob/v0.4.2/records/0006_LAW-4-web-component.md) -->
4683
4683
 
4684
4684
  # SR-LAW-4 — L4, sheetpane is always a web component
4685
4685
 
@@ -4799,7 +4799,7 @@ is never listed here.*
4799
4799
 
4800
4800
  ---
4801
4801
 
4802
- <!-- source: records/0007_LAW-5-host-font.md (https://github.com/arpitarya/sheetpane/blob/v0.4.0/records/0007_LAW-5-host-font.md) -->
4802
+ <!-- source: records/0007_LAW-5-host-font.md (https://github.com/arpitarya/sheetpane/blob/v0.4.2/records/0007_LAW-5-host-font.md) -->
4803
4803
 
4804
4804
  # SR-LAW-5 — L5, the font is the browser's default unless the host sets one
4805
4805
 
@@ -4918,7 +4918,7 @@ is never listed here.*
4918
4918
 
4919
4919
  ---
4920
4920
 
4921
- <!-- source: records/0008_LAW-6-edits-in-memory-export-with-changes.md (https://github.com/arpitarya/sheetpane/blob/v0.4.0/records/0008_LAW-6-edits-in-memory-export-with-changes.md) -->
4921
+ <!-- source: records/0008_LAW-6-edits-in-memory-export-with-changes.md (https://github.com/arpitarya/sheetpane/blob/v0.4.2/records/0008_LAW-6-edits-in-memory-export-with-changes.md) -->
4922
4922
 
4923
4923
  # SR-LAW-6 — L6, every change is held in memory and export carries it
4924
4924
 
@@ -5029,7 +5029,7 @@ is never listed here.*
5029
5029
 
5030
5030
  ---
5031
5031
 
5032
- <!-- source: records/0009_LAW-7-surfaces-always-in-sync.md (https://github.com/arpitarya/sheetpane/blob/v0.4.0/records/0009_LAW-7-surfaces-always-in-sync.md) -->
5032
+ <!-- source: records/0009_LAW-7-surfaces-always-in-sync.md (https://github.com/arpitarya/sheetpane/blob/v0.4.2/records/0009_LAW-7-surfaces-always-in-sync.md) -->
5033
5033
 
5034
5034
  # SR-LAW-7 — L7, the view, edit and error components are always in sync
5035
5035
 
@@ -5138,7 +5138,7 @@ is never listed here.*
5138
5138
 
5139
5139
  ---
5140
5140
 
5141
- <!-- source: records/0010_LAW-8-npm-package.md (https://github.com/arpitarya/sheetpane/blob/v0.4.0/records/0010_LAW-8-npm-package.md) -->
5141
+ <!-- source: records/0010_LAW-8-npm-package.md (https://github.com/arpitarya/sheetpane/blob/v0.4.2/records/0010_LAW-8-npm-package.md) -->
5142
5142
 
5143
5143
  # SR-LAW-8 — L8, sheetpane is consumed as an npm package
5144
5144
 
@@ -5247,7 +5247,7 @@ is never listed here.*
5247
5247
 
5248
5248
  ---
5249
5249
 
5250
- <!-- source: records/0011_LAW-9-memory-is-a-javascript-object.md (https://github.com/arpitarya/sheetpane/blob/v0.4.0/records/0011_LAW-9-memory-is-a-javascript-object.md) -->
5250
+ <!-- source: records/0011_LAW-9-memory-is-a-javascript-object.md (https://github.com/arpitarya/sheetpane/blob/v0.4.2/records/0011_LAW-9-memory-is-a-javascript-object.md) -->
5251
5251
 
5252
5252
  # SR-LAW-9 — L9, memory means a JavaScript object, for now
5253
5253
 
@@ -5345,7 +5345,7 @@ is never listed here.*
5345
5345
 
5346
5346
  ---
5347
5347
 
5348
- <!-- source: records/0101_DOWNLOAD.md (https://github.com/arpitarya/sheetpane/blob/v0.4.0/records/0101_DOWNLOAD.md) -->
5348
+ <!-- source: records/0101_DOWNLOAD.md (https://github.com/arpitarya/sheetpane/blob/v0.4.2/records/0101_DOWNLOAD.md) -->
5349
5349
 
5350
5350
  # SR-DOWNLOAD — download(): export output in, a saved .xlsx or .csv out
5351
5351
 
@@ -5591,7 +5591,7 @@ is never listed here.*
5591
5591
 
5592
5592
  ---
5593
5593
 
5594
- <!-- source: records/0102_BUILD.md (https://github.com/arpitarya/sheetpane/blob/v0.4.0/records/0102_BUILD.md) -->
5594
+ <!-- source: records/0102_BUILD.md (https://github.com/arpitarya/sheetpane/blob/v0.4.2/records/0102_BUILD.md) -->
5595
5595
 
5596
5596
  # SR-BUILD — the monorepo build
5597
5597
 
@@ -5783,8 +5783,11 @@ pnpm and a justfile; the testing verdict chose the runner.
5783
5783
  site` → `site/` (`scripts/build-site.mjs`: the HTML gallery at `/` with
5784
5784
  every file its import map names copied in, the React gallery at `/react/`
5785
5785
  with a relative base, the version in both headers, no third-party script)
5786
- — checks it with `demo-check`, and deploys it to GitHub Pages;
5787
- `publish.yml` publishes the packages when a GitHub Release is published
5786
+ — checks it with `demo-check`, and deploys it to GitHub Pages (the
5787
+ `github-pages` environment must allow the branch `main` for a manual run
5788
+ and the tag pattern `v*` for a release: without the tag rule every
5789
+ release's deploy was refused, 2026-10-19, fixed in the repository's
5790
+ settings); `publish.yml` publishes the packages when a GitHub Release is published
5788
5791
  (decision 9).
5789
5792
  8b. **Starters and links (W-44):** `scripts/build-starters.mjs` (`just
5790
5793
  starters`) scaffolds every `create-sheetpane` template with the CLI itself
@@ -5819,10 +5822,14 @@ pnpm and a justfile; the testing verdict chose the runner.
5819
5822
  already on npm is skipped, so a failed run is re-run. **No token** — npm
5820
5823
  trusted publishing (OIDC; the decider's ruling, 2026-10-19: no
5821
5824
  `NPM_TOKEN`). Trusted publishing needs the package to exist: the first
5822
- version is published once by hand, then each package trusts `publish.yml`
5823
- and environment `npm` (npmjs.com, or `scripts/npm-trust.sh`). Neither name
5824
- may change: npmjs.com is bound to both. Never `npm publish` from a package
5825
- folder: npm ships `workspace:*` literally.
5825
+ version is published once by hand — `pnpm publish` in the package's
5826
+ folder, approved in the browser (no code; pnpm rewrites `workspace:*` to
5827
+ the exact version), as `@sheetpane/tables`, `review` and `compare` were at
5828
+ 0.4.0 — then the release's failed `publish.yml` job is re-run, and each
5829
+ package trusts `publish.yml` and environment `npm` (npmjs.com, or
5830
+ `scripts/npm-trust.sh`). Neither name may change: npmjs.com is bound to
5831
+ both. Never plain `npm publish` from a package folder: npm ships
5832
+ `workspace:*` literally.
5826
5833
  9a. **llms.txt (W-38):** `scripts/build-llms.mjs` (`just llms`, no
5827
5834
  dependencies, deterministic) writes `llms.txt` (llmstxt.org: an H1, a
5828
5835
  summary, sections Start · Elements · Plugins · Rules and errors · Testing
@@ -5894,7 +5901,8 @@ pnpm and a justfile; the testing verdict chose the runner.
5894
5901
  - **Enforced today:** decisions 6, 7 and 10 by `just check` / `just
5895
5902
  pack-check`, locally and in CI.
5896
5903
  - **Owed by the decider:** the first publish by hand (any package not yet on
5897
- npm), a trusted publisher per package (`publish.yml`, environment `npm`,
5904
+ npm), a trusted publisher per package (all 20 have one since 0.4.1,
5905
+ 2026-10-19) (`publish.yml`, environment `npm`,
5898
5906
  *Allow npm publish*) and the `npm` environment in GitHub — `RELEASING.md`
5899
5907
  §One time; the `@sheetpane` organisation exists.
5900
5908
  - **Still open:** the licence check over the whole lockfile (backlog B-008);
@@ -5948,7 +5956,7 @@ is never listed here.*
5948
5956
 
5949
5957
  ---
5950
5958
 
5951
- <!-- source: records/0103_EXPORT.md (https://github.com/arpitarya/sheetpane/blob/v0.4.0/records/0103_EXPORT.md) -->
5959
+ <!-- source: records/0103_EXPORT.md (https://github.com/arpitarya/sheetpane/blob/v0.4.2/records/0103_EXPORT.md) -->
5952
5960
 
5953
5961
  # SR-EXPORT — @sheetpane/export
5954
5962
 
@@ -6270,7 +6278,7 @@ is never listed here.*
6270
6278
 
6271
6279
  ---
6272
6280
 
6273
- <!-- source: records/0104_IMPORT.md (https://github.com/arpitarya/sheetpane/blob/v0.4.0/records/0104_IMPORT.md) -->
6281
+ <!-- source: records/0104_IMPORT.md (https://github.com/arpitarya/sheetpane/blob/v0.4.2/records/0104_IMPORT.md) -->
6274
6282
 
6275
6283
  # SR-IMPORT — @sheetpane/import
6276
6284
 
@@ -6568,7 +6576,7 @@ is never listed here.*
6568
6576
 
6569
6577
  ---
6570
6578
 
6571
- <!-- source: records/0105_GRID.md (https://github.com/arpitarya/sheetpane/blob/v0.4.0/records/0105_GRID.md) -->
6579
+ <!-- source: records/0105_GRID.md (https://github.com/arpitarya/sheetpane/blob/v0.4.2/records/0105_GRID.md) -->
6572
6580
 
6573
6581
  # SR-GRID — @sheetpane/grid
6574
6582
 
@@ -7720,7 +7728,7 @@ is never listed here.*
7720
7728
 
7721
7729
  ---
7722
7730
 
7723
- <!-- source: records/0106_ERRORS.md (https://github.com/arpitarya/sheetpane/blob/v0.4.0/records/0106_ERRORS.md) -->
7731
+ <!-- source: records/0106_ERRORS.md (https://github.com/arpitarya/sheetpane/blob/v0.4.2/records/0106_ERRORS.md) -->
7724
7732
 
7725
7733
  # SR-ERRORS — <sheetpane-errors>
7726
7734
 
@@ -8040,7 +8048,7 @@ is never listed here.*
8040
8048
 
8041
8049
  ---
8042
8050
 
8043
- <!-- source: records/0107_IMAGES.md (https://github.com/arpitarya/sheetpane/blob/v0.4.0/records/0107_IMAGES.md) -->
8051
+ <!-- source: records/0107_IMAGES.md (https://github.com/arpitarya/sheetpane/blob/v0.4.2/records/0107_IMAGES.md) -->
8044
8052
 
8045
8053
  # SR-IMAGES — @sheetpane/images
8046
8054
 
@@ -8168,7 +8176,7 @@ is never listed here.*
8168
8176
 
8169
8177
  ---
8170
8178
 
8171
- <!-- source: records/0108_VALIDATION.md (https://github.com/arpitarya/sheetpane/blob/v0.4.0/records/0108_VALIDATION.md) -->
8179
+ <!-- source: records/0108_VALIDATION.md (https://github.com/arpitarya/sheetpane/blob/v0.4.2/records/0108_VALIDATION.md) -->
8172
8180
 
8173
8181
  # SR-VALIDATION — @sheetpane/validation
8174
8182
 
@@ -8420,7 +8428,7 @@ is never listed here.*
8420
8428
 
8421
8429
  ---
8422
8430
 
8423
- <!-- source: records/0109_NUMFMT.md (https://github.com/arpitarya/sheetpane/blob/v0.4.0/records/0109_NUMFMT.md) -->
8431
+ <!-- source: records/0109_NUMFMT.md (https://github.com/arpitarya/sheetpane/blob/v0.4.2/records/0109_NUMFMT.md) -->
8424
8432
 
8425
8433
  # SR-NUMFMT — @sheetpane/numfmt
8426
8434
 
@@ -8556,7 +8564,7 @@ is never listed here.*
8556
8564
 
8557
8565
  ---
8558
8566
 
8559
- <!-- source: records/0110_STYLES.md (https://github.com/arpitarya/sheetpane/blob/v0.4.0/records/0110_STYLES.md) -->
8567
+ <!-- source: records/0110_STYLES.md (https://github.com/arpitarya/sheetpane/blob/v0.4.2/records/0110_STYLES.md) -->
8560
8568
 
8561
8569
  # SR-STYLES — @sheetpane/styles
8562
8570
 
@@ -8722,7 +8730,7 @@ is never listed here.*
8722
8730
 
8723
8731
  ---
8724
8732
 
8725
- <!-- source: records/0111_FORMULAS.md (https://github.com/arpitarya/sheetpane/blob/v0.4.0/records/0111_FORMULAS.md) -->
8733
+ <!-- source: records/0111_FORMULAS.md (https://github.com/arpitarya/sheetpane/blob/v0.4.2/records/0111_FORMULAS.md) -->
8726
8734
 
8727
8735
  # SR-FORMULAS — @sheetpane/formulas
8728
8736
 
@@ -8892,7 +8900,7 @@ is never listed here.*
8892
8900
 
8893
8901
  ---
8894
8902
 
8895
- <!-- source: records/0112_COMMENTS.md (https://github.com/arpitarya/sheetpane/blob/v0.4.0/records/0112_COMMENTS.md) -->
8903
+ <!-- source: records/0112_COMMENTS.md (https://github.com/arpitarya/sheetpane/blob/v0.4.2/records/0112_COMMENTS.md) -->
8896
8904
 
8897
8905
  # SR-COMMENTS — @sheetpane/comments
8898
8906
 
@@ -9065,7 +9073,7 @@ is never listed here.*
9065
9073
 
9066
9074
  ---
9067
9075
 
9068
- <!-- source: records/0113_CHARTS.md (https://github.com/arpitarya/sheetpane/blob/v0.4.0/records/0113_CHARTS.md) -->
9076
+ <!-- source: records/0113_CHARTS.md (https://github.com/arpitarya/sheetpane/blob/v0.4.2/records/0113_CHARTS.md) -->
9069
9077
 
9070
9078
  # SR-CHARTS — @sheetpane/charts
9071
9079
 
@@ -9217,7 +9225,7 @@ is never listed here.*
9217
9225
 
9218
9226
  ---
9219
9227
 
9220
- <!-- source: records/0114_CONDFMT.md (https://github.com/arpitarya/sheetpane/blob/v0.4.0/records/0114_CONDFMT.md) -->
9228
+ <!-- source: records/0114_CONDFMT.md (https://github.com/arpitarya/sheetpane/blob/v0.4.2/records/0114_CONDFMT.md) -->
9221
9229
 
9222
9230
  # SR-CONDFMT — @sheetpane/condfmt
9223
9231
 
@@ -9370,7 +9378,7 @@ is never listed here.*
9370
9378
 
9371
9379
  ---
9372
9380
 
9373
- <!-- source: records/0115_FIXTURES.md (https://github.com/arpitarya/sheetpane/blob/v0.4.0/records/0115_FIXTURES.md) -->
9381
+ <!-- source: records/0115_FIXTURES.md (https://github.com/arpitarya/sheetpane/blob/v0.4.2/records/0115_FIXTURES.md) -->
9374
9382
 
9375
9383
  # SR-FIXTURES — @sheetpane/fixtures
9376
9384
 
@@ -9522,7 +9530,7 @@ is never listed here.*
9522
9530
 
9523
9531
  ---
9524
9532
 
9525
- <!-- source: records/0116_SKILLS.md (https://github.com/arpitarya/sheetpane/blob/v0.4.0/records/0116_SKILLS.md) -->
9533
+ <!-- source: records/0116_SKILLS.md (https://github.com/arpitarya/sheetpane/blob/v0.4.2/records/0116_SKILLS.md) -->
9526
9534
 
9527
9535
  # SR-SKILLS — @sheetpane/skills
9528
9536
 
@@ -9716,7 +9724,7 @@ is never listed here.*
9716
9724
 
9717
9725
  ---
9718
9726
 
9719
- <!-- source: records/0117_CODES.md (https://github.com/arpitarya/sheetpane/blob/v0.4.0/records/0117_CODES.md) -->
9727
+ <!-- source: records/0117_CODES.md (https://github.com/arpitarya/sheetpane/blob/v0.4.2/records/0117_CODES.md) -->
9720
9728
 
9721
9729
  # SR-CODES — stable error codes
9722
9730
 
@@ -9885,7 +9893,7 @@ is never listed here.*
9885
9893
 
9886
9894
  ---
9887
9895
 
9888
- <!-- source: records/0118_TESTING.md (https://github.com/arpitarya/sheetpane/blob/v0.4.0/records/0118_TESTING.md) -->
9896
+ <!-- source: records/0118_TESTING.md (https://github.com/arpitarya/sheetpane/blob/v0.4.2/records/0118_TESTING.md) -->
9889
9897
 
9890
9898
  # SR-TESTING — @sheetpane/testing
9891
9899
 
@@ -9987,7 +9995,7 @@ is never listed here.*
9987
9995
 
9988
9996
  ---
9989
9997
 
9990
- <!-- source: records/0119_MCP.md (https://github.com/arpitarya/sheetpane/blob/v0.4.0/records/0119_MCP.md) -->
9998
+ <!-- source: records/0119_MCP.md (https://github.com/arpitarya/sheetpane/blob/v0.4.2/records/0119_MCP.md) -->
9991
9999
 
9992
10000
  # SR-MCP — @sheetpane/mcp
9993
10001
 
@@ -10168,7 +10176,7 @@ is never listed here.*
10168
10176
 
10169
10177
  ---
10170
10178
 
10171
- <!-- source: records/0121_VISIBILITY.md (https://github.com/arpitarya/sheetpane/blob/v0.4.0/records/0121_VISIBILITY.md) -->
10179
+ <!-- source: records/0121_VISIBILITY.md (https://github.com/arpitarya/sheetpane/blob/v0.4.2/records/0121_VISIBILITY.md) -->
10172
10180
 
10173
10181
  # SR-VISIBILITY — @sheetpane/visibility
10174
10182
 
@@ -10282,7 +10290,7 @@ is never listed here.*
10282
10290
 
10283
10291
  ---
10284
10292
 
10285
- <!-- source: records/0122_TABLES.md (https://github.com/arpitarya/sheetpane/blob/v0.4.0/records/0122_TABLES.md) -->
10293
+ <!-- source: records/0122_TABLES.md (https://github.com/arpitarya/sheetpane/blob/v0.4.2/records/0122_TABLES.md) -->
10286
10294
 
10287
10295
  # SR-TABLES — @sheetpane/tables
10288
10296
 
@@ -10404,7 +10412,7 @@ is never listed here.*
10404
10412
 
10405
10413
  ---
10406
10414
 
10407
- <!-- source: records/0123_REVIEW.md (https://github.com/arpitarya/sheetpane/blob/v0.4.0/records/0123_REVIEW.md) -->
10415
+ <!-- source: records/0123_REVIEW.md (https://github.com/arpitarya/sheetpane/blob/v0.4.2/records/0123_REVIEW.md) -->
10408
10416
 
10409
10417
  # SR-REVIEW — @sheetpane/review
10410
10418
 
@@ -10603,7 +10611,7 @@ is never listed here.*
10603
10611
 
10604
10612
  ---
10605
10613
 
10606
- <!-- source: records/0124_COMPARE.md (https://github.com/arpitarya/sheetpane/blob/v0.4.0/records/0124_COMPARE.md) -->
10614
+ <!-- source: records/0124_COMPARE.md (https://github.com/arpitarya/sheetpane/blob/v0.4.2/records/0124_COMPARE.md) -->
10607
10615
 
10608
10616
  # SR-COMPARE — @sheetpane/compare
10609
10617
 
package/dist/llms.txt CHANGED
@@ -1,114 +1,114 @@
1
1
  # sheetpane
2
2
 
3
- > View, edit and review .xlsx and .csv files inside any web page: two web components — <sheetpane-excel> (the sheet, View or Edit) and <sheetpane-errors> (the review list) — kept in sync through one in-memory workbook per `pane`, an export that writes every change into a copy of the upload, eight optional plugins, column rules and a JSON rules file. Nothing is uploaded. Version 0.4.0.
3
+ > View, edit and review .xlsx and .csv files inside any web page: two web components — <sheetpane-excel> (the sheet, View or Edit) and <sheetpane-errors> (the review list) — kept in sync through one in-memory workbook per `pane`, an export that writes every change into a copy of the upload, eight optional plugins, column rules and a JSON rules file. Nothing is uploaded. Version 0.4.2.
4
4
 
5
5
  Every rule lives in one standing record; READMEs and skills point to them. The full text of everything below is in llms-full.txt.
6
6
 
7
7
  ## Start
8
- - [sheetpane](https://github.com/arpitarya/sheetpane/blob/v0.4.0/README.md): what it is, the packages, try it
9
- - [@sheetpane/grid](https://github.com/arpitarya/sheetpane/blob/v0.4.0/packages/grid/README.md): the elements: attributes, properties, events, column rules, rules file, React hooks, styling
10
- - [Architecture](https://github.com/arpitarya/sheetpane/blob/v0.4.0/docs/ARCHITECTURE.md): packages, elements, the one workbook, the flows
11
- - [Changelog](https://github.com/arpitarya/sheetpane/blob/v0.4.0/CHANGELOG.md): what changed, breaking changes first
8
+ - [sheetpane](https://github.com/arpitarya/sheetpane/blob/v0.4.2/README.md): what it is, the packages, try it
9
+ - [@sheetpane/grid](https://github.com/arpitarya/sheetpane/blob/v0.4.2/packages/grid/README.md): the elements: attributes, properties, events, column rules, rules file, React hooks, styling
10
+ - [Architecture](https://github.com/arpitarya/sheetpane/blob/v0.4.2/docs/ARCHITECTURE.md): packages, elements, the one workbook, the flows
11
+ - [Changelog](https://github.com/arpitarya/sheetpane/blob/v0.4.2/CHANGELOG.md): what changed, breaking changes first
12
12
 
13
13
  ## Try it
14
14
  - [Live playground](https://arpitarya.github.io/sheetpane/): the plugin gallery in plain HTML; `/react/` in React (deployed from each release)
15
- - [Starters](https://github.com/arpitarya/sheetpane/blob/v0.4.0/examples/starters/README.md): one starter app per framework, with an Open in StackBlitz link
15
+ - [Starters](https://github.com/arpitarya/sheetpane/blob/v0.4.2/examples/starters/README.md): one starter app per framework, with an Open in StackBlitz link
16
16
 
17
17
  ## Elements
18
- - [SR-GRID](https://github.com/arpitarya/sheetpane/blob/v0.4.0/records/0105_GRID.md): the sheet, the store, the plugin host, events, rules, test hooks
19
- - [SR-ERRORS](https://github.com/arpitarya/sheetpane/blob/v0.4.0/records/0106_ERRORS.md): the error list and the New error form
20
- - [custom-elements.json](https://github.com/arpitarya/sheetpane/blob/v0.4.0/packages/grid/custom-elements.json): both elements as a Custom Elements Manifest: attributes, properties, methods, events with payload types, slots, parts, --sp-* properties
21
- - [Vue, Svelte, Solid, Angular](https://github.com/arpitarya/sheetpane/blob/v0.4.0/packages/grid/README.md#vue-svelte-solid-angular): the elements in each framework; typings @sheetpane/grid/jsx, /vue, /svelte, /solid
22
- - [@sheetpane/import](https://github.com/arpitarya/sheetpane/blob/v0.4.0/packages/import/README.md): read .xlsx / .csv into a JavaScript workbook
23
- - [@sheetpane/export](https://github.com/arpitarya/sheetpane/blob/v0.4.0/packages/export/README.md): write .xlsx / .csv, patch the original, download()
18
+ - [SR-GRID](https://github.com/arpitarya/sheetpane/blob/v0.4.2/records/0105_GRID.md): the sheet, the store, the plugin host, events, rules, test hooks
19
+ - [SR-ERRORS](https://github.com/arpitarya/sheetpane/blob/v0.4.2/records/0106_ERRORS.md): the error list and the New error form
20
+ - [custom-elements.json](https://github.com/arpitarya/sheetpane/blob/v0.4.2/packages/grid/custom-elements.json): both elements as a Custom Elements Manifest: attributes, properties, methods, events with payload types, slots, parts, --sp-* properties
21
+ - [Vue, Svelte, Solid, Angular](https://github.com/arpitarya/sheetpane/blob/v0.4.2/packages/grid/README.md#vue-svelte-solid-angular): the elements in each framework; typings @sheetpane/grid/jsx, /vue, /svelte, /solid
22
+ - [@sheetpane/import](https://github.com/arpitarya/sheetpane/blob/v0.4.2/packages/import/README.md): read .xlsx / .csv into a JavaScript workbook
23
+ - [@sheetpane/export](https://github.com/arpitarya/sheetpane/blob/v0.4.2/packages/export/README.md): write .xlsx / .csv, patch the original, download()
24
24
 
25
25
  ## Plugins
26
- - [@sheetpane/numfmt](https://github.com/arpitarya/sheetpane/blob/v0.4.0/packages/numfmt/README.md): Excel number formats for sheetpane — currency, dates, fractions, elapsed time, conditional sections, locales — as a plugin on the `format` hook.
27
- - [@sheetpane/formulas](https://github.com/arpitarya/sheetpane/blob/v0.4.0/packages/formulas/README.md): Formula recalculation for sheetpane — edit a cell and every dependent formula updates — as a plugin on the `derive` hook, backed by IronCalc (WASM, lazy-loaded).
28
- - [@sheetpane/styles](https://github.com/arpitarya/sheetpane/blob/v0.4.0/packages/styles/README.md): Cell styles for sheetpane — fill, bold, italic, underline, strikethrough, colour, size, borders, alignment, wrap — as a plugin on the `decorate` hook. Never a font family (SR-LAW-5): the host's font is the font.
29
- - [@sheetpane/validation](https://github.com/arpitarya/sheetpane/blob/v0.4.0/packages/validation/README.md): The workbook's own data-validation rules, checked when the file loads and after every edit. Each cell that breaks a rule shows up as a warning in `<sheetpane-errors>`.
30
- - [@sheetpane/condfmt](https://github.com/arpitarya/sheetpane/blob/v0.4.0/packages/condfmt/README.md): Conditional formatting for sheetpane — the file's own `<conditionalFormatting>` rules drawn as Excel draws them: value and text rules, duplicates, top / bottom, averages, colour scales, data bars and formula rules — as a plugin on the `decorate` hook, after `@sheetpane/styles`. Render only: nothing here writes a rule.
31
- - [@sheetpane/images](https://github.com/arpitarya/sheetpane/blob/v0.4.0/packages/images/README.md): Images for sheetpane — pictures anchored in the sheet drawn in sheet space through the `overlay` hook; view only, kept on export.
32
- - [@sheetpane/charts](https://github.com/arpitarya/sheetpane/blob/v0.4.0/packages/charts/README.md): Charts for sheetpane — each chart in a workbook shown at its anchor: a frame with its title, type, series count and Show source cells (stage 1), drawn as our own SVG for bar, column, line, pie and scatter (stage 2) — through the `overlay` hook.
33
- - [@sheetpane/comments](https://github.com/arpitarya/sheetpane/blob/v0.4.0/packages/comments/README.md): Excel's comments and sheetpane's errors, in both directions. When a file loads, its notes and threaded comments show up in `<sheetpane-errors>`. When you export, every error in the review goes into the file as an Excel threaded comment on its cell.
34
- - [@sheetpane/visibility](https://github.com/arpitarya/sheetpane/blob/v0.4.0/packages/visibility/README.md): Hide and unhide rows, columns and sheets in `<sheetpane-excel>` — as changes, written into the download.
35
- - [@sheetpane/tables](https://github.com/arpitarya/sheetpane/blob/v0.4.0/packages/tables/README.md): Excel tables in `<sheetpane-excel>`, drawn as their style draws them — header row, banded rows and columns, totals row.
36
- - [@sheetpane/compare](https://github.com/arpitarya/sheetpane/blob/v0.4.0/packages/compare/README.md): What changed between two versions of a workbook — on the sheet in `<sheetpane-excel>`, or as data in Node.
37
- - [@sheetpane/review](https://github.com/arpitarya/sheetpane/blob/v0.4.0/packages/review/README.md): The review written into the download as a sheet of its own. Every error is listed on a *Review* sheet with a link to its cell. Optionally, each flagged cell is filled by severity, so a reviewer can work the list in Excel, fix the file and upload it again.
26
+ - [@sheetpane/numfmt](https://github.com/arpitarya/sheetpane/blob/v0.4.2/packages/numfmt/README.md): Excel number formats for sheetpane — currency, dates, fractions, elapsed time, conditional sections, locales — as a plugin on the `format` hook.
27
+ - [@sheetpane/formulas](https://github.com/arpitarya/sheetpane/blob/v0.4.2/packages/formulas/README.md): Formula recalculation for sheetpane — edit a cell and every dependent formula updates — as a plugin on the `derive` hook, backed by IronCalc (WASM, lazy-loaded).
28
+ - [@sheetpane/styles](https://github.com/arpitarya/sheetpane/blob/v0.4.2/packages/styles/README.md): Cell styles for sheetpane — fill, bold, italic, underline, strikethrough, colour, size, borders, alignment, wrap — as a plugin on the `decorate` hook. Never a font family (SR-LAW-5): the host's font is the font.
29
+ - [@sheetpane/validation](https://github.com/arpitarya/sheetpane/blob/v0.4.2/packages/validation/README.md): The workbook's own data-validation rules, checked when the file loads and after every edit. Each cell that breaks a rule shows up as a warning in `<sheetpane-errors>`.
30
+ - [@sheetpane/condfmt](https://github.com/arpitarya/sheetpane/blob/v0.4.2/packages/condfmt/README.md): Conditional formatting for sheetpane — the file's own `<conditionalFormatting>` rules drawn as Excel draws them: value and text rules, duplicates, top / bottom, averages, colour scales, data bars and formula rules — as a plugin on the `decorate` hook, after `@sheetpane/styles`. Render only: nothing here writes a rule.
31
+ - [@sheetpane/images](https://github.com/arpitarya/sheetpane/blob/v0.4.2/packages/images/README.md): Images for sheetpane — pictures anchored in the sheet drawn in sheet space through the `overlay` hook; view only, kept on export.
32
+ - [@sheetpane/charts](https://github.com/arpitarya/sheetpane/blob/v0.4.2/packages/charts/README.md): Charts for sheetpane — each chart in a workbook shown at its anchor: a frame with its title, type, series count and Show source cells (stage 1), drawn as our own SVG for bar, column, line, pie and scatter (stage 2) — through the `overlay` hook.
33
+ - [@sheetpane/comments](https://github.com/arpitarya/sheetpane/blob/v0.4.2/packages/comments/README.md): Excel's comments and sheetpane's errors, in both directions. When a file loads, its notes and threaded comments show up in `<sheetpane-errors>`. When you export, every error in the review goes into the file as an Excel threaded comment on its cell.
34
+ - [@sheetpane/visibility](https://github.com/arpitarya/sheetpane/blob/v0.4.2/packages/visibility/README.md): Hide and unhide rows, columns and sheets in `<sheetpane-excel>` — as changes, written into the download.
35
+ - [@sheetpane/tables](https://github.com/arpitarya/sheetpane/blob/v0.4.2/packages/tables/README.md): Excel tables in `<sheetpane-excel>`, drawn as their style draws them — header row, banded rows and columns, totals row.
36
+ - [@sheetpane/compare](https://github.com/arpitarya/sheetpane/blob/v0.4.2/packages/compare/README.md): What changed between two versions of a workbook — on the sheet in `<sheetpane-excel>`, or as data in Node.
37
+ - [@sheetpane/review](https://github.com/arpitarya/sheetpane/blob/v0.4.2/packages/review/README.md): The review written into the download as a sheet of its own. Every error is listed on a *Review* sheet with a link to its cell. Optionally, each flagged cell is filled by severity, so a reviewer can work the list in Excel, fix the file and upload it again.
38
38
 
39
39
  ## Rules and errors
40
- - [Column rules](https://github.com/arpitarya/sheetpane/blob/v0.4.0/packages/grid/README.md#column-rules): checks by column title in code
41
- - [Rules file](https://github.com/arpitarya/sheetpane/blob/v0.4.0/packages/grid/README.md#rules-file): valid and invalid values as JSON, rules-src, flagging="off"
42
- - [rules.schema.json](https://github.com/arpitarya/sheetpane/blob/v0.4.0/packages/grid/rules.schema.json): the rules file's JSON Schema
43
- - [Error codes](https://github.com/arpitarya/sheetpane/blob/v0.4.0/docs/ERRORS.md): every SP-xxxx code: meaning, cause, fix
40
+ - [Column rules](https://github.com/arpitarya/sheetpane/blob/v0.4.2/packages/grid/README.md#column-rules): checks by column title in code
41
+ - [Rules file](https://github.com/arpitarya/sheetpane/blob/v0.4.2/packages/grid/README.md#rules-file): valid and invalid values as JSON, rules-src, flagging="off"
42
+ - [rules.schema.json](https://github.com/arpitarya/sheetpane/blob/v0.4.2/packages/grid/rules.schema.json): the rules file's JSON Schema
43
+ - [Error codes](https://github.com/arpitarya/sheetpane/blob/v0.4.2/docs/ERRORS.md): every SP-xxxx code: meaning, cause, fix
44
44
 
45
45
  ## Testing and tooling
46
- - [@sheetpane/testing](https://github.com/arpitarya/sheetpane/blob/v0.4.0/packages/testing/README.md): Playwright and Vitest helpers for host apps
47
- - [@sheetpane/fixtures](https://github.com/arpitarya/sheetpane/blob/v0.4.0/packages/fixtures/README.md): known workbooks with a manifest
46
+ - [@sheetpane/testing](https://github.com/arpitarya/sheetpane/blob/v0.4.2/packages/testing/README.md): Playwright and Vitest helpers for host apps
47
+ - [@sheetpane/fixtures](https://github.com/arpitarya/sheetpane/blob/v0.4.2/packages/fixtures/README.md): known workbooks with a manifest
48
48
 
49
49
  ## Skills
50
- - [@sheetpane/skills](https://github.com/arpitarya/sheetpane/blob/v0.4.0/packages/skills/README.md): npx sheetpane-skills install — skills for Claude Code, Kiro and Codex
51
- - [@sheetpane/mcp](https://github.com/arpitarya/sheetpane/blob/v0.4.0/packages/mcp/README.md): npx -y @sheetpane/mcp — an MCP server: describe the API, inspect a workbook, draft and check a rules file, explain an SP code, find a skill
52
- - [sheetpane](https://github.com/arpitarya/sheetpane/blob/v0.4.0/packages/skills/skills/sheetpane/SKILL.md): Use first for any sheetpane task in a host app - a decision table pointing to the right sheetpane skill (embedding, loading, errors, events, rules, plugins, theming, testing, frameworks, troubleshooting). Not needed once you know which skill applies.
53
- - [sheetpane-a11y](https://github.com/arpitarya/sheetpane/blob/v0.4.0/packages/skills/skills/sheetpane-a11y/SKILL.md): Use when making a host's sheetpane page accessible - the grid's keyboard contract, labelling the host tab or dialog, focus when the pop-up closes, colour never alone. Not for the grid's own internals.
54
- - [sheetpane-backend](https://github.com/arpitarya/sheetpane/blob/v0.4.0/packages/skills/skills/sheetpane-backend/SKILL.md): Use when a host saves the reviewed file and review on a server and restores them, checks a file there with check(), or draws it into a report with renderStatic() - the blob, getErrors()/setErrors() JSON. Not for client-only use.
55
- - [sheetpane-column-rules](https://github.com/arpitarya/sheetpane/blob/v0.4.0/packages/skills/skills/sheetpane-column-rules/SKILL.md): Use when the host checks what users type by column title in code - columns, validate(ctx, signal), on-invalid flag or block, header-row. Not for rules shipped as a JSON file (sheetpane-rules-file) or the workbook's own validation (sheetpane-plugins).
56
- - [sheetpane-embed](https://github.com/arpitarya/sheetpane/blob/v0.4.0/packages/skills/skills/sheetpane-embed/SKILL.md): Use when placing <sheetpane-excel> and <sheetpane-errors> on a page - tab or pop-up, linking them by pane, giving the sheet a height, the host's font. Not for React specifics (sheetpane-react) or loading and saving files (sheetpane-load-export).
57
- - [sheetpane-errors](https://github.com/arpitarya/sheetpane/blob/v0.4.0/packages/skills/skills/sheetpane-errors/SKILL.md): Use for the review list - <sheetpane-errors>, the SheetpaneError schema, getErrors()/setErrors(), sheetpane-errors and sheetpane-reveal, error types. Not for rule-made errors (sheetpane-column-rules) or server storage (sheetpane-backend).
58
- - [sheetpane-events](https://github.com/arpitarya/sheetpane/blob/v0.4.0/packages/skills/skills/sheetpane-events/SKILL.md): Use when a host reacts to what the user does in the sheet - selection, hover, typing, saving, refusing a value, sheet tabs - or outlines cells with highlight(). Not for column checks (sheetpane-column-rules) or the error list (sheetpane-errors).
59
- - [sheetpane-file-work-item](https://github.com/arpitarya/sheetpane/blob/v0.4.0/packages/skills/skills/sheetpane-file-work-item/SKILL.md): Use when contributing to the sheetpane repo and filing a new work item W-nn - the next free id, the item file, its OPEN-WORK row and ball, the worklog and NOW. Not for host apps that use sheetpane.
60
- - [sheetpane-frameworks](https://github.com/arpitarya/sheetpane/blob/v0.4.0/packages/skills/skills/sheetpane-frameworks/SKILL.md): Use when embedding sheetpane in Vue, Svelte, Solid, Angular, Next.js or plain HTML with typed props and events - the custom-element setup, @sheetpane/grid/vue|svelte|solid typings, editor data. Not for React (sheetpane-react).
61
- - [sheetpane-load-export](https://github.com/arpitarya/sheetpane/blob/v0.4.0/packages/skills/skills/sheetpane-load-export/SKILL.md): Use when opening a file in the sheet (src, file, load()) or getting it back (the Download button, export(), sheetpane-export, download()). Not for saving the review (sheetpane-errors, sheetpane-backend) or no-UI read/write (sheetpane-setup).
62
- - [sheetpane-migrate](https://github.com/arpitarya/sheetpane/blob/v0.4.0/packages/skills/skills/sheetpane-migrate/SKILL.md): Use when replacing SheetJS, Handsontable or AG Grid with sheetpane - their concepts mapped to sheetpane's elements, events and plugins, and what has no equivalent. Not for a fresh project (sheetpane-setup).
63
- - [sheetpane-performance](https://github.com/arpitarya/sheetpane/blob/v0.4.0/packages/skills/skills/sheetpane-performance/SKILL.md): Use when a host deals with large workbooks - what loads fast, how rule checks are sliced, lazy-mounting several sheets, what to measure on your own machine and data. Not for small files, which need nothing special.
64
- - [sheetpane-plugin-author](https://github.com/arpitarya/sheetpane/blob/v0.4.0/packages/skills/skills/sheetpane-plugin-author/SKILL.md): Use when writing a sheetpane plugin - the six hooks, the slots and control descriptors, exportOptions, registerPlugin, what a plugin may never do. Not for choosing among the shipped plugins (sheetpane-plugins).
65
- - [sheetpane-plugins](https://github.com/arpitarya/sheetpane/blob/v0.4.0/packages/skills/skills/sheetpane-plugins/SKILL.md): Use when a host needs more than review - number formats, formulas, styles, validation, conditional formats, pictures, charts, comments, Excel tables, compare or a Review sheet - and must pick plugins. Not for writing one (sheetpane-plugin-author).
66
- - [sheetpane-react](https://github.com/arpitarya/sheetpane/blob/v0.4.0/packages/skills/skills/sheetpane-react/SKILL.md): Use when sheetpane is used from React 18 or 19 - props and onsheetpane-* events on the custom elements, refs, the copy-in hook recipes, JSX typing. Not for plain HTML (sheetpane-embed) or Vue, Angular, Svelte, Next.js (sheetpane-frameworks).
67
- - [sheetpane-records](https://github.com/arpitarya/sheetpane/blob/v0.4.0/packages/skills/skills/sheetpane-records/SKILL.md): Use when contributing to the sheetpane repo and a change touches a rule - finding the record that owns a module, the laws, the commit guard, where a rule lives, archive-is-not-evidence. Not for host apps.
68
- - [sheetpane-rules](https://github.com/arpitarya/sheetpane/blob/v0.4.0/packages/skills/skills/sheetpane-rules/SKILL.md): The /sheetpane-rules [workbook or rules file] command - drafts a rules file for a workbook, or fixes one, then runs sheetpane-skills check-rules until it is clean. Not for learning the format (sheetpane-rules-file) or rules in code.
69
- - [sheetpane-rules-file](https://github.com/arpitarya/sheetpane/blob/v0.4.0/packages/skills/skills/sheetpane-rules-file/SKILL.md): Use when valid and invalid values ship as a JSON file per sheet, column or cell, checked on load and listed only in the errors panel - rules / rules-src, its JSON Schema, flagging="off". Not for rules written in code (sheetpane-column-rules).
70
- - [sheetpane-security](https://github.com/arpitarya/sheetpane/blob/v0.4.0/packages/skills/skills/sheetpane-security/SKILL.md): Use when sheetpane handles untrusted uploads or runs under a strict CSP - what the grid reads and never sends, regexes in rules, CSV formula injection, sandboxed iframes, styles in shadow DOM. Not for general web security.
71
- - [sheetpane-setup](https://github.com/arpitarya/sheetpane/blob/v0.4.0/packages/skills/skills/sheetpane-setup/SKILL.md): Use when adding sheetpane to a project - which @sheetpane packages to install, a bundler import or a plain-HTML import map, one version for all. Not for placing the elements (sheetpane-embed) or choosing plugins (sheetpane-plugins).
72
- - [sheetpane-test](https://github.com/arpitarya/sheetpane/blob/v0.4.0/packages/skills/skills/sheetpane-test/SKILL.md): The /sheetpane-test [workbook] command - writes one end-to-end test for a host page with sheetpane - load the .xlsx or .csv (or a fixture), edit a cell, read the download. Not for the testing techniques themselves (sheetpane-testing).
73
- - [sheetpane-testing](https://github.com/arpitarya/sheetpane/blob/v0.4.0/packages/skills/skills/sheetpane-testing/SKILL.md): Use when writing end-to-end or browser tests for a host app that embeds sheetpane - reaching cells in shadow DOM, waiting for sheetpane-load, editing, reading a downloaded .xlsx back, known fixture files. Not for testing sheetpane itself.
74
- - [sheetpane-theming](https://github.com/arpitarya/sheetpane/blob/v0.4.0/packages/skills/skills/sheetpane-theming/SKILL.md): Use when matching sheetpane to a host's look - dark mode via theme, the --sp-* colour tokens, style.css, why no font is set. Not for a workbook's own colours (sheetpane-plugins - styles, condfmt).
75
- - [sheetpane-troubleshoot](https://github.com/arpitarya/sheetpane/blob/v0.4.0/packages/skills/skills/sheetpane-troubleshoot/SKILL.md): Use when sheetpane misbehaves in a host - a blank grid, a file refused, an SP-xxxx code in the console, SSR crashes, CORS on src, copy not working, rules errors that look wrong. Not for designing a feature.
76
- - [sheetpane-upgrade](https://github.com/arpitarya/sheetpane/blob/v0.4.0/packages/skills/skills/sheetpane-upgrade/SKILL.md): Use when moving a host to a newer sheetpane version - reading CHANGELOG.md, the lockstep version rule, removed or renamed controls and events, re-checking a host's tests. Not for first-time setup (sheetpane-setup).
50
+ - [@sheetpane/skills](https://github.com/arpitarya/sheetpane/blob/v0.4.2/packages/skills/README.md): npx sheetpane-skills install — skills for Claude Code, Kiro and Codex
51
+ - [@sheetpane/mcp](https://github.com/arpitarya/sheetpane/blob/v0.4.2/packages/mcp/README.md): npx -y @sheetpane/mcp — an MCP server: describe the API, inspect a workbook, draft and check a rules file, explain an SP code, find a skill
52
+ - [sheetpane](https://github.com/arpitarya/sheetpane/blob/v0.4.2/packages/skills/skills/sheetpane/SKILL.md): Use first for any sheetpane task in a host app - a decision table pointing to the right sheetpane skill (embedding, loading, errors, events, rules, plugins, theming, testing, frameworks, troubleshooting). Not needed once you know which skill applies.
53
+ - [sheetpane-a11y](https://github.com/arpitarya/sheetpane/blob/v0.4.2/packages/skills/skills/sheetpane-a11y/SKILL.md): Use when making a host's sheetpane page accessible - the grid's keyboard contract, labelling the host tab or dialog, focus when the pop-up closes, colour never alone. Not for the grid's own internals.
54
+ - [sheetpane-backend](https://github.com/arpitarya/sheetpane/blob/v0.4.2/packages/skills/skills/sheetpane-backend/SKILL.md): Use when a host saves the reviewed file and review on a server and restores them, checks a file there with check(), or draws it into a report with renderStatic() - the blob, getErrors()/setErrors() JSON. Not for client-only use.
55
+ - [sheetpane-column-rules](https://github.com/arpitarya/sheetpane/blob/v0.4.2/packages/skills/skills/sheetpane-column-rules/SKILL.md): Use when the host checks what users type by column title in code - columns, validate(ctx, signal), on-invalid flag or block, header-row. Not for rules shipped as a JSON file (sheetpane-rules-file) or the workbook's own validation (sheetpane-plugins).
56
+ - [sheetpane-embed](https://github.com/arpitarya/sheetpane/blob/v0.4.2/packages/skills/skills/sheetpane-embed/SKILL.md): Use when placing <sheetpane-excel> and <sheetpane-errors> on a page - tab or pop-up, linking them by pane, giving the sheet a height, the host's font. Not for React specifics (sheetpane-react) or loading and saving files (sheetpane-load-export).
57
+ - [sheetpane-errors](https://github.com/arpitarya/sheetpane/blob/v0.4.2/packages/skills/skills/sheetpane-errors/SKILL.md): Use for the review list - <sheetpane-errors>, the SheetpaneError schema, getErrors()/setErrors(), sheetpane-errors and sheetpane-reveal, error types. Not for rule-made errors (sheetpane-column-rules) or server storage (sheetpane-backend).
58
+ - [sheetpane-events](https://github.com/arpitarya/sheetpane/blob/v0.4.2/packages/skills/skills/sheetpane-events/SKILL.md): Use when a host reacts to what the user does in the sheet - selection, hover, typing, saving, refusing a value, sheet tabs - or outlines cells with highlight(). Not for column checks (sheetpane-column-rules) or the error list (sheetpane-errors).
59
+ - [sheetpane-file-work-item](https://github.com/arpitarya/sheetpane/blob/v0.4.2/packages/skills/skills/sheetpane-file-work-item/SKILL.md): Use when contributing to the sheetpane repo and filing a new work item W-nn - the next free id, the item file, its OPEN-WORK row and ball, the worklog and NOW. Not for host apps that use sheetpane.
60
+ - [sheetpane-frameworks](https://github.com/arpitarya/sheetpane/blob/v0.4.2/packages/skills/skills/sheetpane-frameworks/SKILL.md): Use when embedding sheetpane in Vue, Svelte, Solid, Angular, Next.js or plain HTML with typed props and events - the custom-element setup, @sheetpane/grid/vue|svelte|solid typings, editor data. Not for React (sheetpane-react).
61
+ - [sheetpane-load-export](https://github.com/arpitarya/sheetpane/blob/v0.4.2/packages/skills/skills/sheetpane-load-export/SKILL.md): Use when opening a file in the sheet (src, file, load()) or getting it back (the Download button, export(), sheetpane-export, download()). Not for saving the review (sheetpane-errors, sheetpane-backend) or no-UI read/write (sheetpane-setup).
62
+ - [sheetpane-migrate](https://github.com/arpitarya/sheetpane/blob/v0.4.2/packages/skills/skills/sheetpane-migrate/SKILL.md): Use when replacing SheetJS, Handsontable or AG Grid with sheetpane - their concepts mapped to sheetpane's elements, events and plugins, and what has no equivalent. Not for a fresh project (sheetpane-setup).
63
+ - [sheetpane-performance](https://github.com/arpitarya/sheetpane/blob/v0.4.2/packages/skills/skills/sheetpane-performance/SKILL.md): Use when a host deals with large workbooks - what loads fast, how rule checks are sliced, lazy-mounting several sheets, what to measure on your own machine and data. Not for small files, which need nothing special.
64
+ - [sheetpane-plugin-author](https://github.com/arpitarya/sheetpane/blob/v0.4.2/packages/skills/skills/sheetpane-plugin-author/SKILL.md): Use when writing a sheetpane plugin - the six hooks, the slots and control descriptors, exportOptions, registerPlugin, what a plugin may never do. Not for choosing among the shipped plugins (sheetpane-plugins).
65
+ - [sheetpane-plugins](https://github.com/arpitarya/sheetpane/blob/v0.4.2/packages/skills/skills/sheetpane-plugins/SKILL.md): Use when a host needs more than review - number formats, formulas, styles, validation, conditional formats, pictures, charts, comments, Excel tables, compare or a Review sheet - and must pick plugins. Not for writing one (sheetpane-plugin-author).
66
+ - [sheetpane-react](https://github.com/arpitarya/sheetpane/blob/v0.4.2/packages/skills/skills/sheetpane-react/SKILL.md): Use when sheetpane is used from React 18 or 19 - props and onsheetpane-* events on the custom elements, refs, the copy-in hook recipes, JSX typing. Not for plain HTML (sheetpane-embed) or Vue, Angular, Svelte, Next.js (sheetpane-frameworks).
67
+ - [sheetpane-records](https://github.com/arpitarya/sheetpane/blob/v0.4.2/packages/skills/skills/sheetpane-records/SKILL.md): Use when contributing to the sheetpane repo and a change touches a rule - finding the record that owns a module, the laws, the commit guard, where a rule lives, archive-is-not-evidence. Not for host apps.
68
+ - [sheetpane-rules](https://github.com/arpitarya/sheetpane/blob/v0.4.2/packages/skills/skills/sheetpane-rules/SKILL.md): The /sheetpane-rules [workbook or rules file] command - drafts a rules file for a workbook, or fixes one, then runs sheetpane-skills check-rules until it is clean. Not for learning the format (sheetpane-rules-file) or rules in code.
69
+ - [sheetpane-rules-file](https://github.com/arpitarya/sheetpane/blob/v0.4.2/packages/skills/skills/sheetpane-rules-file/SKILL.md): Use when valid and invalid values ship as a JSON file per sheet, column or cell, checked on load and listed only in the errors panel - rules / rules-src, its JSON Schema, flagging="off". Not for rules written in code (sheetpane-column-rules).
70
+ - [sheetpane-security](https://github.com/arpitarya/sheetpane/blob/v0.4.2/packages/skills/skills/sheetpane-security/SKILL.md): Use when sheetpane handles untrusted uploads or runs under a strict CSP - what the grid reads and never sends, regexes in rules, CSV formula injection, sandboxed iframes, styles in shadow DOM. Not for general web security.
71
+ - [sheetpane-setup](https://github.com/arpitarya/sheetpane/blob/v0.4.2/packages/skills/skills/sheetpane-setup/SKILL.md): Use when adding sheetpane to a project - which @sheetpane packages to install, a bundler import or a plain-HTML import map, one version for all. Not for placing the elements (sheetpane-embed) or choosing plugins (sheetpane-plugins).
72
+ - [sheetpane-test](https://github.com/arpitarya/sheetpane/blob/v0.4.2/packages/skills/skills/sheetpane-test/SKILL.md): The /sheetpane-test [workbook] command - writes one end-to-end test for a host page with sheetpane - load the .xlsx or .csv (or a fixture), edit a cell, read the download. Not for the testing techniques themselves (sheetpane-testing).
73
+ - [sheetpane-testing](https://github.com/arpitarya/sheetpane/blob/v0.4.2/packages/skills/skills/sheetpane-testing/SKILL.md): Use when writing end-to-end or browser tests for a host app that embeds sheetpane - reaching cells in shadow DOM, waiting for sheetpane-load, editing, reading a downloaded .xlsx back, known fixture files. Not for testing sheetpane itself.
74
+ - [sheetpane-theming](https://github.com/arpitarya/sheetpane/blob/v0.4.2/packages/skills/skills/sheetpane-theming/SKILL.md): Use when matching sheetpane to a host's look - dark mode via theme, the --sp-* colour tokens, style.css, why no font is set. Not for a workbook's own colours (sheetpane-plugins - styles, condfmt).
75
+ - [sheetpane-troubleshoot](https://github.com/arpitarya/sheetpane/blob/v0.4.2/packages/skills/skills/sheetpane-troubleshoot/SKILL.md): Use when sheetpane misbehaves in a host - a blank grid, a file refused, an SP-xxxx code in the console, SSR crashes, CORS on src, copy not working, rules errors that look wrong. Not for designing a feature.
76
+ - [sheetpane-upgrade](https://github.com/arpitarya/sheetpane/blob/v0.4.2/packages/skills/skills/sheetpane-upgrade/SKILL.md): Use when moving a host to a newer sheetpane version - reading CHANGELOG.md, the lockstep version rule, removed or renamed controls and events, re-checking a host's tests. Not for first-time setup (sheetpane-setup).
77
77
 
78
78
  ## Records
79
- - [The register](https://github.com/arpitarya/sheetpane/blob/v0.4.0/records/README.md): every record, its state and what it owns
80
- - [SR-LAWS](https://github.com/arpitarya/sheetpane/blob/v0.4.0/records/0001_LAWS.md): Assigns the handles L0, L1, … and routes each to the record that states it. This record states no law itself.
81
- - [SR-LAW-0](https://github.com/arpitarya/sheetpane/blob/v0.4.0/records/0002_LAW-0-authority.md): Every rule is stated in exactly one record; every other artifact links to it; Law records outrank every other record; a Law changes only on the decider's ruling.
82
- - [SR-LAW-1](https://github.com/arpitarya/sheetpane/blob/v0.4.0/records/0003_LAW-1-retired-records-archived.md): A retired record moves to archive/records/ in the same change, with a map row, status archived and a dated banner; from then on it is named, never cited.
83
- - [SR-LAW-2](https://github.com/arpitarya/sheetpane/blob/v0.4.0/records/0004_LAW-2-foss-dependencies.md): Every dependency sheetpane declares or pulls in — runtime, peer, optional, dev and transitive — is released under a free and open source licence.
84
- - [SR-LAW-3](https://github.com/arpitarya/sheetpane/blob/v0.4.0/records/0005_LAW-3-xlsx-and-csv-only.md): sheetpane opens, views, edits and saves exactly two file formats — XLSX and CSV; every other spreadsheet format is out of scope until the decider rules otherwise.
85
- - [SR-LAW-4](https://github.com/arpitarya/sheetpane/blob/v0.4.0/records/0006_LAW-4-web-component.md): sheetpane ships as a standards-based web component — a custom element any framework, or none, can use — and is never tied to one framework.
86
- - [SR-LAW-5](https://github.com/arpitarya/sheetpane/blob/v0.4.0/records/0007_LAW-5-host-font.md): sheetpane ships no font of its own: by default it renders in the browser's default font, and when the host application sets a font, every part of sheetpane uses it.
87
- - [SR-LAW-6](https://github.com/arpitarya/sheetpane/blob/v0.4.0/records/0008_LAW-6-edits-in-memory-export-with-changes.md): Once a workbook is loaded, every change made to it is held in memory, and an export produces the workbook with every change applied.
88
- - [SR-LAW-7](https://github.com/arpitarya/sheetpane/blob/v0.4.0/records/0009_LAW-7-surfaces-always-in-sync.md): The view, edit and error components always show the same workbook: a change in any one appears in the others at once, with no refresh or save.
89
- - [SR-LAW-8](https://github.com/arpitarya/sheetpane/blob/v0.4.0/records/0010_LAW-8-npm-package.md): sheetpane is distributed as an npm package: published to the npm registry, installed with npm or any npm-compatible client, and imported as a module.
90
- - [SR-LAW-9](https://github.com/arpitarya/sheetpane/blob/v0.4.0/records/0011_LAW-9-memory-is-a-javascript-object.md): Wherever a record says memory, it means JavaScript objects held in the page; no browser storage or database is memory, until the decider rules otherwise.
91
- - [SR-DOWNLOAD](https://github.com/arpitarya/sheetpane/blob/v0.4.0/records/0101_DOWNLOAD.md): One function, download(data, filename, options?), turns what @sheetpane/export produces into a file the browser saves — .xlsx or .csv only, bytes unchanged, errors never silent.
92
- - [SR-BUILD](https://github.com/arpitarya/sheetpane/blob/v0.4.0/records/0102_BUILD.md): How the monorepo installs, type-checks, builds, tests, runs in CI and publishes every package under packages/ at one version.
93
- - [SR-EXPORT](https://github.com/arpitarya/sheetpane/blob/v0.4.0/records/0103_EXPORT.md): A plain Workbook object in, .xlsx bytes or .csv text out; patchXlsx rewrites only the changed cells of the uploaded file; no runtime dependencies.
94
- - [SR-IMPORT](https://github.com/arpitarya/sheetpane/blob/v0.4.0/records/0104_IMPORT.md): The reader: extension and magic bytes checked, .xlsx through the ZIP walk and DOMParser, .csv through a state machine; raw values beside display text; the parsed tables plugins read.
95
- - [SR-GRID](https://github.com/arpitarya/sheetpane/blob/v0.4.0/records/0105_GRID.md): One in-memory workbook per pane that every element reads and writes; the sheet element that views and edits it; six hooks and six slots for plugins; one undo stack per pane; freeze panes in the core grid.
96
- - [SR-ERRORS](https://github.com/arpitarya/sheetpane/blob/v0.4.0/records/0106_ERRORS.md): The error component reads and writes the pane's one workbook: a filterable list, the form Flag issue opens, Show in sheet, read-only sign-off — no private copy, no linked chip, no export footer.
97
- - [SR-IMAGES](https://github.com/arpitarya/sheetpane/blob/v0.4.0/records/0107_IMAGES.md): A view-only plugin that draws each picture a sheet's drawing anchors at its place in the grid, decoding media lazily from the package, with the anchor arithmetic @sheetpane/charts reuses.
98
- - [SR-VALIDATION](https://github.com/arpitarya/sheetpane/blob/v0.4.0/records/0108_VALIDATION.md): A plugin on the validate hook that checks the workbook's <dataValidations> on load and after every edit, writing one workbook-authored warning per failing cell, with a list arrow for list rules; on export it can write the host's rules file into the download as the workbook's own data validation.
99
- - [SR-NUMFMT](https://github.com/arpitarya/sheetpane/blob/v0.4.0/records/0109_NUMFMT.md): A plugin on the format hook that shows every numeric cell as Excel would — every built-in and custom code, locales, 1904 — with a format dropdown in Edit and the new formats written back on export.
100
- - [SR-STYLES](https://github.com/arpitarya/sheetpane/blob/v0.4.0/records/0110_STYLES.md): A plugin on the decorate hook that draws each cell's fill, font weight, style, size, colour, decoration, borders and alignment from the workbook — never a font family — with a format row in Edit and the changes written into styles.xml on export.
101
- - [SR-FORMULAS](https://github.com/arpitarya/sheetpane/blob/v0.4.0/records/0111_FORMULAS.md): A plugin on the derive and exportPatch hooks that recalculates formulas with IronCalc (WASM, loaded on the first formula), marks the cells it changed, and writes typed formulas and new cached values on export.
102
- - [SR-COMMENTS](https://github.com/arpitarya/sheetpane/blob/v0.4.0/records/0112_COMMENTS.md): A plugin on the validate and exportPatch hooks: a workbook's notes and threaded comments arrive as read-only file errors, and an export writes every review error as an Excel threaded comment (with its legacy note and VML) at its cell — on by default, switchable off.
103
- - [SR-CHARTS](https://github.com/arpitarya/sheetpane/blob/v0.4.0/records/0113_CHARTS.md): An overlay plugin that shows every chart at its anchor — a frame with title, type, series and Show source cells, then an SVG drawing for bar, column, line, pie, doughnut and scatter — from the chart's cached values, or the live cells when a formula plugin is installed; export copies charts untouched.
104
- - [SR-CONDFMT](https://github.com/arpitarya/sheetpane/blob/v0.4.0/records/0114_CONDFMT.md): A decorate plugin, ordered after styles, that draws the conditional formats a workbook carries — cell rules, text rules, duplicates, top/bottom, averages, colour scales, data bars and expressions — live as cells change; render only, with a hover legend and a rule count.
105
- - [SR-FIXTURES](https://github.com/arpitarya/sheetpane/blob/v0.4.0/records/0115_FIXTURES.md): A dependency-free package of hand-built test workbooks — the showcase, its rules sample, edge cases, CSV dialects — with a manifest of what each holds and url / path / bytes to reach them from any runner.
106
- - [SR-SKILLS](https://github.com/arpitarya/sheetpane/blob/v0.4.0/records/0116_SKILLS.md): A leaf package of 23 Markdown skills, entry files and a no-dependency installer that copies them where each coding agent looks; every sheetpane package depends on it; a drift check keeps the skills true to the code.
107
- - [SR-CODES](https://github.com/arpitarya/sheetpane/blob/v0.4.0/records/0117_CODES.md): Every throw, console warning, rules-engine note, refused load and blocked edit carries a permanent SP-xxxx code from one registry in @sheetpane/export, with an entry in docs/ERRORS.md; a test fails on any message without one.
108
- - [SR-TESTING](https://github.com/arpitarya/sheetpane/blob/v0.4.0/records/0118_TESTING.md): One driver API for Playwright and Vitest browser mode — locators, actions, Download read back as values, matchers — built only on the grid's committed test hooks.
109
- - [SR-MCP](https://github.com/arpitarya/sheetpane/blob/v0.4.0/records/0119_MCP.md): A stdio MCP server, hand-written, tools only: describe the API, inspect a workbook, draft and check a rules file, explain an SP code, find a skill — deterministic and read-only.
110
- - [SR-VISIBILITY](https://github.com/arpitarya/sheetpane/blob/v0.4.0/records/0121_VISIBILITY.md): The plugin that lets an editor hide and unhide rows, columns and sheets and group outlines — menus, Google Sheets' keys, a marker click — written into the download. Seeing the file's hiding is core (SR-GRID 21c).
111
- - [SR-TABLES](https://github.com/arpitarya/sheetpane/blob/v0.4.0/records/0122_TABLES.md): The plugin that draws a workbook's Excel tables — header row, banded rows and columns, first and last column, totals row — from a named subset of the built-in table styles, through decorate. Reading the tables is SR-IMPORT's; resolving Table[Column] is SR-EXPORT's.
112
- - [SR-REVIEW](https://github.com/arpitarya/sheetpane/blob/v0.4.0/records/0123_REVIEW.md): The export-only plugin that writes the review into the download as a Review sheet — every error with a link to its cell — and optionally fills each flagged cell by severity, cloning its format. A defined name marks the sheet so a host can skip it on re-upload.
113
- - [SR-COMPARE](https://github.com/arpitarya/sheetpane/blob/v0.4.0/records/0124_COMPARE.md): A headless diffWorkbooks (sheets by name or content, columns by title, rows by key or alignment, cells by value, text and formula) and a grid plugin that tints the changes, sums them up in the status line, steps through them and lists them as errors — both files read in the page.
79
+ - [The register](https://github.com/arpitarya/sheetpane/blob/v0.4.2/records/README.md): every record, its state and what it owns
80
+ - [SR-LAWS](https://github.com/arpitarya/sheetpane/blob/v0.4.2/records/0001_LAWS.md): Assigns the handles L0, L1, … and routes each to the record that states it. This record states no law itself.
81
+ - [SR-LAW-0](https://github.com/arpitarya/sheetpane/blob/v0.4.2/records/0002_LAW-0-authority.md): Every rule is stated in exactly one record; every other artifact links to it; Law records outrank every other record; a Law changes only on the decider's ruling.
82
+ - [SR-LAW-1](https://github.com/arpitarya/sheetpane/blob/v0.4.2/records/0003_LAW-1-retired-records-archived.md): A retired record moves to archive/records/ in the same change, with a map row, status archived and a dated banner; from then on it is named, never cited.
83
+ - [SR-LAW-2](https://github.com/arpitarya/sheetpane/blob/v0.4.2/records/0004_LAW-2-foss-dependencies.md): Every dependency sheetpane declares or pulls in — runtime, peer, optional, dev and transitive — is released under a free and open source licence.
84
+ - [SR-LAW-3](https://github.com/arpitarya/sheetpane/blob/v0.4.2/records/0005_LAW-3-xlsx-and-csv-only.md): sheetpane opens, views, edits and saves exactly two file formats — XLSX and CSV; every other spreadsheet format is out of scope until the decider rules otherwise.
85
+ - [SR-LAW-4](https://github.com/arpitarya/sheetpane/blob/v0.4.2/records/0006_LAW-4-web-component.md): sheetpane ships as a standards-based web component — a custom element any framework, or none, can use — and is never tied to one framework.
86
+ - [SR-LAW-5](https://github.com/arpitarya/sheetpane/blob/v0.4.2/records/0007_LAW-5-host-font.md): sheetpane ships no font of its own: by default it renders in the browser's default font, and when the host application sets a font, every part of sheetpane uses it.
87
+ - [SR-LAW-6](https://github.com/arpitarya/sheetpane/blob/v0.4.2/records/0008_LAW-6-edits-in-memory-export-with-changes.md): Once a workbook is loaded, every change made to it is held in memory, and an export produces the workbook with every change applied.
88
+ - [SR-LAW-7](https://github.com/arpitarya/sheetpane/blob/v0.4.2/records/0009_LAW-7-surfaces-always-in-sync.md): The view, edit and error components always show the same workbook: a change in any one appears in the others at once, with no refresh or save.
89
+ - [SR-LAW-8](https://github.com/arpitarya/sheetpane/blob/v0.4.2/records/0010_LAW-8-npm-package.md): sheetpane is distributed as an npm package: published to the npm registry, installed with npm or any npm-compatible client, and imported as a module.
90
+ - [SR-LAW-9](https://github.com/arpitarya/sheetpane/blob/v0.4.2/records/0011_LAW-9-memory-is-a-javascript-object.md): Wherever a record says memory, it means JavaScript objects held in the page; no browser storage or database is memory, until the decider rules otherwise.
91
+ - [SR-DOWNLOAD](https://github.com/arpitarya/sheetpane/blob/v0.4.2/records/0101_DOWNLOAD.md): One function, download(data, filename, options?), turns what @sheetpane/export produces into a file the browser saves — .xlsx or .csv only, bytes unchanged, errors never silent.
92
+ - [SR-BUILD](https://github.com/arpitarya/sheetpane/blob/v0.4.2/records/0102_BUILD.md): How the monorepo installs, type-checks, builds, tests, runs in CI and publishes every package under packages/ at one version.
93
+ - [SR-EXPORT](https://github.com/arpitarya/sheetpane/blob/v0.4.2/records/0103_EXPORT.md): A plain Workbook object in, .xlsx bytes or .csv text out; patchXlsx rewrites only the changed cells of the uploaded file; no runtime dependencies.
94
+ - [SR-IMPORT](https://github.com/arpitarya/sheetpane/blob/v0.4.2/records/0104_IMPORT.md): The reader: extension and magic bytes checked, .xlsx through the ZIP walk and DOMParser, .csv through a state machine; raw values beside display text; the parsed tables plugins read.
95
+ - [SR-GRID](https://github.com/arpitarya/sheetpane/blob/v0.4.2/records/0105_GRID.md): One in-memory workbook per pane that every element reads and writes; the sheet element that views and edits it; six hooks and six slots for plugins; one undo stack per pane; freeze panes in the core grid.
96
+ - [SR-ERRORS](https://github.com/arpitarya/sheetpane/blob/v0.4.2/records/0106_ERRORS.md): The error component reads and writes the pane's one workbook: a filterable list, the form Flag issue opens, Show in sheet, read-only sign-off — no private copy, no linked chip, no export footer.
97
+ - [SR-IMAGES](https://github.com/arpitarya/sheetpane/blob/v0.4.2/records/0107_IMAGES.md): A view-only plugin that draws each picture a sheet's drawing anchors at its place in the grid, decoding media lazily from the package, with the anchor arithmetic @sheetpane/charts reuses.
98
+ - [SR-VALIDATION](https://github.com/arpitarya/sheetpane/blob/v0.4.2/records/0108_VALIDATION.md): A plugin on the validate hook that checks the workbook's <dataValidations> on load and after every edit, writing one workbook-authored warning per failing cell, with a list arrow for list rules; on export it can write the host's rules file into the download as the workbook's own data validation.
99
+ - [SR-NUMFMT](https://github.com/arpitarya/sheetpane/blob/v0.4.2/records/0109_NUMFMT.md): A plugin on the format hook that shows every numeric cell as Excel would — every built-in and custom code, locales, 1904 — with a format dropdown in Edit and the new formats written back on export.
100
+ - [SR-STYLES](https://github.com/arpitarya/sheetpane/blob/v0.4.2/records/0110_STYLES.md): A plugin on the decorate hook that draws each cell's fill, font weight, style, size, colour, decoration, borders and alignment from the workbook — never a font family — with a format row in Edit and the changes written into styles.xml on export.
101
+ - [SR-FORMULAS](https://github.com/arpitarya/sheetpane/blob/v0.4.2/records/0111_FORMULAS.md): A plugin on the derive and exportPatch hooks that recalculates formulas with IronCalc (WASM, loaded on the first formula), marks the cells it changed, and writes typed formulas and new cached values on export.
102
+ - [SR-COMMENTS](https://github.com/arpitarya/sheetpane/blob/v0.4.2/records/0112_COMMENTS.md): A plugin on the validate and exportPatch hooks: a workbook's notes and threaded comments arrive as read-only file errors, and an export writes every review error as an Excel threaded comment (with its legacy note and VML) at its cell — on by default, switchable off.
103
+ - [SR-CHARTS](https://github.com/arpitarya/sheetpane/blob/v0.4.2/records/0113_CHARTS.md): An overlay plugin that shows every chart at its anchor — a frame with title, type, series and Show source cells, then an SVG drawing for bar, column, line, pie, doughnut and scatter — from the chart's cached values, or the live cells when a formula plugin is installed; export copies charts untouched.
104
+ - [SR-CONDFMT](https://github.com/arpitarya/sheetpane/blob/v0.4.2/records/0114_CONDFMT.md): A decorate plugin, ordered after styles, that draws the conditional formats a workbook carries — cell rules, text rules, duplicates, top/bottom, averages, colour scales, data bars and expressions — live as cells change; render only, with a hover legend and a rule count.
105
+ - [SR-FIXTURES](https://github.com/arpitarya/sheetpane/blob/v0.4.2/records/0115_FIXTURES.md): A dependency-free package of hand-built test workbooks — the showcase, its rules sample, edge cases, CSV dialects — with a manifest of what each holds and url / path / bytes to reach them from any runner.
106
+ - [SR-SKILLS](https://github.com/arpitarya/sheetpane/blob/v0.4.2/records/0116_SKILLS.md): A leaf package of 23 Markdown skills, entry files and a no-dependency installer that copies them where each coding agent looks; every sheetpane package depends on it; a drift check keeps the skills true to the code.
107
+ - [SR-CODES](https://github.com/arpitarya/sheetpane/blob/v0.4.2/records/0117_CODES.md): Every throw, console warning, rules-engine note, refused load and blocked edit carries a permanent SP-xxxx code from one registry in @sheetpane/export, with an entry in docs/ERRORS.md; a test fails on any message without one.
108
+ - [SR-TESTING](https://github.com/arpitarya/sheetpane/blob/v0.4.2/records/0118_TESTING.md): One driver API for Playwright and Vitest browser mode — locators, actions, Download read back as values, matchers — built only on the grid's committed test hooks.
109
+ - [SR-MCP](https://github.com/arpitarya/sheetpane/blob/v0.4.2/records/0119_MCP.md): A stdio MCP server, hand-written, tools only: describe the API, inspect a workbook, draft and check a rules file, explain an SP code, find a skill — deterministic and read-only.
110
+ - [SR-VISIBILITY](https://github.com/arpitarya/sheetpane/blob/v0.4.2/records/0121_VISIBILITY.md): The plugin that lets an editor hide and unhide rows, columns and sheets and group outlines — menus, Google Sheets' keys, a marker click — written into the download. Seeing the file's hiding is core (SR-GRID 21c).
111
+ - [SR-TABLES](https://github.com/arpitarya/sheetpane/blob/v0.4.2/records/0122_TABLES.md): The plugin that draws a workbook's Excel tables — header row, banded rows and columns, first and last column, totals row — from a named subset of the built-in table styles, through decorate. Reading the tables is SR-IMPORT's; resolving Table[Column] is SR-EXPORT's.
112
+ - [SR-REVIEW](https://github.com/arpitarya/sheetpane/blob/v0.4.2/records/0123_REVIEW.md): The export-only plugin that writes the review into the download as a Review sheet — every error with a link to its cell — and optionally fills each flagged cell by severity, cloning its format. A defined name marks the sheet so a host can skip it on re-upload.
113
+ - [SR-COMPARE](https://github.com/arpitarya/sheetpane/blob/v0.4.2/records/0124_COMPARE.md): A headless diffWorkbooks (sheets by name or content, columns by title, rows by key or alignment, cells by value, text and formula) and a grid plugin that tints the changes, sums them up in the status line, steps through them and lists them as errors — both files read in the page.
114
114
 
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "$schema": "https://raw.githubusercontent.com/JetBrains/web-types/master/schema/web-types.json",
3
3
  "name": "@sheetpane/grid",
4
- "version": "0.4.0",
4
+ "version": "0.4.2",
5
5
  "description-markup": "markdown",
6
6
  "js-types-syntax": "typescript",
7
7
  "contributions": {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sheetpane/grid",
3
- "version": "0.4.0",
3
+ "version": "0.4.2",
4
4
  "description": "View and edit .xlsx and .csv files inside any web page: the <sheetpane-excel> and <sheetpane-errors> web components, always in sync through one in-memory workbook.",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -61,9 +61,9 @@
61
61
  "customElements": "custom-elements.json",
62
62
  "web-types": "./dist/web-types.json",
63
63
  "dependencies": {
64
- "@sheetpane/export": "0.4.0",
65
- "@sheetpane/import": "0.4.0",
66
- "@sheetpane/skills": "0.4.0"
64
+ "@sheetpane/export": "0.4.2",
65
+ "@sheetpane/import": "0.4.2",
66
+ "@sheetpane/skills": "0.4.2"
67
67
  },
68
68
  "publishConfig": {
69
69
  "access": "public"