@sheetpane/grid 0.4.1 → 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.1; links pinned to v0.4.1.
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.1/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.1/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.1/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.1/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.1/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.1/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.1/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.1/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.1/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.1/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.1/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.1/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.1/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.1/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.1/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.1/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.1/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.1/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.1/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.1/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.1/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.1/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.1/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.1/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.1/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.1/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.1/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.1/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.1/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.1/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.1/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.1/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.1/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.1/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.1/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.1/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
 
@@ -5901,8 +5901,8 @@ pnpm and a justfile; the testing verdict chose the runner.
5901
5901
  - **Enforced today:** decisions 6, 7 and 10 by `just check` / `just
5902
5902
  pack-check`, locally and in CI.
5903
5903
  - **Owed by the decider:** the first publish by hand (any package not yet on
5904
- npm), a trusted publisher per package (`tables`, `review` and `compare`
5905
- have none yet, 2026-10-19) (`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`,
5906
5906
  *Allow npm publish*) and the `npm` environment in GitHub — `RELEASING.md`
5907
5907
  §One time; the `@sheetpane` organisation exists.
5908
5908
  - **Still open:** the licence check over the whole lockfile (backlog B-008);
@@ -5956,7 +5956,7 @@ is never listed here.*
5956
5956
 
5957
5957
  ---
5958
5958
 
