Commit graph

18 commits

Author SHA1 Message Date
Logan Yang
775d832ee5
fix(mobile): guard Agent Mode off the mobile load path (#2577)
* fix(mobile): shim `process` so the bundle survives module-eval on mobile

Follow-up to #2576 (preview issue #125). After the EventEmitter fix, mobile now
crashes at load with "ReferenceError: Can't find variable: process".

Cause: Agent Mode is desktop-only but its modules are statically imported, so
they're evaluated on every platform. Several read the Node global `process` at
module scope (e.g. `InstallCommandRow.tsx`'s `const DEFAULT_LABEL =
process.platform === "win32" ? ...`, the codex/claude/opencode descriptors),
and bundled Node deps read `process.env` at init. Mobile's WebView has no
`process`, so evaluating any of them throws during import and kills the plugin.

Fix: prepend a minimal `process` shim in the esbuild banner —
`var process = globalThis.process || { env:{}, platform:"", ... }`. Desktop
(Electron) has a real `globalThis.process` and uses it unchanged; mobile gets
the stub, so module evaluation no longer throws. The desktop-only code paths
that actually use `process` never run on mobile.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

* chore(test-vault): copy-deploy into iCloud-synced vaults for mobile testing

`npm run test:vault` symlinks main.js/styles.css by default, but iCloud syncs
file contents, not link targets, so a symlinked build never reaches the phone.
Detect iCloud vaults (path under "/Mobile Documents/") and copy real files
instead, so deploying to an iCloud vault makes the build testable on Obsidian
mobile. Mirrors the existing WSL copy-mode rule.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

* fix(mobile): keep agent mode off load path

* test(mobile): add load smoke check

* fix(mobile): share agent chat mode constant

---------

Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-06 21:56:58 -07:00
Logan Yang
3b8af4d341
ci(release): publish artifact attestations for release assets (#2431)
Add a step that signs main.js, manifest.json, and styles.css with the
workflow's OIDC identity and publishes the attestation to Sigstore's
public transparency log via actions/attest-build-provenance@v2.

Why: Obsidian's plugin review tooling flags release assets without an
attestation as a soft warning. Attestations cryptographically prove the
asset was built by this workflow on this commit, defending against an
attacker who gains release-asset-replace permissions and silently swaps
in a compromised main.js. Verification post-release:

  gh attestation verify main.js --owner logancyang --repo logancyang/obsidian-copilot

Placement: the new step runs AFTER the prerelease manifest swap and
BEFORE gh release create. That way the attested manifest.json is
exactly the bytes that get uploaded — for stable releases that's
the committed manifest.json; for prereleases it's the in-runner
copy of manifest-beta.json.

Permissions: adds attestations: write and id-token: write to the job.
The id-token: write permission is what allows the workflow to request
an OIDC token from GitHub; the attest action uses that token as proof
of identity when signing. No secrets to manage.

Free for public repos.

Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-13 17:09:14 -07:00
Logan Yang
28cfff08ef
chore(release): make prerelease tooling stop poisoning master's manifest.json (#2429)
* chore(release): make prerelease tooling stop poisoning master's manifest.json

Background: Obsidian's community plugin store reads manifest.json from master
to decide which GitHub Release to serve installers. The prerelease agent's
npm version bump was rewriting manifest.json with a prerelease version, which
broke plugin installs until hotfix #2428 reverted master's manifest.json to
the stable version.

This PR fixes the underlying tooling so it can't recur.

Changes:

- version-bump.mjs now branches on whether npm_package_version is a prerelease
  (contains a hyphen). Stable: writes to manifest.json + versions.json. Prerelease:
  writes to manifest-beta.json + versions.json, leaving manifest.json untouched.
  Seeds manifest-beta.json from manifest.json when it doesn't exist yet.
  On a stable bump that finds a stale manifest-beta.json, removes it (git rm)
  because the new stable supersedes the in-flight beta. Stages the right files
  itself; package.json no longer needs the explicit git-add step.

- package.json: simplifies the "version" lifecycle script to just
  "node version-bump.mjs" since the script now stages files itself.

- release.yml:
  * "Verify version matches manifest" step now selects the file based on
    is_prerelease (manifest.json for stable, manifest-beta.json for prerelease).
    For stable runs nothing changes.
  * Adds a "Prepare release-asset manifest" step before the release upload that
    copies manifest-beta.json over manifest.json IN THE RUNNER only when the
    release is a prerelease. This makes the uploaded manifest.json asset carry
    the prerelease version so testers sideloading the assets get a consistent
    manifest. The committed master manifest.json is never touched by the
    workflow (the workflow doesn't push back).

- .claude/agents/release.md: adds a Step 0 pre-flight assertion that master's
  manifest.json.version equals the latest non-prerelease GitHub Release tag.
  Catches drift loudly before doing any work. Notes the manifest-beta.json
  auto-removal in the rules.

- .claude/agents/prerelease.md: documents the manifest.json / manifest-beta.json
  split. Adds the same Step 0 drift assertion. Updates the git add step to
  stage manifest-beta.json instead of manifest.json. Adds an explicit guard
  rule that manifest.json must not change during a prerelease bump.

Verified locally by exercising version-bump.mjs in a throwaway repo:
- Stable 3.2.8 -> 3.2.9: writes manifest.json + versions.json, no beta side
- Prerelease 3.2.8 -> 3.2.9-beta.0: creates manifest-beta.json, manifest.json untouched
- Prerelease iteration 3.2.9-beta.0 -> 3.2.9-beta.1: updates manifest-beta.json,
  manifest.json untouched
- Stable supersedes beta 3.2.9-beta.1 -> 3.2.9: writes manifest.json,
  git-rm's manifest-beta.json

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* fix(release): address Codex review on PR #2429

1. release.yml: when verifying a prerelease, also assert that the committed
   manifest.json on the merge commit still equals the latest non-prerelease
   GitHub Release tag. This catches an old-style version bump or hand edit
   that accidentally modified master's manifest.json — without this guard,
   the verify step only inspected manifest-beta.json so a poisoned
   manifest.json could merge unnoticed and break the Obsidian plugin store.

2. version-bump.mjs: don't fail stable bumps when manifest-beta.json exists
   on disk but is untracked (or has local modifications). Check git
   trackedness first; use `git rm -f` only when tracked, fall back to a
   plain unlink for working-tree-only files. Logs which path it took.

Verified both scenarios in a throwaway repo:
- Untracked manifest-beta.json + stable bump: unlinked, no git rm error
- Tracked manifest-beta.json + stable bump: staged deletion via git rm -f

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* fix(release): use /releases/latest API for stable-drift guard

gh release list defaults to 30 results, so a cluster of 30+ prereleases
since the last stable would make the prerelease drift guard return empty
and fail valid prerelease publishes. Switch to GitHub's /releases/latest
endpoint instead, which by design returns only the most-recent
non-prerelease, non-draft release in a single call regardless of how
many prereleases have accumulated.

Applied the same fix to the Step 0 drift check in both the release agent
and prerelease agent doc for consistency.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-13 15:53:48 -07:00
Logan Yang
54d5c7bbfe
chore(release): add prerelease agent + workflow support, harden release agent pre-flight (#2426)
* chore(release): add prerelease agent + workflow support, harden release agent pre-flight

- release.yml: accept prerelease semver in PR titles (X.Y.Z-tag.N) and
  pass --prerelease to gh release create so prereleases are not offered
  as stable updates via Obsidian's plugin browser.
- .claude/agents/release.md: add a Step 0 pre-flight (clean tree, full
  project check, bundle size guard, manifest integrity, non-empty diff
  since last tag) and explicit rules against silently changing
  minAppVersion/isDesktopOnly or shipping with broken checks.
- .claude/agents/prerelease.md: new agent. Mirrors the stable release
  flow but bumps via npm version prepatch/prerelease with --preid, emits
  prerelease-shaped semver titles, and produces testing-focused release
  notes with explicit "What to Test" and "How to Install" sections.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* fix(release): make prerelease regex match full SemVer 2.0.0 grammar

Previous pattern '^[0-9]+\.[0-9]+\.[0-9]+-[a-zA-Z0-9.]+$' rejected hyphens
inside prerelease identifiers, so valid SemVer titles like '3.2.9-beta-hotfix.1'
would fall through to the reject branch and the merged PR would silently skip
publishing a GitHub Release.

New pattern '^[0-9]+\.[0-9]+\.[0-9]+-[0-9A-Za-z-]+(\.[0-9A-Za-z-]+)*$' allows:
- hyphens within identifiers (e.g. beta-hotfix)
- dot-separated multiple identifiers
- single identifier (e.g. 3.2.9-alpha)

And still rejects malformed cases: '3.2.9-', '3.2.9-.1', '3.2.9-x.', '3.2.9-x..y'.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* fix(release): tighten prerelease title to require numeric counter

Previous pattern accepted any SemVer prerelease suffix, including bare
labels like '3.2.9-beta' or '3.2.9-feature' with no counter. That broadened
the workflow's release-trigger surface beyond the documented agent
contract of 'X.Y.Z-<tag>.<N>'.

New pattern '^[0-9]+\.[0-9]+\.[0-9]+-[0-9A-Za-z-]+\.[0-9]+$' requires
exactly one alphanumeric (hyphen-allowed) identifier followed by a
numeric counter, which is what 'npm version prepatch/prerelease --preid=...'
actually emits.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-13 14:38:43 -07:00
Logan Yang
e3f57e0dfd
ci: add automated release workflow on PR merge (#2256)
* ci: add automated release workflow on PR merge

Triggers when a PR targeting master is merged with a strict semver title
(e.g., "3.2.3"). Builds the plugin and creates a GitHub Release with
main.js, manifest.json, and styles.css attached. Non-semver PR titles
are silently skipped. Includes manifest.json version match validation
and shell injection protection for release notes.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* fix: pin release checkout to merge commit SHA

Avoids race condition where a concurrent PR merge could cause the release
workflow to build a different commit than the one that triggered it.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* fix: prevent shell injection in release workflow and add idempotency check

Use env vars instead of inline ${{ }} expansion for PR title and version
outputs to prevent shell injection. Add pre-check to skip release creation
if the version tag already exists.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* fix: pin release tag to merge commit SHA via --target flag

Ensures gh release create tags exactly the merge commit, preventing
a source/binary mismatch if concurrent merges land before the step runs.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-03 21:37:02 -08:00
Logan Yang
afb41c9179
Support embedded note (#1995)
* Update bug report template to enhance clarity and requirements

- Changed the required checklist item from a screenshot to a log file generated via the "Copilot: Create Log File" command.
- Made the screenshot of the note and Copilot chat pane optional.
- Clarified the statement regarding bug report requirements for better understanding.

* feat: Implement embedded note processing in ContextProcessor

- Added support for processing embedded notes within markdown content, allowing for structured `<embedded_note>` blocks.
- Introduced new methods for building and formatting embedded note blocks, including error handling for missing notes.
- Enhanced logging to replace console statements with appropriate logging functions for better error tracking.
- Updated the `buildMarkdownContextContent` method to streamline content processing for markdown files.
- Added a new constant `EMBEDDED_NOTE_TAG` to manage embedded note structures.
2025-10-31 13:45:11 -07:00
Logan Yang
bc2d7f660a
Implement autonomous agent (#1689)
* Implement autonomous agent mode and new message architecture

- Implement autonomous agent mode with sequential thinking capabilities
- Migrate from sharedState to new clean message management architecture
- Add ChatManager, MessageRepository, and ContextManager for better separation of concerns
- Implement project-based chat isolation with separate message repositories per project
- Add ChatPersistenceManager for saving/loading chat history
- Refactor chain runner architecture with specialized runners (Autonomous, Project, VaultQA)
- Add XML tool call handling for better compatibility across LLM providers
- Introduce vault and web search toggles in settings
- Enhance model adapters with explicit tool usage instructions
- Add comprehensive test coverage for new architecture components
- Update UI components to use new ChatUIState instead of SharedState

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

Co-Authored-By: Claude <noreply@anthropic.com>

* Enhance context processing and documentation

- Added detailed XML structure for context notes, including metadata (creation and modification times) for notes and selected text.
- Introduced new tests for message lifecycle and XML tag formatting to ensure proper context handling.
- Created TODO.md to track technical debt and future improvements related to context processing and file handling.
- Updated CLAUDE.md to reference the new TODO.md for technical debt awareness.

This commit improves the clarity and functionality of context processing in messages, ensuring rich context is maintained throughout the message lifecycle.

* Fix composer instruction in new message implementation

* Add writeToFile tool to agent (#1632)

* Add writeToFile tool call to agent

* Update src/LLMProviders/chainRunner/AutonomousAgentChainRunner.ts

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* Update src/tools/ComposerTools.ts

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* Remove unuseful comment

---------

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* Fix tests

* Enhance context processing with new XML tags for notes and selected text (#1633)

* Enhance context processing with new XML tags for notes and selected text

- Introduced new constants for XML tags: SELECTED_TEXT_TAG, VARIABLE_TAG, VARIABLE_NOTE_TAG, EMBEDDED_PDF_TAG, VAULT_NOTE_TAG, and RETRIEVED_DOCUMENT_TAG.
- Updated context processing to format embedded PDFs and notes with XML structure.
- Modified prompt processing to include XML tags for selected text and variables, improving clarity and structure in generated outputs.
- Enhanced tests to validate the new XML formatting in processed prompts.

* Implement XML escaping utility functions and integrate into context processing

- Added `escapeXml` and `escapeXmlAttribute` functions to handle XML special character escaping, enhancing security against XML injection.
- Updated context processing to utilize these functions for escaping note titles, paths, and content, ensuring proper XML formatting.
- Enhanced tests to validate XML escaping functionality across various scenarios, including selected text and variable names.
- Introduced new test files for XML utility functions to ensure comprehensive coverage and reliability.

* Refactor XML utility functions and update imports

- Moved `escapeXml` and `escapeXmlAttribute` functions from `utils/xmlUtils` to `LLMProviders/chainRunner/utils/xmlParsing`, enhancing modularity.
- Updated all relevant imports across the codebase to reflect the new location of XML utility functions.
- Removed obsolete `xmlUtils` file and its associated tests, consolidating XML handling in a single module for better maintainability.

* Add message creation callback in ChatManager for immediate UI updates (#1634)

- Introduced a new method `setOnMessageCreatedCallback` in ChatManager to allow setting a callback that triggers when a message is created.
- Updated ChatUIState to utilize this callback for notifying listeners, ensuring the UI updates immediately upon message creation.
- This enhancement improves the responsiveness of the chat interface by synchronizing message creation events with UI state updates.

* Enhance TimeTools tests for invalid expressions

- Added setup to mock console.warn in tests for invalid time expressions.
- Verified that the appropriate warning message is logged when parsing fails.
- Improved test coverage for handling various invalid time inputs.

* Refactor local search handling and restore sources display

- Unified tool handling in CopilotPlusChainRunner to fix websearch results being ignored when localSearch has results
- All tool outputs now go through the same prepareEnhancedUserMessage method
- Preserved QA format and instruction when only localSearch is used
- Added proper validation for localSearch results (non-empty documents array)
- Maintained time expression support for temporal queries
- Fixed source tracking and display in ChatUIState
- Enhanced error handling for JSON parsing of search results

* Enhance AutonomousAgentChainRunner to track tool calls and results (#1639)

- Introduced a new property to store LLM-formatted messages for memory management.
- Reset LLM messages at the start of each run to ensure fresh context.
- Updated response handling to include LLM-formatted outputs, enhancing memory context for future iterations.
- Modified the base class to accept an optional LLM-formatted output parameter for improved context saving.
- Enhanced the writeToFile tool's response message for clarity on user actions.

* Quick Command (cmd+k) (#1640)

* Quick Command (cmd+k)

* Update custom command modal style

* Improve prompt

* Use submenu for commands

* Fix cursor comment

* Align selected_text variable name

* Fix embedded image wikilinks (#1641)

- Updated the `extractEmbeddedImages` method to accept an optional `sourcePath` parameter for resolving wikilinks.
- Implemented logic to determine the source path from context notes or fallback to the active file.
- Enhanced logging for unresolved images to improve debugging and user feedback.
- Ensured that embedded images are processed correctly based on the new source path handling.

* Fix salient term language issue

* Dedupe source notes (#1642)

* Fix salient term language issue

* Refactor source handling to include path in addition to title and score

- Updated source structures across multiple classes to include a `path` property alongside `title` and `score`.
- Modified methods in `AutonomousAgentChainRunner`, `BaseChainRunner`, and `CopilotPlusChainRunner` to accommodate the new source format.
- Enhanced the `deduplicateSources` function to use `path` as the unique key, falling back to `title` if necessary.
- Adjusted the `SourcesModal` to display paths correctly and ensure links open using the appropriate source path.
- Updated type definitions in `message.ts` to reflect the new source structure.

* Update path handling in source mapping for AutonomousAgentChainRunner

- Modified the source mapping logic to ensure the `path` property defaults to an empty string if not provided, enhancing robustness in source data handling.
- This change improves the consistency of source objects by ensuring that all properties are defined, which aids in downstream processing.

* Bump manifest version to v3

* Fix image (#1643)

* Fix salient term language issue

* Bump manifest version to v3

* Fix image passing

- Updated Chat, ChatManager, MessageRepository, and ChatUIState to include an optional `content` parameter in message handling.
- Adjusted method signatures and message creation logic to accommodate the new parameter, improving flexibility in message processing.

* Fix regenerate (#1644)

* Fix image in agent chain (#1646)

* Add YouTube transcription processing to AutonomousAgentChainRunner (#1647)

- Implemented a new method to extract and process YouTube URLs from user messages.
- Fetch transcriptions using the simpleYoutubeTranscriptionTool and handle errors gracefully.
- Updated conversation messages to include fetched transcriptions for improved context in responses.

* Disable quick command when live-mode is not on (#1648)

* Do not call writeToFileTool again for accepted changes as well (#1652)

* Trigger youtube tool only for urls in prompt not context (#1653)

* Stop calling youtube tool in context notes in agent mode

- Added a new instruction for handling YouTube URLs in the DEFAULT_SYSTEM_PROMPT.
- Removed the direct usage of simpleYoutubeTranscriptionTool in the AutonomousAgentChainRunner, as YouTube transcriptions are now automatically processed.
- Updated parameter naming conventions in modelAdapter for clarity and consistency.
- Cleaned up the simpleYoutubeTranscriptionTool definition by removing unnecessary parameters.

* Add agent loop limit message (#1655)

* Add composer toggle and implement auto-preview (#1651)

* Update composer output format to XML and refactor related components

- Changed the output format for composer instructions from JSON to XML in `constants.ts`.
- Updated `CopilotPlusChainRunner` to utilize the new XML format and adjusted streaming logic accordingly.
- Added a toggle for the composer feature in `ChatInput.tsx` and updated UI elements to reflect this change.
- Removed the `ComposerCodeBlock` component as it is no longer needed with the new implementation.
- Cleaned up unused code and comments in `ChatSingleMessage.tsx` related to the previous composer handling.

* Update src/constants.ts

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* Update src/constants.ts

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* Remove redundant tests

* Update doc

* Refactor composer handling and implement ActionBlockStreamer

- Replaced `ComposerBlockStreamer` with `ActionBlockStreamer` to handle `writeToFile` blocks more efficiently.
- Updated `constants.ts` to reflect changes in output format for composer instructions.
- Enhanced `ChatSingleMessage.tsx` to process `writeToFile` sections and integrate collapsible UI elements.
- Removed the deprecated `ComposerBlockStreamer` and its associated tests.
- Improved handling of XML codeblocks and unclosed tags during streaming.

* Fix reported bugs

* Refactor ActionBlockStreamer tests and implementation

- Updated `processChunks` to always push content, including null and empty strings, to the output.
- Adjusted test expectations to reflect changes in output handling for chunks with null content.
- Simplified regex in `findCompleteBlock` method by removing XML format handling.

* Fix reported issue

---------

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* Fix tool description generation (#1659)

* Access tool description from zod.shape when zod.properties is missing.

* Remove the access to schema.properties

* Remove unused print

* Also support schema.propertes

* Implement SimpleTool and remove Langchain tool calling (#1662)

* Make web search tool not overly eager

* Use SimpleTool interface instead of langchain tool call

- Replaced LangChain tool definitions with a new SimpleTool interface for better type safety and validation.
- Updated existing tools (e.g., writeToFile, localSearch, webSearch, and YouTube transcription) to utilize the new createTool function.
- Enhanced parameter extraction from Zod schemas for improved tool description generation.
- Cleaned up related code and documentation to reflect the new tool structure and ensure consistency across the codebase.
- Add tests

* Update ChatManager tests to handle undefined context cases

- Modified test cases in ChatManager to include handling of undefined context parameters.
- Ensured that the tests accurately reflect scenarios where no active file exists and when context is undefined.
- Improved overall test coverage for message processing in various contexts.

* Add validation tests for tool schemas and improve schema definitions

- Introduced comprehensive validation tests for tool schemas in `allTools.validation.test.ts` and `SearchTools.schema.test.ts` to ensure adherence to best practices and proper typing.
- Enhanced `SearchTools.ts` by replacing `z.any()` with specific object schemas for `chatHistory` to improve type safety.
- Added tests for various tool patterns, including metadata validation and schema best practices, ensuring tools are correctly defined and validated against expected interfaces.

* Add back example content for canvas file in ComposerTools schema

* Make web search tool not overly eager

* Add license key in agent mode (#1663)

* Add tool execution tests and implement Plus subscription checks (#1664)

- Introduced unit tests for the `executeSequentialToolCall` function to validate tool execution behavior, including handling of Plus-only tools.
- Enhanced `executeSequentialToolCall` to check for Plus subscription requirements before executing tools.
- Updated `createTool` and `SimpleTool` interfaces to include an `isPlusOnly` flag, indicating tools that require a Copilot Plus subscription.
- Marked existing tools (e.g., webSearch and YouTube transcription) as Plus-only where applicable.

* Add timezone conversion tools and enhance current time functionality (#1665)

* Add timezone conversion tools and enhance current time functionality

- Introduced `convertTimeBetweenTimezonesTool` to allow conversion of time between different timezones.
- Updated `getCurrentTimeTool` to accept an optional timezone parameter, improving its functionality to return time in specified timezones.
- Enhanced documentation and added examples for both tools in the codebase.
- Added comprehensive unit tests for the new timezone conversion functionality to ensure accuracy and reliability.

* Enhance timezone functionality and add unit tests

- Updated `getCurrentTime` and `convertToTimeInfo` functions to utilize Luxon's offset for accurate timezone calculations.
- Adjusted timezone offset handling to reflect correct signs.
- Added unit tests for Tokyo and New York timezone offsets to ensure accuracy in timezone calculations.

* Add unit test for past time conversion in timezone tool

- Introduced a new test case to verify that converting a past time (6:00 AM PT) to Tokyo correctly reflects the same day (January 15) without erroneously adding a day.
- Updated the `convertTimeBetweenTimezones` function to ensure accurate handling of past times without unintended date shifts.

* Enhance timezone handling and update related tests

- Added `convertTimeBetweenTimezonesTool` to facilitate time conversion between different UTC offsets.
- Updated `getCurrentTimeTool` to accept timezone offsets instead of names, improving accuracy and flexibility.
- Enhanced error handling for invalid timezone offset formats and added comprehensive unit tests to validate new functionality.
- Updated existing tests to reflect changes in timezone offset handling and ensure consistent behavior across various scenarios.

* Refactor timezone handling in convertTimeBetweenTimezones function

- Updated the creation of DateTime objects to interpret parsed dates as already being in the source timezone, improving clarity and accuracy in timezone conversions.

* Fix image in chat history (#1666)

* Refactor chat history handling to preserve multimodal content

- Removed the deprecated `extractChatHistory` function and replaced it with direct access to raw history from memory, allowing for the preservation of multimodal content.
- Updated `AutonomousAgentChainRunner`, `BaseChainRunner`, and `CopilotPlusChainRunner` to utilize `BaseMessage` objects for chat history, ensuring that both user and AI messages maintain their original structure and content.
- Enhanced message processing to accommodate multimodal inputs, storing them appropriately for later use.

* Refactor chat history handling to improve message processing

- Introduced `addChatHistoryToMessages` utility to streamline the addition of chat history, ensuring safe handling of various message formats.
- Updated `AutonomousAgentChainRunner` and `CopilotPlusChainRunner` to utilize the new utility, enhancing clarity and maintainability of the code.
- Removed deprecated manual processing of chat history to improve code efficiency and readability.

* Refactor chat history processing to enhance multimodal support

- Removed the deprecated `extractChatHistory` function and replaced it with `processRawChatHistory` to ensure consistent handling of chat history.
- Introduced `processedMessagesToTextOnly` function to extract text-only content from multimodal messages, improving clarity for question condensing.
- Updated `CopilotPlusChainRunner` to utilize the new processing functions, ensuring that both LLM and question condensing use the same data format.
- Added comprehensive unit tests for `processedMessagesToTextOnly` to validate its functionality across various message formats.

* Refactor memory management in BaseChainRunner to enhance context saving

- Removed the creation of `HumanMessage` and `AIMessage` objects for chat history, simplifying the process.
- Implemented `saveContext` for atomic operations, ensuring proper memory management while preserving input and output data.
- Noted that LangChain's memory now expects text content, which limits the saving of multimodal content.

* Remove multimodal content storage from userMessage in AutonomousAgentChainRunner and CopilotPlusChainRunner to streamline message processing. This change aligns with recent refactors to enhance memory management and improve clarity in handling chat history.

* Enhance ChatInput component with autonomous agent toggle button (#1669)

- Added a toggle for the autonomous agent feature, allowing users to enable or disable it within the ChatInput component.
- Updated the state management to synchronize the autonomous agent toggle with user settings.
- Introduced a button for toggling the autonomous agent mode, which is only visible in Copilot Plus mode.
- Refactored tool call logic to accommodate the new autonomous agent toggle, ensuring proper handling of tool calls based on the toggle state.

* Implement custom topic in conversation history (#1670)

* Refactor LoadChatHistoryModal and ChatPersistenceManager for enhanced topic handling

- Updated LoadChatHistoryModal to prioritize custom topics from file frontmatter, falling back to filename extraction if not present.
- Enhanced ChatPersistenceManager to generate AI topics for new chat files and preserve existing topics when updating files.
- Introduced new methods for finding files by epoch and generating AI topics based on conversation content, improving chat file management and organization.

* Refactor LoadChatHistoryModal and ChatPersistenceManager for improved topic handling

- Updated LoadChatHistoryModal to ensure custom topics are trimmed and validated before use.
- Enhanced ChatPersistenceManager to utilize reduce for efficient conversation summary generation, introducing constants for message and character limits to improve readability and maintainability.

* Implement tool call UI banner (#1671)

* Only add tool call to the user message when agent is off

- Updated the tool call logic to only add tool calls when the autonomous agent toggle is off, ensuring that the autonomous agent manages all tools internally when enabled.
- Improved code clarity by adding comments to explain the new logic.

* Implement tool call collapsible UI element

- Introduced a new utility for managing tool call markers, allowing for structured display and tracking of tool calls during execution.
- Updated the AutonomousAgentChainRunner to utilize the new tool call markers, improving clarity in the streaming response and tool execution process.
- Added a ToolCallBanner component for better visualization of tool calls in the chat interface, including execution status and results.
- Refactored ChatSingleMessage to handle tool call updates dynamically, ensuring that the UI reflects the current state of tool calls.
- Enhanced CSS for tool call containers and added animations for improved user experience.

* Fix disappearing tool call in final response

* Implement tool call result formatting

- Updated ChatSingleMessage to use a stable ID for message roots, enhancing memory management and preventing leaks.
- Implemented cleanup logic for old message roots to optimize performance.
- Introduced ToolResultFormatter to format tool results for better display in the UI, ensuring user-friendly output for various tool types.
- Enhanced ToolCallBanner to utilize the new formatter, improving the presentation of tool call results in the chat interface.

* Add YouTube transcription tool in agent and avoid mistrigger from context

- Replaced the deprecated simpleYoutubeTranscriptionTool with a new youtubeTranscriptionTool that automatically extracts YouTube URLs from user messages.
- Removed the processYouTubeUrls method to streamline the handling of YouTube transcriptions.
- Updated tool execution logic to pass the original user message to tools that require it, enhancing flexibility in tool usage.
- Improved the ToolResultFormatter to support multi-URL responses and provide better error handling for transcription failures.
- Enhanced documentation for YouTube transcription usage in the codebase.

* Enhance ToolCallBanner and ToolResultFormatter for improved user experience

- Added animation constants to ToolCallBanner for better visual feedback.
- Updated ToolResultFormatter to robustly handle JSON parsing, improving error handling for both single objects and arrays.
- Implemented input validation in YouTube transcription tool to prevent excessive input lengths and ensure proper data types.

* Refactor tool execution messages and enhance JSON parsing in ToolResultFormatter

- Updated the confirmation message for the writeToFile tool to be more concise.
- Added a private method in ToolResultFormatter to robustly parse JSON strings, improving error handling and ensuring consistent results.
- Streamlined the handling of search results by separating JSON parsing and regex extraction logic in ToolResultFormatter.
- Enforced required user message content in the YouTube transcription tool to prevent potential errors.

* Truncate long tool results for compact memory (#1672)

* Truncate long tool results for compact memory

- Introduced `processToolResults` utility to format tool results for different contexts, allowing for both truncated and full results.
- Updated `AutonomousAgentChainRunner` to utilize the new utility for improved memory management and clarity in tool result presentation.
- Added unit tests for `toolResultUtils` to ensure proper functionality of truncation and formatting methods, enhancing reliability and maintainability of tool result processing.

* Enhance tool results handling in AutonomousAgentChainRunner

- Added a conditional check to ensure that only non-null tool results are pushed to the llmFormattedMessages array, improving the robustness of message formatting and preventing potential errors from undefined values.

* Add Agent settings section (#1676)

* Add autonomous agent settings and tool configurations

- Introduced settings for enabling the autonomous agent mode, including maximum iterations and available tools.
- Updated the CopilotPlusSettings component to allow users to toggle tools like local search, web search, and YouTube transcription.
- Enhanced the model adapter to utilize the new settings for tool management.

* Enhance tool management by adding always available tools and updating tool usage guidelines in autonomous agent mode

* Make filetree tool always available

* Refactor tool management system to use a centralized ToolRegistry, enabling dynamic tool registration and configuration. Update settings structure to support enabled tool IDs and enhance UI for tool selection in the Copilot settings.

* Initialize built-in tools with vault access and improve tool registration logic

* Enhance documentation for initializeBuiltinTools function to clarify tool registration process and dynamic filtering of user-enabled tools.

* fix: Fix the shouldIndexFile method to return all files when inclusions is empty in project mode. (#1667)

* feat: Display all category items by default in the context-manage-modal. (#1657)

* Remove escapingXML for context data (#1678)

* Add apply command (#1677)

* Implement ReplaceInFile tool (#1661)

* Relevant note improvements (#1681)

* Change message scrolling behavior (#1680)

* Fix timetools and tests (#1683)

* Refactor time tool descriptions for clarity and examples

* Update XML escaping tests to reflect correct behavior and remove unnecessary settings mock

* Strip partial tool call tag (#1682)

* Strip partial tool call tag

* Show a placeholder message

* Remove perserveToolIndicators option

* Add tool dynamic prompt (#1679)

* feat: Enhance tool execution error messages and update custom prompt instructions for built-in tools

* feat: Add unit tests for ModelAdapter and enhance tool instructions for time-based queries

* feat: Implement detailed formatting for replaceInFile tool results

* feat: Enhance GPT model instructions and refine replaceInFile tool usage guidelines

* feat: Expand documentation on schema descriptions and custom instructions for tool usage

* feat: Refine tool documentation by clarifying schema descriptions and custom prompt instructions

* feat: Update GitHub Actions workflow to run on all pull requests regardless of target branch

* Fix tests

* feat: Update integration tests to validate writeToFile blocks and enhance replaceInFile usage example

* Enhance image extraction logic to support both wiki-style and markdown image syntax (#1685)

* Turn off agent when in Projects mode (#1686)

* Remove think and action blocks from copy and insert (#1687)

* Remove think and action blocks from copy, and fix composer for thinking models

* Refactor ToolSettingsSection layout for improved readability and consistency

---------

Co-authored-by: Claude <noreply@anthropic.com>
Co-authored-by: wenzhengjiang <jwzh.hi@gmail.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Zero Liu <zero@lumos.com>
Co-authored-by: Emt-lin <41323133+Emt-lin@users.noreply.github.com>
2025-08-04 09:51:18 -07:00
Logan Yang
b957e93c22
chore: Update integration test conditions in GitHub Actions workflow (#1583)
- Added conditional execution for integration tests to run only on trusted events (push) or when secrets are available.
2025-06-27 16:17:47 -07:00
Zero Liu
972b63d002
Add tw prefix to tailwind (#1497) 2025-05-31 22:30:54 -07:00
Logan Yang
9ee7b7ac43
Squash preview (#1502)
* Squashed commit from 2.9.0-preview

commit aaba478fabb58281fdecf1f053eb1412c926d3e5
Author: Logan Yang <logancyang@gmail.com>
Date:   Fri May 30 15:20:58 2025 -0700

    Make saveDB non-blocking to avoid frozen UI (#56)

commit 0d7c9893102743dd7558f365e11477d7d18939fa
Author: Wenzheng Jiang <jwzh.hi@gmail.com>
Date:   Sat May 31 07:17:27 2025 +0900

    Append copilot system prompt (including composer) to project prompt. (#48)

commit a74ac79ef8ea8d98ed5abed3982e87b3bb87eac1
Author: Wenzheng Jiang <jwzh.hi@gmail.com>
Date:   Sat May 31 07:16:55 2025 +0900

    Composer: Rename "Apply" to "Preview" (#54)

commit b205c3f3b68d4891b6b019ba69eaea01879e17f6
Author: Logan Yang <logancyang@gmail.com>
Date:   Tue May 27 21:10:26 2025 -0700

    Make saveDB non-blocking to avoid frozen UI (#52)

commit 535ac3e7d64c2cc7d794d09a8fd5e35cfa09d081
Author: Logan Yang <logancyang@gmail.com>
Date:   Tue May 27 15:39:26 2025 -0700

    Implement word completion (#49)

commit f2b324e336c3f0825354e1ee0912bfca44b429b4
Author: Wenzheng Jiang <jwzh.hi@gmail.com>
Date:   Sat May 24 04:45:30 2025 +0900

    Change composer output to JSON format (#46)

commit 4f9a0b0332ef984cb1197f8812e98d88ef091603
Author: Logan Yang <logancyang@gmail.com>
Date:   Tue May 20 14:48:59 2025 -0700

    chore: Update version to 2.9.0-preview-250520 (#44)

commit 16ccc5795572427143a8a25ddaac0d0cfa146d97
Author: Logan Yang <logancyang@gmail.com>
Date:   Tue May 20 14:40:55 2025 -0700

    Fix plus embedding switching (#43)

commit 3d8c6dfb668e6e820d17346cdf3e23310333ba60
Merge: c4502b0 7031ddb
Author: Logan Yang <logancyang@gmail.com>
Date:   Tue May 20 12:40:26 2025 -0700

    fix: Respect autosave setting with new chat command (#42)

commit 7031ddbb342acc28cd7f776897ed85e01162af94
Author: Logan Yang <logancyang@gmail.com>
Date:   Tue May 20 11:58:23 2025 -0700

    fix: Respect autosave setting with new chat command

commit c4502b07b0f02d36b49fbb8948d6d6ae85472aeb
Merge: d4c4be5 1d220e1
Author: Logan Yang <logancyang@gmail.com>
Date:   Sun May 18 20:17:43 2025 -0700

    2.9.0-preview-250518 (#41)

commit 1d220e1839cb8bee930a8359978505e455d45fb0
Author: Logan Yang <logancyang@gmail.com>
Date:   Sun May 18 19:59:01 2025 -0700

    chore: Update descriptions in manifest and package files to enhance clarity and branding

commit 12aa7e54899b5ec7efbc07affce9a7e76910ddc2
Author: Logan Yang <logancyang@gmail.com>
Date:   Sun May 18 19:56:32 2025 -0700

    Prerelease 2.9.0-preview-250518

commit d4c4be556bd7b087f69121f0834446926fad7be7
Merge: 1716d20 ed2cc2c
Author: Logan Yang <logancyang@gmail.com>
Date:   Sun May 18 18:51:13 2025 -0700

    feat: Optimize the selection logic of the dropdown list in the chat/embedding model (#33)

commit 1716d202411d162bda19a6f09eed2eaff45f0ca7
Merge: 5b20b47 6a64a64
Author: Logan Yang <logancyang@gmail.com>
Date:   Sun May 18 16:40:02 2025 -0700

    Allow more file types in projects mode (#40)

commit 6a64a64c51d06c6fd2acf0be6d180df032c698b1
Author: Logan Yang <logancyang@gmail.com>
Date:   Sun May 18 16:36:34 2025 -0700

    Allow more file types in projects mode

commit 5b20b47e5d903903111f737d8aa89ec2facd665b
Merge: cd94b03 36d9da3
Author: Logan Yang <logancyang@gmail.com>
Date:   Sun May 18 14:53:44 2025 -0700

    Clear copilot cache command should clear all types of cache (#39)

commit 36d9da345bdbdd9678e5d3fa1247587c95bd2045
Author: Logan Yang <logancyang@gmail.com>
Date:   Sun May 18 14:47:55 2025 -0700

    refactor: Update FileCache instance to use default cache directory

commit 1d80d31edd19a24af10f955e60c5736ca0dc4732
Author: Logan Yang <logancyang@gmail.com>
Date:   Sun May 18 14:44:02 2025 -0700

    Clear copilot cache command should clear all types of cache

commit cd94b0321141dc54bb02eaaca6985483e31792a3
Merge: 4c553a0 6502541
Author: Logan Yang <logancyang@gmail.com>
Date:   Sun May 18 13:27:42 2025 -0700

    Implement project-specific chat history (#38)

commit 65025412f58985e864aabe949e0aa253d2c65bb9
Author: Logan Yang <logancyang@gmail.com>
Date:   Sun May 18 13:09:04 2025 -0700

     Reload context on project modal update

commit 2ff8269d9cc421c425947f34080462fb8b6f2a3f
Author: Logan Yang <logancyang@gmail.com>
Date:   Sun May 18 12:58:38 2025 -0700

    refactor: Update project identifier in chat metadata to use project name instead of ID

commit 36dc52e93d3329168c8e1e11f957f14427dd115c
Author: Logan Yang <logancyang@gmail.com>
Date:   Sun May 18 12:54:41 2025 -0700

    feat: Implement project-specific chat history saving and loading

commit 1778dd9b8874c71fface0db4a54a60f6f4623a3d
Author: Logan Yang <logancyang@gmail.com>
Date:   Sun May 18 12:21:36 2025 -0700

    Add copy button on user message

commit 656aef8f5dac2321ad227e00dcc599e1ab439e0a
Author: Logan Yang <logancyang@gmail.com>
Date:   Sun May 18 12:19:53 2025 -0700

    Add confirm modal to force rebuild index button

commit cc0fe12ca9103f91b7084adf013f2e7d6f0c8c0a
Author: Logan Yang <logancyang@gmail.com>
Date:   Sun May 18 12:18:25 2025 -0700

    Update projects mode label

commit 4c553a0e1c272fea40a3b18563e7f0016ab876a5
Merge: 40235ce 5249ff9
Author: Logan Yang <logancyang@gmail.com>
Date:   Sun May 18 10:43:35 2025 -0700

    feat: Support send the msg by shift+enter on mobile. (#26)

commit 40235ce1f654e896308e153cfa005c839e653508
Merge: ac94aea 4d07452
Author: Logan Yang <logancyang@gmail.com>
Date:   Sun May 18 09:58:22 2025 -0700

    fix: Fix the issue with the failed request to the Anthropic list model API. (#34)

commit ac94aea5195b4696c07ee618584d96aec31383fd
Merge: bb6bc33 e45b838
Author: Logan Yang <logancyang@gmail.com>
Date:   Sun May 18 09:58:00 2025 -0700

    fix: Fixed the issue where current chat history was lost when changing settings. (#37)

commit 5249ff9e8671fd53fd3b033d29828679ca0d8974
Author: wyh <emt934841028@gmail.com>
Date:   Thu May 15 18:47:41 2025 +0800

    feat: Support send the msg by shift+enter on mobile.

commit e45b83858911ddb68ea93e4311d4fc2bd86613e8
Author: yhw <emt934841028@gmail.com>
Date:   Sun May 18 23:31:48 2025 +0800

    fix: Fixed the issue where current chat history was lost when changing settings.

commit 4d07452c856a00037b2019624fc37ab1299a53ff
Author: yhw <emt934841028@gmail.com>
Date:   Sun May 18 12:31:09 2025 +0800

    fix: remove the misleading popup when fetch list api successful .

commit bb6bc33809502ca446f68e9e00700805c746a3bc
Merge: 69ac09b 75eacd7
Author: Logan Yang <logancyang@gmail.com>
Date:   Sat May 17 19:08:49 2025 -0700

    Projects CAG v0 (#36)

commit 75eacd788b716ffeedff7f86b0550e9cc70e61a0
Author: Logan Yang <logancyang@gmail.com>
Date:   Sat May 17 19:04:59 2025 -0700

    Fix test

commit 8d6503c885172ca088bd7819a2503124fc568218
Author: Logan Yang <logancyang@gmail.com>
Date:   Sat May 17 18:34:54 2025 -0700

    Add reloading and force rebuilding project context in ChatControls

commit 236dbc4ca3486c196a4d39bb27a03278cac5aac0
Author: Logan Yang <logancyang@gmail.com>
Date:   Sat May 17 16:02:52 2025 -0700

    Improve project context management with dedicated file cache

commit da83b3f0855bad0a1cda8a3cbba78cb0ae650f86
Author: Logan Yang <logancyang@gmail.com>
Date:   Sat May 17 14:30:13 2025 -0700

    Implement project context rebuild

commit 474987c44573d99861646da8ca18b78706e26a28
Author: Logan Yang <logancyang@gmail.com>
Date:   Sat May 17 13:19:47 2025 -0700

    Implement confirmation modal for clearing project context cache in ChatControls

commit 69ac09b15764453a2e0c56e19bf59421610d7a16
Merge: 7622cc9 7785098
Author: Logan Yang <logancyang@gmail.com>
Date:   Sat May 17 00:51:12 2025 -0700

    Treating tags in prompt as tags in note properties. (#35)

commit ccc42bdc2120ade970fe4019dc21e7cc4504c2e1
Author: Logan Yang <logancyang@gmail.com>
Date:   Sat May 17 00:41:07 2025 -0700

    Add Docs4llm API integration and response handling; enhance project context with file details

commit 77850989317fdf6378b82dad29550c025c355bff
Author: wenzhengjiang <jwzh.hi@gmail.com>
Date:   Sat May 17 16:38:47 2025 +0900

    Treating tags in prompt as tags in note properties.

commit b298e38e16f8659414db447895843c3f6b50e6a8
Author: Logan Yang <logancyang@gmail.com>
Date:   Fri May 16 17:13:49 2025 -0700

    Add project context cache clearing in chat controls

commit bbeacb4036f1c960f807d1926ea911935f4ddc0e
Author: Logan Yang <logancyang@gmail.com>
Date:   Fri May 16 16:32:02 2025 -0700

    Implement file context management

commit 115619f2e1d6ab07ea878f40c48889591f1e3a26
Author: Logan Yang <logancyang@gmail.com>
Date:   Fri May 16 15:59:48 2025 -0700

    Loop through project loading messages

commit b67408f6737664cc8090dff56fc0c495b024e92b
Author: Logan Yang <logancyang@gmail.com>
Date:   Fri May 16 14:29:12 2025 -0700

    Add tooltip for file type inclusions. Add projectEnabled flag to 4.1 and gemini pro.

commit 857bbb599d33520b971a069e68c7a14f7337ae57
Author: Logan Yang <logancyang@gmail.com>
Date:   Fri May 16 13:43:39 2025 -0700

    Update maxTokens in DEFAULT_SETTINGS to 6000

commit 12eaa50a1e0990ea279e3b0714a69ede12acb460
Author: wyh <emt934841028@gmail.com>
Date:   Fri May 16 14:58:30 2025 +0800

    fix: Fix the issue with the failed request to the Anthropic list model API.

commit ed2cc2c9c14218fbdac692c7c33fdb47ca8972de
Author: wyh <emt934841028@gmail.com>
Date:   Fri May 16 14:26:31 2025 +0800

    feat: Optimize the selection logic of the dropdown list in the chat/embedding model.

commit 7622cc9c64c4fef2139fd9cda44ada5892a315dd
Merge: c506a09 b36d3ae
Author: Logan Yang <logancyang@gmail.com>
Date:   Thu May 15 21:10:21 2025 -0700

    Fix main circular dependency (#32)

commit b36d3ae58a4390fcd9b70e2ca6089545abfae7c0
Author: Logan Yang <logancyang@gmail.com>
Date:   Thu May 15 21:08:07 2025 -0700

    Fix main circular dependency

commit c506a090a59d7d0019b30c90a01e12fd4caff125
Merge: a48156d b74c815
Author: Logan Yang <logancyang@gmail.com>
Date:   Thu May 15 21:04:31 2025 -0700

    Revert "UX: Optimize the selection logic of the dropdown list in the model." (#31)

commit b74c8153f500e63c8cde8e2fffbb6a716675fee1
Author: Logan Yang <logancyang@gmail.com>
Date:   Thu May 15 20:57:38 2025 -0700

    Revert "UX: Optimize the selection logic of the dropdown list in the model."

commit a48156d8cac2ffbeb71a1c0a5fa052ab73290cd4
Merge: d9e227b 0d76890
Author: Logan Yang <logancyang@gmail.com>
Date:   Thu May 15 20:53:40 2025 -0700

    UX: Optimize the selection logic of the dropdown list in the model. (#27)

commit d9e227b7e42c5f8b2396574fd40a10259e6cc30b
Merge: 1ceb603 2b1d809
Author: Logan Yang <logancyang@gmail.com>
Date:   Thu May 15 20:53:23 2025 -0700

    Remove the up down navigation in chat input (#30)

commit 1ceb603a642f213f703b660937222c9d2f9cd205
Merge: d7d12dd a4697ba
Author: Logan Yang <logancyang@gmail.com>
Date:   Thu May 15 20:53:10 2025 -0700

    UX: Support The custom prompt list can be sorted alphabetically or by time (#25)

commit 2b1d80985bc02a9a3799125d9a817600b08e292d
Author: Logan Yang <logancyang@gmail.com>
Date:   Thu May 15 20:49:27 2025 -0700

    Remove the up down navigation in chat input

commit d7d12dd5c6b4025e7cbbfc332be73358a6468e3e
Merge: 2e45d51 eb72bfe
Author: Logan Yang <logancyang@gmail.com>
Date:   Thu May 15 20:04:32 2025 -0700

    Add Claude 3.7 sonnet thinking support (#29)

commit eb72bfea0d820128059c457b590223f7916091b1
Author: Logan Yang <logancyang@gmail.com>
Date:   Thu May 15 19:53:03 2025 -0700

    Support claude 3.7 sonnet thinking tokens

commit 2e45d517f17e5fe5617a253f4e5db71b2e49e1c7
Merge: f1c3f91 789fb77
Author: Logan Yang <logancyang@gmail.com>
Date:   Thu May 15 19:47:52 2025 -0700

    Fix canvas example in compoer prompt. (#28)

commit 789fb77e18a72be787a0bb6b513c7cef36ac53d8
Author: wenzhengjiang <jwzh.hi@gmail.com>
Date:   Fri May 16 11:44:56 2025 +0900

    Fix canvas example in compoer prompt.

commit a4697ba7f86740fc7a39c44d05a2906456f52f98
Author: wyh <emt934841028@gmail.com>
Date:   Thu May 15 19:27:42 2025 +0800

    feat: Support The custom prompt list can be sorted alphabetically or by time.

commit 3afa2627bd35d9161fae4c2fe71111542e5121f3
Author: Logan Yang <logancyang@gmail.com>
Date:   Thu May 15 16:59:40 2025 -0700

    Update chat model constants

commit 7d5c2c217844175adec2626a860dcea49359c26b
Author: Logan Yang <logancyang@gmail.com>
Date:   Thu May 15 16:28:21 2025 -0700

    Implement model table refresh for chat and embedding models in ModelSettings and ModelTable components

commit 87bf3aecc942c2ba6fe33cfce0898b851f2f9d70
Author: Logan Yang <logancyang@gmail.com>
Date:   Thu May 15 15:46:38 2025 -0700

    Add project mode validation for chat models in ChainManager

commit d9a0929c31524ea8be7493aebe1ef65591b9defb
Author: Logan Yang <logancyang@gmail.com>
Date:   Thu May 15 13:28:58 2025 -0700

    Enhance project context cache management with new atomic operations for markdown and URL handling

commit f1c3f911d9cfb1d6ed340a02370c8b247cf562a2
Merge: 271b24a 23bf9d9
Author: Logan Yang <logancyang@gmail.com>
Date:   Thu May 15 11:54:27 2025 -0700

    feat: Support the model list is sorted in alphabetical order when add the chat model in Modal. (#24)

commit 271b24adbccefa4e22921e18a6e7e04d404214c2
Merge: 8c4ee81 1e8d190
Author: Logan Yang <logancyang@gmail.com>
Date:   Thu May 15 11:51:27 2025 -0700

    some project-based feature bug fix (#20)

commit 0d76890dc9764e03204fe3950a9729aa62dadbd0
Author: wyh <emt934841028@gmail.com>
Date:   Thu May 15 21:08:10 2025 +0800

    fix: Optimize model validation and API Key verification process.

commit 23bf9d9f1c034b429166910a55242ab8fc91d3df
Author: wyh <emt934841028@gmail.com>
Date:   Thu May 15 16:57:52 2025 +0800

    feat: Support model selection list sorted alphabetically.

commit 8c4ee8107080862f652782b95ded3b0442015866
Merge: 5ac8442 f6a0d53
Author: Logan Yang <logancyang@gmail.com>
Date:   Wed May 14 22:44:48 2025 -0700

    feat: Support quick addition of models。 (#19)

commit 5ac8442ce4be43faf0e135e555481ae3a33ac2a2
Merge: 61d7dbb 75b245e
Author: Logan Yang <logancyang@gmail.com>
Date:   Wed May 14 10:37:43 2025 -0700

    Do not trigger autocomplete for note title (#23)

commit 75b245e487097cfd8c232d956f597c9ce1758ac6
Author: Logan Yang <logancyang@gmail.com>
Date:   Wed May 14 10:24:06 2025 -0700

    Do not trigger autocomplete for note title

commit 61d7dbbc9c5fe742599604d7885de81c5e6f1aba
Merge: d01134d 0080f33
Author: Logan Yang <logancyang@gmail.com>
Date:   Wed May 14 10:10:20 2025 -0700

    Some quality-of-life updates (#22)

commit 0080f3332a78ae9cdbeb63e7948eb4ff2cb7f4e0
Author: Logan Yang <logancyang@gmail.com>
Date:   Wed May 14 10:03:49 2025 -0700

    Respect IncludeActiveNote setting at New Chat

commit 5944c8f95c0447ef50bd700d8e6bc01156c0b049
Author: Logan Yang <logancyang@gmail.com>
Date:   Tue May 13 22:03:15 2025 -0700

    Suppress token count warnings everywhere

commit ca94da9b6c0d5568a1e8f146838e78dd6a661ce0
Author: Logan Yang <logancyang@gmail.com>
Date:   Tue May 13 21:47:25 2025 -0700

    Rename settings for clarity

commit cdd011f06c332879b916b05179e0cf9f822fc68f
Author: Logan Yang <logancyang@gmail.com>
Date:   Tue May 13 21:40:06 2025 -0700

    Add force reindex button to 3-dot menu

commit 7e0cfa634222ba9e9357664e6c347f206f6afb77
Author: Logan Yang <logancyang@gmail.com>
Date:   Tue May 13 15:51:08 2025 -0700

    Enhance token counting with fallback estimation and suppress warnings

commit 8a05e5bd844284f7e6efa6ad0194948a04f94d40
Author: Logan Yang <logancyang@gmail.com>
Date:   Tue May 13 15:05:13 2025 -0700

    Active note setting should only work in Plus mode

commit 050d6d95e7b10f4b07398e1753a131ad3fd9be23
Author: Logan Yang <logancyang@gmail.com>
Date:   Tue May 13 14:53:19 2025 -0700

    Add setting to include current note as context

commit 16e6c481cec8970c7762628b12b2f13a38e08f02
Author: Logan Yang <logancyang@gmail.com>
Date:   Tue May 13 13:50:10 2025 -0700

    Conditional rendering for "Save Chat as Note" button based on autosave setting

commit 46fd747ba21a988c03ea37f8f30ee61365d35355
Author: Logan Yang <logancyang@gmail.com>
Date:   Tue May 13 13:47:25 2025 -0700

    Add chat history loading button

commit 7358f37f17688be8d2fd55ae8b08c69ea6a02af2
Author: Logan Yang <logancyang@gmail.com>
Date:   Tue May 13 13:27:28 2025 -0700

    Add new chat command

commit 710d893cd80c831cf138ea4ead45baea00866a7e
Author: Logan Yang <logancyang@gmail.com>
Date:   Tue May 13 13:15:57 2025 -0700

    Stop opening note on Save Chat as Note

commit d01134d451b0ccc04b363c159b98388954d3da49
Merge: c41bd9d 73a57cd
Author: Logan Yang <logancyang@gmail.com>
Date:   Sun May 11 22:19:13 2025 -0700

    Add autocomplete settings (#21)

commit 73a57cd953b61684c981414ebd3b603264f118a2
Author: Logan Yang <logancyang@gmail.com>
Date:   Sun May 11 22:15:53 2025 -0700

    Enable additional context in autocomplete and update settings UI

commit c10fe737f70ef77ff77bb969ff88ad3f3f613f6d
Author: Logan Yang <logancyang@gmail.com>
Date:   Sun May 11 21:18:27 2025 -0700

    Add Copilot Plus settings and update related components

commit ddf831da70438fd956d62e7f28fcf152c8d1297d
Author: Logan Yang <logancyang@gmail.com>
Date:   Sun May 11 17:35:01 2025 -0700

    Update command name

commit c5ab1a69035dedf72d1df7fc4b5e2c3472b53c96
Author: Logan Yang <logancyang@gmail.com>
Date:   Sun May 11 17:17:59 2025 -0700

    Update AutocompleteSettings component to include a "Plus required" label for clarity

commit fefad8cf311295a1d6dc6ff6482c320808b98fb1
Author: Logan Yang <logancyang@gmail.com>
Date:   Sun May 11 17:06:08 2025 -0700

    Add toggle command for Copilot autocomplete

commit e8ef2a9693d3fcabe3f5a1dcbbca2fb3d27a174f
Author: Logan Yang <logancyang@gmail.com>
Date:   Sun May 11 16:58:01 2025 -0700

    Refactor autocomplete settings to use a select dropdown for key binding

commit 0d0fe3200a6dbd565a62fc4bd4b5280bd3cdef6d
Author: Logan Yang <logancyang@gmail.com>
Date:   Sun May 11 10:44:03 2025 -0700

    Add Autocomplete Settings tab

commit 1e8d190a5a44354d5d1eda8dfa1f30b20daf4161
Author: yhw <emt934841028@gmail.com>
Date:   Sat May 10 23:38:42 2025 +0800

    feat: Refactor project caching functionality.

commit 91118511fffcee17b6535ad8e7480d20411bfeea
Author: yhw <emt934841028@gmail.com>
Date:   Sat May 10 23:20:38 2025 +0800

    fix: delete the project old cache.

commit ae92b666d148605dce0d8e6ef1a19fd750e61d60
Author: yhw <emt934841028@gmail.com>
Date:   Sat May 10 23:15:59 2025 +0800

    fix: delete the project old cache.

commit f6a0d53fc0491006cf2494d99615291f724ae3cb
Author: wyh <emt934841028@gmail.com>
Date:   Fri May 9 19:19:51 2025 +0800

    feat: Support quick addition of models。

commit dc1083a37c277053d1876c9598da0152c9c30e33
Author: Logan Yang <logancyang@gmail.com>
Date:   Thu May 8 17:08:25 2025 -0700

    Add autocomplete post-processing functionality with context detection

commit c41bd9dec75e5075aa95d60cb260ad132c54e545
Merge: 1d043c2 778aad0
Author: Logan Yang <logancyang@gmail.com>
Date:   Thu May 8 16:03:33 2025 -0700

    Only add composer prompt for plus users. (#16)

commit 1d043c27d780b98fdbef770538575287e27f7a7a
Merge: 2d22438 ff636f6
Author: Logan Yang <logancyang@gmail.com>
Date:   Thu May 8 16:03:06 2025 -0700

    Update FAQ in README.md (#18)

commit ff636f63d9da1610b7283e9743dd3eabfb7ee420
Author: Run Zhou <happycdi@gmail.com>
Date:   Thu May 8 15:15:50 2025 -0700

    Add error code to FAQ for explicitity

commit 778aad0cd461ff01f56c963d3415f0d964dcb53a
Author: wenzhengjiang <jwzh.hi@gmail.com>
Date:   Fri May 9 07:05:34 2025 +0900

    Remove debugging output

commit 8079561154a487b1f357b4cd258c3dd248884bc1
Author: Run Zhou <happycdi@gmail.com>
Date:   Thu May 8 12:21:45 2025 -0700

    Update FAQ

commit 2d22438280948c7428bb45fcfb9f7646cd44d6ee
Merge: d62fca7 cfe1512
Author: Logan Yang <logancyang@gmail.com>
Date:   Thu May 8 10:06:32 2025 -0700

    Enable integration tests in CI (#17)

commit cfe15125e5fca631974ffe273299b2862f112b4b
Author: wenzhengjiang <jwzh.hi@gmail.com>
Date:   Thu May 8 20:34:12 2025 +0900

    Fail the test if API_KEY is missing

commit 96df0dd99bab7120def56a5e69006df67ad92a8f
Author: wenzhengjiang <jwzh.hi@gmail.com>
Date:   Thu May 8 20:31:29 2025 +0900

    Fix typo

commit 72d98337c873b7e11ee023d1c02982ef63ea8a8a
Author: wenzhengjiang <jwzh.hi@gmail.com>
Date:   Thu May 8 20:27:39 2025 +0900

    Enable integration tests in CI

commit f9b8177cb3b5e1b537ad6eec6a260cef3713ad07
Author: wenzhengjiang <jwzh.hi@gmail.com>
Date:   Thu May 8 08:51:16 2025 +0900

    Only add composer prompt for plus users.

commit d62fca776bd2fa404a83ebcc27f19706389f8ae2
Merge: 237b36a dd2d1c4
Author: Logan Yang <logancyang@gmail.com>
Date:   Tue May 6 14:34:01 2025 -0700

    Revamp README.md into a quickstart guide (#4)

commit dd2d1c4191d4f46de1e17bae895a6df7f578d862
Author: Run Zhou <happycdi@gmail.com>
Date:   Tue May 6 12:26:45 2025 -0700

    Update README.md in response to feedback

commit 54cb36ef2b81f070b9cfd7970b3bd4452ed0d087
Author: Run Zhou <happycdi@gmail.com>
Date:   Mon May 5 20:43:33 2025 -0700

    Update README with image file path corrected

commit 861884e827793079bf2a0a9edc2067bed4d134cf
Author: Run Zhou <happycdi@gmail.com>
Date:   Mon May 5 20:17:46 2025 -0700

    Update README

commit b1c24bd2517859f8e129fbc8626a788e7b62ca3c
Author: Run Zhou <happycdi@gmail.com>
Date:   Wed Apr 23 16:13:58 2025 -0700

    Revamp README.md into a 2-minute quickstart guide for onboarding new Obsidian Copilot users. This version contains only GIF placeholders.

commit 237b36abf3ed00a5dc51bccda4d1577f6188d7c1
Merge: 69ec5f9 6640a67
Author: Logan Yang <logancyang@gmail.com>
Date:   Mon May 5 09:15:11 2025 -0700

    Remove redundant heading from composer new note (#15)

commit 6640a6766040833928420210bbfe096249961568
Author: wenzhengjiang <jwzh.hi@gmail.com>
Date:   Mon May 5 23:03:48 2025 +0900

    Remove redundant heading from composer new note

commit 69ec5f98ef560be65bedbcb210030a43286bb464
Merge: 51bcc4a a30f8f9
Author: Logan Yang <logancyang@gmail.com>
Date:   Sun May 4 16:40:09 2025 -0700

    Add composer integration tests (#12)

commit a30f8f9742f3f8ecc68f3c2855dbe9a01b085067
Author: wenzhengjiang <jwzh.hi@gmail.com>
Date:   Thu May 1 22:40:14 2025 +0900

    Add docs for prompt testing

commit 10111f5b70061ee2507fe0b989dd6f14e48e909d
Author: wenzhengjiang <jwzh.hi@gmail.com>
Date:   Thu May 1 19:22:33 2025 +0900

    Fix package-lock.json

commit 92fe52c5427e461fd7159aec0ded4a0ca86b1efb
Author: wenzhengjiang <jwzh.hi@gmail.com>
Date:   Thu May 1 19:19:38 2025 +0900

    Exclude integration tests from "npm test"

commit df6d857742c13b3d8628e47b07498d3331dad729
Author: wenzhengjiang <jwzh.hi@gmail.com>
Date:   Thu May 1 19:11:21 2025 +0900

    Add some basic composer tests

commit 51bcc4a337872b5d185025b0c7f8f45da365982f
Merge: a68fc81 f7d454b
Author: Logan Yang <logancyang@gmail.com>
Date:   Wed Apr 30 18:25:21 2025 -0700

    Composer: Replace intermediate output with loading text (#11)

commit f7d454b71ef6680a77f9700c03b7fc646a28bbdf
Author: wenzhengjiang <jwzh.hi@gmail.com>
Date:   Wed Apr 30 10:28:22 2025 +0900

    Show loading text for intermediate composer output.

commit ce2d524135c55eaba593c837a7945cd9b2a75446
Author: wenzhengjiang <jwzh.hi@gmail.com>
Date:   Wed Apr 30 09:50:37 2025 +0900

    Catch file content in composer rendering

commit a68fc81b803f29cf59de9c3ccfc9b8af4d49ee70
Merge: 00d53cf 3fda5a2
Author: Logan Yang <logancyang@gmail.com>
Date:   Mon Apr 28 18:55:54 2025 -0700

    Update prompt for supporting canvas edit (#9)

commit 3fda5a21db5395d288ef2a021b77d18e95e99972
Author: wenzhengjiang <jwzh.hi@gmail.com>
Date:   Tue Apr 29 08:29:15 2025 +0900

    Update prompt for supporting canvas edit

commit 00d53cf3dcd8dfd1517aece0d190086cfa88d430
Merge: cbe7ca4 0bfe9d2
Author: Logan Yang <logancyang@gmail.com>
Date:   Sun Apr 27 21:40:25 2025 -0700

    Move composer prompts to copilot system prompt (#6)

commit 0bfe9d25bed7fe7ea0475311c8212e069150b4b2
Author: wenzhengjiang <jwzh.hi@gmail.com>
Date:   Fri Apr 25 22:58:56 2025 +0900

    More guardrails in the prompt

commit 45fee93bfb13ea17b7207941f0d0f2a946483a59
Author: Wenzheng Jiang <jwzh.hi@gmail.com>
Date:   Fri Apr 25 22:35:20 2025 +0900

    Add prompt for folder preference

commit e73e1942050c0ee87ec1391ee473ce5d1273e145
Author: Wenzheng Jiang <jwzh.hi@gmail.com>
Date:   Fri Apr 25 22:33:02 2025 +0900

    Only show relevant changes in md block and add a copy button

commit bb59f60cf32af9ca09602e9fd2db82ae4168ff60
Author: Wenzheng Jiang <jwzh.hi@gmail.com>
Date:   Fri Apr 25 16:20:41 2025 +0900

    Use chat system prompt for creating composer codeblocks.

commit cbe7ca45f7e175db4255897b984ae6765e98e2df
Author: Logan Yang <logancyang@gmail.com>
Date:   Thu Apr 24 12:56:35 2025 -0700

    Bump to 2.9.0-preview-250424

commit c0226836490415e87e2acf2defff6a2b11a02c0a
Merge: 2abbda7 7e74bd2
Author: Logan Yang <logancyang@gmail.com>
Date:   Thu Apr 24 12:11:10 2025 -0700

    Let composer prefer existing folder (#5)

commit 7e74bd28d217c4c5cb41a9772c29fa9aa915c45d
Author: Wenzheng Jiang <jwzh.hi@gmail.com>
Date:   Thu Apr 24 18:10:09 2025 +0900

    Add a guard rail to not missing the note path from the markdown block

commit 37e69f85ad742fcb51c2e9086df19003dc6fc5e5
Author: Wenzheng Jiang <jwzh.hi@gmail.com>
Date:   Thu Apr 24 11:49:53 2025 +0900

    Let composer prefer existing folder

commit 2abbda70c895b1b60abb1d13097b19eb3080bc50
Merge: c899e5f 29fd86b
Author: Logan Yang <logancyang@gmail.com>
Date:   Wed Apr 23 09:20:33 2025 -0700

    Composer: Remove unused code and small UX improvement.

commit c899e5fab6ce4c9417fab15602c4f07b823958c2
Merge: fa4f8ad d130b83
Author: Logan Yang <logancyang@gmail.com>
Date:   Wed Apr 23 09:20:18 2025 -0700

    Fix JSON parsing from composer

commit d130b833932bf224d2ca2a942fec399416807880
Author: Wenzheng Jiang <jwzh.hi@gmail.com>
Date:   Wed Apr 23 22:22:46 2025 +0900

    Fix JSON parsing from composer

commit 29fd86bf178e7fd00d5af3dbed7836f8cca5330e
Author: Wenzheng Jiang <jwzh.hi@gmail.com>
Date:   Wed Apr 23 14:33:11 2025 +0900

    Composer: Remove unused code and small UX improvement.

commit fa4f8ad56610e31c7093287c4ec1dda9772000c8
Author: Logan Yang <logancyang@gmail.com>
Date:   Tue Apr 22 14:45:50 2025 -0700

    Update github action

commit 1db4cceed84018bce7cad3d4a2b820ba8fee0455
Author: Logan Yang <logancyang@gmail.com>
Date:   Tue Apr 22 14:32:52 2025 -0700

    Update to 2.9.0-preview-250422

commit a1ba142ded1ad3061f0c5ac9adc1989978e080a9
Author: Logan Yang <logancyang@gmail.com>
Date:   Tue Apr 22 16:26:58 2025 -0700

    Fix image recognition issue

commit d8f3b120d53fcf07fe9f02ac2022419ad81aae85
Author: Logan Yang <logancyang@gmail.com>
Date:   Tue Apr 22 14:23:18 2025 -0700

    Fix build

commit 684a3fc2aa
Author: Logan Yang <logancyang@gmail.com>
Date:   Tue Apr 22 00:03:19 2025 -0700

    Squashed new commits from master to preview

    commit 730d0c82b1
    Author: Logan Yang <logancyang@gmail.com>
    Date:   Mon Apr 21 20:13:21 2025 -0700

        Switch insert and copy button positions (#1463)

    commit 4efdc941f2
    Author: Logan Yang <logancyang@gmail.com>
    Date:   Mon Apr 21 16:15:50 2025 -0700

        Fix canvas read (#1462)

    commit 93e4a04ef1
    Author: Emt-lin <41323133+Emt-lin@users.noreply.github.com>
    Date:   Tue Apr 22 07:13:47 2025 +0800

        fix: Add a new line when press the Enter key on mobile. (#1450)

    commit 3c65d79a74
    Author: Logan Yang <logancyang@gmail.com>
    Date:   Mon Apr 21 15:38:36 2025 -0700

        Implement canvas adaptor (#1461)

        * Implement canvas parser
        * Refactor context processing and custom prompt handling

        - Update `processContextNotes` to exclude notes already processed by custom prompts using a set of excluded note paths.
        - Modify `extractVariablesFromPrompt` to return both a variables map and a set of included files.
        - Adjust `processPrompt` to track included files during prompt processing.
        - Update `Chat` component to handle context notes more efficiently by avoiding duplication of processed notes.
        - Ensure that the `FileParserManager` is initialized with the vault in `main.ts`.

        * Include canvas files in note context modal
        * Fix tests

    commit 6a9085a71c
    Author: Logan Yang <logancyang@gmail.com>
    Date:   Sun Apr 20 16:14:54 2025 -0700

        Add a toggle to turn custom prompt templating off (#1460)

    commit 448a64c383
    Author: Logan Yang <logancyang@gmail.com>
    Date:   Sun Apr 20 15:52:42 2025 -0700

        Update dependencies and support gpt 4.1 series, o4-mini and grok 3 (#1459)

    commit 1d46ab90b0
    Author: Logan Yang <logancyang@gmail.com>
    Date:   Sun Apr 20 12:14:56 2025 -0700

        Fix image in note logic (#1457)

        * Refactor image processing in note context
        * Add passMarkdownImages setting

    commit f4bf334c27
    Author: Felix Haase <felix.haase@feki.de>
    Date:   Fri Apr 18 08:19:35 2025 +0200

        Ollama ApiKey support (#1421)

        * Update @langchain/ollama and ollama
        * Ollama: support api keys by passing headers

    commit 19d8b50a74
    Author: Emt-lin <41323133+Emt-lin@users.noreply.github.com>
    Date:   Fri Apr 18 14:13:25 2025 +0800

        refactor: Optimize some user experiences. (#1441)

    commit fe9b9311ba
    Author: Zero Liu <zerolxy@gmail.com>
    Date:   Sun Apr 13 17:40:42 2025 -0700

        Improve custom command (v3) (#1446)

        * Trim responses and auto focus replace on finishing
        * Make textarea auto scroll to bottom when generating
        * Support custom prompt syntax in custom command
        * Support follow up instruction
        * Fix unit test
        * Allow followup instruction to use custom prompt syntax

    commit 648412a914
    Author: Zero Liu <zerolxy@gmail.com>
    Date:   Wed Apr 2 21:44:37 2025 -0700

        Add update notification (#1415)

    commit cb4510e920
    Author: Zero Liu <zerolxy@gmail.com>
    Date:   Wed Apr 2 21:43:26 2025 -0700

        Add user_id to broca requests (#1414)

commit 4b4d09924f
Author: Wenzheng Jiang <jwzh.hi@gmail.com>
Date:   Sat Apr 19 08:28:02 2025 +0900

    Composer: Ask for clarification if intent unclear. (#1456)

commit a73c61d817
Author: Wenzheng Jiang <jwzh.hi@gmail.com>
Date:   Thu Apr 10 14:07:39 2025 +0900

    Pass project state to broca (#1436)

commit 88599dc113
Author: Wenzheng Jiang <jwzh.hi@gmail.com>
Date:   Wed Apr 9 03:44:51 2025 +0900

    Refactor Composer: Implement @composer tool. (#1399)

commit b35290568a
Author: Logan Yang <logancyang@gmail.com>
Date:   Thu Mar 6 22:38:34 2025 -0800

    Squashed 2.9.0 preview 250327

    Update preview version

    Merge latest from Composer

    Support creating new files

    Update version to 2.9.0 preview

    Add minor fixes

    Update autocomplete call and prefix logic

    Merge Project mode into 2.9.0-preview

    Squashed commits from:

    commit a762629dee
    Author: Logan Yang <logancyang@gmail.com>
    Date:   Tue Mar 25 16:29:31 2025 -0700

        Add projectEnabled flag to CustomModel interface

    To

    commit 1694357823
    Author: wyh <emt934841028@gmail.com>
    Date:   Wed Feb 19 14:45:22 2025 +0800

        feat: Support project-based feature.

    Fix package vulnerabilities

    Prerelease 250325

    Update label for PROJECT_CHAIN to "Plus Projects (alpha)" in BasicSettings component

* Fix build

* Fix composer canvas json generation
2025-05-30 20:06:25 -07:00
Logan Yang
b8a392b837
Update readme (#725) 2024-10-18 19:39:44 -07:00
Logan Yang
321193993c
Format code (#521) 2024-08-21 15:16:22 -07:00
Logan Yang
bff586f784
Add gpt 4o mini (#486) 2024-07-22 13:22:04 -07:00
Logan Yang
61f7bb67bf
Update bug_report.md (#392) 2024-03-26 20:57:42 -07:00
Logan Yang
65f62513e0
Pass multiple notes to prompt by setting folder as context using Copilot command (#265) 2024-01-27 22:51:54 -08:00
Logan Yang
229bf631b3
Update issue templates (#254) 2024-01-23 22:45:40 -08:00
Logan Yang
3efe9d9c84
Update issue templates (#253) 2024-01-23 22:44:10 -08:00
Logan Yang
379dd90cae
Create FUNDING.yml (#45) 2023-05-30 11:14:28 -07:00