Commit Graph
597 Commits
Author SHA1 Message Date
JK-Helper [BOT] e7c62e1645 Merge pull request #204 from jk-cluster/docs/notes-readme-followup
README: every chart ships a NOTES.txt, plus two stale chart-table facts
2026-08-28 23:35:35 +00:00
jklein 17ae06b58f README: every chart ships a NOTES.txt, plus two stale chart-table facts
The NOTES.txt bullet still said the file was "planned (#43)" and named nine
charts as the ones shipping one. Both halves are now wrong: 23 of 23 charts
carry a templates/NOTES.txt, template-chart included. The count was also
wrong when it was written — the very commit that raised it to "nine" added
template-chart/templates/NOTES.txt, making it ten, and the enumeration was
never maintained. Replaced with a statement and no list, so the next new
chart cannot make it stale again; the quality bar the programme settled on
(rendered URL, which fields the 1Password item must carry, the options
actually active, the chart's traps — conditional on the values really set)
is kept and now reads as a requirement for new charts.

Two further statements corrected against origin/main:

- The chart table listed 22 of 23 charts; `bentopdf` was missing entirely
  although it ships (bentopdf/Chart.yaml, 1.0.1+up2.8.7) and has CI fixtures.
- The homeassistant row advertised "has NOTES.txt and Helm tests". The
  NOTES.txt half stopped being a distinguishing property once every chart
  got one. The Helm tests half holds and is now stated as what it is:
  homeassistant/templates/tests/test-connection.yaml is the only such file
  in the repo.

Documentation only — no chart directory, no version bump, no publish.

Part of #43.
2026-08-29 01:33:15 +02:00
jlab-renovate[bot] 3c59d31830 Update lukevella/rallly Docker tag to v4.13.1 2026-08-28 23:29:06 +00:00
JK-Helper [BOT] e592aef618 Merge pull request #202 from jk-cluster/feat/homeassistant-notes-and-157
homeassistant: echte NOTES.txt und Plain-Decimal-Byte-Werte (6.1.0+up2026.8.3)
2026-08-28 23:28:23 +00:00
jklein 148e15a1f6 ci: guard resource quantities against exponential notation
Adds ci/run-quantity-render-test.sh and a validate-charts job that runs it
over every chart on every PR.

The bug behind #157 has a loud and a silent half. Loud: a bare integer request
of 1048576 is reformatted by printf "%v" to "1.048576e+06", the helper rejects
the suffix it produced itself and the render aborts. Silent: with a fractional
limitFactor the *product* is reformatted after the suffix check, the render
succeeds, and the manifest carries memory: "1.4999985e+06" - rejected by
nothing until the API server sees it at apply time.

So the test renders each chart twice and, for the silent case, searches the
rendered text rather than the exit code. It runs over all charts, not the
changed ones: the resources helper is copied into every chart's _helpers.tpl,
so the regression arrives by copy, in a PR whose diff shows a new chart and not
the bug inside it. The resources paths come from values.schema.json (JSON, so
python3 reads it without pyyaml), which also means a new chart is enrolled
automatically and there is no list to maintain.

Charts that pin every computable limit in their fallback defaults never reach
the helper (gotenberg, rss-bridge). They are reported as "not exercised"
instead of counted as passing.
2026-08-29 01:25:48 +02:00
jklein c668165fb3 homeassistant: a NOTES.txt worth reading (6.1.0+up2026.8.3)
Part of #43. This chart was cited throughout that issue as the one that already has a NOTES.txt and therefore serves as the style reference for the whole programme. The file contained the single line "Hello :)". It is replaced here by the real thing, built on the pattern the later charts (zipline, voucher-vault, urlaubsverwaltung) established in the meantime.

It prints what an operator would otherwise have to read out of the templates: the access URL assembled from the chart's upstream-style ingress block (hosts x tls, so the scheme is derived per host rather than assumed) or the port-forward command; the three fields the 1Password item must carry (config, http-config, recorder-config) and how configuration.yaml has to include the other two itself; and the traps of this particular chart - onboarding hands the instance to the first visitor, use_x_forwarded_for/trusted_proxies decides between 400 Bad Request and one client IP for everyone, the three config files are read-only subPath mounts that the kubelet never refreshes, safe mode lets a broken configuration pass the probes, and helm uninstall deletes the PVC that holds all of the state.

Conditional sections cover scaleDown/replicas 0, replicas > 1 on a single ReadWriteOnce claim, a NET_RAW override that silently kills device discovery, a non-empty env block, the chart placeholder host chart-example.local, and the case where ingress.tls names a Secret while no cert-manager annotation is set - this chart adds none by itself, unlike the rest of the repo.

No domain appears in the file: hosts come from the values, examples use example.com. Minor bump, appVersion unchanged; a NOTES.txt changes no rendered object, verified by diffing helm template before and after.
2026-08-29 01:18:33 +02:00
jklein d95e8569c8 homeassistant: render byte counts as plain decimals
Part of #157. The null-safe fallback helpers from #99 pass values through fromYaml, which parses every number as float64; Go's "%v" switches float64 to exponential notation from about 1e6 upwards. A bare byte count like 1048576 therefore reached multiplyQuantity as "1.048576e+06" and the render aborted on the suffix check.

This is the canonical correction already merged into the other charts, adopted verbatim with this chart's define prefix: multiplyQuantity formats its input and its non-integer product through a new formatNumber helper. The fromYaml round-trip itself is not touched - it is not the cause, and it has just been unified across all charts.

Measured against ci/homeassistant/test-values.yaml: resources.requests.memory=1048576 aborted before and now yields request 1048576 / limit "3145728"; 65536 still yields 196608. The silent variant matters here too - values.schema.json types resources.limitFactor as "number" with exclusiveMinimum 0, so a fractional factor is allowed and rendered an invalid quantity without any error (limitFactor 1.5 with memory 999999 produced memory: "1.4999985e+06"); it now produces 1499998.5.
2026-08-29 01:18:19 +02:00
JK-Helper [BOT] 8869b57e80 Merge pull request #201 from jk-cluster/fix/rss-bridge-157
rss-bridge: render byte counts as plain decimals (1.0.2+up2025.08.05)
2026-08-28 23:16:53 +00:00
JK-Helper [BOT] 29060d607a Merge pull request #200 from jk-cluster/fix/searxng-157
searxng: render byte counts as plain decimals (1.0.1+up2026.8.22.9fea41204)
2026-08-28 23:16:46 +00:00
JK-Helper [BOT] d651a78c5f Merge pull request #199 from jk-cluster/fix/patchmon-157
patchmon: render byte counts without exponential notation (7.0.1+up2.1.3)
2026-08-28 23:16:39 +00:00
JK-Helper [BOT] 8b23477e23 Merge pull request #198 from jk-cluster/fix/freesailarr-157
freesailarr: no exponential notation in computed limits (3.0.2+up1.0.0)
2026-08-28 23:16:33 +00:00
jklein e666cfed6c rss-bridge: render byte counts as plain decimals (1.0.2+up2025.08.05)
Teil von #157.

The null-safe fallback helpers from #99 pass values through fromYaml, which
goes over JSON and therefore parses every number as float64. Go's "%v"
switches float64 to exponential notation from about 1e6 upwards, so a bare
byte count like 1048576 turned into "1.048576e+06" - not a valid Kubernetes
quantity. The suffix check in multiplyQuantity then aborted the render with
  unsupported resource quantity suffix "e+06" in "1.048576e+06"

The second "%v" - the one printing a non-integer product - never reaches that
check and failed silently instead: with a fractional limitFactor it rendered
"1.4999985e+06" into the manifest, which only the API server rejects on apply.

Both call sites now go through a new rss-bridge.formatNumber helper that
forces decimal notation via printf "%.10f" and trims the padding zeros again;
the leading dot in the regex protects "100.0000000000" from collapsing to
"1". Strings such as "512Mi" pass through untouched.

This is the canonical fix from #157, applied verbatim with this chart's
prefix; the round-trip itself is not touched.

Note on this chart specifically: rss-bridge sets explicit memory and
ephemeral-storage limits as chart defaults, and an explicit limit always
wins, so multiplyQuantity is not reachable through this chart's values at
all - the bug was reproduced and the fix verified on a throwaway copy with
those default limits removed. The rendered output for the chart defaults and
for ci/rss-bridge/test-values.yaml is byte-identical to main.

Patch bump: no behavior and no values-schema change.
2026-08-29 01:13:57 +02:00
jklein 5bffc3237a searxng: render byte counts as plain decimals (1.0.1+up2026.8.22.9fea41204)
multiplyQuantity turned its input into a string with printf "%v". The
null-safe fallback helpers from #99 pass values through fromYaml, which
parses every number as float64, and Go's "%v" switches float64 to
exponential notation from about 1e6 upwards. A bare byte count like
1048576 therefore arrived as "1.048576e+06", the suffix check rejected
"e+06" and the render aborted.

The same printf sat on the second output path, for a non-integer product
(a fractional limitFactor - typed "number", not "integer", in this
chart's values.schema.json, so ordinary values reach it). That one never
passes the suffix check, so it produced an invalid quantity silently and
only the API server would have rejected the manifest on apply.

Both are now routed through a formatNumber helper that forces decimal
notation and trims the padding zeros. Strings ("512Mi") pass through
untouched, so the default render is unchanged - including the
checksum/config annotation over the settings.yml ConfigMap, which stays
at 619e1ac4 for the CI values and 25bd1479 for the chart defaults, so no
pod is rolled without reason.

Part of #157. The helper is a verbatim copy of the fix already merged for
template-chart, zipline, cyberchef and bentopdf - multiplyQuantity is the
same duplicated code in every chart.
2026-08-29 01:13:12 +02:00
JK-Helper [BOT] 0ba3339c62 Merge pull request #197 from jk-cluster/fix/gotenberg-157
gotenberg: render large byte counts without exponential notation (8.0.1+up8.36.0)
2026-08-28 23:11:13 +00:00
jklein 35b4ce0a42 patchmon: render byte counts without exponential notation (7.0.1+up2.1.3)
The null-safe fallback helpers from #99 pass values through fromYaml, which
parses every number as float64. Go's "%v" switches float64 to exponential
notation from about 1e6 upwards, so a bare byte count like 1048576 reached
multiplyQuantity as "1.048576e+06" and the render aborted with

  unsupported resource quantity suffix "e+06" in "1.048576e+06"

The same "%v" sits a second time on the output of a non-integral product,
where it never passes the suffix check — a fractional limitFactor together
with a bare number rendered a silently invalid quantity ("1.4999985e+06")
that only the API server rejects on apply.

Both call sites now go through a new patchmon.formatNumber helper, which
forces decimal notation for float64 and passes strings ("512Mi") through
untouched. This is the canonical fix agreed in #157, taken over verbatim
from template-chart with this chart's define prefix, so multiplyQuantity
stays the same copy in every chart.

Teil von #157.
2026-08-29 01:09:12 +02:00
jklein ce73bc1111 freesailarr: no exponential notation in computed limits (3.0.2+up1.0.0)
The null-safe fallback helpers from #99 route values through fromYaml, which
parses every number as float64. Go's "%v" switches float64 to exponential
notation from about 1e6 upwards, so a bare byte count like 1048576 reached the
suffix check inside multiplyQuantity as "1.048576e+06" and the render aborted
with `unsupported resource quantity suffix "e+06"`.

Both printf "%v" sites in multiplyQuantity now go through a new formatNumber
helper that forces plain decimal notation and trims the padded zeros. The
second site is the quiet half of the bug: a fractional limitFactor together
with a bare number produced no error at all, just an invalid quantity such as
"1.4999985e+06" that only the API server rejects on apply. limitFactor is
typed "number" in this chart's values.schema.json, so a fractional factor is
an ordinary, schema-valid input.

All ten resource paths of the stack are affected and were verified one by one
(gluetun, qbittorrent and its configInit init container, prowlarr,
flaresolverr, radarr, recyclarr, sonarr, seerr, bazarr). The VPN, firewall and
container structure is untouched: rendering the chart with its default values
is byte-identical to main.

Teil von #157
2026-08-29 01:08:07 +02:00
JK-Helper [BOT] e0e3b73202 Merge pull request #196 from jk-cluster/fix/bentopdf-157
bentopdf: render byte counts as plain decimals (1.0.1+up2.8.7)
2026-08-28 23:07:17 +00:00
JK-Helper [BOT] df387718a6 Merge pull request #195 from jk-cluster/fix/cyberchef-157
cyberchef: format quantities without exponential notation (9.0.1+up11.4.0)
2026-08-28 23:07:10 +00:00
jklein 6fe729523f gotenberg: render large byte counts without exponential notation (8.0.1+up8.36.0)
The null-safe fallback helpers from #99 pass values through fromYaml, which
parses every number as float64. Go's "%v" switches float64 to exponential
notation from about 1e6 upwards, so a bare byte count like 1048576 turned into
"1.048576e+06" - not a valid Kubernetes quantity. multiplyQuantity then aborted
the render on its own suffix check. The second "%v", the one printing a
non-integer product, never reaches that check and rendered an invalid quantity
silently; only the API server rejects it on apply.

Both call sites now go through a new formatNumber helper that forces plain
decimal notation and passes strings ("512Mi") through untouched. The
fromYaml/toYaml round-trip is not touched: it was just unified across all
charts and it is not the cause.

gotenberg reaches multiplyQuantity from two places - the Deployment's
resources block and NOTES.txt, which reports the effective limits. With the
chart's default values both non-CPU resources carry an explicit limit, so no
limit is computed and neither site was affected in the default configuration.

Teil von #157
2026-08-29 01:05:58 +02:00
jklein 11180bd503 bentopdf: render byte counts as plain decimals (1.0.1+up2.8.7)
multiplyQuantity turned its input into a string with printf "%v". The
null-safe fallback helpers from #99 pass values through fromYaml, which
parses every number as float64, and Go's "%v" switches float64 to
exponential notation from about 1e6 upwards. A bare byte count like
1048576 therefore arrived as "1.048576e+06", the suffix check rejected
"e+06" and the render aborted.

The same printf sat on the second output path, for a non-integer product
(a fractional limitFactor - typed "number", not "integer", in this
chart's values.schema.json, so ordinary values reach it). That one never
passes the suffix check, so it produced an invalid quantity silently and
only the API server would have rejected the manifest on apply.

Both are now routed through a formatNumber helper that forces decimal
notation and trims the padding zeros. Strings ("512Mi") pass through
untouched, so the default render is unchanged.

Part of #157. The helper is a verbatim copy of the fix already merged
for template-chart, zipline, voucher-vault and outline - multiplyQuantity
is the same duplicated code in every chart.
2026-08-29 01:04:40 +02:00
jklein c371179d76 cyberchef: format quantities without exponential notation (9.0.1+up11.4.0)
multiplyQuantity turned its input into a string with printf "%v". The null-safe fallback helpers from #99 route values through fromYaml, which parses every number as float64, and Go switches float64 to exponential notation from about 1e6 upwards. A bare byte count like 1048576 became "1.048576e+06" and the suffix check aborted the render.

The non-integer product used the same printf "%v" on output. That path never reaches the suffix check, so it rendered an invalid quantity silently, which only the API server rejects on apply. cyberchef types limitFactor as "number", so a fractional factor is allowed by the schema and that path is reachable with ordinary values.

Both call sites now go through a new formatNumber helper that forces decimal notation and trims the padding zeros; strings such as "512Mi" pass through untouched. Round-trip and resources helper are unchanged. The wording matches the canonical fix already merged for template-chart and the other charts, so the shared copy stays free of drift.
2026-08-29 01:03:19 +02:00
JK-Helper [BOT] ec0aed14da Merge pull request #194 from jk-cluster/fix/apache-tika-157
apache-tika: Zahlen ohne Exponentialschreibweise rendern (10.0.1+up3.3.1.0.full)
2026-08-28 23:02:55 +00:00
JK-Helper [BOT] cb3eca2dcb Merge pull request #193 from jk-cluster/feat/teamspeak-server-notes-and-157
teamspeak-server: NOTES.txt and the exponential-quantity fix (5.1.0+up6.0.0.beta12.1)
2026-08-28 23:02:48 +00:00
JK-Helper [BOT] 04e1d1fd51 Merge pull request #191 from jk-cluster/feat/urlaubsverwaltung-notes-and-157
urlaubsverwaltung: NOTES.txt and the exponential-quantity fix (8.1.0+up6.7.0)
2026-08-28 23:02:41 +00:00
jklein 6ae380e8ec teamspeak-server: NOTES.txt and the exponential-quantity fix (5.1.0+up6.0.0.beta12.1)
Teil von #157 und Teil von #43.

#157: multiplyQuantity turned its input into a string with printf "%v". The
null-safe fallback helpers from #99 route values through fromYaml, which
parses every number as float64, and Go switches float64 to exponential
notation from about 1e6 upwards. A request of 1048576 therefore reached the
suffix check as "1.048576e+06" and aborted the render. The second printf
"%v", the one that prints a non-integer product, never reaches that check at
all: with a fractional limitFactor it wrote an invalid quantity into the
manifest without a word. Both sites now go through the canonical
teamspeak-server.formatNumber helper, identical to the other charts.

Note for this chart: values.schema.json types resources.limitFactor as
"number", not "integer", so the silent path is reachable with ordinary
values rather than only with --set-json.

#43: adds templates/NOTES.txt. teamspeak-server is a NodePort service with
no Ingress and no secrets at all, so the notes cover what is actually worth
looking up. Measured against the pinned image 6.0.0-beta12.1 rather than
taken from upstream docs: the first start prints a ServerAdmin privilege key
and ServerQuery credentials exactly once, and only the privilege key is
recoverable afterwards from the log files on the data volume; TSSERVER_
DEFAULT_PORT is read only when the virtual server is created, so changing
server.voicePort on an existing release moves the Service, the nodePort and
the containerPort while the server keeps answering on the old port, with all
three probes staying green because they only ever TCP-connect to the file
transfer port; TSSERVER_FILE_TRANSFER_PORT, by contrast, applies on every
start; the bundled license runs 2026-07-01 to 2026-10-01 with one virtual
server and 32 slots; and no query port listens at all, which leaves the
declared web-query container port 10080 bound by nothing.

Minor bump: additive, appVersion unchanged.
2026-08-29 01:00:15 +02:00
jklein cc1e7bb53e apache-tika: render byte counts as plain decimals (10.0.1+up3.3.1.0.full)
The null-safe fallback helpers from #99 pass values through fromYaml, which
goes over JSON and therefore parses every number as float64. Go's "%v"
switches float64 to exponential notation from about 1e6 upwards, so a bare
byte count like 1048576 reached multiplyQuantity as "1.048576e+06" and the
suffix check aborted the render:

  unsupported resource quantity suffix "e+06" in "1.048576e+06"

The second "%v" — the output of a non-integer product — never reaches that
check, so it produced an invalid quantity without any abort. In this chart
that value is caught one step later by NOTES.txt, which feeds the computed
memory limit back into multiplyQuantity: the Deployment still carried
memory: "1.4999985e+06" and the error pointed at NOTES.txt:54 instead of the
real cause.

Both places now go through a new formatNumber helper, which forces decimal
notation via "%.10f" and trims the padded zeros again; strings such as
"512Mi" pass through untouched. This is the canonical fix from #157, taken
over verbatim with this chart's prefix, because multiplyQuantity is the same
copy in every chart.

Chart defaults render unchanged. Patch bump: bug fix only, no behavior and no
values-schema change; appVersion stays.
2026-08-29 00:58:17 +02:00
JK-Helper [BOT] 2474fe017e Merge pull request #192 from jk-cluster/feat/satisfactory-notes-and-157
satisfactory: exponential-notation fix and NOTES.txt (6.1.0+upv1.9.10)
2026-08-28 22:55:19 +00:00
JK-Helper [BOT] 451a58149d Merge pull request #190 from jk-cluster/feat/minecraft-server-notes-and-157
minecraft-server: NOTES.txt and the exponential-quantity fix (4.1.0+up2026.8.2.java21)
2026-08-28 22:55:10 +00:00
jklein a915c5da5d satisfactory: exponential-notation fix and NOTES.txt (6.1.0+upv1.9.10)
Teil von #157 und Teil von #43.

#157: multiplyQuantity turned a bare byte count into exponential notation.
The null-safe fallback helpers pass values through fromYaml, which parses
every number as float64, and Go's "%v" switches float64 to exponential
notation from about 1e6 upwards. A request of 1048576 became
"1.048576e+06" and the render aborted on the suffix check.

Both printf "%v" sites are replaced by the canonical satisfactory.formatNumber
helper: the input of multiplyQuantity and the output of a non-integer product.
The second one never reached the suffix check, so it did not abort - it
rendered a silently invalid quantity that only the API server would reject.

#43: adds templates/NOTES.txt. The chart has no Ingress and no secrets, so
the notes cover what an operator would otherwise read out of the templates:
the NodePort a player actually dials and the pinned-port collision between
two releases, the 20-minute Steam download budget and that SKIPUPDATE is
false on every start, what a green pod does and does not prove (no probe
ever touches the UDP game port), that saves and game files share one PVC on
a hardcoded longhorn class which helm uninstall deletes, the emptyDirs
counting against the ephemeral-storage limit, the deliberate limitFactor 2
and fsGroupChangePolicy OnRootMismatch, and that game.seasonalEvents is
passed through to DISABLESEASONALEVENTS uninverted.

No rendered Kubernetes object changes, so the bump is minor; appVersion
stays v1.9.10.
2026-08-29 00:51:50 +02:00
jklein 021df7d024 urlaubsverwaltung: NOTES.txt and the exponential-quantity fix (8.1.0+up6.7.0)
Teil von #157 und Teil von #43.

#157: multiplyQuantity turned a bare byte count into exponential notation.
Values pass through fromYaml, which parses every number as float64, and Go's
"%v" switches float64 to exponential notation from about 1e6 upwards. Both
places that stringify a number now go through the new formatNumber helper -
the input of multiplyQuantity, which aborted the render with an unsupported
suffix "e+06", and the output of a non-integer product, which did not abort
at all but rendered an invalid quantity that only the API server rejects.

Measured on this chart against ci/urlaubsverwaltung/test-values.yaml:

  requests.memory=1048576              before: abort, suffix "e+06"
                                       after:  request 1048576, limit "3145728"
  requests.ephemeralStorage=2097152    before: abort, suffix "e+06"
                                       after:  limit "6291456"
  memory=999999, limitFactor=1.5       before: limit "1.4999985e+06", no abort
                                       after:  limit "1499998.5"
  requests.memory=65536 (regression)   196608 before and after

The correction is the canonical one, word for word as merged into
template-chart, voucher-vault and zipline; only the helper prefix differs.
urlaubsverwaltung has a single resources path and a single render site
(the Deployment), and both were verified.

#43: adds a NOTES.txt. Its content was verified against a running release in
a throwaway k3d cluster rather than taken from upstream documentation - the
identity provider being resolved at boot (a bad issuer-uri crashlooops the
pod instead of breaking the login), the buildpack sizing the JVM heap from
the computed memory limit, /actuator/health answering 503 for the lifetime of
the release because the chart points the mail sender at localhost:1025, the
probe groups not reacting to a database outage, and a name collision in
urlaubsverwaltung.env making the next helm upgrade fail on the patch order.

README.md is deliberately untouched: the line listing the charts that ship a
NOTES.txt collides with every parallel NOTES PR and is pulled up once at the
end of the programme.

Minor bump: a NOTES.txt renders no Kubernetes object and the quantity fix
changes no default. appVersion unchanged.
2026-08-29 00:50:17 +02:00
JK-Helper [BOT] 56713d4377 Merge pull request #189 from jk-cluster/feat/samba-notes-and-157
samba: NOTES.txt und die Exponential-Korrektur (7.1.0+up4.23.10)
2026-08-28 22:45:50 +00:00
jklein 5c5160a920 minecraft-server: NOTES.txt and the exponential-quantity fix (4.1.0+up2026.8.2.java21)
Teil von #157 and Teil von #43, in one change because both are additive and
neither moves a rendered object.

#157 - multiplyQuantity turned large numbers into exponential notation. The
null-safe fallback helpers pass values through fromYaml, which parses every
number as float64, and Go's "%v" switches float64 to exponential notation from
about 1e6 upwards. A bare byte count like 1048576 became "1.048576e+06".

The chart has two affected positions, and they fail differently:

  - the entry of multiplyQuantity aborts the render loudly, because the
    exponent is caught by the suffix check
    (unsupported resource quantity suffix "e+06").
  - the output of a non-integer product never reaches that check and renders
    silently: a fractional limitFactor together with a bare number produced
    "1.4999985e+06" in the manifest, rejected only later by the API server.

Note that this chart's schema types limitFactor as "number" with
exclusiveMinimum 0, not as an integer, so the silent path is reachable here
through ordinary values.

Both positions now go through a new minecraft-server.formatNumber helper, the
canonical correction already applied to template-chart, voucher-vault, zipline,
outline and minecraft-router.

#43 - NOTES.txt for this chart. It prints what an operator would otherwise have
to read out of the templates, conditional on the values actually set:

  - access, which is not a URL: ClusterIP means the server is reachable only
    once its Service name is entered in the minecraft-router release's static
    mappings, since that router does no auto-discovery; NodePort prints the
    node port and warns when it falls outside 30000-32767.
  - the Java line, derived from appVersion rather than written into the file,
    so it holds for all three published lines, together with the fact that
    nothing checks minecraft.version against it.
  - what a green rollout does not prove. The probes do run a real server-list
    ping, so Ready means the server answers - but a ping is answered before any
    login, so every login-side refusal is invisible to all three probes. The
    whitelist is the practical case: enabled without players locks everyone out
    while the rollout stays green.
  - which fields the 1Password item must carry, listed only for the features
    actually enabled, plus the documented gap that a changed item content does
    not roll the pod.
  - the world PVC that helm uninstall deletes, the two memory numbers and how
    they decouple, RCON not being published by the Service, the declared but
    unserved metrics port, and the enabled modpack source.

No real domain anywhere; the router example uses mc.example.com.

Verified: helm lint --strict clean on all three Java lines; rendering the CI
values and the chart defaults is byte-identical to origin/main, so no
Kubernetes object changes and the minor bump is the right one.
2026-08-29 00:43:22 +02:00
jklein 0d2fa19cf1 samba: NOTES.txt and the exponential-quantity fix (7.1.0+up4.23.10)
Teil von #157 und Teil von #43.

#157: multiplyQuantity turned its input into a string with printf "%v".
The null-safe fallback helpers from #99 route values through fromYaml, which
parses every number as float64, and Go switches float64 to exponential
notation from about 1e6 upwards. A request of 1048576 therefore reached the
suffix check as "1.048576e+06" and aborted the render. The second printf
"%v", the one that prints a non-integer product, never reaches that check at
all: with a fractional limitFactor it wrote an invalid quantity into the
manifest without a word. Both sites now go through the canonical
samba.formatNumber helper, identical to the other charts.

#43: adds templates/NOTES.txt. samba is a NodePort service, not a web app,
so the notes cover the SMB access path per client, the SMB3/encryption
requirements the chart pins in smb.conf, the users.conf field the 1Password
item must carry, that a restart drops every open SMB session, and that the
share PVCs are deleted by helm uninstall and re-created empty on a rename.

Minor bump: additive, appVersion unchanged.
2026-08-29 00:41:13 +02:00
JK-Helper [BOT] eac59dddd5 Merge pull request #188 from jk-cluster/feat/minecraft-router-notes-and-157
minecraft-router: NOTES.txt und Exponential-Schreibweise in multiplyQuantity (4.1.0+up1.46.4)
2026-08-28 22:35:35 +00:00
JK-Helper [BOT] e74dae9628 Merge pull request #187 from jk-cluster/feat/matrix-synapse-notes-and-157
matrix-synapse: NOTES.txt und die Exponential-Korrektur (7.1.0+upv1.159.0)
2026-08-28 22:35:28 +00:00
JK-Helper [BOT] 34ee45192e Merge pull request #183 from jk-cluster/feat/paperless-ngx-notes-and-157
paperless-ngx: NOTES.txt and the #157 render fix (12.1.0+up3.0.5)
2026-08-28 22:35:21 +00:00
jklein c6583468c7 minecraft-router: NOTES.txt and exponential-notation fix (4.1.0+up1.46.4)
Teil von #157: multiplyQuantity turned every number from the null-safe
fallback helpers into a float64 via fromYaml, and Go's "%v" switches
float64 to exponential notation from about 1e6 upwards. A bare byte count
like 1048576 became "1.048576e+06": the integer path aborted the render
on the suffix check, while the non-integer path (a fractional limitFactor)
rendered the invalid quantity silently and only failed at the API server.
Both string conversions now go through the canonical formatNumber helper,
identical to the fix already merged for template-chart, voucher-vault and
zipline.

Teil von #43: adds a NOTES.txt. minecraft-router has no Ingress and no
URL, so the notes name the actual way in - the NodePort Service and the
fact that the routing decision is made on the hostname from the Minecraft
handshake - print the effective routing table, and state the traps: the
nodePort outside the default range, mappings as the only source of routes
(no Kubernetes auto-discovery in this chart), the restart a routing change
costs, that a Ready router says nothing about any backend, and that API
writes do not survive a restart. Conditional blocks for the out-of-range
nodePort, scale-to-zero, more than one replica and server.env.

No production domain anywhere; examples use example.com and
cluster-internal names. Minor bump, appVersion unchanged.
2026-08-29 00:32:25 +02:00
jklein fd7a653fa4 matrix-synapse: NOTES.txt and the exponential-quantity fix (7.1.0+upv1.159.0)
Two additive changes, neither of which alters a rendered object.

NOTES.txt (Teil von #43): prints what an operator would otherwise have to
read out of the templates - the rendered access URL or the port-forward
command, the field the 1Password item must carry (homeserver.yaml) plus the
four settings inside that file which this chart's mounts dictate, and the
chart's own traps: the split between matrix.delegation.serverUrl and
ingress.domain, the immutable server name, that a changed 1Password item does
not restart the StatefulSet while the delegation nginx does roll on a config
change, and that the PVC with signing key and media is deleted with the
release. Conditional on the values actually set: Ingress on/off, delegation
on/off, either workload scaled to zero, more than one Synapse replica, and a
matrix.env that is set. No real domain anywhere; the URLs render from the
values.

_helpers.tpl (Teil von #157): the canonical formatNumber helper, taken over
unchanged from template-chart. multiplyQuantity turned its input into a string
with printf "%v"; values that came back from fromYaml as float64 switched to
exponential notation from about 1e6 upwards, so a bare byte count like 1048576
became "1.048576e+06" and the render aborted. Both resource paths of this
chart were affected - matrix.resources in the StatefulSet and
matrix.delegation.resources in the delegation Deployment.

Minor bump, appVersion unchanged.
2026-08-29 00:31:40 +02:00
JK-Helper [BOT] 4ee94cdebd Merge pull request #182 from jk-cluster/feat/calibre-web-automated-notes-and-157
calibre-web-automated: NOTES.txt und die Korrektur für nackte Ganzzahl-Ressourcen (6.1.0+upv4.0.6)
2026-08-28 22:26:14 +00:00
JK-Helper [BOT] 4efad669c4 Merge pull request #181 from jk-cluster/feat/rallly-notes-and-157
rallly: NOTES.txt and the #157 number formatting (8.1.0+up4.13.0)
2026-08-28 22:26:07 +00:00
jklein bf02dab364 paperless-ngx: NOTES.txt and the #157 render fix (12.1.0+up3.0.5)
Two additive changes, no rendered Kubernetes object changes except the
resource limits that previously aborted the render.

#157 — a bare integer resource value from about 1e6 upwards aborted the
render. The null-safe fallbacks pass values through fromYaml, which parses
every number as float64, and Go's "%v" switches float64 to exponential
notation from that size on: 1048576 became "1.048576e+06", which is not a
valid Kubernetes quantity. The canonical correction from the issue is taken
over verbatim: multiplyQuantity formats its input and its non-integer product
through a new formatNumber helper instead of "%v". The toYaml/fromYaml round
trip is not touched — it was just unified across all charts and it is not the
cause.

This chart has two resource paths and both were affected: paperless.resources
(sfs) and smbConnection.cron.resources (consume CronJob). Measured on both
before and after, plus the 65536 fallback probe, which is unchanged.

#43 — NOTES.txt. Prints what an operator would otherwise read out of the
templates: the rendered URL and that ingress.domain also becomes PAPERLESS_URL,
the field names each 1Password item must carry (including that the database
field is "server" and that "username" is used as both admin login and admin
mail), and that secrets.oidcSecretRef is read by no template at all. The
conditional sections cover the SMB consume strecke, scaleDown, OIDC, Tika and
the barcode settings actually in effect. The traps it names are the ones this
chart really has: no checksum annotation anywhere, so rotating an item's
content restarts nothing; Redis failing silently while the UI stays green; the
600s startup budget against migrations and the 3.x index rebuild; the consume
PVC being hardcoded to 1Gi; the CronJob moving only top-level *.pdf and having
no probes (the documented exception); and a cron schedule starting with "*"
aborting the render.

README is deliberately left alone: the line listing the charts with a NOTES.txt
is pulled up once at the end of the programme, so that parallel NOTES PRs do
not collide on it.

Teil von #157
Teil von #43
2026-08-29 00:22:43 +02:00
JK-Helper [BOT] 1fc666f9df Merge pull request #180 from jk-cluster/feat/outline-notes-and-157
outline: NOTES.txt und die Exponential-Korrektur für Ressourcenwerte (7.1.0+up1.9.2)
2026-08-28 22:21:15 +00:00
jklein 65cb33e5f2 calibre-web-automated: add a NOTES.txt worth reading twice (6.1.0+upv4.0.6)
Prints what an operator would otherwise dig out of the templates: the rendered
access URL or the concrete port-forward, the fields the 1Password item has to
carry, and the traps of this chart in particular - the public default login,
the ingest folder that deletes what it imports, the fixed 1Gi ingest claim,
the one shared library claim, and why a change inside the 1Password item rolls
nothing (subPath mounts included).

Conditional on the values that actually decide something: ingress on/off,
scaled to zero, an unset secret ref, and extra env entries.

Part of #43.
2026-08-29 00:19:21 +02:00
jklein 5cc53b0772 calibre-web-automated: keep large integer quantities out of exponential notation
The null-safe fallback helpers from #99 pass values through fromYaml, which
parses every number as float64. Go's "%v" switches float64 to exponential
notation from about 1e6 upwards, so a bare byte count like 1048576 reached
multiplyQuantity as "1.048576e+06" and the render aborted on the suffix check.

Route both the helper's input and its non-integral product through a new
formatNumber helper, which forces decimal notation and trims the padding
zeros again. Strings such as "512Mi" pass through untouched.

Part of #157.
2026-08-29 00:19:13 +02:00
jklein 8189b74f55 rallly: NOTES.txt and the #157 number formatting (8.1.0+up4.13.0)
Two additive changes in one release.

multiplyQuantity turned a bare integer resource value of about 1e6 or more
into exponential notation and aborted the render with "unsupported resource
quantity suffix \"e+06\"". The null-safe helpers from #99 pass values through
fromYaml, which parses every number as float64, and Go's "%v" switches those
to exponential form. The new rallly.formatNumber helper forces plain decimal
notation on both the input and the non-integer product; it is the same wording
already merged into template-chart, zipline and voucher-vault.

The NOTES.txt prints what an operator would otherwise have to read out of the
templates: the rendered access URL or the port-forward command, the fields each
1Password item has to carry, the OIDC redirect URI, and the traps of this chart
- OIDC is the only way in because email login and registration are hard-coded
off, a rotated 1Password item does not restart the pods, the probes only prove
that the web process answers, and the Next.js cache emptyDir counts against the
container's ephemeral-storage limit.

Part of #157
Part of #43
2026-08-29 00:19:11 +02:00
JK-Helper [BOT] 4e4b423b91 Merge pull request #178 from jk-cluster/feat/zipline-notes-and-157
zipline: NOTES.txt und die Korrektur der Exponentialschreibweise (7.1.0+up4.7.0)
2026-08-28 22:13:19 +00:00
jklein 17c2391895 outline: NOTES.txt and the exponential-quantity fix (7.1.0+up1.9.2)
Part of #157: multiplyQuantity turned a bare integer resource value into
exponential notation and aborted the render. The null-safe helpers pass
values through fromYaml, which makes every number a float64, and Go's "%v"
switches float64 to exponential form from about 1e6 upwards - so
"1048576" arrived as "1.048576e+06" and the suffix check failed. A new
outline.formatNumber helper renders such a value as a plain decimal
string; it is applied to the input and to the non-integer product. This is
the canonical fix agreed for the issue, taken over unchanged so the copies
of the helper in all charts stay identical.

Part of #43: the chart gets a NOTES.txt. It renders the access URL (or the
port-forward command when the Ingress is off), lists the fields each of the
three 1Password items has to carry plus the OIDC redirect URI, and states
the traps that are otherwise found the hard way: editing a value inside a
1Password item restarts nothing, Postgres and Redis are external and
unencrypted by default, migrations run inside the startup probe's budget,
uploads sit on a single RWO volume that helm uninstall takes with it, the
Ingress body-size limit is ten times smaller than the app's, and the chart
configures no mail at all.

Minor bump: the fix changes no rendered output for any value the schema
accepted before, and a NOTES.txt renders no object.
2026-08-29 00:10:42 +02:00
jklein db00198c6b zipline: NOTES.txt and the exponential-quantity fix (7.1.0+up4.7.0)
Part of #43 — templates/NOTES.txt.

The rule from the approved plan was that a NOTES.txt repeating the values is
worthless, so this one prints what an operator would otherwise look up in the
templates: the rendered URL (or the port-forward command when the Ingress is
off, plus the reason ingress.domain stays required — it is
CORE_DEFAULT_DOMAIN), the two op:// refs together with the exact field names
the 1Password items must carry ("connection-url" and "server-secret", because
the operator names the Secret keys after the item's fields), and the traps of
this chart: the setup page hands the super administrator to whoever reaches
the URL first, migrations run inside the startup probe's window (computed
from the effective probe values), a database outage leaves the pod running
and NotReady because liveness deliberately uses "/", the upload ceiling that
actually bites is the Ingress annotation and not the app's fixed 500mb, /tmp
is an emptyDir counted against the ephemeral-storage limit (computed) so an
oversized upload evicts the pod, and the uploads PVC is an ordinary release
resource that "helm uninstall" deletes. Conditional sections cover scaleDown
/ replicas: 0, more than one replica against the single ReadWriteOnce claim,
and a set zipline.env. No domain is baked into the chart; every host is
rendered from the values, examples use example.com.

Part of #157 — multiplyQuantity.

The null-safe fallbacks pass values through fromYaml, which parses every
number as float64, and Go's "%v" switches float64 to exponential notation
from about 1e6 upwards: a bare "1048576" arrived as "1.048576e+06" and the
render aborted on the suffix check. This is the canonical correction agreed
for all charts, taken over verbatim with this chart's prefix — the input and
the non-integer product now go through a formatNumber helper, and the
toYaml/fromYaml round trip is not touched, since it is not the cause.

Measured against ci/zipline/test-values.yaml on the chart's only resources
path, zipline.resources: before, both requests.memory=1048576 and
requests.ephemeralStorage=1048576 aborted with
  unsupported resource quantity suffix "e+06" in "1.048576e+06"
after, they render with the limits "3145728", while the 65536 fallback probe
still yields 196608 unchanged. Rendered manifests are byte-identical to the
previous version for the default values.
2026-08-29 00:10:31 +02:00
JK-Helper [BOT] 52a02c5472 Merge pull request #179 from jk-cluster/feat/voucher-vault-notes-and-157
voucher-vault: exponential-notation fix and a NOTES.txt (6.1.0+up1.30.1)
2026-08-28 22:09:26 +00:00
JK-Helper [BOT] 0da0fef872 Merge pull request #177 from jk-cluster/feat/template-chart-notes-and-157
template-chart: NOTES.txt and the naked-integer render fix (4.1.0+upxxx)
2026-08-28 22:05:43 +00:00