gitextract_0o688pqc/ ├── .cursor/ │ ├── commands/ │ │ ├── agno_agent.md │ │ ├── agno_agent_CN.md │ │ ├── backend.md │ │ ├── backend_CN.md │ │ ├── dynamic-island.md │ │ ├── web.md │ │ └── web_CN.md │ └── plans/ │ ├── lifetrace_全面优化_76b5f86f.plan.md │ ├── tauri_迁移方案_38d8ea4b.plan.md │ ├── 后台持续录音方案_c7c8f0fe.plan.md │ └── 打包与性能优化_ecd1657a.plan.md ├── .gitattributes ├── .githooks/ │ ├── post-checkout │ └── pre-commit ├── .github/ │ ├── BACKEND_GUIDELINES.md │ ├── BACKEND_GUIDELINES_CN.md │ ├── CONTRIBUTING.md │ ├── CONTRIBUTING_CN.md │ ├── FRONTEND_GUIDELINES.md │ ├── FRONTEND_GUIDELINES_CN.md │ ├── GIT_FLOW.md │ ├── GIT_FLOW_CN.md │ ├── INSTALL.md │ ├── INSTALL_CN.md │ ├── PRE_COMMIT_GUIDE.md │ ├── PRE_COMMIT_GUIDE_CN.md │ ├── ROADMAP.md │ ├── ROADMAP_CN.md │ ├── dependabot.yml │ └── workflows/ │ ├── _disabled/ │ │ ├── dev-build-verify.yml │ │ └── tauri-release.yml │ ├── dependency-review.yml │ └── pre-commit.yml ├── .gitignore ├── .pre-commit-config.yaml ├── .python-version ├── AGENTS.md ├── CODE_OF_CONDUCT.md ├── LICENSE ├── README.md ├── README_CN.md ├── bandit.yaml ├── biome.json ├── free-todo-frontend/ │ ├── .gitignore │ ├── app/ │ │ ├── globals.css │ │ ├── home/ │ │ │ ├── HomePageClient.tsx │ │ │ └── HomePageEntry.tsx │ │ ├── island/ │ │ │ ├── island.css │ │ │ ├── layout.tsx │ │ │ └── page.tsx │ │ ├── layout.tsx │ │ └── page.tsx │ ├── apps/ │ │ ├── achievements/ │ │ │ └── AchievementsPanel.tsx │ │ ├── activity/ │ │ │ ├── ActivityCard.tsx │ │ │ ├── ActivityDetail.tsx │ │ │ ├── ActivityHeader.tsx │ │ │ ├── ActivityPanel.tsx │ │ │ ├── ActivitySidebar.tsx │ │ │ ├── ActivitySummary.tsx │ │ │ └── utils/ │ │ │ └── timeUtils.ts │ │ ├── audio/ │ │ │ ├── AudioPanel.tsx │ │ │ ├── components/ │ │ │ │ ├── AudioExtractionPanel.tsx │ │ │ │ ├── AudioHeader.tsx │ │ │ │ ├── AudioList.tsx │ │ │ │ ├── AudioPlayer.tsx │ │ │ │ ├── RecordingStatus.tsx │ │ │ │ ├── StopRecordingConfirm.tsx │ │ │ │ └── TranscriptionView.tsx │ │ │ ├── hooks/ │ │ │ │ ├── useAudioData.ts │ │ │ │ ├── useAudioDateSwitching.ts │ │ │ │ ├── useAudioLink.ts │ │ │ │ ├── useAudioPlayback.ts │ │ │ │ ├── useAudioRecording.ts │ │ │ │ ├── useAudioRecordingControl.ts │ │ │ │ ├── useSegmentSync.ts │ │ │ │ └── useStopRecordingConfirm.ts │ │ │ └── utils/ │ │ │ ├── parseTimeToIsoWithDate.ts │ │ │ └── timeUtils.ts │ │ ├── calendar/ │ │ │ ├── CalendarPanel.tsx │ │ │ ├── components/ │ │ │ │ ├── DayColumn.tsx │ │ │ │ ├── DraggableTodo.tsx │ │ │ │ ├── FloatingTodoCard.tsx │ │ │ │ ├── QuickCreateBar.tsx │ │ │ │ ├── QuickCreatePopover.tsx │ │ │ │ ├── TimelineColumn.tsx │ │ │ │ ├── TimelineCreatePopover.tsx │ │ │ │ ├── TimelineSlot.tsx │ │ │ │ └── TimelineTodoCard.tsx │ │ │ ├── hooks/ │ │ │ │ └── useMonthScroll.ts │ │ │ ├── types.ts │ │ │ ├── utils.ts │ │ │ └── views/ │ │ │ ├── DayView.tsx │ │ │ ├── MonthScroller.tsx │ │ │ ├── MonthView.tsx │ │ │ ├── WeekView.tsx │ │ │ └── useWeekViewActions.ts │ │ ├── chat/ │ │ │ ├── ChatPanel.tsx │ │ │ ├── components/ │ │ │ │ ├── breakdown/ │ │ │ │ │ ├── BreakdownStageRenderer.tsx │ │ │ │ │ ├── BreakdownSummary.tsx │ │ │ │ │ └── Questionnaire.tsx │ │ │ │ ├── input/ │ │ │ │ │ ├── ChatInputSection.tsx │ │ │ │ │ ├── InputBox.tsx │ │ │ │ │ ├── LinkedTodos.tsx │ │ │ │ │ ├── PromptSuggestions.tsx │ │ │ │ │ └── ToolSelector.tsx │ │ │ │ ├── layout/ │ │ │ │ │ ├── HeaderBar.tsx │ │ │ │ │ ├── HistoryDrawer.tsx │ │ │ │ │ └── WelcomeGreetings.tsx │ │ │ │ └── message/ │ │ │ │ ├── EditModeMessage.tsx │ │ │ │ ├── MarkdownComponents.tsx │ │ │ │ ├── MessageContent.tsx │ │ │ │ ├── MessageContextMenu.tsx │ │ │ │ ├── MessageItem.tsx │ │ │ │ ├── MessageList.tsx │ │ │ │ ├── MessageSources.tsx │ │ │ │ ├── MessageTodoExtractionModal.tsx │ │ │ │ ├── MessageTodoExtractionPanel.tsx │ │ │ │ ├── SummaryStreaming.tsx │ │ │ │ ├── ToolCallLoading.tsx │ │ │ │ ├── ToolCallSteps.tsx │ │ │ │ └── utils/ │ │ │ │ └── messageContentUtils.ts │ │ │ ├── hooks/ │ │ │ │ ├── useBreakdownQuestionnaire.ts │ │ │ │ ├── useBreakdownService.ts │ │ │ │ ├── useChatController.ts │ │ │ │ ├── useChatPrompts.ts │ │ │ │ ├── useMessageExtraction.ts │ │ │ │ ├── useMessageScroll.ts │ │ │ │ ├── usePlanParser.ts │ │ │ │ ├── useSendMessage.ts │ │ │ │ ├── useSessionCache.ts │ │ │ │ ├── useSessionManager.ts │ │ │ │ ├── useStreamController.ts │ │ │ │ └── useToolCallTracker.ts │ │ │ ├── types.ts │ │ │ └── utils/ │ │ │ ├── id.ts │ │ │ ├── messageBuilder.ts │ │ │ ├── parseEditBlocks.ts │ │ │ ├── responseHandlers.ts │ │ │ └── todoContext.ts │ │ ├── cost-tracking/ │ │ │ ├── CostTrackingPanel.tsx │ │ │ └── index.ts │ │ ├── debug/ │ │ │ ├── DebugCapturePanel.tsx │ │ │ ├── components/ │ │ │ │ ├── EventCard.tsx │ │ │ │ ├── EventSearchForm.tsx │ │ │ │ ├── ScreenshotModal.tsx │ │ │ │ ├── SelectedEventsBar.tsx │ │ │ │ └── index.ts │ │ │ ├── hooks/ │ │ │ │ ├── index.ts │ │ │ │ ├── useEventActions.ts │ │ │ │ └── useEventData.ts │ │ │ └── utils.ts │ │ ├── diary/ │ │ │ ├── DiaryEditor.tsx │ │ │ ├── DiaryHeader.tsx │ │ │ ├── DiaryPanel.tsx │ │ │ ├── DiarySettings.tsx │ │ │ ├── DiaryTabs.tsx │ │ │ ├── JournalHistory.tsx │ │ │ ├── index.ts │ │ │ ├── journal-utils.ts │ │ │ └── types.ts │ │ ├── settings/ │ │ │ ├── SettingsPanel.tsx │ │ │ ├── components/ │ │ │ │ ├── AudioAsrConfigSection.tsx │ │ │ │ ├── AudioConfigSection.tsx │ │ │ │ ├── AutoTodoDetectionSection.tsx │ │ │ │ ├── AutomationTasksSection.tsx │ │ │ │ ├── DifyConfigSection.tsx │ │ │ │ ├── DockDisplayModeSection.tsx │ │ │ │ ├── JournalSettingsSection.tsx │ │ │ │ ├── LlmConfigSection.tsx │ │ │ │ ├── NotificationPermissionSection.tsx │ │ │ │ ├── OnboardingSection.tsx │ │ │ │ ├── PanelSwitchesSection.tsx │ │ │ │ ├── RecorderConfigSection.tsx │ │ │ │ ├── SchedulerSection.tsx │ │ │ │ ├── SettingsCategoryPanel.tsx │ │ │ │ ├── SettingsSearchAction.tsx │ │ │ │ ├── SettingsSection.tsx │ │ │ │ ├── TavilyConfigSection.tsx │ │ │ │ ├── ToggleSwitch.tsx │ │ │ │ ├── VersionInfoSection.tsx │ │ │ │ └── index.ts │ │ │ ├── hooks/ │ │ │ │ └── useSettingsSearchMatchStats.ts │ │ │ └── index.ts │ │ ├── todo-detail/ │ │ │ ├── TodoDetail.tsx │ │ │ ├── components/ │ │ │ │ ├── ArtifactsView.tsx │ │ │ │ ├── AttachmentPreviewPanel.tsx │ │ │ │ ├── BackgroundSection.tsx │ │ │ │ ├── ChildTodoSection.tsx │ │ │ │ ├── DatePickerCalendar.tsx │ │ │ │ ├── DatePickerPopover.tsx │ │ │ │ ├── DatePickerSidePanel.tsx │ │ │ │ ├── DetailHeader.tsx │ │ │ │ ├── DetailTitle.tsx │ │ │ │ ├── MetaSection.tsx │ │ │ │ ├── NotesEditor.tsx │ │ │ │ └── datePickerUtils.ts │ │ │ ├── helpers.ts │ │ │ ├── hooks/ │ │ │ │ └── useNotesAutosize.ts │ │ │ ├── index.ts │ │ │ └── utils/ │ │ │ ├── date-utils.ts │ │ │ ├── holiday-utils.ts │ │ │ ├── index.ts │ │ │ └── lunar-utils.ts │ │ └── todo-list/ │ │ ├── CreateTodoForm.tsx │ │ ├── NewTodoInlineForm.tsx │ │ ├── TodoCard.tsx │ │ ├── TodoExtractionModal.tsx │ │ ├── TodoList.tsx │ │ ├── TodoToolbar.tsx │ │ ├── TodoTreeList.tsx │ │ ├── components/ │ │ │ ├── TodoCardCheckbox.tsx │ │ │ ├── TodoCardChildForm.tsx │ │ │ ├── TodoCardDropZone.tsx │ │ │ ├── TodoCardExpandButton.tsx │ │ │ ├── TodoCardMetadata.tsx │ │ │ ├── TodoCardName.tsx │ │ │ └── TodoFilter.tsx │ │ ├── hooks/ │ │ │ ├── useOrderedTodos.ts │ │ │ ├── useTodoCardDrag.ts │ │ │ ├── useTodoCardHandlers.ts │ │ │ └── useTodoCardState.ts │ │ ├── index.ts │ │ └── utils/ │ │ └── todoCardUtils.ts │ ├── components/ │ │ ├── common/ │ │ │ ├── ReminderOptions.tsx │ │ │ ├── context-menu/ │ │ │ │ ├── BaseContextMenu.tsx │ │ │ │ ├── MultiTodoContextMenu.tsx │ │ │ │ └── TodoContextMenu.tsx │ │ │ ├── layout/ │ │ │ │ ├── CollapsibleSection.tsx │ │ │ │ ├── LayoutSelector.tsx │ │ │ │ ├── LayoutSelectorDialogs.tsx │ │ │ │ ├── PanelHeader.tsx │ │ │ │ └── SectionHeader.tsx │ │ │ ├── theme/ │ │ │ │ ├── ThemeProvider.tsx │ │ │ │ ├── ThemeStyleSelect.tsx │ │ │ │ └── ThemeToggle.tsx │ │ │ └── ui/ │ │ │ ├── BackendReadyGate.tsx │ │ │ ├── CapabilitiesSync.tsx │ │ │ ├── DockTriggerZone.tsx │ │ │ ├── FrontendBoot.tsx │ │ │ ├── LanguageToggle.tsx │ │ │ ├── LocaleSync.tsx │ │ │ ├── ScrollbarController.tsx │ │ │ ├── SettingsToggle.tsx │ │ │ └── UserAvatar.tsx │ │ ├── date-picker/ │ │ │ ├── DateOnlyPickerCalendar.tsx │ │ │ ├── DateOnlyPickerPopover.tsx │ │ │ └── date-picker-utils.ts │ │ ├── island/ │ │ │ ├── DynamicIsland.tsx │ │ │ ├── IslandContent.tsx │ │ │ ├── IslandFullscreenContent.tsx │ │ │ ├── IslandHeader.tsx │ │ │ ├── IslandSidebarContent.tsx │ │ │ └── index.ts │ │ ├── layout/ │ │ │ ├── AppHeader.tsx │ │ │ ├── BottomDock.tsx │ │ │ ├── FullscreenHeader.tsx │ │ │ ├── PanelContainer.tsx │ │ │ ├── PanelContent.tsx │ │ │ ├── PanelRegion.tsx │ │ │ ├── PanelSelectorMenu.tsx │ │ │ └── ResizeHandle.tsx │ │ ├── notification/ │ │ │ └── HeaderIsland.tsx │ │ └── ui/ │ │ ├── alert-dialog.tsx │ │ ├── button.tsx │ │ ├── dialog.tsx │ │ └── dropdown-menu.tsx │ ├── electron/ │ │ ├── PACKAGING_GUIDE.md │ │ ├── PACKAGING_GUIDE_CN.md │ │ ├── backend-server.ts │ │ ├── bootstrap-control.ts │ │ ├── bootstrap-status.ts │ │ ├── bootstrap-window.ts │ │ ├── config.ts │ │ ├── git-info.ts │ │ ├── global-shortcut-manager.ts │ │ ├── ipc-handlers-todo-capture.ts │ │ ├── ipc-handlers.ts │ │ ├── island-window-manager.ts │ │ ├── logger.ts │ │ ├── main.ts │ │ ├── next-server.ts │ │ ├── notification.ts │ │ ├── port-manager.ts │ │ ├── preload.ts │ │ ├── process-manager.ts │ │ ├── python-runtime-command.ts │ │ ├── python-runtime-env.ts │ │ ├── python-runtime-installer.ts │ │ ├── python-runtime.ts │ │ ├── runtime-paths.ts │ │ ├── tray-manager.ts │ │ ├── tsconfig.json │ │ └── window-manager.ts │ ├── electron-builder.island.pyinstaller.yml │ ├── electron-builder.island.script.yml │ ├── electron-builder.island.yml │ ├── electron-builder.web.pyinstaller.yml │ ├── electron-builder.web.script.yml │ ├── electron-builder.web.yml │ ├── electron-builder.yml │ ├── global.d.ts │ ├── lib/ │ │ ├── api/ │ │ │ └── fetcher.ts │ │ ├── api.ts │ │ ├── attachments.ts │ │ ├── config/ │ │ │ └── panel-config.ts │ │ ├── dnd/ │ │ │ ├── context.tsx │ │ │ ├── handlers.ts │ │ │ ├── index.ts │ │ │ ├── overlays.tsx │ │ │ └── types.ts │ │ ├── generated/ │ │ │ ├── activity/ │ │ │ │ └── activity.ts │ │ │ ├── audio/ │ │ │ │ └── audio.ts │ │ │ ├── case-transform.ts │ │ │ ├── chat/ │ │ │ │ └── chat.ts │ │ │ ├── config/ │ │ │ │ └── config.ts │ │ │ ├── cost-tracking/ │ │ │ │ └── cost-tracking.ts │ │ │ ├── default/ │ │ │ │ └── default.ts │ │ │ ├── event/ │ │ │ │ └── event.ts │ │ │ ├── floating-capture/ │ │ │ │ └── floating-capture.ts │ │ │ ├── journals/ │ │ │ │ └── journals.ts │ │ │ ├── logs/ │ │ │ │ └── logs.ts │ │ │ ├── notifications/ │ │ │ │ └── notifications.ts │ │ │ ├── ocr/ │ │ │ │ └── ocr.ts │ │ │ ├── proactive-ocr/ │ │ │ │ └── proactive-ocr.ts │ │ │ ├── rag/ │ │ │ │ └── rag.ts │ │ │ ├── scheduler/ │ │ │ │ └── scheduler.ts │ │ │ ├── schemas/ │ │ │ │ ├── activityEventsResponse.ts │ │ │ │ ├── activityListResponse.ts │ │ │ │ ├── activityResponse.ts │ │ │ │ ├── activityResponseAiSummary.ts │ │ │ │ ├── activityResponseAiTitle.ts │ │ │ │ ├── activityResponseCreatedAt.ts │ │ │ │ ├── activityResponseUpdatedAt.ts │ │ │ │ ├── addMessageRequest.ts │ │ │ │ ├── audioLinkItem.ts │ │ │ │ ├── audioLinkRequest.ts │ │ │ │ ├── bodyImportIcsApiTodosImportIcsPost.ts │ │ │ │ ├── bodyUploadAttachmentsApiTodosTodoIdAttachmentsPost.ts │ │ │ │ ├── capabilitiesResponse.ts │ │ │ │ ├── capabilitiesResponseMissingDeps.ts │ │ │ │ ├── chatMessage.ts │ │ │ │ ├── chatMessageContext.ts │ │ │ │ ├── chatMessageConversationId.ts │ │ │ │ ├── chatMessageExternalTools.ts │ │ │ │ ├── chatMessageMode.ts │ │ │ │ ├── chatMessageProjectId.ts │ │ │ │ ├── chatMessageSelectedTools.ts │ │ │ │ ├── chatMessageSystemPrompt.ts │ │ │ │ ├── chatMessageTaskIds.ts │ │ │ │ ├── chatMessageUserInput.ts │ │ │ │ ├── chatMessageWithContext.ts │ │ │ │ ├── chatMessageWithContextConversationId.ts │ │ │ │ ├── chatMessageWithContextEventContext.ts │ │ │ │ ├── chatMessageWithContextEventContextAnyOfItem.ts │ │ │ │ ├── chatMessageWorkspacePath.ts │ │ │ │ ├── chatResponse.ts │ │ │ │ ├── chatResponsePerformance.ts │ │ │ │ ├── chatResponsePerformanceAnyOf.ts │ │ │ │ ├── chatResponseQueryInfo.ts │ │ │ │ ├── chatResponseQueryInfoAnyOf.ts │ │ │ │ ├── chatResponseRetrievalInfo.ts │ │ │ │ ├── chatResponseRetrievalInfoAnyOf.ts │ │ │ │ ├── chatResponseSessionId.ts │ │ │ │ ├── cleanupOldDataApiCleanupPostParams.ts │ │ │ │ ├── contextListResponse.ts │ │ │ │ ├── contextResponse.ts │ │ │ │ ├── contextResponseAiSummary.ts │ │ │ │ ├── contextResponseAiTitle.ts │ │ │ │ ├── contextResponseAppName.ts │ │ │ │ ├── contextResponseCreatedAt.ts │ │ │ │ ├── contextResponseEndTime.ts │ │ │ │ ├── contextResponseProjectId.ts │ │ │ │ ├── contextResponseStartTime.ts │ │ │ │ ├── contextResponseTaskId.ts │ │ │ │ ├── contextResponseWindowTitle.ts │ │ │ │ ├── contextUpdateRequest.ts │ │ │ │ ├── contextUpdateRequestProjectId.ts │ │ │ │ ├── contextUpdateRequestTaskId.ts │ │ │ │ ├── countEventsApiEventsCountGetParams.ts │ │ │ │ ├── createdTodo.ts │ │ │ │ ├── createdTodoScheduledTime.ts │ │ │ │ ├── eventDetailResponse.ts │ │ │ │ ├── eventDetailResponseAiSummary.ts │ │ │ │ ├── eventDetailResponseAiTitle.ts │ │ │ │ ├── eventDetailResponseAppName.ts │ │ │ │ ├── eventDetailResponseEndTime.ts │ │ │ │ ├── eventDetailResponseWindowTitle.ts │ │ │ │ ├── eventListResponse.ts │ │ │ │ ├── eventResponse.ts │ │ │ │ ├── eventResponseAiSummary.ts │ │ │ │ ├── eventResponseAiTitle.ts │ │ │ │ ├── eventResponseAppName.ts │ │ │ │ ├── eventResponseEndTime.ts │ │ │ │ ├── eventResponseFirstScreenshotId.ts │ │ │ │ ├── eventResponseWindowTitle.ts │ │ │ │ ├── exportIcsApiTodosExportIcsGetParams.ts │ │ │ │ ├── extractTodosAndSchedulesApiAudioExtractPostParams.ts │ │ │ │ ├── extractedMessageTodo.ts │ │ │ │ ├── extractedMessageTodoDescription.ts │ │ │ │ ├── extractedTodo.ts │ │ │ │ ├── extractedTodoConfidence.ts │ │ │ │ ├── extractedTodoDescription.ts │ │ │ │ ├── extractedTodoScheduledTime.ts │ │ │ │ ├── extractedTodoSourceText.ts │ │ │ │ ├── extractedTodoTimeInfo.ts │ │ │ │ ├── extractedTodoTimeInfoAnyOf.ts │ │ │ │ ├── floatingCaptureRequest.ts │ │ │ │ ├── floatingCaptureResponse.ts │ │ │ │ ├── generateTasksResponse.ts │ │ │ │ ├── generatedTaskItem.ts │ │ │ │ ├── generatedTaskItemDescription.ts │ │ │ │ ├── getChatHistoryApiChatHistoryGetParams.ts │ │ │ │ ├── getChatPromptsApiGetChatPromptsGetParams.ts │ │ │ │ ├── getContextsApiContextsGetParams.ts │ │ │ │ ├── getCostStatsApiCostTrackingStatsGetParams.ts │ │ │ │ ├── getLogContentApiLogsContentGetParams.ts │ │ │ │ ├── getProjectTasksApiProjectsProjectIdTasksGetParams.ts │ │ │ │ ├── getProjectsApiProjectsGetParams.ts │ │ │ │ ├── getQuerySuggestionsApiChatSuggestionsGetParams.ts │ │ │ │ ├── getRecordingsApiAudioRecordingsGetParams.ts │ │ │ │ ├── getScreenshotsApiScreenshotsGetParams.ts │ │ │ │ ├── getTaskProgressApiProjectsProjectIdTasksTaskIdProgressGetParams.ts │ │ │ │ ├── getTaskProgressLatestApiProjectsProjectIdTasksTaskIdProgressLatestGet200.ts │ │ │ │ ├── getTimeAllocationApiTimeAllocationGetParams.ts │ │ │ │ ├── getTimelineApiAudioTimelineGetParams.ts │ │ │ │ ├── getTranscriptionApiAudioTranscriptionRecordingIdGetParams.ts │ │ │ │ ├── hTTPValidationError.ts │ │ │ │ ├── index.ts │ │ │ │ ├── jobInfo.ts │ │ │ │ ├── jobInfoName.ts │ │ │ │ ├── jobInfoNextRunTime.ts │ │ │ │ ├── jobIntervalUpdateRequest.ts │ │ │ │ ├── jobIntervalUpdateRequestHours.ts │ │ │ │ ├── jobIntervalUpdateRequestMinutes.ts │ │ │ │ ├── jobIntervalUpdateRequestSeconds.ts │ │ │ │ ├── jobListResponse.ts │ │ │ │ ├── jobOperationResponse.ts │ │ │ │ ├── journalAutoLinkCandidate.ts │ │ │ │ ├── journalAutoLinkRequest.ts │ │ │ │ ├── journalAutoLinkResponse.ts │ │ │ │ ├── journalCreate.ts │ │ │ │ ├── journalGenerateRequest.ts │ │ │ │ ├── journalGenerateResponse.ts │ │ │ │ ├── journalListResponse.ts │ │ │ │ ├── journalResponse.ts │ │ │ │ ├── journalResponseDeletedAt.ts │ │ │ │ ├── journalTag.ts │ │ │ │ ├── journalUpdate.ts │ │ │ │ ├── journalUpdateContentFormat.ts │ │ │ │ ├── journalUpdateDate.ts │ │ │ │ ├── journalUpdateName.ts │ │ │ │ ├── journalUpdateTagIds.ts │ │ │ │ ├── journalUpdateUserNotes.ts │ │ │ │ ├── lifetraceSchemasFloatingCaptureExtractedTodo.ts │ │ │ │ ├── lifetraceSchemasFloatingCaptureExtractedTodoDescription.ts │ │ │ │ ├── lifetraceSchemasFloatingCaptureExtractedTodoSourceText.ts │ │ │ │ ├── lifetraceSchemasFloatingCaptureExtractedTodoTimeInfo.ts │ │ │ │ ├── lifetraceSchemasFloatingCaptureExtractedTodoTimeInfoAnyOf.ts │ │ │ │ ├── lifetraceSchemasTodoExtractionExtractedTodo.ts │ │ │ │ ├── lifetraceSchemasTodoExtractionExtractedTodoConfidence.ts │ │ │ │ ├── lifetraceSchemasTodoExtractionExtractedTodoDescription.ts │ │ │ │ ├── lifetraceSchemasTodoExtractionExtractedTodoScheduledTime.ts │ │ │ │ ├── linkExtractedItemsApiAudioTranscriptionRecordingIdLinkPostParams.ts │ │ │ │ ├── listActivitiesApiActivitiesGetParams.ts │ │ │ │ ├── listEventsApiEventsGetParams.ts │ │ │ │ ├── listJournalsApiJournalsGetParams.ts │ │ │ │ ├── listTodosApiTodosGetParams.ts │ │ │ │ ├── manualActivityCreateRequest.ts │ │ │ │ ├── manualActivityCreateResponse.ts │ │ │ │ ├── manualActivityCreateResponseAiSummary.ts │ │ │ │ ├── manualActivityCreateResponseAiTitle.ts │ │ │ │ ├── manualActivityCreateResponseCreatedAt.ts │ │ │ │ ├── messageTodoExtractionRequest.ts │ │ │ │ ├── messageTodoExtractionRequestMessagesItem.ts │ │ │ │ ├── messageTodoExtractionRequestParentTodoId.ts │ │ │ │ ├── messageTodoExtractionRequestTodoContext.ts │ │ │ │ ├── messageTodoExtractionResponse.ts │ │ │ │ ├── messageTodoExtractionResponseErrorMessage.ts │ │ │ │ ├── newChatRequest.ts │ │ │ │ ├── newChatRequestSessionId.ts │ │ │ │ ├── newChatResponse.ts │ │ │ │ ├── optimizeTranscriptionApiAudioOptimizePostParams.ts │ │ │ │ ├── planQuestionnaireRequest.ts │ │ │ │ ├── planQuestionnaireRequestSessionId.ts │ │ │ │ ├── planQuestionnaireRequestTodoId.ts │ │ │ │ ├── planSummaryRequest.ts │ │ │ │ ├── planSummaryRequestAnswers.ts │ │ │ │ ├── planSummaryRequestSessionId.ts │ │ │ │ ├── processInfo.ts │ │ │ │ ├── processOcrApiOcrProcessPostParams.ts │ │ │ │ ├── projectCreate.ts │ │ │ │ ├── projectCreateDefinitionOfDone.ts │ │ │ │ ├── projectCreateDescription.ts │ │ │ │ ├── projectListResponse.ts │ │ │ │ ├── projectResponse.ts │ │ │ │ ├── projectResponseDefinitionOfDone.ts │ │ │ │ ├── projectResponseDescription.ts │ │ │ │ ├── projectStatus.ts │ │ │ │ ├── projectUpdate.ts │ │ │ │ ├── projectUpdateDefinitionOfDone.ts │ │ │ │ ├── projectUpdateDescription.ts │ │ │ │ ├── projectUpdateName.ts │ │ │ │ ├── projectUpdateStatus.ts │ │ │ │ ├── saveAndInitLlmApiSaveAndInitLlmPostBody.ts │ │ │ │ ├── saveConfigApiSaveConfigPostBody.ts │ │ │ │ ├── screenshotResponse.ts │ │ │ │ ├── screenshotResponseAppName.ts │ │ │ │ ├── screenshotResponseTextContent.ts │ │ │ │ ├── screenshotResponseWindowTitle.ts │ │ │ │ ├── searchRequest.ts │ │ │ │ ├── searchRequestAppName.ts │ │ │ │ ├── searchRequestEndDate.ts │ │ │ │ ├── searchRequestQuery.ts │ │ │ │ ├── searchRequestStartDate.ts │ │ │ │ ├── semanticSearchRequest.ts │ │ │ │ ├── semanticSearchRequestFilters.ts │ │ │ │ ├── semanticSearchRequestFiltersAnyOf.ts │ │ │ │ ├── semanticSearchRequestRetrieveK.ts │ │ │ │ ├── semanticSearchResult.ts │ │ │ │ ├── semanticSearchResultMetadata.ts │ │ │ │ ├── semanticSearchResultOcrResult.ts │ │ │ │ ├── semanticSearchResultOcrResultAnyOf.ts │ │ │ │ ├── semanticSearchResultScreenshot.ts │ │ │ │ ├── semanticSearchResultScreenshotAnyOf.ts │ │ │ │ ├── statisticsResponse.ts │ │ │ │ ├── syncVectorDatabaseApiVectorSyncPostParams.ts │ │ │ │ ├── systemResourcesResponse.ts │ │ │ │ ├── systemResourcesResponseCpu.ts │ │ │ │ ├── systemResourcesResponseDisk.ts │ │ │ │ ├── systemResourcesResponseMemory.ts │ │ │ │ ├── systemResourcesResponseStorage.ts │ │ │ │ ├── systemResourcesResponseSummary.ts │ │ │ │ ├── taskBatchDeleteRequest.ts │ │ │ │ ├── taskBatchDeleteResponse.ts │ │ │ │ ├── taskCreate.ts │ │ │ │ ├── taskCreateDescription.ts │ │ │ │ ├── taskListResponse.ts │ │ │ │ ├── taskProgressListResponse.ts │ │ │ │ ├── taskProgressResponse.ts │ │ │ │ ├── taskResponse.ts │ │ │ │ ├── taskResponseDescription.ts │ │ │ │ ├── taskStatus.ts │ │ │ │ ├── taskUpdate.ts │ │ │ │ ├── taskUpdateDescription.ts │ │ │ │ ├── taskUpdateName.ts │ │ │ │ ├── taskUpdateStatus.ts │ │ │ │ ├── testAsrConfigApiTestAsrConfigPostBody.ts │ │ │ │ ├── testLlmConfigApiTestLlmConfigPostBody.ts │ │ │ │ ├── testTavilyConfigApiTestTavilyConfigPostBody.ts │ │ │ │ ├── timeAllocationResponse.ts │ │ │ │ ├── timeAllocationResponseAppDetailsItem.ts │ │ │ │ ├── timeAllocationResponseDailyDistributionItem.ts │ │ │ │ ├── todoAttachmentResponse.ts │ │ │ │ ├── todoAttachmentResponseFileSize.ts │ │ │ │ ├── todoAttachmentResponseMimeType.ts │ │ │ │ ├── todoCreate.ts │ │ │ │ ├── todoCreateCompletedAt.ts │ │ │ │ ├── todoCreateDeadline.ts │ │ │ │ ├── todoCreateDescription.ts │ │ │ │ ├── todoCreateEndTime.ts │ │ │ │ ├── todoCreateParentTodoId.ts │ │ │ │ ├── todoCreatePercentComplete.ts │ │ │ │ ├── todoCreateRrule.ts │ │ │ │ ├── todoCreateStartTime.ts │ │ │ │ ├── todoCreateUid.ts │ │ │ │ ├── todoCreateUserNotes.ts │ │ │ │ ├── todoExtractionRequest.ts │ │ │ │ ├── todoExtractionRequestScreenshotSampleRatio.ts │ │ │ │ ├── todoExtractionResponse.ts │ │ │ │ ├── todoExtractionResponseAppName.ts │ │ │ │ ├── todoExtractionResponseErrorMessage.ts │ │ │ │ ├── todoExtractionResponseEventEndTime.ts │ │ │ │ ├── todoExtractionResponseEventStartTime.ts │ │ │ │ ├── todoExtractionResponseWindowTitle.ts │ │ │ │ ├── todoItemType.ts │ │ │ │ ├── todoListResponse.ts │ │ │ │ ├── todoPriority.ts │ │ │ │ ├── todoReorderItem.ts │ │ │ │ ├── todoReorderItemParentTodoId.ts │ │ │ │ ├── todoReorderRequest.ts │ │ │ │ ├── todoResponse.ts │ │ │ │ ├── todoResponseCompletedAt.ts │ │ │ │ ├── todoResponseDeadline.ts │ │ │ │ ├── todoResponseDescription.ts │ │ │ │ ├── todoResponseEndTime.ts │ │ │ │ ├── todoResponseParentTodoId.ts │ │ │ │ ├── todoResponseRrule.ts │ │ │ │ ├── todoResponseStartTime.ts │ │ │ │ ├── todoResponseUserNotes.ts │ │ │ │ ├── todoStatus.ts │ │ │ │ ├── todoTimeInfo.ts │ │ │ │ ├── todoTimeInfoAbsoluteTime.ts │ │ │ │ ├── todoTimeInfoRelativeDays.ts │ │ │ │ ├── todoTimeInfoRelativeTime.ts │ │ │ │ ├── todoTimeInfoTimeType.ts │ │ │ │ ├── todoUpdate.ts │ │ │ │ ├── todoUpdateCompletedAt.ts │ │ │ │ ├── todoUpdateDeadline.ts │ │ │ │ ├── todoUpdateDescription.ts │ │ │ │ ├── todoUpdateEndTime.ts │ │ │ │ ├── todoUpdateName.ts │ │ │ │ ├── todoUpdateOrder.ts │ │ │ │ ├── todoUpdateParentTodoId.ts │ │ │ │ ├── todoUpdatePercentComplete.ts │ │ │ │ ├── todoUpdatePriority.ts │ │ │ │ ├── todoUpdateRelatedActivities.ts │ │ │ │ ├── todoUpdateRrule.ts │ │ │ │ ├── todoUpdateStartTime.ts │ │ │ │ ├── todoUpdateStatus.ts │ │ │ │ ├── todoUpdateTags.ts │ │ │ │ ├── todoUpdateUserNotes.ts │ │ │ │ ├── updateJournalApiJournalsJournalIdPutBody.ts │ │ │ │ ├── validationError.ts │ │ │ │ ├── validationErrorLocItem.ts │ │ │ │ ├── vectorStatsResponse.ts │ │ │ │ ├── vectorStatsResponseCollectionName.ts │ │ │ │ ├── vectorStatsResponseDocumentCount.ts │ │ │ │ ├── vectorStatsResponseError.ts │ │ │ │ ├── visionChatRequest.ts │ │ │ │ ├── visionChatRequestMaxTokens.ts │ │ │ │ ├── visionChatRequestModel.ts │ │ │ │ ├── visionChatRequestTemperature.ts │ │ │ │ ├── visionChatResponse.ts │ │ │ │ ├── visionChatResponseModel.ts │ │ │ │ ├── visionChatResponseUsageInfo.ts │ │ │ │ └── visionChatResponseUsageInfoAnyOf.ts │ │ │ ├── screenshot/ │ │ │ │ └── screenshot.ts │ │ │ ├── search/ │ │ │ │ └── search.ts │ │ │ ├── system/ │ │ │ │ └── system.ts │ │ │ ├── time-allocation/ │ │ │ │ └── time-allocation.ts │ │ │ ├── todo-extraction/ │ │ │ │ └── todo-extraction.ts │ │ │ ├── todos/ │ │ │ │ └── todos.ts │ │ │ ├── vector/ │ │ │ │ └── vector.ts │ │ │ └── vision/ │ │ │ └── vision.ts │ │ ├── hooks/ │ │ │ ├── useAutoRecording.ts │ │ │ ├── useOnboardingTour.ts │ │ │ ├── useOpenSettings.ts │ │ │ ├── usePanelLayout.ts │ │ │ ├── usePanelResize.ts │ │ │ ├── usePanelWindowResize.ts │ │ │ ├── usePanelWindowStyles.ts │ │ │ ├── useTodoCapture.ts │ │ │ └── useWindowAdaptivePanels.ts │ │ ├── i18n/ │ │ │ ├── messages/ │ │ │ │ ├── en.json │ │ │ │ └── zh.json │ │ │ └── request.ts │ │ ├── island/ │ │ │ └── types.ts │ │ ├── plugins/ │ │ │ └── registry.ts │ │ ├── query/ │ │ │ ├── activities.ts │ │ │ ├── automation.ts │ │ │ ├── chat.ts │ │ │ ├── config.ts │ │ │ ├── cost.ts │ │ │ ├── index.ts │ │ │ ├── journals.ts │ │ │ ├── keys.ts │ │ │ ├── provider.tsx │ │ │ └── todos.ts │ │ ├── reminders.ts │ │ ├── services/ │ │ │ └── notification-poller.ts │ │ ├── store/ │ │ │ ├── activity-store.ts │ │ │ ├── audio-recording-store.ts │ │ │ ├── breakdown-store.ts │ │ │ ├── chat-store.ts │ │ │ ├── color-theme.ts │ │ │ ├── journal-store.ts │ │ │ ├── locale.ts │ │ │ ├── notification-store.ts │ │ │ ├── onboarding-store.ts │ │ │ ├── theme.ts │ │ │ ├── todo-store.ts │ │ │ ├── ui-store/ │ │ │ │ ├── index.ts │ │ │ │ ├── layout-actions.ts │ │ │ │ ├── layout-presets.ts │ │ │ │ ├── storage.ts │ │ │ │ ├── store.ts │ │ │ │ ├── types.ts │ │ │ │ └── utils.ts │ │ │ └── ui-store.ts │ │ ├── toast.ts │ │ ├── types/ │ │ │ └── index.ts │ │ ├── utils/ │ │ │ ├── electron-api.ts │ │ │ ├── electron.ts │ │ │ ├── platform.ts │ │ │ └── time.ts │ │ └── utils.ts │ ├── next.config.ts │ ├── orval.config.ts │ ├── package.json │ ├── pnpm-workspace.yaml │ ├── postcss.config.mjs │ ├── public/ │ │ ├── app-icons/ │ │ │ └── README.md │ │ └── free-todo-logos/ │ │ └── favicon/ │ │ └── site.webmanifest │ ├── scripts/ │ │ ├── build-electron.js │ │ ├── check_code_lines.js │ │ ├── check_rust_code_lines.js │ │ ├── collect-tauri-artifacts.js │ │ ├── copy-missing-deps.js │ │ ├── dev-with-auto-port.js │ │ ├── electron-dev-electron.ps1 │ │ ├── electron-dev.ps1 │ │ ├── resolve-symlinks.js │ │ ├── tauri-copy-resources.js │ │ └── tauri-prebuild.js │ ├── src-tauri/ │ │ ├── .tauri-lint-dist/ │ │ │ └── .gitkeep │ │ ├── Cargo.toml │ │ ├── PACKAGING_GUIDE.md │ │ ├── build.rs │ │ ├── icons/ │ │ │ ├── android/ │ │ │ │ ├── mipmap-anydpi-v26/ │ │ │ │ │ └── ic_launcher.xml │ │ │ │ └── values/ │ │ │ │ └── ic_launcher_background.xml │ │ │ └── icon.icns │ │ ├── rust-toolchain.toml │ │ ├── rustfmt.toml │ │ ├── src/ │ │ │ ├── backend.rs │ │ │ ├── backend_log.rs │ │ │ ├── backend_paths.rs │ │ │ ├── backend_proxy.rs │ │ │ ├── backend_python.rs │ │ │ ├── backend_support.rs │ │ │ ├── config.rs │ │ │ ├── lib.rs │ │ │ ├── main.rs │ │ │ ├── nextjs.rs │ │ │ ├── shortcut.rs │ │ │ └── tray.rs │ │ ├── tauri.conf.json │ │ ├── tauri.island.pyinstaller.json │ │ ├── tauri.island.script.json │ │ ├── tauri.lint.json │ │ ├── tauri.web.pyinstaller.json │ │ └── tauri.web.script.json │ ├── tailwind.config.ts │ └── tsconfig.json ├── lifetrace/ │ ├── __init__.py │ ├── alembic.ini │ ├── config/ │ │ ├── default_config.yaml │ │ ├── prompt.yaml │ │ ├── prompts/ │ │ │ ├── agno_tools/ │ │ │ │ ├── en/ │ │ │ │ │ ├── breakdown.yaml │ │ │ │ │ ├── conflict.yaml │ │ │ │ │ ├── instructions.yaml │ │ │ │ │ ├── stats.yaml │ │ │ │ │ ├── tags.yaml │ │ │ │ │ ├── time.yaml │ │ │ │ │ └── todo.yaml │ │ │ │ └── zh/ │ │ │ │ ├── breakdown.yaml │ │ │ │ ├── conflict.yaml │ │ │ │ ├── instructions.yaml │ │ │ │ ├── stats.yaml │ │ │ │ ├── tags.yaml │ │ │ │ ├── time.yaml │ │ │ │ └── todo.yaml │ │ │ ├── audio.yaml │ │ │ ├── chat.yaml │ │ │ ├── llm.yaml │ │ │ ├── plan.yaml │ │ │ ├── rag.yaml │ │ │ ├── search.yaml │ │ │ ├── summary.yaml │ │ │ └── todo.yaml │ │ └── rapidocr_config.yaml │ ├── core/ │ │ ├── __init__.py │ │ ├── config_watcher.py │ │ ├── dependencies.py │ │ ├── lazy_services.py │ │ └── module_registry.py │ ├── docs/ │ │ └── MIGRATION_GUIDE.md │ ├── jobs/ │ │ ├── activity_aggregator.py │ │ ├── clean_data.py │ │ ├── deadline_reminder.py │ │ ├── job_manager.py │ │ ├── ocr.py │ │ ├── ocr_config.py │ │ ├── ocr_processor.py │ │ ├── proactive_ocr/ │ │ │ ├── __init__.py │ │ │ ├── capture.py │ │ │ ├── models.py │ │ │ ├── ocr_engine.py │ │ │ ├── priors/ │ │ │ │ ├── __init__.py │ │ │ │ ├── base.py │ │ │ │ ├── feishu.py │ │ │ │ ├── registry.py │ │ │ │ └── wechat.py │ │ │ ├── roi.py │ │ │ ├── router.py │ │ │ └── service.py │ │ ├── recorder.py │ │ ├── recorder_blacklist.py │ │ ├── recorder_capture.py │ │ ├── recorder_config.py │ │ ├── scheduler.py │ │ └── todo_recorder.py │ ├── llm/ │ │ ├── activity_summary_service.py │ │ ├── agent_service.py │ │ ├── agno_agent.py │ │ ├── agno_tools/ │ │ │ ├── __init__.py │ │ │ ├── base.py │ │ │ ├── toolkit.py │ │ │ └── tools/ │ │ │ ├── __init__.py │ │ │ ├── breakdown_tools.py │ │ │ ├── conflict_tools.py │ │ │ ├── stats_tools.py │ │ │ ├── tag_tools.py │ │ │ ├── time_tools.py │ │ │ └── todo_tools.py │ │ ├── auto_todo_detection_service.py │ │ ├── context_builder.py │ │ ├── event_summary_clustering.py │ │ ├── event_summary_config.py │ │ ├── event_summary_ocr.py │ │ ├── event_summary_service.py │ │ ├── journal_generation_service.py │ │ ├── llm_client.py │ │ ├── llm_client_intent.py │ │ ├── llm_client_query.py │ │ ├── llm_client_vision.py │ │ ├── ocr_todo_extractor.py │ │ ├── rag_fallback.py │ │ ├── rag_service.py │ │ ├── rag_stream.py │ │ ├── retrieval_service.py │ │ ├── tavily_client.py │ │ ├── todo_extraction_service.py │ │ ├── tools/ │ │ │ ├── __init__.py │ │ │ ├── base.py │ │ │ ├── registry.py │ │ │ └── web_search_tool.py │ │ ├── vector_db.py │ │ ├── vector_service.py │ │ └── web_search_service.py │ ├── migrations/ │ │ ├── MIGRATIONS.md │ │ ├── README │ │ ├── env.py │ │ ├── re_extract_all_transcriptions.py │ │ ├── script.py.mako │ │ └── versions/ │ │ ├── 034079ad387f_add_segment_timestamps.py │ │ ├── 4ca5036ec7c8_add_context_to_chats.py │ │ ├── add_automation_tasks_001.py │ │ ├── add_file_path_to_audio_recordings.py │ │ ├── add_icalendar_fields_v2_001.py │ │ ├── add_journal_panel_001.py │ │ ├── add_optimized_extraction_fields.py │ │ ├── add_text_hash_to_ocr_results.py │ │ ├── add_todo_attachment_source_001.py │ │ ├── add_todo_end_time_001.py │ │ ├── add_todo_reminder_offsets_001.py │ │ ├── add_todo_timezone_all_day_001.py │ │ ├── b53d9b7c8e21_add_uid_to_journals.py │ │ ├── cc25001eb19c_initial_schema.py │ │ ├── cff6e6d7a3cf_merge_heads_segment_timestamps_and_.py │ │ ├── d2f7a9c6b1a4_add_icalendar_fields_to_todos.py │ │ ├── merge_automation_ical_001.py │ │ ├── merge_heads_journal_todo_20260203.py │ │ ├── merge_heads_todos_20260131.py │ │ ├── merge_journal_uid_automation_20260204.py │ │ └── remove_project_task_tables.py │ ├── models/ │ │ ├── ch_PP-OCRv4_det_infer.onnx │ │ ├── ch_PP-OCRv4_rec_infer.onnx │ │ └── ch_ppocr_mobile_v2.0_cls_infer.onnx │ ├── observability/ │ │ ├── __init__.py │ │ ├── config.py │ │ ├── exporters/ │ │ │ ├── __init__.py │ │ │ ├── file_exporter.py │ │ │ └── phoenix_exporter.py │ │ └── setup.py │ ├── pyinstaller.spec │ ├── repositories/ │ │ ├── __init__.py │ │ ├── interfaces.py │ │ ├── sql_activity_repository.py │ │ ├── sql_chat_repository.py │ │ ├── sql_event_repository.py │ │ ├── sql_journal_repository.py │ │ └── sql_todo_repository.py │ ├── routers/ │ │ ├── activity.py │ │ ├── audio.py │ │ ├── audio_ws.py │ │ ├── audio_ws_handler.py │ │ ├── audio_ws_segment.py │ │ ├── automation.py │ │ ├── chat/ │ │ │ ├── __init__.py │ │ │ ├── base.py │ │ │ ├── context.py │ │ │ ├── core.py │ │ │ ├── helpers.py │ │ │ ├── message_todo_extraction.py │ │ │ ├── misc.py │ │ │ ├── modes/ │ │ │ │ ├── __init__.py │ │ │ │ ├── agent.py │ │ │ │ ├── agno.py │ │ │ │ ├── dify.py │ │ │ │ └── web_search.py │ │ │ └── plan.py │ │ ├── chat.py │ │ ├── config.py │ │ ├── cost_tracking.py │ │ ├── event.py │ │ ├── floating_capture.py │ │ ├── health.py │ │ ├── journal.py │ │ ├── logs.py │ │ ├── notification.py │ │ ├── ocr.py │ │ ├── proactive_ocr.py │ │ ├── rag.py │ │ ├── scheduler.py │ │ ├── screenshot.py │ │ ├── search.py │ │ ├── system.py │ │ ├── time_allocation.py │ │ ├── todo.py │ │ ├── todo_extraction.py │ │ ├── vector.py │ │ └── vision.py │ ├── schemas/ │ │ ├── __init__.py │ │ ├── activity.py │ │ ├── automation.py │ │ ├── chat.py │ │ ├── event.py │ │ ├── floating_capture.py │ │ ├── journal.py │ │ ├── message_todo_extraction.py │ │ ├── screenshot.py │ │ ├── search.py │ │ ├── stats.py │ │ ├── system.py │ │ ├── todo.py │ │ ├── todo_extraction.py │ │ ├── vector.py │ │ └── vision.py │ ├── scripts/ │ │ ├── add_file_path_column.py │ │ ├── build-backend.ps1 │ │ ├── build-backend.sh │ │ ├── check_code_lines.py │ │ ├── fix_audio_recordings_table.py │ │ ├── fix_transcriptions_table.py │ │ └── start_backend.py │ ├── server.py │ ├── services/ │ │ ├── __init__.py │ │ ├── activity_service.py │ │ ├── asr_client.py │ │ ├── asr_client_dashscope.py │ │ ├── audio_extraction_service.py │ │ ├── audio_service.py │ │ ├── automation_task_service.py │ │ ├── chat_service.py │ │ ├── config_service.py │ │ ├── dify_client.py │ │ ├── event_service.py │ │ ├── icalendar_service.py │ │ ├── journal_service.py │ │ └── todo_service.py │ ├── storage/ │ │ ├── __init__.py │ │ ├── activity_manager.py │ │ ├── automation_task_manager.py │ │ ├── chat_manager.py │ │ ├── database.py │ │ ├── database_base.py │ │ ├── event_manager.py │ │ ├── event_queries.py │ │ ├── event_stats.py │ │ ├── journal_manager.py │ │ ├── migrations/ │ │ │ └── journal_migration.py │ │ ├── models.py │ │ ├── notification_storage.py │ │ ├── ocr_manager.py │ │ ├── screenshot_manager.py │ │ ├── sql_utils.py │ │ ├── stats_manager.py │ │ ├── todo_manager.py │ │ ├── todo_manager_attachments.py │ │ ├── todo_manager_ical.py │ │ └── todo_manager_utils.py │ └── util/ │ ├── app_utils.py │ ├── base_paths.py │ ├── image_utils.py │ ├── language.py │ ├── logging_config.py │ ├── path_utils.py │ ├── prompt_loader.py │ ├── query_parser.py │ ├── settings.py │ ├── time_parser.py │ ├── time_utils.py │ ├── token_usage_logger.py │ └── utils.py ├── pyproject.toml ├── pyrightconfig.json ├── requirements-runtime.txt ├── scripts/ │ ├── git-hooks/ │ │ └── post-checkout │ ├── install.ps1 │ ├── install.sh │ ├── link_worktree_deps.ps1 │ ├── link_worktree_deps.sh │ ├── link_worktree_deps_here.ps1 │ ├── link_worktree_deps_here.sh │ ├── new_worktree.py │ ├── precommit_clippy.py │ ├── precommit_rustfmt.py │ ├── setup_hooks_here.ps1 │ └── setup_hooks_here.sh └── tests/ ├── conftest.py ├── test_icalendar_service.py ├── test_todo_serialization.py └── test_todo_service_mapping.py