| 📦 Turbo Core — canonical paths: symbolic links resolved in URIs and document keys (moon-lsp on macOS) b91316e k33g 8h ago | 1 | # Handoff — 2026-09-19 — canonical paths (v1.0.1) |
| 2 | |
| 3 | ## State |
| 4 | |
| 5 | - Fix in place and green: `lsp.CanonicalPath` used by `PathToURI` and `app.pathKey`. Three new tests, one falsified against the old code. `make check` green. |
| 6 | - `release.env` says `TAG="v1.0.1"`. **Not committed, not tagged.** |
| 7 | |
| 8 | ## Next steps |
| 9 | |
| 10 | 1. `./01-release.tag.sh` here (turbo-core) — from a machine that reaches Rickub. |
| 11 | 2. In each editor: `go get rickub.com/turbo-editors/turbo-core@v1.0.1 && go mod tidy && GOWORK=off make check`, then its `./01-release.tag.sh`. turbo-moonbit needs it to pass `make check` on macOS; the others gain the same fix for files under symbolic links. |
| 12 | 3. turbo-go v1.0.0 is already published against v1.0.0; re-pin it too and it picks the fix up at its next release. |
| 13 | |
| 14 | ## Traps |
| 15 | |
| 16 | - The reproduction is Linux + `TMPDIR` under a symlink (`ln -s $(mktemp -d) /tmp/symroot/tmp; TMPDIR=/tmp/symroot/tmp go test …`). Nobody has run the fixed code on macOS yet. |
| 17 | - Do not "fix" this in an editor's test by resolving `t.TempDir()`: the defect is the library's and hits any user whose files sit under a link. |
| 18 | |
| 19 | ## Second pass |
| 20 | |
| 21 | The Mac found three more tests comparing paths as spelt; fixed (`windowFor` canonical, two `lsp` tests expect the canonical spelling, one new test). The whole suite is green here with `TMPDIR=/tmp/symroot/tmp TURBO_CORE_RELEASING=1 go test ./...` — run that before every release from now on, it is the closest Linux gets to a Mac's `/var/folders`. |