Commit graph

87 commits

Author SHA1 Message Date
Andrew Beal
2fc9edc194 refactor: move typing-in animation to global styles and add conversation title to top bar
- Extract typing-in animation from ChatArea to global styles.css for reuse
- Add conversation title display in TopBar with fade transition
- Update ChatService to notify title changes via onNameChanged callback
- Fix ConversationNamingService to trigger callback after saving new title
- Clean up unused isAborting flag in ChatService
- Adjust grid layout in TopBar to accommodate title display
2025-10-17 19:34:47 +01:00
Andrew Beal
08a6bde961 fix: remove unnecessary alt=sse parameter from GeminiNamer URL 2025-10-17 16:18:39 +01:00
Andrew Beal
38c9809a27 feat: add AI-powered conversation naming with Gemini integration
Implement automatic conversation title generation using Gemini API. Add IConversationNamingService interface with GeminiConversationNamingService implementation. Integrate naming service into ChatService to generate titles on first user message. Update ConversationFileSystemService to support title updates via file renaming.
2025-10-17 16:18:23 +01:00
Andrew Beal
d0be254c5f feat: add batch file operations and move functionality
- Rename DeleteVaultFile to DeleteVaultFiles with array support
- Add MoveVaultFiles function for file relocation and renaming
- Refactor file operations to return structured success/error results
- Move directory creation logic to VaultService
- Register FileManager dependency for file operations
- Fix CSS variable for interactive accent blue hover state
2025-10-16 22:58:30 +01:00
Andrew Beal
279a89e483 refactor: improve system prompt search strategy and fix UI styles
- Reorder sections to prioritize vault-first decision framework
- Add blanket search tier for comprehensive vault exploration
- Emphasize persistent searching with alternative terms
- Remove duplicate StreamingIndicator component
- Fix edit mode button hover styling specificity
2025-10-15 22:57:06 +01:00
Andrew Beal
a756cee5c0 refactor: replace hardcoded blue with dynamic accent color variable
Replace direct `--color-blue` references with new `--interactive-accent-blue` variable that blends interactive accent with blue, enabling consistent theme-aware styling across edit mode UI elements.
2025-10-15 21:18:59 +01:00
Andrew Beal
76afac7ffc refactor: enhance file operations to support batch reads and deletion
- Rename ReadVaultFile to ReadVaultFiles with multi-file support
- Add DeleteVaultFile function with confirmation parameter
- Update function references and error handling
- Return detailed error objects from FileSystemService
2025-10-15 21:06:23 +01:00
Andrew Beal
9ab0897c57 refactor: simplify web search params and improve vault file handling
- Remove unnecessary reasoning parameter from web search function
- Update Path enum to separate root and AI agent directory
- Add filename matching to vault search results
- Use Path enum constants consistently across services
2025-10-15 20:13:14 +01:00
Andrew Beal
8ab4c93553 refactor: replace vault.modify with vault.process in VaultService
Update file modification to use vault.process() with callback function instead of vault.modify() for better async handling.
2025-10-15 19:45:23 +01:00
Andrew Beal
4c6a7e14b5 refactor: cache markdown permalinks and update SearchVaultFiles description
- Cache vault file permalinks in StreamingMarkdownService constructor to avoid repeated filesystem calls
- Update permalink cache during stream chunks to ensure freshness
- Clarify SearchVaultFiles function description to emphasize file list retrieval
- Remove obsolete code comments
2025-10-15 00:11:54 +01:00
Andrew Beal
6c55ae744f chore: update dependencies (@google/genai, core-js, katex, svelte) 2025-10-14 23:47:12 +01:00
Andrew Beal
6be51ebaae fix: prevent race conditions in chat lifecycle and conversation management
- Add abort flag to prevent semaphore double-release during stop
- Stop active chats before deleting conversations to avoid state corruption
- Treat empty search terms as explicit request for all files
2025-10-14 23:45:10 +01:00
Andrew Beal
1a57bb4872 style: increase streaming indicator glow shadow spread 2025-10-14 22:58:58 +01:00
Andrew Beal
9f8d0b5ee8 feat: rename ReadFile to ReadVaultFile and add WriteVaultFile function
- Rename ReadFile to ReadVaultFile for consistency
- Add WriteVaultFile function for destructive operations
- Fix array concatenation bug in getQueryActions
- Return all vault files when search yields no results
- Update SearchVaultFiles description to clarify fallback behavior
- Improve error handling in writeFile to return error details
- Reorder system prompt sections for better clarity
2025-10-14 22:42:52 +01:00
Andrew Beal
86d59b18d2 feat: enforce wiki-link usage for all vault references in system prompt
Add comprehensive wiki-linking guidelines requiring [[note name]] syntax for every vault reference. Establish wiki-linking as mandatory practice with examples, anti-patterns, and quality checks. Update all example workflows to demonstrate proper linking density for building knowledge graphs.
2025-10-14 20:26:15 +01:00
Andrew Beal
ae5754040a feat: implement progressive search strategy with relationship inference
Adds multi-tier search approach that exhaustively tries broader terms,
partial matches, and synonyms before concluding information doesn't exist.
Enables relationship inference from found content to answer queries about
connected entities. Fixes padding calculation to account for consecutive
assistant messages by summing their heights.
2025-10-14 20:22:01 +01:00
Andrew Beal
680b2c6ec1 refactor: extract randomSample utility 2025-10-14 19:54:17 +01:00
Andrew Beal
d58e9ef1ff refactor: enhance vault search to return content snippets with context
- Update SearchVaultFiles function to return contextual snippets instead of just file lists
- Implement snippet extraction with configurable context length (300 chars)
- Add snippet merging logic to consolidate overlapping matches
- Limit results to 20 randomly sampled matches when exceeding threshold
- Update return types across service layer to use SearchMatch/SearchSnippet
- Change regex flags to 'ig' for global case-insensitive matching
2025-10-14 19:50:45 +01:00
Andrew Beal
f2a7a41705 refactor: replace ListVaultFiles with content-based SearchVaultFiles
Replace list_vault_files function with search_vault_files that performs regex-based content search instead of listing all files. Add escapeRegex helper for search term sanitization. Remove unused edit mode CSS.
2025-10-14 18:54:16 +01:00
Andrew Beal
92d3bc5a31 refactor: enhance system prompt with structured decision framework
Reorganize system prompt with clearer operating principles, vault-first
decision heuristics, semantic directory architecture, and comprehensive
examples. Improve multi-tool workflow guidance and error handling patterns.

