Added
- OnTextChanged Hook: New plugin hook with 300ms debounce for reacting to text edits.
- SplitPane Read-Only Mode: Split view panels can now be set as read-only.
- Integration Test Suite: 8 new integration test suites (diff/highlights, Lua sandbox, plugin loading/security/verify chains, session roundtrip, settings persistence, shortcut registry).
- Library Crate: Exposed
ferris_padlib crate for integration testing.
Fixed
- Plugin Menu Entries on Global Disable: Menu entries now properly disappear when plugins are globally disabled.
- Format Menu Visual Update: Font and size changes from the Format menu now visually update highlighted text immediately.
Changed
- Controller Extraction: Split
AppStatefrom 2,799 → 1,053 lines (~62% reduction) by extracting FileController, HighlightController, WidgetController, PluginController, SessionController, and ViewController. - Dispatch Refactor: Extracted grouped handler functions from
main.rsintodispatch.rs, eliminating ~1,195 net lines of dead/duplicated code. - Lazy Syntect Loading: Deferred syntax set initialization reduces idle RSS by ~10 MB (39 → 29 MB).
- Plugin API Modularization: Split
plugins/api.rsinto sub-modules (commands, editor, filesystem, sandbox). - Security Audit: Audited plugin API against PHILOSOPHY.md and SECURITY.md; added SAFETY comments to all unsafe blocks.
- Updated SECURITY.md: Reflects v0.9.2 status — permission system, signed plugin downloads, and plugin manager all marked as done.
- Fixed all clippy warnings across the codebase.