chore(repo): Umzug nach Gitea — GitHub bleibt Klon, main von Hand gespiegelt (D95)
Zuhause ist künftig git.javagil.de/mi/werkbaum (origin); GitHub bleibt unter dem Remote `github` ein Klon, den scripts/push-github.sh mit `main` versorgt — nur vorwärts, nie erzwungen. Der Klon bleibt aus zwei gemessenen Gründen: Gitea sendet auf raw-Dateien kein Access-Control-Allow-Origin (nachgemessen an mi/werkdock), die ?sourceUrl=-Beispiellinks der READMEs müssen also auf raw.githubusercontent.com zeigen; und der Pages-Workflow lässt sich nicht mitnehmen. Footer, llms.txt und llms.md zeigen jetzt auf Gitea (Repo-Seite ohne Anmeldung lesbar, HTTP 200 geprüft); beide COMMIT_URL-Stellen (deploy-prod.sh und der Pages-Workflow) ziehen mit. deploy-prod.sh prüft origin und github getrennt und erinnert an das Spiegeln, statt selbst zu pushen. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5
parent
736e9c1d88
commit
29a217f892
@@ -17,6 +17,11 @@ the git history of `docs/examples/werkbaum.werkbaum`. A day can therefore carry
|
||||
a link without having a note (someone forgot to write one) — but never the
|
||||
reverse.
|
||||
|
||||
## 2026-09-03
|
||||
|
||||
- The project moved to its own Gitea at git.javagil.de — the footer's repository and version links point there now, and GitHub stays a clone carrying the very same commits
|
||||
- Every push is built by Werkator, the project's own CI, alongside the GitHub Pages build: backend and frontend as two named builds
|
||||
|
||||
## 2026-09-02
|
||||
|
||||
- Running the installed app and a browser tab side by side works now: text, names and earlier states live under their own storage key per document and deleting leaves a tombstone, so windows stop deleting each other's work
|
||||
|
||||
@@ -9089,3 +9089,58 @@ die Browser-Fläche war verborgen, getippt wurde per `value` + `input`
|
||||
D91-Nachtrag 9), und der Live-Feed ruht im dauerhaft verborgenen
|
||||
Automatisierungs-Tab (D76-Nachtrag 1) — dass B A's Zeile sieht, ist deshalb
|
||||
über die Antwort auf den eigenen PATCH gemessen, nicht über den Feed.
|
||||
|
||||
## D95 — Das Repo zieht nach Gitea; GitHub bleibt ein Klon, von Hand gespiegelt (2026-09-03)
|
||||
Werkbaum lag auf GitHub. Seit Werkator (die eigene CI, https://werkator.javagil.de)
|
||||
die Builds fährt und `werkdock` bereits auf `git.javagil.de` liegt, gehört auch
|
||||
Werkbaum dorthin: **`origin` ist jetzt `mi/werkbaum` auf Gitea**, GitHub bleibt
|
||||
als **Klon** unter dem Remote `github` stehen.
|
||||
|
||||
**Der Klon ist kein Andenken, sondern zwei gemessene Zwänge:**
|
||||
|
||||
- **CORS.** Die Beispiel-Links beider READMEs laden ihre Pläne per
|
||||
`?sourceUrl=` (D23) — und das geht nur, wenn die Quelle
|
||||
`Access-Control-Allow-Origin` sendet. Nachgemessen an
|
||||
`https://git.javagil.de/mi/werkdock/raw/branch/main/README.md` (mit
|
||||
`Origin:`-Header): HTTP 200, `Access-Control-Expose-Headers`, aber **kein
|
||||
`Access-Control-Allow-Origin`**. Ein Beispiel-Link auf Gitea liefe also
|
||||
genau in den Fehler, den D23 als häufigsten benennt. `raw.githubusercontent.com`
|
||||
sendet ihn (D24) — die Beispiel-Links bleiben deshalb dort.
|
||||
- **GitHub Pages.** Die „latest build“-Instanz (D16) ist ein
|
||||
Actions-Workflow und lässt sich nicht mitnehmen. Sie bleibt, und sie baut,
|
||||
sobald `main` auf dem Klon ankommt.
|
||||
|
||||
**Gespiegelt wird von Hand, und nur `main`** (`scripts/push-github.sh`).
|
||||
Feature-Branches und Tags bleiben in Gitea; was auf GitHub steht, ist der
|
||||
veröffentlichte Stand. Erwogen und verworfen: **ein `origin` mit zwei
|
||||
Push-URLs** (spiegelt bei jedem Push, auch bei Zwischenständen, und ein
|
||||
Fehler an einer der beiden Seiten bricht den Push) und der **Voll-Mirror**
|
||||
(`--mirror` löscht auf GitHub Branches, die in Gitea verschwunden sind — bei
|
||||
einem öffentlichen Klon die unhöflichste Variante).
|
||||
|
||||
**Der Deploy spiegelt nicht, er erinnert.** `scripts/deploy-prod.sh` prüft
|
||||
jetzt zweierlei getrennt: ob HEAD auf **origin (Gitea)** liegt — daran hängt
|
||||
der Footer-Versionslink — und ob er auf **github** liegt; fehlt das zweite,
|
||||
nennt es den Skript-Namen. Ausdrücklich so entschieden (Multiple-Choice): Ein
|
||||
Deploy, der nebenbei woanders hin pusht, tut mehr, als sein Name sagt.
|
||||
|
||||
**Nie erzwungen.** Liegt `github/main` nicht in der Historie von `main`,
|
||||
bricht das Spiegel-Script ab und zeigt `git log main..github/main`. Ein
|
||||
Force-Push auf einen Klon, den andere geklont haben, ist eine bewusste
|
||||
Handlung und keine Zeile in einem Hilfsskript.
|
||||
|
||||
**Die Links im Produkt zeigen auf Gitea** — Footer-Repo-Link und
|
||||
Footer-Versionslink (`…/commit/<sha>`, D16), `llms.txt` und `llms.md` (D43).
|
||||
Voraussetzung geprüft: Die Gitea-Instanz liefert Repo-Seite und API **ohne
|
||||
Anmeldung** (HTTP 200). Die SHAs sind auf beiden Seiten dieselben, der Link
|
||||
bleibt also auch für jemanden auflösbar, der vom Klon kommt. Beide
|
||||
`COMMIT_URL`-Stellen ziehen mit — `deploy-prod.sh` **und** der
|
||||
Pages-Workflow; das ist dieselbe Doppelpflege, die D16 schon für die
|
||||
`sed`-Regeln benannt hat.
|
||||
|
||||
**Werkator:** Die `gitea:`-Sektion der `.werkator.yml` nennt jetzt
|
||||
`git.javagil.de` / `mi` / `werkbaum` statt der GitHub-Platzhalter, und der
|
||||
beobachtete Klon `~/werkbaum` auf mih09 bekommt Gitea als `origin` — sonst
|
||||
sähe der Watcher neue Commits erst nach dem Spiegeln. **Status-Checks werden
|
||||
weiterhin nicht gepostet**, solange auf der Instanz kein Gitea-Token liegt;
|
||||
die Sektion ist bis dahin eine Beschriftung.
|
||||
|
||||
@@ -124,6 +124,8 @@
|
||||
- [^] #bld.backend.proxy: Apache passes /api/ on, in .htaccess (XS) %% measured: the P flag is allowed
|
||||
- [^] #bld.backend.remote: One command for everything on the server (S) %% remote <target> <action>
|
||||
- [^] #bld.backend.backup: Save the database, and prove it can be read back (XS)
|
||||
- [x] #bld.werkator: Also built by Werkator, the project's own CI (S) %% .werkator.yml, backend + frontend
|
||||
- [x] #bld.gitea: The repository lives on Gitea, GitHub stays a clone (S)
|
||||
- [-] #bld.ghpages: Deploy through a gh-pages branch (S) %% GitHub Actions instead
|
||||
- [-] #bld.gfonts: Fonts from Google (XS) %% self-hosted, no third-party request
|
||||
- [ ] #be: Backend (XL)
|
||||
@@ -853,6 +855,17 @@
|
||||
taken while the service runs can be torn. Stop, fetch, start again — and read
|
||||
the archive back before trusting it.
|
||||
|
||||
#bld.werkator
|
||||
Werkator, the project's own declarative CI, builds every push from a
|
||||
committed .werkator.yml — backend and frontend as two named builds. It builds
|
||||
and tests only; deploying stays with the scripts.
|
||||
|
||||
#bld.gitea
|
||||
The repository moved to Gitea; GitHub stays a clone that carries the
|
||||
published main. The clone is not sentiment: the Pages instance hangs off it,
|
||||
and so do the example links, which need a raw endpoint that sends CORS
|
||||
headers.
|
||||
|
||||
#bld.ghpages
|
||||
Rejected: the official Actions route needs no extra branch and no deploy
|
||||
key.
|
||||
|
||||
Reference in New Issue
Block a user