Skip to content

v0.0.17

Choose a tag to compare

@jdwyah jdwyah released this 19 May 14:34
· 78 commits to main since this release
  • Feat (datadir): opt-in data_dir_auto_reload (qfg-mol-2da). Datadir mode previously loaded the workspace once at construction and served purely from memory. Set data_dir_auto_reload: true to have the SDK watch the configured datadir, re-read Quonfig::Datadir.load_envelope, and fire the existing on_update callback whenever files change. Adds listen ~> 3.8 (FSEvents on macOS, inotify on Linux, polling fallback on Windows) as a runtime dep. Behavior: parse-then-swap (a failed parse keeps the previous envelope and skips the callback), debounced (data_dir_auto_reload_debounce_ms, default 200 ms — bursts coalesce to one reload), and gracefully downgrades when watch registration fails (read-only fs, immutable container, missing native backend). Symlinked datadirs are resolved to their real path before watching. Default is false; opt-in only.
  • Feat (datadir + fork): auto-restart the watcher across fork(2) (qfg-mol-2da). The watcher uses a background thread, which does not survive fork. The existing Process._fork hook (qfg-ryov, Ruby 3.1+) now also tears the datadir watcher down in the parent before fork and rebuilds a fresh one on the same Client in each child — no customer wiring required for Puma clustered mode, Unicorn, Sidekiq's parent-forks-workers model, Resque, or Spring. Ruby 3.0 customers continue to use the documented Quonfig.fork pattern in on_worker_boot, which rebuilds the watcher alongside the rest of the client.