releasecloudperformanceaccessibility
OmniMon v5.2.0 - CrabNebula Cloud, Rust 1.93 Optimizations & Accessibility
v5.2.0 adds CrabNebula Cloud integration, Rust 1.93 clippy compliance, focus trap accessibility, O(1) process lookups, and 198 tests with 85% coverage.
OmniMon v5.2.0
v5.2.0 consolidates the v5.1.0 features into a production-ready release with cloud integration, Rust 1.93 compliance, accessibility improvements, and performance optimizations. 53 files changed, +4,273 lines across 7 commits.
CrabNebula Cloud Integration
OmniMon now integrates with CrabNebula Cloud for distribution and auto-updates:
- Cloud tier detection - Free, Premium, or Unknown tier based on API response
- OS keyring storage - API keys stored securely in macOS Keychain, Windows Credential Manager, or Linux Secret Service
- Key format validation - rejects empty, oversized (>512 chars), or non-ASCII keys
- Async validation - authenticated GET to
api.crabnebula.dev/v1/accountwith 10-second timeout - Silent fallback - the app works fully without cloud features. No crash, no nag screen
- 13 tests covering all validation and error paths
Rust 1.93 Compliance
The entire Rust codebase was updated for Rust 1.93 with full cargo fmt and cargo clippy compliance:
- Fixed all new clippy lints introduced in Rust 1.93
- Formatted all
.rsfiles to currentrustfmtstandards - Homebrew formula updated with new version and SHA256
Performance Optimizations
- O(1) blocked process lookup -
is_immutable_blocked_process_name()now uses aOnceLock<HashSet>initialized once at startup, replacing O(N) linear scan on every watcher tick - Memory leak fix -
rules_engine::last_matchedHashMap now evicts stale entries after 60 seconds, preventing unbounded growth - App icons cache cap - limited to 2,048 entries to prevent unbounded memory allocation
#[inline]on hotnetwork::scale_to_per_secfunction for better codegen- RwLock poison recovery - all
.unwrap()on RwLock replaced with graceful recovery functions that handle poisoned locks
Accessibility Improvements
- Focus trap utility (
focusTrap.ts) - proper Tab/Shift+Tab cycling for all modal dialogs - SecurityReportView calls
focusFirstFocusable()on mount for keyboard navigation - Settings modal gets the same focus trap treatment
- ARIA attributes throughout -
aria-controls,aria-label,aria-expanded,role="status"on skeleton loaders
Code Quality
- 25+ constants extracted from magic numbers in
ai.rs(API URLs, keyring services, max tokens, model names) - 3 helper functions -
add_anthropic_headers(),add_openrouter_headers(),check_response_status()eliminate ~90 lines of duplicate code - Store operation failures now logged instead of silently swallowed
- Full OmniMon branding - all legacy “macmon” references renamed across HTML titles, APPDATA paths, GitHub URLs, install scripts, and AI prompts
Test Coverage
- 198 total tests: 109 unit + 85 integration + 4 CLI
- 85% coverage enforcement on macOS and Linux CI
- New test modules:
audit_trail,cloud,process_identity,rate_limit,telemetry - Integration tests grew from 120 lines to 1,200 lines (10x increase)
Install
# macOS
brew tap chochy2001/omnimon && brew install --cask omnimon
# Linux
curl -fsSL https://get.omnimon.com.mx | bash
# Windows
winget install chochy2001.omnimon