From b49f756fcb351efacf4d1fec525df66fac722a74 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Thu, 20 Aug 2026 19:20:17 +0000 Subject: [PATCH] =?UTF-8?q?=F0=9F=A6=8B=20New=20version=20release?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .changeset/lazy-empty-case.md | 9 --------- CHANGELOG.md | 10 ++++++++++ dotnet/src/SmooAI.File.S3/SmooAI.File.S3.csproj | 2 +- dotnet/src/SmooAI.File/SmooAI.File.csproj | 2 +- go/file/version.go | 2 +- package.json | 2 +- python/pyproject.toml | 2 +- python/src/smooai_file/__init__.py | 2 +- rust/file/Cargo.lock | 2 +- rust/file/Cargo.toml | 2 +- 10 files changed, 18 insertions(+), 17 deletions(-) delete mode 100644 .changeset/lazy-empty-case.md diff --git a/.changeset/lazy-empty-case.md b/.changeset/lazy-empty-case.md deleted file mode 100644 index 06b1537..0000000 --- a/.changeset/lazy-empty-case.md +++ /dev/null @@ -1,9 +0,0 @@ ---- -'@smooai/file': patch ---- - -Add the zero-byte case to the lazy-streaming contract, and give Go a way to say "size not measured". - -`spec/lazy-stream-contract.json` pinned 1 KiB, 64 KiB and 1 MiB sources but not the 0-byte boundary, where "shorter than the detection head" degenerates. Empty S3 objects and zero-length uploads are real — this repo already ships `empty.txt` as a fixture. - -Adding it immediately failed the Go loader, for a real reason: `Size() int64` cannot express "unknown". Go has no optional integer, so `Size() == 0` was doing double duty for an empty file and for a lazy stream whose tail nobody had counted — the other four ports say the latter with `nil` / `None` / `undefined`. New `(*File).SizeKnown() bool` separates them. Additive and non-breaking: the field's zero value means "known", so every eager constructor stays correct untouched. diff --git a/CHANGELOG.md b/CHANGELOG.md index 7eab740..f1188a1 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,15 @@ # @smooai/file +## 2.2.19 + +### Patch Changes + +- edc71da: Add the zero-byte case to the lazy-streaming contract, and give Go a way to say "size not measured". + + `spec/lazy-stream-contract.json` pinned 1 KiB, 64 KiB and 1 MiB sources but not the 0-byte boundary, where "shorter than the detection head" degenerates. Empty S3 objects and zero-length uploads are real — this repo already ships `empty.txt` as a fixture. + + Adding it immediately failed the Go loader, for a real reason: `Size() int64` cannot express "unknown". Go has no optional integer, so `Size() == 0` was doing double duty for an empty file and for a lazy stream whose tail nobody had counted — the other four ports say the latter with `nil` / `None` / `undefined`. New `(*File).SizeKnown() bool` separates them. Additive and non-breaking: the field's zero value means "known", so every eager constructor stays correct untouched. + ## 2.2.18 ### Patch Changes diff --git a/dotnet/src/SmooAI.File.S3/SmooAI.File.S3.csproj b/dotnet/src/SmooAI.File.S3/SmooAI.File.S3.csproj index f892189..b52f34d 100644 --- a/dotnet/src/SmooAI.File.S3/SmooAI.File.S3.csproj +++ b/dotnet/src/SmooAI.File.S3/SmooAI.File.S3.csproj @@ -10,7 +10,7 @@ SmooAI.File.S3 SmooAI.File.S3 SmooAI.File.S3 - 2.2.18 + 2.2.19 S3 helpers for SmooAI.File — createPresignedUploadUrl, createFromS3, uploadToS3, saveToS3. README.md diff --git a/dotnet/src/SmooAI.File/SmooAI.File.csproj b/dotnet/src/SmooAI.File/SmooAI.File.csproj index a31025e..9726e39 100644 --- a/dotnet/src/SmooAI.File/SmooAI.File.csproj +++ b/dotnet/src/SmooAI.File/SmooAI.File.csproj @@ -10,7 +10,7 @@ SmooAI.File SmooAI.File SmooAI.File - 2.2.18 + 2.2.19 File utilities with magic-byte MIME detection (via Mime-Detective) and typed validation errors. Use SmooAI.File.S3 for S3 upload/download helpers. README.md diff --git a/go/file/version.go b/go/file/version.go index 91582a3..4c7178b 100644 --- a/go/file/version.go +++ b/go/file/version.go @@ -1,4 +1,4 @@ package file // Version is the current version of the smooai-file Go package. -const Version = "2.2.18" +const Version = "2.2.19" diff --git a/package.json b/package.json index 15d4021..b75b0a5 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@smooai/file", - "version": "2.2.18", + "version": "2.2.19", "description": "File operations that don't lie — magic-byte MIME detection catches spoofed extensions, size + content validation is built in, and presigned S3 uploads are one call away. Stream-first so large uploads don't blow your memory.", "homepage": "https://github.com/SmooAI/file#readme", "bugs": { diff --git a/python/pyproject.toml b/python/pyproject.toml index 06ec643..00d3a7f 100644 --- a/python/pyproject.toml +++ b/python/pyproject.toml @@ -1,6 +1,6 @@ [project] name = "smooai-file" -version = "2.2.18" +version = "2.2.19" description = "A unified file handling library for working with files from local filesystem, S3, URLs, and streams." readme = "README.md" authors = [{ name = "SmooAI", email = "brent@smooai.com" }] diff --git a/python/src/smooai_file/__init__.py b/python/src/smooai_file/__init__.py index 5dd00b5..1ec4b13 100644 --- a/python/src/smooai_file/__init__.py +++ b/python/src/smooai_file/__init__.py @@ -4,7 +4,7 @@ S3, URLs, and streams. """ -__version__ = "2.2.18" +__version__ = "2.2.19" from ._content_disposition import parse_content_disposition from ._detection import detect_from_bytes, detect_from_extension, extension_from_mime diff --git a/rust/file/Cargo.lock b/rust/file/Cargo.lock index 97333b1..1bb8d59 100644 --- a/rust/file/Cargo.lock +++ b/rust/file/Cargo.lock @@ -2279,7 +2279,7 @@ checksum = "67b1b7a3b5fe4f1376887184045fcf45c69e92af734b7aaddc05fb777b6fbd03" [[package]] name = "smooai-file" -version = "2.2.18" +version = "2.2.19" dependencies = [ "aws-config", "aws-sdk-s3", diff --git a/rust/file/Cargo.toml b/rust/file/Cargo.toml index 98a3d2e..86bd2d3 100644 --- a/rust/file/Cargo.toml +++ b/rust/file/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "smooai-file" -version = "2.2.18" +version = "2.2.19" edition = "2021" description = "A unified file handling library for working with files from local filesystem, S3, URLs, and streams." license = "MIT"