360 Commits

Author SHA1 Message Date
61c49257d3 Merge pull request #2 from vasceannie/codex/refactor-tauri-adapter-files-into-structure
refactor(api): split Tauri adapter into modular package
2026-01-18 21:40:56 -05:00
cff3c2f80a fix(api): harden tauri adapter init and stream close 2026-01-18 21:27:43 -05:00
853bf7fe01 feat: add ModelCatalogEntry type, enhance EffectiveServerUrl with host/port details, and refine project context logging. 2026-01-19 02:15:39 +00:00
0f92ef8053 feat: introduce unified status row, quick actions for notes and transcripts, jump-to-live indicator, and in-transcript search to the recording page. 2026-01-19 01:43:07 +00:00
f5df0559eb refactor(api): split tauri adapter 2026-01-18 20:28:04 -05:00
3aacef9d68 feat: Add Makefile targets for git pre-commit hook installation and block --no-verify commits. 2026-01-19 00:18:00 +00:00
796f13b358 feat: Introduce sync error codes, client-side sync notifications, and update gRPC definitions for integration synchronization. 2026-01-18 20:55:43 +00:00
021451aa70 feat: Add AMD ROCm GPU support with new Docker Compose profiles, build configurations, and updated documentation. 2026-01-18 14:01:29 +00:00
3222826ff7 feat: Implement PyTorch and ROCm ASR engines with GPU detection and enhance calendar OAuth integration across client and server. 2026-01-18 12:47:31 +00:00
36811b2de3 refactor: apply named expressions, conditional expressions, and destructuring for improved conciseness and readability. 2026-01-18 07:07:38 +00:00
024781d0f9 chore: upgrade Rust version and migrate pip commands to uv in Dockerfiles
- Upgraded Rust base image from 1.75 to 1.81 in client.Dockerfile
- Replaced python -m pip with uv pip for NER dependency installation in server.Dockerfile
- Updated spaCy model download and verification commands to use uv run python
2026-01-18 01:45:04 -05:00
d0d4eea847 chore: configure devcontainer Python venv persistence and normalize package-lock peer dependencies
- Added bind mount for .venv directory in devcontainer to persist Python virtual environment across container rebuilds
- Enabled updateRemoteUserUID for proper file permissions in devcontainer
- Normalized peer dependency flags in package-lock.json (removed inconsistent "peer": true from core dependencies, added to test-only dependencies)
- Added empty codex file placeholder
- Created comprehensive
2026-01-17 21:36:22 -05:00
c906eea3be Archive sprint documentation for sprints 15-18 from phase-5-evolution
- Moved sprint-15-platform-hardening (README.md, RESILIENCE_TEST_PLAN.md) to docs/sprints/.archive
- Moved sprint-16-identity-foundation (README.md) to docs/sprints/.archive
- Moved sprint-17-custom-oauth (README.md) to docs/sprints/.archive
- Moved sprint-18-projects (README.md, CLOSEOUT.md) to docs/sprints/.archive
2026-01-17 20:07:36 -05:00
04ff0a2dc4 Merge all .archive directories into docs/sprints/.archive 2026-01-17 20:03:42 -05:00
a9f34635b7 chore: update package-lock.json and add Cargo configuration for Windows
- Added "peer": true to multiple dependencies in package-lock.json to ensure compatibility with peer dependencies.
- Introduced a new Cargo configuration file to address Windows linker issues, specifying the use of the MSVC linker.
2026-01-17 19:22:07 -05:00
db512c78e5 Add root-level node_modules/ to gitignore 2026-01-17 19:18:46 -05:00
de7af99257 Remove node_modules from repository and add to gitignore 2026-01-17 19:17:21 -05:00
0e65c28c99 big update 2026-01-17 19:15:45 -05:00
1dcb3cef11 Update compose.yaml 2026-01-17 01:51:58 +00:00
da5fe3a3b6 Update compose.yaml 2026-01-17 01:48:40 +00:00
2738ef29d1 feat: enhance audio recording and playback management
- Introduced constants for maximum session audio buffer size and samples to improve memory management during recordings.
- Refactored audio buffer handling to utilize `VecDeque` for efficient memory usage and added logic to cap buffer size.
- Implemented a new function to append audio chunks to a file, ensuring proper handling of audio data during recording sessions.
- Updated various recording and playback functions to utilize the new buffer management and file writing logic, improving overall performance and reliability.
- Added tests to validate the new audio buffer behavior and ensure correct functionality under long recording scenarios.
2026-01-16 19:21:22 -05:00
cf930459ca docs: remove outdated frontend pages review after completing identified fixes
- Removed pages.md containing frontend code review findings (Analytics pie chart key bug, fire-and-forget error handling, export logic duplication, preferences refresh hack)
- Review findings have been addressed in prior commits or are no longer relevant to current codebase state
- Keeps .claudectx focused on active architectural documentation (AGENTS.md for Python backend, codefixes.md for Tauri backend)
2026-01-16 14:06:23 -05:00
baaf38f45f docs: replace client library review with Tauri backend analysis and remove implementation plan
- Replaced codefixes.md client-side review (localStorage, crypto, preferences) with comprehensive Tauri backend analysis covering concurrency, audio architecture, and security
- Identified critical issues: blocking keychain I/O in async context, unbounded memory growth in session_audio_buffer (11.5MB/min), and audio normalization destroying original dynamic range
- Added recommendations for spawn_blocking
2026-01-16 13:47:19 -05:00
b322e6aab5 chore: tidy log entry formatting 2026-01-16 17:04:24 +00:00
f850e52fc4 docs: replace lib-focused code review with comprehensive frontend architecture review covering React components, pages, and e2e tests
- Replaced codefixes.md with broader frontend review covering React/TypeScript patterns, Tauri integration, component architecture, and test coverage
- Added pages.md documenting critical bugs (React key collision in Analytics pie chart, fire-and-forget error swallowing), API architecture patterns, and code duplication opportunities
- Identified must-fix issues: Speaker
2026-01-16 17:01:10 +00:00
ac22e3a650 ```
docs: add comprehensive Python backend reference guide for NoteFlow server development

- Added AGENTS.md documenting Python backend architecture, build commands, and development workflows
- Documented gRPC server structure with detailed mixin breakdown (streaming, diarization, summarization, meeting, project, OIDC)
- Added database schema overview covering ORM models across core, identity, integrations, entities, observability, and organization domains
- Documented testing conventions including
2026-01-16 09:40:04 -05:00
9ca570213f docs: add comprehensive code review findings and implementation plan for client library improvements
- Added codefixes.md documenting code review of client/src/lib with 6 findings covering localStorage performance, crypto recovery, preferences hydration, and AI provider architecture
- Added implementation-plan.md with 4-phase remediation strategy prioritizing critical bugs (preferences local-only key inconsistency, missing stack traces) before performance optimizations
- Identified preferences hy
2026-01-16 09:36:47 -05:00
74cb4da680 ```
feat: add drift compensation system for synchronized audio capture with EMA-based detection and resampling

