Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,8 @@

## Unreleased

## 0.9.0-rc.13

- Removed the privately operated telemetry receiver and internal statistics dashboard from the public source repository. Client-side opt-in telemetry remains unchanged.
- Fixed rollback and rollback disposal when a locally retained image digest belongs to a different repository alias. New rollback points retain the Docker image ID, while RC12 checkpoints can recover the image by digest.

Expand Down
6 changes: 3 additions & 3 deletions README.de.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
<h1>Docker Update Manager – Container Pilot</h1>
<p><strong>Moderne deutsche Weboberfläche zur kontrollierten Prüfung und Installation von Docker-Image-Updates.</strong></p>
<p>
<img alt="Version 0.9.0 RC12" src="https://img.shields.io/badge/Version-0.9.0--rc.12-d97706">
<img alt="Version 0.9.0 RC13" src="https://img.shields.io/badge/Version-0.9.0--rc.13-d97706">
<img alt="Node.js 24" src="https://img.shields.io/badge/Node.js-24-339933?logo=nodedotjs&logoColor=white">
<img alt="Docker" src="https://img.shields.io/badge/Docker-Compose-2496ed?logo=docker&logoColor=white">
<img alt="Oberfläche Deutsch" src="https://img.shields.io/badge/Oberfläche-Deutsch-d97706">
Expand All @@ -18,7 +18,7 @@

Der Schwerpunkt liegt auf einem nachvollziehbaren Update-Workflow mit **konfigurierbaren Prüfintervallen, Freigabe pro Container, optionaler Sofortinstallation und automatischem Rollback**. Bei Images mit einem festen Tag prüft Container Pilot zusätzlich, ob ein `latest`-Tag vorhanden ist. In der Weboberfläche kann bewusst zwischen einem Update des bestehenden Tags und einem Wechsel auf `latest` entschieden werden. Die Automatik wechselt niemals selbstständig den Tag.

> **Projektstatus:** Version 0.9.0-rc.12 ist ein Release Candidate. Die Update-Engine besitzt Healthcheck-Validierung, Aktionssperren, Self-Updates und Docker-Integrationstests. Vor dem Stable-Release ist ein kontrollierter Praxistest mit den eigenen Stacks vorgesehen.
> **Projektstatus:** Version 0.9.0-rc.13 ist ein Release Candidate. Die Update-Engine besitzt Healthcheck-Validierung, Aktionssperren, Self-Updates und Docker-Integrationstests. Vor dem Stable-Release ist ein kontrollierter Praxistest mit den eigenen Stacks vorgesehen.

## Einblick

