202 Commits

Author SHA1 Message Date
0d98a36317 fix(client): reduce unnecessary renders and fetches on hard refresh
Some checks failed
CI / test-python (push) Successful in 4m54s
CI / test-typescript (push) Failing after 57s
CI / test-rust (push) Successful in 1m56s
- Contexts wait for connection before loading to avoid stale cached data
- MeetingsPage skips fetch when URL project ID is invalid
- Workspace isLoading starts as true for proper loading state
- Remove debug logging added during investigation
- Add PROJECTS_FETCH_LIMIT constant to timing.ts
2026-01-26 14:59:50 +00:00
01a8d02d60 fix(client): initialize project loading state to true to prevent race condition
Some checks failed
CI / test-python (push) Successful in 4m53s
CI / test-typescript (push) Failing after 1m8s
CI / test-rust (push) Successful in 1m56s
The Meetings page skips fetching when projectsLoading is false and
activeProject is null. Since isLoading started as false, the initial
render would skip the fetch before projects had a chance to load.

By initializing isLoading to true, the Meetings page waits for the
project context to finish loading before deciding whether to fetch.
2026-01-26 13:50:28 +00:00
f9db9cd8ca fix(client): close delete dialog on successful bulk deletion
Added onSuccess callback to useDeleteMeetings hook and use it in
Meetings.tsx to close dialog, clear selection, and exit selection mode.

Removed flaky useEffect that tried to detect deletion success by
checking if meetings still existed in the list.
2026-01-26 13:40:10 +00:00
2cf4f26a9d fix(tauri): serialize DeleteMeetingsResponse with camelCase for TypeScript
Some checks failed
CI / test-python (push) Successful in 4m53s
CI / test-typescript (push) Failing after 1m32s
CI / test-rust (push) Successful in 3m41s
The Rust struct used snake_case field names (succeeded_ids, deleted_count)
but TypeScript expected camelCase (succeededIds, deletedCount), causing
'result.succeededIds is not iterable' error.

Added #[serde(rename_all = "camelCase")] to match the existing pattern
used by other response types in the codebase.
2026-01-26 13:31:32 +00:00
8ed1ec4125 fix(client): add deleteMeetings to mock adapter and Tauri constants
The bulk delete operation failed because:
1. TauriCommands.DELETE_MEETINGS constant was missing
2. Mock adapter didn't implement deleteMeetings method

Added:
- DELETE_MEETINGS: 'delete_meetings' to TauriCommands
- deleteMeetings() implementation to mock adapter with proper
  handling for recording meetings (skipped, not deleted)
2026-01-26 13:19:16 +00:00
d65b8eac03 fix(client): toggle checkbox via wrapper onClick to prevent Link navigation
The issue: Radix UI Checkbox's onCheckedChange doesn't fire when
e.preventDefault() is called in onClick (needed to block parent Link).

Solution: Remove onClick/onCheckedChange from Checkbox, handle toggle
manually in the wrapper div's onClick handler by calling onSelect
directly with the inverted state.
2026-01-26 13:11:28 +00:00
a160652322 fix(client): prevent checkbox click from triggering link navigation 2026-01-26 13:05:16 +00:00
3bc9a16cd1 test(client): add MeetingCard checkbox selection and navigation tests 2026-01-26 12:59:32 +00:00
585b18a3b6 fix(client): allow checkbox click to toggle selection state 2026-01-26 12:40:53 +00:00
cbe91cd9f6 fix(client): hide MeetingCard checkbox when not in selection mode 2026-01-26 12:35:12 +00:00
69cf3e3d08 fix(client): prevent checkbox click from navigating to meeting detail
Use fieldset element to wrap checkbox with proper event handling:
- e.preventDefault() + e.stopPropagation() on both fieldset and Checkbox
- Prevents Link navigation when clicking checkbox
- Uses semantic fieldset element with aria-label for a11y compliance
- No lint suppressions needed
2026-01-26 11:35:07 +00:00
61bb046dae fix(client): fix MeetingCard checkbox layout and resolve TypeScript errors
- Replace absolute-positioned checkbox with flex-based layout in MeetingCard
- Use smooth width transition (w-0 -> w-10) to prevent layout shift
- Fix toast API usage: replace toast.success/error/warning with toast({...})
- Fix Meetings.tsx: remove unsupported options arg from deleteMeetings call
- Add useEffect to handle bulk delete success state
- Fix PlaybackInfo in header tests: add missing is_paused property
2026-01-26 11:26:24 +00:00
9fd838c63e fix(client): add selection mode toggle for bulk delete UX
- Add 'Select' toggle button in filter area
- Checkboxes only visible when selection mode is active
- Hide individual trash buttons during selection mode
- Exit selection mode when: deselecting all, deleting, or changing filters
- Resolves visual conflict between checkbox and card title
- Removes redundancy between checkbox and trash button

The checkbox now appears on-demand via toggle, providing cleaner default UI.
2026-01-26 10:59:27 +00:00
b9eee07135 feat(client): integrate bulk delete in Meetings page
- Add selection state management with Set<string>
- Integrate useDeleteMeetings hook with confirmation dialog
- Implement select/deselect/selectAll handlers
- Render BulkActionToolbar when selections > 0
- Clear selections on filter/pagination changes
- Add ConfirmationDialog for bulk delete confirmation
- Fix missing index.ts for request types
- Fix useToast import path

Completes full bulk delete flow from UI to backend.

Refs: mass-delete-meetings plan task 8
2026-01-26 10:27:47 +00:00
2ac921da1f feat(client): add MeetingCard selection and BulkActionToolbar
- Add DeleteMeetingsResult interface to API types
- Implement deleteMeetings adapter method with cache updates
- Add useDeleteMeetings hook with optimistic updates and rollback
- Add checkbox selection props to MeetingCard component
- Create BulkActionToolbar component with sticky bottom positioning
- Export BulkActionToolbar from meetings index

Enables frontend bulk delete UI with selection and confirmation.

Refs: mass-delete-meetings plan tasks 5-7
2026-01-26 10:17:56 +00:00
8b47daba8b feat(tauri): add delete_meetings bulk delete command
- Add DeleteMeetingsRequest/Response types to core.rs
- Implement delete_meetings method in gRPC client
- Add delete_meetings Tauri command in meeting.rs
- Register command in app handler

Enables frontend to bulk delete meetings via single IPC call.

