Skip to content

Ex plur#53

Merged
iLevyTate merged 26 commits intomainfrom
ExPlur
Mar 6, 2026
Merged

Ex plur#53
iLevyTate merged 26 commits intomainfrom
ExPlur

Conversation

@iLevyTate
Copy link
Owner

@iLevyTate iLevyTate commented Mar 6, 2026

This pull request primarily focuses on extensive structural refactoring across the core architecture, including IPC handlers, backend services, and worker pools, alongside significant performance optimizations and the introduction of a new stability framework. The changes aim to improve system reliability, enhance interactive tracking, and bolster test coverage across the application.

Core architecture and refactoring:

  • Refactored numerous IPC handlers to streamline communication (including embedding, llama, semantic, and smartFolders).
  • Overhauled key backend services such as ChatHistory, DownloadWatcher, Llama, and ParallelEmbedding.
  • Refactored analysis utilities and updated worker pools (embedding, logExport, ocr) to improve background task management.
  • Updated renderer components including ErrorBoundary, UnifiedSearchModal, and index.html.

Performance and feature additions:

  • Implemented chat and graph performance fixes, along with inference queue fairness improvements.
  • Added textModelActivity to enable interactive LLM request tracking.
  • Improved the semantic search IPC and the underlying SearchService.
  • Added a new clearReadyQueue IPC handler and processing state method.

Stability, testing, and dependency updates:

  • Introduced a comprehensive stability framework, complete with a smoke suite, telemetry, and release preparation tools.
  • Updated unit, integration, and migration tests, specifically expanding coverage for OrganizationSuggestionServiceCore, ClusteringService, and IPC/UI regression paths.
  • Updated package dependencies, Webpack configuration, and asset-copying scripts while improving global error handling.

Bug fixes and UI improvements:

  • Fixed batch organization fallbacks to ensure items correctly default to "uncategorized".
  • Updated the useOrganization UI fallback to properly handle uncategorized states.
  • Addressed formatting, linting, and pre-commit checks to maintain code quality.

iLevyTate added 26 commits March 4, 2026 22:51
…dding, Performance, Search, Settings, SmartFolder, Vision, AnalysisHistory, organization)
- Removed unused dependency `copy-webpack-plugin` from package.json and package-lock.json.
- Enhanced error handling in `SearchService` for file access, ensuring non-ENOENT errors are treated as existing files.
- Improved idempotency checks in `batchOrganizeHandler` to prevent duplicate operations after path normalization.
- Added mutex timeout handling in `semantic.js` to throw errors on initialization timeouts.
- Updated GPU detection logic in `GPUMonitor` to handle concurrent calls and improve reliability.
- Refactored `workerPools` to manage OCR and embedding pools with better error handling and backoff strategies.
…test fixes

- Chat streaming: RAF throttle for setChatMessages, ChatPanel memo
- Graph: O(1) selectedNode/searchResult lookup, SET_GRAPH atomic updates
- ELK layout: topology hash cache, worker construction fix
- Backend: AbortSignal propagation (SmartFolders, ReRanker, OrgSuggestions)
- Backend: withAbortableTimeout for ClusteringService, ModelManager fallback
- Backend: rolling semaphore in BatchProcessor, 60s timeouts for embeddings
- Hot paths: VisionService async pathExists, ChatHistoryStore async mkdir
- Persistence: json.length estimate instead of TextEncoder re-encode
- AnalysisHistoryModal: cap fetch at 500 entries
- Tests: withAbortableTimeout mock, RelationshipIndexService fake timers
Preserve array payload semantics across IPC handlers, ensure copy destinations are created consistently, and harden search, persistence, and batch-analysis fallback behavior with targeted regression coverage.
Harden settings and notification flows, refine IPC/chat behavior, and expand unit plus e2e test coverage (including new SettingsPanel tests) to reduce functional regressions across renderer and main-process boundaries.
- Run Prettier on 8 files with style issues
- Add eslint-disable for intentional control-char regex in useOrganization
- All CI checks pass (format, lint, test:coverage, verify:ipc-handlers, build)
- Implemented `clearReadyQueueHandler` to clear the analysis queue via IPC.
- Added `clearAllReadyAnalyses` method in `ProcessingStateService` to clear ready and pending jobs.
- Updated `useAnalysis` to call the new IPC method for clearing the queue on user action.
- Enhanced logging for LLM label generation failures in `ClusteringService`.
- Adjusted concurrency handling in `OrganizationSuggestionServiceCore` to respect new settings.
…e thresholds

Introduce a release-stability pipeline that catches regressions before tagging:

- Smoke suite runner (scripts/stability/) executes fixed critical-path
  journeys twice on the same SHA and compares results
- Threshold checker enforces search fallback rate (<25%) and uncategorized
  routing rate (<30%) guardrails, plus latency drift detection (>=50%)
- Unified IPC contract verifier replaces separate channel-sync and handler
  checks with a single coherent validation pass
- systemAnalytics now tracks search fallback and organization routing
  telemetry for runtime stability observability
- SearchService and OrganizationSuggestionServiceCore instrumented to
  record stability metrics at key fallback/routing decision points
- CI and release workflows updated to run critical-path smoke suite and
  new IPC contracts verification
- Added SearchService stability pack and extended organization/search tests
Resolve 10 merge conflicts from dependency bumps (PRs #49, #51, #52):

- package.json: take newer terser-webpack-plugin + tsconfig-paths-webpack-plugin
- batchOrganizeHandler: keep idempotency check + improved mkdir comment
- semantic.js: merge comment styles, remove redundant whitespace
- ClusteringService: combine both import sets (textModelActivity + fileTypeUtils)
- ParallelEmbeddingService: keep bgWork.track() wrapping
- workerPools: keep debug logging in error catch blocks
- GraphTour: keep click-to-close backdrop + step title/counter
- UnifiedSearchModal: deduplicate ./utils imports, keep EMPTY_SET,
  merge chat watchdog with mount guard, take main's search timeout style
- chatIpc: combine startTimer + _cleaned guards, add exportConversation
- atomicFileOperations: take AbortController timeout approach from main
- analysisIpc: expect 7 handlers (was 6), assert CLEAR_READY_QUEUE exists
- useAnalysis: await async clearAnalysisQueue (now calls clearReadyQueue),
  add clearReadyQueue mock to electronAPI fixture
@iLevyTate iLevyTate merged commit 850c75c into main Mar 6, 2026
6 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant