v0.6.8: Unicode NFC path normalization (#183) + share-toast path fix (#192) #193

Merged
Cordy merged 2 commits from ship-v0.6.8 into main 2026-08-11 01:38:46 +00:00
Owner

#183 — Unicode NFC path normalization

CleanPath (the single path chokepoint every entry point routes through) now normalizes the cleaned virtual path to NFC via golang.org/x/text/unicode/norm (already an indirect dep; go mod tidy promotes it to direct). So a client requesting an NFC name and a filename stored as NFD — the decomposed form macOS/WebDAV clients send — resolve to the same key; umlauts and accents no longer 404. NFC and NFD are canonically equivalent, so this collapses both forms to one stable key.

Caveat (in the CHANGELOG): files already stored as NFD before this release still need a one-time re-normalization; new writes and all lookups are NFC from here.

Test: path_test.go gains NFD→NFC cases (café, über) asserting CleanPath(NFD) == NFC.

#192 — Share-created toast no longer leaks the backend path

The Share dialog's confirmation used shareItem.path (/home/...); it now uses the item name, matching the per-row copy-link toast and the virtual-namespace model. (Split from #175 item 3, verified live via the browser.)

Validation

Branch commit produced by a one-shot workflow: go mod tidy, gofmt, go vet ./..., go test ./... (all green — includes the new NFC cases), dual-arch build. This PR re-runs CI.

Closes #183. Closes #192.

## #183 — Unicode NFC path normalization `CleanPath` (the single path chokepoint every entry point routes through) now normalizes the cleaned virtual path to **NFC** via `golang.org/x/text/unicode/norm` (already an indirect dep; `go mod tidy` promotes it to direct). So a client requesting an NFC name and a filename stored as NFD — the decomposed form macOS/WebDAV clients send — resolve to the same key; umlauts and accents no longer 404. NFC and NFD are canonically equivalent, so this collapses both forms to one stable key. Caveat (in the CHANGELOG): files **already** stored as NFD before this release still need a one-time re-normalization; new writes and all lookups are NFC from here. Test: `path_test.go` gains NFD→NFC cases (`café`, `über`) asserting `CleanPath(NFD) == NFC`. ## #192 — Share-created toast no longer leaks the backend path The Share dialog's confirmation used `shareItem.path` (`/home/...`); it now uses the item **name**, matching the per-row copy-link toast and the virtual-namespace model. (Split from #175 item 3, verified live via the browser.) ## Validation Branch commit produced by a one-shot workflow: `go mod tidy`, `gofmt`, `go vet ./...`, `go test ./...` (all green — includes the new NFC cases), dual-arch build. This PR re-runs CI. Closes #183. Closes #192.
add v0.6.8 one-shot: Unicode NFC normalization (#183) + share-toast path (#192)
All checks were successful
ship-v068 / ship (push) Successful in 40s
651e66d661
v0.6.8: Unicode NFC path normalization (#183) + share-toast path fix (#192)
All checks were successful
ci / test-and-build (pull_request) Successful in 34s
33853fdc81
Cordy merged commit b3eff4d6cb into main 2026-08-11 01:38:46 +00:00
Cordy deleted branch ship-v0.6.8 2026-08-11 01:38:49 +00:00
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference: Cordy/Cairn#193
No description provided.