3 Commits
Author SHA1 Message Date
1ce64d3567 feat(streamystats): add chart (#48778)
**Description**

⚒️ Fixes  #

**⚙️ Type of change**

- [x] ⚙️ Feature/App addition
- [ ] 🪛 Bugfix
- [ ] ⚠️ Breaking change
- [ ] 🔃 Refactor of current code
- [ ] 📜 Documentation Changes

**🧪 How Has This Been Tested?**

Tested on a personal Talos/k8s 1.35.4 cluster, deployed directly with
`helm install`. Both Deployments reach `Ready`, CNPG primary reaches
`Ready`, the `vector` extension is enabled by the job-server's startup
migrations, HTTP probes pass, external HTTPS through nginx-ingress +
cert-manager returns the StreamyStats UI.

**📃 Notes:**

New chart for StreamyStats
(https://github.com/fredrikburmester/streamystats) — watch-history
aggregator for Jellyfin, Emby and Plex.

Two workloads sharing one CNPG cluster:
- `main` — Next.js front-end on port 3000
- `job-server` — sync engine on port 3005 that runs the database
migrations on startup (per upstream v2.18.0 release notes)

Pinned to `appVersion: 2.18.0` with specific digests for both images.

The chart is published as OCI; no test cluster is required to pull
dependencies.

**✔️ Checklist:**

- [x] ⚖️ My code follows the style guidelines of this project
- [x] 👀 I have performed a self-review of my own code
- [x] #️⃣ I have commented my code, particularly in hard-to-understand
areas
- [x] 📄 I have made changes to the documentation
- [x] 🧪 I have added tests to this description that prove my fix is
effective or that my feature works
- [x] ⬆️ I increased versions for any altered app according to semantic
versioning
- [x] I made sure the title starts with `feat(chart-name):`,
`fix(chart-name):`, `chore(chart-name):`, `docs(chart-name):` or
`fix(docs):`

** App addition**

- [x] 🖼️ I have added an icon in the Chart's root directory called
`icon.webp`
---

---------

Signed-off-by: Brioche <niah-niah@hotmail.fr>
Signed-off-by: Alfred Göppel <43101280+alfi0812@users.noreply.github.com>
Co-authored-by: n0PainNoBrioche <22093195+n0PainNoBrioche@users.noreply.github.com>
Co-authored-by: Alfred Göppel <43101280+alfi0812@users.noreply.github.com>
2026-06-10 15:13:20 +02:00
34d960facc feat(affine): promote to stable (#48763)
**Description**

⚒️ Fixes  #

**⚙️ Type of change**

- [x] ⚙️ Feature/App addition
- [ ] 🪛 Bugfix
- [ ] ⚠️ Breaking change (fix or feature that would cause existing
functionality to not work as expected)
- [ ] 🔃 Refactor of current code
- [ ] 📜 Documentation Changes

**🧪 How Has This Been Tested?**

Tested on my personal Talos/k8s cluster before this PR. The HelmRelease
is wired up in Flux at:


https://github.com/n0PainNoBrioche/brioche-cloud/tree/main/clusters/main/kubernetes/apps/affine

Verified on a k8s 1.35.4 single-node cluster with Longhorn storage:
- Flux `HelmRelease` reconciled cleanly, including the install-time
`affine-migration` init-container
- CNPG `Cluster` reaches `Ready` with both primary and replica instance
up; the `vectors` (pgvector) extension is enabled on the primary
(`SELECT extname FROM pg_extension;` lists `vectors`)
- Main `affine` pod reaches `Ready`, HTTP probes on `/` (port 3010)
succeed
- External HTTPS access works through nginx-ingress + cert-manager
(`affine.exemple.com` returns the AFFiNE web UI)
- PVCs `affine-config` and `affine-storage` are bound and mounted on
both the main and init containers (NFS, in my setup)
- Migration init-container (`type: init`) successfully applies the
schema
- `affine-server-external-url` is built correctly as `<scheme>://<host>`
when `affine.serverHost` is set

The chart is published as OCI; no test cluster is required to pull
dependencies.

**📃 Notes:**

Promotes the AFFiNE chart from `incubator/` to `stable/` now that it's
been reviewed, tested on a real cluster, and the initial `add new chart`
PR has merged.

Specific changes to `Chart.yaml`:
- `truecharts.org/train: incubator` → `stable`
- `trueforge.org/train: incubator` → `stable`
- `home: https://truecharts.org/charts/incubator/affine` →
`charts/stable/affine`
- `sources[2]`: same path swap
- `version: 0.1.1` → `1.0.0` (first stable release)
- `appVersion: 0.26.7` (matches the image the bot picked up; same digest
as `0.26.3`)
- `incubator/affine/` removed

**✔️ Checklist:**

- [x] ⚖️ My code follows the style guidelines of this project
- [x] 👀 I have performed a self-review of my own code
- [x] #️⃣ I have commented my code, particularly in hard-to-understand
areas
- [x] 📄 I have made changes to the documentation (none needed —
values.yaml unchanged)
- [x] 🧪 I have added tests to this description that prove my fix is
effective or that my feature works
- [x] ⬆️ I increased versions for any altered app according to semantic
versioning (0.1.1 → 1.0.0 for the chart)
- [x] I made sure the title starts with `feat(chart-name):`,
`fix(chart-name):`, `chore(chart-name):`, `docs(chart-name):` or
`fix(docs):`

** App addition**

If this PR is an app addition please make sure you have done the
following.

- [x] 🖼️ I have added an icon in the Chart's root directory called
`icon.png`
*(icon is `icon.webp`; the daily CI transcodes the webp → strips the
png. The `icon.webp` and `icon-small.webp` files in the chart root are
what the catalog uses.)*

---

Co-authored-by: n0PainNoBrioche <22093195+n0PainNoBrioche@users.noreply.github.com>
2026-06-04 14:49:48 +02:00
90b8975464 feat(affine) add new chart (#48656)
**Description**

⚒️ Fixes  #

**⚙️ Type of change**

- [x] ⚙️ Feature/App addition
- [ ] 🪛 Bugfix
- [ ] ⚠️ Breaking change (fix or feature that would cause existing
functionality to not work as expected)
- [ ] 🔃 Refactor of current code
- [ ] 📜 Documentation Changes

**🧪 How Has This Been Tested?**

Installed on a personal Talos/k8s cluster (k8s 1.33) with the local
chart path:
- `helm dependency update` and `helm lint` pass
- CNPG operator installed via the `cloudnative-pg` upstream chart
- `helm install` with single-node CNPG (`cluster.instances: 1`,
`cluster.singleNode: true`) and a generated `cnpg.main.password`
- Verified:
- migration init-container (`affine-install-affine-migration`) runs
`node ./scripts/self-host-predeploy.js` to completion
- CNPG `Cluster` reaches `Ready`, the `vectors` extension is enabled
(`SELECT extname FROM pg_extension;` lists `vectors`)
  - main `affine` pod reaches `Ready`, TCP probes on port 3010 succeed
- external HTTPS access works through nginx-ingress + cert-manager
(`affine.domain.com` returns the AFFiNE web UI)
- PVCs `affine-config` and `affine-storage` are bound and mounted on
both the main and init containers
- `affine-server-external-url` is correctly built as `<scheme>://<host>`
when `affine.serverHost` is set

The chart is published as OCI; no test cluster is required to pull
dependencies.

**📃 Notes:**

- New chart for **AFFiNE** (https://github.com/toeverything/AFFiNE) —
open-source, all-in-one workspace (docs, whiteboards, tasks).
- Image: `ghcr.io/toeverything/affine:stable` pinned by digest.
- Dependencies:
  - `common` 29.3.4 (shared library)
  - `valkey` 2.3.2 (aliased `redis`) — required by upstream
- CNPG with `type: vectors` and `pgVersion: 16` — required by upstream
(uses pgvector)
- The upstream image runs as root and writes under `/root/.affine/...`.
The chart's `securityContext` keeps root + capabilities, and the comment
in `values.yaml` tells users to set `pod-security.kubernetes.io/enforce:
baseline` (or `privileged`) on the namespace. `restricted` PSS is not
supported.
- Migration is handled as an `initContainer` with `type: install` (runs
only on install), executing `node ./scripts/self-host-predeploy.js` —
same script as the official `affine_migration` compose service. It
mounts the same `storage` and `config` PVCs as the main container.
- The `affine-server-external-url` env var is built from
`affine.serverHost` + `affine.useHttps` so the URL always carries a
scheme (upstream validates this).
- README links reference `stable/affine` (forward-looking) even though
the chart is currently in `incubator/affine`; the path will match once
promoted.
- Icon is in `.webp` (192px source converted with `cwebp`), no `.png` is
shipped because the `.helmignore` and the daily CI both expect
`icon.webp` / `icon-small.webp`.

**✔️ Checklist:**

- [x] ⚖️ My code follows the style guidelines of this project
- [x] 👀 I have performed a self-review of my own code
- [x] #️⃣ I have commented my code, particularly in hard-to-understand
areas (`values.yaml` has inline comments for the securityContext and the
external URL logic)
- [x] 📄 I have made changes to the documentation (`README.md` + comments
in `values.yaml`)
- [ ] 🧪 I have added tests to this description that prove my fix is
effective or that my feature works
- [ ] ⬆️ I increased versions for any altered app according to semantic
versioning
- [x] I made sure the title starts with `feat(chart-name):`,
`fix(chart-name):`, `chore(chart-name):`, `docs(chart-name):` or
`fix(docs):`

** App addition**

If this PR is an app addition please make sure you have done the
following.

- [x] 🖼️ I have added an icon in the Chart's root directory called
`icon.png`

---

---------

Signed-off-by: Alfred Göppel <43101280+alfi0812@users.noreply.github.com>
Co-authored-by: n0PainNoBrioche <22093195+n0PainNoBrioche@users.noreply.github.com>
Co-authored-by: Alfred Göppel <43101280+alfi0812@users.noreply.github.com>
2026-06-03 15:13:07 +02:00