Skip to content

v1.1.0

Choose a tag to compare

@github-actions github-actions released this 12 Jun 04:14
· 85 commits to main since this release

1.1.0 (2026-06-12)

Features

  • add accounts repository (327ac3e)
  • add accounts:update channel and input types (e7fe609)
  • add accounts:update handler and test-secret fallback (454cb6a)
  • add accountsRepo.update (5a90afd)
  • add and backfill force_path_style account column (70e6b77)
  • add appearance theme selector to settings (d86ae33)
  • add application and DMG icons (5745bd4)
  • add bucketLocationConstraint provider helper (7f4ca08)
  • add copyright section (e5b1774)
  • add createBucket op (create + optional object lock/versioning) (deb701e)
  • add createFolder transfer op (277262a)
  • add custom endpoint and path-style fields to add-account form (6863d70)
  • add delete object and batched delete folder (050fda2)
  • add encrypted secrets store (040bd0e)
  • add getBucketCors (no-config maps to empty) (89e3394)
  • add getObjectLockConfig (not-found maps to not-enabled) (36b64a9)
  • add headObject metadata operation (a14c1b5)
  • add IPC registration wiring services to channels (b07ee61)
  • add LicensesList component (25e39a9)
  • add list transform and breadcrumb helpers (5741224)
  • add listBuckets and listObjects S3 operations (372ac35)
  • add moveFolder transfer op (recursive copy+delete) (30c33aa)
  • add moveObject transfer op (copy+delete) (f81bf45)
  • add multipart file upload operation (59114be)
  • add object ACL get/put ops (owner + per-grantee grants) (fe30503)
  • add object metadata edit ops (head + copy-to-self REPLACE) (14628d7)
  • add object visibility detection (877098c)
  • add per-account client orchestration (afe7251)
  • add per-object retention + legal hold ops (24c4514)
  • add planLocalSync + runLocalSync (upload/download) (73bdb89)
  • add presigned GET URL operation (2f4a7a8)
  • add presignPutUrl (presigned upload URL) (3cb97bc)
  • add provider registry for Amazon S3 and Hetzner (caf5039)
  • add pure diffListings sync core (95287f2)
  • add putBucketCors and deleteBucketCors (bedc770)
  • add putObjectLockConfig (set/clear default retention) (088298a)
  • add Result helpers for IPC boundary (6e56c58)
  • add runSync (copy pool, server-side + streaming, cancel) (69d46ea)
  • add S3 client factory (117d452)
  • add setObjectVisibility (canned ACL public-read/private) (fd96506)
  • add settings repository (64fc9f2)
  • add shell:openExternal IPC channel (cd58d3c)
  • add SQLite connection and migrations (2afb3ae)
  • add streaming download operation (c28978b)
  • add sync types, listAll, and planSync (b3e2564)
  • add theme preference to app settings (4f1ad65)
  • add typed app settings layer (read/write over settingsRepo) (c3c95b8)
  • add upload-progress IPC event channel with uploadId correlation (b974bf8)
  • add useTheme hook for resolving and applying theme (194b933)
  • add walkDir + contentTypeFor for local sync (1994cad)
  • apply theme preference at app root (c81a5b5)
  • apply theme to native chrome on setSettings (a7a09da)
  • configure tailwind class-based dark variant (7e819de)
  • cors: add AWS-standard JSON conversion module (fcb0536)
  • cors: switch between form and editable JSON editor (dd35f01)
  • dark mode styles for accent colors (a0e98f5)
  • dark mode styles for chrome and layout (a13a212)
  • dark mode styles for dialogs and buttons (9f10aff)
  • dark mode styles for screens and panels (cc7c78f)
  • define IPC channel contract (4be9207)
  • download via injected native save dialog (renderer-driven, cancellable) (c47dd97)
  • drive nativeTheme from persisted theme setting (cfe0c85)
  • edit a connection from the Connections screen (4be1327)
  • expose accounts.update and useUpdateAccount (ff61731)
  • expose getDropPath (webUtils) for sandbox-safe drag-drop uploads (1e3b40e)
  • generate third-party license data at build time (cfc05d3)
  • i18n: add de/fr/pl/nl/ro translation baselines (2423736)
  • i18n: add i18next init and seed catalogs (5f00d0b)
  • i18n: add language preference to settings model (a09bf1a)
  • i18n: add Polish CLDR _other plural forms for completeness (547c724)
  • i18n: apply language preference via useLanguage hook (240c12a)
  • i18n: initialize i18next in app and test setup (3e1055e)
  • i18n: localize accounts components (66ca9ef)
  • i18n: localize App shell strings (3cf9ae1)
  • i18n: localize buckets components (2df2dc6)
  • i18n: localize connections screen (e5e4c29)
  • i18n: localize cors components (97e76c5)
  • i18n: localize files feature components (e9a5b82)
  • i18n: localize object lock editor (5f71c67)
  • i18n: localize SectionNav (3a29d4c)
  • i18n: localize Settings screen and add language selector (b6dedae)
  • i18n: localize sync components (d78e093)
  • i18n: localize transfer, dashboard, and shared ui (064a24c)
  • persist per-account forcePathStyle (cf2548a)
  • register custom S3-compatible provider (bfeddcf)
  • resolve custom endpoint and path-style in account handlers (3c80795)
  • return AccountNotFound from accounts:update for unknown id (d8ff1cf)
  • show open source licenses in Settings (444ec13)
  • ui: add + Create bucket button opening the create dialog (55a4744)
  • ui: add account create/remove/test-connection mutations (34bef99)
  • ui: add AccountSelect dropdown (f6e80b6)
  • ui: add AccountsPane with list, select, remove, add (b3ca6cc)
  • ui: add AddAccountForm with inline connection test (0b34017)
  • ui: add Breadcrumb (c99b81a)
  • ui: add BucketSelect dropdown with inline create (65f56db)
  • ui: add BucketsPane (9eec88e)
  • ui: add byte and timestamp formatters (07e0a6b)
  • ui: add ConfirmDialog (223e0ff)
  • ui: add CorsEditor (e9850ca)
  • ui: add CorsRuleCard (924cf19)
  • ui: add CreateBucketDialog (0a08e85)
  • ui: add dashboard AccountBreakdown (f8eaa62)
  • ui: add dashboard SummaryCards (a2d69f7)
  • ui: add Dashboard view (87f8e5e)
  • ui: add download/copy-url/delete actions to MetadataPanel (77e43e5)
  • ui: add DropZone with drag overlay (c293e6f)
  • ui: add Edit metadata… button opening the metadata editor (c1006fe)
  • ui: add EndpointPicker (31069d7)
  • ui: add file Rename/Move to MetadataPanel (73a49ed)
  • ui: add FileBrowser with folder navigation and load-more (6fabf53)
  • ui: add FolderPicker (1f1e2cc)
  • ui: add full-screen ConnectionsScreen for account management (f5b4dc4)
  • ui: add LocalFolderPicker (ec228d3)
  • ui: add LocalSyncScreen (63a504c)
  • ui: add MetadataDialog (object metadata editor) (0b0a2dd)
  • ui: add MetadataPanel slide-over (cd13367)
  • ui: add MoveDialog with folder picker (864b816)
  • ui: add NameDialog (46bd0fb)
  • ui: add New folder + folder rename/move to FileBrowser (2d5844e)
  • ui: add ObjectLockEditor (8a338be)
  • ui: add parentPrefix/baseName key helpers (a8996da)
  • ui: add Permissions… button opening the ACL editor (7043cfc)
  • ui: add PermissionsDialog (per-grantee ACL editor) (accafc1)
  • ui: add ProviderBadge (6b21cdc)
  • ui: add RetentionSection (per-object retention + legal hold) (ec1fdfa)
  • ui: add SectionNav (41ed574)
  • ui: add SettingsScreen (f4d8938)
  • ui: add setVisibility mutation to useObjectDetails (f96854b)
  • ui: add StringListEditor (6e4cf06)
  • ui: add Sync mode toggle (bucket vs local) (2b43769)
  • ui: add Sync section to the nav and App (ea0f5ef)
  • ui: add SyncRunProvider for app-level sync run state (7421303)
  • ui: add SyncScreen (preview, run, progress, summary) (144aa7a)
  • ui: add SyncStatus sidebar indicator (ca01802)
  • ui: add ToastProvider/useToast (d7e6e6e)
  • ui: add typed window.s3 global and Result unwrap helper (186f8d8)
  • ui: add Upload link button to the file browser toolbar (835a713)
  • ui: add UploadLinkDialog (presigned upload URL) (399870e)
  • ui: add UploadsPanel with progress bars (2e14362)
  • ui: add useAccounts query hook (6a44d33)
  • ui: add useAllBuckets fan-out hook (e3b0670)
  • ui: add useBuckets query hook (2340754)
  • ui: add useCors query + save/clear mutations (6dcfc61)
  • ui: add useCreateBucket hook (7152ee2)
  • ui: add useLocalSync hook (a98dcc7)
  • ui: add useObjectAcl hook (fd4648a)
  • ui: add useObjectActions (download/copy-url/delete) with toasts + invalidation (327d03c)
  • ui: add useObjectDetails (metadata + visibility) hook (2b8d006)
  • ui: add useObjectLock query + save/clear mutations (7a6ce4a)
  • ui: add useObjectMetadataEditor hook (cdcd9e5)
  • ui: add useObjectRetention hook (7df1e6c)
  • ui: add useObjects infinite-query hook (2e90a5d)
  • ui: add useSettings hook (815bbba)
  • ui: add useSync hook (1aba0f5)
  • ui: add useTransfer (createFolder/moveObject/moveFolder) (4155a68)
  • ui: add useUploads queue with progress correlation (a088c97)
  • ui: compose app shell with section nav and accounts pane (3e4b210)
  • ui: copyPresignedUrl uses the configured default expiry (b67e167)
  • ui: derive UI provider list from backend registry (51bb08c)
  • ui: drop-to-upload, uploads panel, and folder delete in FileBrowser (a3f9f43)
  • ui: editable visibility toggle in the metadata panel (af8b710)
  • ui: guard duplicate metadata keys; test save-error path (f979821)
  • ui: mount SyncRunProvider at the app root (2eca100)
  • ui: move account & bucket selection into sidebar dropdowns (9d87eab)
  • ui: React entry, Tailwind base, and app shell skeleton (2a85c97)
  • ui: render the Settings screen for the settings section (0deb03a)
  • ui: reorder section nav, add divider and connections section type (e645dc0)
  • ui: replace glyph buttons with Feather icons across components (bb4392b)
  • ui: show retention & legal hold in the metadata panel for lock-enabled buckets (f7590c3)
  • ui: show the sync indicator in the sidebar (8043aea)
  • ui: unify all delete/remove actions on the trash icon (6c837fb)
  • ui: use Feather icons for object action buttons (8a95c11)
  • ui: wire buckets pane, file browser, and metadata panel into Files view (906c37c)
  • ui: wire CorsEditor into the CORS section (d12b747)
  • ui: wire Dashboard into App with click-through to Files (bf4875d)
  • ui: wire ObjectLockEditor into the Object Lock section (45a0fb6)
  • ui: wrap app in ToastProvider for operation feedback (f3c81b2)
  • update correct icons (07cdc34)
  • wire CORS get/put/delete IPC channels (7aabe8b)
  • wire createBucket IPC channel (b3fc930)
  • wire createFolder/moveObject/moveFolder IPC channels (b835489)
  • wire local sync IPC channels + folder picker dialog (69c72f5)
  • wire object ACL IPC channels (505056c)
  • wire Object Lock get/put IPC channels (4e3983b)
  • wire object metadata edit IPC channels (a22b6be)
  • wire per-object retention & legal hold IPC channels (0119b1c)
  • wire preload bridge and backend init into main process (f0ca853)
  • wire s3:presignPut IPC channel (96fef4c)
  • wire s3:setObjectVisibility IPC channel (61e660b)
  • wire settings + app info IPC channels (626b859)
  • wire sync:plan/run/cancel IPC channels + progress event (1f60b2d)

