docs(README): add Community Tools section linking cimbar-bigfile#165
docs(README): add Community Tools section linking cimbar-bigfile#165xPeiPeix wants to merge 3 commits into
Conversation
Per discussion in sz3#163. Adds a one-line entry under a new "Community Tools" section, between "Room for improvement/next steps" and "Inspiration".
|
What's the biggest file you've been able to send this way? |
|
Hi @sz3, thanks for asking! The largest file I've personally pushed end-to-end is ~100 MB. With the default params (Mode B / 15 fps / 10 MB chunks / 1.5x redundancy, scanning a 1080p screen with a Pixel 5), the run looks roughly like:
(Full numbers in README.en.md → Performance reference.) The theoretical ceiling is bounded by libcimbar's wirehair fountain decoder — encode_id slots get recycled roughly every ~128 transfers (per #149), so a single session's And one small UX observation from the multi-chunk side that you may already be aware of: In CFC's progress UI, switching the on-screen stream doesn't seem to refresh the displayed progress bar. e.g. if I sit on part04 for a while, jump to part05, then come back to part04, the on-screen bar keeps advancing on the part05 progress (the underlying For multi-stream workflows it can make users unsure which stream is actually being received. We worked around it on the sender side (a "mark this chunk saved" button + a "lock current chunk" toggle so the on-screen stream stays put), which keeps the UX usable. Just sharing the observation in case it's useful context. |
|
I thought the max chunk size was 33MB, which would come out to 3.96GB. |
Ok, that's the number I was looking for. I think the logic is sound, I'm just wary about claiming infinite transfer sizes. It's all fun and games until we find out there's some mysterious problem at 500 MB... also, I pity whoever tests that. 🙂 A bit of trivia that may be useful for the file size limit, and why lower sizes (e.g. 10MB) tend to be a better choice than the full 33 MB for an individual chunk. wirehair has (IIRC) a uint16_t block_id. The wirehair block size in mode B is 625 bytes (7500/12). (edit: I wrote 600 here. math is hard) Quick math puts that at about Trivia: for this reason, at one point early on I had the file size limit at 16 MB, not 33. 🙃 Anyway, the combination of uint16_t and block size also means One more bit of commentary I'm sure I've made before. Provided you're finished sending a chunk, you can re-use the encode_id if you slightly vary the chunk size... (e.g. 10.01 MB chunks after the first go around) So it takes a lot of baby sitting, but this approach probably can be extended to some obscenely large file sizes. (you can also restart the decoder to clear its cache of "done" files, which will have the same effect without changing the chunk size)
That seems like a bug. I'll take a look and see what I can find out. |
落实 sz3/libcimbar#165 评论中 libcimbar 作者提供的 trivia: - manifest-spec.md 补 uint16_t × 600 bytes = 39 MB Mode B cap 推导 + chunk_size 选择对照表 + Mode Bu 警告 - README/README.en 主介绍精准化 (10MB sweet spot 而非"~10MB 上限") - README/README.en 性能段加 "redundancy no penalty" 说明 + 三档场景对照 - README/README.en 加 "进阶: 超大文件" 章节 (encode_id 复用 trick: 变 chunk size 重启 / CFC 重启 decoder) - send.html redundancy 默认 1.5x → 2.0x, max 3.0 → 5.0 - send.html PRESETS 全档上移 (balanced 1.5→2.0, aggressive 1.2→1.5, conservative 2.0→3.0) - send.standalone.html 同步 build
|
Hi @sz3, thanks for the detailed trivia — I've folded everything you mentioned into cimbar-bigfile main (commit 4253901):
Thanks again for the trivia — really helped sharpen both the docs and the defaults. Looking forward to whatever you find on the CFC progress-bar bug. |
… per @sz3 wirehair trivia
|
|
||
| ## Community Tools | ||
|
|
||
| * [cimbar-bigfile](https://github.com/xPeiPeix/cimbar-bigfile) — A pure-frontend wrapper that splits files into multiple parallel `encode_id` streams (10–15 MB chunks per stream, well below the single-stream wirehair capacity ceiling) and ships a `manifest.json` for SHA256-verified reassembly. No changes to libcimbar or cfc required. |
There was a problem hiding this comment.
Maybe:
parallel
encode_idstreams (10–15 MB chunks per stream), and ships amanifest.jsonfor SHA256-verified reassembly. Supports 100+ MB files. No changes to libcimbar or cfc required.
There was a problem hiding this comment.
Applied — thanks for the cleaner phrasing! Dropped the wirehair jargon and added the "100+ MB" capability anchor in c0a3566.
… MB' capability anchor
|
Looks good.
Re-reading this, I did the (very basic) math wrong. 🙃 Anyway, the actual numbers are 625 bytes (technically 619 bytes because we have to subtract out the fountain header... but anyway) -> ~40.5 MB. |
|
Ha, thanks for the correction — applied in 9c67371. Manifest-spec and README tagline now use ~40.5 MB / 625 bytes per block (619 after subtracting the fountain header). |
Per discussion in #163.
Closes #163.
Adds a new "Community Tools" section to
README.mdwith a single one-line entry linking to cimbar-bigfile — a pure-frontend wrapper that splits files into multiple parallelencode_idstreams (10–15 MB chunks per stream, well below the single-stream wirehair capacity ceiling) and ships amanifest.jsonfor SHA256-verified reassembly. No changes to libcimbar or cfc required.Placement: between "Room for improvement/next steps" and "Inspiration", since the tool is a natural extension of the TODO note about splitting larger files.
Happy to adjust placement, wording, or formatting per your preference.