Skip to content

Conversation

@lvndry
Copy link
Owner

@lvndry lvndry commented Feb 3, 2026

Description

Type of Change

  • πŸ› Bug fix
  • ✨ New feature
  • πŸ’₯ Breaking change
  • πŸ“š Documentation
  • ♻️ Refactoring
  • ⚑ Performance
  • βœ… Tests

Checklist

  • Code follows project style guidelines
  • Tests added/updated and passing
  • Documentation updated (if needed)

@gemini-code-assist
Copy link

Summary of Changes

Hello @lvndry, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed!

This pull request introduces a powerful new 'Obsidian' skill, allowing users to leverage Obsidian's rich note-taking and visualization features directly from the command line. It also significantly enhances the 'Deep Research' skill by integrating a sophisticated memory system, interactive user guidance, and advanced document analysis, transforming how complex research tasks are managed. Complementing these feature additions, the underlying CLI input system has undergone a major refactoring to improve stability and user experience, alongside the introduction of a new utility for efficient PDF page counting.

Highlights

  • New Obsidian Skill: Introduces a comprehensive skill for interacting with Obsidian via obsidian-cli, enabling rich note-taking and knowledge management within the CLI. This includes support for advanced markdown features like LaTeX, images, colored callouts, and canvas creation.
  • Enhanced Deep Research Skill: The existing deep research skill has been significantly upgraded with a robust memory and persistence system, interactive questioning phases for user feedback, and advanced PDF/document analysis capabilities for more thorough research.
  • CLI Input System Overhaul: The CLI's core text input handling has been refactored for improved stability and responsiveness. This involves moving text input state management to a centralized InputService and updating UI components to use this new system, eliminating previous ref-syncing complexities.
  • New PDF Page Count Tool: A new utility tool, pdf_page_count, has been added to efficiently retrieve the total number of pages in a PDF file without requiring full content extraction. This supports more strategic and context-window-aware PDF processing.
Changelog
  • skills/deep-research/SKILL.md
    • Added detailed sections for 'Memory & Persistence System', 'Interactive Questioning Phase', 'Enhanced PDF & Document Analysis', and an 'Updated Pipeline Structure' to the deep research skill documentation.
  • skills/deep-research/references/memory-format.md
    • New file defining the comprehensive YAML schema for the deep research memory system, including metadata, user context, phases, findings, sources, checkpoints, and synthesis planning.
  • skills/deep-research/references/pdf-analysis.md
    • New file detailing the advanced PDF and document analysis pipeline, covering document acquisition, content extraction, intelligent analysis, citation networking, summarization, and integration with research memory.
  • skills/obsidian/SKILL.md
    • New file introducing the 'obsidian' skill, providing guidance on using obsidian-cli for note management, rich markdown features (LaTeX, images, callouts), canvas creation with colors, and best practices for content creation.
  • src/cli/input/escape-state-machine.ts
    • Added expand-diff as a new type to the ParsedInput union, enabling a new input action for diff expansion.
  • src/cli/services/diff-expansion-service.ts
    • New service DiffExpansionService introduced to manage and provide information about truncated diffs that can be expanded.
  • src/cli/services/input-service.test.ts
    • Added new test suite for the text input state store within InputService, verifying stable default states and subscriber notifications.
  • src/cli/services/input-service.ts
    • Introduced TextInputState interface and implemented methods (getTextInputState, setTextInputState, subscribeTextInputState) for centralized management of text input state.
    • Modified createInputService to include the new text input state store and its associated functions.
  • src/cli/ui/Prompt.tsx
    • Updated PromptComponent to utilize the new useTextInput hook for managing text input state, removing internal useState for value and cursor.
    • Refactored handleSubmit and handleChange callbacks to interact with the useTextInput hook and its imperative setValue function.
  • src/cli/ui/components/Input/TextInput.tsx
    • Refactored TextInput component to be purely presentational, receiving value and cursor as props directly from the useTextInput hook, removing internal state and input handling logic.
    • Removed onChange and onSubmit props, as input handling is now managed externally by useTextInput.
  • src/cli/ui/hooks/text-input-ref-sync.test.ts
    • Removed the text-input-ref-sync.test.ts file, as the underlying ref-syncing mechanism is no longer needed due to the new InputService state management.
  • src/cli/ui/hooks/text-input-ref-sync.ts
    • Removed the text-input-ref-sync.ts file, as its functionality has been superseded by the centralized InputService text input state management.
  • src/cli/ui/hooks/use-input-service.ts
    • Updated useTextInput hook to use useSyncExternalStore for subscribing to InputService's text input state, ensuring a single source of truth and stable rendering.
    • Removed the computeTextInputRefSync dependency and associated ref management, simplifying the hook's logic.
  • src/core/agent/tools/fs/index.ts
    • Integrated the new createPdfPageCountTool into the filesystem tools, making pdfPageCount available.
  • src/core/agent/tools/fs/pdfPageCount.ts
    • New tool pdf_page_count created, which provides the total number of pages in a PDF file without reading its full content, including file size information.
  • src/core/agent/tools/fs/readPdf.ts
    • Updated the description and parameter descriptions for the read_pdf tool to recommend using pdf_page_count for large PDFs and to read content in chunks to avoid context window overload.
Using Gemini Code Assist

The full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips.

Invoking Gemini

You can request assistance from Gemini at any point by creating a comment using either /gemini <command> or @gemini-code-assist <command>. Below is a summary of the supported commands on the current page.

Feature Command Description
Code Review /gemini review Performs a code review for the current pull request in its current state.
Pull Request Summary /gemini summary Provides a summary of the current pull request in its current state.
Comment @gemini-code-assist Responds in comments when explicitly tagged, both in pull request comments and review comments.
Help /gemini help Displays a list of available commands.

Customization

To customize Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a .gemini/ folder in the base of the repository. Detailed instructions can be found here.

Limitations & Feedback

Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counter productive. You can react with πŸ‘ and πŸ‘Ž on @gemini-code-assist comments. If you're interested in giving your feedback about your experience with Gemini Code Assist for Github and other Google products, sign up here.

You can also get AI-powered code generation, chat, as well as code reviews directly in the IDE at no cost with the Gemini Code Assist IDE Extension.

Footnotes

  1. Review the Privacy Notices, Generative AI Prohibited Use Policy, Terms of Service, and learn how to configure Gemini Code Assist in GitHub here. Gemini can make mistakes, so double check it and use code with caution. ↩

Copy link

@gemini-code-assist gemini-code-assist bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review

This pull request introduces several significant features and improvements. It adds a new obsidian skill with comprehensive documentation for using obsidian-cli and creating rich markdown content. The deep-research skill is also enhanced with a new memory and persistence system and advanced PDF analysis capabilities. A new pdf_page_count tool is added to support this.

A major highlight of this PR is the architectural refactoring of the CLI's input handling. Centralizing the text input state in InputService and using useSyncExternalStore is an excellent improvement that simplifies the UI components and eliminates potential state synchronization issues.

My review includes a few minor suggestions for the documentation files to improve clarity and correctness, particularly in the YAML examples and skill descriptions. Overall, this is a high-quality contribution with substantial enhancements.

@lvndry lvndry merged commit c005883 into main Feb 3, 2026
5 checks passed
@lvndry lvndry deleted the obsidian-skill branch February 3, 2026 15:01
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants