Release v1.0.0 #1

Merged
AxonByteDev merged 4 commits from beta into main 2026-09-14 11:37:28 +00:00
Owner
  • refactor: Release-Weg auf das PatchPilot-Modell umgestellt
  • docs: Branch-Schutz für main muss Pushes zulassen
  • chore: Version 1.0.0 für v1.0.0-beta.1
  • fix: publish.sh brach beim allerersten Release wortlos ab
  • docs: Dokumentation als verlinkte Dateien statt im Wiki-Reiter
  • chore: Ignore-Listen abdichten und toten Code entfernen
  • chore: shellcheck-Hinweise im Einrichtungsskript ausräumen
  • chore: Skript für den ersten Push nach Forgejo
  • feat: Transmissionsdistanz (TD-Wert) an der Rolle
  • feat: Shop-Link an der Rolle zum Nachbestellen
  • feat: Muster-Etikett schon beim Einstellen der Vorlage
  • feat: stop.sh beendet alles, dev.sh räumt beim Start selbst auf
  • feat: Anycubic-Profile, Materialmerkmale an der Rolle und Filament-Finder
  • feat: Testserver im Netz erreichbar, --stop für die Docker-Variante
  • feat: Herstellerwerte über Profile statt über getrennte Materialarten
  • feat: Materialarten einzeln statt zusammengefasst, durchsuchbare Auswahllisten
  • feat: dev.sh startet FilaDex lokal, mit optionalem Testbestand
  • docs: Entscheidungen festhalten und offene Punkte auf die Zielhardware eingrenzen
  • feat: Oberfläche für die letzten Backend-Fähigkeiten
  • fix: Etikettenlayout passt sich der Breite an, i18n wird tatsächlich genutzt
  • feat: Export, Import, Release-Werkzeuge und Wiki
  • feat: Selbst-Update über einen Host-Watcher, Installer und systemd-Units
  • feat: Freigaben, Ausleihe, Preiskalkulator und Dashboard
  • feat: PWA, Offline-Verhalten und mobile Navigation
  • feat: Etiketten, QR-Deep-Link und Kamera-Scanner
  • feat: Verbrauch buchen, Historie und Trocknungsprotokoll
  • feat: Spulenverwaltung mit Berechnungen, Filtern und Fotos
  • feat: Stammdaten mit Herstellern, Materialarten und Profilen
  • feat: Datenmodell, Anmeldung und Benutzerverwaltung
  • chore: Projektgerüst mit FastAPI-Backend, React-Frontend und Docker
  • docs: Projektplan mit Phasenübersicht anlegen
- refactor: Release-Weg auf das PatchPilot-Modell umgestellt - docs: Branch-Schutz für main muss Pushes zulassen - chore: Version 1.0.0 für v1.0.0-beta.1 - fix: publish.sh brach beim allerersten Release wortlos ab - docs: Dokumentation als verlinkte Dateien statt im Wiki-Reiter - chore: Ignore-Listen abdichten und toten Code entfernen - chore: shellcheck-Hinweise im Einrichtungsskript ausräumen - chore: Skript für den ersten Push nach Forgejo - feat: Transmissionsdistanz (TD-Wert) an der Rolle - feat: Shop-Link an der Rolle zum Nachbestellen - feat: Muster-Etikett schon beim Einstellen der Vorlage - feat: stop.sh beendet alles, dev.sh räumt beim Start selbst auf - feat: Anycubic-Profile, Materialmerkmale an der Rolle und Filament-Finder - feat: Testserver im Netz erreichbar, --stop für die Docker-Variante - feat: Herstellerwerte über Profile statt über getrennte Materialarten - feat: Materialarten einzeln statt zusammengefasst, durchsuchbare Auswahllisten - feat: dev.sh startet FilaDex lokal, mit optionalem Testbestand - docs: Entscheidungen festhalten und offene Punkte auf die Zielhardware eingrenzen - feat: Oberfläche für die letzten Backend-Fähigkeiten - fix: Etikettenlayout passt sich der Breite an, i18n wird tatsächlich genutzt - feat: Export, Import, Release-Werkzeuge und Wiki - feat: Selbst-Update über einen Host-Watcher, Installer und systemd-Units - feat: Freigaben, Ausleihe, Preiskalkulator und Dashboard - feat: PWA, Offline-Verhalten und mobile Navigation - feat: Etiketten, QR-Deep-Link und Kamera-Scanner - feat: Verbrauch buchen, Historie und Trocknungsprotokoll - feat: Spulenverwaltung mit Berechnungen, Filtern und Fotos - feat: Stammdaten mit Herstellern, Materialarten und Profilen - feat: Datenmodell, Anmeldung und Benutzerverwaltung - chore: Projektgerüst mit FastAPI-Backend, React-Frontend und Docker - docs: Projektplan mit Phasenübersicht anlegen
Nach "Tag angelegt" war Schluss — kein Changelog, keine Rückfrage, kein Push,
kein Release. Ohne jede Fehlermeldung.