Expand Down Expand Up @@ -205,7 +205,7 @@ Die ausführliche Dokumentation wird zunächst auf Englisch unter [`docs/`](docs

### Beim Testen des Release Candidates helfen

RC12 auf einer unkritischen Arbeitslast ausführen und die Erfahrungen teilen: Der [Testleitfaden](docs/testing.md) beschreibt die wichtigsten Szenarien. Reproduzierbare Fehler bitte über [GitHub Issues](https://github.com/DeepZone/container-pilot/issues/new/choose) melden; allgemeine Testergebnisse und Fragen gehören in [GitHub Discussions](https://github.com/DeepZone/container-pilot/discussions).
RC13 auf einer unkritischen Arbeitslast ausführen und die Erfahrungen teilen: Der [Testleitfaden](docs/testing.md) beschreibt die wichtigsten Szenarien. Reproduzierbare Fehler bitte über [GitHub Issues](https://github.com/DeepZone/container-pilot/issues/new/choose) melden; allgemeine Testergebnisse und Fragen gehören in [GitHub Discussions](https://github.com/DeepZone/container-pilot/discussions).

## Lizenz und Copyright

Expand Down
6 changes: 3 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
<p>A Docker update manager with a Web UI, per-container policies, health checks, and automatic rollback.</p>
<p><strong>A safer Watchtower alternative focused on control and recovery.</strong></p>
<p>
<img alt="Version 0.9.0 RC12" src="https://img.shields.io/badge/version-0.9.0--rc.12-d97706">
<img alt="Version 0.9.0 RC13" src="https://img.shields.io/badge/version-0.9.0--rc.13-d97706">
<img alt="Docker Compose" src="https://img.shields.io/badge/Docker-Compose-2496ed?logo=docker&logoColor=white">
<img alt="AMD64 and ARM64" src="https://img.shields.io/badge/platform-amd64%20%7C%20arm64-2496ed">
<img alt="MIT License" src="https://img.shields.io/badge/license-MIT-7c3aed">
Expand Down Expand Up @@ -119,7 +119,7 @@ Published multi-architecture images are available from:
ghcr.io/deepzone/container-pilot
```

- Complete version tags such as `0.9.0-rc.12` are fixed release references and must never be reused.
- Complete version tags such as `0.9.0-rc.13` are fixed release references and must never be reused.
- Release candidates use the `rc` channel once published by the release workflow.
- `latest`, major, and minor aliases are reserved for stable releases.
- Successful builds from `main` use the moving `edge` tag and a commit-specific `sha-*` tag. They are development builds, not releases.
Expand Down Expand Up @@ -156,7 +156,7 @@ Contributions are welcome. Read [CONTRIBUTING.md](CONTRIBUTING.md) before openin

### Help test the release candidate

Run RC12 on a non-critical workload and share what you learn. Use the [testing guide](docs/testing.md), report reproducible defects through [GitHub Issues](https://github.com/DeepZone/container-pilot/issues/new/choose), and share broader test results or questions in [GitHub Discussions](https://github.com/DeepZone/container-pilot/discussions).
Run RC13 on a non-critical workload and share what you learn. Use the [testing guide](docs/testing.md), report reproducible defects through [GitHub Issues](https://github.com/DeepZone/container-pilot/issues/new/choose), and share broader test results or questions in [GitHub Discussions](https://github.com/DeepZone/container-pilot/discussions).

Do not publish credentials, tokens, private image names, internal addresses, or complete state files in issues. Report vulnerabilities according to [SECURITY.md](SECURITY.md).

Expand Down
2 changes: 1 addition & 1 deletion compose.yml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
services:
container-pilot:
image: ${CP_IMAGE:-ghcr.io/deepzone/container-pilot:0.9.0-rc.12}
image: ${CP_IMAGE:-ghcr.io/deepzone/container-pilot:0.9.0-rc.13}
container_name: container-pilot
restart: unless-stopped
init: true
Expand Down
2 changes: 1 addition & 1 deletion docs/installation.md
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ Then open `https://YOUR-DOCKER-HOST:3080`. See [HTTPS and reverse proxy](reverse
The Compose file defaults to the current release candidate until the first stable release exists. To select an explicit published image without editing the file:

```bash
CP_IMAGE=ghcr.io/deepzone/container-pilot:0.9.0-rc.12 docker compose up -d
CP_IMAGE=ghcr.io/deepzone/container-pilot:0.9.0-rc.13 docker compose up -d
```

After a stable release is published, select the stable channel with `CP_IMAGE=ghcr.io/deepzone/container-pilot:latest` and `CP_SELF_UPDATE_CHANNEL=stable`. The `latest` tag is never published for a release candidate.
Expand Down
4 changes: 2 additions & 2 deletions docs/releases.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,13 +2,13 @@

[Documentation index](../README.md) · [Installation](installation.md)

Container Pilot uses [Semantic Versioning](https://semver.org/). Release candidates use tags such as `v0.9.0-rc.12`; stable releases use tags such as `v1.0.0`.
Container Pilot uses [Semantic Versioning](https://semver.org/). Release candidates use tags such as `v0.9.0-rc.13`; stable releases use tags such as `v1.0.0`.

## Channels

| Git tag | Published image tags | Intended use |
| --- | --- | --- |
| `v0.9.0-rc.12` | `0.9.0-rc.12`, `rc` | controlled release-candidate testing |
| `v0.9.0-rc.13` | `0.9.0-rc.13`, `rc` | controlled release-candidate testing |
| `v1.2.3` | `1.2.3`, `1.2`, `1`, `latest`, `stable` | stable installations |
| push to `main` | `edge`, `sha-<commit>` | development testing only |

Expand Down
4 changes: 2 additions & 2 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "container-pilot",
"version": "0.9.0-rc.12",
"version": "0.9.0-rc.13",
"private": true,
"type": "module",
"scripts": {
Expand Down
2 changes: 1 addition & 1 deletion site/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -86,7 +86,7 @@ <h2>Start with a non-critical workload.</h2>
docker compose pull
docker compose up -d</code></pre>
<p>Open <code>http://YOUR-DOCKER-HOST:3080</code>, sign in as <code>admin</code> with the generated secret, and change the password after the first login.</p>
<div class="actions"><a class="primary" href="https://github.com/DeepZone/container-pilot/blob/main/docs/installation.md">Installation guide</a><a href="https://github.com/DeepZone/container-pilot/blob/main/docs/testing.md">Help test RC12</a></div>
<div class="actions"><a class="primary" href="https://github.com/DeepZone/container-pilot/blob/main/docs/installation.md">Installation guide</a><a href="https://github.com/DeepZone/container-pilot/blob/main/docs/testing.md">Help test RC13</a></div>
</section>
</main>
<footer><span>Container Pilot · Copyright © 2026 NoiSens Media</span><span><a href="https://github.com/DeepZone/container-pilot">Source</a> · <a href="https://github.com/DeepZone/container-pilot/issues">Issues</a> · <a href="https://github.com/DeepZone/container-pilot/discussions">Discussions</a></span></footer>
Expand Down
10 changes: 5 additions & 5 deletions src/public/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -4,13 +4,13 @@
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1">
<title>Container Pilot</title>
<link rel="icon" href="logo.png?v=0.9.0-rc.12" type="image/png">
<link rel="stylesheet" href="app.css?v=0.9.0-rc.12">
<link rel="icon" href="logo.png?v=0.9.0-rc.13" type="image/png">
<link rel="stylesheet" href="app.css?v=0.9.0-rc.13">
</head>
<body>
<section id="loginView" class="login">
<form id="loginForm" class="panel">
<img class="loginLogo" src="logo.png?v=0.9.0-rc.12" alt="Container Pilot Logo">
<img class="loginLogo" src="logo.png?v=0.9.0-rc.13" alt="Container Pilot Logo">
<h1>Container Pilot</h1><p data-i18n="tagline"></p>
<label><span data-i18n="username"></span><input name="username" autocomplete="username" required></label>
<label><span data-i18n="password"></span><input name="password" type="password" autocomplete="current-password" required></label>
Expand All @@ -22,7 +22,7 @@ <h1>Container Pilot</h1><p data-i18n="tagline"></p>
<div id="app" hidden>
<header class="appHeader">
<div class="headerTop">
<div class="brand"><img src="logo.png?v=0.9.0-rc.12" alt="Container Pilot Logo"><div><h1>Container Pilot</h1><p data-i18n="tagline"></p></div></div>
<div class="brand"><img src="logo.png?v=0.9.0-rc.13" alt="Container Pilot Logo"><div><h1>Container Pilot</h1><p data-i18n="tagline"></p></div></div>
<div class="accountMenu"><span id="who"></span><select data-language aria-label="Language"><option value="en">English</option><option value="de">Deutsch</option></select><button id="logout" class="quietButton" data-i18n="signOut"></button></div>
</div>
<nav class="mainNav" aria-label="Main navigation">
Expand Down Expand Up @@ -83,6 +83,6 @@ <h1>Container Pilot</h1><p data-i18n="tagline"></p>
<div id="watchtowerList"></div>
<div class="dialogActions"><button id="reloadWatchtower" type="button" data-i18n="refresh"></button><button id="importWatchtower" type="button" class="primary" data-i18n="importSelected"></button></div>
</dialog>
<script type="module" src="app.js?v=0.9.0-rc.12"></script>
<script type="module" src="app.js?v=0.9.0-rc.13"></script>
</body>
</html>
Loading