diff options
Diffstat (limited to 'docs/design.typ')
| -rw-r--r-- | docs/design.typ | 13 |
1 files changed, 8 insertions, 5 deletions
diff --git a/docs/design.typ b/docs/design.typ index ccb94a08..9a92f7ee 100644 --- a/docs/design.typ +++ b/docs/design.typ @@ -355,11 +355,14 @@ the pane's message row instead of quietly quitting something (the `.detach` arm `Pardes.perform`). The watch path, in full, because it is the ask with the most machinery behind -it. The tty and SDL hosts and the detached daemon implement it with Linux -inotify (`src/file_watch.zig`); the native macOS host watches both each file and -its parent directory with debounced DispatchSources, then restats the exact path -under a pane-generation guard. The file catches in-place writes while the parent -follows rename-over saves. Text snapshots are filtered by their content hash; +it. The tty and SDL hosts and the detached daemon implement it in +`src/file_watch.zig`, with Linux inotify or a macOS kqueue behind one +mark/reconcile transaction; the native macOS host watches with debounced +DispatchSources instead, then restats the exact path under a pane-generation +guard. All three macOS watchers mark the same two things for the same reason: +the file catches in-place writes while the parent directory follows rename-over +saves, and the file mark is re-armed once such a save has moved the inode. +Text snapshots are filtered by their content hash; PDFs use bounded inode/size/time identity and commit it only when equal stats bracket a successful transactional MuPDF reopen (`file_watch.Generation`). A mismatched transaction gets one bounded self-retry. This catches rename-over |
