What's New
What's on This Page
The big stuff. The shiny new things. The stuff we got tired of fixing. For everything else, there's the changelog.
Chunklet v2.4.0
π EML and PPTX, At Your Service
Two new processors joined the family. EML (RFC 822 email) and PPTX (PowerPoint). Drop a .eml or .pptx in, get chunks out. Nothing to configure, nothing to wire up.
The EML one grabs body, subject, headers, and attachments. The PPTX one handles slides, tables, charts, and presenter notes. We also built a shared build_md_table() utility so CSV, XLSX, and PPTX tables all go through the same code path instead of three different ones.
πΊπ³ yasbd-lib: Faster, More accurate, More Languages
We swapped pysbd and sentsplit for yasbd-lib. Total supported languages went from 53 to 62. 39 built-in in yasbd-lib alone plus fallbacks for the rest. Not convinced? Then let yasbd-lib vs PySBD prove it.
π What Broke and Got Fixed
- Visualizer label:
<label for="fileInput">so screen readers can actually see the file picker - Lazy import gotcha:
if not epub:becameif epub is None:because truthiness on an optional import is not a personality trait - Split oversize dupe:
_split_oversizedno longer doubles the first function signature when a decorated class hits the limit.curr_chunk = [line]+curr_chunk.append(line)is one too many. - Bye dependencies: dropped
pysbd,sentsplit, andtabulate2
π§Ή The Little Things
- CLI split output: shows the detected language instead of
--lang=en --lang=en(yes, it was literally showing the flag in the output) - Sentence terminators: removed
Β‘andΒΏ. They're Spanish opening marks, not sentence closers. We didn't notice for a while. Spanish speakers probably did. - Code chunker cleanup: extracted
_handle_oversized_snippetwith**kwargsso we don't have to thread params through the main loop every time we sneeze
Chunklet v2.3.2
ποΈ DotDict Gets Box-Compatible Serialization
We ditched the external dotdict3 dependency and vendored the code in-tree. Now our DotDict has all the serialization methods you expect from the old python-box days:
to_dict()β recursive conversion back to plain dicts/liststo_json()β serialize to JSON string or fileto_yaml()β YAML, obviously (needspyyaml)to_toml()β TOML support (needstoml)to_msgpack()β MessagePack binary format (needsmsgpack)
The CLI --metadata flag no longer crashes β .to_dict() actually exists now. 2.3x faster than python-box's to_dict() too, since we're not dragging in all of Box's feature creep.
π§ The Boring Stuff
- Removed
dotdict3from dependencies (vendored inchunklet.common.dotdict) - Docs updated: stale "Box" references replaced with "DotDict" + mkdocstrings cross-links
Chunklet v2.3.1
π€ Android Detection, Fixed (Kinda)
v2.3.0 shipped with platform_system markers to detect Android. The problem? Android reports as 'Linux', not 'Android' β so literally nobody was getting the right sentencex version. Fixed now with sys_platform + platform_machine markers. Downside: ARM Linux (Raspberry Pi, etc.) also gets the legacy sentencex<=0.6.1 without Rust bindings. Temporary, we swear.
π DotDict TypeError Fixed
Using DotDict() without arguments threw TypeError on dotdict3 < 1.4.2. Now using DotDict({}) for backward compatibility.
Chunklet v2.3.0
π§© Smarter Sentence Splitting
The universal fallback splitter finally learned some new tricks:
- Non-Latin scripts β Arabic, Chinese, and friends now get treated right
- Quoted text and parens β "this (and this)" stay together as one sentence
- Numbered lists β 1. 2. 3. now behave instead of getting split apart
π Document Chunker Improvements
- Better markdown heading detection β we finally read your headers right
π¨ Visualizer Gets Sleeker
Now serving both JSON and MessagePack β because one format was never enough:
- Browser visualizer requests MessagePack automatically for performance (~30-50%)
- Programmatic clients can choose: JSON (default) or MessagePack (opt-in via
Accept: application/msgpackheader) - MessagePack encoding β because we care about your bandwidth
π The Fixes
- pkg_resources β finally fixed that annoying ModuleNotFoundError (long story)
- Registration β no more TypeError with
functools.partialwhen registering custom splitters - Auto-lang β stopped spamming you with repeated warnings when
lang='auto' - Code output β methods now appear under their class, not "global" (we know, it was annoying)
π§ The Boring Stuff
- Lazy imports for splitter libraries (faster startup)
- Added
vizas shorthand forvisualizationextra - Dropped Python 3.10 support (anyway Python 3.10 is approaching end-of-life)
Chunklet v2.2.0
β¨ Simpler Chunking API
We renamed some methods. Yes, we're those people who rename things. But honestly, the old names were confusing β even to us:
chunk_text()β chunk a stringchunk_file()β chunk a file directlychunk_texts()β batch stringschunk_files()β batch files
The old chunk and batch_chunk still work. They'll whine at you with a deprecation warning. Deal with it or migrate β your choice.
π PlainTextChunker Got Absorbed
PlainTextChunker is now part of DocumentChunker. We know β having two chunkers was weird. Just use chunk_text() or chunk_texts() like a normal person. The old import still works, technically, with a deprecation warning.
βοΈ SentenceSplitter Now Does split_text()
split() is out. split_text() is in. We renamed it because apparently "split" was too short. There's also now split_file() if you're the type who likes skipping steps.
π¨ Visualizer Makeover
The chunk visualizer finally got some love:
- Fullscreen mode β for when you want to pretend you're doing something important
- 3-row layout β less cluttered, more clickable
- Smoother hovers β no more seizure-inducing animations
- Smarter buttons β they stay enabled because, honestly, disabling them was stupid
β¨οΈ Shorter CLI Flags
Finally, stuff you can actually type without wrist strain:
-lfor--lang-hfor--host-mfor--metadata
You're welcome.
π§βπ» Code Chunking, Less Broken
Code chunking got slightly less terrible:
- Cleaner output β fixed weird artifacts in chunks from comment handling (we know, it was annoying)
- More languages β Forth, PHP 8 attributes, VB.NET, ColdFusion, and Pascal. Yes, really.
- String protection β multi-line strings and triple-quotes won't get mangled anymore
π§ The Boring But Necessary Stuff
- Tokenizer timeout β new
--tokenizer-timeout/-tflag so custom tokenizers don't hang forever - Direct imports β
from chunklet import DocumentChunkernow works without making things slow - Fewer crashes β fixed dependency issues with
setuptools<81in CI (sentsplit and pkg_resources, long story) - Global registries β
custom_splitter_registryandcustom_processor_registryexist now - Error messages β slightly less cryptic when things explode
Chunklet v2.1.1
π Visualizer Was Broken
The visualizer didn't work after installing from PyPI. Static files were MIA. Fixed now, obviously.
Chunklet v2.1.0
π Visualizer 1.0
We built an actual UI. Because sometimes you want to click buttons instead of writing code:
- Interactive web interface for parameter tuning
- Launch with
chunklet visualize - Works with all chunker types
π More File Formats
ODT, CSV, and Excel (.xlsx) β added in this release. Because apparently plain text wasn't enough for some people.
Chunklet v2.0.0
π The Big Rewrite (aka "We Broke Everything")
We rewrote the whole thing. You're welcome? Here's what changed:
- π New classes β PlainTextChunker, DocumentChunker, CodeChunker
- π 50+ languages β because the world has more than English
- π Document formats β PDF, DOCX, EPUB, HTML, etc.
- π» Code understanding β actual code chunking, not just "split by lines like a savage"
- π― New constraints β
max_section_breaksandmax_linesfor finer control - β‘ Memory efficient batch β generators in batch methods so your RAM doesn't cry
πΊοΈ Want More Details?
The changelog has everything. We're not gonna repeat it here.