Skip to content

Releases: sndstone/object-data-browser

Version 2.3.0 — macOS development prerelease

Choose a tag to compare

@sndstone sndstone released this 02 Oct 16:12

Object Data Browser 2.3.0+1 adds advanced S3 administration, S3/Azure copy and recovery workflows, and benchmark correctness/performance improvements.

macOS development prerelease

The attached DMG is for Apple Silicon (arm64). It is ad-hoc signed and not notarized, and uses the development legacy-Keychain path. It is not an update-safe Developer ID release; macOS may block opening it. Qualification used local emulators on macOS 27.0, without live AWS/Azure resources or a physical iOS device.

Windows installers are not included. They will be compiled separately on Windows from this version.

Changes

  • Bucket/endpoint-aware access and ACL presets, plus lifecycle tiering presets that preserve custom configuration.
  • Full current-content bucket copy across configured S3/Azure endpoints, resumable S3 version-history copy, and reviewed bucket-configuration copy.
  • Bounded stale-metadata deletion recovery for confirmed never-versioned S3-compatible buckets. Versioned/suspended buckets retain normal deletion retries; their alternative overwrite fallback remains deferred.
  • Version/Object Lock/retention/hold controls, archive restore, metadata/content headers, multipart administration, and durable transfer recovery.
  • Azure account lifecycle/container protection/ADLS administration with provider and identity capability gates; shared mobile REST storage and benchmark workflows.
  • Reused clients, bounded streaming and history, complete CSV exports, measured timestamps/checksums/error/retry metrics, and integrated browser/settings controls.

Verification

  • Flutter analysis passed; 282 tests passed, with four skipped tests documented in the verification report. Opt-in emulator/performance checks ran separately.
  • Python, Go, Rust and Java contract/native checks passed, including the Go race suite.
  • Real local MinIO/Azurite copy, history, configuration and transfer-recovery checks passed.
  • 162 performance measurements and 90 independent verification checks completed across the full matrix and final Python/Go rerun.
  • macOS release, Android arm64 debug and iOS arm64 simulator builds succeeded. A fresh iOS simulator launch smoke test passed.
  • The DMG checksum and mounted app signature passed verification. All four bundled engines ran from the read-only mounted image and reported 2.3.0.

Built from the source captured in commit 0db1d7db6621aeca74ea8a312f65aee8564e513c. The existing verified DMG is uploaded unchanged.

Scope and verification details · Performance evidence

SHA-256

a4bb0a72317cca79cc65ac5fe95175cf7d7725af67cb84788257180f71dd91a6

Asset: object-data-browser-macos-2.3.0-arm64-dev.dmg (533,965,885 bytes). The checksum file and machine-readable package verification report are attached.

Publication follow-through

The cross-platform deferred-delete test fixture was corrected in 2e8c6b7. GitHub verification now passes on Linux, macOS and Windows, including all four engine suites and the macOS/Windows download-filesystem checks. The follow-up changes tests and verification documentation; the application source captured by the release tag and the DMG are unchanged.

The published DMG was downloaded from this release and independently checked: SHA-256 matches the value above, the mounted app passes deep/strict signature verification, and all four bundled engines report 2.3.0. The follow-up verification report is attached.

Version 2.2.8

Choose a tag to compare

@sndstone sndstone released this 12 Sep 20:40

Object Data Browser 2.2.8 includes the September reliability and Settings improvements.

  • Downloads are staged and validated before publishing. Keep both is the default; failed downloads preserve existing files.
  • Azure moves require confirmed copy success before deleting the source.
  • Cancel targets the action shown in details, preserves progress counters, and reports unconfirmed remote outcomes.
  • Benchmarks display measured results without invented percentiles or checksum successes.
  • Profile Test, Save, activation, and startup defaults are separate, with persistent save-failure feedback.
  • Settings now has six groups, one connection editor, clearer engine capabilities, and improved large-text layouts.

Windows installers

Choose x64 for Intel/AMD Windows PCs or ARM64 for Windows on ARM. SHA-256 checksums are supplied in SHA256SUMS.

Go/Rust transfer cancellation stops remaining files; the current file may finish. No macOS, iOS, or Android release package is included in this release.

Implementation and verification details

Verification

Built from commit 5929a92c284899a0ece2e95238d62a511206ec59.
Flutter analysis/tests passed on Windows, macOS, and Linux; all four engine contract suites and Windows/macOS filesystem safety checks passed.
Both MSI databases and extracted payloads were checked for version 2.2.8, correct CPU architecture, bundled engines, and current Python engine source. Interactive installation was not tested locally.