Extract edit mode toggle to dedicated function for better code organization.
2025-10-13 20:06:47 +01:00
Andrew Beal
f8aa162a63 fix: improve edit mode deactivation and request cancellation handling
- Deactivate edit mode when resetting or loading conversations
- Fix cancelled request detection using Selector instead of Copy enum
- Standardize quote style in StreamingMarkdownService to double quotes
2025-10-13 19:53:00 +01:00
Andrew Beal
b82d38e799 feat: add edit mode styling to streaming indicator
Pass editModeActive prop through ChatArea to StreamingIndicator to change
streaming animation color from accent to blue when in edit mode
2025-10-13 19:25:29 +01:00
Andrew Beal
1aa0d0000d feat: add edit mode toggle to enable destructive AI actions
- Add allowDestructiveActions parameter throughout AI request chain
- Implement edit mode UI toggle with visual indicators
- Update getQueryActions to conditionally include destructive tools
- Add blue highlight styling when edit mode is active
2025-10-13 19:12:06 +01:00
Andrew Beal
4c21b39a28 refactor: centralize CSS class names in Selector enum
- Replace hardcoded class name strings with Selector enum values
- Add new selector constants for styling and UI states
- Filter cancelled request messages from saved conversations
- Improve scroll behavior when streaming ends
- Move plugin styles import to main plugin file
2025-10-13 13:14:54 +01:00
Andrew Beal
c188f5727e Add allowAccessToPluginRoot parameter to prevent AI editing user instructions
This change adds a new `allowAccessToPluginRoot` parameter throughout the filesystem and vault service layers to control access to plugin root directories. The AI assistant is now prevented from modifying the user instruction file while still allowing internal plugin operations to access conversation data and configuration files.
2025-10-12 23:11:36 +01:00
Andrew Beal
e543bf5351 refactor: improve dependency injection type safety and add AI exclusions setting
- Add generic types to all Resolve() calls for type safety
- Introduce VaultService abstraction layer for file operations
- Add AI File Exclusions setting with textarea and glob pattern support
- Refactor FileSystemService to use VaultService instead of direct Vault access
- Improve code organization with comments and renamed variables
- Update styles for exclusions input field
2025-10-12 21:26:01 +01:00
Andrew Beal
ae5a836c21 refactor: extract chat logic into ChatService
Move streaming, submission, and AI interaction logic from ChatWindow
component into new ChatService for better separation of concerns.
2025-10-12 18:55:39 +01:00
Andrew Beal
5a40b0988e style: remove emoji bullets from system prompt documentation 2025-10-12 16:57:34 +01:00
Andrew Beal
fb9697df94 Make user_message required and improve system prompt for efficient multi-step operations 2025-10-12 14:14:39 +01:00
Andrew Beal
9c45a05abc feat: add abort controller to cancel streaming AI requests
- Add AbortSignal parameter to streamRequest interface and implementations
- Implement handleStop function to abort ongoing requests
- Change submit button to stop button when streaming
- Handle AbortError gracefully with user-friendly message
- Add styling for cancellation notification
2025-10-12 13:33:25 +01:00
Andrew Beal
8cc9441276 Remove debugging 2025-10-12 13:08:32 +01:00
Andrew Beal
b99c2062dd refactor: use stable message IDs instead of index-based tracking
Replace index-based message identification with stable UUID-based IDs for proper streaming state management and message updates across chat components
2025-10-12 13:07:54 +01:00
Andrew Beal
68dda10852 fix: defer padding recalculation to avoid race condition with DOM updates 2025-10-12 00:55:22 +01:00
Andrew Beal
84ea96c394 fix: improve chat UI padding calculation and request completion handling
- Add critical instruction to system prompt ensuring AI completes full requests
- Fix race condition in chat padding calculation when streaming ends
- Add onFinishedSubmitting callback to recalculate padding after stream completion
- Replace paragraph tags with div tags for message rendering
- Clean up commented code and improve code formatting
2025-10-12 00:33:04 +01:00
Andrew Beal
532225a48f fix: emphasize wiki-link syntax and disable padding recalculation
- Add emphasis to wiki-link requirement in system prompt
- Comment out reactive padding recalculation that caused layout issues
2025-10-11 15:37:49 +01:00
Andrew Beal
29803b5615 fix: resolve scroll and padding race condition in chat area
- Track last assistant message element for padding recalculation
- Add smooth scroll to bottom after message resize
- Recalculate padding when streaming ends to fix race condition
2025-10-11 14:20:19 +01:00
Andrew Beal
9bb0df7df3 Add multi-turn conversation support with shouldContinue flag
Implement continuation logic for AI responses that require multiple turns
without explicit function calls. Add STOP_REASON_STOP constant to detect
when conversation should naturally end versus when it needs continuation.