5959
- <!-- source: records/0103_EXPORT.md (https://github.com/arpitarya/sheetpane/blob/v0.4.1/records/0103_EXPORT.md) -->
5959
+ <!-- source: records/0103_EXPORT.md (https://github.com/arpitarya/sheetpane/blob/v0.4.2/records/0103_EXPORT.md) -->
5960
5960
 
5961
5961
  # SR-EXPORT — @sheetpane/export
5962
5962
 
@@ -6278,7 +6278,7 @@ is never listed here.*
6278
6278
 
6279
6279
  ---
6280
6280
 
6281
- <!-- source: records/0104_IMPORT.md (https://github.com/arpitarya/sheetpane/blob/v0.4.1/records/0104_IMPORT.md) -->
6281
+ <!-- source: records/0104_IMPORT.md (https://github.com/arpitarya/sheetpane/blob/v0.4.2/records/0104_IMPORT.md) -->
6282
6282
 
6283
6283
  # SR-IMPORT — @sheetpane/import
6284
6284
 
@@ -6576,7 +6576,7 @@ is never listed here.*
6576
6576
 
6577
6577
  ---
6578
6578
 
6579
- <!-- source: records/0105_GRID.md (https://github.com/arpitarya/sheetpane/blob/v0.4.1/records/0105_GRID.md) -->
6579
+ <!-- source: records/0105_GRID.md (https://github.com/arpitarya/sheetpane/blob/v0.4.2/records/0105_GRID.md) -->
6580
6580
 
6581
6581
  # SR-GRID — @sheetpane/grid
6582
6582
 
@@ -7728,7 +7728,7 @@ is never listed here.*
7728
7728
 
7729
7729
  ---
7730
7730
 
7731
- <!-- source: records/0106_ERRORS.md (https://github.com/arpitarya/sheetpane/blob/v0.4.1/records/0106_ERRORS.md) -->
7731
+ <!-- source: records/0106_ERRORS.md (https://github.com/arpitarya/sheetpane/blob/v0.4.2/records/0106_ERRORS.md) -->
7732
7732
 
7733
7733
  # SR-ERRORS — <sheetpane-errors>
7734
7734
 
@@ -8048,7 +8048,7 @@ is never listed here.*
8048
8048
 
8049
8049
  ---
8050
8050
 
8051
- <!-- source: records/0107_IMAGES.md (https://github.com/arpitarya/sheetpane/blob/v0.4.1/records/0107_IMAGES.md) -->
8051
+ <!-- source: records/0107_IMAGES.md (https://github.com/arpitarya/sheetpane/blob/v0.4.2/records/0107_IMAGES.md) -->
8052
8052
 
8053
8053
  # SR-IMAGES — @sheetpane/images
8054
8054
 
@@ -8176,7 +8176,7 @@ is never listed here.*
8176
8176
 
8177
8177
  ---
8178
8178
 
8179
- <!-- source: records/0108_VALIDATION.md (https://github.com/arpitarya/sheetpane/blob/v0.4.1/records/0108_VALIDATION.md) -->
8179
+ <!-- source: records/0108_VALIDATION.md (https://github.com/arpitarya/sheetpane/blob/v0.4.2/records/0108_VALIDATION.md) -->
8180
8180
 
8181
8181
  # SR-VALIDATION — @sheetpane/validation
8182
8182
 
@@ -8428,7 +8428,7 @@ is never listed here.*
8428
8428
 
8429
8429
  ---
8430
8430
 
8431
- <!-- source: records/0109_NUMFMT.md (https://github.com/arpitarya/sheetpane/blob/v0.4.1/records/0109_NUMFMT.md) -->
8431
+ <!-- source: records/0109_NUMFMT.md (https://github.com/arpitarya/sheetpane/blob/v0.4.2/records/0109_NUMFMT.md) -->
8432
8432
 
8433
8433
  # SR-NUMFMT — @sheetpane/numfmt
8434
8434
 
@@ -8564,7 +8564,7 @@ is never listed here.*
8564
8564
 
8565
8565
  ---
8566
8566
 
8567
- <!-- source: records/0110_STYLES.md (https://github.com/arpitarya/sheetpane/blob/v0.4.1/records/0110_STYLES.md) -->
8567
+ <!-- source: records/0110_STYLES.md (https://github.com/arpitarya/sheetpane/blob/v0.4.2/records/0110_STYLES.md) -->
8568
8568
 
8569
8569
  # SR-STYLES — @sheetpane/styles
8570
8570
 
@@ -8730,7 +8730,7 @@ is never listed here.*
8730
8730
 
8731
8731
  ---
8732
8732
 
8733
- <!-- source: records/0111_FORMULAS.md (https://github.com/arpitarya/sheetpane/blob/v0.4.1/records/0111_FORMULAS.md) -->
8733
+ <!-- source: records/0111_FORMULAS.md (https://github.com/arpitarya/sheetpane/blob/v0.4.2/records/0111_FORMULAS.md) -->
8734
8734
 
8735
8735
  # SR-FORMULAS — @sheetpane/formulas
8736
8736
 
@@ -8900,7 +8900,7 @@ is never listed here.*
8900
8900
 
8901
8901
  ---
8902
8902
 
8903
- <!-- source: records/0112_COMMENTS.md (https://github.com/arpitarya/sheetpane/blob/v0.4.1/records/0112_COMMENTS.md) -->
8903
+ <!-- source: records/0112_COMMENTS.md (https://github.com/arpitarya/sheetpane/blob/v0.4.2/records/0112_COMMENTS.md) -->
8904
8904
 
8905
8905
  # SR-COMMENTS — @sheetpane/comments
8906
8906
 
@@ -9073,7 +9073,7 @@ is never listed here.*
9073
9073
 
9074
9074
  ---
9075
9075
 
9076
- <!-- source: records/0113_CHARTS.md (https://github.com/arpitarya/sheetpane/blob/v0.4.1/records/0113_CHARTS.md) -->
9076
+ <!-- source: records/0113_CHARTS.md (https://github.com/arpitarya/sheetpane/blob/v0.4.2/records/0113_CHARTS.md) -->
9077
9077
 
9078
9078
  # SR-CHARTS — @sheetpane/charts
9079
9079
 
@@ -9225,7 +9225,7 @@ is never listed here.*
9225
9225
 
9226
9226
  ---
9227
9227
 
9228
- <!-- source: records/0114_CONDFMT.md (https://github.com/arpitarya/sheetpane/blob/v0.4.1/records/0114_CONDFMT.md) -->
9228
+ <!-- source: records/0114_CONDFMT.md (https://github.com/arpitarya/sheetpane/blob/v0.4.2/records/0114_CONDFMT.md) -->
9229
9229
 
9230
9230
  # SR-CONDFMT — @sheetpane/condfmt
9231
9231
 
@@ -9378,7 +9378,7 @@ is never listed here.*
9378
9378
 
9379
9379
  ---
9380
9380
 
9381
- <!-- source: records/0115_FIXTURES.md (https://github.com/arpitarya/sheetpane/blob/v0.4.1/records/0115_FIXTURES.md) -->
9381
+ <!-- source: records/0115_FIXTURES.md (https://github.com/arpitarya/sheetpane/blob/v0.4.2/records/0115_FIXTURES.md) -->
9382
9382
 
9383
9383
  # SR-FIXTURES — @sheetpane/fixtures
9384
9384
 
@@ -9530,7 +9530,7 @@ is never listed here.*
9530
9530
 
9531
9531
  ---
9532
9532
 
9533
- <!-- source: records/0116_SKILLS.md (https://github.com/arpitarya/sheetpane/blob/v0.4.1/records/0116_SKILLS.md) -->
9533
+ <!-- source: records/0116_SKILLS.md (https://github.com/arpitarya/sheetpane/blob/v0.4.2/records/0116_SKILLS.md) -->
9534
9534
 
9535
9535
  # SR-SKILLS — @sheetpane/skills
9536
9536
 
@@ -9724,7 +9724,7 @@ is never listed here.*
9724
9724
 
9725
9725
  ---
9726
9726
 
9727
- <!-- source: records/0117_CODES.md (https://github.com/arpitarya/sheetpane/blob/v0.4.1/records/0117_CODES.md) -->
9727
+ <!-- source: records/0117_CODES.md (https://github.com/arpitarya/sheetpane/blob/v0.4.2/records/0117_CODES.md) -->
9728
9728
 
9729
9729
  # SR-CODES — stable error codes
9730
9730
 
@@ -9893,7 +9893,7 @@ is never listed here.*
9893
9893
 
9894
9894
  ---
9895
9895
 
9896
- <!-- source: records/0118_TESTING.md (https://github.com/arpitarya/sheetpane/blob/v0.4.1/records/0118_TESTING.md) -->
9896
+ <!-- source: records/0118_TESTING.md (https://github.com/arpitarya/sheetpane/blob/v0.4.2/records/0118_TESTING.md) -->
9897
9897
 
9898
9898
  # SR-TESTING — @sheetpane/testing
9899
9899
 
@@ -9995,7 +9995,7 @@ is never listed here.*
9995
9995
 
9996
9996
  ---
9997
9997
 
9998
- <!-- source: records/0119_MCP.md (https://github.com/arpitarya/sheetpane/blob/v0.4.1/records/0119_MCP.md) -->
9998
+ <!-- source: records/0119_MCP.md (https://github.com/arpitarya/sheetpane/blob/v0.4.2/records/0119_MCP.md) -->
9999
9999
 
10000
10000
  # SR-MCP — @sheetpane/mcp
10001
10001
 
@@ -10176,7 +10176,7 @@ is never listed here.*
10176
10176
 
10177
10177
  ---
10178
10178
 
10179
- <!-- source: records/0121_VISIBILITY.md (https://github.com/arpitarya/sheetpane/blob/v0.4.1/records/0121_VISIBILITY.md) -->
10179
+ <!-- source: records/0121_VISIBILITY.md (https://github.com/arpitarya/sheetpane/blob/v0.4.2/records/0121_VISIBILITY.md) -->
10180
10180
 
10181
10181
  # SR-VISIBILITY — @sheetpane/visibility
10182
10182
 
@@ -10290,7 +10290,7 @@ is never listed here.*
10290
10290
 
10291
10291
  ---
10292
10292
 
10293
- <!-- source: records/0122_TABLES.md (https://github.com/arpitarya/sheetpane/blob/v0.4.1/records/0122_TABLES.md) -->
10293
+ <!-- source: records/0122_TABLES.md (https://github.com/arpitarya/sheetpane/blob/v0.4.2/records/0122_TABLES.md) -->
10294
10294
 
10295
10295
  # SR-TABLES — @sheetpane/tables
10296
10296
 
@@ -10412,7 +10412,7 @@ is never listed here.*
10412
10412
 
10413
10413
  ---
10414
10414
 
10415
- <!-- source: records/0123_REVIEW.md (https://github.com/arpitarya/sheetpane/blob/v0.4.1/records/0123_REVIEW.md) -->
10415
+ <!-- source: records/0123_REVIEW.md (https://github.com/arpitarya/sheetpane/blob/v0.4.2/records/0123_REVIEW.md) -->
10416
10416
 
10417
10417
  # SR-REVIEW — @sheetpane/review
10418
10418
 
@@ -10611,7 +10611,7 @@ is never listed here.*
10611
10611
 
10612
10612
  ---
10613
10613
 
10614
- <!-- source: records/0124_COMPARE.md (https://github.com/arpitarya/sheetpane/blob/v0.4.1/records/0124_COMPARE.md) -->
10614
+ <!-- source: records/0124_COMPARE.md (https://github.com/arpitarya/sheetpane/blob/v0.4.2/records/0124_COMPARE.md) -->
10615
10615
 
10616
10616
  # SR-COMPARE — @sheetpane/compare
10617
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.1.
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.1/README.md): what it is, the packages, try it
9
- - [@sheetpane/grid](https://github.com/arpitarya/sheetpane/blob/v0.4.1/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.1/docs/ARCHITECTURE.md): packages, elements, the one workbook, the flows
11
- - [Changelog](https://github.com/arpitarya/sheetpane/blob/v0.4.1/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.1/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.1/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.1/records/0106_ERRORS.md): the error list and the New error form
20
- - [custom-elements.json](https://github.com/arpitarya/sheetpane/blob/v0.4.1/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.1/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.1/packages/import/README.md): read .xlsx / .csv into a JavaScript workbook
23
- - [@sheetpane/export](https://github.com/arpitarya/sheetpane/blob/v0.4.1/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.1/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.1/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.1/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.1/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.1/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.1/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.1/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.1/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.1/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.1/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.1/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.1/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.1/packages/grid/README.md#column-rules): checks by column title in code
41
- - [Rules file](https://github.com/arpitarya/sheetpane/blob/v0.4.1/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.1/packages/grid/rules.schema.json): the rules file's JSON Schema
43
- - [Error codes](https://github.com/arpitarya/sheetpane/blob/v0.4.1/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.1/packages/testing/README.md): Playwright and Vitest helpers for host apps
47
- - [@sheetpane/fixtures](https://github.com/arpitarya/sheetpane/blob/v0.4.1/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.1/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.1/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.1/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.1/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.1/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.1/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.1/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.1/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.1/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.1/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.1/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.1/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.1/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.1/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.1/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.1/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.1/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.1/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.1/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.1/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.1/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.1/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.1/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.1/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.1/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.1/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.1/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.1/records/README.md): every record, its state and what it owns
80
- - [SR-LAWS](https://github.com/arpitarya/sheetpane/blob/v0.4.1/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.1/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.1/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.1/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.1/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.1/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.1/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.1/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.1/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.1/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.1/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.1/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.1/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.1/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.1/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.1/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.1/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.1/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.1/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.1/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.1/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.1/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.1/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.1/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.1/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.1/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.1/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.1/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.1/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.1/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.1/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.1/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.1/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.1/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.1",
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.1",
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.1",
65
- "@sheetpane/skills": "0.4.1",
66
- "@sheetpane/import": "0.4.1"
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"