Ursache ist eine Zeile, die den vorherigen Tag sucht:

    VORHERIGER_TAG="$(git tag --sort=-v:refname | grep -v "^${TAG}$" | head -n 1)"

Beim ersten Release ist der eben angelegte Tag der einzige. grep filtert ihn
weg, findet nichts mehr und endet mit 1; pipefail reicht das an die Zuweisung
weiter, set -e beendet daraufhin das Skript. Ein leerer vorheriger Tag ist hier
aber die richtige Antwort und kein Fehler — der Zweig dafür stand zwei Zeilen
weiter unten schon bereit und wurde nie erreicht. Jetzt fängt `|| true` das ab.

Der Fehler konnte nur genau einmal auftreten: ab dem zweiten Release gibt es
einen vorherigen Tag.

Damit ein Abbruch nie wieder unkommentiert bleibt, meldet eine ERR-Falle die
Zeilennummer. Bewusst ohne `set -E` — damit erbt jede Kommandosubstitution die
Falle, und eine fehlgeschlagene Zuweisung meldet sich zweimal.

Der Release-Aufruf ist jetzt ein richtiges if/else statt A && B || C und nennt
die URL des angelegten Releases.

Geprüft in einem Wegwerf-Klon gegen ein lokales Fern-Repository: release 1.0.0
läuft durch bis "Fertig" — Merge beta -> main, Tag, Push, Rückmerge.
scripts/publish.ps1 hat den Fehler nicht; in PowerShell liefert Where-Object
ohne Treffer $null statt eines Fehlers.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Bisher pushte publish.sh beim Release direkt nach main. Das verträgt sich
nicht mit einem geschützten main-Branch — genau daran ist v1.0.0 gescheitert:
"Not allowed to push to protected branch main", mitten im Lauf, nach dem Tag.

PatchPilot löst das grundlegend anders, und der Weg ist übernommen:

1. Die Versionsnummer steht nur im Git-Tag. frontend/package.json bleibt
   dauerhaft auf 0.0.0, VERSION entsteht beim Build und ist in .gitignore, die
   Version erreicht den Frontend-Build über APP_VERSION. Damit unterscheidet
   sich keine einzige versionierte Datei zwischen beta und main — der bisherige
   Versions-Commit entfällt ersatzlos, und ein Merge kann gar nicht mehr
   kollidieren.

2. Nach main wird nie direkt gepusht. Der Weg dorthin führt über einen Pull
   Request von beta, gemergt wird im Browser. Danach wandert nur noch der Tag
   hinterher. Deshalb darf der Branch-Schutz auf main das Pushen komplett
   verbieten — die Einstellung, die den Release eben noch blockiert hat, ist
   jetzt die richtige.

Aus zwei Modi werden drei:

  publish.sh beta 1.3.0         v1.3.0-beta.N auf beta, Prerelease
  publish.sh release-pr 1.3.0   Pull Request beta -> main
  publish.sh release-tag 1.3.0  nach dem Merge: Tag, Release, beta abgleichen

Ohne Argumente fragt das Skript nach dem Modus. Releases tragen jetzt
target_commitish, sodass der Eintrag am richtigen Branch hängt. Der Changelog
zählt ab dem letzten finalen Tag statt ab dem letzten überhaupt — sonst listet
ein Release nur die Commits seit der letzten Beta.

Nebenbei zwei Fehlerquellen beseitigt:
- set -E war weggelassen, damit eine Meldung nicht doppelt erscheint. Damit
  starb aber jeder Fehler innerhalb einer Funktion wieder lautlos — genau die
  Klasse Fehler, um die es hier die ganze Zeit ging. Eine doppelte Zeile ist
  der kleinere Ärger.
- Ein nicht erreichbarer Server ist kein Ausnahmefall mehr: curl liefert über
  -w von selbst den Status 000, und beide Aufrufer melden verständlich, was
  schon durch ist und was noch fehlt.

publish.ps1 ist auf dasselbe Modell gebracht. Der Ablauf ist in einem
Wegwerf-Klon gegen ein lokales Fern-Repository durchgespielt: release-pr,
die Sperre von release-tag vor dem Merge, und release-tag danach — Tag im
Fern-Repo, main nie gepusht.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Sign in to join this conversation.
No reviewers
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
AxonByteDev/FilaDex!1
No description provided.