Release build and verification

Version 2.2.7

Choose a tag to compare

@github-actions github-actions released this 08 Sep 08:04

Changes

  • Fix Cancel for bucket/object listings stalled on network timeouts: the UI becomes available immediately, completed pages remain visible, and late results cannot overwrite a newer listing.
  • Stop desktop read processes and queued reads on cancellation while preserving active transfers and their controls.
  • Include an interactive backend and Settings improvement plan with before/after mockups. The proposed Settings redesign and other review findings are not implemented in this release.

Downloads

  • Windows: MSI installers for x64 and ARM64.
  • Linux: DEB and RPM packages for x86_64 and ARM64. Linux Mint users should choose the amd64 DEB on ordinary Intel/AMD PCs.
  • macOS: a local Apple Silicon development DMG was built and verified. No public macOS artifact is included because Developer ID signing/notarization is not configured.

Linux packages target Ubuntu 20.04 / glibc 2.31, enabling compatibility with Mint 20 and newer. CI checks bundled ELF requirements and performs a headless GTK startup test on Ubuntu 20.04. Installation and live storage operations have not been tested on every Mint version. RPM systems also need GTK 3, libsecret, and libstdc++.

Verification

  • Flutter analysis clean; local Flutter suite: 156 passed, 2 skipped.
  • CI Flutter verification and contract tests for Python, Go, Rust, and Java passed.
  • Native mobile cancellation releases the UI but may leave the native SDK request running until its timeout. Desktop listing processes are actively stopped.
  • SHA256SUMS accompanies the installers.

Version 2.2.6

Choose a tag to compare

@github-actions github-actions released this 05 Sep 21:38

Object Data Browser 2.2.6

GUI improvements

  • Consistent destructive confirmations, clearer severity-aware messages, one debounced object search, and desktop keyboard shortcuts.
  • Grouped inspector navigation, copy actions, validated JSON/tag editors, and settings that retain connection drafts and protect secret reveal.
  • Job status, transfer rate and ETA, retry and cleanup controls, plus searchable Event Log filters.
  • Improved phone scrolling and connection selection, dark-mode surfaces, object/version rows, breadcrumbs, and accessible navigation.
  • Bundled Inter/Sora fonts for offline use. App version is 2.2.6+1; unchanged desktop engine implementations remain 2.2.5.
  • Version-scoped downloads remain unavailable until the engine contract supports them. See the GUI implementation ledger.

Downloads

Platform Architecture Package
Windows x64 MSI installer
Windows ARM64 MSI installer
Linux x64 / amd64 DEB and RPM
Linux ARM64 / aarch64 DEB and RPM
Android test build ARM64, Android 7.0+ (API 24+) Sideloadable APK

Android is a test build signed with a debug key, not a Play Store release. The signing key can change between CI builds, so in-place upgrades from other builds may fail; a reinstall can remove local app data. The APK and AAB filenames explicitly include test. The secondary test AAB is a build artifact, not directly installable.

Windows installers are unsigned. Linux packages require glibc 2.39 or newer (built on Ubuntu 24.04). Native installation, real-storage workflows and physical Android device testing remain user acceptance checks.

The macOS test DMG remains a local development artifact. Public macOS packages require Developer ID signing/provisioning and notarization. No iOS binary is included.

Verification and provenance

  • Flutter analyzer and full automated Flutter test suite.
  • Required Python, Go, Rust and Java engine contract tests.
  • Native Windows/Linux package builds and Android APK/AAB compilation.
  • SHA256SUMS supplies checksums for the published packages.
  • Desktop release build, app source commit 87059ad796d3ff9c97980ce375769d2c86235c71.
  • Android release build, commit 68072e3 adds the mobile host-toolchain fix; the app source is unchanged.
  • Android APK signature verified with Android apksig; version 2.2.6, split APK version code 2001, minimum API 24.
  • Linux archives checked for version, architecture, fonts and required engine payloads.
  • Windows MSI architecture and WiX product/file metadata checked for version 2.2.6.
  • All eight uploaded asset sizes and SHA-256 digests matched the locally verified packages.
  • The first matrix run includes an Android bootstrap failure; the separate Android retry above passed after the host-toolchain fix. Windows ARM64 build and artifact upload succeeded; its optional post-build toolchain cache save was cancelled after a prolonged cleanup. The redundant tag-triggered build was also cancelled after publication.
  • The release tag includes subsequent documentation at 1b68873; application and engine source match both successful platform builds.

