You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Commit 9808ba2
Browse filesBrowse the repository at this point in the historyBrowse files
Copy file name to clipboardExpand all lines: docs/analytics-and-rag.md
+1-1Lines changed: 1 addition & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -126,7 +126,7 @@ The `miniexcel.rag-manifest/v1` JSON file records:
126
126
127
127
Path exports implement `Iterator<Item = Result<RagChunk>>`; only one result chunk, repeated header context, and parser state need to be resident. `visit_rag_chunks_from_bytes` provides the equivalent callback form for browser and in-memory callers.
128
128
129
-
`RagChunk::write_markdown` writes an independent GFM table directly to an I/O sink. `RagManifest::write_markdown_stream_end` can append an optional completion marker after the iterator is exhausted. Markdown is appendable and LLM-readable; JSONL remains canonical for exact typed metadata. See [Streaming Markdown and anydoc comparison](markdown-streaming.md) for the format, memory boundary, and benchmark harness.
129
+
`RagManifest::write_markdown_stream_start` writes source, worksheet, range, and export provenance before iteration. `RagChunk::write_markdown`then writes an independent GFM table and bounded formula/style/number-format metadata directly to an I/O sink. `RagManifest::write_markdown_stream_end` can append an optional completion marker after the iterator is exhausted. Markdown is appendable and LLM-readable; JSONL remains canonical for exact typed metadata. See [Streaming Markdown and anydoc comparison](markdown-streaming.md) for the format, memory boundary, and benchmark harness.
130
130
131
131
Hidden and very-hidden sheets are rejected by default. Call `with_allow_hidden_sheets(true)` only after an explicit privacy decision. Browser Lab exposes the same opt-in and performs all work locally in a Web Worker. It never sends workbook content to an external model.
Copy file name to clipboardExpand all lines: docs/compatibility.md
+3-3Lines changed: 3 additions & 3 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -33,7 +33,7 @@ The latest `calamine 0.36` and `rust_xlsxwriter 0.97` require Rust 1.88. The MVP
33
33
| Typed `Query<T>`|`MiniExcel::query_as<T>()`| Streams rows and applies Serde mapping one row at a time |
34
34
| Structure-preserving query |`MiniExcel::query_structured()`| Streams sparse rows with one-based coordinates, formulas, style IDs, and number formats |
35
35
| Group/filter analytics |`MiniExcel::analyze_with_options()`| Versioned Rust extension; streams rows and retains only bounded group/evidence state |
36
-
| RAG evidence export |`MiniExcel::export_rag()`| Versioned Rust extension; streams addressed JSONL-ready chunks and a source manifest |
36
+
| RAG evidence export |`MiniExcel::export_rag()`| Versioned Rust extension; streams addressed JSONL-ready chunks, enriched GFM Markdown, and a source manifest |
37
37
|`QueryRange`|`ReadOptions::with_start_cell()` / `with_end_cell()`| Inclusive A1 range for dynamic and typed reads |
38
38
|`GetSheetNames`|`MiniExcel::get_sheet_names()`| Workbook order is preserved |
39
39
|`GetSheetInformations`|`MiniExcel::get_sheet_info()`| Includes OOXML ID, order, name, type, visibility, and active state |
@@ -87,7 +87,7 @@ For typed writing, chrono values must use the matching MiniExcel helper (`serial
87
87
88
88
Grouped analytics consume the dynamic row stream without retaining source rows. Memory additionally contains one aggregate state and bounded source-row evidence list per distinct group. `QueryPlan::max_groups` rejects the group that would exceed the configured limit. Result limits do not reduce group-state memory. Version 1 does not implement disk spill, sorted-input aggregation, or constant-memory high-cardinality grouping.
89
89
90
-
Path RAG exports retain parser state, repeated header context, and one output chunk. Their manifest hashes the source file through a separate bounded read. Byte/WASM workflows avoid collecting source rows, but browser uploads inherently retain compressed XLSX bytes in WebAssembly memory; generated JSONL/Blob downloads also consume output-sized memory. Browser Lab runs these operations in a Web Worker for responsiveness, not as a claim of path-equivalent memory.
90
+
Path RAG exports retain parser state, repeated header context, and one output chunk. Their manifest hashes the source file through a separate bounded read. Markdown includes stream-level source/sheet provenance and chunk-local formula/style/number-format metadata without retaining prior chunks. Byte/WASM workflows avoid collecting source rows, but browser uploads inherently retain compressed XLSX bytes in WebAssembly memory; generated JSONL, Markdown, and Blob downloads also consume output-sized memory. Browser Lab runs these operations in a Web Worker for responsiveness, not as a claim of path-equivalent memory.
91
91
92
92
The backend makes two sequential, bounded-memory passes over the selected worksheet entry. The first records only the maximum used column and final explicitly declared row. This is required for MiniExcel-compatible stable dynamic schemas when legal files omit `<dimension>`, and to preserve style-only row elements like the .NET reader. The second pass emits rows. Worksheet XML and prior rows are never retained; memory consists primarily of shared strings, styles, parser buffers, the current row, and the bounded channel.
93
93
@@ -140,7 +140,7 @@ The contract covers only the current common surface: dynamic/typed path queries,
140
140
| New-workbook `SaveAs`| Implemented and roundtrip-tested | Not yet |
0 commit comments