April 25: ProcessMemoryEnforcer, OCROptimizer, PagedBlockPool deadlock fix, test suite and UI cleanup #2
cnshsliu
announced in
Announcements
Replies: 0 comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
-
Two April 25 commits plus working-tree refinements.
ProcessMemoryEnforcer
Actor-based memory pressure manager, 1-second polling loop. Configured via
ServerConfig.maxProcessMemory— four modes:auto— reservesmax(4GB, min(8GB, physMem/5))for the system, rest for NovaMLXpercent— e.g.80%of physical RAMfixed— absolute:24GB,4096MBdisabled— no enforcementWorker subprocess reports memory stats to the supervisor every 5 seconds. Settings page has a mode picker GUI with conditional percent/value inputs.
OCROptimizer
Auto-detects OCR models (
deepseekocr,dots_ocr,glm_ocr) and injects optimal defaults: prompt prefix, sampling parameters (temperature=0, top_p=1, etc.), and extra stop sequences. Detects whether the user already provided text content to avoid redundant prompt injection.PagedBlockPool deadlock fix
Nested locking in
PagedBlockPoolwas causing crashes (70+ occurrences). Fixed by extractingfreeBlockUnlockedandincrementRefUnlockedprivate methods that operate without acquiring the lock — callers hold it once.Test suite consolidated
swift testnow covers all 125 tests across all targets. VLM integration tests (base64 image, HTTP URL image) are in-tree and gracefully skip when no server is running. Fixed a misleading filename:E2ETests.swift→RateLimiterTests.swift— it was rate limiter unit tests, not E2E. Real end-to-end HTTP tests live in the separateNovaMLXE2ETeststarget.UI fixes
arrow.clockwiseicon animation that kept flying in from screen center. Root cause: SwiftUI.animation(nil, value:)doesn't cancel — it triggers an implicit transition. Replaced with independentrotationAnglestate controlled viawithAnimationblocks.Documentation
features.md/features.zh-CN.md: Worker Subprocess Isolation, Control Token & Thinking Filtering, Speculative Decoding, Agent Integration, Memory Management, Cloud Model Proxy, Internationalization, Homebrew DistributionBeta Was this translation helpful? Give feedback.
All reactions