- Added DriftDetector using exponential moving average and linear regression to calculate clock drift in ppm between primary/secondary audio sources
- Implemented DriftMetrics for tracking overflow counts, adjustment counts, and throttled logging to prevent log spam
- Created DriftCompensator with rubato-based resampling to apply dynamic ratio adjustments when drift exceeds threshold
- Added comprehensive
2026-01-16 07:16:02 -05:00
86d3dfef5c .. 2026-01-16 04:18:41 -05:00
389eba0a95 feat: add GPU-accelerated Docker profiles and optimize gRPC streaming configuration
- Added server-gpu and full-gpu Docker Compose profiles with NVIDIA CUDA support for GPU-accelerated inference
- Created server-gpu.Dockerfile with PyTorch CUDA base image and GPU runtime configuration
- Added compose.gpu.yaml for optional GPU allocation customization (device count, IDs, memory settings)
- Documented GPU setup requirements for Linux (nvidia-container-toolkit), Windows WSL2, and macOS in docker/CLAUDE
2026-01-15 23:45:00 -05:00
1d2bc25024 refactor: add API initialization memoization and replace initializeAPI with getAPI across hooks
- Added initializePromise singleton to prevent concurrent API initialization attempts and ensure single initialization
- Wrapped initializeAPI logic in IIFE that caches promise and clears on error for retry capability
- Replaced all initializeAPI() calls with synchronous getAPI() in hooks (useAudioDevices, useDiarization, usePostProcessing, useRecordingAppPolicy)
- Updated corresponding test mocks from
2026-01-16 01:34:33 +00:00
2b908b5d64 refactor: integrate RichHandler for enhanced console logging with custom rendering
- Replaced structlog.dev.ConsoleRenderer with RichHandler for richer terminal output with clickable paths, time formatting, and keyword highlighting
- Added _render_for_rich_handler processor to output minimal event + context, avoiding duplication with RichHandler's built-in decorations
- Introduced module-level _rich_console for consistent stderr output and terminal detection across all Rich components
- Added _
2026-01-15 23:19:31 +00:00
bd1108b157 refactor: add project ID normalization and improve diarization error handling
- Added normalizeProjectId and normalizeProjectIds functions to filter out default/empty project IDs before sending to backend
- Applied normalization to setActiveProject, createMeeting, and listMeetings API calls
- Added AssertionError to caught exceptions in streaming diarization and session chunk processing
- Updated repomix config to focus on src/noteflow/infrastructure directory
- Added mock_torch_minimal fixture to
2026-01-15 22:48:10 +00:00
db0cee7132 refactor: add debouncing to preference persistence and improve CPU feature detection
- Added 500ms debounce to persistPreferencesToTauri to batch rapid changes (e.g., typing) into single disk writes
- Extracted _persistPreferencesImpl as internal implementation, with public function handling debounce logic
- Fixed diarization SlidingWindow configuration to use per-sample duration instead of chunk duration, resolving frames/weights mismatch warnings
- Added DEFAULT_PROJECT_ID constant and update
2026-01-15 21:51:00 +00:00
7d072437fd refactor: optimize state updates and reduce unnecessary re-renders across client and server
- Added change detection in audio device preference updates to skip redundant disk writes when values haven't changed
- Implemented PartialEq for AudioDevicePrefs to enable equality comparison
- Reduced logging verbosity: changed get_preferences and persist_preferences_to_disk from info to trace/debug, and gRPC identity interceptor from debug to trace
- Fixed ProjectProvider oscillation loop by using ref
2026-01-15 21:38:34 +00:00
c864fa8624 ```
refactor: extract ASR configuration management into focused manager classes

- Split AsrConfigService into three focused components for better separation of concerns:
  - AsrEngineManager: handles engine lifecycle, model loading, and capability detection
  - AsrJobManager: manages job tracking, status updates, and shutdown cleanup
  - AsrConfigService: orchestrates configuration changes using the managers
- Moved engine creation, validation, and persistence logic to AsrEngineManager
- Moved job registration
2026-01-15 19:58:26 +00:00
04fec933ac feat: enhance summarization and diarization features with memory logging and action item extraction
- Introduced memory snapshot logging to track resource usage during summarization and diarization processes.
- Added action item extraction capabilities from meeting segments, improving the summarization output.
- Refactored summarization and diarization mixins to integrate new logging and extraction functionalities.
- Implemented a bounded audio buffer for streaming diarization to manage memory efficiently.
- Enhanced error handling and diagnostics in summarization and diarization workflows.
2026-01-15 14:43:59 -05:00
1ce24cdf7b feat: reorganize Claude hooks and add RAG documentation structure with error handling policies
- Moved all hookify configuration files from `.claude/` to `.claude/hooks/` subdirectory for better organization
- Added four new blocking hooks to prevent common error handling anti-patterns:
  - `block-broad-exception-handler`: Prevents catching generic `Exception` with only logging
  - `block-datetime-now-fallback`: Blocks returning `datetime.now()` as fallback on parse failures to prevent data corruption
  - `block-default
2026-01-15 15:58:06 +00:00
a95a92ca25 feat: enhance summarization and diarization features with memory logging and action item extraction
- Integrated memory snapshot logging throughout the summarization and diarization processes to improve diagnostics and performance tracking.
- Added action item extraction capabilities from meeting segments, utilizing predefined keywords to identify actionable tasks.
- Refactored summarization generation to ensure cloud provider registration is handled dynamically based on application configuration.
- Introduced a new audio buffer class for managing streaming audio data in the diarization process, enhancing memory management and performance.
- Updated various mixins to incorporate model status logging for better observability during processing stages.
2026-01-15 02:45:11 -05:00
ec07cb6dd4 x 2026-01-14 23:23:01 -05:00
1497eb4051 x 2026-01-14 22:45:37 -05:00
83e6b50983 refactor: update configuration and testing for export settings
- Changed `repomix.config.json` to disable comment removal, empty line removal, and compression, while enabling Base64 truncation.
- Updated the include paths to add a new "tests/" directory.
- Enhanced the `ExportAISection` tests by refining mock implementations and adding new test cases for export settings, template presets, and UI elements.
- Improved the `useAsyncData` hook to store success and error callbacks in refs to prevent unnecessary re-fetching.
- Adjusted timer handling in `useAsrConfig` tests for better accuracy and reliability.
- Added new mock implementations in `RecordingPage` tests to ensure proper state management during rendering.
2026-01-15 03:42:12 +00:00
fd956c8204 docs: remove submodule references from README 2026-01-14 22:25:56 +00:00
35e2ce43b3 Convert client from submodule to regular directory 2026-01-14 22:24:15 +00:00
dedb496e9e chore: update client submodule to latest commit for improved integration 2026-01-14 14:19:51 -05:00
763afd8490 chore: update client submodule to latest commit for improved integration 2026-01-14 02:54:39 -05:00
adb0de4446 feat: add comprehensive performance profiling script for backend
- Introduced `profile_comprehensive.py` for detailed performance analysis of the NoteFlow backend, covering audio processing, ORM conversions, Protobuf operations, async overhead, and gRPC simulations.
- Implemented options for cProfile, verbose output, and memory profiling to enhance profiling capabilities.
- Updated `asr_config_service.py` to improve engine reference handling and added observability tracing during reconfiguration.
- Enhanced gRPC service shutdown procedures to include cancellation of sync tasks and improved lifecycle management.
- Refactored various components to ensure proper cleanup and resource management during shutdown.
- Updated client submodule to the latest commit for improved integration.
2026-01-14 01:18:43 -05:00
0c1dbb362f feat: add structured logging for persistence and export operations
- Introduced logging for CRUD operations in repositories to enhance visibility into database interactions.
- Implemented timing logs for BaseRepository and UnitOfWork lifecycle events to track performance.
- Added export logging for size and duration without exposing sensitive content.
- Promoted logging levels for specific operations to improve clarity and reduce noise in logs.
- Established a framework for consistent logging practices across persistence and export functionalities.
2026-01-14 01:18:44 +00:00
5713abd07b feat: implement ASR configuration persistence and enhance service integration
- Added `asr_config_persistence.py` to handle ASR configuration preferences, including methods for building and resolving preferences.
- Updated `AsrConfigService` to include an asynchronous callback for persisting ASR configuration after reconfiguration.
- Introduced new constants for ASR settings in `constants` modules to improve clarity and maintainability.
- Enhanced gRPC service to load persisted ASR configuration on startup, ensuring consistent behavior across sessions.
- Refactored related components to utilize the new ASR configuration management features.
2026-01-13 21:24:33 +00:00
22d6d200d7 chore: update client submodule to latest commit for improved integration 2026-01-13 16:06:40 +00:00