Carry project memory in the repo, with tools/memory-sync.sh
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.
This commit is contained in:
parent
cda5908660
commit
3182da3965
47 changed files with 2810 additions and 0 deletions
80
.claude/memory/schunix-roadmap-and-projects.md
Normal file
80
.claude/memory/schunix-roadmap-and-projects.md
Normal file
|
|
@ -0,0 +1,80 @@
|
|||
---
|
||||
name: schunix-roadmap-and-projects
|
||||
description: "The agreed roadmap through USB, GPU, fonts, network and the GUI; Schcom/SchWM/SchDE and the installer live in projects/, outside the OS tree"
|
||||
metadata:
|
||||
node_type: memory
|
||||
type: project
|
||||
originSessionId: a665e14b-86bd-4b41-a228-51377f3e9225
|
||||
modified: 2026-08-04T23:05:57.185Z
|
||||
---
|
||||
|
||||
**Set out 2026-08-04.** Recorded in `docs/roadmap.md`; the naming and the
|
||||
split are Nexoniarz's.
|
||||
|
||||
Order asked for: USB → GPU → OTF/TTF → network + sockets → GUI → installer.
|
||||
Kept, with one dependency fix: shared driver infrastructure came first
|
||||
([[schunix-driver-infrastructure]]), because it was the first step of USB
|
||||
rather than a detour from it.
|
||||
|
||||
**The GUI stack, all three named by Nexoniarz and all in `projects/`:**
|
||||
|
||||
- **Schcom** — Schunix Compositor. Owns the display and input; composites
|
||||
client buffers. Policy is *not* its job.
|
||||
- **SchWM** — window manager, a privileged Schcom client.
|
||||
- **SchDE** — desktop environment: panel, launcher, settings.
|
||||
- **schinst** — installer, installation environment, and `.sip` tooling.
|
||||
|
||||
`projects/` is at the repo root and is **not part of the kernel build** —
|
||||
things that run *on* Schunix, not things that *are* Schunix. They link against
|
||||
the sysroot libc and never against kernel headers. The reason is that each is
|
||||
larger than the kernel will be for a long time, and grown in-tree the
|
||||
boundary would blur until "does Schunix boot" stopped having a clear answer.
|
||||
|
||||
**The two hard blockers before Schcom can start**, both kernel work:
|
||||
|
||||
1. **Unix domain sockets.** `socket()` is still a `NO_LINUX` stub. Needed for
|
||||
the client protocol and for `SCM_RIGHTS` — a pipe cannot carry a buffer
|
||||
handle. Build these *before* TCP/IP; they are simpler and they are what
|
||||
the socket layer's shape should be designed around.
|
||||
2. **Raw input events** — an evdev-style `/dev/input`. Input only arrives
|
||||
cooked through the tty line discipline, line-buffered to one foreground
|
||||
process, which is not usable by a compositor.
|
||||
|
||||
shm and framebuffer mmap are already done ([[schunix-shm-and-mmap]]).
|
||||
|
||||
**`.sip`** = Schunix Installation Package, modelled on WIM: file-based rather
|
||||
than block-based, so one file holds a whole tree, applies to any partition
|
||||
size, and dedups across images. Most of it exists — `tools/mkschfs.c` and
|
||||
`tools/mkfs.c` already do content dedup with an `(st_dev, st_ino)` fast path.
|
||||
`mksip` should share that code.
|
||||
|
||||
**Confirmed order (2026-08-05):** finish USB, then sockets + raw input, then
|
||||
virtio-gpu.
|
||||
|
||||
**Doom moved (2026-08-05).** It was "explicitly last"; it is now the
|
||||
**acceptance test** — "an OS that doesn't run Doom is not a real OS".
|
||||
fbDOOM at that. It is a real load test: framebuffer mmap, raw termios,
|
||||
file I/O, allocator and timing, all at once. Everything on that list already
|
||||
exists except possibly `gettimeofday`/`nanosleep` resolution, so **it could
|
||||
be attempted today** — it needs no sockets, USB, virtio-gpu or fonts.
|
||||
**It is a test, not a component** — clarified by Nexoniarz: built and run to
|
||||
prove things work, never shipped in the system. That disposes of licensing
|
||||
entirely, since nothing is redistributed. Belongs with the test tooling (a
|
||||
`make doomtest`, same shape as `make crashshot`), not in `cmd/` or the
|
||||
sysroot. *If* it were ever shipped the licensing returns: engine is GPL-2.0
|
||||
(fine in `ports/`, never `cmd/`), and the WAD would have to be **Freedoom**
|
||||
(BSD-3-clause) because `doom1.wad` is not redistributable.
|
||||
|
||||
**Sized honestly and not to be underestimated:** OTF/TTF is a rasteriser plus
|
||||
a variable-width glyph cache, and the console assumes a fixed 8x16 cell grid
|
||||
throughout — proportional text is a new rendering layer, not a font swap.
|
||||
|
||||
**Fonts must be public domain or very permissive** — "PD0", clarified
|
||||
2026-08-05 (the earlier note read it as "CY-NO", which was never a real
|
||||
thing). CC0 is ideal; MIT/BSD/Apache fine. SIL OFL is usable but carries a
|
||||
rename-if-modified obligation, so read it first. A font ships inside every
|
||||
image, so its licence attaches to the image — see [[schunix-licensing]].
|
||||
|
||||
First GPU driver should be **virtio-gpu**, not Intel/AMD: public spec, QEMU
|
||||
implements it, and it teaches the resource/flush model that a raw framebuffer
|
||||
never will. Doom stays last. See [[nexoniarz-sharing-preference]].
|
||||
Loading…
Reference in a new issue