Version 2.2.5

Choose a tag to compare

@sndstone sndstone released this 05 Sep 11:08

Object Data Browser 2.2.5

Browser and navigation

  • Expandable icon tray for flat view, new prefixes, selection and loaded-row controls.
  • Click Name, Modified or Size to sort; click again to reverse the order.
  • Visible inspector tools, a dedicated Preview tab, accessible density/text sizing and direction-aware transitions.
  • Genuine batch selection, clearer loaded-object search scope and bounded large listings.

Transfers and reliability

  • Multi-file uploads use independent per-file multipart sizing under one overall job, with nested per-file event records.
  • Bounded part workers, aggregate progress, truthful partial-failure results and cancellation of queued files.
  • Job-owner control routing, bounded sidecar queues/processes, timeout recovery, sanitized diagnostics and atomic metadata recovery.
  • Python/Java support live transfer controls. Go/Rust explicitly report unsupported controls instead of fabricated success.

Platform notes

  • Linux builds target modern distributions with glibc 2.39 or newer (built on Ubuntu 24.04). DEB and RPM dependencies are declared separately. Desktop integration and real-storage testing on your distribution are still recommended.
  • Windows x64 and ARM64 MSI installers are built using native Windows GitHub Actions runners. They are unsigned; builds are not a substitute for manual installation and real-storage validation on each architecture.
  • Public macOS binaries are intentionally withheld until Developer ID signing, provisioning and notarization are configured. The local ad-hoc test DMG is not an update-safe public release.
  • iOS source is included as work in progress; no iOS binary is published here.

Verification

  • Flutter analyzer and full automated Flutter test suite.
  • Required Python, Go, Rust and Java contract tests, including loopback storage failure and multipart cleanup fixtures.
  • Download checksums are supplied alongside the installers. No live-cloud integration or physical-device certification is implied.
  • Release build provenance: the Windows ARM64 build and artifact upload succeeded; its optional post-build toolchain cache save was cancelled after a prolonged cleanup. Windows x64 was retried after a dependency server closed a download connection.

Downloads

Platform Architecture Installer
Linux x64 / amd64 .deb or .rpm
Linux ARM64 / aarch64 .deb or .rpm
Windows x64 .msi
Windows ARM64 .msi

Use SHA256SUMS to verify the downloaded installer. The versioned source tag and all installers use commit fe45c59.

Version 2.2.4

Choose a tag to compare

@github-actions github-actions released this 20 Jul 11:51
15d1bd7

Benchmark workspace refresh

  • Reworked the active-run dashboard with clearer run identity, status, progress, live throughput, latency, data-rate cards, output controls, and a terminal-style live log.
  • Refined benchmark history and result presentation with denser summaries, clearer metric cards, and improved chart axes, smoothing, fills, markers, and stacked-series rendering.

Per-run benchmark outputs

  • Benchmark CSV, JSON, and log artifacts now write to a folder named after the run ID so repeated runs no longer overwrite earlier results.
  • Applied the per-run output layout consistently across the Python, Go, Rust, Java, Android, and mock benchmark implementations.

Version 2.2.3

Choose a tag to compare

@github-actions github-actions released this 17 Jul 22:14

Dynamic multipart sizing

  • Uploads now choose an S3-compliant part size from the largest selected file, balancing parallel throughput with bounded worker memory and the 10 000-part limit.
  • Automatic sizing is enabled by default. Disabling it restores the manual multipart chunk setting; downloads continue to use the manual range size.

