cloverleaf-larry/lib
Bryan Johnson 31ffae6f36 v0.8.4: installer/updater detects HTML-sign-in-page responses and fails loud
Hardens the installer + auto-updater against the Gitea private-repo trap
(Clover #5 diagnosis): an unauthenticated raw-file read of a sign-in-gated
Gitea returns the HTML Sign-In page at HTTP 200, which `curl -fsSL` treats as
success — so the old code parsed HTML as VERSION/MANIFEST/larry.sh content and
silently aborted (or overwrote real files with HTML). This stranded a work-box
at v0.7.3 until the REQUIRE_SIGNIN_VIEW=false flip.

- New lib/fetch-safe.sh: fetch_validate URL DEST KIND [MAX_TIME]. Detects the
  HTML-login trap (DOCTYPE/<html/"Sign In - Gitea"/<title>Sign In markers, or
  text/html Content-Type) and validates content shape per file type (semver
  VERSION, path-list MANIFEST, shebang larry.sh, non-HTML .sh). On failure:
  actionable error + non-zero, target file left untouched.
- install-larry.sh (curl|bash bootstrap) and larry.sh self_update() each carry
  a byte-identical inline copy (both run before lib/ can be sourced).
- Every remote-content fetch routed through the validator: install fetch();
  agent fetch; sync_from_manifest MANIFEST + per-file; _fetch_with_fallback.
- Optional LARRY_GITEA_TOKEN / GITEA_TOKEN env var adds Authorization: token
  <PAT> for authenticated fetch against private repos. Never hardcoded/logged.
  Documented in --help + MANUAL.md.

Co-Authored-By: Clover (Claude Opus 4.7) <noreply@anthropic.com>
2026-05-27 20:28:58 -07:00
..
csv-to-table.sh v0.4.1: each / each-site / len2nl / csv-to-table / table-to-csv 2026-05-26 11:05:19 -07:00
cygwin-safe.sh v0.8.3: tab-completion trailing-space no longer breaks command dispatch 2026-05-27 20:11:19 -07:00
each-site.sh v0.4.1: each / each-site / len2nl / csv-to-table / table-to-csv 2026-05-26 11:05:19 -07:00
each.sh v0.4.1: each / each-site / len2nl / csv-to-table / table-to-csv 2026-05-26 11:05:19 -07:00
fetch-safe.sh v0.8.4: installer/updater detects HTML-sign-in-page responses and fails loud 2026-05-27 20:28:58 -07:00
hl7-desanitize.sh v0.3.3: PHI sanitize/desanitize + {{phi:...}} prompt preprocessing 2026-05-26 10:29:20 -07:00
hl7-diff.sh v0.3.0: initial release of Larry-Anywhere 2026-05-26 09:46:20 -07:00
hl7-field.sh v0.3.4: field-name aliases, dot/dash syntax, ops (=, !=, ~, !~), new formats 2026-05-26 10:35:46 -07:00
hl7-sanitize.sh v0.7.5: OAuth CR-taint fix + mouse opt-in + CR-safety sweep 2026-05-27 19:17:48 -07:00
hl7-schema.sh v0.7.0: HL7-aware tab completion + REPL mouse mode 2026-05-27 16:15:11 -07:00
journal.sh v0.7.5: OAuth CR-taint fix + mouse opt-in + CR-safety sweep 2026-05-27 19:17:48 -07:00
len2nl.sh v0.4.1: each / each-site / len2nl / csv-to-table / table-to-csv 2026-05-26 11:05:19 -07:00
lessons.sh v0.7.5: OAuth CR-taint fix + mouse opt-in + CR-safety sweep 2026-05-27 19:17:48 -07:00
nc-create-thread.sh v0.4.2: operational layer — engine ctrl, tables CRUD, xlate viz, smat-diff, create-thread, tclgen 2026-05-26 11:11:30 -07:00
nc-diff-interface.sh v0.3.0: initial release of Larry-Anywhere 2026-05-26 09:46:20 -07:00
nc-document.sh v0.7.5: OAuth CR-taint fix + mouse opt-in + CR-safety sweep 2026-05-27 19:17:48 -07:00
nc-engine.sh v0.7.5: OAuth CR-taint fix + mouse opt-in + CR-safety sweep 2026-05-27 19:17:48 -07:00
nc-find.sh v0.7.5: OAuth CR-taint fix + mouse opt-in + CR-safety sweep 2026-05-27 19:17:48 -07:00
nc-inbound.sh v0.3.0: initial release of Larry-Anywhere 2026-05-26 09:46:20 -07:00
nc-insert-protocol.sh v0.7.5: OAuth CR-taint fix + mouse opt-in + CR-safety sweep 2026-05-27 19:17:48 -07:00
nc-make-jump.sh v0.3.0: initial release of Larry-Anywhere 2026-05-26 09:46:20 -07:00
nc-msgs.sh v0.7.5: OAuth CR-taint fix + mouse opt-in + CR-safety sweep 2026-05-27 19:17:48 -07:00
nc-parse.sh v0.4.0: chain walk, OR/NOT filter groups, numeric/range ops, smat history 2026-05-26 10:58:16 -07:00
nc-regression.sh v0.7.5: OAuth CR-taint fix + mouse opt-in + CR-safety sweep 2026-05-27 19:17:48 -07:00
nc-smat-diff.sh v0.7.5: OAuth CR-taint fix + mouse opt-in + CR-safety sweep 2026-05-27 19:17:48 -07:00
nc-status.sh v0.4.2: operational layer — engine ctrl, tables CRUD, xlate viz, smat-diff, create-thread, tclgen 2026-05-26 11:11:30 -07:00
nc-table.sh v0.7.5: OAuth CR-taint fix + mouse opt-in + CR-safety sweep 2026-05-27 19:17:48 -07:00
nc-tclgen.sh v0.4.2: operational layer — engine ctrl, tables CRUD, xlate viz, smat-diff, create-thread, tclgen 2026-05-26 11:11:30 -07:00
nc-xlate.sh v0.4.2: operational layer — engine ctrl, tables CRUD, xlate viz, smat-diff, create-thread, tclgen 2026-05-26 11:11:30 -07:00
oauth.sh v0.7.5: OAuth CR-taint fix + mouse opt-in + CR-safety sweep 2026-05-27 19:17:48 -07:00
phi-client.sh v0.8.2: Presidio sidecar for free-text NER (tier-5) — closes V1 2026-05-27 20:00:23 -07:00
phi-presidio-sidecar.py v0.8.2: Presidio sidecar for free-text NER (tier-5) — closes V1 2026-05-27 20:00:23 -07:00
phi-sidecar.sh v0.8.2: Presidio sidecar for free-text NER (tier-5) — closes V1 2026-05-27 20:00:23 -07:00
ssh-helper.sh v0.7.5: OAuth CR-taint fix + mouse opt-in + CR-safety sweep 2026-05-27 19:17:48 -07:00
table-to-csv.sh v0.4.1: each / each-site / len2nl / csv-to-table / table-to-csv 2026-05-26 11:05:19 -07:00