FUSE readlink needing to return 0 + getattr needing to return correct st_size was _not_ obvious, lol.
add memory fences because why not.
Three C modules: - tabfs (main thread; talks to FUSE) - common (tabfs<->ws communication helpers) - ws (side thread; talks to browser over WebSocket) It's single-threaded, but I don't think that matters anyway.