macOS credentials and expanded previews

  • macOS credentials persist in Keychain-backed secure storage, and metadata-only imports no longer erase existing credentials.
  • Profile credentials now use one versioned Keychain bundle, reducing post-update authorization to one prompt. Data Protection per-field items migrate with one bulk read, and unchanged settings no longer rewrite credentials.
  • Fixed ad-hoc macOS packaging that sandboxed the app without provisioned Keychain access. Ad-hoc artifacts now restore legacy Keychain access, probe both historical Keychain modes during migration, and stop automatic listing with a direct error when hydration fails.
  • macOS startup now recovers the newest profile metadata across sandboxed and unsandboxed Application Support locations, preventing an update from pairing valid Keychain items with an older empty profile list.
  • Text and image previews can open in a larger dialog; text is selectable and scrollable, while images support pan and zoom.
  • Recognized source files now use selectable syntax highlighting. Expanded HTML previews default to source and can switch to a static page render without executing scripts.
  • Added a Developer ID release lane with an embedded provisioning profile, stable team-scoped Data Protection Keychain identity, hardened signing, DMG signing, and notarization. GitHub releases now fail closed when the required Apple signing secrets are missing instead of publishing an update-unsafe ad-hoc build.
  • Signed releases migrate credentials from the legacy Keychain into the stable Data Protection Keychain bundle. Ad-hoc builds retain the reverse migration fallback for local development only.
  • Upgraded secure storage to fix macOS errSecParam (-50) when updating an existing Keychain credential bundle; Android now explicitly targets API 23 or newer as required by the upgraded secure-storage implementation.
  • Stopped issuing the legacy macOS Keychain bulk-read query that also returns errSecParam (-50) during startup migration. Older ad-hoc profiles now enter a safe one-time recovery state and can be consolidated by re-entering credentials and saving once.
  • Credential-bearing profile imports now act as an explicit Keychain recovery operation, while metadata-only imports preserve existing secrets and generated exports remain credential-free.
  • Added a separately persisted default endpoint selector beside the default engine setting; runtime endpoint switches no longer determine the next startup endpoint when a default is configured.

Version 2.2.2

Choose a tag to compare

@github-actions github-actions released this 07 Jul 09:38

Fixed: release version metadata

  • Updated the in-app version details, engine version fallbacks, and bundled engine catalog so the Settings version panel matches the packaged release.
  • Bumped all engine-reported versions to 2.2.2 for this release.

Version 2.2.1

Choose a tag to compare

@github-actions github-actions released this 03 Jul 23:35

Fixed: bucket and object context menus

  • Restored right-click context menus for bucket rows and object rows so actions are anchored to the element under the pointer.
  • Object row context menus select the target cheaply before offering inspect, folder open, download, presign, and delete actions.

Version 2.2.0

Choose a tag to compare

@github-actions github-actions released this 03 Jul 15:35

Parallel large-file transfers (all engines)

  • Multipart uploads now upload parts concurrently in the Python, Go, Rust, and Java engines with a bounded worker pool (up to 8 concurrent parts, capped by the profile's max concurrent requests).
  • Ranged downloads fetch byte ranges concurrently and write them at the correct offsets into a pre-sized file.
  • Go and Java no longer read the entire file into memory for multipart uploads; parts are read on demand with positional reads. Rust no longer buffers whole objects in memory on either path — uploads read per-part and downloads stream each range straight to disk.
  • Failed multipart uploads are now aborted server-side (previously the Rust engine leaked incomplete multipart uploads on failure).
  • Progress events, response shapes, and single-part paths are unchanged.

Fixed: Python engine "token is malformed" on AWS S3

  • When a profile had no session token, the Python engine serialized JSON null to the literal string "None" and sent it as x-amz-security-token, which AWS rejects with "the provided token is malformed or otherwise invalid". Session tokens are now only passed to the client when actually present, matching the other engines.

Inspector tools now run natively on the selected engine

  • "Put test data" and "Delete all" are real implementations in all four engines instead of Python-script stubs: put-testdata creates the configured objects/versions with a bounded worker pool; delete-all pages through object versions (falling back to plain listing where versioning is unsupported), batch-deletes with configurable batch size, workers, and delay, and reports counts, durations, and failures.
  • Tool labels changed from "put-testdata.py"/"delete-all.py" to "put-testdata"/"delete-all"; whatever engine is selected performs the work.

UI: anchored, downward-opening select menus

  • All dropdown selectors (endpoint profile, backend engine, default engine, inspector placement, endpoint type, AWS region, filter/sort modes, page and copy-destination selectors) use a new shared AppSelectField widget.
  • Menus now open anchored directly beneath the field and animate downward (fade + top-aligned expansion); when there is not enough room below, they flip and open upward from the field instead. The selected item is highlighted with a check mark and scrolled into view.

UI: more compact desktop layout

  • Reduced desktop chrome: header margins/padding 14→12, outer panel padding 14→12, panel gaps 10→8, bucket panel width 300→272, inspector section dividers 28→16, lifecycle card padding 12→10, resize handles 14→10.
  • Desktop list tiles are now dense with compact visual density by default.