diff --git a/AGENTS.md b/AGENTS.md index c78ea4f..bdc5f2e 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -37,6 +37,20 @@ Focused runs: `pytest tests/unit` (pure logic, ms), `pytest tests/gui -k ` Notes: `tests/conftest.py` auto-`ops.wipe()`s the OpenSees domain between tests (lazy import so core tests stay Qt/OpenSees-free). Coverage omits `views/`. Commit style: Conventional Commits (`feat:`, `fix:`, ...). `pre-commit install` runs ruff + mypy (mypy hook scoped to `core|services|viewmodels`). +## Git & Forgejo + +Remote is a self-hosted Forgejo, SSH-only: + +```bash +git remote add origin ssh://git@smill-home.ddns.net/smill/otko.git +``` + +- Web UI / HTTPS clone: `https://smill-home.ddns.net/forgejo/smill/otko.git` (note the `/forgejo` subpath — SSH URLs don't have it). +- Forgejo SSH runs through the system sshd on **port 22** (`SSH_PORT = 22` in the server's `app.ini`). If the site ever advertises a `:2222` SSH URL again, that config regressed — push/pull with port 22 anyway and flag it. +- Auth is by SSH key (Forgejo → Settings → SSH Keys). Test: `ssh -T git@smill-home.ddns.net` should answer `Hi there, ! ... Forgejo does not provide shell access.` +- Default branch `main`. Work on short-lived branches (`fix/`, `docs/`), open a PR against `main`. Never commit directly to `main` from an agent session. +- Repo root is `otko/` itself. (On the dev laptop there is also an empty, commit-less parent repo at `Sync/coding/` — ignore it; all git work happens inside `otko/`.) + ## Examples & persistence - `examples/*.py` are source of truth; `examples/*.osmodel` are generated artifacts (checked in). Never hand-edit `.osmodel` — change the script and regen: `python examples/cantilever.py` (each script saves, reloads, asserts clean round-trip).