Bug Fixes

  • bundle node-sqlite3-wasm into packaged app (a92f555)
  • cors: clear JSON editor state when bucket selection changes (c83fab5)
  • cors: resync JSON textarea on refetch and add a11y attributes (9a85089)
  • guard local-sync download against path traversal in object keys (b54b54c)
  • keep Sync mounted across navigation so a running sync's progress survives (71c7cc6)
  • lint: resolve pre-existing ESLint errors blocking CI (5b2151d)
  • load renderer Vite config as ESM (.mts) so ESM-only Tailwind/React plugins load (431bae8)
  • npm audit (e5494a3)
  • pair remaining settings and icon surfaces with dark variants (2b4e464)
  • replace better-sqlite3 with node-sqlite3-wasm (Electron 42 V8 incompatibility) (8147861)
  • report accurate error when post-create versioning fails (c208085)
  • set correct bundle name (e2fa030)
  • ui: clear selected account when it is removed in Connections (f6c77fb)
  • ui: clear stale sync result when endpoints change (0c7f42c)
  • ui: reject consecutive-dot and IP-form bucket names in client validation (a5feb01)

Refactor

  • AddAccountForm -> AccountForm with edit mode (69aa8ce)
  • cors: tighten parseCorsJson typing and add edge-case tests (c514c18)
  • extract runPool into shared pool.ts (5915982)
  • reuse get() in accountsRepo.update and tighten tests (1206cf5)
  • ui: LocalSyncScreen reads run state from SyncRunProvider (0e99bd4)
  • ui: make CorsEditor controlled by sidebar selection (2b9b1a5)
  • ui: make ObjectLockEditor controlled by sidebar selection (1183f77)
  • ui: SyncScreen reads run state from SyncRunProvider (6c0d393)
  • ui: trim useSync/useLocalSync to the preview plan mutation (899bcb8)
  • ui: use EditableMetadata as the metadata mutation arg type (61d8d69)

