dependabot[bot]
8f6cb2b1da
chore(deps): bump axios from 1.16.0 to 1.18.0 in /frontend ( #96 )
...
Bumps [axios](https://github.com/axios/axios ) from 1.16.0 to 1.18.0.
- [Release notes](https://github.com/axios/axios/releases )
- [Changelog](https://github.com/axios/axios/blob/v1.x/CHANGELOG.md )
- [Commits](https://github.com/axios/axios/compare/v1.16.0...v1.18.0 )
---
updated-dependencies:
- dependency-name: axios
dependency-version: 1.18.0
dependency-type: direct:production
...
Signed-off-by: dependabot[bot] <support@github.com >
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-07-23 09:52:05 +02:00
garage-ui-release-bot[bot]
0e6b7b9215
chore(main): release 0.10.0 ( #93 )
...
Co-authored-by: garage-ui-release-bot[bot] <285030457+garage-ui-release-bot[bot]@users.noreply.github.com>
garage-ui-0.10.0
v0.10.0
2026-07-15 00:02:03 +02:00
Noste
c0976a1e1d
feat(preview): Implement object preview functionality ( #94 )
...
* feat(preview): implement object preview functionality with token-based access
* docs: update README to include inline object preview feature
* test: add range read error handling and attachment content disposition tests
2026-07-15 00:01:04 +02:00
Camilo Hollanda
5d33382e30
feat: bulk actions — recursively delete folders (key prefixes) ( #68 )
...
* feat(backend,frontend): recursive delete of key prefixes in bulk actions
Bulk object selection previously only supported deleting individually
listed object keys — folders ("prefixes") could not be selected or
deleted, leaving no way to remove a directory and all of its contents.
Backend:
- Add S3Service.DeleteObjectsByPrefix, which recursively lists every
object under a prefix and batch-deletes them, returning the count.
- Extend the delete-multiple endpoint to accept a "prefixes" array
alongside "keys"; keys are batch-deleted and each prefix is deleted
recursively. Response now reports the total objects removed.
Frontend:
- Enable folder checkboxes and add a per-folder "Delete folder" action.
- Select-all now covers both files and folders.
- Route all bulk/folder deletes through a confirmation dialog that
spells out the file/folder counts and warns that folders are removed
recursively (previously bulk delete fired with no confirmation).
- api/hook send "prefixes"; optimistic update drops objects under any
deleted prefix.
* fix(backend): validate delete prefixes and count actual removals
Addresses maintainer review on the recursive prefix-delete endpoint:
- Reject blank/whitespace-only prefixes with a 400 instead of a 500, and
normalize each prefix to have a trailing "/" so "photos/2024" can no
longer also delete siblings like "photos/2024-old/..." on this
irreversible public endpoint.
- DeleteMultipleObjects now returns the number of objects actually
removed (requested keys minus failures) rather than assuming every
requested key was deleted; the handler sums real counts across the
keys and prefix paths. Draining the full RemoveObjects error channel
also fixes a potential sender-goroutine leak on early return.
- Add tests: blank-prefix -> 400, prefix trailing-slash normalization,
and S3Service.DeleteObjectsByPrefix (list-then-delete, empty prefix,
no-match, and list-error propagation).
* fix(frontend): align select-all with the active search filter
The header "select all" checkbox derived its checked state from the
filtered (searched) rows, but handleSelectAll operated on the full,
unfiltered object list — so with a search active it selected hidden
items and the checkbox state disagreed with the selection.
ObjectsTable now passes the keys of the currently visible (filtered)
rows to onSelectAll, and its checked state reflects whether every
visible row is selected. handleSelectAll toggles only those visible
rows, leaving any off-screen selection intact.
* fix(frontend): scope select-all to the visible page
After merging upstream's client-side deep-search pagination, the rendered
rows are pageObjects (one page slice) while select-all still operated on
filteredObjects (every match across hidden pages). Scope the header
checkbox's state and its select-all action to pageObjects so one click
never selects off-screen rows for a destructive bulk delete. In
normal/prefix browsing pageObjects === filteredObjects, so behavior there
is unchanged.
---------
Authored-by: Camilo Hollanda <775409+prem-prakash@users.noreply.github.com >
2026-07-14 23:11:23 +02:00
Noooste
477b544be7
docs: improve clarity and structure
2026-07-11 22:53:40 +02:00
Noooste
90dffe594a
update README.md
2026-07-11 22:22:49 +02:00
Noste
9f73d032e6
feat(metrics): add public metrics endpoint configuration and update documentation ( #92 )
2026-07-11 21:00:04 +02:00
garage-ui-release-bot[bot]
16dc2eb996
chore(main): release 0.9.0 ( #90 )
...
Co-authored-by: garage-ui-release-bot[bot] <285030457+garage-ui-release-bot[bot]@users.noreply.github.com>
v0.9.0
garage-ui-0.9.0
2026-07-11 17:59:34 +02:00
Noste
0d804fbd39
feat(oidc): add fine grained access control ( #91 )
...
* feat(access-control): fine grain tokens
* fix(docs): clean wording
* test(access-control): add tests for team extraction from access tokens and bucket info permissions
* test(vocabulary): add test for ExpandGlob function to reject non-glob patterns
* feat(helm): add multi-user access control documentation and schema support
2026-07-11 17:57:28 +02:00
Noste
3098e474f2
feat(backend,frontend): implement prefix and recursive substring search for bucket objects ( #89 )
...
* feat(search): implement recursive substring search for bucket objects
* fix: update key formatting to remove trailing slashes in ObjectsTable
* feat(search): implement debounced search functionality and improve UI text clarity
* test(objects): add test for handling search error response
2026-07-11 17:09:27 +02:00
garage-ui-release-bot[bot]
b28e975a56
chore(main): release 0.8.5 ( #86 )
...
Co-authored-by: garage-ui-release-bot[bot] <285030457+garage-ui-release-bot[bot]@users.noreply.github.com>
v0.8.5
garage-ui-0.8.5
2026-07-03 11:13:32 +02:00
Noste
430d1a5d68
fix(frontend): add downloadObject function for downloading files from a bucket
2026-07-03 11:10:33 +02:00
dependabot[bot]
460793632e
chore(deps): bump esbuild, @vitejs/plugin-react and vite in /frontend ( #79 )
...
Removes [esbuild](https://github.com/evanw/esbuild ). It's no longer used after updating ancestor dependencies [esbuild](https://github.com/evanw/esbuild ), [@vitejs/plugin-react](https://github.com/vitejs/vite-plugin-react/tree/HEAD/packages/plugin-react ) and [vite](https://github.com/vitejs/vite/tree/HEAD/packages/vite ). These dependencies need to be updated together.
Removes `esbuild`
Updates `@vitejs/plugin-react` from 5.1.2 to 5.2.0
- [Release notes](https://github.com/vitejs/vite-plugin-react/releases )
- [Changelog](https://github.com/vitejs/vite-plugin-react/blob/plugin-react@5.2.0/packages/plugin-react/CHANGELOG.md )
- [Commits](https://github.com/vitejs/vite-plugin-react/commits/plugin-react@5.2.0/packages/plugin-react )
Updates `vite` from 7.3.2 to 8.0.16
- [Release notes](https://github.com/vitejs/vite/releases )
- [Changelog](https://github.com/vitejs/vite/blob/main/packages/vite/CHANGELOG.md )
- [Commits](https://github.com/vitejs/vite/commits/v8.0.16/packages/vite )
---
updated-dependencies:
- dependency-name: esbuild
dependency-version:
dependency-type: indirect
- dependency-name: "@vitejs/plugin-react"
dependency-version: 5.2.0
dependency-type: direct:development
- dependency-name: vite
dependency-version: 8.0.16
dependency-type: direct:development
...
Signed-off-by: dependabot[bot] <support@github.com >
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-06-22 16:33:57 +02:00
dependabot[bot]
f888b7c77c
chore(deps): bump js-yaml from 4.1.1 to 4.2.0 in /frontend ( #83 )
...
Bumps [js-yaml](https://github.com/nodeca/js-yaml ) from 4.1.1 to 4.2.0.
- [Changelog](https://github.com/nodeca/js-yaml/blob/master/CHANGELOG.md )
- [Commits](https://github.com/nodeca/js-yaml/compare/4.1.1...4.2.0 )
---
updated-dependencies:
- dependency-name: js-yaml
dependency-version: 4.2.0
dependency-type: indirect
...
Signed-off-by: dependabot[bot] <support@github.com >
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-06-22 16:33:41 +02:00
dependabot[bot]
ef118dc3a7
chore(deps): bump form-data from 4.0.5 to 4.0.6 in /frontend ( #82 )
...
Bumps [form-data](https://github.com/form-data/form-data ) from 4.0.5 to 4.0.6.
- [Changelog](https://github.com/form-data/form-data/blob/master/CHANGELOG.md )
- [Commits](https://github.com/form-data/form-data/compare/v4.0.5...v4.0.6 )
---
updated-dependencies:
- dependency-name: form-data
dependency-version: 4.0.6
dependency-type: indirect
...
Signed-off-by: dependabot[bot] <support@github.com >
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-06-22 16:33:20 +02:00
garage-ui-release-bot[bot]
34ba8ef851
chore(main): release 0.8.4 ( #84 )
...
Co-authored-by: garage-ui-release-bot[bot] <285030457+garage-ui-release-bot[bot]@users.noreply.github.com>
v0.8.4
garage-ui-0.8.4
2026-06-22 15:32:55 +02:00
Noste
1ffdfe83c8
fix(helm): track appVersion in release-please and fix badges
2026-06-22 15:28:41 +02:00
garage-ui-release-bot[bot]
e0cd59dcdf
chore(main): release 0.8.3 ( #81 )
...
Co-authored-by: garage-ui-release-bot[bot] <285030457+garage-ui-release-bot[bot]@users.noreply.github.com>
v0.8.3
garage-ui-0.8.3
2026-06-22 12:23:53 +02:00
Noooste
1c1e4d4b2b
chore: update Helm chart version to 0.8.2 and adjust README badges
...
Signed-off-by: Noooste <83548733+Noooste@users.noreply.github.com >
2026-06-21 23:20:44 +02:00
Noooste
ae245c8a31
Merge remote-tracking branch 'origin/main'
2026-06-21 22:58:38 +02:00
Noooste
28c186f3eb
fix(helm): update version badges in README for Garage UI
...
Signed-off-by: Noooste <83548733+Noooste@users.noreply.github.com >
2026-06-21 22:58:32 +02:00
Noste
46aa3752c8
fix(backend): improve API version detection with retry logic for health probes
...
Signed-off-by: Noste <83548733+Noooste@users.noreply.github.com >
2026-06-17 19:14:06 +02:00
garage-ui-release-bot[bot]
d502dac457
chore: release main ( #77 )
...
* chore: release main
* chore: sync Chart.yaml appVersion to v0.8.2
---------
Co-authored-by: garage-ui-release-bot[bot] <285030457+garage-ui-release-bot[bot]@users.noreply.github.com>
Co-authored-by: garage-ui-release-bot[bot] <garage-ui-release-bot[bot]@users.noreply.github.com>
v0.8.2
2026-06-08 00:35:53 +02:00
dependabot[bot]
67d8f633b0
chore(deps): bump react-router and react-router-dom in /frontend ( #74 )
...
Bumps [react-router](https://github.com/remix-run/react-router/tree/HEAD/packages/react-router ) to 7.16.0 and updates ancestor dependency [react-router-dom](https://github.com/remix-run/react-router/tree/HEAD/packages/react-router-dom ). These dependencies need to be updated together.
Updates `react-router` from 7.14.1 to 7.16.0
- [Release notes](https://github.com/remix-run/react-router/releases )
- [Changelog](https://github.com/remix-run/react-router/blob/main/packages/react-router/CHANGELOG.md )
- [Commits](https://github.com/remix-run/react-router/commits/react-router@7.16.0/packages/react-router )
Updates `react-router-dom` from 7.14.1 to 7.16.0
- [Release notes](https://github.com/remix-run/react-router/releases )
- [Changelog](https://github.com/remix-run/react-router/blob/main/packages/react-router-dom/CHANGELOG.md )
- [Commits](https://github.com/remix-run/react-router/commits/react-router-dom@7.16.0/packages/react-router-dom )
---
updated-dependencies:
- dependency-name: react-router
dependency-version: 7.16.0
dependency-type: indirect
- dependency-name: react-router-dom
dependency-version: 7.16.0
dependency-type: direct:production
...
Signed-off-by: dependabot[bot] <support@github.com >
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-06-08 00:13:10 +02:00
Noste
22be89b2ff
fix(backend): prevent OIDC login loop from empty cookie name ( #76 )
...
Signed-off-by: Noooste <83548733+Noooste@users.noreply.github.com >
2026-06-08 00:11:45 +02:00
garage-ui-release-bot[bot]
ae97dd8f01
chore: release main ( #73 )
...
* chore: release main
* chore: sync Chart.yaml appVersion to v0.8.1
---------
Co-authored-by: garage-ui-release-bot[bot] <285030457+garage-ui-release-bot[bot]@users.noreply.github.com>
Co-authored-by: garage-ui-release-bot[bot] <garage-ui-release-bot[bot]@users.noreply.github.com>
v0.8.1
2026-06-01 00:54:09 +02:00
Florian Gareis
45f8770799
fix(frontend): align three-dot menu item icon spacing and text alignment ( #72 )
2026-06-01 00:53:22 +02:00
Noste
e3191c2686
fix(ci): add workflow_dispatch
...
Signed-off-by: Noste <83548733+Noooste@users.noreply.github.com >
2026-05-31 12:57:58 +02:00
Noste
24997db960
fix(ci): add docker login for cosign
...
Signed-off-by: Noste <83548733+Noooste@users.noreply.github.com >
2026-05-31 12:55:40 +02:00
Noste
3c69cc5f26
Merge remote-tracking branch 'origin/main'
2026-05-31 12:52:34 +02:00
Noste
4b0e98008b
chore(release): remove pin version
...
Signed-off-by: Noste <83548733+Noooste@users.noreply.github.com >
2026-05-31 12:52:04 +02:00
garage-ui-release-bot[bot]
bc67e50606
chore: release main ( #71 )
...
Co-authored-by: garage-ui-release-bot[bot] <285030457+garage-ui-release-bot[bot]@users.noreply.github.com>
garage-ui-chart-v0.6.1
garage-ui-0.6.1
2026-05-31 12:51:23 +02:00
Noste
fe1765597c
chore(release): exclude .github from app, pin chart to 0.6.1 patch
...
Signed-off-by: Noste <83548733+Noooste@users.noreply.github.com >
2026-05-31 12:50:15 +02:00
Noste
1c9043c697
feat: Publish Helm chart to GHCR ( #70 )
...
* feat(ci): add GitHub Actions workflow to publish Helm chart to GHCR
Signed-off-by: Noste <83548733+Noooste@users.noreply.github.com >
* docs(helm): update README to include installation instructions from OCI registry and signature verification
Signed-off-by: Noste <83548733+Noooste@users.noreply.github.com >
---------
Signed-off-by: Noste <83548733+Noooste@users.noreply.github.com >
2026-05-31 12:31:53 +02:00
garage-ui-release-bot[bot]
b80cfef844
chore: release main ( #69 )
...
* chore: release main
* chore: sync Chart.yaml appVersion to v0.8.0
---------
Co-authored-by: garage-ui-release-bot[bot] <285030457+garage-ui-release-bot[bot]@users.noreply.github.com>
Co-authored-by: garage-ui-release-bot[bot] <garage-ui-release-bot[bot]@users.noreply.github.com>
garage-ui-chart-v0.6.0
garage-ui-0.6.0
v0.8.0
2026-05-31 11:57:40 +02:00
Noste
186af18d54
feat(docs): add documentation generation command to Makefile
...
Signed-off-by: Noste <83548733+Noooste@users.noreply.github.com >
2026-05-31 11:54:43 +02:00
dependabot[bot]
4b3a562acb
chore(deps): bump axios from 1.15.2 to 1.16.0 in /frontend ( #67 )
...
Bumps [axios](https://github.com/axios/axios ) from 1.15.2 to 1.16.0.
- [Release notes](https://github.com/axios/axios/releases )
- [Changelog](https://github.com/axios/axios/blob/v1.x/CHANGELOG.md )
- [Commits](https://github.com/axios/axios/compare/v1.15.2...v1.16.0 )
---
updated-dependencies:
- dependency-name: axios
dependency-version: 1.16.0
dependency-type: direct:production
...
Signed-off-by: dependabot[bot] <support@github.com >
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-05-31 11:39:32 +02:00
Alistair Young
5427758eaa
feat(backend,helm)!: bind to IPv6 wildcard by default for dual-stack support
...
* fix: Enable Garage UI to work on IPv6-based clusters.
* fix: building on nonstandard-uid machines.
* fix: Enable Garage UI to work on IPv6-based clusters.
2026-05-31 11:39:04 +02:00
garage-ui-release-bot[bot]
c30400cf84
chore: release main ( #62 )
...
* chore: release main
* chore: sync Chart.yaml appVersion to v0.7.0
* Bump version to 0.5.1 in Chart.yaml
* chore: bump version
---------
Co-authored-by: garage-ui-release-bot[bot] <285030457+garage-ui-release-bot[bot]@users.noreply.github.com>
Co-authored-by: garage-ui-release-bot[bot] <garage-ui-release-bot[bot]@users.noreply.github.com>
Co-authored-by: Noste <83548733+Noooste@users.noreply.github.com >
garage-ui-chart-v0.5.1
garage-ui-0.5.1
v0.7.0
2026-05-25 18:43:44 +02:00
Noste
d05b9ce324
docs: update README to include loading sensitive values from files with _FILE suffix
...
Signed-off-by: Noste <83548733+Noooste@users.noreply.github.com >
2026-05-23 15:43:26 +02:00
Noste
1f16edd39c
feat(backend,frontend): enable quotas support in bucket settings ( #64 )
2026-05-23 15:29:04 +02:00
Noste
36ec8e800e
feat(backend): Support _FILE suffix on sensitive env variables ( #63 )
...
* feat(env): add _FILE suffix support for env variables
* fix(frontend): dynamic refresh on key creation
* chore(deps): update packages
* fix(test): coverage
2026-05-23 14:55:52 +02:00
Noste
1b645b0c2c
fix(auth): remove auto-enable token auth logic
...
Signed-off-by: Noste <83548733+Noooste@users.noreply.github.com >
2026-05-23 12:46:38 +02:00
garage-ui-release-bot[bot]
dc9ea5716a
chore: release main ( #57 )
...
* chore: release main
* chore: sync Chart.yaml appVersion to v0.6.2
---------
Co-authored-by: garage-ui-release-bot[bot] <285030457+garage-ui-release-bot[bot]@users.noreply.github.com>
Co-authored-by: garage-ui-release-bot[bot] <garage-ui-release-bot[bot]@users.noreply.github.com>
garage-ui-chart-v0.5.0
garage-ui-0.5.0
2026-05-16 10:27:30 +02:00
Noste
699f11afaa
feat(helm): add support for extra Kubernetes manifests in values.yaml
...
Signed-off-by: Noste <83548733+Noooste@users.noreply.github.com >
2026-05-16 10:26:04 +02:00
Noste
657d919331
chore: update .gitignore
...
Signed-off-by: Noste <83548733+Noooste@users.noreply.github.com >
2026-05-16 09:30:02 +02:00
Noste
01c4c16778
ci: add workflow_dispatch trigger to build.yml
...
Signed-off-by: Noste <83548733+Noooste@users.noreply.github.com >
2026-05-16 09:21:57 +02:00
garage-ui-release-bot[bot]
3521e63073
chore: release main ( #55 )
...
Co-authored-by: garage-ui-release-bot[bot] <285030457+garage-ui-release-bot[bot]@users.noreply.github.com>
Co-authored-by: Noste <83548733+Noooste@users.noreply.github.com >
v0.6.2
garage-ui-0.4.2
garage-ui-chart-v0.4.2
2026-05-15 23:29:54 +02:00
Noste
71d3c8446a
ci: sync Chart.yaml appVersion via post-release-please step
...
Signed-off-by: Noste <83548733+Noooste@users.noreply.github.com >
2026-05-15 23:28:28 +02:00
Noste
709b9f2ad3
fix(helm): update appVersion format and improve image tag handling
...
Signed-off-by: Noste <83548733+Noooste@users.noreply.github.com >
2026-05-15 23:11:51 +02:00