Refs: mass-delete-meetings plan tasks 3-4
2026-01-26 09:56:35 +00:00
bd48505249 feat(client): add delete meeting from detail page
- Add overflow menu with delete option to Header component
- Integrate delete flow with confirmation dialog in MeetingDetailPage
- Extract delete logic to useDeleteMeeting hook for code organization
- Add comprehensive unit tests for delete functionality
- Guard against deleting active meetings (recording/stopping states)
- Navigate to /meetings on successful deletion
- All quality gates pass (479 lines in index.tsx, under 500 limit)
2026-01-26 08:40:21 +00:00
e80c605786 stash
Some checks failed
CI / test-typescript (push) Has been cancelled
CI / test-rust (push) Has been cancelled
CI / test-python (push) Has been cancelled
2026-01-26 06:55:13 +00:00
8b0da552e1 test: add include_summary parameter to API request test expectations.
Some checks failed
CI / test-python (push) Failing after 4m33s
CI / test-typescript (push) Successful in 10m54s
CI / test-rust (push) Failing after 4m37s
2026-01-26 02:45:23 +00:00
94d92b814f feat: centralize analytics service test fixtures and correct cache invalidation assertion logic.
Some checks failed
CI / test-python (push) Failing after 22m25s
CI / test-typescript (push) Failing after 5m56s
CI / test-rust (push) Failing after 6m56s
2026-01-25 03:40:19 +00:00
42c8fba642 Merge branch 'master' of https://git.baked.rocks/vasceannie/noteflow
Some checks failed
CI / test-python (push) Failing after 17m27s
CI / test-typescript (push) Failing after 6m9s
CI / test-rust (push) Failing after 7m2s
2026-01-24 21:09:15 -05:00
6df31ec708 feat: add comprehensive performance profiling tests for frontend and backend operations, including round-trip, streaming, and bulk operations. 2026-01-24 21:09:10 -05:00
abe20d6f8c feat: allow including meeting summaries in ListMeetings requests and responses
Some checks failed
CI / test-rust (push) Has been cancelled
CI / test-typescript (push) Has been cancelled
CI / test-python (push) Has been cancelled
Proto Sync / regenerate-stubs (push) Failing after 6m56s
2026-01-25 02:05:30 +00:00
2641a9fc03 optimization
Some checks failed
CI / test-python (push) Failing after 17m22s
CI / test-rust (push) Has been cancelled
CI / test-typescript (push) Has been cancelled
2026-01-25 01:40:14 +00:00
dab973d8aa x
Some checks failed
CI / test-python (push) Failing after 22m26s
CI / test-typescript (push) Successful in 11m4s
CI / test-rust (push) Failing after 7m11s
2026-01-24 17:02:07 -05:00
b11633192a deps
Some checks failed
CI / test-python (push) Failing after 22m14s
CI / test-rust (push) Has been cancelled
CI / test-typescript (push) Has been cancelled
2026-01-24 21:31:58 +00:00
100ca5596b mac
Some checks failed
CI / test-python (push) Failing after 16m26s
CI / test-rust (push) Has been cancelled
CI / test-typescript (push) Has been cancelled
2026-01-24 12:47:35 -05:00
09d70af58f feat: Prevent duplicate secure storage unavailability warnings, include segments in meeting listings, and simplify ORM converter docstrings. 2026-01-24 11:46:35 +00:00
44d477de07 Merge branch 'master' of https://git.baked.rocks/vasceannie/noteflow 2026-01-24 05:52:35 -05:00
da1fa27048 fix: Refactor WASAPI initialization error handling to use a more explicit HRESULT value check. 2026-01-24 05:52:07 -05:00
23e8873bc2 fixed ai 2026-01-24 10:40:30 +00:00
d33c421756 huge 2026-01-23 07:45:20 +00:00
60540f373c merging langgraph changes into master 2026-01-22 17:34:49 +00:00
19e39bed5a big commit 2026-01-22 15:34:56 +00:00
073b70cc39 xx 2026-01-22 04:40:05 +00:00
f70b35c39f fix: Improve WASAPI initialization error handling in the audio loopback thread by checking HRESULT and providing detailed error messages. 2026-01-20 16:17:52 -05:00
25fcd5d7f2 feat: Update gRPC logging and identity interceptors, remove stub patching script, and update project dependencies. 2026-01-20 21:13:12 +00:00
a4f148ace0 feat: introduce Claude agent guidelines for code generation and project configuration across various modules.u 2026-01-20 14:31:13 +00:00
40f9adf27f feat: introduce GLiNER and spaCy backends for NER, refactor NER infrastructure, and update client-side entity extraction. 2026-01-20 03:47:12 +00:00
00095896a5 docs: add new CLAUDE.md documentation files across various components and update Claude configuration. 2026-01-20 03:16:01 +00:00
217a867a8d refactor: reorganize component exports, remove deprecated integration config panels, and add new UI hooks and icons. 2026-01-19 22:21:04 +00:00
1835dcae92 feat: Add new UI components for various features including recording, notes, and analytics, and refactor integration configuration panels. 2026-01-19 22:16:48 +00:00
362a1a4dd7 refactor(api): reorganize client directory structure and enhance module organization for improved maintainability and error handling 2026-01-19 12:24:56 -05:00
7511f3a572 refactor: simplify ASR processing by removing intermediate dataclasses and directly passing arguments. 2026-01-19 13:05:24 +00:00
38a4f53967 feat: implement streaming optimization codefixes (11 items)
Audio & Performance:
- Add bytemuck for zero-copy f32→bytes conversion (O(1) cast)
- Client backpressure throttling with THROTTLE_THRESHOLD_MS
- Disable Whisper VAD for streaming (vad_filter=False)
- Cache meeting_db_id in MeetingStreamState to reduce DB overhead
- Adaptive partial cadence multiplier under congestion

Diarization:
- Auto-trigger offline diarization refinement (diarization_auto_refine setting)
- Reduce streaming window: MAX_TURN_AGE 15→5min, MAX_TURN_COUNT 5000→1000

Testing:
- Add 34 audio format conversion tests (test_audio_processing.py)
- Fix pre-existing test failures: path prefixes (_mixins→mixins)
- Fix test_sync_orchestration: error_code vs error_message

Quality:
- All checks pass: basedpyright (0/0/0), quality tests (90+28), grpc (678)
2026-01-19 11:26:23 +00:00
fbe7fc66d8 feat: enhance diarization skipped job logging with meeting creator ID and improve dev server robustness with execvp error handling. 2026-01-19 09:53:55 +00:00
552519ca7a fix(api): harden tauri adapter init and stream close 2026-01-19 09:53:55 +00:00
7587b1a028 refactor(api): split tauri adapter 2026-01-19 09:53:55 +00:00
354ad02f9a fix(api): harden tauri adapter init and stream close 2026-01-19 08:13:36 +00:00
ba2c3f3b58 refactor(api): split tauri adapter 2026-01-19 08:13:36 +00:00