Documentation

  • add backend foundation implementation plan (9194500)
  • add bucket-to-bucket Sync design spec (6852a61)
  • add bucket-to-bucket Sync implementation plan (d2280bb)
  • add CORS configuration design spec (a2cb48c)
  • add CORS configuration implementation plan (86db466)
  • add CORS JSON editor design spec (27da486)
  • add CORS JSON editor implementation plan (9c457ff)
  • add create bucket design spec (b43543d)
  • add create bucket implementation plan (7ee9be9)
  • add dark mode design spec (cbdce0b)
  • add dark mode implementation plan (f583af0)
  • add dashboard design spec (edaa416)
  • add dashboard implementation plan (3c84b82)
  • add global sync status indicator design spec (200330c)
  • add global sync status indicator implementation plan (cecbb91)
  • add i18n design spec (1ade696)
  • add i18n implementation plan (e93909b)
  • add local-bucket Sync design spec (0bd9b4b)
  • add local-bucket Sync implementation plan (6f704f3)
  • add Move/Rename/Create-Folders design spec (b2654de)
  • add Move/Rename/Create-Folders implementation plan (bae85d3)
  • add Object Lock (bucket default retention) design spec (0c757fb)
  • add Object Lock implementation plan (e44249e)
  • add object metadata editor design spec (9ea4e0c)
  • add object metadata editor implementation plan (983407a)
  • add object visibility editing (ACL) design spec (83b1d51)
  • add object visibility editing implementation plan (581d693)
  • add per-grantee object ACL editor design spec (70991b8)
  • add per-grantee object ACL editor implementation plan (ab26e87)
  • add per-object retention & legal hold design spec (514feb4)
  • add per-object retention & legal hold implementation plan (01c8835)
  • add Plan 2a (UI foundation, app shell, accounts) implementation plan (292c540)
  • add Plan 2b-1 (Files view browsing) implementation plan (2e01ef2)
  • add Plan 2b-2a (operations plumbing) implementation plan (3772f07)
  • add Plan 2b-2b (operations UI) implementation plan (826785f)
  • add presigned upload (PUT) URLs design spec (48f5111)
  • add presigned upload (PUT) URLs implementation plan (641ce80)
  • add README and MIT LICENSE (056a0a8)
  • add ROADMAP tracking the bucket list (00f3ca2)
  • add S3 Manager foundation + File Manager MVP design spec (a361205)
  • add Settings screen design spec (1bacbe0)
  • add Settings screen implementation plan (ebc6941)
  • design for custom S3-compatible provider (bf8d72b)
  • design for editing an account/connection (dcbf823)
  • design for macOS signing + notarization (4fa4a41)
  • design for open-source licenses acknowledgements screen (3ef8f60)
  • design for sidebar account & bucket selectors (14f51c5)
  • document macOS signing secrets and verification (deb8fb6)
  • implementation plan for custom S3-compatible provider (5cb4d5a)
  • implementation plan for editing an account/connection (de62d81)
  • implementation plan for macOS signing + notarization (52e171a)
  • implementation plan for open-source licenses (c2962b0)
  • implementation plan for sidebar account & bucket selectors (15156e2)
  • record backend foundation completion status and deferred items (7d98e35)
  • record better-sqlite3 -> node-sqlite3-wasm swap and updated deferred items (3eb656f)
  • refine sidebar-selectors spec (sync nuance, controlled editors) (3e25853)
  • remove supoerpowers (c1f73f2)

