@sheetpane/grid 0.5.0 → 0.5.1

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.5.0; links pinned to v0.5.0.
3
+ > Everything llms.txt links to, inlined: the package READMEs, the docs, the laws and the component records. Version 0.5.1; links pinned to v0.5.1.
4
4
 
5
5
 
6
6
  ---
7
7
 
8
- <!-- source: README.md (https://github.com/arpitarya/sheetpane/blob/v0.5.0/README.md) -->
8
+ <!-- source: README.md (https://github.com/arpitarya/sheetpane/blob/v0.5.1/README.md) -->
9
9
 
10
10
  <div align="center">
11
11
 
@@ -40,6 +40,15 @@
40
40
 
41
41
  ---
42
42
 
43
+ ## In plain words
44
+
45
+ - Your users have spreadsheets. You want them to open one **inside your app**, fix it, and get it back.
46
+ - sheetpane is a spreadsheet you drop into a web page. It opens `.xlsx` and `.csv`, lets people edit, and **points at the cells that are wrong**, with what the right value should be.
47
+ - It all happens in the browser tab: **the file is never uploaded anywhere.**
48
+ - When they press Download, they get **their own file back**, with only the cells they changed updated.
49
+
50
+ ---
51
+
43
52
  ## Three lines of HTML
44
53
 
45
54
  ```html
@@ -94,9 +103,7 @@ The rules behind it are [this JSON file](docs/readme/holdings.rules.json), with
94
103
 
95
104
  ## Get started
96
105
 
97
- > [!NOTE]
98
- > **`0.1.0` is about to ship.** Until it is on npm, the install commands and the
99
- > playground links will not work yet.
106
+ **`0.5.0` is on npm**, with all 20 packages on one version, published from CI with signed provenance.
100
107
 
101
108
  ```sh
102
109
  npm install @sheetpane/grid
@@ -174,6 +181,23 @@ Anything else is refused with a clear message — never half-read.
174
181
 
175
182
  ---
176
183
 
184
+ ## Is sheetpane for you?
185
+
186
+ **Choose sheetpane when:**
187
+
188
+ - your users bring **their own `.xlsx` or `.csv`** and must review or correct it inside your app (uploads, imports, reconciliations, data checks);
189
+ - the file **must not leave the browser**, for compliance, privacy or simply trust;
190
+ - you need the download to be **their file**, not a re-generated copy that loses their formatting;
191
+ - you want one component that works in **any framework**, typed, and testable.
192
+
193
+ **Look elsewhere when:**
194
+
195
+ - you need a **full spreadsheet app**: real-time collaboration, server storage, pivot recalculation, macros;
196
+ - your files are **`.xls`, `.xlsm`, `.ods` or `.numbers`**. They are refused by design;
197
+ - you need a **data grid for your own records** (sorting and paging an API's rows). sheetpane is built around a workbook file.
198
+
199
+ ---
200
+
177
201
  ## How far it is proven
178
202
 
179
203
  **Every feature has tests**, in Node and a real browser: Chromium on every
@@ -198,11 +222,53 @@ Until 1.0 the API may change between minor versions — the
198
222
 
199
223
  </details>
200
224
 
201
- **Found a file that opens wrongly?** [Open an issue](https://github.com/arpitarya/sheetpane/issues/new)
225
+ **Found a file that opens wrongly?** [Open a file issue](https://github.com/arpitarya/sheetpane/issues/new?template=file_issue.yml)
202
226
  with the file (or a minimal copy) attached — it is the most useful thing you can send.
203
227
 
204
228
  ---
205
229
 
230
+ ## Roadmap
231
+
232
+ From the live queue ([`OPEN-WORK`](work/OPEN-WORK.md)) and the [backlog](work/BACKLOG.md). Nothing here is promised by a date.
233
+
234
+ | | what | state |
235
+ |---|---|---|
236
+ | 🔜 | **Files saved by Excel, Google Sheets, LibreOffice and Numbers** in the import tests (W-30) | needs those files saved by hand |
237
+ | 🔜 | **Firefox and WebKit green every night**, not just Chromium (W-70) | in progress |
238
+ | 🔜 | **The agent skills tried in Claude Code, Kiro and Codex** on a real prompt (W-48) | needs a hands-on run |
239
+ | 🔜 | Every sheet-protection switch honoured in Edit: format, sort, filter (B-038) | named |
240
+ | 🔜 | Excel 2010 `x14:` validation and conditional-format rules read and written (B-041) | named |
241
+ | 💭 | **Live pivot tables**, recalculated in the grid ([proposal](work/proposals/pivots.md)) | waiting for a host to ask |
242
+ | 💭 | **Dismiss** a workbook's own validation warning for one review ([proposal](work/proposals/dismiss-workbook-errors.md)) | proposed |
243
+ | 💭 | Keep the workbook in IndexedDB as well as memory (B-025) | deferred |
244
+
245
+ ---
246
+
247
+ ## FAQ
248
+
249
+ **Is my file uploaded anywhere?**
250
+ No. sheetpane reads, edits and checks it in the tab. Its only network requests are the GETs for the `src` and `rules-src` you set ([law L11](records/0013_LAW-11-workbook-stays-in-the-browser.md)).
251
+
252
+ **Do formulas work?**
253
+ With the [`formulas`](packages/formulas/README.md) plugin, yes: it recalculates as you edit, using IronCalc in WebAssembly, loaded only when you use it. Without it, a formula cell shows the value saved in the file.
254
+
255
+ **How do I save the edited file?**
256
+ Press Download, or call `export()` on `<sheetpane-excel>` for a `Blob` with every change. sheetpane keeps every change in memory; storing the file is your app's job ([law L6](records/0008_LAW-6-edits-in-memory-export-with-changes.md)).
257
+
258
+ **Can I use the reader and writer without the UI?**
259
+ Yes. [`@sheetpane/import`](packages/import/README.md) reads `.xlsx` / `.csv` into a plain JavaScript object, in a page or in Node. [`@sheetpane/export`](packages/export/README.md) turns one back into a file.
260
+
261
+ **Which frameworks?**
262
+ Any. The elements are standard web components; React, Vue, Svelte, Solid and Angular each need one line of setup ([guide](packages/grid/README.md#vue-svelte-solid-angular)).
263
+
264
+ **Will the API change?**
265
+ Until 1.0 it can change between minor versions. The [CHANGELOG](CHANGELOG.md) says what changed and what to do, under *Before you upgrade*.
266
+
267
+ **Where do the error rules come from?**
268
+ Three places: a JSON rules file, column rules you set in code, and the workbook's own data validation (with the [`validation`](packages/validation/README.md) plugin). Every error code is listed in [`docs/ERRORS.md`](docs/ERRORS.md).
269
+
270
+ ---
271
+
206
272
  ## Packages
207
273
 
208
274
  **One version for all**, ESM with types.
@@ -226,8 +292,9 @@ open source ([law L2](records/0004_LAW-2-foss-dependencies.md)).
226
292
 
227
293
  ## Contributing
228
294
 
229
- **Welcome — especially failing files and bug reports.** You need **Node 22+**,
230
- **pnpm 10** and [**just**](https://just.systems).
295
+ **Welcome — especially failing files and bug reports.** Read [CONTRIBUTING.md](CONTRIBUTING.md); report security issues privately ([SECURITY.md](SECURITY.md)); everyone follows the [Code of Conduct](CODE_OF_CONDUCT.md).
296
+
297
+ You need **Node 22+**, **pnpm 10** and [**just**](https://just.systems).
231
298
 
232
299
  ```sh
233
300
  just install # pnpm install --frozen-lockfile
@@ -262,14 +329,14 @@ the evidence**. Start at [`CLAUDE.md`](CLAUDE.md) if you are one.
262
329
 
263
330
  <div align="center">
264
331
 
265
- [MIT](LICENSE) © Arpit Arya
332
+ [MIT licence](LICENSE) © Arpit Arya — free for commercial and private use
266
333
 
267
334
  </div>
268
335
 
269
336
 
270
337
  ---
271
338
 
272
- <!-- source: packages/grid/README.md (https://github.com/arpitarya/sheetpane/blob/v0.5.0/packages/grid/README.md) -->
339
+ <!-- source: packages/grid/README.md (https://github.com/arpitarya/sheetpane/blob/v0.5.1/packages/grid/README.md) -->
273
340
 
274
341
  # @sheetpane/grid
275
342
 
@@ -986,7 +1053,7 @@ The specs are the records [SR-GRID](../../records/0105_GRID.md) and
986
1053
 
987
1054
  ---
988
1055
 
989
- <!-- source: packages/export/README.md (https://github.com/arpitarya/sheetpane/blob/v0.5.0/packages/export/README.md) -->
1056
+ <!-- source: packages/export/README.md (https://github.com/arpitarya/sheetpane/blob/v0.5.1/packages/export/README.md) -->
990
1057
 
991
1058
  # @sheetpane/export
992
1059
 
@@ -1202,7 +1269,7 @@ The spec is the record [SR-EXPORT](../../records/0103_EXPORT.md).
1202
1269
 
1203
1270
  ---
1204
1271
 
1205
- <!-- source: packages/import/README.md (https://github.com/arpitarya/sheetpane/blob/v0.5.0/packages/import/README.md) -->
1272
+ <!-- source: packages/import/README.md (https://github.com/arpitarya/sheetpane/blob/v0.5.1/packages/import/README.md) -->
1206
1273
 
1207
1274
  # @sheetpane/import
1208
1275
 
@@ -1269,7 +1336,7 @@ The spec is the record [SR-IMPORT](../../records/0104_IMPORT.md).
1269
1336
 
1270
1337
  ---
1271
1338
 
1272
- <!-- source: packages/numfmt/README.md (https://github.com/arpitarya/sheetpane/blob/v0.5.0/packages/numfmt/README.md) -->
1339
+ <!-- source: packages/numfmt/README.md (https://github.com/arpitarya/sheetpane/blob/v0.5.1/packages/numfmt/README.md) -->
1273
1340
 
1274
1341
  # @sheetpane/numfmt
1275
1342
 
@@ -1380,7 +1447,7 @@ How plugins plug in: [`work/compare/plugins.compare.md`](../../work/compare/plug
1380
1447
 
1381
1448
  ---
1382
1449
 
1383
- <!-- source: packages/formulas/README.md (https://github.com/arpitarya/sheetpane/blob/v0.5.0/packages/formulas/README.md) -->
1450
+ <!-- source: packages/formulas/README.md (https://github.com/arpitarya/sheetpane/blob/v0.5.1/packages/formulas/README.md) -->
1384
1451
 
1385
1452
  # @sheetpane/formulas
1386
1453
 
@@ -1493,7 +1560,7 @@ How plugins plug in: [`work/compare/plugins.compare.md`](../../work/compare/plug
1493
1560
 
1494
1561
  ---
1495
1562
 
1496
- <!-- source: packages/styles/README.md (https://github.com/arpitarya/sheetpane/blob/v0.5.0/packages/styles/README.md) -->
1563
+ <!-- source: packages/styles/README.md (https://github.com/arpitarya/sheetpane/blob/v0.5.1/packages/styles/README.md) -->
1497
1564
 
1498
1565
  # @sheetpane/styles
1499
1566
 
@@ -1599,7 +1666,7 @@ How plugins plug in: [`work/compare/plugins.compare.md`](../../work/compare/plug
1599
1666
 
1600
1667
  ---
1601
1668
 
1602
- <!-- source: packages/validation/README.md (https://github.com/arpitarya/sheetpane/blob/v0.5.0/packages/validation/README.md) -->
1669
+ <!-- source: packages/validation/README.md (https://github.com/arpitarya/sheetpane/blob/v0.5.1/packages/validation/README.md) -->
1603
1670
 
1604
1671
  # @sheetpane/validation
1605
1672
 
@@ -1830,7 +1897,7 @@ the rule rows when you need them.
1830
1897
 
1831
1898
  ---
1832
1899
 
1833
- <!-- source: packages/condfmt/README.md (https://github.com/arpitarya/sheetpane/blob/v0.5.0/packages/condfmt/README.md) -->
1900
+ <!-- source: packages/condfmt/README.md (https://github.com/arpitarya/sheetpane/blob/v0.5.1/packages/condfmt/README.md) -->
1834
1901
 
1835
1902
  # @sheetpane/condfmt
1836
1903
 
@@ -1948,7 +2015,7 @@ How plugins plug in: [`work/compare/plugins.compare.md`](../../work/compare/plug
1948
2015
 
1949
2016
  ---
1950
2017
 
1951
- <!-- source: packages/images/README.md (https://github.com/arpitarya/sheetpane/blob/v0.5.0/packages/images/README.md) -->
2018
+ <!-- source: packages/images/README.md (https://github.com/arpitarya/sheetpane/blob/v0.5.1/packages/images/README.md) -->
1952
2019
 
1953
2020
  # @sheetpane/images
1954
2021
 
@@ -2034,7 +2101,7 @@ LibreOffice are owed by W-30.
2034
2101
 
2035
2102
  ---
2036
2103
 
2037
- <!-- source: packages/charts/README.md (https://github.com/arpitarya/sheetpane/blob/v0.5.0/packages/charts/README.md) -->
2104
+ <!-- source: packages/charts/README.md (https://github.com/arpitarya/sheetpane/blob/v0.5.1/packages/charts/README.md) -->
2038
2105
 
2039
2106
  # @sheetpane/charts
2040
2107
 
@@ -2168,7 +2235,7 @@ How plugins plug in: [`work/compare/plugins.compare.md`](../../work/compare/plug
2168
2235
 
2169
2236
  ---
2170
2237
 
2171
- <!-- source: packages/comments/README.md (https://github.com/arpitarya/sheetpane/blob/v0.5.0/packages/comments/README.md) -->
2238
+ <!-- source: packages/comments/README.md (https://github.com/arpitarya/sheetpane/blob/v0.5.1/packages/comments/README.md) -->
2172
2239
 
2173
2240
  # @sheetpane/comments
2174
2241
 
@@ -2308,7 +2375,7 @@ Spec: [`work/open/W-22-comments.md`](../../work/open/W-22-comments.md).
2308
2375
 
2309
2376
  ---
2310
2377
 
2311
- <!-- source: packages/visibility/README.md (https://github.com/arpitarya/sheetpane/blob/v0.5.0/packages/visibility/README.md) -->
2378
+ <!-- source: packages/visibility/README.md (https://github.com/arpitarya/sheetpane/blob/v0.5.1/packages/visibility/README.md) -->
2312
2379
 
2313
2380
  # @sheetpane/visibility
2314
2381
 
@@ -2348,7 +2415,7 @@ Spec: [SR-VISIBILITY](../../records/0121_VISIBILITY.md). MIT.
2348
2415
 
2349
2416
  ---
2350
2417
 
2351
- <!-- source: packages/tables/README.md (https://github.com/arpitarya/sheetpane/blob/v0.5.0/packages/tables/README.md) -->
2418
+ <!-- source: packages/tables/README.md (https://github.com/arpitarya/sheetpane/blob/v0.5.1/packages/tables/README.md) -->
2352
2419
 
2353
2420
  # @sheetpane/tables
2354
2421
 
@@ -2395,7 +2462,7 @@ Spec: [SR-TABLES](../../records/0122_TABLES.md). MIT.
2395
2462
 
2396
2463
  ---
2397
2464
 
2398
- <!-- source: packages/compare/README.md (https://github.com/arpitarya/sheetpane/blob/v0.5.0/packages/compare/README.md) -->
2465
+ <!-- source: packages/compare/README.md (https://github.com/arpitarya/sheetpane/blob/v0.5.1/packages/compare/README.md) -->
2399
2466
 
2400
2467
  # @sheetpane/compare
2401
2468
 
@@ -2467,7 +2534,7 @@ Spec: [SR-COMPARE](../../records/0124_COMPARE.md). MIT.
2467
2534
 
2468
2535
  ---
2469
2536
 
2470
- <!-- source: packages/review/README.md (https://github.com/arpitarya/sheetpane/blob/v0.5.0/packages/review/README.md) -->
2537
+ <!-- source: packages/review/README.md (https://github.com/arpitarya/sheetpane/blob/v0.5.1/packages/review/README.md) -->
2471
2538
 
2472
2539
  # @sheetpane/review
2473
2540
 
@@ -2599,7 +2666,7 @@ Spec: [SR-REVIEW](../../records/0123_REVIEW.md). MIT.
2599
2666
 
2600
2667
  ---
2601
2668
 
2602
- <!-- source: packages/fixtures/README.md (https://github.com/arpitarya/sheetpane/blob/v0.5.0/packages/fixtures/README.md) -->
2669
+ <!-- source: packages/fixtures/README.md (https://github.com/arpitarya/sheetpane/blob/v0.5.1/packages/fixtures/README.md) -->
2603
2670
 
2604
2671
  # @sheetpane/fixtures
2605
2672
 
@@ -2639,7 +2706,7 @@ The spec is the record [SR-FIXTURES](../../records/0115_FIXTURES.md).
2639
2706
 
2640
2707
  ---
2641
2708
 
2642
- <!-- source: packages/testing/README.md (https://github.com/arpitarya/sheetpane/blob/v0.5.0/packages/testing/README.md) -->
2709
+ <!-- source: packages/testing/README.md (https://github.com/arpitarya/sheetpane/blob/v0.5.1/packages/testing/README.md) -->
2643
2710
 
2644
2711
  # @sheetpane/testing
2645
2712
 
@@ -2689,7 +2756,7 @@ The spec is the record [SR-TESTING](../../records/0118_TESTING.md).
2689
2756
 
2690
2757
  ---
2691
2758
 
2692
- <!-- source: packages/skills/README.md (https://github.com/arpitarya/sheetpane/blob/v0.5.0/packages/skills/README.md) -->
2759
+ <!-- source: packages/skills/README.md (https://github.com/arpitarya/sheetpane/blob/v0.5.1/packages/skills/README.md) -->
2693
2760
 
2694
2761
  # @sheetpane/skills
2695
2762
 
@@ -2760,7 +2827,7 @@ the elements do not have. The spec is the record
2760
2827
 
2761
2828
  ---
2762
2829
 
2763
- <!-- source: packages/mcp/README.md (https://github.com/arpitarya/sheetpane/blob/v0.5.0/packages/mcp/README.md) -->
2830
+ <!-- source: packages/mcp/README.md (https://github.com/arpitarya/sheetpane/blob/v0.5.1/packages/mcp/README.md) -->
2764
2831
 
2765
2832
  # @sheetpane/mcp
2766
2833
 
@@ -2801,7 +2868,7 @@ Spec: [SR-MCP](../../records/0119_MCP.md). MIT.
2801
2868
 
2802
2869
  ---
2803
2870
 
2804
- <!-- source: docs/ARCHITECTURE.md (https://github.com/arpitarya/sheetpane/blob/v0.5.0/docs/ARCHITECTURE.md) -->
2871
+ <!-- source: docs/ARCHITECTURE.md (https://github.com/arpitarya/sheetpane/blob/v0.5.1/docs/ARCHITECTURE.md) -->
2805
2872
 
2806
2873
  # sheetpane — architecture
2807
2874
 
@@ -3040,7 +3107,7 @@ How it is all tested — Vitest, real browsers, fixtures, goldens — is the
3040
3107
 
3041
3108
  ---
3042
3109
 
3043
- <!-- source: docs/GLOSSARY.md (https://github.com/arpitarya/sheetpane/blob/v0.5.0/docs/GLOSSARY.md) -->
3110
+ <!-- source: docs/GLOSSARY.md (https://github.com/arpitarya/sheetpane/blob/v0.5.1/docs/GLOSSARY.md) -->
3044
3111
 
3045
3112
  # Glossary
3046
3113
 
@@ -3081,7 +3148,7 @@ How it is all tested — Vitest, real browsers, fixtures, goldens — is the
3081
3148
 
3082
3149
  ---
3083
3150
 
3084
- <!-- source: docs/ERRORS.md (https://github.com/arpitarya/sheetpane/blob/v0.5.0/docs/ERRORS.md) -->
3151
+ <!-- source: docs/ERRORS.md (https://github.com/arpitarya/sheetpane/blob/v0.5.1/docs/ERRORS.md) -->
3085
3152
 
3086
3153
  # Error codes
3087
3154
 
@@ -4162,7 +4229,7 @@ throws: each problem is one `note` error, `author: 'host'`, with its `code`.
4162
4229
 
4163
4230
  ---
4164
4231
 
4165
- <!-- source: records/0001_LAWS.md (https://github.com/arpitarya/sheetpane/blob/v0.5.0/records/0001_LAWS.md) -->
4232
+ <!-- source: records/0001_LAWS.md (https://github.com/arpitarya/sheetpane/blob/v0.5.1/records/0001_LAWS.md) -->
4166
4233
 
4167
4234
  # SR-LAWS — the laws have exactly one home each
4168
4235
 
@@ -4250,7 +4317,7 @@ carries a law's normative text.
4250
4317
 
4251
4318
  ---
4252
4319
 
4253
- <!-- source: records/0002_LAW-0-authority.md (https://github.com/arpitarya/sheetpane/blob/v0.5.0/records/0002_LAW-0-authority.md) -->
4320
+ <!-- source: records/0002_LAW-0-authority.md (https://github.com/arpitarya/sheetpane/blob/v0.5.1/records/0002_LAW-0-authority.md) -->
4254
4321
 
4255
4322
  # SR-LAW-0 — L0, the records are the only source of truth
4256
4323
 
@@ -4366,7 +4433,7 @@ is never listed here.*
4366
4433
 
4367
4434
  ---
4368
4435
 
4369
- <!-- source: records/0003_LAW-1-retired-records-archived.md (https://github.com/arpitarya/sheetpane/blob/v0.5.0/records/0003_LAW-1-retired-records-archived.md) -->
4436
+ <!-- source: records/0003_LAW-1-retired-records-archived.md (https://github.com/arpitarya/sheetpane/blob/v0.5.1/records/0003_LAW-1-retired-records-archived.md) -->
4370
4437
 
4371
4438
  # SR-LAW-1 — L1, a retired record is archived, never deleted
4372
4439
 
@@ -4459,7 +4526,7 @@ is never listed here.*
4459
4526
 
4460
4527
  ---
4461
4528
 
4462
- <!-- source: records/0004_LAW-2-foss-dependencies.md (https://github.com/arpitarya/sheetpane/blob/v0.5.0/records/0004_LAW-2-foss-dependencies.md) -->
4529
+ <!-- source: records/0004_LAW-2-foss-dependencies.md (https://github.com/arpitarya/sheetpane/blob/v0.5.1/records/0004_LAW-2-foss-dependencies.md) -->
4463
4530
 
4464
4531
  # SR-LAW-2 — L2, every dependency is free and open source
4465
4532
 
@@ -4568,7 +4635,7 @@ is never listed here.*
4568
4635
 
4569
4636
  ---
4570
4637
 
4571
- <!-- source: records/0005_LAW-3-xlsx-and-csv-only.md (https://github.com/arpitarya/sheetpane/blob/v0.5.0/records/0005_LAW-3-xlsx-and-csv-only.md) -->
4638
+ <!-- source: records/0005_LAW-3-xlsx-and-csv-only.md (https://github.com/arpitarya/sheetpane/blob/v0.5.1/records/0005_LAW-3-xlsx-and-csv-only.md) -->
4572
4639
 
4573
4640
  # SR-LAW-3 — L3, sheetpane supports XLSX and CSV only
4574
4641
 
@@ -4681,7 +4748,7 @@ is never listed here.*
4681
4748
 
4682
4749
  ---
4683
4750
 
4684
- <!-- source: records/0006_LAW-4-web-component.md (https://github.com/arpitarya/sheetpane/blob/v0.5.0/records/0006_LAW-4-web-component.md) -->
4751
+ <!-- source: records/0006_LAW-4-web-component.md (https://github.com/arpitarya/sheetpane/blob/v0.5.1/records/0006_LAW-4-web-component.md) -->
4685
4752
 
4686
4753
  # SR-LAW-4 — L4, sheetpane is always a web component
4687
4754
 
@@ -4801,7 +4868,7 @@ is never listed here.*
4801
4868
 
4802
4869
  ---
4803
4870
 
4804
- <!-- source: records/0007_LAW-5-host-font.md (https://github.com/arpitarya/sheetpane/blob/v0.5.0/records/0007_LAW-5-host-font.md) -->
4871
+ <!-- source: records/0007_LAW-5-host-font.md (https://github.com/arpitarya/sheetpane/blob/v0.5.1/records/0007_LAW-5-host-font.md) -->
4805
4872
 
4806
4873
  # SR-LAW-5 — L5, the font is the browser's default unless the host sets one
4807
4874
 
@@ -4920,7 +4987,7 @@ is never listed here.*
4920
4987
 
4921
4988
  ---
4922
4989
 
4923
- <!-- source: records/0008_LAW-6-edits-in-memory-export-with-changes.md (https://github.com/arpitarya/sheetpane/blob/v0.5.0/records/0008_LAW-6-edits-in-memory-export-with-changes.md) -->
4990
+ <!-- source: records/0008_LAW-6-edits-in-memory-export-with-changes.md (https://github.com/arpitarya/sheetpane/blob/v0.5.1/records/0008_LAW-6-edits-in-memory-export-with-changes.md) -->
4924
4991
 
4925
4992
  # SR-LAW-6 — L6, every change is held in memory and export carries it
4926
4993
 
@@ -5031,7 +5098,7 @@ is never listed here.*
5031
5098
 
5032
5099
  ---
5033
5100
 
5034
- <!-- source: records/0009_LAW-7-surfaces-always-in-sync.md (https://github.com/arpitarya/sheetpane/blob/v0.5.0/records/0009_LAW-7-surfaces-always-in-sync.md) -->
5101
+ <!-- source: records/0009_LAW-7-surfaces-always-in-sync.md (https://github.com/arpitarya/sheetpane/blob/v0.5.1/records/0009_LAW-7-surfaces-always-in-sync.md) -->
5035
5102
 
5036
5103
  # SR-LAW-7 — L7, the view, edit and error components are always in sync
5037
5104
 
@@ -5140,7 +5207,7 @@ is never listed here.*
5140
5207
 
5141
5208
  ---
5142
5209
 
5143
- <!-- source: records/0010_LAW-8-npm-package.md (https://github.com/arpitarya/sheetpane/blob/v0.5.0/records/0010_LAW-8-npm-package.md) -->
5210
+ <!-- source: records/0010_LAW-8-npm-package.md (https://github.com/arpitarya/sheetpane/blob/v0.5.1/records/0010_LAW-8-npm-package.md) -->
5144
5211
 
5145
5212
  # SR-LAW-8 — L8, sheetpane is consumed as an npm package
5146
5213
 
@@ -5249,7 +5316,7 @@ is never listed here.*
5249
5316
 
5250
5317
  ---
5251
5318
 
5252
- <!-- source: records/0011_LAW-9-memory-is-a-javascript-object.md (https://github.com/arpitarya/sheetpane/blob/v0.5.0/records/0011_LAW-9-memory-is-a-javascript-object.md) -->
5319
+ <!-- source: records/0011_LAW-9-memory-is-a-javascript-object.md (https://github.com/arpitarya/sheetpane/blob/v0.5.1/records/0011_LAW-9-memory-is-a-javascript-object.md) -->
5253
5320
 
5254
5321
  # SR-LAW-9 — L9, memory means a JavaScript object, for now
5255
5322
 
@@ -5347,7 +5414,7 @@ is never listed here.*
5347
5414
 
5348
5415
  ---
5349
5416
 
5350
- <!-- source: records/0101_DOWNLOAD.md (https://github.com/arpitarya/sheetpane/blob/v0.5.0/records/0101_DOWNLOAD.md) -->
5417
+ <!-- source: records/0101_DOWNLOAD.md (https://github.com/arpitarya/sheetpane/blob/v0.5.1/records/0101_DOWNLOAD.md) -->
5351
5418
 
5352
5419
  # SR-DOWNLOAD — download(): export output in, a saved .xlsx or .csv out
5353
5420
 
@@ -5593,7 +5660,7 @@ is never listed here.*
5593
5660
 
5594
5661
  ---
5595
5662
 
5596
- <!-- source: records/0102_BUILD.md (https://github.com/arpitarya/sheetpane/blob/v0.5.0/records/0102_BUILD.md) -->
5663
+ <!-- source: records/0102_BUILD.md (https://github.com/arpitarya/sheetpane/blob/v0.5.1/records/0102_BUILD.md) -->
5597
5664
 
5598
5665
  # SR-BUILD — the monorepo build
5599
5666
 
@@ -5961,7 +6028,7 @@ is never listed here.*
5961
6028
 
5962
6029
  ---
5963
6030
 
5964
- <!-- source: records/0103_EXPORT.md (https://github.com/arpitarya/sheetpane/blob/v0.5.0/records/0103_EXPORT.md) -->
6031
+ <!-- source: records/0103_EXPORT.md (https://github.com/arpitarya/sheetpane/blob/v0.5.1/records/0103_EXPORT.md) -->
5965
6032
 
5966
6033
  # SR-EXPORT — @sheetpane/export
5967
6034
 
@@ -6283,7 +6350,7 @@ is never listed here.*
6283
6350
 
6284
6351
  ---
6285
6352
 
6286
- <!-- source: records/0104_IMPORT.md (https://github.com/arpitarya/sheetpane/blob/v0.5.0/records/0104_IMPORT.md) -->
6353
+ <!-- source: records/0104_IMPORT.md (https://github.com/arpitarya/sheetpane/blob/v0.5.1/records/0104_IMPORT.md) -->
6287
6354
 
6288
6355
  # SR-IMPORT — @sheetpane/import
6289
6356
 
@@ -6581,7 +6648,7 @@ is never listed here.*
6581
6648
 
6582
6649
  ---
6583
6650
 
6584
- <!-- source: records/0105_GRID.md (https://github.com/arpitarya/sheetpane/blob/v0.5.0/records/0105_GRID.md) -->
6651
+ <!-- source: records/0105_GRID.md (https://github.com/arpitarya/sheetpane/blob/v0.5.1/records/0105_GRID.md) -->
6585
6652
 
6586
6653
  # SR-GRID — @sheetpane/grid
6587
6654
 
@@ -7770,7 +7837,7 @@ is never listed here.*
7770
7837
 
7771
7838
  ---
7772
7839
 
7773
- <!-- source: records/0106_ERRORS.md (https://github.com/arpitarya/sheetpane/blob/v0.5.0/records/0106_ERRORS.md) -->
7840
+ <!-- source: records/0106_ERRORS.md (https://github.com/arpitarya/sheetpane/blob/v0.5.1/records/0106_ERRORS.md) -->
7774
7841
 
7775
7842
  # SR-ERRORS — <sheetpane-errors>
7776
7843
 
@@ -8090,7 +8157,7 @@ is never listed here.*
8090
8157
 
8091
8158
  ---
8092
8159
 
8093
- <!-- source: records/0107_IMAGES.md (https://github.com/arpitarya/sheetpane/blob/v0.5.0/records/0107_IMAGES.md) -->
8160
+ <!-- source: records/0107_IMAGES.md (https://github.com/arpitarya/sheetpane/blob/v0.5.1/records/0107_IMAGES.md) -->
8094
8161
 
8095
8162
  # SR-IMAGES — @sheetpane/images
8096
8163
 
@@ -8218,7 +8285,7 @@ is never listed here.*
8218
8285
 
8219
8286
  ---
8220
8287
 
8221
- <!-- source: records/0108_VALIDATION.md (https://github.com/arpitarya/sheetpane/blob/v0.5.0/records/0108_VALIDATION.md) -->
8288
+ <!-- source: records/0108_VALIDATION.md (https://github.com/arpitarya/sheetpane/blob/v0.5.1/records/0108_VALIDATION.md) -->
8222
8289
 
8223
8290
  # SR-VALIDATION — @sheetpane/validation
8224
8291
 
@@ -8470,7 +8537,7 @@ is never listed here.*
8470
8537
 
8471
8538
  ---
8472
8539
 
8473
- <!-- source: records/0109_NUMFMT.md (https://github.com/arpitarya/sheetpane/blob/v0.5.0/records/0109_NUMFMT.md) -->
8540
+ <!-- source: records/0109_NUMFMT.md (https://github.com/arpitarya/sheetpane/blob/v0.5.1/records/0109_NUMFMT.md) -->
8474
8541
 
8475
8542
  # SR-NUMFMT — @sheetpane/numfmt
8476
8543
 
@@ -8606,7 +8673,7 @@ is never listed here.*
8606
8673
 
8607
8674
  ---
8608
8675
 
8609
- <!-- source: records/0110_STYLES.md (https://github.com/arpitarya/sheetpane/blob/v0.5.0/records/0110_STYLES.md) -->
8676
+ <!-- source: records/0110_STYLES.md (https://github.com/arpitarya/sheetpane/blob/v0.5.1/records/0110_STYLES.md) -->
8610
8677
 
8611
8678
  # SR-STYLES — @sheetpane/styles
8612
8679
 
@@ -8772,7 +8839,7 @@ is never listed here.*
8772
8839
 
8773
8840
  ---
8774
8841
 
8775
- <!-- source: records/0111_FORMULAS.md (https://github.com/arpitarya/sheetpane/blob/v0.5.0/records/0111_FORMULAS.md) -->
8842
+ <!-- source: records/0111_FORMULAS.md (https://github.com/arpitarya/sheetpane/blob/v0.5.1/records/0111_FORMULAS.md) -->
8776
8843
 
8777
8844
  # SR-FORMULAS — @sheetpane/formulas
8778
8845
 
@@ -8942,7 +9009,7 @@ is never listed here.*
8942
9009
 
8943
9010
  ---
8944
9011
 
8945
- <!-- source: records/0112_COMMENTS.md (https://github.com/arpitarya/sheetpane/blob/v0.5.0/records/0112_COMMENTS.md) -->
9012
+ <!-- source: records/0112_COMMENTS.md (https://github.com/arpitarya/sheetpane/blob/v0.5.1/records/0112_COMMENTS.md) -->
8946
9013
 
8947
9014
  # SR-COMMENTS — @sheetpane/comments
8948
9015
 
@@ -9115,7 +9182,7 @@ is never listed here.*
9115
9182
 
9116
9183
  ---
9117
9184
 
9118
- <!-- source: records/0113_CHARTS.md (https://github.com/arpitarya/sheetpane/blob/v0.5.0/records/0113_CHARTS.md) -->
9185
+ <!-- source: records/0113_CHARTS.md (https://github.com/arpitarya/sheetpane/blob/v0.5.1/records/0113_CHARTS.md) -->
9119
9186
 
9120
9187
  # SR-CHARTS — @sheetpane/charts
9121
9188
 
@@ -9267,7 +9334,7 @@ is never listed here.*
9267
9334
 
9268
9335
  ---
9269
9336
 
9270
- <!-- source: records/0114_CONDFMT.md (https://github.com/arpitarya/sheetpane/blob/v0.5.0/records/0114_CONDFMT.md) -->
9337
+ <!-- source: records/0114_CONDFMT.md (https://github.com/arpitarya/sheetpane/blob/v0.5.1/records/0114_CONDFMT.md) -->
9271
9338
 
9272
9339
  # SR-CONDFMT — @sheetpane/condfmt
9273
9340
 
@@ -9420,7 +9487,7 @@ is never listed here.*
9420
9487
 
9421
9488
  ---
9422
9489
 
9423
- <!-- source: records/0115_FIXTURES.md (https://github.com/arpitarya/sheetpane/blob/v0.5.0/records/0115_FIXTURES.md) -->
9490
+ <!-- source: records/0115_FIXTURES.md (https://github.com/arpitarya/sheetpane/blob/v0.5.1/records/0115_FIXTURES.md) -->
9424
9491
 
9425
9492
  # SR-FIXTURES — @sheetpane/fixtures
9426
9493
 
@@ -9572,7 +9639,7 @@ is never listed here.*
9572
9639
 
9573
9640
  ---
9574
9641
 
9575
- <!-- source: records/0116_SKILLS.md (https://github.com/arpitarya/sheetpane/blob/v0.5.0/records/0116_SKILLS.md) -->
9642
+ <!-- source: records/0116_SKILLS.md (https://github.com/arpitarya/sheetpane/blob/v0.5.1/records/0116_SKILLS.md) -->
9576
9643
 
9577
9644
  # SR-SKILLS — @sheetpane/skills
9578
9645
 
@@ -9766,7 +9833,7 @@ is never listed here.*
9766
9833
 
9767
9834
  ---
9768
9835
 
9769
- <!-- source: records/0117_CODES.md (https://github.com/arpitarya/sheetpane/blob/v0.5.0/records/0117_CODES.md) -->
9836
+ <!-- source: records/0117_CODES.md (https://github.com/arpitarya/sheetpane/blob/v0.5.1/records/0117_CODES.md) -->
9770
9837
 
9771
9838
  # SR-CODES — stable error codes
9772
9839
 
@@ -9935,7 +10002,7 @@ is never listed here.*
9935
10002
 
9936
10003
  ---
9937
10004
 
9938
- <!-- source: records/0118_TESTING.md (https://github.com/arpitarya/sheetpane/blob/v0.5.0/records/0118_TESTING.md) -->
10005
+ <!-- source: records/0118_TESTING.md (https://github.com/arpitarya/sheetpane/blob/v0.5.1/records/0118_TESTING.md) -->
9939
10006
 
9940
10007
  # SR-TESTING — @sheetpane/testing
9941
10008
 
@@ -10037,7 +10104,7 @@ is never listed here.*
10037
10104
 
10038
10105
  ---
10039
10106
 
10040
- <!-- source: records/0119_MCP.md (https://github.com/arpitarya/sheetpane/blob/v0.5.0/records/0119_MCP.md) -->
10107
+ <!-- source: records/0119_MCP.md (https://github.com/arpitarya/sheetpane/blob/v0.5.1/records/0119_MCP.md) -->
10041
10108
 
10042
10109
  # SR-MCP — @sheetpane/mcp
10043
10110
 
@@ -10218,7 +10285,7 @@ is never listed here.*
10218
10285
 
10219
10286
  ---
10220
10287
 
10221
- <!-- source: records/0121_VISIBILITY.md (https://github.com/arpitarya/sheetpane/blob/v0.5.0/records/0121_VISIBILITY.md) -->
10288
+ <!-- source: records/0121_VISIBILITY.md (https://github.com/arpitarya/sheetpane/blob/v0.5.1/records/0121_VISIBILITY.md) -->
10222
10289
 
10223
10290
  # SR-VISIBILITY — @sheetpane/visibility
10224
10291
 
@@ -10332,7 +10399,7 @@ is never listed here.*
10332
10399
 
10333
10400
  ---
10334
10401
 
10335
- <!-- source: records/0122_TABLES.md (https://github.com/arpitarya/sheetpane/blob/v0.5.0/records/0122_TABLES.md) -->
10402
+ <!-- source: records/0122_TABLES.md (https://github.com/arpitarya/sheetpane/blob/v0.5.1/records/0122_TABLES.md) -->
10336
10403
 
10337
10404
  # SR-TABLES — @sheetpane/tables
10338
10405
 
@@ -10454,7 +10521,7 @@ is never listed here.*
10454
10521
 
10455
10522
  ---
10456
10523
 
10457
- <!-- source: records/0123_REVIEW.md (https://github.com/arpitarya/sheetpane/blob/v0.5.0/records/0123_REVIEW.md) -->
10524
+ <!-- source: records/0123_REVIEW.md (https://github.com/arpitarya/sheetpane/blob/v0.5.1/records/0123_REVIEW.md) -->
10458
10525
 
10459
10526
  # SR-REVIEW — @sheetpane/review
10460
10527
 
@@ -10653,7 +10720,7 @@ is never listed here.*
10653
10720
 
10654
10721
  ---
10655
10722
 
10656
- <!-- source: records/0124_COMPARE.md (https://github.com/arpitarya/sheetpane/blob/v0.5.0/records/0124_COMPARE.md) -->
10723
+ <!-- source: records/0124_COMPARE.md (https://github.com/arpitarya/sheetpane/blob/v0.5.1/records/0124_COMPARE.md) -->
10657
10724
 
10658
10725
  # SR-COMPARE — @sheetpane/compare
10659
10726
 
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.5.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.5.1.
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.5.0/README.md): what it is, the packages, try it
9
- - [@sheetpane/grid](https://github.com/arpitarya/sheetpane/blob/v0.5.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.5.0/docs/ARCHITECTURE.md): packages, elements, the one workbook, the flows
11
- - [Changelog](https://github.com/arpitarya/sheetpane/blob/v0.5.0/CHANGELOG.md): what changed, breaking changes first
8
+ - [sheetpane](https://github.com/arpitarya/sheetpane/blob/v0.5.1/README.md): what it is, the packages, try it
9
+ - [@sheetpane/grid](https://github.com/arpitarya/sheetpane/blob/v0.5.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.5.1/docs/ARCHITECTURE.md): packages, elements, the one workbook, the flows
11
+ - [Changelog](https://github.com/arpitarya/sheetpane/blob/v0.5.1/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.5.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.5.1/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.5.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.5.0/records/0106_ERRORS.md): the error list and the New error form
20
- - [custom-elements.json](https://github.com/arpitarya/sheetpane/blob/v0.5.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.5.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.5.0/packages/import/README.md): read .xlsx / .csv into a JavaScript workbook
23
- - [@sheetpane/export](https://github.com/arpitarya/sheetpane/blob/v0.5.0/packages/export/README.md): write .xlsx / .csv, patch the original, download()
18
+ - [SR-GRID](https://github.com/arpitarya/sheetpane/blob/v0.5.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.5.1/records/0106_ERRORS.md): the error list and the New error form
20
+ - [custom-elements.json](https://github.com/arpitarya/sheetpane/blob/v0.5.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.5.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.5.1/packages/import/README.md): read .xlsx / .csv into a JavaScript workbook
23
+ - [@sheetpane/export](https://github.com/arpitarya/sheetpane/blob/v0.5.1/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.5.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.5.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.5.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.5.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.5.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.5.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.5.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.5.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.5.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.5.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.5.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.5.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.5.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.5.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.5.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.5.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.5.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.5.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.5.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.5.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.5.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.5.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.5.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.5.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.
38
38
 
39
39
  ## Rules and errors
40
- - [Column rules](https://github.com/arpitarya/sheetpane/blob/v0.5.0/packages/grid/README.md#column-rules): checks by column title in code
41
- - [Rules file](https://github.com/arpitarya/sheetpane/blob/v0.5.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.5.0/packages/grid/rules.schema.json): the rules file's JSON Schema
43
- - [Error codes](https://github.com/arpitarya/sheetpane/blob/v0.5.0/docs/ERRORS.md): every SP-xxxx code: meaning, cause, fix
40
+ - [Column rules](https://github.com/arpitarya/sheetpane/blob/v0.5.1/packages/grid/README.md#column-rules): checks by column title in code
41
+ - [Rules file](https://github.com/arpitarya/sheetpane/blob/v0.5.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.5.1/packages/grid/rules.schema.json): the rules file's JSON Schema
43
+ - [Error codes](https://github.com/arpitarya/sheetpane/blob/v0.5.1/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.5.0/packages/testing/README.md): Playwright and Vitest helpers for host apps
47
- - [@sheetpane/fixtures](https://github.com/arpitarya/sheetpane/blob/v0.5.0/packages/fixtures/README.md): known workbooks with a manifest
46
+ - [@sheetpane/testing](https://github.com/arpitarya/sheetpane/blob/v0.5.1/packages/testing/README.md): Playwright and Vitest helpers for host apps
47
+ - [@sheetpane/fixtures](https://github.com/arpitarya/sheetpane/blob/v0.5.1/packages/fixtures/README.md): known workbooks with a manifest
48
48
 
49
49
  ## Skills
50
- - [@sheetpane/skills](https://github.com/arpitarya/sheetpane/blob/v0.5.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.5.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.5.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.5.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.5.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.5.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.5.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.5.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.5.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.5.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.5.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.5.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.5.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.5.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.5.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.5.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.5.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.5.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.5.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.5.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.5.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.5.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.5.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.5.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.5.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.5.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.5.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.5.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.5.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.5.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.5.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.5.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.5.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.5.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.5.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.5.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.5.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.5.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.5.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.5.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.5.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.5.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.5.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.5.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.5.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.5.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.5.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.5.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.5.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.5.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.5.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.5.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.5.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.5.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).
77
77
 
78
78
  ## Records
79
- - [The register](https://github.com/arpitarya/sheetpane/blob/v0.5.0/records/README.md): every record, its state and what it owns
80
- - [SR-LAWS](https://github.com/arpitarya/sheetpane/blob/v0.5.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.5.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.5.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.5.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.5.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.5.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.5.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.5.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.5.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.5.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.5.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.5.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.5.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.5.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.5.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.5.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.5.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.5.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.5.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.5.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.5.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.5.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.5.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.5.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.5.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.5.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.5.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.5.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.5.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.5.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.5.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.5.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.5.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.5.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.5.1/records/README.md): every record, its state and what it owns
80
+ - [SR-LAWS](https://github.com/arpitarya/sheetpane/blob/v0.5.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.5.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.5.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.5.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.5.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.5.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.5.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.5.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.5.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.5.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.5.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.5.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.5.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.5.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.5.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.5.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.5.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.5.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.5.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.5.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.5.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.5.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.5.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.5.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.5.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.5.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.5.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.5.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.5.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.5.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.5.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.5.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.5.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.5.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.
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.5.0",
4
+ "version": "0.5.1",
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.5.0",
3
+ "version": "0.5.1",
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.5.0",
65
- "@sheetpane/import": "0.5.0",
66
- "@sheetpane/skills": "0.5.0"
64
+ "@sheetpane/import": "0.5.1",
65
+ "@sheetpane/skills": "0.5.1",
66
+ "@sheetpane/export": "0.5.1"
67
67
  },
68
68
  "publishConfig": {
69
69
  "access": "public"