Rename the bridge to the forge service; this repository is the add-on

- bridge/ → forge/, module and binary ipcr-forge, image ghcr.io/yundera/ipcr-forge
  (was ipcr-forge-bridge); releases are plain vX.Y.Z tags (workflow image.yml)
- data folders $AppID/bridge/{state,secrets} → $AppID/forge/..., in-container /forge
- docs link to the engine (Yundera/ipcr) instead of relative paths; README
This commit is contained in:
Worph
2026-10-05 13:21:11 +00:00
parent 291564bf1d
commit 98ff2f5783
14 changed files with 169 additions and 128 deletions
+3 -3
View File
@@ -6,8 +6,8 @@
<title>IPCR Forge admin</title>
<link rel="icon" href="icon.png">
<!--
The forge's admin page: Gitea site administrators only (the bridge checks the session for the
page and for every API call). Everything goes through /admin/api/: the bridge's own endpoints
The forge's admin page: Gitea site administrators only (the forge service checks the session for the
page and for every API call). Everything goes through /admin/api/: the forge service's own endpoints
(repositories, key export) and IPCR's admin API behind /admin/api/ipcr/.
-->
<style>
@@ -233,7 +233,7 @@
var t = $("toast"); t.textContent = msg; t.style.display = "block";
clearTimeout(toast.t); toast.t = setTimeout(function () { t.style.display = "none"; }, ms || 4000);
}
// Every call: same origin, with the header the bridge requires on writes.
// Every call: same origin, with the header the forge service requires on writes.
function api(method, path, body) {
var opt = { method: method, headers: { "X-IPCR-Admin": "1" }, credentials: "same-origin", cache: "no-store" };
if (body !== undefined) { opt.headers["Content-Type"] = "application/json"; opt.body = JSON.stringify(body); }