rename(547): the repo is FabledGrimoire, and no stray "scribe" is left
CI & Build / Python lint (push) Successful in 2s
CI & Build / Plugin hooks (push) Successful in 13s
CI & Build / TypeScript typecheck (push) Successful in 54s
CI & Build / integration (push) Successful in 1m1s
CI & Build / Python tests (push) Successful in 2m2s
CI & Build / Build & push image (push) Successful in 28s

The forge repo is now bvandeusen/FabledGrimoire. The plugin marketplace default,
the install commands in the docs and plugin README, the CI requirements title and
the example repo URLs in comments and tests follow it. docs/development.md now
names the image the build actually publishes, fabledgrimoire.

Two test names still said "scribes_own"; they now say "grimoires_own".

What still says scribe does so on purpose:
- the backup reader's accepted archive names and prefix;
- the label every stored secret is sealed under;
- the notes on keeping an old install's database names;
- the old migrations.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
2026-10-22 13:29:00 -04:00
co-authored by Claude Opus 5.5
parent e45e4cd063
commit a07547447f
15 changed files with 30 additions and 30 deletions
+1 -1
View File
@@ -45,7 +45,7 @@ class Config:
# per-instance via the Plugin marketplace setting.
PLUGIN_MARKETPLACE_URL: str = os.environ.get(
"PLUGIN_MARKETPLACE_URL",
"https://git.fabledsword.com/bvandeusen/FabledScribe.git",
"https://git.fabledsword.com/bvandeusen/FabledGrimoire.git",
)
# OIDC / OAuth2 SSO (e.g. Authentik)
+1 -1
View File
@@ -9,7 +9,7 @@ class RepoBinding(Base, TimestampMixin):
"""Maps a git repository to the Grimoire project it represents.
The SessionStart hook sends the working repo's normalized remote
(`repo_key`, e.g. ``git.fabledsword.com/bvandeusen/fabledscribe``) and the
(`repo_key`, e.g. ``git.fabledsword.com/bvandeusen/fabledgrimoire``) and the
server resolves it to a project — so the operator can work across many
repos/projects without pinning a project id in plugin config. The key is a
*stable identifier* (the git remote), not a dir-name heuristic.
+2 -2
View File
@@ -77,8 +77,8 @@ def location_matches(data: dict | None, parts: dict[str, str]) -> bool:
if all(
_path_matches((loc.get(key) or "").strip(), want)
if key == "path"
# Repo names are recorded free-form ("Grimoire" / "FabledScribe" /
# "fabledscribe") — case is never the distinguishing thing.
# Repo names are recorded free-form ("Grimoire" / "FabledGrimoire" /
# "fabledgrimoire") — case is never the distinguishing thing.
else (loc.get(key) or "").strip().lower() == want.lower()
if key == "repo"
else (loc.get(key) or "").strip() == want
+4 -4
View File
@@ -20,11 +20,11 @@ def normalize_repo_key(raw: str) -> str:
Collapses the equivalent clone URLs to one key, e.g.::
git@git.fabledsword.com:bvandeusen/FabledScribe.git
https://git.fabledsword.com/bvandeusen/fabledscribe.git
ssh://git@git.fabledsword.com:22/bvandeusen/fabledscribe
git@git.fabledsword.com:bvandeusen/FabledGrimoire.git
https://git.fabledsword.com/bvandeusen/fabledgrimoire.git
ssh://git@git.fabledsword.com:22/bvandeusen/fabledgrimoire
all normalize to ``git.fabledsword.com/bvandeusen/fabledscribe``.
all normalize to ``git.fabledsword.com/bvandeusen/fabledgrimoire``.
Returns "" for empty/garbage input so callers can treat it as "no repo".
"""