Testing

  • add error-path test and clarify metadata clear-contract (b408d8b)
  • assert metadata IPC field pass-through; keep visibility pair adjacent (70a8dee)
  • avoid empty-function lint errors in matchMedia stub (912896c)
  • cors: activate JSON resync-after-save test with differing refetch (1311c2b)
  • cover ConnectionsScreen edit flow; use div for row actions (f72dbc9)
  • cover custom forcePathStyle default and non-http endpoint rejection (47a0ca3)
  • cover provider re-resolution on accounts:update (ba94ecb)
  • i18n: include language in settings IPC default assertion (62246e6)
  • include custom provider in UI_PROVIDERS expectation (4553cc6)
  • include theme field in register settings assertion (8457d44)
  • read back persisted forcePathStyle from the DB (f6a4fc4)
  • ui: cover account remove, list-error, and test-connection failure; add Space-key row activation (8d1b11c)
  • ui: cover CORS JSON preview reflects edits and save-error toast (97e8f80)
  • ui: cover Object Lock inline query-error state (34c0327)
  • ui: cover useObjects pagination/dedup; add MetadataPanel visibility error state (5ba13da)

Build System

  • add @electron-forge/maker-dmg dependency (e5ae749)
  • add hardened-runtime entitlements for macOS signing (156b86c)
  • deps: bump the minor-and-patch group across 1 directory with 10 updates (#2) (7048742)
  • document API key path and scope entitlements to main app (c7cd688)
  • drop unused @electron-forge/maker-zip dependency (d5d9ad8)
  • sign/notarize macOS app and build DMG via Electron Forge (59811b2)

CI/CD

  • bump import-codesign-certs to v7 and clean up notarization key (de7dd7e)
  • drop obsolete macOS xattr workaround from release notes (351c328)
  • release: push CHANGELOG to develop via RELEASE_TOKEN PAT (9377fe0)
  • sign and notarize the macOS build in release workflow (ae58a5a)
  • surface signing/notarization progress to avoid premature cancels (51c5743)