Claude Code keeps per-project memory at <home>/.claude/projects/<key>/,
where <key> is the project's absolute path with every separator and the
drive colon turned into a dash. That makes it both rename-fragile and
machine-specific, and this project has hit each of those once:
- D:\DEV\Schunix -> D:\DEV\SchOS changed the key, and 43 memories were
invisible until moved across by hand.
- Development happens from Windows and from Linux, and each looks in a
different place for the same checkout.
Committing .claude/memory/ fixes both -- git carries it across renames
and between hosts -- and `import` puts it wherever the local machine
expects. .claude/settings.local.json stays ignored: those are per-machine
permissions.
The colon maps to a dash rather than being dropped. Deleting it gives
D-DEV-SchOS, which matches nothing and silently finds zero memories; that
was the first attempt. On Git Bash the key comes from `cygpath -w`,
because Claude Code is a Windows program and sees D:\DEV\SchOS, not
/d/DEV/SchOS.
29 lines
876 B
Text
29 lines
876 B
Text
# Build output. Everything here is reproducible from `make`.
|
|
build/
|
|
schos.img
|
|
schos.iso
|
|
*.o
|
|
*.d
|
|
*.asm
|
|
*.sym
|
|
|
|
# The staged root filesystem. Assembled by the build from cmd/, lib/ and
|
|
# ports/ -- tracking it would mean committing a second copy of every binary
|
|
# on every build.
|
|
sysroot/
|
|
|
|
# Upstream tarballs, fetched not authored: musl, toybox, mksh, dash, the DOOM
|
|
# WADs and usb.ids. 61 MB of other people's release artefacts, all of which
|
|
# the build downloads again if they are missing. The patches that matter are
|
|
# under ports/*/patches/ and those *are* tracked.
|
|
dist/
|
|
|
|
# Test and screenshot output.
|
|
*.log
|
|
*.ppm
|
|
*.png.tmp
|
|
|
|
# Claude Code's per-machine settings (permissions granted on this host).
|
|
# .claude/memory/ IS tracked -- it is the project memory, and committing it is
|
|
# how it survives a directory rename and reaches the other machines.
|
|
.claude/settings.local.json
|