VaultS3 now measures its own on-disk footprint, so "how much are my objects
really costing" is answered with a number instead of an inference (issue #43,
follow-up reported by kesavkolla). The dashboard Stats panel, vaults3-cli info
and GET /api/v1/cluster/info present three sizes side by side and say what each
one counts:
Logical: each object's current version, counted once cluster-wide.
VaultS3 on disk: what its data, metadata, erasure, cold-tier and Raft
directories actually occupy, summed per node. This is the figure to compare
against logical for a real amplification ratio (replicas, parity shards,
non-current versions), and it is shown as an explicit multiple.
Filesystems: statfs of the whole volumes, which also counts the operating
system, container images, logs, and any other tenant of the same disk.
The panel stacks VaultS3's share and everything else on one bar, so the gap
between an object total and a much larger "used" figure is visible rather than
suspicious. A per-directory breakdown separates object data from metadata and
Raft logs, which is what distinguishes real growth from a busy volume.
Sizes are allocated blocks, matching du, so a bucket full of small objects
shows the block-rounding cost it genuinely pays. Hardlinks are counted once and
symlinks are not followed.
The walk runs in the background and is cached: storage.usage_scan_interval_secs
(env VAULTS3_USAGE_SCAN_INTERVAL_SECS, Helm usageScanIntervalSecs, default
300) caps how often it may repeat, 0 disables it. It never runs on a request.
The dashboard and CLI show how old the measurement is.
New Prometheus series: vaults3_disk_usage_bytes{dir=...}, vaults3_disk_usage_files{dir=...}, vaults3_disk_usage_bytes_total and vaults3_disk_usage_scanned_timestamp_seconds, so physical growth can be graphed
next to the logical vaults3_storage_size_bytes_total.
Fixed
A clustered node addressed every peer as itself when peers shared a host on
different ports, because the membership sync rebuilt each peer's API address
from its Raft address plus this node's API port, discarding the configured cluster.peer_apis. One node per IP (the usual Kubernetes shape) was unaffected,
but a single-host or host-networked cluster silently sent all inter-node traffic
back to itself: object replicas were never placed on peers despite replica_count: 3, rebalance moved nothing, and the capacity rollup reported
one node's disk usage once per node. Explicitly configured peer addresses now win
over derived ones; this node's own entry stays derived, since the configured form
is a bind address that may be a wildcard. Existing objects written before the fix
stay single-copy until vaults3-cli cluster rebalance.
The Raft directory was missing from the reported storage directories, so its log
and snapshot growth was invisible in capacity numbers on a clustered node.
Changed
The Stats card previously labelled "Total Storage" is now "Logical Storage", and
the capacity panel names each figure, rather than leaving two very different
numbers labelled "storage" next to each other.
The Stats page had a handful of strings the i18n sweep missed (the auto-refresh
toggle, the capacity legend, per-bucket quota lines); they are translated now.
The dashboard is now translated (issue #33, requested by autool). It ships English, German, French, and Simplified Chinese, picks a language from the
browser on first load, and offers a switcher in the top bar that remembers the
choice. <html lang> follows the selection, so screen readers pronounce the UI
correctly and browsers stop offering to translate an already-translated page.
All 517 user-facing strings across the 19 pages and 16 components go through
a translation lookup, including button labels, table headers, placeholders,
tooltips, empty states, toasts, and error messages.
Implemented without adding a dependency: a ~120-line provider next to the
existing theme provider, plus one flat JSON file per language. The dashboard
still has three runtime dependencies.
Adding a language is one JSON file and no code, see Translating the dashboard. A key
a translation is missing falls back to English at runtime, so a partial
translation never breaks the UI, and npx vitest run checks that every
shipped locale has all the English keys, none that English does not define,
and the same {placeholders} in every string.
The German, French, and Chinese files were drafted without a native-speaker
review and corrections are welcome as PRs. Server-side messages (S3 API
errors, log lines) remain English.
All locales are bundled up front rather than fetched on demand, which costs
about 17 kB gzipped for the three added languages (123 kB to 140 kB) and
avoids an untranslated flash on load. Worth revisiting if many more languages
arrive.
Helm chart 0.1.6, appVersion 4.4.46.
Configuration
📅Schedule: (UTC)
Branch creation
At any time (no schedule defined)
Automerge
At any time (no schedule defined)
🚦Automerge: Enabled.
♻ Rebasing: Whenever PR is behind base branch, or you tick the rebase/retry checkbox.
🔕Ignore: Close this PR and you won't be reminded about this update again.
If you want to rebase/retry this PR, check this box
This PR contains the following updates:
| Package | Update | Change |
|---|---|---|
| [eniz1806/vaults3](https://github.com/Kodiqa-Solutions/VaultS3) | patch | `4.4.45` → `4.4.47` |
---
> ⚠️ **Warning**
>
> Some dependencies could not be looked up. Check the [Dependency Dashboard](issues/3) for more information.
---
### Release Notes
<details>
<summary>Kodiqa-Solutions/VaultS3 (eniz1806/vaults3)</summary>
### [`v4.4.47`](https://github.com/Kodiqa-Solutions/VaultS3/blob/HEAD/CHANGELOG.md#4447---2026-08-01)
[Compare Source](https://github.com/Kodiqa-Solutions/VaultS3/compare/v4.4.46...v4.4.47)
##### Added
- **VaultS3 now measures its own on-disk footprint**, so "how much are my objects
really costing" is answered with a number instead of an inference (issue [#​43](https://github.com/Kodiqa-Solutions/VaultS3/issues/43),
follow-up reported by kesavkolla). The dashboard Stats panel, `vaults3-cli info`
and `GET /api/v1/cluster/info` present three sizes side by side and say what each
one counts:
- **Logical**: each object's current version, counted once cluster-wide.
- **VaultS3 on disk**: what its data, metadata, erasure, cold-tier and Raft
directories actually occupy, summed per node. This is the figure to compare
against logical for a real amplification ratio (replicas, parity shards,
non-current versions), and it is shown as an explicit multiple.
- **Filesystems**: `statfs` of the whole volumes, which also counts the operating
system, container images, logs, and any other tenant of the same disk.
The panel stacks VaultS3's share and everything else on one bar, so the gap
between an object total and a much larger "used" figure is visible rather than
suspicious. A per-directory breakdown separates object data from metadata and
Raft logs, which is what distinguishes real growth from a busy volume.
- Sizes are allocated blocks, matching `du`, so a bucket full of small objects
shows the block-rounding cost it genuinely pays. Hardlinks are counted once and
symlinks are not followed.
- The walk runs in the background and is cached: `storage.usage_scan_interval_secs`
(env `VAULTS3_USAGE_SCAN_INTERVAL_SECS`, Helm `usageScanIntervalSecs`, default
300\) caps how often it may repeat, `0` disables it. It never runs on a request.
The dashboard and CLI show how old the measurement is.
- New Prometheus series: `vaults3_disk_usage_bytes{dir=...}`,
`vaults3_disk_usage_files{dir=...}`, `vaults3_disk_usage_bytes_total` and
`vaults3_disk_usage_scanned_timestamp_seconds`, so physical growth can be graphed
next to the logical `vaults3_storage_size_bytes_total`.
##### Fixed
- **A clustered node addressed every peer as itself when peers shared a host on
different ports**, because the membership sync rebuilt each peer's API address
from its Raft address plus *this* node's API port, discarding the configured
`cluster.peer_apis`. One node per IP (the usual Kubernetes shape) was unaffected,
but a single-host or host-networked cluster silently sent all inter-node traffic
back to itself: **object replicas were never placed on peers despite
`replica_count: 3`**, rebalance moved nothing, and the capacity rollup reported
one node's disk usage once per node. Explicitly configured peer addresses now win
over derived ones; this node's own entry stays derived, since the configured form
is a bind address that may be a wildcard. Existing objects written before the fix
stay single-copy until `vaults3-cli cluster rebalance`.
- The Raft directory was missing from the reported storage directories, so its log
and snapshot growth was invisible in capacity numbers on a clustered node.
##### Changed
- The Stats card previously labelled "Total Storage" is now "Logical Storage", and
the capacity panel names each figure, rather than leaving two very different
numbers labelled "storage" next to each other.
- The Stats page had a handful of strings the i18n sweep missed (the auto-refresh
toggle, the capacity legend, per-bucket quota lines); they are translated now.
- Settings shows the footprint scan interval.
### [`v4.4.46`](https://github.com/Kodiqa-Solutions/VaultS3/blob/HEAD/CHANGELOG.md#4446---2026-08-01)
[Compare Source](https://github.com/Kodiqa-Solutions/VaultS3/compare/v4.4.45...v4.4.46)
##### Added
- **The dashboard is now translated** (issue [#​33](https://github.com/Kodiqa-Solutions/VaultS3/issues/33), requested by autool). It ships
**English, German, French, and Simplified Chinese**, picks a language from the
browser on first load, and offers a switcher in the top bar that remembers the
choice. `<html lang>` follows the selection, so screen readers pronounce the UI
correctly and browsers stop offering to translate an already-translated page.
- All 517 user-facing strings across the 19 pages and 16 components go through
a translation lookup, including button labels, table headers, placeholders,
tooltips, empty states, toasts, and error messages.
- Implemented without adding a dependency: a \~120-line provider next to the
existing theme provider, plus one flat JSON file per language. The dashboard
still has three runtime dependencies.
- **Adding a language is one JSON file and no code**, see
[Translating the dashboard](CONTRIBUTING.md#translating-the-dashboard). A key
a translation is missing falls back to English at runtime, so a partial
translation never breaks the UI, and `npx vitest run` checks that every
shipped locale has all the English keys, none that English does not define,
and the same `{placeholders}` in every string.
- The German, French, and Chinese files were drafted without a native-speaker
review and corrections are welcome as PRs. Server-side messages (S3 API
errors, log lines) remain English.
- All locales are bundled up front rather than fetched on demand, which costs
about 17 kB gzipped for the three added languages (123 kB to 140 kB) and
avoids an untranslated flash on load. Worth revisiting if many more languages
arrive.
- Helm chart 0.1.6, appVersion 4.4.46.
</details>
---
### Configuration
📅 **Schedule**: (UTC)
- Branch creation
- At any time (no schedule defined)
- Automerge
- At any time (no schedule defined)
🚦 **Automerge**: Enabled.
♻ **Rebasing**: Whenever PR is behind base branch, or you tick the rebase/retry checkbox.
🔕 **Ignore**: Close this PR and you won't be reminded about this update again.
---
- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box
---
This PR has been generated by [Mend Renovate CLI](https://github.com/renovatebot/renovate).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0NC41LjMiLCJ1cGRhdGVkSW5WZXIiOiI0NC41LjMiLCJ0YXJnZXRCcmFuY2giOiJtYWluIiwibGFiZWxzIjpbInJlbm92YXRlIl19-->
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
This PR contains the following updates:
4.4.45→4.4.47Release Notes
Kodiqa-Solutions/VaultS3 (eniz1806/vaults3)
v4.4.47Compare Source
Added
VaultS3 now measures its own on-disk footprint, so "how much are my objects
really costing" is answered with a number instead of an inference (issue #43,
follow-up reported by kesavkolla). The dashboard Stats panel,
vaults3-cli infoand
GET /api/v1/cluster/infopresent three sizes side by side and say what eachone counts:
directories actually occupy, summed per node. This is the figure to compare
against logical for a real amplification ratio (replicas, parity shards,
non-current versions), and it is shown as an explicit multiple.
statfsof the whole volumes, which also counts the operatingsystem, container images, logs, and any other tenant of the same disk.
The panel stacks VaultS3's share and everything else on one bar, so the gap
between an object total and a much larger "used" figure is visible rather than
suspicious. A per-directory breakdown separates object data from metadata and
Raft logs, which is what distinguishes real growth from a busy volume.
Sizes are allocated blocks, matching
du, so a bucket full of small objectsshows the block-rounding cost it genuinely pays. Hardlinks are counted once and
symlinks are not followed.
The walk runs in the background and is cached:
storage.usage_scan_interval_secs(env
VAULTS3_USAGE_SCAN_INTERVAL_SECS, HelmusageScanIntervalSecs, default300) caps how often it may repeat,
0disables it. It never runs on a request.The dashboard and CLI show how old the measurement is.
New Prometheus series:
vaults3_disk_usage_bytes{dir=...},vaults3_disk_usage_files{dir=...},vaults3_disk_usage_bytes_totalandvaults3_disk_usage_scanned_timestamp_seconds, so physical growth can be graphednext to the logical
vaults3_storage_size_bytes_total.Fixed
different ports, because the membership sync rebuilt each peer's API address
from its Raft address plus this node's API port, discarding the configured
cluster.peer_apis. One node per IP (the usual Kubernetes shape) was unaffected,but a single-host or host-networked cluster silently sent all inter-node traffic
back to itself: object replicas were never placed on peers despite
replica_count: 3, rebalance moved nothing, and the capacity rollup reportedone node's disk usage once per node. Explicitly configured peer addresses now win
over derived ones; this node's own entry stays derived, since the configured form
is a bind address that may be a wildcard. Existing objects written before the fix
stay single-copy until
vaults3-cli cluster rebalance.and snapshot growth was invisible in capacity numbers on a clustered node.
Changed
the capacity panel names each figure, rather than leaving two very different
numbers labelled "storage" next to each other.
toggle, the capacity legend, per-bucket quota lines); they are translated now.
v4.4.46Compare Source
Added
English, German, French, and Simplified Chinese, picks a language from the
browser on first load, and offers a switcher in the top bar that remembers the
choice.
<html lang>follows the selection, so screen readers pronounce the UIcorrectly and browsers stop offering to translate an already-translated page.
a translation lookup, including button labels, table headers, placeholders,
tooltips, empty states, toasts, and error messages.
existing theme provider, plus one flat JSON file per language. The dashboard
still has three runtime dependencies.
Translating the dashboard. A key
a translation is missing falls back to English at runtime, so a partial
translation never breaks the UI, and
npx vitest runchecks that everyshipped locale has all the English keys, none that English does not define,
and the same
{placeholders}in every string.review and corrections are welcome as PRs. Server-side messages (S3 API
errors, log lines) remain English.
about 17 kB gzipped for the three added languages (123 kB to 140 kB) and
avoids an untranslated flash on load. Worth revisiting if many more languages
arrive.
Configuration
📅 Schedule: (UTC)
🚦 Automerge: Enabled.
♻ Rebasing: Whenever PR is behind base branch, or you tick the rebase/retry checkbox.
🔕 Ignore: Close this PR and you won't be reminded about this update again.
This PR has been generated by Mend Renovate CLI.