Commit graph

494 commits

Author SHA1 Message Date
Andrew Beal
56f3ed57c1 chore: update AI SDK and dev dependencies to latest versions 2026-07-12 15:16:42 +01:00
Andrew Beal
82dab77d74 feat: add artifact diff viewer and improve button styling
- Add clickable artifact cards with keyboard support
- Create new ArtifactView for displaying file diffs
- Update button styles with solid backgrounds and faster transitions
- Add auto-cleanup of stale diff and plan approval views on startup
- Fix artifact deletion to preserve original file path
2026-07-12 15:14:44 +01:00
Andrew Beal
6b5d51df39 Add scroll fade indicators to artifact lists and plan steps
- Add fade gradient to artifacts list that hides when scrolled to bottom
- Update plan area fades to use scroll position instead of always showing
- Add hover effect to artifact cards with glowing ellipse indicator
- Fix indentation in UserMessage attachment styles
2026-07-11 14:46:39 +01:00
Andrew Beal
0b54cdcc10 refactor(ChatArea): extract message rendering into separate components
Extract user and assistant message rendering logic from ChatArea into dedicated UserMessage and AssistantMessage components, removing unused dependencies and styles.
2026-07-11 14:04:19 +01:00
Andrew Beal
f4c3b5b826 feat: add file change summary cards to assistant messages
Display artifact changes in chat with visual indicators for create/modify/delete actions, including file counts, color-coded status badges, and scrollable file list
2026-07-11 13:49:44 +01:00
Andrew Beal
cc45949eba Update OpenAI model identifiers from GPT-5.5/5.4 to GPT-5.6 series
Replace GPT-5.5-pro, GPT-5.5, GPT-5.4-mini, and GPT-5.4-nano with the new GPT-5.6 Sol, Terra, and Luna model variants across enum definitions, display copy, settings UI, tests, and default model configurations.
2026-07-10 23:06:16 +01:00
Andrew Beal
7757800127 refactor: simplify chat layout with turn-based grouping
Replace complex dynamic padding system with turn-based message grouping that scrolls to the latest user/assistant exchange. Remove manual height calculations and message element tracking in favor of CSS-based layout using .message-group containers. Neutralize leading frontmatter markers in streaming markdown to prevent Obsidian from hiding content.
2026-07-10 22:57:25 +01:00
Andrew Beal
6b31e3d4e9 test: add artifact tracking tests for file operations
Add comprehensive test coverage for artifact generation in AIToolService
and ConversationFileSystemService, including write/patch/delete operations,
binary file handling, serialization/deserialization, and garbage collection.
2026-07-10 21:44:40 +01:00
Andrew Beal
10ddb1da28 feat: add artifact tracking system for agent file operations
Implement comprehensive artifact tracking to record all file modifications made by the AI agent during conversations. Add artifact persistence, garbage collection, and UI updates with new "Discuss" button styling.
2026-07-10 21:23:44 +01:00
Andrew Beal
bfa8360037 fix: add stable keys and lifecycle methods to message tracking action
- Add unique IDs to ConversationContent for stable Svelte keying
- Implement update/destroy lifecycle methods in trackingAction
- Reset chat area when clearing conversation to prevent stale references
2026-07-09 19:10:53 +01:00
Andrew Beal
1662a7c671 chore: update dependencies to latest versions
Update @types/node to 26.1.1 and svelte-check to 4.7.2, along with their transitive dependencies including rolldown bindings, oxc-project types, and various other dev dependencies.
2026-07-09 19:08:26 +01:00
Andrew Beal
329052e032 Bump plugin version to 1.4.8 2026-07-06 20:38:24 +01:00
Andrew Beal
7b22c26718 fix: handle null settings for new users and reorganize CSS styles
- Add null check for loadedSettings in SettingsService constructor
- Reorder CSS rules in ChatInput to group related mobile styles together
2026-07-06 20:38:06 +01:00
Andrew Beal
bcc7ce12ed chore: update dev dependencies to latest patch versions
Update TypeScript ESLint packages from 8.62.1 to 8.63.0, Vitest from 4.1.9 to 4.1.10, and related transitive dependencies
2026-07-06 19:55:26 +01:00
Andrew Beal
1e02b2d703 Bump plugin version to 1.4.7 2026-07-06 19:53:37 +01:00
Andrew Beal
4811e89535 fix: adjust help modal banner position and hide overflow on mobile
- Move banner up and left on mobile devices
- Prevent horizontal scrolling in modal content area
2026-07-06 19:49:01 +01:00
Andrew Beal
1c5834e858 Update AI model references to latest versions
Replace Claude Sonnet 4.6 with Sonnet 5 as default model, add Claude Fable 5, update OpenAI models to include versioned releases (GPT-5.5 Pro, dated variants), and update all references across enums, settings, tests, and documentation.
2026-07-06 19:37:41 +01:00
Andrew Beal
f57438dd54 feat: add free edit mode to bypass diff confirmations
Add toggle button in chat input to enable/disable free edit mode, which allows AI to make changes without showing diffs. Update ThoughtIndicator and StreamingIndicator with fade transitions and redesigned dot-based styling. Simplify ChatInput layout by removing dynamic stacked mode detection.
2026-07-06 19:05:19 +01:00
Andrew Beal
fa92e15b8c feat: add plan approval UI with user review workflow
Add PlanApprovalService and PlanApprovalView to enable user review
and approval of AI-generated execution plans before execution begins.
Users can approve, reject, or suggest changes to plans through a new
input mode and dedicated view.
2026-07-06 16:11:30 +01:00
Andrew Beal
4f57798295 feat: add animated graph background to empty chat state
Replace static greeting with animated node graph visualization behind the greeting text. Adds GraphAnimation component with procedural graph generation, smooth node motion, and gradient backdrop effect.
2026-07-06 14:22:51 +01:00
Andrew Beal
69d7a1df16 docs: add local model support documentation and help content 2026-07-05 20:36:53 +01:00
Andrew Beal
afaa530f8b feat: add mobile suggestion button and force-focus parameter
- Add "Suggest" button to mobile diff controls with three-column layout
- Replace focusInput's onMobile param with force param for explicit control
- Scope diff mobile button styles to prevent conflicts
- Enable focus on chat input when suggestion button clicked
2026-07-05 19:59:07 +01:00
Andrew Beal
f74286f3c8 Fix toolCallStarted to emit when function name first becomes available
Ensures toolCallStarted fires once when the accumulated function name first becomes non-empty, handling providers that stream function names across multiple deltas. Also adds Obsidian DOM helper mocks for tests.
2026-07-04 15:39:12 +01:00
Andrew Beal
13a09cdb89 refactor: improve settings UI with icon grids and standardized helpers
- Add Exclusions heading section in settings
- Replace activeDocument calls with Obsidian helper functions (createEl, createDiv, createSpan, createFragment)
- Standardize file monitoring disclaimers with icon grid layout
- Add template warning for local models with external documentation link
- Consolidate file disclaimer rendering logic with clickable help links
- Remove redundant tooltip enum entry
- Add new CSS classes for icon grid layouts
2026-07-04 13:27:22 +01:00
Andrew Beal
fc435caae2 chore: update dependencies to latest versions
Update @anthropic-ai/sdk from 0.106.0 to 0.110.0, @shikijs/rehype from 4.3.0 to 4.3.1, and various dev dependencies including TypeScript ESLint packages, eslint-plugin-obsidianmd, and transitive dependencies
2026-07-04 12:17:11 +01:00
Andrew Beal
0d21c1e3e0 Implement local model support. 2026-07-04 12:16:08 +01:00
Andrew Beal
938837c9c1 feat: add cached model settings per provider with automatic restoration
Preserve user's model preferences for each AI provider separately and restore them when switching between providers, preventing unwanted model resets during provider changes
2026-06-29 19:31:32 +01:00
Andrew Beal
d31c92b35c Bump plugin version to 1.4.6 2026-06-28 15:48:28 +01:00
Andrew Beal
0372b9a182 Address remaining Obsidian plugin scanner warnings 2026-06-28 15:42:47 +01:00
Andrew Beal
2131ad0edd Address Obsidian plugin scanner warnings. 2026-06-28 15:31:07 +01:00
Andrew Beal
78644a0958 Bump plugin version to 1.4.5 2026-06-28 15:09:16 +01:00
Andrew Beal
6835c9167d refactor: replace mammoth with native DOCX parser using fflate
Remove mammoth dependency and implement lightweight DOCX text extraction using fflate + DOMParser. Extracts text from body, headers/footers, and footnotes/endnotes by parsing w:p/w:t elements. Make readDocument() synchronous. Add PDF.js type definitions to eliminate unsafe any access.
2026-06-28 15:08:50 +01:00
Andrew Beal
cf037a09de Bump plugin version to 1.4.4 2026-06-28 14:18:23 +01:00
Andrew Beal
9457fa5b44 Replace unpdf and officeparser with lightweight document parsers
Switch PDF extraction to Obsidian's bundled PDF.js via loadPdfJs() instead of unpdf. Replace officeparser with mammoth for DOCX and custom fflate-based ZIP parsers for PPTX/XLSX/ODF formats. Eliminates heavy dependencies, removes all dynamic eval and .wasm references, and simplifies the esbuild plugin configuration.
2026-06-28 14:06:56 +01:00
Andrew Beal
9f6994e30d chore: update dependencies to latest versions
Update all npm dependencies including major updates to @anthropic-ai/sdk (0.106.0), @google/genai (2.10.0), @shikijs/rehype (4.3.0), openai (6.45.0), and various dev dependencies including @testing-library/svelte (5.4.2), @typescript-eslint packages (8.62.0), eslint (10.6.0), svelte (5.56.4), and svelte-check (4.7.1).
2026-06-27 14:49:19 +01:00
Andrew Beal
1390fafe86 refactor: extract shared Chat Completions logic and consolidate retry/tool-choice handling
Move common OpenAI-compatible API code to ChatCompletionsAIClass base, unify retry delay extraction and tool-choice mapping across providers (Claude, Gemini, Mistral, OpenAI), fix Gemini model labels, and correct scroll state when content is not scrollable

