From 1ce64d356774ade66785020162e922f7a239a69d Mon Sep 17 00:00:00 2001 From: Brioche Date: Wed, 10 Jun 2026 15:13:20 +0200 Subject: [PATCH] feat(streamystats): add chart (#48778) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit **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 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> --- charts/incubator/streamystats/.helmignore | 32 ++++++ charts/incubator/streamystats/Chart.yaml | 42 +++++++ charts/incubator/streamystats/README.md | 3 + charts/incubator/streamystats/icon-small.webp | Bin 0 -> 506 bytes charts/incubator/streamystats/icon.webp | Bin 0 -> 2784 bytes .../streamystats/templates/NOTES.txt | 1 + .../streamystats/templates/common.yaml | 1 + charts/incubator/streamystats/values.yaml | 104 ++++++++++++++++++ 8 files changed, 183 insertions(+) create mode 100644 charts/incubator/streamystats/.helmignore create mode 100644 charts/incubator/streamystats/Chart.yaml create mode 100644 charts/incubator/streamystats/README.md create mode 100644 charts/incubator/streamystats/icon-small.webp create mode 100644 charts/incubator/streamystats/icon.webp create mode 100644 charts/incubator/streamystats/templates/NOTES.txt create mode 100644 charts/incubator/streamystats/templates/common.yaml create mode 100644 charts/incubator/streamystats/values.yaml diff --git a/charts/incubator/streamystats/.helmignore b/charts/incubator/streamystats/.helmignore new file mode 100644 index 00000000000..feb7464da6f --- /dev/null +++ b/charts/incubator/streamystats/.helmignore @@ -0,0 +1,32 @@ +# Patterns to ignore when building packages. +# This supports shell glob matching, relative path matching, and +# negation (prefixed with !). Only one pattern per line. +.DS_Store +# Common VCS dirs +.git/ +.gitignore +.bzr/ +.bzrignore +.hg/ +.hgignore +.svn/ +# Common backup files +*.swp +*.bak +*.tmp +*~ +# Various IDEs +.project +.idea/ +*.tmproj +.vscode/ +# OWNERS file for Kubernetes +OWNERS +# helm-docs templates +*.gotmpl +# docs folder +/docs +# icon +icon.png +icon.webp +icon-small.webp diff --git a/charts/incubator/streamystats/Chart.yaml b/charts/incubator/streamystats/Chart.yaml new file mode 100644 index 00000000000..5363d3dbbd9 --- /dev/null +++ b/charts/incubator/streamystats/Chart.yaml @@ -0,0 +1,42 @@ +annotations: + artifacthub.io/links: |- + - name: support + url: https://discord.com/invite/tVsPTHWTtr + truecharts.org/train: incubator + trueforge.org/category: media + trueforge.org/max_helm_version: "4.1" + trueforge.org/max_kubernetes_version: 1.35.0 + trueforge.org/min_helm_version: "3.14" + trueforge.org/train: incubator +apiVersion: v2 +appVersion: 2.18.0 +dependencies: + - name: common + version: 29.3.4 + repository: oci://oci.trueforge.org/truecharts + condition: "" + alias: "" + tags: [] + import-values: [] +deprecated: false +description: Streamystats aggregates and visualizes watch history from Jellyfin, Emby and Plex. +home: https://truecharts.org/charts/stable/streamystats +icon: https://truecharts.org/img/hotlink-ok/chart-icons/streamystats.webp +keywords: + - streamystats + - jellyfin + - emby + - plex + - stats +kubeVersion: '>=1.33.0-0' +maintainers: + - name: TrueCharts + email: info@truecharts.org + url: https://truecharts.org +name: streamystats +sources: + - https://github.com/fredrikburmester/streamystats + - https://github.com/trueforge-org/truecharts/tree/master/charts/stable/streamystats + - https://ghcr.io/fredrikburmester/streamystats-nextjs +type: application +version: 0.1.0 diff --git a/charts/incubator/streamystats/README.md b/charts/incubator/streamystats/README.md new file mode 100644 index 00000000000..2b8cc49d247 --- /dev/null +++ b/charts/incubator/streamystats/README.md @@ -0,0 +1,3 @@ +--- +title: README +--- diff --git a/charts/incubator/streamystats/icon-small.webp b/charts/incubator/streamystats/icon-small.webp new file mode 100644 index 0000000000000000000000000000000000000000..a2cceaf7e9a7a5bc285ef9a457297ce3bb2e2fbe GIT binary patch literal 506 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