Releases: KNN-07/ObsidiAI
Release list
ObsidiAI 0.1.9
ObsidiAI 0.1.9
PDF attachments
- Attach PDFs through the computer file picker, drag and drop, or clipboard file paste.
- Extract embedded text locally in page order. Preview the extracted text before sending; only that text, under the original filename, enters model context and saved history.
- PDF text works with text-only models. No OCR or page/image rendering is included; scanned PDFs without embedded text need OCR first. Complex layouts and tables may not preserve reading order.
- Enforce limits of 20 MiB, 500 pages, and 200,000 extracted characters per PDF. Reject invalid, unsupported, empty-text, and oversized documents rather than silently truncating them. Password-protected PDFs may be rejected.
- Update attachment picker hints and the user guide. Bundle exact-pinned
unpdf@1.8.1; no separate PDF worker installation is needed.
Install or update
- Download obsidiai-0.1.9.zip, not GitHub's automatic source archive.
- Replace
main.js,manifest.json, andstyles.cssin<vault>/.obsidian/plugins/obsidiai/. Preservedata.jsonandhistory.jsonif present. - Reload Obsidian or disable/re-enable ObsidiAI after the current run settles.
Requirements remain Obsidian desktop 1.11.4+ and embedded Node 22.19.0+. The three individual plugin files are also attached.
Verification
- Production build, all 168 tests, release metadata/assets validation, and generated-bundle syntax checks passed.
- Attachment tests cover compressed multipage extraction, basename retention, invalid signatures, damaged/mislabeled PDFs, empty text, and byte/page/extracted-text limits.
- An isolated CommonJS bundle smoke check extracted text from a real PDF through the attachment input path using the production bundler configuration.
- Native Obsidian file-picker, drag/drop, clipboard, and preview interactions for PDFs have not been verified.
ObsidiAI 0.1.8
ObsidiAI 0.1.8
Fix chat text selection
- Enable text selection in user messages, assistant responses (including code blocks), and expanded tool results so selected text can be copied with Ctrl/Cmd+C.
- Keep buttons and other controls unchanged.
Install or update
- Download obsidiai-0.1.8.zip, not GitHub's automatic source archive.
- Replace
main.js,manifest.json, andstyles.cssin<vault>/.obsidian/plugins/obsidiai/. Preservedata.jsonandhistory.jsonif present. - Reload Obsidian or disable/re-enable ObsidiAI after the current run settles.
Requirements remain Obsidian desktop 1.11.4+ and embedded Node 22.19.0+. The three individual plugin files are also attached.
Verification
- Production build, all 163 tests, and release metadata/assets validation passed.
- Chromium smoke verification with the actual stylesheet and representative chat markup reproduced blocked selection under a non-selectable parent before the fix. After the fix, mouse selection worked for user text, assistant text, code blocks, and tool results; Ctrl+C dispatched a copy event with the selected tool text. Buttons remained non-selectable.
- This patch was not verified inside a running native Obsidian host or against the operating-system clipboard.
ObsidiAI 0.1.7
ObsidiAI 0.1.7
Configure other community plugins with review
inspect_plugin_settingsopens a local review of an installed plugin's saved JSON. Nothing is selected automatically. Only explicitly selected and approved values reach the model and saved chat history.propose_plugin_settings_changeproposes exact JSON-pointer changes with a separate before/after review and Save settings approval. Existing fields must have been disclosed; new keys can be proposed under existing object parents without sharing existing values.- Read-only allows reviewed disclosure but blocks writes. Auto-approve notes never bypasses settings disclosure or write approvals. Stop disables pending controls and stale approval callbacks.
- Unrelated settings are preserved. Changed files, versions, or loaded instances invalidate review; writes compare the approved bytes inside Obsidian's atomic adapter operation.
- Approved changes preserve configured-enabled, session-only, and disabled intent. Required restarts are disclosed. If unloading saves different settings, the patch is refused and prior runtime intent is restored when safe.
Scope and safety
- Supports an installed community plugin's existing
<configDir>/plugins/<plugin-id>/data.json, not core plugins, ObsidiAI itself, or other storage formats. The target plugin must create a missing settings file first. - Limits: 256 KiB JSON object, 500 leaf fields, 16,000 characters per shared/proposed JSON value or path, 32,000 characters of selected-field payloads, and 20 non-overlapping changes. Arrays are atomic values, not individually editable indexes.
- Other plugins may store passwords, tokens, or API keys in their settings. Approved values are sent to your provider and persisted in unencrypted chat history, which sync and backups may copy. Unselected values stay local.
- Valid JSON is not plugin-specific schema validation or proof of effective runtime behavior. No backup or automatic rollback is provided. Once mutation starts, approved restoration finishes even after Stop; failures may leave partial state and report actual persistence and observed runtime state.
Install or update
- Download obsidiai-0.1.7.zip, not GitHub's automatic source archive.
- Replace
main.js,manifest.json, andstyles.cssin<vault>/.obsidian/plugins/obsidiai/. Preservedata.jsonandhistory.jsonif present. - Reload Obsidian or disable/re-enable ObsidiAI after the current run settles.
Requirements remain Obsidian desktop 1.11.4+ and embedded Node 22.19.0+. The three individual plugin files are also attached.
Verification
- 163 tests cover the integrated implementation, including selected-only disclosure, stale approvals, sharing limits, exact-byte commit conflicts, unload-time saves, restart failures, state restoration, and cancellation.
- Native Obsidian 1.13.7, a local scripted provider, and a harmless fixture plugin verified actual settings writes and restart loading, session-only and disabled states, unselected-token exclusion from model requests/history, rejection, Stop/stale controls, permission modes, stale files, unload-time conflicts, and disclosure limits.
- Approval cards were visually checked in light and narrow dark layouts. No universal third-party schema compatibility, new remote-provider/OAuth verification, or native installation/update/uninstallation verification is claimed.
ObsidiAI 0.1.6
ObsidiAI 0.1.6
Attach files, drop files, paste images
- Attach files from computer selects multiple UTF-8 text, Markdown, CSV/TSV, JSON/YAML/TOML, log, source/config files, or PNG/JPEG/WebP/GIF images.
- Drag and drop files onto the chat to use the same attachment flow. Clipboard images can be pasted directly into the composer.
- Images reach the agent as real image inputs. Image-containing conversations require a model advertising image support; text-only models are rejected before consuming the draft rather than silently dropping images.
- Click attachment chips to preview safe raw text or images, before sending or after reopening saved history. A separate remove button removes draft attachments. Attachment-only messages are supported.
Compact pasted text and native navigation
- Pasting 4,000 characters or 40 lines creates a temporary
.txtattachment with a clickable preview instead of expanding the message. Short pastes stay normal text; text outside the selected draft range is preserved. - Temporary attachments are in-memory snapshots, not new vault notes or operating-system temporary files.
- Ctrl-click / Cmd-click internal note links and embedded notes in assistant output to open a new tab without replacing the chat. Generated tool-result note links also support this behavior.
Limits and privacy
- Maximum 200,000 characters per text attachment, 5 MiB per image, 20 attachments, and 20 MiB total attachment data per message. Files are not silently truncated. Unsupported inputs and failed reads are reported; late reads after view closure are discarded.
- Text decoding rejects malformed UTF-8 and binary/control-byte content. Recognized source files tolerate incorrect platform MIME labels; image signatures must match their advertised format.
- Nothing is uploaded merely by selecting, dropping, or pasting. External attachments retain only the filename, not the computer directory. On Send, content is sent to the selected provider and saved in the plugin's unencrypted history, which vault sync and backups may copy.
- Sent previews reference existing model-message blocks rather than duplicating large text/image payloads in timeline storage. Existing saved history remains readable; unsent attachments are not persisted.
Install or update
- Download obsidiai-0.1.6.zip, not GitHub's automatic source archive.
- Replace
main.js,manifest.json, andstyles.cssin<vault>/.obsidian/plugins/obsidiai/. Preservedata.jsonandhistory.jsonif present. - Reload Obsidian or disable/re-enable ObsidiAI after the current run settles.
Requirements remain Obsidian desktop 1.11.4+ and embedded Node 22.19.0+. The three individual plugin files are also attached.
Verification
- 140 tests cover the integrated implementation, including multimodal transport, attachment-only submission, preview/history roundtrips, rejected image models, attachment bounds, invalid text/image inputs, and CRLF paste thresholds.
- Native Obsidian 1.13.7 checks exercised the actual file picker, clipboard image/text paste, file drag-and-drop, safe previews, compact sent messages, history reload before model setup, failed-input draft retention, late-read disposal, and Ctrl/Cmd-click note and embed navigation.
- Light/dark previews and narrow layouts were visually checked. Native transport checks used a local scripted provider; no remote vision-provider or new OAuth verification is claimed. Actual third-party plugin lifecycle effects remain unverified.
ObsidiAI 0.1.5
ObsidiAI 0.1.5
History that fits the chat
- History opens inside the agent tab rather than a popup, with matching typography, light/dark themes, and narrow-pane layouts.
- Search conversation titles, providers, and models. Browse local-date groups: Today, Yesterday, Previous 7 days, and Earlier.
- Long lists render 50 conversations at a time with Show more; search still covers the entire saved history.
- Back to chat preserves the unsent draft. Opening a saved conversation restores its context, uses the currently selected model for future requests, and resets permissions to Ask.
Select and delete multiple conversations
- Choose Select chats, check conversations, then Delete selected. Select all results includes matches beyond the displayed page.
- Selections survive filtering. The selected count identifies chats outside the current filter; Clear selection clears all selections.
- An inline confirmation previews titles and the total. Keep chats or Escape cancels without losing the selection. Single-row deletion remains available.
- The selected removals are saved together in one queued write. Failed saves show an error and retain the selection for retry. Controls are locked while saving.
- Deleting the active conversation resets it only after saving succeeds. Deleting other conversations preserves the active chat.
Privacy
History remains in the plugin's unencrypted history.json and can include sent note excerpts and tool results. Deletion removes the plugin's saved copies, not copies already synced or backed up. There is no storage-format migration in this release.
Install or update
- Download obsidiai-0.1.5.zip, not GitHub's automatic source archive.
- Replace
main.js,manifest.json, andstyles.cssin<vault>/.obsidian/plugins/obsidiai/. Preservedata.jsonandhistory.jsonif present. - Reload Obsidian or disable/re-enable ObsidiAI after the current run settles.
Requirements remain Obsidian desktop 1.11.4+ and embedded Node 22.19.0+. The three individual plugin files are also attached.
Verification
- 129 tests pass, including queued batch deletion, selection snapshots, failed writes, and disposal without resurrecting the deleted active chat.
- Native Obsidian 1.13.7, in a disposable vault: history search, pagination, date groups, draft preservation, inline confirmation, keyboard selection, filter-spanning selection, select-all beyond the first page, single-write batch persistence, simulated failed-save retry, busy controls, and active-chat deletion behavior.
- Light/dark and narrow layouts were visually checked. Native history checks used sample saved conversations without provider requests. No new remote-provider or OAuth verification was performed; actual third-party plugin lifecycle effects remain unverified.
ObsidiAI 0.1.4
ObsidiAI 0.1.4
Vault-aware context
- File-tree tool:
list_filesinspects visible folders—including empty ones—and file paths without reading note bodies. Bounded, paginated queries let the agent explore existing destinations instead of guessing. The agent is instructed to inspect folders before proposing a new note and ask when the destination is ambiguous. Hidden/configuration paths remain excluded; creating missing folders is not supported. - Optional open-note context: enable Open notes in the composer or Automatically attach open notes in Settings. Off by default; the preference persists. Dashed chips show included Markdown tabs and can exclude individual notes for the next message. At Send, editable tabs contribute current unsaved text; reading/deferred tabs contribute saved text. Manual attachments and selections take precedence over automatic context for the same file. Changed or oversized context stops submission instead of silently truncating it.
Less intrusive tool activity
- Consecutive tool calls share a collapsible activity group. Expand the group and individual calls to inspect their results; summaries indicate activity, pending approval, and failures.
- Approvals are now inside chat, not popup dialogs. Note cards preserve exact diffs; plugin cards retain identity/version information, code-execution warnings, and destructive-operation warnings. Approval cards remain visible outside collapsed tool chains.
- Diffs use a slightly darker inset with padding and a subtle border. Added text is green and removed text is red, without green/red background blocks.
- Reject, Stop, and closing the last agent tab reject pending changes. Stale approval buttons cannot authorize a later proposal. Read-only and Auto-approve notes retain their existing safety boundaries; plugin mutations always require explicit approval.
Context and privacy
Automatic attachment happens only at Send, not when enabling the setting. Exclusions reset after submission. Turning the setting off stops new automatic attachments; it does not remove context already sent to a provider or stored in chat history. Saved conversations can contain note excerpts and tool results in unencrypted history.json.
Install or update
- Download obsidiai-0.1.4.zip, not GitHub's automatic source archive.
- Replace
main.js,manifest.json, andstyles.cssin<vault>/.obsidian/plugins/obsidiai/. Preservedata.jsonandhistory.jsonif present. - Reload Obsidian or disable/re-enable ObsidiAI after the current run settles.
Requirements remain Obsidian desktop 1.11.4+ and embedded Node 22.19.0+. The three individual plugin files are also attached.
Verification
- 129 tests cover the integrated implementation, including bounded tree navigation, path restrictions, current editor snapshots, conflicting split buffers, stale approvals, and cancellation.
- Native Obsidian 1.13.7 checks exercised file-tree results, unsaved open-note context, exclusions, manual-attachment precedence, failed preparation cleanup, settings persistence across plugin reload, tool-chain mouse/keyboard controls, inline approval/rejection, Stop, stale clicks, and last-view closure. Light/dark styling and a 360px pane were visually checked.
- Native checks used a local scripted provider. Plugin-warning presentation and rejection were checked; actual third-party plugin lifecycle effects and successful OAuth login remain unverified. No new remote-provider verification was performed for this release.
ObsidiAI 0.1.3
ObsidiAI 0.1.3
Improved chat presentation
- Claude-inspired progressive text reveal: incoming chunks gently fade into place while earlier words remain stable. There is no artificial typing delay or whole-answer replay on each token.
- A pulsing notebook logo and Thinking indicator while waiting/streaming, followed by a brief completed-Markdown transition. Stop ends the pulse; restored history does not replay the result transition. Reduced-motion preferences disable these effects.
- The README notebook logo now appears in the app header, welcome/setup screen, assistant messages, workspace tab, and ribbon. It is bundled into the plugin; no extra installation asset is needed.
Fixed attachment display
Newly sent messages show the original prompt plus compact file and skill labels instead of dumping the expanded note/skill context into the chat bubble. File labels open the attached note. The model still receives the complete attachment snapshot, and saved conversations retain that context for future requests. Labels survive history reload. Older saved transcripts retain their original display text.
This changes presentation, not privacy: saved model messages can still contain sent note excerpts and skill instructions in the plugin's unencrypted history.json.
Install or update
- Download obsidiai-0.1.3.zip, not GitHub's automatic source archive.
- Replace
main.js,manifest.json, andstyles.cssin<vault>/.obsidian/plugins/obsidiai/. Preservedata.jsonandhistory.jsonif present. - Reload Obsidian or disable/re-enable ObsidiAI after the current run settles.
Requirements remain Obsidian desktop 1.11.4+ and embedded Node 22.19.0+. The three individual plugin files are also attached.
Verification
- 114 tests pass locally, including a regression that failed before the attachment-display fix and now verifies compact display plus intact model context across history reload.
- Native Obsidian 1.13.7 checks covered actual streamed text integrity, bounded live text nodes, final Markdown, cancellation, reduced motion, README logo rendering, clickable attachment labels, restored history, light/dark themes, and narrow-pane layout.
- Native animation checks used a local scripted provider, not a new remote-provider verification. Existing OAuth and native third-party plugin-manager verification limits remain unchanged.
ObsidiAI 0.1.2
ObsidiAI 0.1.2
New
- Chat permission modes: Read-only, Ask before changes (default), and Auto-approve notes. Plugin lifecycle changes still require individual approval. New and reopened conversations reset to Ask; automatic note approval never bypasses path, current-run read, conflict, or cancellation checks.
- Persistent chat history with native Open and Delete controls. Restore prior messages and tool context after reload; continued requests use the currently selected provider/model, as disclosed in the dialog.
@note and folder suggestions in the composer, including nested permitted Markdown files, duplicate handling, and visible attachment failures./skill suggestions with keyboard and mouse selection. Manual-only skills remain selectable;user-invocable: falseexcludes explicit invocation. Selection does not send automatically.- Subtle chat, tool-card, and control animations, respecting reduced-motion preferences.
Fixed
- Native provider requests no longer inherit incompatible browser timers, performance APIs, or response streams inside Obsidian. The bundled HTTP client uses dependency-scoped Node bindings without changing host/UI globals. This fixes connection failures, stalled response bodies, and cancellation hangs observed with NVIDIA.
- Provider failures now display safe, actionable authentication/access, unavailable-model, quota, and service categories without exposing upstream response bodies.
- Failed history saves retain the current conversation and report the problem; retry can save it before starting a new chat. Deletion does not resurrect a saved conversation on unload.
- Attachment status clears after submission, and late attachment reads cannot add context to a closed view.
Important: history storage
Saved chats can contain sent note excerpts, skill instructions, and tool results. They are stored separately from credentials in .obsidian/plugins/obsidiai/history.json by default, or under your custom vault configuration folder. The plugin does not encrypt this file; sync and backups may copy it. Unsent drafts and elevated permission modes are not stored. Deleting removes the plugin's saved copy, not existing backups or remote copies.
Install or update
- Download obsidiai-0.1.2.zip, not GitHub's automatic source archive.
- Extract the included
obsidiai/folder into<test-vault>/.obsidian/plugins/. When updating, replace onlymain.js,manifest.json, andstyles.css; preserve existingdata.jsonandhistory.jsonif present. - Reload Obsidian or disable/re-enable ObsidiAI. Conversations from 0.1.1 were memory-only and cannot be recovered after reload; finish or copy them before updating.
The three individual plugin files are also attached. Requirements remain Obsidian desktop 1.11.4+ and embedded Node 22.19.0+.
Verification and limits
- 113 tests pass locally, including real local HTTP streaming/abort with renderer-like globals, permission boundaries, history persistence and failure recovery, and credential privacy. The release workflow repeats checks on Node 22.19.0 and Node 24 before publication.
- Native checks used Obsidian 1.13.7 in disposable vaults: automatic note edits, read-only rejection, plugin approval, permission resets,
@//interaction, IME/dismissal, narrow panes, reduced motion, history reload/resumption/deletion, and failed-save recovery. - A real NVIDIA
openai/gpt-oss-20brequest returned a response through the production plugin; Stop settled correctly. Some models advertised by NVIDIA returned HTTP 404 for the test account. Catalog visibility is not proof of endpoint availability or account access. - Successful OAuth login and actual third-party plugin-manager lifecycle effects remain unverified. No scripted preview provider or test credential is shipped.
Start in a disposable vault. Community plugins execute unsandboxed code; uninstall can remove their saved data. Stop is not rollback.
ObsidiAI 0.1.1
ObsidiAI 0.1.1
New
- Refined native chat layout: centered conversation, compact header, rounded composer, collapsible tool results, and responsive light/dark styling.
- Multiple saved provider logins in Settings, with independent Manage and Disconnect actions. One login per provider; adding another does not replace your active chat selection.
- Searchable model selection across available providers directly in the composer, preserving the conversation when switching.
- Model-supported thinking-effort selection in chat. Your preference is saved and adapted to the selected model's actual capabilities; controls are locked during active runs.
- Product logo and real native Obsidian screenshots in the README.
Fixed
- Native authentication callbacks remain bound when pi normalizes the login interaction, allowing prompts and progress notifications to work correctly.
- Resizing a chat pane keeps the latest response in view while automatic following is active.
- Failed model/effort setting saves restore the previous selection; cancelled reconnects retain the existing login.
Install or update
- Download obsidiai-0.1.1.zip, not GitHub's automatic source archive.
- Extract the included
obsidiai/folder into<test-vault>/.obsidian/plugins/. When updating, replacemain.js,manifest.json, andstyles.css; preserve existingdata.json. - Reload Obsidian or disable/re-enable ObsidiAI. Active conversations are memory-only and do not survive reload.
- Open Settings → ObsidiAI → Add / manage provider, connect a provider, then choose a model and thinking effort in the agent tab.
The three individual plugin files remain available as release assets. Requirements are unchanged: Obsidian desktop 1.11.4+ and embedded Node 22.19.0+.
Verification and early-preview limits
- Production build, release metadata validation, and all 86 behavioral tests pass locally. The release workflow repeats checks on Node 22.19.0 and Node 24 before publishing.
- Native checks used Obsidian 1.13.7 in a disposable vault with local scripted providers: login add/cancel/disconnect, cross-provider conversation continuity, actual Agent request effort, capability restrictions, busy guards, settings reload, failed-save rollback, and narrow-pane layout.
- These checks do not establish successful remote-provider authentication or actual third-party plugin-manager lifecycle effects. No preview provider is shipped in production.
Start in a disposable vault. Switching providers sends the existing conversation context to the newly selected provider on your next request. Note and plugin changes still need individual approval. Community plugins can execute unsandboxed code; uninstall can remove their saved data. Stop is not rollback.
ObsidiAI 0.1.0
ObsidiAI 0.1.0
Your vault. Your models. Your approval.
The first public release of ObsidiAI brings an in-process pi agent to a native Obsidian workspace tab.
Included
- Native streaming chat with note attachments, editor-selection capture, Stop, and memory-only conversations.
- Pi's built-in provider catalog with API-key and provider-advertised OAuth controls; plugin credentials use Obsidian SecretStorage.
- Fifteen tools for Markdown notes, metadata, knowledge-graph queries, instruction-only skills, and community-plugin management.
- Individually approved note edits and creation, with exact-content and open-editor conflict checks.
- Separate approval for plugin install, update, enable, disable, and uninstall, with observed partial-failure reporting.
- Vault-local
SKILL.mddiscovery, manual skill selection, and restricted plain-text resources.
Install
- Download obsidiai-0.1.0.zip from this release's assets—not the automatic “Source code (zip)” archive.
- Extract it into
<test-vault>/.obsidian/plugins/. The includedobsidiai/folder containsmain.js,manifest.json, andstyles.css. - Reload Obsidian and enable ObsidiAI in Community plugins.
- Connect a provider and select a model in Settings → ObsidiAI, then run ObsidiAI: Open agent tab.
The three individual files also remain available for Obsidian's plugin installer and manual installation.
Requires Obsidian desktop 1.11.4+ and its installer's embedded Node 22.19.0+. No separate pi installation or node_modules folder is needed. See the README for setup and privacy details.
Early-preview limitations
CI checks the minimum Node runtime and Node 24, runs the behavioral test suite, and builds the published assets. Automated checks do not establish native Obsidian visual behavior or actual private plugin-manager effects. Successful remote-provider login also remains unverified; provider policy and account entitlement apply.
Start in a disposable vault. Community plugins are unsandboxed third-party code. Native uninstall may remove plugin files and saved settings without a backup. Stop is not rollback once a write or native lifecycle operation has started.