Update streaming flow to handle both function calls and continuation flags,
enabling more fluid multi-step conversations.
2025-10-11 13:57:11 +01:00
Andrew Beal
771db0a156 refactor: improve AI system prompt with vault-first search approach 2025-10-11 12:44:00 +01:00
Andrew Beal
19be7ccf8d Refactor chat scroll behavior to use dynamic padding instead of intervals
Replace auto-scroll interval logic with ResizeObserver-based dynamic padding system that maintains scroll position during streaming by adjusting container bottom padding based on message and thought bubble heights
2025-10-11 12:28:42 +01:00
Andrew Beal
9cbedb6b53 refactor: extract and reuse focusInput logic across components
Move focus logic to exported method and trigger it after conversation
resets to maintain input focus consistently throughout the UI flow.
2025-10-09 21:34:40 +01:00
Andrew Beal
9a34634008 Improve scrolling for thought element. 2025-10-08 23:55:27 +01:00
Andrew Beal
d910239a7f Add wiki-link support, API key validation, and refactor AI provider initialization
Implement clickable wiki-links in assistant responses with WorkSpaceService for note navigation. Add API key validation with visual feedback in ChatWindow, automatically opening settings when empty. Extract settings helper to reduce code duplication. Refactor Gemini class to resolve API key from plugin settings rather than constructor parameter. Update system prompt with wiki-link usage guidelines. Remove unused ODB cache implementation and loadExternalCSS helper. Improve UI with enhanced empty state styling and input textarea scrolling behavior.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-08 22:06:25 +01:00
Andrew Beal
f5a3a513ec Change thought component to use svelte binding.
Add styling to thought.
2025-10-07 22:27:51 +01:00
Andrew Beal
7cdd4600e4 Add ReadFile function definition and reorganize function definitions into Functions directory. Remove debug console.log from Gemini class. 2025-10-07 20:43:42 +01:00
Andrew Beal
43c31cf18d Fix duplicate function call messages in ChatWindow by removing placeholder message when function call is captured.
🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-07 20:42:42 +01:00
Andrew Beal
88901ec927 Refactor ChatArea to simplify message rendering logic and introduce isSubmitting state for improved UI feedback. Consolidate user and assistant message rendering into unified structure and move StreamingIndicator and ChatAreaThought to appear during submission phase.
🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-07 00:57:08 +01:00
Andrew Beal
6f0e6d0342 Enhance Gemini web search directive for clarity, improve ChatArea streaming message handling, and ensure conversation saving logic in ChatWindow. Update AIFunction enum and AIFunctionService for RequestWebSearch functionality. Modify ConversationFileSystemService to include function call response handling. 2025-10-07 00:24:45 +01:00
Andrew Beal
62104f0abd Refactor AI function handling by introducing AIFunctionCall and AIFunctionResponse classes, updating function definitions, and enhancing conversation content management. Remove unused code and improve service registration for AIFunctionService. 2025-10-06 23:01:20 +01:00
Andrew Beal
35b531d9bf Refactor ChatArea and StreamingMarkdownService to improve type annotations, enhance readability, and ensure early returns in stream handling logic. 2025-10-05 18:43:48 +01:00
Andrew Beal
4818741a77 Refactor Gemini and StreamingService to enhance streamRequest method, improve error handling in parseStreamChunk, and update service registration for StreamingService. 2025-10-05 18:17:47 +01:00