Fix Gemini model naming in settings. Fix CHat area scroll to bottom state when clearing a conversation.
2026-06-27 14:44:55 +01:00
Andrew Beal
d500214e2e fix: update security neutralisation for unpdf 1.6+ vendored duplicates
Adjust EXPECTED_NEW_FUNCTION_COUNT from 6 to 9 to account for unpdf >=1.6
vendoring PDF.js twice (main + worker/legacy), duplicating the 5 feature-
detection probes and 2 PostScript JIT sites (Hogan pair unchanged).

Extend WASM neutralisation to handle 4 total .wasm literals (qcms_bg.wasm ×2,
jbig2.wasm, openjpeg.wasm) instead of just qcms_bg.wasm, moving from single-
reference constant to EXPECTED_WASM_REFS map with per-filename counts and
unknown-literal detection.

Harden officeparser CJS shim regex to capture all minified identifiers (outer
var, arrow param, getter params, function param) via backreferences rather than
hardcoding param names, fixing breakage across esbuild releases (v7.1.0→v7.2.1
changed closure params r/t/e→n/e/t).
2026-06-20 11:20:14 +01:00
Andrew Beal
31812c80ad Remove setDynamicTooltip calls and update dependencies
Remove slider setDynamicTooltip calls in settings UI and update project dependencies including Anthropic SDK, Google GenAI, Shikiji, and various dev dependencies to latest versions.
2026-06-20 11:19:38 +01:00
Andrew Beal
c36e99540c Bump plugin version to 1.4.3 2026-06-01 00:30:56 +01:00
Andrew Beal
2d40fac44f Compress plugin banner. 2026-06-01 00:30:39 +01:00
Andrew Beal
212c782c55 Bump plugin version to 1.4.2 2026-06-01 00:10:13 +01:00
Andrew Beal
e5a9e4a24b refactor: bundle assets at build time instead of loading from disk
Remove runtime asset loading from AssetsService by importing assets directly and configuring esbuild loaders for SVG (text) and PNG (dataurl). This ensures assets work in release builds where only main.js is shipped without the Assets folder.
2026-06-01 00:04:39 +01:00
Andrew Beal
ca00242cd3 Bump plugin version to 1.4.1 2026-05-31 21:06:14 +01:00
Andrew Beal
e3c66bd4af docs: streamline contributing section and link to CONTRIBUTING.md
Replace verbose contributing policy with concise summary that directs
users to dedicated CONTRIBUTING.md file and GitHub Issues for feedback.
2026-05-31 21:03:22 +01:00
Andrew Beal
569d938bdf Bump plugin version to 1.4.0 2026-05-31 20:35:35 +01:00
Andrew Beal
7e13e00fde refactor: add .wasm filename neutralisation to build process
Extends the build neutralisation plugin to rewrite the dead qcms_bg.wasm
reference from unpdf's vendored PDF.js. The reference is unreachable (code
path never entered, loader gated, file not shipped) but trips Obsidian's
.wasm scanner. Build now fails if .wasm reference count drifts, preventing
undocumented changes from slipping through.
2026-05-31 20:35:12 +01:00
Andrew Beal
ba364c2d81 Bump plugin version to 1.3.9 2026-05-31 19:49:45 +01:00
Andrew
3b9d5e2c3c
Update image in README.md from screenshot to new banner 2026-05-31 19:47:54 +01:00
Andrew Beal
a77c5b3339 refactor: replace sparkles icon with custom plugin icon throughout app
- Add AssetsService to manage plugin icon and banner assets
- Update sidebar, ribbon, and quick actions to use new icon
- Add plugin banner to help modal welcome section
- Update help text to reference "plugin icon" instead of "sparkles icon"
2026-05-31 19:45:05 +01:00
Andrew Beal
72bf43a8ea refactor: clarify binary file attachment handling for AI agents
Add explicit instructions across all agent prompts explaining that binary
files (PDFs, images, documents) return content as attachments in the
message following the tool result, not as text in the result itself.

Update tool response messages to clearly state the attachment delivery
mechanism and prevent agents from re-reading the same file expecting
different output.

Improve build safety by neutralizing dynamic eval constructs and
hardening the officeparser plugin against bundle shape changes.
2026-05-31 17:58:23 +01:00