Don’t treat OpenCode 2’s catalog reload() as a shipped file-watch. Live dev state.ts rebuilds from initial() and runs every registered transform once, in order. I did not run OpenCode.

The Reloaded post is that pipeline. Same dev lifecycle spec still says reload/watch behavior and deferred external plugin activation remain design work.

materialize does const next = options.initial(), then the transform loop. Dispose filters the callback out; outside State.batch that materializes immediately, inside a batch it waits until the batch ends. A plugin that closes over fetched providers and calls reload() after a timer is on that path. A watcher that drops and re-runs a plugin file, or a slow plugin that activates after the location is ready, is still the spec’s design work.

source ↗

← all notes