Compare commits
86 Commits
7cf0ac8a52
...
revert-306
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
3807f42ad8 | ||
|
|
88c22562c0 | ||
|
|
d303089c5e | ||
|
|
26e15e15e1 | ||
|
|
d139e977bf | ||
|
|
0206ccaf34 | ||
|
|
443d93c739 | ||
|
|
dacc4abef9 | ||
|
|
c0bb781e6b | ||
|
|
dcc21988e3 | ||
|
|
47363725ea | ||
|
|
b42a6ac3aa | ||
|
|
f61b3b95d3 | ||
|
|
15a2abe451 | ||
|
|
4c1038916d | ||
|
|
71bbdb0929 | ||
|
|
41f0863702 | ||
|
|
8fec8556e8 | ||
|
|
3ec897fa38 | ||
|
|
5a4d7b2f8c | ||
|
|
b519002cea | ||
|
|
bad72b9451 | ||
|
|
4028564991 | ||
|
|
096db771fc | ||
|
|
58e98fb63c | ||
|
|
40d0401ccd | ||
|
|
883b38cacc | ||
|
|
80821a7d9a | ||
|
|
e7f8c37695 | ||
|
|
88faf503fb | ||
|
|
b88c5c5826 | ||
|
|
daa146a444 | ||
|
|
cda4232fa1 | ||
|
|
194f220224 | ||
|
|
be69aed455 | ||
|
|
502800f9bf | ||
|
|
1ea89fc150 | ||
|
|
69efa09f54 | ||
|
|
ae1f85229b | ||
|
|
3dbf317fa0 | ||
|
|
2c42b37819 | ||
|
|
358f6da616 | ||
|
|
2273c360fc | ||
|
|
9443356b36 | ||
|
|
500c083c5e | ||
|
|
e06b6d1c68 | ||
|
|
660982e641 | ||
|
|
38eac4c510 | ||
|
|
b97824acfc | ||
|
|
6d78111022 | ||
|
|
626991ec4d | ||
|
|
439f1e0e8f | ||
|
|
f2fef2e816 | ||
|
|
3089be5346 | ||
|
|
55f20e87b7 | ||
|
|
147ebeb3bc | ||
|
|
620dadf8fa | ||
|
|
7bfa34980b | ||
|
|
7fa4b08359 | ||
|
|
8338f5767c | ||
|
|
6424f68cff | ||
|
|
fe392aba1a | ||
|
|
287e95e5ab | ||
|
|
edf585e652 | ||
|
|
aa85189f69 | ||
|
|
d79cb11c50 | ||
|
|
81d10f3be8 | ||
|
|
49c6fbca2d | ||
|
|
8ad14ad6ce | ||
|
|
05f394d511 | ||
|
|
92ee1438dd | ||
|
|
c51c4c00a0 | ||
|
|
2ed1fdcdc6 | ||
|
|
c2bb8209ba | ||
|
|
d807435165 | ||
|
|
116131efd4 | ||
|
|
c66c41b596 | ||
|
|
ac19165c2f | ||
|
|
11706236ca | ||
|
|
b53dd0556e | ||
|
|
2135aa10f2 | ||
|
|
15c9da9fb3 | ||
|
|
8b742240b2 | ||
|
|
962c3b736d | ||
|
|
e8dc044d99 | ||
|
|
4e79ac84e5 |
@@ -33,8 +33,20 @@ Triage first, then one of two paths:
|
||||
the plan → implement → simplify → Codex reviews the code → **simplify again** → PR → resolve
|
||||
comments → verify in production → report.
|
||||
|
||||
Escalate mid-flight if a light task grows — touches a default, needs a new script or service, or
|
||||
reveals a deeper problem.
|
||||
Before implementing, on **either** path, ask yourself the proportionality question and answer
|
||||
it in the plan (a one-line plan, for a light task) — in writing, naming the smaller version you
|
||||
rejected and why:
|
||||
|
||||
> What is the smallest thing that solves this? What would you delete from what I just proposed?
|
||||
> If it had to be written in ten lines, in the idiom of the code it sits beside, what would be
|
||||
> lost — and is any of that a case I have actually demonstrated?
|
||||
|
||||
Escalate mid-flight if a light task grows — touches a default, needs a new script or service,
|
||||
reveals a deeper problem, or turns out to need more than the one file once you have honestly
|
||||
answered that question. A light task never skips it; it skips **Codex** only while the answer
|
||||
stays inside one file. Adding a **new file or a new mechanism** puts it on the full loop, however
|
||||
small the diff looks — a version bump and its CHANGELOG entry are release bookkeeping, not a new
|
||||
file for this purpose, and never trigger it on their own.
|
||||
|
||||
**Standing rule:** ship the simplest solution that works, and build it out of what already
|
||||
exists — a `.templates/` module, an existing cont-init script, the pattern a sibling add-on
|
||||
@@ -113,6 +125,16 @@ plan:
|
||||
Levels 4-6 need a reason that survives being said out loud ("upstream has no knob for this, and I
|
||||
checked" is one; "it felt cleaner" is not) and mean full loop.
|
||||
|
||||
**Full loop adds Codex to the proportionality question already asked above** — put it to Codex as
|
||||
a numbered question of its own, with the smaller alternative sketched out for it to argue for.
|
||||
Every other question in the loop asks what could go wrong, which only ever argues for more code;
|
||||
this is the one place that pushes the other way, and it is worthless unless asked outright — see
|
||||
`references/codex-review.md`. Nothing is built yet at this step, so "test" means against the real
|
||||
requirement, not against the other candidate — sketch the smaller one and check it against what
|
||||
the add-on actually needs; that sketch is what you go on to implement if it holds up, not one of
|
||||
two things you build. A sketch costs minutes and settles the argument with a measurement instead
|
||||
of a preference.
|
||||
|
||||
Attack your own plan before implementing:
|
||||
- What does this do on a host **unlike this one** — no GPU, small `/dev/shm`, aarch64, a VM?
|
||||
- What happens on **upgrade** to someone who configured this by hand?
|
||||
@@ -123,7 +145,8 @@ Attack your own plan before implementing:
|
||||
where that input arrives (the standing rule above) and go and look, before you write it.
|
||||
|
||||
Full loop only, before writing code: get Codex's independent read on the plan, delegated as above —
|
||||
`references/codex-review.md` has the invocation and how to write the prompt.
|
||||
`references/codex-review.md` has the invocation and how to write the prompt. The proportionality
|
||||
question above goes in that prompt every time, and in the step 6 prompt too.
|
||||
|
||||
## 4. Implement
|
||||
|
||||
@@ -145,7 +168,7 @@ path.
|
||||
|
||||
## 5. Simplify
|
||||
|
||||
Six questions over your own diff, before anyone else reads it:
|
||||
Seven questions over your own diff, before anyone else reads it:
|
||||
|
||||
- **Level** — did the diff stay at the ladder level chosen in step 3, or creep up one?
|
||||
- **Deletion** — can this be solved by deleting instead of adding?
|
||||
@@ -153,6 +176,10 @@ Six questions over your own diff, before anyone else reads it:
|
||||
- **Reuse** — does any hunk reimplement what `.templates/`, another script in this add-on, or a
|
||||
sibling add-on already does? If a future add-on hits this problem, will it find one way to solve
|
||||
it or two? Fold near-duplicates in, or justify the divergence in the PR body.
|
||||
- **Idiom** — does this look like the code it sits beside? The same kind of job done two ways in
|
||||
one file costs every later reader more than the nicer of the two ways saves. Reuse asks whether
|
||||
the mechanism already exists; Idiom asks whether you wrote yours the way the neighbours are
|
||||
written.
|
||||
- **Depth** — is this a special case bolted onto shared infrastructure? Fix the shared mechanism
|
||||
instead once more than one add-on hits it; generalising from a single case is how bespoke
|
||||
designs get built, so below that bar the special case is the right call.
|
||||
@@ -177,6 +204,12 @@ you have now demonstrated, or one you have merely been told about? Taking a
|
||||
correctness objection often deletes the code that made it necessary, and a fix that collapses back
|
||||
to fewer lines than you started the review with is the normal outcome, not a suspicious one.
|
||||
|
||||
Then ask the proportionality question again, of the diff this time — it is cheap, and by now
|
||||
there is real code to point at rather than a plan. This is where "build the smaller one and test
|
||||
both" is actually free: the larger candidate already exists as the diff, so sketch the smaller
|
||||
alternative and diff its output against the shipped code on the same inputs, the way #3061 was
|
||||
settled (`references/simplify.md`) — rather than against the requirement alone.
|
||||
|
||||
These edits land after step 4's checks already ran, so re-run them: `scripts/validate.sh <addon>
|
||||
--vs-master` plus the behavioural tests, over the final diff. Deleting a branch is exactly the
|
||||
kind of edit that leaves a stray `fi` behind.
|
||||
|
||||
@@ -27,6 +27,10 @@ codex exec --model gpt-5.6-sol --sandbox read-only --skip-git-repo-check \
|
||||
- **Plan review (step 3):** include the files to read, your measurements **with numbers**, the
|
||||
proposed changes, and explicit instructions to challenge you. Ask direct questions ("is this
|
||||
really add-on-fixable?", "give the precise flag set") rather than "review this".
|
||||
- **The proportionality question, in both reviews, as a numbered question of its own:** "is this
|
||||
the simplest way possible, and what exactly would you delete?" Sketch the smaller alternative in
|
||||
the prompt and ask it to argue for that, and quote the repo's standing simplicity rule so it has
|
||||
the bar to hold you to. Ask for lines and functions to delete, not a direction.
|
||||
- **Code review (step 6):** point it at `git diff origin/master...HEAD` plus the reasoning behind
|
||||
each hunk. Ask specifically what breaks: upgrade paths, hosts unlike this one, users who
|
||||
configured things by hand. Ask directly whether a simpler mechanism would achieve the same
|
||||
@@ -41,3 +45,8 @@ confirmations with the same scepticism as its objections — especially about th
|
||||
|
||||
**Its objections only ever argue for more code** — it is asked what could go wrong, never whether
|
||||
the branch it wants is reachable. Sort them before writing anything; SKILL.md step 6 is that pass.
|
||||
|
||||
**Unprompted it will never say "this is too much".** Asked outright it will, bluntly and usefully:
|
||||
on PR #3061 it answered "delete all 309 lines" of a helper both its earlier reviews had passed
|
||||
without comment. Expect it to reverse an earlier position when you ask it to re-examine one — a
|
||||
stance it drops that easily was never strongly held, which is itself the answer.
|
||||
|
||||
@@ -30,6 +30,17 @@ Being able to build the complicated thing is not a reason to.
|
||||
It took the maintainer asking "is this the simplest way possible?" to run the pass that step 6
|
||||
now requires.
|
||||
|
||||
- The immich updater fix (issue #3060, PR #3061) initially proposed a **309-line Python registry
|
||||
client** to read one OCI label, into a script whose neighbouring `dockerhub` branch does the same kind of
|
||||
job in a handful of inline `curl | jq` lines. Both the plan review and the code review passed
|
||||
it, because both were asked what could break rather than what it should cost. Asked "is this the
|
||||
simplest way possible?", Codex answered "delete all 309 lines"; the inline version came to 21
|
||||
and was measured to return byte-identical output on all five images. About a third of what went
|
||||
was defending cases never observed in this repo — an architecture mismatch, a hostile label, an
|
||||
unsupported registry — each of which already failed closed on its own. Second time the
|
||||
maintainer has had to ask the question, which is why step 3 now asks it before any code exists
|
||||
and step 5 asks whether the hunk looks like its neighbours.
|
||||
|
||||
## Where SKILL.md step 5's questions get hard
|
||||
|
||||
**Deletion is not automatically the safe direction.** The `/dev/shm` case in `evidence.md` is a
|
||||
|
||||
10
.github/stargazer_countries.csv
vendored
@@ -250,6 +250,7 @@ F4bsi,Germany,
|
||||
Fabaderheld,Austria,
|
||||
Fabeuss,France,
|
||||
Fabian-Eigenherd,Germany,
|
||||
Fabiot9,,2026-09-13
|
||||
Faithfinder,Canada,
|
||||
FallsSteven,,2026-08-10
|
||||
Felitendo,Germany,
|
||||
@@ -471,6 +472,7 @@ MNDani,,2026-08-10
|
||||
MTHarden,United States,
|
||||
MYLE-01,New Zealand,
|
||||
MaBeniu,,2026-08-10
|
||||
Maboroshi0327,,2026-09-13
|
||||
MachinaDev,,2026-08-10
|
||||
Madelena,United States,
|
||||
MagicMau,,2026-08-10
|
||||
@@ -515,6 +517,7 @@ Mofx-01,,2026-08-10
|
||||
Mokdeze,,2026-08-10
|
||||
MondoGao,United States,
|
||||
Moosh-be,Belgium,
|
||||
Moozzuzz,,2026-09-13
|
||||
MrAct1on,United States,
|
||||
MrCraigen,,2026-08-10
|
||||
MrHacky,,2026-08-10
|
||||
@@ -952,6 +955,7 @@ austinmccalley,,2026-08-10
|
||||
autodeck,United Kingdom,
|
||||
aviadlevy,,2026-08-10
|
||||
aviv926,,2026-08-10
|
||||
axelburks,United States,2026-09-13
|
||||
axute,Germany,
|
||||
azerioxal,United States,
|
||||
azure1922,,2026-08-10
|
||||
@@ -1043,6 +1047,7 @@ brettmiller,United States,
|
||||
brewston,,2026-08-10
|
||||
brianalexander,,2026-08-10
|
||||
brianm71,,2026-08-10
|
||||
brietman,,2026-09-13
|
||||
brittek,Australia,
|
||||
brokec,,2026-08-10
|
||||
brunerm99,,2026-08-10
|
||||
@@ -1451,6 +1456,7 @@ gh-residante,,2026-08-10
|
||||
ghisch,,2026-08-10
|
||||
gieljnssns,Belgium,
|
||||
gigatexel,,2026-08-10
|
||||
gilberth,Peru,2026-09-13
|
||||
gileswells,United States,
|
||||
giotec,,2026-08-10
|
||||
git-mdumont,,
|
||||
@@ -1771,6 +1777,7 @@ ldec,,2026-08-10
|
||||
ldkdev,Viet Nam,
|
||||
le-pet,,2026-08-10
|
||||
lead0r,,2026-08-10
|
||||
leaskovski,,2026-09-13
|
||||
legovaer,Belgium,
|
||||
legusha,,2026-08-10
|
||||
lehnerpat,,2026-08-10
|
||||
@@ -2001,6 +2008,8 @@ najdias,Portugal,
|
||||
nalditopr,,2026-08-10
|
||||
nana4rider,Japan,
|
||||
naor1,Israel,
|
||||
narmod,,2026-09-13
|
||||
nascentt,,2026-09-13
|
||||
natbrood,,2026-08-10
|
||||
nate-marshall,,2026-08-10
|
||||
nduest,Germany,
|
||||
@@ -2583,6 +2592,7 @@ w10devheh,,2026-08-10
|
||||
waako,,2026-08-10
|
||||
walduino,,2026-08-10
|
||||
wangjiezhe,China,
|
||||
wannes-wagemans,Belgium,2026-09-13
|
||||
warbringer,,2026-08-10
|
||||
wardbeyens,Belgium,
|
||||
warkurre86,,2026-08-10
|
||||
|
||||
|
BIN
.github/stargazer_map.png
vendored
|
Before Width: | Height: | Size: 66 KiB After Width: | Height: | Size: 67 KiB |
BIN
.github/stats.png
vendored
|
Before Width: | Height: | Size: 4.0 KiB After Width: | Height: | Size: 1.9 KiB |
BIN
.github/stats_addons.png
vendored
|
Before Width: | Height: | Size: 10 KiB After Width: | Height: | Size: 4.4 KiB |
2
.github/workflows/daily_ai_fix.yaml
vendored
@@ -125,7 +125,7 @@ jobs:
|
||||
|
||||
- name: Analyse and fix
|
||||
if: steps.batch.outputs.count != '0'
|
||||
uses: anthropics/claude-code-action@d75b94d5ad426cb8546e6628b6f5f19b84e5cce1 # v1
|
||||
uses: anthropics/claude-code-action@56cf60fde42f7b19c3abfd5c9c48b69a1288461f # v1
|
||||
with:
|
||||
claude_code_oauth_token: ${{ secrets.CLAUDE_CODE_OAUTH_TOKEN }}
|
||||
# Skip the OIDC -> Claude App token exchange. The scheduled path
|
||||
|
||||
2
.github/workflows/lint.yml
vendored
@@ -7,8 +7,6 @@ on:
|
||||
- "**/config.*"
|
||||
pull_request:
|
||||
branches: [ master ]
|
||||
schedule:
|
||||
- cron: "0 0 * * 0"
|
||||
workflow_dispatch:
|
||||
|
||||
permissions:
|
||||
|
||||
2
.github/workflows/on_claude_mention.yml
vendored
@@ -64,7 +64,7 @@ jobs:
|
||||
fetch-depth: 1
|
||||
|
||||
- name: Run Claude Code
|
||||
uses: anthropics/claude-code-action@d75b94d5ad426cb8546e6628b6f5f19b84e5cce1 # v1
|
||||
uses: anthropics/claude-code-action@56cf60fde42f7b19c3abfd5c9c48b69a1288461f # v1
|
||||
with:
|
||||
claude_code_oauth_token: ${{ secrets.CLAUDE_CODE_OAUTH_TOKEN }}
|
||||
# AI_PR_TOKEN, not GITHUB_TOKEN, so a PR Claude opens triggers CI.
|
||||
|
||||
2
.github/workflows/on_issue_approved.yaml
vendored
@@ -135,7 +135,7 @@ jobs:
|
||||
|
||||
- name: Execute the plan
|
||||
if: steps.bundle.outputs.has_plan == 'true'
|
||||
uses: anthropics/claude-code-action@d75b94d5ad426cb8546e6628b6f5f19b84e5cce1 # v1
|
||||
uses: anthropics/claude-code-action@56cf60fde42f7b19c3abfd5c9c48b69a1288461f # v1
|
||||
with:
|
||||
claude_code_oauth_token: ${{ secrets.CLAUDE_CODE_OAUTH_TOKEN }}
|
||||
# Skip the OIDC -> Claude App token exchange, which 401s whenever
|
||||
|
||||
2
.github/workflows/on_issues_ai_triage.yaml
vendored
@@ -166,7 +166,7 @@ jobs:
|
||||
id: classify
|
||||
if: github.event_name != 'issue_comment' || steps.claim.outputs.go == 'true'
|
||||
continue-on-error: true
|
||||
uses: anthropics/claude-code-action@d75b94d5ad426cb8546e6628b6f5f19b84e5cce1 # v1
|
||||
uses: anthropics/claude-code-action@56cf60fde42f7b19c3abfd5c9c48b69a1288461f # v1
|
||||
with:
|
||||
claude_code_oauth_token: ${{ secrets.CLAUDE_CODE_OAUTH_TOKEN }}
|
||||
# Without this the action falls back to the OIDC -> Claude App token
|
||||
|
||||
2
.github/workflows/on_pr_coderabbit.yml
vendored
@@ -79,7 +79,7 @@ jobs:
|
||||
|
||||
- name: Address CodeRabbit comments
|
||||
if: steps.claim.outputs.go == 'true'
|
||||
uses: anthropics/claude-code-action@d75b94d5ad426cb8546e6628b6f5f19b84e5cce1 # v1
|
||||
uses: anthropics/claude-code-action@56cf60fde42f7b19c3abfd5c9c48b69a1288461f # v1
|
||||
with:
|
||||
claude_code_oauth_token: ${{ secrets.CLAUDE_CODE_OAUTH_TOKEN }}
|
||||
# Skip the OIDC -> Claude App token exchange, which 401s whenever
|
||||
|
||||
4
.github/workflows/onpush_builder.yaml
vendored
@@ -306,7 +306,7 @@ jobs:
|
||||
id: build
|
||||
if: steps.info.outputs.build_arch == 'true' && steps.info.outputs.has_dockerfile == 'true'
|
||||
continue-on-error: true
|
||||
uses: home-assistant/builder/actions/build-image@2026.06.0
|
||||
uses: home-assistant/builder/actions/build-image@2026.09.0
|
||||
with:
|
||||
arch: ${{ matrix.arch }}
|
||||
cache-gha: "false"
|
||||
@@ -331,7 +331,7 @@ jobs:
|
||||
# else for the retry to be skipped from.
|
||||
- name: Build ${{ matrix.addon }} add-on (retry after failed attempt)
|
||||
if: steps.build.outcome == 'failure'
|
||||
uses: home-assistant/builder/actions/build-image@2026.06.0
|
||||
uses: home-assistant/builder/actions/build-image@2026.09.0
|
||||
with:
|
||||
arch: ${{ matrix.arch }}
|
||||
cache-gha: "false"
|
||||
|
||||
2
.gitignore
vendored
@@ -0,0 +1,2 @@
|
||||
# Bytecode of the python helpers in the addons, which rootfs/ copies into the image
|
||||
__pycache__/
|
||||
|
||||
@@ -1,4 +1,8 @@
|
||||
- Migrate legacy add-on configuration map names to current app configuration terminology.
|
||||
## 2026.09 (2026-09-12)
|
||||
|
||||
- New `source: container` for addons that build `FROM` an image published by someone else. The version is read from the `org.opencontainers.image.version` label of the exact image reference in `updater.json`, instead of from the releases of the application's own repository. Written against `ghcr.io`; an image with no such label leaves the addon untouched
|
||||
- `source: container` also records the manifest digest in `upstream_digest` and rebuilds when it moves, so a publisher republishing the same version under a new image is no longer invisible
|
||||
## 2026.08 (2026-08-01)
|
||||
|
||||
- Addon versions written in config.yaml now always comply with Home Assistant versioning: an upstream tag Home Assistant cannot order (`version-bf9e0b4f`, `ubuntu-2026-06-01`, ...) or would sort as older (`1.2.3-2`, `1.2.3+4`) no longer lands in config.yaml. The addon number is incremented instead, while the raw upstream tag stays in updater.json so the same release is never published twice
|
||||
|
||||
@@ -67,12 +67,46 @@ You can add the following tags in the file :
|
||||
- repository: 'name/repo' coming from github
|
||||
- paused: true # Pauses the updates
|
||||
- slug: the slug name from your addon
|
||||
- source: dockerhub/github,gitlab,bitbucket,pip,hg,sf,website-feed,local,helm_chart,wiki,system,wp,codeberg (Codeberg is supported via its Gitea API, which is configured automatically)
|
||||
- upstream_repo: name/repo, example is 'linuxserver/docker-emby'
|
||||
- source: container/dockerhub/github,gitlab,bitbucket,pip,hg,sf,website-feed,local,helm_chart,wiki,system,wp,codeberg (Codeberg is supported via its Gitea API, which is configured automatically)
|
||||
- upstream_repo: name/repo, example is 'linuxserver/docker-emby'. With `source: container` it is instead a full image reference, example is 'ghcr.io/imagegenius/immich:3'
|
||||
- upstream_version: automatically populated, corresponds to the current upstream version referenced in the addon
|
||||
- dockerhub_by_date: in dockerhub, uses the last_update date instead of the version
|
||||
- dockerhub_list_size: in dockerhub, how many containers to consider for latest version
|
||||
|
||||
### Addons built on someone else's image
|
||||
|
||||
An addon that does not build the application itself, but builds `FROM` an image a third party
|
||||
publishes, must publish the version that image holds and not the newest release of the
|
||||
application. `ghcr.io/imagegenius/immich:3` is a rebuild of immich lagging its upstream by days
|
||||
to weeks: tracking `immich-app/immich` published a version the addon did not contain, and left
|
||||
the addon with no reason to rebuild once the image finally caught up.
|
||||
|
||||
`source: container` reads the version out of the image itself. Set `upstream_repo` to the exact
|
||||
image reference used in `build.json`, tag included:
|
||||
|
||||
```json
|
||||
{
|
||||
"source": "container",
|
||||
"upstream_repo": "ghcr.io/imagegenius/immich:3"
|
||||
}
|
||||
```
|
||||
|
||||
The version comes from the image's `org.opencontainers.image.version` label, read from the first
|
||||
linux image the tag publishes, and the addon is left alone when there is no label to read. Written
|
||||
against `ghcr.io`, which serves anonymous pull tokens from `https://ghcr.io/token`; a registry
|
||||
authenticating differently, such as Docker Hub, yields no version and the addon is skipped.
|
||||
|
||||
The manifest digest is recorded next to the version, in `upstream_digest`, and the addon is
|
||||
rebuilt when either of the two moves. A publisher rebuilding the same version, for a base image
|
||||
security fix or a packaging revision, repoints the tag at new content under an unchanged label,
|
||||
and the digest is the only thing that says so. `upstream_digest` is populated automatically; seed
|
||||
it by hand when migrating an addon to this source, or the first run counts the unknown digest as
|
||||
a change and rebuilds once for nothing.
|
||||
|
||||
The label is metadata the publisher chooses. Some images carry none, and some record their own
|
||||
packaging revision rather than the application version, so this source is opt-in per addon and
|
||||
never a default.
|
||||
|
||||
### Addon version numbering
|
||||
|
||||
The `version` written in the addon `config.yaml` is the one Home Assistant compares to decide whether an update is available. Home Assistant hides the update when it can order both versions and the new one is not strictly newer (`1.2.3` -> `1.2.3-2` is a semver pre-release, so it is *older*), and it cannot order tags such as `version-bf9e0b4f` or `ubuntu-2026-06-01` at all.
|
||||
|
||||
@@ -30,4 +30,4 @@ schema:
|
||||
slug: updater
|
||||
udev: true
|
||||
url: https://github.com/alexbelgium/hassio-addons/tree/master/addons_updater
|
||||
version: "2026.08"
|
||||
version: "2026.09"
|
||||
|
||||
@@ -109,6 +109,7 @@ for f in */; do
|
||||
EXCLUDE_TEXT="${EXCLUDE_TEXT:-zzzzzzzzzzzzzzzz}"
|
||||
PAUSED=$(jq -r .paused updater.json)
|
||||
DATE="$(date "$DATE_FORMAT")"
|
||||
LASTDIGEST=""
|
||||
BYDATE=$(jq -r .dockerhub_by_date updater.json)
|
||||
|
||||
# Number of elements to check in dockerhub
|
||||
@@ -195,6 +196,45 @@ for f in */; do
|
||||
&& LASTVERSION="$LASTVERSION-$DATE"
|
||||
LOGINFO="... $SLUG : bydate is true, version is $LASTVERSION" && if [ "$VERBOSE" = true ]; then bashio::log.info "$LOGINFO"; fi
|
||||
|
||||
elif [[ "$SOURCE" = container ]]; then
|
||||
# The addon builds FROM an image someone else publishes rather
|
||||
# than from the application itself, so the version to publish is
|
||||
# the one inside that image and not the newest release of the
|
||||
# application repository, which the image can lag by weeks
|
||||
LOGINFO="... Source is container" && if [ "$VERBOSE" = true ]; then bashio::log.info "$LOGINFO"; fi
|
||||
|
||||
ACCEPT="application/vnd.oci.image.index.v1+json,application/vnd.docker.distribution.manifest.list.v2+json,application/vnd.oci.image.manifest.v1+json,application/vnd.docker.distribution.manifest.v2+json"
|
||||
REGISTRY="${UPSTREAM%%/*}"
|
||||
IMAGE="${UPSTREAM#*/}"
|
||||
IMAGEREPO="${IMAGE%:*}"
|
||||
BASEURL="https://$REGISTRY/v2/$IMAGEREPO"
|
||||
HEADERS="$(mktemp)"
|
||||
|
||||
# The digest the tag resolves to is the one the registry answers
|
||||
# with, and it moves whenever anything behind the tag does
|
||||
TOKEN="$(curl -f -L -s "https://$REGISTRY/token?scope=repository:$IMAGEREPO:pull&service=$REGISTRY" | jq -r '.token // empty')" || true
|
||||
MANIFEST="$(curl -f -L -s -D "$HEADERS" -H "Authorization: Bearer $TOKEN" -H "Accept: $ACCEPT" "$BASEURL/manifests/${IMAGE##*:}")" || true
|
||||
LASTDIGEST="$(sed -n 's/^[Dd]ocker-[Cc]ontent-[Dd]igest:[[:space:]]*//p' "$HEADERS" | tr -d '\r')"
|
||||
rm -f "$HEADERS"
|
||||
|
||||
# A multi architecture tag answers with an index, whose first
|
||||
# image is read: the attestations buildx attaches alongside
|
||||
# describe no architecture and hold no image configuration
|
||||
CHILD="$(echo "$MANIFEST" | jq -r 'first(.manifests[]? | select(.platform.os == "linux" and .platform.architecture != "unknown") | .digest) // empty')" || true
|
||||
if [ -n "$CHILD" ]; then
|
||||
MANIFEST="$(curl -f -L -s -H "Authorization: Bearer $TOKEN" -H "Accept: $ACCEPT" "$BASEURL/manifests/$CHILD")" || true
|
||||
fi
|
||||
|
||||
# Publishers record the application version of an image in its
|
||||
# OCI label, which is what the addon actually ships
|
||||
LASTVERSION="$(curl -f -L -s -H "Authorization: Bearer $TOKEN" "$BASEURL/blobs/$(echo "$MANIFEST" | jq -r '.config.digest // empty')" \
|
||||
| jq -r '.config.Labels["org.opencontainers.image.version"] // empty')" || true
|
||||
|
||||
if [ -z "$LASTVERSION" ] || [ -z "$LASTDIGEST" ]; then
|
||||
bashio::log.warning "... $SLUG : no version could be read from $UPSTREAM, skipping"
|
||||
continue
|
||||
fi
|
||||
|
||||
else
|
||||
|
||||
# Use source as upstream
|
||||
@@ -344,8 +384,19 @@ for f in */; do
|
||||
continue
|
||||
fi
|
||||
|
||||
# What the addon was last built against. A container source adds the
|
||||
# digest of the image: a publisher rebuilding the same version, for a
|
||||
# base image fix or a packaging revision, repoints the tag at new
|
||||
# content under an unchanged label, and only the digest says so
|
||||
CURRENTSTATE="$CURRENT"
|
||||
LASTSTATE="$LASTVERSION"
|
||||
if [[ "$SOURCE" = container ]]; then
|
||||
CURRENTSTATE="$CURRENT $(jq -r '.upstream_digest // ""' updater.json)"
|
||||
LASTSTATE="$LASTVERSION $LASTDIGEST"
|
||||
fi
|
||||
|
||||
# Update if needed
|
||||
if [ "${CURRENT}" != "${LASTVERSION}" ]; then
|
||||
if [ "${CURRENTSTATE}" != "${LASTSTATE}" ]; then
|
||||
LOGINFO="... $SLUG : update from ${CURRENT} to ${LASTVERSION}" && if [ "$VERBOSE" = true ]; then bashio::log.info "$LOGINFO"; fi
|
||||
|
||||
ADDONFOLDER="/data/${BASENAME}/${SLUG}"
|
||||
@@ -405,7 +456,9 @@ for f in */; do
|
||||
|
||||
# Replace upstream tag and date, keeping the file intact if jq
|
||||
# fails as a truncated updater.json would lose the addon source
|
||||
if ! UPDATERJSON="$(jq --arg version "$LASTVERSION" --arg date "$DATE" '.upstream_version = $version | .last_update = $date' "$ADDONFOLDER/updater.json")"; then
|
||||
if ! UPDATERJSON="$(jq --arg version "$LASTVERSION" --arg date "$DATE" --arg digest "${LASTDIGEST:-}" \
|
||||
'.upstream_version = $version | .last_update = $date | if $digest == "" then . else .upstream_digest = $digest end' \
|
||||
"$ADDONFOLDER/updater.json")"; then
|
||||
bashio::log.error "... $SLUG : updater.json could not be updated, reverting"
|
||||
git checkout -- "$ADDONFOLDER"
|
||||
continue
|
||||
|
||||
|
Before Width: | Height: | Size: 3.3 KiB After Width: | Height: | Size: 1.5 KiB |
|
Before Width: | Height: | Size: 2.4 KiB After Width: | Height: | Size: 1.2 KiB |
BIN
aurral/stats.png
|
Before Width: | Height: | Size: 2.7 KiB After Width: | Height: | Size: 1.4 KiB |
@@ -1,4 +1,7 @@
|
||||
|
||||
## 1.86.0 (2026-09-12)
|
||||
- Update to latest version from autobrr/autobrr (changelog : https://github.com/autobrr/autobrr/releases)
|
||||
|
||||
## 1.85.0 (2026-08-29)
|
||||
- Update to latest version from autobrr/autobrr (changelog : https://github.com/autobrr/autobrr/releases)
|
||||
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
|
||||
ARG BUILD_FROM
|
||||
ARG BUILD_VERSION
|
||||
ARG BUILD_UPSTREAM="1.85.0"
|
||||
ARG BUILD_UPSTREAM="1.86.0"
|
||||
FROM ${BUILD_FROM}
|
||||
|
||||
##################
|
||||
|
||||
@@ -108,4 +108,4 @@ schema:
|
||||
slug: autobrr
|
||||
udev: true
|
||||
url: https://github.com/alexbelgium/hassio-addons/tree/master/autobrr
|
||||
version: "1.85.0"
|
||||
version: "1.86.0"
|
||||
|
||||
|
Before Width: | Height: | Size: 3.0 KiB After Width: | Height: | Size: 1.4 KiB |
@@ -1,8 +1,8 @@
|
||||
{
|
||||
"last_update": "2026-08-29",
|
||||
"last_update": "2026-09-12",
|
||||
"repository": "alexbelgium/hassio-addons",
|
||||
"slug": "autborr",
|
||||
"source": "github",
|
||||
"upstream_repo": "autobrr/autobrr",
|
||||
"upstream_version": "1.85.0"
|
||||
"upstream_version": "1.86.0"
|
||||
}
|
||||
|
||||
BIN
baikal/stats.png
|
Before Width: | Height: | Size: 3.9 KiB After Width: | Height: | Size: 1.7 KiB |
|
Before Width: | Height: | Size: 3.3 KiB After Width: | Height: | Size: 1.6 KiB |
BIN
bazarr/stats.png
|
Before Width: | Height: | Size: 3.0 KiB After Width: | Height: | Size: 1.4 KiB |
|
Before Width: | Height: | Size: 2.7 KiB After Width: | Height: | Size: 1.4 KiB |
|
Before Width: | Height: | Size: 4.0 KiB After Width: | Height: | Size: 1.8 KiB |
@@ -1,3 +1,25 @@
|
||||
## 20260919 (18-09-2026)
|
||||
- Minor bugs fixed
|
||||
## 20260918 (18-09-2026)
|
||||
- Minor bugs fixed
|
||||
## 20260917.2 (17-09-2026)
|
||||
- Minor bugs fixed
|
||||
## 20260917.1 (17-09-2026)
|
||||
- Minor bugs fixed
|
||||
## 20260917 (17-09-2026)
|
||||
- Minor bugs fixed
|
||||
## 20260916.2 (16-09-2026)
|
||||
- Minor bugs fixed
|
||||
## 20260916.1 (16-09-2026)
|
||||
- Minor bugs fixed
|
||||
## 20260916 (16-09-2026)
|
||||
- Minor bugs fixed
|
||||
## 20260915 (15-09-2026)
|
||||
- Minor bugs fixed
|
||||
## 20260912.2 (12-09-2026)
|
||||
- Minor bugs fixed
|
||||
## 20260912 (12-09-2026)
|
||||
- Minor bugs fixed
|
||||
## 20260910.4 (11-09-2026)
|
||||
- Minor bugs fixed
|
||||
## 20260910.3 (11-09-2026)
|
||||
|
||||
@@ -127,5 +127,5 @@ slug: birdnet-go-dev
|
||||
udev: true
|
||||
url: https://github.com/alexbelgium/hassio-addons
|
||||
usb: true
|
||||
version: "20260910.4"
|
||||
version: "20260919"
|
||||
video: true
|
||||
|
||||
|
Before Width: | Height: | Size: 2.4 KiB After Width: | Height: | Size: 1.2 KiB |
|
Before Width: | Height: | Size: 3.0 KiB After Width: | Height: | Size: 1.5 KiB |
|
Before Width: | Height: | Size: 2.5 KiB After Width: | Height: | Size: 1.3 KiB |
|
Before Width: | Height: | Size: 4.7 KiB After Width: | Height: | Size: 1.9 KiB |
|
Before Width: | Height: | Size: 2.7 KiB After Width: | Height: | Size: 1.4 KiB |
|
Before Width: | Height: | Size: 2.9 KiB After Width: | Height: | Size: 1.4 KiB |
@@ -1,3 +1,6 @@
|
||||
|
||||
## 1.95.101-ls128 (2026-09-12)
|
||||
- Update to latest version from linuxserver/docker-brave (changelog : https://github.com/linuxserver/docker-brave/releases)
|
||||
- Migrate legacy add-on configuration map names to current app configuration terminology.
|
||||
|
||||
## 1.94.121-ls127 (2026-09-05)
|
||||
|
||||
@@ -69,5 +69,5 @@ slug: brave
|
||||
tmpfs: true
|
||||
udev: true
|
||||
url: https://github.com/alexbelgium/hassio-addons
|
||||
version: "1.94.121-ls127"
|
||||
version: "1.95.101-ls128"
|
||||
video: true
|
||||
|
||||
|
Before Width: | Height: | Size: 2.7 KiB After Width: | Height: | Size: 1.3 KiB |
@@ -1,9 +1,9 @@
|
||||
{
|
||||
"github_fulltag": "true",
|
||||
"last_update": "2026-09-05",
|
||||
"last_update": "2026-09-12",
|
||||
"repository": "alexbelgium/hassio-addons",
|
||||
"slug": "brave",
|
||||
"source": "github",
|
||||
"upstream_repo": "linuxserver/docker-brave",
|
||||
"upstream_version": "1.94.121-ls127"
|
||||
"upstream_version": "1.95.101-ls128"
|
||||
}
|
||||
|
||||
|
Before Width: | Height: | Size: 2.7 KiB After Width: | Height: | Size: 1.3 KiB |
@@ -1,3 +1,6 @@
|
||||
|
||||
## 2.56.7 (2026-09-12)
|
||||
- Update to latest version from browserless/chrome (changelog : https://github.com/browserless/chrome/releases)
|
||||
- Migrate legacy add-on configuration map names to current app configuration terminology.
|
||||
|
||||
## 2.56.3 (2026-09-05)
|
||||
|
||||
@@ -86,5 +86,5 @@ schema:
|
||||
slug: browserless_chrome
|
||||
udev: true
|
||||
url: https://github.com/alexbelgium/hassio-addons/tree/master/browserless_chrome
|
||||
version: "2.56.3"
|
||||
version: "2.56.7"
|
||||
webui: "[PROTO:ssl]://[HOST]:[PORT:3000]/docs"
|
||||
|
||||
|
Before Width: | Height: | Size: 3.3 KiB After Width: | Height: | Size: 1.6 KiB |
@@ -1,9 +1,9 @@
|
||||
{
|
||||
"github_tagfilter": "v",
|
||||
"last_update": "2026-09-05",
|
||||
"last_update": "2026-09-12",
|
||||
"repository": "alexbelgium/hassio-addons",
|
||||
"slug": "browserless_chrome",
|
||||
"source": "github",
|
||||
"upstream_repo": "browserless/chrome",
|
||||
"upstream_version": "2.56.3"
|
||||
"upstream_version": "2.56.7"
|
||||
}
|
||||
|
||||
|
Before Width: | Height: | Size: 3.1 KiB After Width: | Height: | Size: 1.4 KiB |
@@ -1,4 +1,7 @@
|
||||
|
||||
## 0.60.4 (2026-09-12)
|
||||
- Update to latest version from linuxserver/docker-changedetection.io (changelog : https://github.com/linuxserver/docker-changedetection.io/releases)
|
||||
|
||||
## 0.60.3 (2026-09-05)
|
||||
- Update to latest version from linuxserver/docker-changedetection.io (changelog : https://github.com/linuxserver/docker-changedetection.io/releases)
|
||||
|
||||
|
||||
@@ -34,4 +34,4 @@ schema:
|
||||
slug: changedetection.io
|
||||
udev: true
|
||||
url: https://github.com/alexbelgium/hassio-addons/tree/master/changedetection.io
|
||||
version: "0.60.3"
|
||||
version: "0.60.4"
|
||||
|
||||
|
Before Width: | Height: | Size: 3.0 KiB After Width: | Height: | Size: 1.4 KiB |
@@ -1,9 +1,9 @@
|
||||
{
|
||||
"github_fulltag": "false",
|
||||
"last_update": "2026-09-05",
|
||||
"last_update": "2026-09-12",
|
||||
"repository": "alexbelgium/hassio-addons",
|
||||
"slug": "changedetection.io",
|
||||
"source": "github",
|
||||
"upstream_repo": "linuxserver/docker-changedetection.io",
|
||||
"upstream_version": "0.60.3"
|
||||
"upstream_version": "0.60.4"
|
||||
}
|
||||
|
||||
@@ -1,3 +1,11 @@
|
||||
|
||||
## 07308545.8 (2026-09-12)
|
||||
- Update to latest version from aaddrick/claude-desktop-debian (changelog : https://github.com/aaddrick/claude-desktop-debian/releases)
|
||||
- Upstream tag : v3.2.4+claude1.52386.3
|
||||
|
||||
## 07308545.7 (2026-09-12)
|
||||
- Update to latest version from aaddrick/claude-desktop-debian (changelog : https://github.com/aaddrick/claude-desktop-debian/releases)
|
||||
- Upstream tag : v3.2.4+claude1.49585.0
|
||||
- Migrate legacy add-on configuration map names to current app configuration terminology.
|
||||
|
||||
## 07308545.6 (2026-09-05)
|
||||
|
||||
@@ -136,5 +136,5 @@ schema:
|
||||
slug: claude_desktop
|
||||
udev: true
|
||||
url: https://github.com/alexbelgium/hassio-addons
|
||||
version: "07308545.6"
|
||||
version: "07308545.8"
|
||||
video: true
|
||||
|
||||
|
Before Width: | Height: | Size: 2.5 KiB After Width: | Height: | Size: 1.3 KiB |
@@ -4,6 +4,6 @@
|
||||
"github_fulltag": true,
|
||||
"slug": "claude_desktop",
|
||||
"paused": false,
|
||||
"upstream_version": "v3.2.3+claude1.40609.1",
|
||||
"last_update": "2026-09-05"
|
||||
"upstream_version": "v3.2.4+claude1.52386.3",
|
||||
"last_update": "2026-09-12"
|
||||
}
|
||||
|
||||
|
Before Width: | Height: | Size: 2.6 KiB After Width: | Height: | Size: 1.3 KiB |
|
Before Width: | Height: | Size: 3.0 KiB After Width: | Height: | Size: 1.4 KiB |
@@ -1,3 +1,6 @@
|
||||
|
||||
## 2.3.0 (2026-09-12)
|
||||
- Update to latest version from ajslater/codex (changelog : https://github.com/ajslater/codex/releases)
|
||||
- Migrate legacy add-on configuration map names to current app configuration terminology.
|
||||
|
||||
## 2.2.11 (2026-08-29)
|
||||
|
||||
@@ -101,4 +101,4 @@ schema:
|
||||
slug: codex
|
||||
udev: true
|
||||
url: https://github.com/alexbelgium/hassio-addons
|
||||
version: "2.2.11"
|
||||
version: "2.3.0"
|
||||
|
||||
BIN
codex/stats.png
|
Before Width: | Height: | Size: 3.2 KiB After Width: | Height: | Size: 1.5 KiB |
@@ -1,9 +1,9 @@
|
||||
{
|
||||
"github_beta": "true",
|
||||
"last_update": "2026-08-29",
|
||||
"last_update": "2026-09-12",
|
||||
"repository": "alexbelgium/hassio-addons",
|
||||
"slug": "codex",
|
||||
"source": "github",
|
||||
"upstream_repo": "ajslater/codex",
|
||||
"upstream_version": "2.2.11"
|
||||
"upstream_version": "2.3.0"
|
||||
}
|
||||
|
||||
|
Before Width: | Height: | Size: 2.7 KiB After Width: | Height: | Size: 1.3 KiB |
@@ -1,4 +1,7 @@
|
||||
|
||||
## 0.38.15 (2026-09-12)
|
||||
- Update to latest version from frankieramirez/comicarr (changelog : https://github.com/frankieramirez/comicarr/releases)
|
||||
|
||||
## 0.38.7 (2026-09-05)
|
||||
- Update to latest version from frankieramirez/comicarr (changelog : https://github.com/frankieramirez/comicarr/releases)
|
||||
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
|
||||
ARG BUILD_FROM
|
||||
ARG BUILD_VERSION
|
||||
ARG BUILD_UPSTREAM="0.38.7"
|
||||
ARG BUILD_UPSTREAM="0.38.15"
|
||||
FROM ghcr.io/frankieramirez/comicarr:${BUILD_UPSTREAM}
|
||||
|
||||
##################
|
||||
|
||||
@@ -102,4 +102,4 @@ schema:
|
||||
slug: comicarr
|
||||
udev: true
|
||||
url: https://github.com/alexbelgium/hassio-addons/tree/master/comicarr
|
||||
version: "0.38.7"
|
||||
version: "0.38.15"
|
||||
|
||||
|
Before Width: | Height: | Size: 2.4 KiB After Width: | Height: | Size: 1.3 KiB |
@@ -1,10 +1,10 @@
|
||||
{
|
||||
"github_beta": "false",
|
||||
"github_fulltag": false,
|
||||
"last_update": "2026-09-05",
|
||||
"last_update": "2026-09-12",
|
||||
"repository": "alexbelgium/hassio-addons",
|
||||
"slug": "comicarr",
|
||||
"source": "github",
|
||||
"upstream_repo": "frankieramirez/comicarr",
|
||||
"upstream_version": "0.38.7"
|
||||
"upstream_version": "0.38.15"
|
||||
}
|
||||
|
||||
|
Before Width: | Height: | Size: 2.5 KiB After Width: | Height: | Size: 1.3 KiB |
|
Before Width: | Height: | Size: 3.4 KiB After Width: | Height: | Size: 1.7 KiB |
@@ -1,3 +1,6 @@
|
||||
|
||||
## 4.10.0.40 (2026-09-12)
|
||||
- Update to latest version from linuxserver/docker-emby (changelog : https://github.com/linuxserver/docker-emby/releases)
|
||||
- Migrate legacy add-on configuration map names to current app configuration terminology.
|
||||
|
||||
## 4.9.5.0 (2026-05-19)
|
||||
|
||||
@@ -121,5 +121,5 @@ schema:
|
||||
slug: emby
|
||||
udev: true
|
||||
url: https://github.com/alexbelgium/hassio-addons/tree/master/emby
|
||||
version: "4.9.5.0"
|
||||
version: "4.10.0.40"
|
||||
video: true
|
||||
|
||||
BIN
emby/stats.png
|
Before Width: | Height: | Size: 3.2 KiB After Width: | Height: | Size: 1.5 KiB |
@@ -1,9 +1,9 @@
|
||||
{
|
||||
"github_beta": "false",
|
||||
"last_update": "2026-05-19",
|
||||
"last_update": "2026-09-12",
|
||||
"repository": "alexbelgium/hassio-addons",
|
||||
"slug": "emby",
|
||||
"source": "github",
|
||||
"upstream_repo": "linuxserver/docker-emby",
|
||||
"upstream_version": "4.9.5.0"
|
||||
"upstream_version": "4.10.0.40"
|
||||
}
|
||||
|
||||
@@ -1,3 +1,6 @@
|
||||
|
||||
## 4.10.0.40 (2026-09-12)
|
||||
- Update to latest version from linuxserver/docker-emby (changelog : https://github.com/linuxserver/docker-emby/releases)
|
||||
- Migrate legacy add-on configuration map names to current app configuration terminology.
|
||||
|
||||
## 4.10.0.30 (2026-09-05)
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
|
||||
ARG BUILD_FROM
|
||||
ARG BUILD_VERSION
|
||||
ARG BUILD_UPSTREAM="4.10.0.30"
|
||||
ARG BUILD_UPSTREAM="4.10.0.40"
|
||||
FROM ${BUILD_FROM}
|
||||
|
||||
##################
|
||||
|
||||
@@ -122,5 +122,5 @@ schema:
|
||||
slug: emby_nas
|
||||
udev: true
|
||||
url: https://github.com/alexbelgium/hassio-addons/tree/master/emby
|
||||
version: "4.10.0.30"
|
||||
version: "4.10.0.40"
|
||||
video: true
|
||||
|
||||
|
Before Width: | Height: | Size: 2.8 KiB After Width: | Height: | Size: 1.4 KiB |
@@ -1,9 +1,9 @@
|
||||
{
|
||||
"github_beta": "true",
|
||||
"last_update": "2026-09-05",
|
||||
"last_update": "2026-09-12",
|
||||
"repository": "alexbelgium/hassio-addons",
|
||||
"slug": "emby",
|
||||
"source": "github",
|
||||
"upstream_repo": "linuxserver/docker-emby",
|
||||
"upstream_version": "4.10.0.30"
|
||||
"upstream_version": "4.10.0.40"
|
||||
}
|
||||
|
||||
|
Before Width: | Height: | Size: 3.5 KiB After Width: | Height: | Size: 1.6 KiB |
|
Before Width: | Height: | Size: 3.6 KiB After Width: | Height: | Size: 1.7 KiB |
@@ -1,3 +1,7 @@
|
||||
|
||||
## 4.4.28 (2026-09-12)
|
||||
- Update to latest version from ente/ente (changelog : https://github.com/ente/ente/releases)
|
||||
- Upstream tag : 1.7.29
|
||||
- Migrate legacy add-on configuration map names to current app configuration terminology.
|
||||
|
||||
## 4.4.27 (2026-09-05)
|
||||
|
||||
@@ -131,6 +131,6 @@ schema:
|
||||
slug: ente
|
||||
udev: true
|
||||
url: https://github.com/alexbelgium/hassio-addons
|
||||
version: "4.4.27"
|
||||
version: "4.4.28"
|
||||
video: true
|
||||
webui: http://[HOST]:[PORT:3000]
|
||||
|
||||
BIN
ente/stats.png
|
Before Width: | Height: | Size: 2.8 KiB After Width: | Height: | Size: 1.4 KiB |
@@ -1,9 +1,9 @@
|
||||
{
|
||||
"github_beta": "false",
|
||||
"last_update": "2026-09-05",
|
||||
"last_update": "2026-09-12",
|
||||
"repository": "alexbelgium/hassio-addons",
|
||||
"slug": "ente",
|
||||
"source": "github",
|
||||
"upstream_repo": "ente/ente",
|
||||
"upstream_version": "1.7.28"
|
||||
"upstream_version": "1.7.29"
|
||||
}
|
||||
|
||||
@@ -1,4 +1,12 @@
|
||||
|
||||
## 2026.09.12 (2026-09-12)
|
||||
- Update to latest version from charlocharlie/epicgames-freegames
|
||||
- Upstream tag : debian-2026-09-12
|
||||
|
||||
## 2026.09.11 (2026-09-11)
|
||||
- Update to latest version from charlocharlie/epicgames-freegames
|
||||
- Upstream tag : debian-2026-09-11
|
||||
|
||||
## 2026.08.29 (2026-08-29)
|
||||
- Update to latest version from charlocharlie/epicgames-freegames
|
||||
- Upstream tag : debian-2026-08-29
|
||||
|
||||
@@ -88,5 +88,5 @@ schema:
|
||||
slug: epicgamesfree
|
||||
udev: true
|
||||
url: https://github.com/alexbelgium/hassio-addons
|
||||
version: "2026.08.29"
|
||||
version: "2026.09.12"
|
||||
webui: "[PROTO:ssl]://[HOST]:[PORT:3000]"
|
||||
|
||||
|
Before Width: | Height: | Size: 3.4 KiB After Width: | Height: | Size: 1.6 KiB |
@@ -2,10 +2,10 @@
|
||||
"dockerhub_by_date": true,
|
||||
"dockerhub_list_size": 2,
|
||||
"github_exclude": "-",
|
||||
"last_update": "2026-08-29",
|
||||
"last_update": "2026-09-12",
|
||||
"repository": "alexbelgium/hassio-addons",
|
||||
"slug": "epicgamesfree",
|
||||
"source": "dockerhub",
|
||||
"upstream_repo": "charlocharlie/epicgames-freegames",
|
||||
"upstream_version": "debian-2026-08-29"
|
||||
"upstream_version": "debian-2026-09-12"
|
||||
}
|
||||
|
||||
|
Before Width: | Height: | Size: 3.5 KiB After Width: | Height: | Size: 1.6 KiB |
|
Before Width: | Height: | Size: 2.9 KiB After Width: | Height: | Size: 1.4 KiB |
|
Before Width: | Height: | Size: 2.7 KiB After Width: | Height: | Size: 1.3 KiB |
|
Before Width: | Height: | Size: 3.5 KiB After Width: | Height: | Size: 1.5 KiB |
|
Before Width: | Height: | Size: 4.1 KiB After Width: | Height: | Size: 1.8 KiB |
@@ -1,3 +1,6 @@
|
||||
|
||||
## 3.5.2 (2026-09-12)
|
||||
- Update to latest version from FlareSolverr/FlareSolverr (changelog : https://github.com/FlareSolverr/FlareSolverr/releases)
|
||||
|
||||
## 3.5.0 (2026-05-30)
|
||||
- Update to latest version from FlareSolverr/FlareSolverr (changelog : https://github.com/FlareSolverr/FlareSolverr/releases)
|
||||
|
||||
@@ -79,5 +79,5 @@ schema:
|
||||
slug: flaresolverr
|
||||
udev: true
|
||||
url: https://github.com/alexbelgium/hassio-addons
|
||||
version: "3.5.0"
|
||||
version: "3.5.2"
|
||||
webui: "[PROTO:ssl]://[HOST]:[PORT:8191]"
|
||||
|
||||
|
Before Width: | Height: | Size: 2.7 KiB After Width: | Height: | Size: 1.2 KiB |
@@ -1,8 +1,8 @@
|
||||
{
|
||||
"last_update": "2026-05-30",
|
||||
"last_update": "2026-09-12",
|
||||
"repository": "alexbelgium/hassio-addons",
|
||||
"slug": "flaresolverr",
|
||||
"source": "github",
|
||||
"upstream_repo": "FlareSolverr/FlareSolverr",
|
||||
"upstream_version": "3.5.0"
|
||||
"upstream_version": "3.5.2"
|
||||
}
|
||||
|
||||