docs: CHANGELOG v0.113.0 + REPORT + CONTEXT + README NAS section + REUSE seams
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01PSK5g6qYLknKj8u3QAFEr6
This commit is contained in:
@@ -1,5 +1,41 @@
|
||||
## Changelog
|
||||
|
||||
### v0.113.0 — NAS verify-before-commit + page redesign + protocol-honest guidance (2026-07-11)
|
||||
|
||||
Kills the "bogus share sits at Készenlét forever" bug: `POST /api/storage/netstorage/add` now
|
||||
verifies the share END-TO-END before anything is registered, and rolls everything back on failure.
|
||||
Built on SPIKE-nas-verify-2026-07-11 (b57f6ca) with agent v0.81.0; live-validated A–E on demo 9201
|
||||
against an isolated sim NAS.
|
||||
|
||||
- **Orchestration job** (`internal/web/netstorage_job.go`, the migrate.go shape): sync validation →
|
||||
detached single-flight job on `context.Background()` (~150 s budget; a closed tab can't abort a
|
||||
rollback) with phases `agent_add → verifying → probing → registering → done|failed`, polled on
|
||||
NEW `GET /api/storage/netstorage/add/status`. Registration is the LAST step — the worst crash
|
||||
outcome is an agent-side orphan, never a registered-but-broken path. Verify-lost after an agent
|
||||
restart (`phase:none`) ⇒ controller rollback (Scenario F).
|
||||
- **In-guest uid-1000 write probe** (`netprobe*.go` + hidden `--netprobe <dir>` re-exec mode in
|
||||
main.go): `SysProcAttr.Credential{1000,1000}`, no shell; dot-file + nonce + readback + delete;
|
||||
exit codes → `not_writable` (the squash trap — an export that mounts but denies uid-1000 writes
|
||||
can no longer register) / `probe_io`; cleanup-fail = WARN on success, not a failure.
|
||||
- **agentapi**: `AddNetStorage` result gains `verify/job_id/code`; typed `NetAddRefusedError`
|
||||
(categorized sync refusals — unreachable pre-probe); new `NetVerifyStatus` (short GET, the 15 s
|
||||
global client timeout is untouched — the long wait lives in the poll loop).
|
||||
- **§3.2 Hungarian error map** server-side (`netAddMessage`): unreachable / nfs_export (MERGED
|
||||
not-found+not-permitted — NFSv4 returns identical strings) / smb_auth / smb_share / timeout /
|
||||
not_writable (the Route-A guidance with the computed uid+100000) / probe_io / generic.
|
||||
- **Orphan surfacing**: any agent-configured share NOT in the registry renders as a remove-only
|
||||
"Árva megosztás" row (closes the crash-window gap visibly; re-add with the same name = repair).
|
||||
- **storage_network.html full redesign** on the canonical `storage_attach` pattern — kills the
|
||||
`<details>/<summary>`-as-button hack and the NONEXISTENT `form-row`/`form-input` classes (the
|
||||
unstyled-look root cause). SMB listed FIRST (`SMB (Synology, QNAP — a legtöbb NAS)`), NFS
|
||||
two-recipe guidance (map-all-users simple recipe + full-fidelity `anonuid=<uid+100000>` with a
|
||||
live computed host-id), staged poll progress (Kapcsolódás → Csatolási teszt → Írásteszt →
|
||||
Regisztrálás), categorized errors + collapsible raw detail. Gates green; C8 render smoke guards
|
||||
the class regression.
|
||||
- Feature doc: `felhom.eu/documentation/controller/network-storage-nas.md` (authoritative).
|
||||
Companion: agent v0.81.0 (retry=0, journal classifier, agent-side auto-rollback), host-install
|
||||
v1.13.0 (`systemd-journal` group). Red-proof outcomes: REPORT.md.
|
||||
|
||||
### v0.112.0 — self-update without credentials: anonymous registry mode (2026-07-10)
|
||||
|
||||
Root cause (live on Peti's box): the updater piggybacked on the Git Sync credentials and REFUSED when
|
||||
|
||||
Reference in New Issue
Block a user