Releases: wenathlan/saddle
Release list
Saddle 1.8.17
Saddle 1.8.17
Saddle 1.8.17 expands the GHCR container from an unqualified single-platform publication to a Linux OCI manifest index. The release workflow builds and publishes linux/amd64, linux/arm64, and linux/ppc64le; it verifies the pushed index, then pulls and runs the amd64 variant for the existing OCI-label and CLI smoke checks. Windows containers are deliberately not claimed because the current Dockerfile is Linux-based and no compatible Node 26.7.0 Windows base was verified.
Changes
| Area | Change |
|---|---|
| Container matrix | Adds Buildx publication for linux/amd64, linux/arm64, and linux/ppc64le. |
| Emulation | Registers QEMU before Buildx so the GitHub-hosted Linux builder can create the selected non-native Linux variants. |
| Validation | Keeps a locally loadable linux/amd64 scan target, verifies the pushed OCI index contains exactly the selected Linux architectures, checks the OCI version label, and runs saddle help. |
| Scope boundary | Defers windows/amd64, linux/arm/v7, and linux/386; rejects unknown/* as a runtime target. |
| Dockerfile | Removes an unused Alpine stage so the Dockerfile resolves only the Debian-based build and runtime stages that participate in the selected matrix. |
| Versioning | Aligns active package, registry, native, extension, crawler, Capacitor, and iOS metadata to 1.8.17, with iOS build number 1008017. |
Container publication contract
| Image reference | Expected published Linux platforms | Verification after push |
|---|---|---|
ghcr.io/wenathlan/saddle:1.8.17 |
linux/amd64, linux/arm64, linux/ppc64le |
OCI manifest-index inspection, amd64 pull, OCI version-label comparison, and CLI help smoke test. |
ghcr.io/wenathlan/saddle:latest |
The same platforms as the version tag | The version-specific tag is verified first; latest is not claimed until the registry workflow completes. |
windows/amd64 requires a separate Windows Dockerfile, an explicitly versioned Windows base image, a compatible Windows runner, and Windows-specific smoke testing. It is not interchangeable with the Debian Linux image. unknown/* descriptors are not advertised as runnable platforms.
Artifact contract
The release workflows derive all names from v1.8.17. The expected artifact matrix remains 38 files: 20 primary artifacts, nine manifests, and nine checksum files. The container archive name is saddle.container.1.8.17.tar.gz; its release manifest records the image reference but does not replace inspection of the pushed registry manifest index.
Verification boundary
These notes describe the release candidate and expected outputs. Registry availability, image index contents, scan results, signatures, SBOM validity, Android signing, iOS artifacts, and any platform-specific execution claim are recorded only after the relevant workflow output independently confirms them.
References
Saddle 1.8.16
Saddle 1.8.16
Saddle 1.8.16 adds a pure, policy-evaluable release-evidence layer above existing checksum verification. The library normalizes caller-supplied evidence, evaluates it through explicit policy, and creates a serializable release-readiness receipt. It remains descriptive: it does not fetch artifacts, scan files, query CVE feeds, sign content, create tags, invoke CI, publish packages, or contact a registry.
Changes
| Area | Change |
|---|---|
| Evidence | Added releaseevidence with explicit notProvided, declared, parsed, checked, verified, rejected, and unknown states. |
| Policy | Added evaluateevidence with caller-selected evidence kinds, allowed states, expected producer/workflow values, ordered reasons, and accepted, rejected, or insufficient outcomes. |
| Readiness | Added releasereadiness, which binds source tag, observed manifest versions, gates, artifact-plan digest, targets, signing state, and an evidence evaluation without executing a release. |
| Verification bridge | Added evidencefromverification, which converts only an already-valid local verifyassets checksum result to checked evidence and retains signing state as metadata. |
| API | Added the root export and @wenathlan/saddle/release-evidence subpath, documented in the public library API. |
| Validation | The candidate passed 136 active tests, 69 legacy tests, engine build, web checks/build, format validation, package dry-run, high-severity audit, flat native validation, and whitespace validation. |
Artifact contract
The release workflows derived artifact names and package versions from v1.8.16. The matrix below matches the attached release assets after the platform workflows completed; signing status remains explicit rather than inferred from a filename.
| Group | Expected attached assets |
|---|---|
| Linux desktop | saddle.browser.1.8.16.x64.appimage, saddle.browser.1.8.16.x64.deb, saddle.browser.1.8.16.x64.rpm, saddle.browser.1.8.16.arm64.appimage, saddle.browser.1.8.16.arm64.deb, saddle.browser.1.8.16.arm64.rpm |
| Windows desktop | saddle.browser.1.8.16.x86.exe, saddle.browser.1.8.16.x86.msi, saddle.browser.1.8.16.x64.exe, saddle.browser.1.8.16.x64.msi, saddle.browser.1.8.16.arm64.exe, saddle.browser.1.8.16.arm64.msi |
| macOS desktop | saddle.browser.1.8.16.x64.dmg, saddle.browser.1.8.16.x64.app.zip, saddle.browser.1.8.16.arm64.dmg, saddle.browser.1.8.16.arm64.app.zip |
| Android | saddle.apk.1.8.16.apk, saddle.aab.1.8.16.aab |
| Container | saddle.container.1.8.16.tar.gz |
| Browser extension | saddle.extension.1.8.16.zip |
| Manifests | manifest.android.1.8.16.json, manifest.container.1.8.16.json, manifest.desktop.linux.arm64.1.8.16.json, manifest.desktop.linux.x64.1.8.16.json, manifest.desktop.macos.arm64.1.8.16.json, manifest.desktop.macos.x64.1.8.16.json, manifest.desktop.windows.arm64.1.8.16.json, manifest.desktop.windows.x64.1.8.16.json, manifest.desktop.windows.x86.1.8.16.json |
| Checksums | sha256.android.1.8.16, sha256.container.1.8.16, sha256.desktop.linux.arm64.1.8.16, sha256.desktop.linux.x64.1.8.16, sha256.desktop.macos.arm64.1.8.16, sha256.desktop.macos.x64.1.8.16, sha256.desktop.windows.arm64.1.8.16, sha256.desktop.windows.x64.1.8.16, sha256.desktop.windows.x86.1.8.16 |
The release contains 38 attached assets: 20 primary artifacts, nine manifests, and nine checksum files. iOS artifacts are absent because Apple signing, provisioning, and export credentials remain caller-owned and no IPA or app archive was built.
Publication and verification policy
The six registry workflows publish from the same validated release tag, in container-first order: GHCR, GitHub Packages npm, public npmjs, Maven, NuGet GitHub Packages, and RubyGems. The GHCR workflow must build, scan, push, pull, inspect its OCI version label, and complete a smoke check. The release does not claim SignPath approval, Authenticode trust, Apple notarization, production Android signing, SBOM validation, vulnerability status, or registry availability unless the completed workflow output independently supports that claim.
Verified publication results
The release validation, security, container artifact, desktop artifact, target-plan, and extension workflows completed successfully. The six tag-driven registry workflows also completed successfully: GHCR, GitHub Packages npm, public npmjs, Maven, NuGet GitHub Packages, and RubyGems. The release-event Android job correctly stopped when production Android signing secrets were unavailable. Manual run 31839378707 then produced and attached the APK and AAB through the explicitly allowed ci-test-key path; it is not presented as a production Android signing result.
References
Saddle 1.8.15
Saddle 1.8.15
Saddle 1.8.15 adds transport-neutral contracts for verified storage, bounded working sets, isolated transformations, provider selection and immutable delivery. The shared core remains declarative: it does not create runners, start containers, register service workers, mutate DNS, transfer artifacts or execute binaries without a caller-owned adapter.
Changes
| Area | Change |
|---|---|
| Storage | Added verified pool reads, primary/mirror/fan-out writes, quorum evidence, operation budgets, range reads, repair plans and verified-source restore plans. |
| Memory | Added bounded working-set admission, capability-gated bridge plans, materialization transitions and declarative cleanup plans. |
| Transformations | Added magic-byte classification, bounded WASM plans, isolated adapters, archive inspection limits and cache eligibility controls. |
| Providers | Added capability-based selection, caller preferences, dry-run rendering, integrity-bound handoff and cancellation plans with unknown remote state preserved. |
| Delivery | Added immutable chunk manifests, verification without evaluation, PWA/CDN capability reports, Mini App validation requirements and DNS/application bridge descriptors. |
| Validation | Active tests increased to 132 while the 69 legacy tests remain green; package, flat native, web and audit gates passed. |
Artifact contract
The release workflows derive artifact names and package versions from v1.8.15. The following artifact families are expected from the release pipelines; signing remains explicit and is never inferred from a filename.
| Surface | Artifact family |
|---|---|
| Linux desktop | saddle.browser.1.8.15.<architecture>.deb, .rpm, .appimage |
| Windows desktop | saddle.browser.1.8.15.<architecture>.exe, .msi |
| macOS desktop | saddle.browser.1.8.15.<architecture>.dmg, .app.zip |
| Android | saddle.apk.1.8.15.apk, saddle.aab.1.8.15.aab |
| iOS | saddle.ipa.1.8.15.ipa, saddle.app.1.8.15.app.zip |
| Container | saddle.container.1.8.15.tar.gz |
| Browser extension | saddle.extension.1.8.15.zip |
Publication and verification policy
The six registry workflows publish from the same validated release tag, in container-first order: GHCR, GitHub Packages npm, public npmjs, Maven, NuGet GitHub Packages and RubyGems. GHCR must build, scan, push, pull, inspect its OCI version label and complete a smoke check. Production signing remains caller-owned; the release does not claim SignPath approval, Apple notarization or a production Android signing key unless a workflow reports those states.
Verified publication results
The v1.8.15 release has 38 attached assets after the desktop rerun completed. GHCR, GitHub Packages npm, npmjs, Maven, NuGet and RubyGems completed successfully from the release event. The initial release-event Android job correctly failed because no production signing secrets were present; manual run 31835215420 completed with the explicitly labeled ci-test-key fallback. The desktop rerun completed after a transient macOS asset-attachment failure, without changing the tag or claiming notarization.
References
Saddle 1.8.14
Saddle 1.8.14 release notes
Saddle 1.8.14 carries the active code and release-facing manifests forward from 1.8.13. The 1.8.13 release notes remain the canonical record for the previous artifact set. The comparative 1.8.21 research remains planning material and is not presented as a separate shipped version.
Changes
| Area | Change |
|---|---|
| Version identity | Aligned npm, lockfile, Maven, NuGet, RubyGems, browser extension, Tauri, Capacitor, iOS and crawler metadata to 1.8.14. The iOS marketing version is 1.8.14 with build 1008014. |
| Container | Added a build-stage TypeScript engine compilation, runtime-only dist copy, org.opencontainers.image.version label and post-push pull/label/CLI smoke validation. |
| Registry order | Documented GHCR as the first package surface, followed by GitHub Packages npm, public npmjs, Maven, NuGet and RubyGems. |
| Release automation | Kept the shared release-tag resolver as the only version source; workflows reject tag/package mismatches and do not contain per-release manual versions. |
| Architecture | Kept the root-first layout, no project-owned src directory, transport-neutral exports and caller-owned infrastructure. |
Artifact contract
The active workflows derive names from the v1.8.14 release tag. The release was verified with 38 uploaded assets listed below; iOS remains unavailable because Apple signing and provisioning are caller-owned and were not configured.
| Surface | Expected artifact family |
|---|---|
| Linux desktop | saddle.browser.1.8.14.<architecture>.deb, .rpm, .appimage |
| Windows desktop | saddle.browser.1.8.14.<architecture>.exe, .msi |
| macOS desktop | saddle.browser.1.8.14.<architecture>.dmg, .app.zip |
| Android | saddle.apk.1.8.14.apk, saddle.aab.1.8.14.aab |
| iOS | saddle.ipa.1.8.14.ipa, saddle.app.1.8.14.app.zip |
| Container | saddle.container.1.8.14.tar.gz |
| Browser extension | saddle.extension.1.8.14.zip |
Signing remains explicit. unsigned, ci-test-key, caller-owned, notarized and a provider-reported status are distinct states. These notes do not claim SignPath approval or production signing.
Verified attached assets
The release contains 38 uploaded assets. Desktop artifacts are unsigned, Android artifacts use the explicitly labeled ci-test-key, the container is caller-owned and the extension is unsigned.
| Surface | Attached assets | Signing |
|---|---|---|
| Linux desktop | saddle.browser.1.8.14.arm64.appimage, saddle.browser.1.8.14.arm64.deb, saddle.browser.1.8.14.arm64.rpm, saddle.browser.1.8.14.x64.appimage, saddle.browser.1.8.14.x64.deb, saddle.browser.1.8.14.x64.rpm |
unsigned |
| Windows desktop | saddle.browser.1.8.14.arm64.exe, saddle.browser.1.8.14.arm64.msi, saddle.browser.1.8.14.x64.exe, saddle.browser.1.8.14.x64.msi, saddle.browser.1.8.14.x86.exe, saddle.browser.1.8.14.x86.msi |
unsigned |
| macOS desktop | saddle.browser.1.8.14.arm64.app.zip, saddle.browser.1.8.14.arm64.dmg, saddle.browser.1.8.14.x64.app.zip, saddle.browser.1.8.14.x64.dmg |
unsigned |
| Android | saddle.apk.1.8.14.apk, saddle.aab.1.8.14.aab |
ci-test-key |
| Container | saddle.container.1.8.14.tar.gz |
caller-owned |
| Browser extension | saddle.extension.1.8.14.zip |
unsigned |
| Manifests | Nine manifest.*.1.8.14.json files covering Android, container, Linux, macOS and Windows |
metadata |
| Checksums | Nine sha256.*.1.8.14 files covering Android, container, Linux, macOS and Windows |
integrity metadata |
Registry publication
The six registry workflows derive the version from the same v1.8.14 release tag through .github/actions/releaseversion. GHCR is listed first in the package order and must build, scan, push, pull and smoke-test the published image before the job is successful. The remaining workflows publish GitHub Packages npm, public npmjs, Maven, NuGet GitHub Packages and RubyGems from the same validated version. Public nuget.org is not targeted by the current repository workflow.
| Registry | Workflow | Version | Verified result |
|---|---|---|---|
| GHCR | publishghcr.yml |
1.8.14 |
success; run 31806235613 also pulled, inspected and smoke-tested the image |
| GitHub Packages npm | publishgithubnpm.yml |
1.8.14 |
success; run 31806235570 |
| Public npmjs | publishnpmjs.yml |
1.8.14 |
success; run 31806235515 |
| Maven GitHub Packages | publishmaven.yml |
1.8.14 |
success; run 31806235540 |
| NuGet GitHub Packages | publishnuget.yml |
1.8.14 |
success; run 31806235606 |
| RubyGems GitHub Packages | publishrubygems.yml |
1.8.14 |
success; run 31806235523 |
Verification policy
Local gates passed before the tag was created. Desktop run 31806235468 completed successfully. The release-event mobile run 31806235484 correctly refused to claim production signing because the Android secrets were absent; manual run 31806605994 with allow_test_signing=true completed successfully and attached the APK/AAB as ci-test-key. Production signing remains pending until caller-owned certificates and provider configuration are supplied.
References
Saddle 1.8.13
Saddle 1.8.13
Saddle 1.8.13 carries the active code and release-facing manifests forward from 1.8.12. The previous 1.8.12 release notes remain the canonical record for the licensing and artifact baseline. The comparative 1.8.21 research is planning material and is not presented as a shipped feature.
Changes
| Area | Change |
|---|---|
| Persistent queue | Added caller-owned leases, visibility timeout, deterministic clock injection, renewals, attempt accounting and idempotency-key deduplication. Existing crash recovery and retry behavior remain compatible. |
| Version identity | Aligned npm, lockfile, Maven, NuGet, RubyGems, browser extension, Tauri, iOS, crawler and Capacitor metadata to 1.8.13. The iOS marketing version is 1.8.13 with build 1008013. |
| Structured extraction | Added a schema-neutral result with field-level source URL, selector, extraction timestamp, bounded UTF-8 payload and caller-injected parser support. |
| Browser context | Added allowlisted snapshot projection with stable snapshot and element references, deterministic UTF-8 byte budgets and truncation metadata. |
| Workflow lifecycle | Extended resumable runs with explicit cancellation reasons and caller-owned, idempotent compensation callbacks. Compensation failures are surfaced as COMPENSATION_FAILED. |
| Artifact retention | Added deterministic keep/prune decisions by maximum age, count or bytes. Manifest generation records policy and decisions and never deletes caller files. |
| Documentation | Added the 1.8.13 release notes and retained the 1.8.12 artifact and signing policy documents. |
| Architecture | Kept the root-first layout, no project-owned src directory, transport-neutral exports and caller-owned infrastructure. |
Artifact contract
The active workflows derive names from the release tag. The v1.8.13 release was published and contains the generated assets listed below; iOS remains unavailable because Apple signing and provisioning were not configured.
| Surface | Expected artifact family |
|---|---|
| Linux desktop | saddle.browser.1.8.13.<architecture>.deb, .rpm, .appimage |
| Windows desktop | saddle.browser.1.8.13.<architecture>.exe, .msi |
| macOS desktop | saddle.browser.1.8.13.<architecture>.dmg, .app.zip |
| Android | saddle.apk.1.8.13.apk, saddle.aab.1.8.13.aab |
| iOS | saddle.ipa.1.8.13.ipa, saddle.app.1.8.13.app.zip |
| Container | saddle.container.1.8.13.tar.gz |
| Browser extension | saddle.extension.1.8.13.zip |
Signing remains explicit. unsigned, ci-test-key, caller-owned, notarized and a provider-reported status are distinct states. This release note does not claim SignPath approval or production signing.
Verified attached assets
The release contains 38 attached assets. Desktop binaries are unsigned, Android APK/AAB files use the explicitly labeled ci-test-key, and the container is marked caller-owned.
| Surface | Attached assets | Signing |
|---|---|---|
| Linux desktop | saddle.browser.1.8.13.x64.deb, saddle.browser.1.8.13.x64.rpm, saddle.browser.1.8.13.x64.appimage, saddle.browser.1.8.13.arm64.deb, saddle.browser.1.8.13.arm64.rpm, saddle.browser.1.8.13.arm64.appimage |
unsigned |
| Windows desktop | saddle.browser.1.8.13.x86.exe, saddle.browser.1.8.13.x86.msi, saddle.browser.1.8.13.x64.exe, saddle.browser.1.8.13.x64.msi, saddle.browser.1.8.13.arm64.exe, saddle.browser.1.8.13.arm64.msi |
unsigned |
| macOS desktop | saddle.browser.1.8.13.x64.dmg, saddle.browser.1.8.13.x64.app.zip, saddle.browser.1.8.13.arm64.dmg, saddle.browser.1.8.13.arm64.app.zip |
unsigned |
| Android | saddle.apk.1.8.13.apk, saddle.aab.1.8.13.aab |
ci-test-key |
| Container | saddle.container.1.8.13.tar.gz |
caller-owned |
| Browser extension | saddle.extension.1.8.13.zip |
unsigned |
| Manifests | manifest.android.1.8.13.json, manifest.container.1.8.13.json, manifest.desktop.linux.arm64.1.8.13.json, manifest.desktop.linux.x64.1.8.13.json, manifest.desktop.macos.arm64.1.8.13.json, manifest.desktop.macos.x64.1.8.13.json, manifest.desktop.windows.arm64.1.8.13.json, manifest.desktop.windows.x64.1.8.13.json, manifest.desktop.windows.x86.1.8.13.json |
metadata |
| Checksums | sha256.android.1.8.13, sha256.container.1.8.13, sha256.desktop.linux.arm64.1.8.13, sha256.desktop.linux.x64.1.8.13, sha256.desktop.macos.arm64.1.8.13, sha256.desktop.macos.x64.1.8.13, sha256.desktop.windows.arm64.1.8.13, sha256.desktop.windows.x64.1.8.13, sha256.desktop.windows.x86.1.8.13 |
integrity metadata |
Verification
The queue, structured extraction, browser context, workflow compensation and retention features passed the active engine and release test suites. The release validation workflow passed, and the live release contains the 38 assets listed above. The original release-event security, GHCR and mobile failures were superseded by successful corrected reruns; production signing remains pending.
References
Saddle 1.8.12
Saddle 1.8.12
Saddle 1.8.12 consolidates the root-first native surfaces, the GPL-3.0-only project policy, release provenance and the cross-platform artifact contract. The package manifest and active native manifests remain at 1.8.12. The uploaded scope README is not an execution script and was not rewritten.
Highlights
| Area | Change |
|---|---|
| Licensing | Canonical GPL-3.0-only license, aligned package metadata and consolidated root legal documents. |
| Release verification | Independent checksum, manifest and explicit signing-state verification. |
| Storage | Paginated S3-compatible listing with prefix, continuation token, XML entity decoding and caller-owned limits. |
| Scraping | Bounded recursive sitemap traversal with deduplication, cycle protection and injected fetcher. |
| Browser | Bounded action recorder with immutable manifests, JSON export and explicit clearing. |
| Workflows | Strict typed inputs, defaults, choices and deterministic trigger identities. |
| Modes | Cross-runtime capability report with caller-owned host, port, credentials and provider boundaries. |
| Security | Existing CodeQL, OSV, npm audit, cargo audit, Trivy, SBOM and provenance gates remain active. |
Artifact matrix
The release workflows derive the version from the release tag and use these lowercase dotted names. The v1.8.12 release was published and contains the generated assets listed below; iOS remains unavailable because Apple signing and provisioning were not configured.
| Surface | Architectures or mode | Expected artifact |
|---|---|---|
| Linux desktop browser | x64, arm64 | saddle.browser.1.8.12.<architecture>.deb, .rpm, .appimage |
| Windows desktop browser | x86, x64, arm64 | saddle.browser.1.8.12.<architecture>.exe, .msi |
| macOS desktop browser | x64, arm64 | saddle.browser.1.8.12.<architecture>.dmg, .app.zip |
| Android | caller-configured signing | saddle.apk.1.8.12.apk, saddle.aab.1.8.12.aab |
| iOS | caller-configured signing and provisioning | saddle.ipa.1.8.12.ipa, saddle.app.1.8.12.app.zip |
| Container | OCI | saddle.container.1.8.12.tar.gz |
| Browser extension | Manifest V3 | saddle.extension.1.8.12.zip |
Each generated surface must carry its checksum and manifest companion. Where enabled, CI also emits SBOM and provenance metadata. The signing state must be one of unsigned, ci-test-key, caller-owned, notarized or the exact provider status produced by CI. No unsigned artifact is described as trusted or production-signed.
Verified attached assets
The release contains 38 attached assets. Desktop binaries are unsigned, Android APK/AAB files use the explicitly labeled ci-test-key, and the container is marked caller-owned.
| Surface | Attached assets | Signing |
|---|---|---|
| Linux desktop | saddle.browser.1.8.12.x64.deb, saddle.browser.1.8.12.x64.rpm, saddle.browser.1.8.12.x64.appimage, saddle.browser.1.8.12.arm64.deb, saddle.browser.1.8.12.arm64.rpm, saddle.browser.1.8.12.arm64.appimage |
unsigned |
| Windows desktop | saddle.browser.1.8.12.x86.exe, saddle.browser.1.8.12.x86.msi, saddle.browser.1.8.12.x64.exe, saddle.browser.1.8.12.x64.msi, saddle.browser.1.8.12.arm64.exe, saddle.browser.1.8.12.arm64.msi |
unsigned |
| macOS desktop | saddle.browser.1.8.12.x64.dmg, saddle.browser.1.8.12.x64.app.zip, saddle.browser.1.8.12.arm64.dmg, saddle.browser.1.8.12.arm64.app.zip |
unsigned |
| Android | saddle.apk.1.8.12.apk, saddle.aab.1.8.12.aab |
ci-test-key |
| Container | saddle.container.1.8.12.tar.gz |
caller-owned |
| Browser extension | saddle.extension.1.8.12.zip |
unsigned |
| Manifests | manifest.android.1.8.12.json, manifest.container.1.8.12.json, manifest.desktop.linux.arm64.1.8.12.json, manifest.desktop.linux.x64.1.8.12.json, manifest.desktop.macos.arm64.1.8.12.json, manifest.desktop.macos.x64.1.8.12.json, manifest.desktop.windows.arm64.1.8.12.json, manifest.desktop.windows.x64.1.8.12.json, manifest.desktop.windows.x86.1.8.12.json |
metadata |
| Checksums | sha256.android.1.8.12, sha256.container.1.8.12, sha256.desktop.linux.arm64.1.8.12, sha256.desktop.linux.x64.1.8.12, sha256.desktop.macos.arm64.1.8.12, sha256.desktop.macos.x64.1.8.12, sha256.desktop.windows.arm64.1.8.12, sha256.desktop.windows.x64.1.8.12, sha256.desktop.windows.x86.1.8.12 |
integrity metadata |
Compatibility and upgrade notes
The public package remains @wenathlan/saddle. The release does not downgrade the package to 1.8.3; the active version is 1.8.12. Version 1.8.21 is reserved for the next objective-driven research and implementation cycle. SignPath Foundation approval and production code-signing credentials remain caller-owned and are not implied by this release note.
Verification
The release validation workflow passed, and the live release contains the 38 assets listed above. The original release-event security and mobile jobs were superseded by successful, explicitly labeled manual reruns; no production signing claim is made.
References
Saddle 1.8.11 — Flat native build surfaces
Saddle 1.8.11 — Flat native build surfaces
Changes
Saddle 1.8.11 removes project-owned native src surfaces. The Tauri desktop project is flat at desktop/, the Capacitor Android project is flat at android/ with Gradle sourceSets, and iOS toolchain-owned generated internals remain documented and validated without adding a project-owned ios/src directory.
The release also adds idempotent Android staging flattening, flat-native validation, tag-derived workflow versions, updated desktop and mobile artifact collection, optimized Android shrinking, and synchronized 1.8.11 manifests across the published package surfaces.
Verified generated release assets
The following assets are attached to this release. Sizes are bytes.
| Surface | Asset | Size |
|---|---|---|
| Desktop Linux | saddle.browser.1.8.11.appimage |
79,870,456 |
| Desktop Linux | saddle.browser.1.8.11.deb |
5,294,158 |
| Desktop Linux | saddle.browser.1.8.11.rpm |
5,297,619 |
| Desktop Windows | saddle.browser.1.8.11.exe |
4,343,237 |
| Desktop Windows | saddle.browser.1.8.11.msi |
5,246,976 |
| Desktop macOS | saddle.browser.1.8.11.dmg |
5,216,935 |
| Android | saddle.apk.1.8.11.apk |
3,498,594 |
| Android | saddle.aab.1.8.11.aab |
3,893,324 |
| Container | saddle.container.1.8.11.tar.gz |
81,722,975 |
| Browser extension | saddle.extension.1.8.11.zip |
10,760 |
The release also contains manifest.*.1.8.11.json and sha256.*.1.8.11 verification files for Android, container and each desktop runner. No IPA was attached because caller-owned Apple signing and provisioning were not enabled for this release.
Published package surfaces
The release workflows completed successfully for public npm, GitHub Packages npm, GitHub Container Registry, Maven, NuGet and RubyGems. Each workflow derives version 1.8.11 from the release tag and reads credentials from repository settings rather than source files.
Saddle 1.8.10 — native surfaces and artifact optimization
Saddle 1.8.10 — native surfaces and artifact optimization
Saddle 1.8.10 keeps the TypeScript-first library as the source of truth and makes the conversion boundaries explicit. The desktop Tauri shell remains the Saddle Browser application, while Android and iOS use Capacitor 8.5.0 against the same compiled web/dist/public surface.
Architecture
The root browser/ directory remains transport-neutral browser-agent logic. The desktop/ directory owns the Tauri browser shell. The android/ and ios/ directories own only native conversion metadata, Gradle/Xcode project files, WebView hosting and caller-configured signing. No native surface reimplements the engine.
Verified release assets
The live release contains 20 assets. Sizes below are bytes and were read from the GitHub release after all successful workflows completed.
Android optimization
The Capacitor Android release enables R8 code shrinking, resource shrinking and optimized resource shrinking through Android Gradle Plugin 8.13. The final APK is 3,498,594 bytes, approximately 3.34 MiB; the AAB is 3,893,352 bytes, approximately 3.71 MiB. When production keystore secrets are absent, the workflow uses an ephemeral CI test key and marks the Android manifest ci-test-key. Caller-provided keystore secrets produce a caller-key artifact. The AAB is the preferred store input, while the APK is retained for direct test installation.
The v1.8.9 Tauri debug APK measured approximately 119.5 MiB because libsaddle_desktop.so alone contributed about 118.1 MiB. The 1.8.10 Capacitor path avoids that Rust mobile binary and reuses the system WebView, reducing the attached APK by approximately 97.1% compared with the previous debug APK. The 1.8.10 figure is a release artifact measurement, not a promise about future plugin additions.
Signing and unavailable targets
Desktop files are unsigned CI outputs. Android files use the ephemeral test key unless caller production signing secrets are configured. The iOS job remains gated by SADDLE_IOS_ENABLED or explicit manual dispatch and requires caller-owned Apple certificates, provisioning profiles and export options; no IPA is claimed in this release because those inputs were not enabled. PKG, MSIX, Snap and Flatpak are deferred or caller-owned targets.
Verification
The release workflows succeeded for desktop Linux, Windows and macOS, Capacitor Android, container packaging, extension packaging, registry publication and release validation. Local gates passed before tagging: 99 active Node tests, 69 legacy Vitest tests, web typecheck, web build, package dry-run, formatting checks and npm audit --audit-level=high with zero vulnerabilities.
Saddle 1.8.9 — TypeScript migration and native artifacts
Saddle 1.8.9 — TypeScript migration and native artifacts
Saddle 1.8.9 completes the TypeScript-first engine migration and publishes the first verified native desktop, Android and container artifacts from the shared Tauri 2 application boundary. The package remains @wenathlan/saddle; generated JavaScript and declaration output is produced during CI and is not committed to the repository.
Highlights
- TypeScript-first engine migration with dist-only compilation and preserved public exports.
- Root-based architecture with consolidated scrape, crawl, retry, runtime, web and release logic.
- Reproducible release-version derivation from
v1.8.9, platform-specific manifests and SHA-256 checksums. - Desktop browser artifacts built from the shared web surface for Windows, Linux and macOS.
- Android debug APK and AAB artifacts generated from the same application boundary.
- OCI container image exported as a release tarball.
- Deterministic browser extension ZIP retained as a release asset.
Verified desktop artifacts
| Platform | Artifact |
|---|---|
| Windows | Saddle Browser 1.8.9 setup EXE |
| Windows | Saddle Browser 1.8.9 MSI |
| Linux | Debian package |
| Linux | RPM package |
| Linux | AppImage |
| macOS | Apple Silicon DMG |
Verified mobile, container and extension artifacts
| Surface | Artifact |
|---|---|
| Android | Debug APK |
| Android | Debug AAB |
| Container | OCI image tarball |
| Browser extension | Extension ZIP |
Manifests and checksums
The release includes platform-specific metadata and integrity files: desktop Linux manifest, desktop Windows manifest, desktop macOS manifest, Android manifest, container manifest, Linux checksums, Windows checksums, macOS checksums, Android checksums and container checksums.
Signing and availability boundaries
Desktop artifacts are unsigned CI outputs. Android APK and AAB files use a debug key for test installation and are not production store submissions. iOS IPA generation remains gated behind SADDLE_IOS_ENABLED or an explicit manual dispatch with Apple Developer certificates, provisioning profiles and export credentials; no iOS IPA is claimed in this release. PKG, MSIX, Snap, Flatpak, production Android signing, Windows signing and macOS signing/notarization remain caller-owned or deferred targets.
Validation
The final desktop workflow completed successfully for Linux, Windows and macOS in run 31721365927. The final Android workflow completed successfully with the iOS job correctly skipped in run 31721368995. The container workflow completed successfully in run 31718528325. Obsolete Rust build-helper executables and generic metadata collisions were removed from the release asset list.
Saddle 1.8.8
Correlated engine context consolidation: grouped crawl logic under scrape/crawl.js, grouped retry and circuit protection under runtime/retry.js, consolidated scraper error taxonomy in core/errors.js, and updated package and architecture documentation.