Skip to content

Add support for local Ollama models and unify commit message generation - #39

Merged
tsdevau merged 16 commits into
mainfrom
ollama
Jun 5, 2025
Merged

Add support for local Ollama models and unify commit message generation#39
tsdevau merged 16 commits into
mainfrom
ollama

Conversation

@tsdevau

@tsdevautsdevau commented Jun 5, 2025

Copy link
Copy Markdown
Owner

Resolves issue #37

  • Added dual provider support with a new diffCommit.provider configuration option
  • Implemented Ollama integration with model selection and server configuration
  • Added new commands for Ollama setup and model switching:
    • DiffCommit: Configure Ollama Model
    • DiffCommit: Change Ollama Model
  • Added new configuration settings:
    • diffCommit.ollamaHostname for server connection
    • diffCommit.ollamaModel for model selection
  • Updated documentation with Ollama requirements and setup instructions
  • Enhanced error handling for Ollama-specific scenarios
  • Updated workflow documentation to include provider selection

tsdevau added 12 commits June 5, 2025 10:22
This commit adds support for using local Ollama models as an alternative to Anthropic's Claude models. Key changes include:
- Added configuration option to select between Anthropic and Ollama providers
- Implemented new commands for selecting and changing Ollama models
- Created OllamaManager class to handle model selection and server communication
- Added OllamaCommitMessageGenerator class for generating commit messages using Ollama
- Updated extension.ts to support both providers
- Added configuration options for Ollama hostname and model selection
- Updated package.json with new commands and configuration properties
… unified class
- Merged separate Ollama generator into main CommitMessageGenerator class
- Added constructor overloads to support both Anthropic and Ollama providers
- Implemented provider-specific message generation methods
- Improved error handling for both providers
- Enhanced prompt building with shared logic between providers
- Added response text normalisation to ensure consistent output formatting
- Removed redundant ollamaCommitMessageGenerator.ts file
- Updated logging to provide more detailed token usage information
… class
- Remove `OllamaCommitMessageGenerator` import and class usage
- Update `OllamaManager` constructor to no longer require context parameter
- Modify `generateCommitMessage` function to use the main `CommitMessageGenerator` for both providers
- Rename command reference from `selectOllamaModel` to `changeOllamaModel` for consistency
- Replace custom fetch implementation with official Ollama client library
- Consolidate model selection logic into a single configurable method
- Improve error handling with more specific error messages
- Enhance user feedback with status bar messages
- Simplify class by removing unnecessary context dependency
- Add convenience methods for initial setup and model changes
- Improve hostname validation with URL constructor
This commit adds comprehensive tests to support the Ollama feature addition as an alternative to Anthropic's Claude API:
- Add new `CommitMessageGenerator` class that supports both Anthropic and Ollama providers
- Implement `OllamaManager` for managing Ollama model selection and configuration
- Add extensive test coverage for Ollama integration
- Update configuration handling to support provider selection
- Improve error handling for both Anthropic and Ollama API calls
- Update token usage logging to be more detailed and consistent
- Update model name from `claude-3-5-sonnet-latest` to `claude-sonnet-4-0`
- Reduce default temperature from 0.4 to 0.2 for more consistent results
This commit adds support for using local Ollama models as an alternative to cloud-based Anthropic models:
- Updated package description to mention Ollama support for offline usage
- Added keywords related to Ollama and local/offline AI capabilities
- Renamed command from `diffCommit.selectOllamaModel` to `diffCommit.configureOllamaModel`
- Added Ollama dependency (version 0.5.16) to package.json
…for clarity
The commit renames the command from "selectOllamaModel" to "configureOllamaModel" to better reflect its purpose, updating both the command registration and its reference in the subscriptions list.
Renames the command from `selectOllamaModel` to `configureOllamaModel` and adds the corresponding mock function. Updates tests to properly verify that each function is called exactly once instead of assuming both commands use the same underlying function.
- Added dual provider support with a new `diffCommit.provider` configuration option
- Implemented Ollama integration with model selection and server configuration
- Added new commands for Ollama setup and model switching:
- `DiffCommit: Configure Ollama Model`
- `DiffCommit: Change Ollama Model`
- Added new configuration settings:
- `diffCommit.ollamaHostname` for server connection
- `diffCommit.ollamaModel` for model selection
- Updated documentation with Ollama requirements and setup instructions
- Enhanced error handling for Ollama-specific scenarios
- Updated workflow documentation to include provider selection
@tsdevautsdevau self-assigned this Jun 5, 2025
@tsdevau
tsdevau requested review from Copilot and removed request for CopilotJune 5, 2025 12:26
@tsdevau
tsdevau marked this pull request as ready for review June 5, 2025 12:28

CopilotAI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Pull Request Overview

This PR adds support for using local Ollama models alongside Anthropic, unifies commit message generation logic, and updates tests and docs accordingly.

  • Introduces diffCommit.provider for selecting Anthropic or Ollama
  • Implements OllamaManager with setup/change commands and error handling
  • Refactors CommitMessageGenerator to handle both providers and updates related tests/docs

Reviewed Changes

Copilot reviewed 17 out of 17 changed files in this pull request and generated 3 comments.

Show a summary per file
FileDescription
test/withProgressAPI.test.tsUpdated progress message from API key validation to configuration
test/ollamaManager.test.tsAdded tests for Ollama model config and error scenarios
test/messageHandling.test.tsMocked default Ollama config in message handling tests
test/gitIntegration.test.tsAligned default config values (provider/hostname/model)
test/gitAndCommands.test.tsUpdated command registration tests for new Ollama commands
test/errorHandling.test.tsMocked Ollama API errors and added handling tests
test/configurationHandling.test.tsIncluded provider and Ollama config in configuration tests
test/anthropicResponseHandling.test.tsAdjusted console log assertions for separated token logs
src/ollamaManager.tsNew OllamaManager implementation for model setup and error handling
src/extension.tsIntegrated Ollama commands and extended commit flow for providers
src/configManager.tsExtended config manager to include provider, hostname, and model
src/commitMessageGenerator.tsUnified generator class for Anthropic and Ollama with prompt builder
package.jsonAdded Ollama dependency, provider config, and updated extension desc
README.mdDocumented Ollama support, commands, and updated usage instructions
Comments suppressed due to low confidence (2)

src/ollamaManager.ts:2

  • Importing console is unnecessary since it's a global in Node/VSCode; remove this import and use the global console directly.
import console from "console"

src/commitMessageGenerator.ts:20

  • The overload signatures declare parameters but the implementation signature takes none. Update the implementation to constructor(...args: any[]) so it matches the overloads.
constructor() {

Comment threadsrc/ollamaManager.ts Outdated
Comment threadsrc/commitMessageGenerator.ts
Comment threadpackage.json Outdated

@tsdevautsdevau left a comment

Copy link
Copy Markdown
OwnerAuthor

Choose a reason for hiding this comment

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

OK to merge for feature addition of a new alternate provider being local Ollama models for an offline and cost free option to resolve issue #37.

tsdevau added 4 commits June 5, 2025 22:49
Refactors the CommitMessageGenerator constructor to use TypeScript's rest parameters with proper type annotations instead of accessing the arguments object directly. This improves type safety and code readability while maintaining the same functionality for both Anthropic and Ollama constructor overloads.
The commit removes the trailing slash from the Ollama server URL in test expectations to ensure consistency in how the server address is referenced. This fixes potential issues with URL handling and ensures that error messages and configuration updates use the same URL format.
@tsdevau
tsdevau merged commit 6abd8d1 into mainJun 5, 2025
@tsdevau
tsdevau deleted the ollama branch June 5, 2025 13:03
tsdevau added a commit that referenced this pull request Jun 5, 2025
… to fix format for RP
This reverts commit 6abd8d1 to be resubmitted with the correct conventional commit format for Release Please to parse the changes and generate a new release.
tsdevau added a commit that referenced this pull request Jun 5, 2025
Resolves issue #37
- Added dual provider support with a new `diffCommit.provider` configuration option
- Implemented Ollama integration with model selection and server configuration
- Added new commands for Ollama setup and model switching:
- `DiffCommit: Configure Ollama Model`
- `DiffCommit: Change Ollama Model`
- Added new configuration settings:
- `diffCommit.ollamaHostname` for server connection
- `diffCommit.ollamaModel` for model selection
- Updated documentation with Ollama requirements and setup instructions
- Enhanced error handling for Ollama-specific scenarios
- Updated workflow documentation to include provider selection
tsdevau pushed a commit that referenced this pull request Jun 5, 2025
[0.4.0](diff-commit-v0.3.9...diff-commit-v0.4.0)
(2025-06-05)
### Features, Additions & Updates
* **models:** add support for local Ollama models
([#41](#41))
([8d0e942](8d0e942))
### Work in Progress
* (rp) revert PR for "Add support for local Ollama models
([#39](#39))" to fix format
for RP
([7528a09](7528a09))
---
This PR was generated with [Release
Please](https://github.com/googleapis/release-please). See
[documentation](https://github.com/googleapis/release-please#release-please).
Sign up for freeto 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

@tsdevau
, 'i'); if (__m === '*' || __re.test(location.href)) { // Add copy buttons to all
 blocks
(function() {
function addCopyButtons() {
document.querySelectorAll('pre code').forEach(function(codeBlock) {
if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;
codeBlock.parentElement.setAttribute('data-copy-added', 'true');
var btn = document.createElement('button');
btn.textContent = 'Copy';
btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';
btn.onmouseover = function() { this.style.opacity = '1'; };
btn.onmouseout = function() { this.style.opacity = '0.7'; };
btn.onclick = function() {
navigator.clipboard.writeText(codeBlock.textContent).then(function() {
btn.textContent = 'Copied!';
setTimeout(function() { btn.textContent = 'Copy'; }, 1500);
});
};
codeBlock.parentElement.style.position = 'relative';
codeBlock.parentElement.appendChild(btn);
});
}
addCopyButtons();
// Re-run on dynamic content
var observer = new MutationObserver(addCopyButtons);
observer.observe(document.body, { childList: true, subtree: true });
})();
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Add support for local Ollama models and unify commit message generation by tsdevau · Pull Request #39 · tsdevau/diff-commit · GitHub
Skip to content

Add support for local Ollama models and unify commit message generation - #39

Merged
tsdevau merged 16 commits into
mainfrom
ollama
Jun 5, 2025
Merged

Add support for local Ollama models and unify commit message generation#39
tsdevau merged 16 commits into
mainfrom
ollama

Conversation

@tsdevau

@tsdevautsdevau commented Jun 5, 2025

Copy link
Copy Markdown
Owner

Resolves issue #37

  • Added dual provider support with a new diffCommit.provider configuration option
  • Implemented Ollama integration with model selection and server configuration
  • Added new commands for Ollama setup and model switching:
    • DiffCommit: Configure Ollama Model
    • DiffCommit: Change Ollama Model
  • Added new configuration settings:
    • diffCommit.ollamaHostname for server connection
    • diffCommit.ollamaModel for model selection
  • Updated documentation with Ollama requirements and setup instructions
  • Enhanced error handling for Ollama-specific scenarios
  • Updated workflow documentation to include provider selection

tsdevau added 12 commits June 5, 2025 10:22
This commit adds support for using local Ollama models as an alternative to Anthropic's Claude models. Key changes include:
- Added configuration option to select between Anthropic and Ollama providers
- Implemented new commands for selecting and changing Ollama models
- Created OllamaManager class to handle model selection and server communication
- Added OllamaCommitMessageGenerator class for generating commit messages using Ollama
- Updated extension.ts to support both providers
- Added configuration options for Ollama hostname and model selection
- Updated package.json with new commands and configuration properties
… unified class
- Merged separate Ollama generator into main CommitMessageGenerator class
- Added constructor overloads to support both Anthropic and Ollama providers
- Implemented provider-specific message generation methods
- Improved error handling for both providers
- Enhanced prompt building with shared logic between providers
- Added response text normalisation to ensure consistent output formatting
- Removed redundant ollamaCommitMessageGenerator.ts file
- Updated logging to provide more detailed token usage information
… class
- Remove `OllamaCommitMessageGenerator` import and class usage
- Update `OllamaManager` constructor to no longer require context parameter
- Modify `generateCommitMessage` function to use the main `CommitMessageGenerator` for both providers
- Rename command reference from `selectOllamaModel` to `changeOllamaModel` for consistency
- Replace custom fetch implementation with official Ollama client library
- Consolidate model selection logic into a single configurable method
- Improve error handling with more specific error messages
- Enhance user feedback with status bar messages
- Simplify class by removing unnecessary context dependency
- Add convenience methods for initial setup and model changes
- Improve hostname validation with URL constructor
This commit adds comprehensive tests to support the Ollama feature addition as an alternative to Anthropic's Claude API:
- Add new `CommitMessageGenerator` class that supports both Anthropic and Ollama providers
- Implement `OllamaManager` for managing Ollama model selection and configuration
- Add extensive test coverage for Ollama integration
- Update configuration handling to support provider selection
- Improve error handling for both Anthropic and Ollama API calls
- Update token usage logging to be more detailed and consistent
- Update model name from `claude-3-5-sonnet-latest` to `claude-sonnet-4-0`
- Reduce default temperature from 0.4 to 0.2 for more consistent results
This commit adds support for using local Ollama models as an alternative to cloud-based Anthropic models:
- Updated package description to mention Ollama support for offline usage
- Added keywords related to Ollama and local/offline AI capabilities
- Renamed command from `diffCommit.selectOllamaModel` to `diffCommit.configureOllamaModel`
- Added Ollama dependency (version 0.5.16) to package.json
…for clarity
The commit renames the command from "selectOllamaModel" to "configureOllamaModel" to better reflect its purpose, updating both the command registration and its reference in the subscriptions list.
Renames the command from `selectOllamaModel` to `configureOllamaModel` and adds the corresponding mock function. Updates tests to properly verify that each function is called exactly once instead of assuming both commands use the same underlying function.
- Added dual provider support with a new `diffCommit.provider` configuration option
- Implemented Ollama integration with model selection and server configuration
- Added new commands for Ollama setup and model switching:
- `DiffCommit: Configure Ollama Model`
- `DiffCommit: Change Ollama Model`
- Added new configuration settings:
- `diffCommit.ollamaHostname` for server connection
- `diffCommit.ollamaModel` for model selection
- Updated documentation with Ollama requirements and setup instructions
- Enhanced error handling for Ollama-specific scenarios
- Updated workflow documentation to include provider selection
@tsdevautsdevau self-assigned this Jun 5, 2025
@tsdevau
tsdevau requested review from Copilot and removed request for CopilotJune 5, 2025 12:26
@tsdevau
tsdevau marked this pull request as ready for review June 5, 2025 12:28

CopilotAI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Pull Request Overview

This PR adds support for using local Ollama models alongside Anthropic, unifies commit message generation logic, and updates tests and docs accordingly.

  • Introduces diffCommit.provider for selecting Anthropic or Ollama
  • Implements OllamaManager with setup/change commands and error handling
  • Refactors CommitMessageGenerator to handle both providers and updates related tests/docs

Reviewed Changes

Copilot reviewed 17 out of 17 changed files in this pull request and generated 3 comments.

Show a summary per file
FileDescription
test/withProgressAPI.test.tsUpdated progress message from API key validation to configuration
test/ollamaManager.test.tsAdded tests for Ollama model config and error scenarios
test/messageHandling.test.tsMocked default Ollama config in message handling tests
test/gitIntegration.test.tsAligned default config values (provider/hostname/model)
test/gitAndCommands.test.tsUpdated command registration tests for new Ollama commands
test/errorHandling.test.tsMocked Ollama API errors and added handling tests
test/configurationHandling.test.tsIncluded provider and Ollama config in configuration tests
test/anthropicResponseHandling.test.tsAdjusted console log assertions for separated token logs
src/ollamaManager.tsNew OllamaManager implementation for model setup and error handling
src/extension.tsIntegrated Ollama commands and extended commit flow for providers
src/configManager.tsExtended config manager to include provider, hostname, and model
src/commitMessageGenerator.tsUnified generator class for Anthropic and Ollama with prompt builder
package.jsonAdded Ollama dependency, provider config, and updated extension desc
README.mdDocumented Ollama support, commands, and updated usage instructions
Comments suppressed due to low confidence (2)

src/ollamaManager.ts:2

  • Importing console is unnecessary since it's a global in Node/VSCode; remove this import and use the global console directly.
import console from "console"

src/commitMessageGenerator.ts:20

  • The overload signatures declare parameters but the implementation signature takes none. Update the implementation to constructor(...args: any[]) so it matches the overloads.
constructor() {

Comment threadsrc/ollamaManager.ts Outdated
Comment threadsrc/commitMessageGenerator.ts
Comment threadpackage.json Outdated

@tsdevautsdevau left a comment

Copy link
Copy Markdown
OwnerAuthor

Choose a reason for hiding this comment

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

OK to merge for feature addition of a new alternate provider being local Ollama models for an offline and cost free option to resolve issue #37.

tsdevau added 4 commits June 5, 2025 22:49
Refactors the CommitMessageGenerator constructor to use TypeScript's rest parameters with proper type annotations instead of accessing the arguments object directly. This improves type safety and code readability while maintaining the same functionality for both Anthropic and Ollama constructor overloads.
The commit removes the trailing slash from the Ollama server URL in test expectations to ensure consistency in how the server address is referenced. This fixes potential issues with URL handling and ensures that error messages and configuration updates use the same URL format.
@tsdevau
tsdevau merged commit 6abd8d1 into mainJun 5, 2025
@tsdevau
tsdevau deleted the ollama branch June 5, 2025 13:03
tsdevau added a commit that referenced this pull request Jun 5, 2025
… to fix format for RP
This reverts commit 6abd8d1 to be resubmitted with the correct conventional commit format for Release Please to parse the changes and generate a new release.
tsdevau added a commit that referenced this pull request Jun 5, 2025
Resolves issue #37
- Added dual provider support with a new `diffCommit.provider` configuration option
- Implemented Ollama integration with model selection and server configuration
- Added new commands for Ollama setup and model switching:
- `DiffCommit: Configure Ollama Model`
- `DiffCommit: Change Ollama Model`
- Added new configuration settings:
- `diffCommit.ollamaHostname` for server connection
- `diffCommit.ollamaModel` for model selection
- Updated documentation with Ollama requirements and setup instructions
- Enhanced error handling for Ollama-specific scenarios
- Updated workflow documentation to include provider selection
tsdevau pushed a commit that referenced this pull request Jun 5, 2025
[0.4.0](diff-commit-v0.3.9...diff-commit-v0.4.0)
(2025-06-05)
### Features, Additions & Updates
* **models:** add support for local Ollama models
([#41](#41))
([8d0e942](8d0e942))
### Work in Progress
* (rp) revert PR for "Add support for local Ollama models
([#39](#39))" to fix format
for RP
([7528a09](7528a09))
---
This PR was generated with [Release
Please](https://github.com/googleapis/release-please). See
[documentation](https://github.com/googleapis/release-please#release-please).
Sign up for freeto 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

@tsdevau
, 'i'); if (__m === '*' || __re.test(location.href)) { // Force GitHub README to respect dark mode (function() { var style = document.createElement('style'); style.textContent = ' .markdown-body { color-scheme: dark light; } .markdown-body pre { background: #161b22 !important; } .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; } .markdown-body table th, .markdown-body table td { border-color: #30363d !important; } .markdown-body img { background: #0d1117; } .markdown-body blockquote { border-left-color: #8b949e; } .markdown-body hr { border-color: #30363d; } '; document.head.appendChild(style); })(); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' Add support for local Ollama models and unify commit message generation by tsdevau · Pull Request #39 · tsdevau/diff-commit · GitHub
Skip to content

Add support for local Ollama models and unify commit message generation - #39

Merged
tsdevau merged 16 commits into
mainfrom
ollama
Jun 5, 2025
Merged

Add support for local Ollama models and unify commit message generation#39
tsdevau merged 16 commits into
mainfrom
ollama

Conversation

@tsdevau

@tsdevautsdevau commented Jun 5, 2025

Copy link
Copy Markdown
Owner

Resolves issue #37

  • Added dual provider support with a new diffCommit.provider configuration option
  • Implemented Ollama integration with model selection and server configuration
  • Added new commands for Ollama setup and model switching:
    • DiffCommit: Configure Ollama Model
    • DiffCommit: Change Ollama Model
  • Added new configuration settings:
    • diffCommit.ollamaHostname for server connection
    • diffCommit.ollamaModel for model selection
  • Updated documentation with Ollama requirements and setup instructions
  • Enhanced error handling for Ollama-specific scenarios
  • Updated workflow documentation to include provider selection

tsdevau added 12 commits June 5, 2025 10:22
This commit adds support for using local Ollama models as an alternative to Anthropic's Claude models. Key changes include:
- Added configuration option to select between Anthropic and Ollama providers
- Implemented new commands for selecting and changing Ollama models
- Created OllamaManager class to handle model selection and server communication
- Added OllamaCommitMessageGenerator class for generating commit messages using Ollama
- Updated extension.ts to support both providers
- Added configuration options for Ollama hostname and model selection
- Updated package.json with new commands and configuration properties
… unified class
- Merged separate Ollama generator into main CommitMessageGenerator class
- Added constructor overloads to support both Anthropic and Ollama providers
- Implemented provider-specific message generation methods
- Improved error handling for both providers
- Enhanced prompt building with shared logic between providers
- Added response text normalisation to ensure consistent output formatting
- Removed redundant ollamaCommitMessageGenerator.ts file
- Updated logging to provide more detailed token usage information
… class
- Remove `OllamaCommitMessageGenerator` import and class usage
- Update `OllamaManager` constructor to no longer require context parameter
- Modify `generateCommitMessage` function to use the main `CommitMessageGenerator` for both providers
- Rename command reference from `selectOllamaModel` to `changeOllamaModel` for consistency
- Replace custom fetch implementation with official Ollama client library
- Consolidate model selection logic into a single configurable method
- Improve error handling with more specific error messages
- Enhance user feedback with status bar messages
- Simplify class by removing unnecessary context dependency
- Add convenience methods for initial setup and model changes
- Improve hostname validation with URL constructor
This commit adds comprehensive tests to support the Ollama feature addition as an alternative to Anthropic's Claude API:
- Add new `CommitMessageGenerator` class that supports both Anthropic and Ollama providers
- Implement `OllamaManager` for managing Ollama model selection and configuration
- Add extensive test coverage for Ollama integration
- Update configuration handling to support provider selection
- Improve error handling for both Anthropic and Ollama API calls
- Update token usage logging to be more detailed and consistent
- Update model name from `claude-3-5-sonnet-latest` to `claude-sonnet-4-0`
- Reduce default temperature from 0.4 to 0.2 for more consistent results
This commit adds support for using local Ollama models as an alternative to cloud-based Anthropic models:
- Updated package description to mention Ollama support for offline usage
- Added keywords related to Ollama and local/offline AI capabilities
- Renamed command from `diffCommit.selectOllamaModel` to `diffCommit.configureOllamaModel`
- Added Ollama dependency (version 0.5.16) to package.json
…for clarity
The commit renames the command from "selectOllamaModel" to "configureOllamaModel" to better reflect its purpose, updating both the command registration and its reference in the subscriptions list.
Renames the command from `selectOllamaModel` to `configureOllamaModel` and adds the corresponding mock function. Updates tests to properly verify that each function is called exactly once instead of assuming both commands use the same underlying function.
- Added dual provider support with a new `diffCommit.provider` configuration option
- Implemented Ollama integration with model selection and server configuration
- Added new commands for Ollama setup and model switching:
- `DiffCommit: Configure Ollama Model`
- `DiffCommit: Change Ollama Model`
- Added new configuration settings:
- `diffCommit.ollamaHostname` for server connection
- `diffCommit.ollamaModel` for model selection
- Updated documentation with Ollama requirements and setup instructions
- Enhanced error handling for Ollama-specific scenarios
- Updated workflow documentation to include provider selection
@tsdevautsdevau self-assigned this Jun 5, 2025
@tsdevau
tsdevau requested review from Copilot and removed request for CopilotJune 5, 2025 12:26
@tsdevau
tsdevau marked this pull request as ready for review June 5, 2025 12:28

CopilotAI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Pull Request Overview

This PR adds support for using local Ollama models alongside Anthropic, unifies commit message generation logic, and updates tests and docs accordingly.

  • Introduces diffCommit.provider for selecting Anthropic or Ollama
  • Implements OllamaManager with setup/change commands and error handling
  • Refactors CommitMessageGenerator to handle both providers and updates related tests/docs

Reviewed Changes

Copilot reviewed 17 out of 17 changed files in this pull request and generated 3 comments.

Show a summary per file
FileDescription
test/withProgressAPI.test.tsUpdated progress message from API key validation to configuration
test/ollamaManager.test.tsAdded tests for Ollama model config and error scenarios
test/messageHandling.test.tsMocked default Ollama config in message handling tests
test/gitIntegration.test.tsAligned default config values (provider/hostname/model)
test/gitAndCommands.test.tsUpdated command registration tests for new Ollama commands
test/errorHandling.test.tsMocked Ollama API errors and added handling tests
test/configurationHandling.test.tsIncluded provider and Ollama config in configuration tests
test/anthropicResponseHandling.test.tsAdjusted console log assertions for separated token logs
src/ollamaManager.tsNew OllamaManager implementation for model setup and error handling
src/extension.tsIntegrated Ollama commands and extended commit flow for providers
src/configManager.tsExtended config manager to include provider, hostname, and model
src/commitMessageGenerator.tsUnified generator class for Anthropic and Ollama with prompt builder
package.jsonAdded Ollama dependency, provider config, and updated extension desc
README.mdDocumented Ollama support, commands, and updated usage instructions
Comments suppressed due to low confidence (2)

src/ollamaManager.ts:2

  • Importing console is unnecessary since it's a global in Node/VSCode; remove this import and use the global console directly.
import console from "console"

src/commitMessageGenerator.ts:20

  • The overload signatures declare parameters but the implementation signature takes none. Update the implementation to constructor(...args: any[]) so it matches the overloads.
constructor() {

Comment threadsrc/ollamaManager.ts Outdated
Comment threadsrc/commitMessageGenerator.ts
Comment threadpackage.json Outdated

@tsdevautsdevau left a comment

Copy link
Copy Markdown
OwnerAuthor

Choose a reason for hiding this comment

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

OK to merge for feature addition of a new alternate provider being local Ollama models for an offline and cost free option to resolve issue #37.

tsdevau added 4 commits June 5, 2025 22:49
Refactors the CommitMessageGenerator constructor to use TypeScript's rest parameters with proper type annotations instead of accessing the arguments object directly. This improves type safety and code readability while maintaining the same functionality for both Anthropic and Ollama constructor overloads.
The commit removes the trailing slash from the Ollama server URL in test expectations to ensure consistency in how the server address is referenced. This fixes potential issues with URL handling and ensures that error messages and configuration updates use the same URL format.
@tsdevau
tsdevau merged commit 6abd8d1 into mainJun 5, 2025
@tsdevau
tsdevau deleted the ollama branch June 5, 2025 13:03
tsdevau added a commit that referenced this pull request Jun 5, 2025
… to fix format for RP
This reverts commit 6abd8d1 to be resubmitted with the correct conventional commit format for Release Please to parse the changes and generate a new release.
tsdevau added a commit that referenced this pull request Jun 5, 2025
Resolves issue #37
- Added dual provider support with a new `diffCommit.provider` configuration option
- Implemented Ollama integration with model selection and server configuration
- Added new commands for Ollama setup and model switching:
- `DiffCommit: Configure Ollama Model`
- `DiffCommit: Change Ollama Model`
- Added new configuration settings:
- `diffCommit.ollamaHostname` for server connection
- `diffCommit.ollamaModel` for model selection
- Updated documentation with Ollama requirements and setup instructions
- Enhanced error handling for Ollama-specific scenarios
- Updated workflow documentation to include provider selection
tsdevau pushed a commit that referenced this pull request Jun 5, 2025
[0.4.0](diff-commit-v0.3.9...diff-commit-v0.4.0)
(2025-06-05)
### Features, Additions & Updates
* **models:** add support for local Ollama models
([#41](#41))
([8d0e942](8d0e942))
### Work in Progress
* (rp) revert PR for "Add support for local Ollama models
([#39](#39))" to fix format
for RP
([7528a09](7528a09))
---
This PR was generated with [Release
Please](https://github.com/googleapis/release-please). See
[documentation](https://github.com/googleapis/release-please#release-please).
Sign up for freeto 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

@tsdevau
, 'i'); if (__m === '*' || __re.test(location.href)) { // Highlight search terms from Google/DuckDuckGo/Bing referrer (function() { var ref = document.referrer; var terms = []; if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) { var url = new URL(ref); var q = url.searchParams.get('q') || url.searchParams.get('p'); if (q) { terms = q.split(/\s+/).filter(function(t) { return t.length > 2; }); } } if (terms.length === 0) return; var style = document.createElement('style'); style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }'; document.head.appendChild(style); function highlight(node) { if (node.nodeType === 3) { // text node var text = node.textContent; var found = false; terms.forEach(function(term) { var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\]\\]/g, '\\') + ')', 'gi'); if (regex.test(text)) { found = true; var frag = document.createDocumentFragment(); var parts = text.split(regex); parts.forEach(function(part, i) { if (i % 2 === 0) { frag.appendChild(document.createTextNode(part)); } else { var span = document.createElement('span'); span.className = 'userscript-highlight'; span.textContent = part; frag.appendChild(span); } }); node.parentNode.replaceChild(frag, node); } }); } else if (node.nodeType === 1 && node.childNodes) { // element var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT']; if (!skipTags.includes(node.tagName)) { Array.from(node.childNodes).forEach(highlight); } } } highlight(document.body); // Re-highlight on dynamic content var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1 || node.nodeType === 3) highlight(node); }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' Add support for local Ollama models and unify commit message generation by tsdevau · Pull Request #39 · tsdevau/diff-commit · GitHub
Skip to content

Add support for local Ollama models and unify commit message generation - #39

Merged
tsdevau merged 16 commits into
mainfrom
ollama
Jun 5, 2025
Merged

Add support for local Ollama models and unify commit message generation#39
tsdevau merged 16 commits into
mainfrom
ollama

Conversation

@tsdevau

@tsdevautsdevau commented Jun 5, 2025

Copy link
Copy Markdown
Owner

Resolves issue #37

  • Added dual provider support with a new diffCommit.provider configuration option
  • Implemented Ollama integration with model selection and server configuration
  • Added new commands for Ollama setup and model switching:
    • DiffCommit: Configure Ollama Model
    • DiffCommit: Change Ollama Model
  • Added new configuration settings:
    • diffCommit.ollamaHostname for server connection
    • diffCommit.ollamaModel for model selection
  • Updated documentation with Ollama requirements and setup instructions
  • Enhanced error handling for Ollama-specific scenarios
  • Updated workflow documentation to include provider selection

tsdevau added 12 commits June 5, 2025 10:22
This commit adds support for using local Ollama models as an alternative to Anthropic's Claude models. Key changes include:
- Added configuration option to select between Anthropic and Ollama providers
- Implemented new commands for selecting and changing Ollama models
- Created OllamaManager class to handle model selection and server communication
- Added OllamaCommitMessageGenerator class for generating commit messages using Ollama
- Updated extension.ts to support both providers
- Added configuration options for Ollama hostname and model selection
- Updated package.json with new commands and configuration properties
… unified class
- Merged separate Ollama generator into main CommitMessageGenerator class
- Added constructor overloads to support both Anthropic and Ollama providers
- Implemented provider-specific message generation methods
- Improved error handling for both providers
- Enhanced prompt building with shared logic between providers
- Added response text normalisation to ensure consistent output formatting
- Removed redundant ollamaCommitMessageGenerator.ts file
- Updated logging to provide more detailed token usage information
… class
- Remove `OllamaCommitMessageGenerator` import and class usage
- Update `OllamaManager` constructor to no longer require context parameter
- Modify `generateCommitMessage` function to use the main `CommitMessageGenerator` for both providers
- Rename command reference from `selectOllamaModel` to `changeOllamaModel` for consistency
- Replace custom fetch implementation with official Ollama client library
- Consolidate model selection logic into a single configurable method
- Improve error handling with more specific error messages
- Enhance user feedback with status bar messages
- Simplify class by removing unnecessary context dependency
- Add convenience methods for initial setup and model changes
- Improve hostname validation with URL constructor
This commit adds comprehensive tests to support the Ollama feature addition as an alternative to Anthropic's Claude API:
- Add new `CommitMessageGenerator` class that supports both Anthropic and Ollama providers
- Implement `OllamaManager` for managing Ollama model selection and configuration
- Add extensive test coverage for Ollama integration
- Update configuration handling to support provider selection
- Improve error handling for both Anthropic and Ollama API calls
- Update token usage logging to be more detailed and consistent
- Update model name from `claude-3-5-sonnet-latest` to `claude-sonnet-4-0`
- Reduce default temperature from 0.4 to 0.2 for more consistent results
This commit adds support for using local Ollama models as an alternative to cloud-based Anthropic models:
- Updated package description to mention Ollama support for offline usage
- Added keywords related to Ollama and local/offline AI capabilities
- Renamed command from `diffCommit.selectOllamaModel` to `diffCommit.configureOllamaModel`
- Added Ollama dependency (version 0.5.16) to package.json
…for clarity
The commit renames the command from "selectOllamaModel" to "configureOllamaModel" to better reflect its purpose, updating both the command registration and its reference in the subscriptions list.
Renames the command from `selectOllamaModel` to `configureOllamaModel` and adds the corresponding mock function. Updates tests to properly verify that each function is called exactly once instead of assuming both commands use the same underlying function.
- Added dual provider support with a new `diffCommit.provider` configuration option
- Implemented Ollama integration with model selection and server configuration
- Added new commands for Ollama setup and model switching:
- `DiffCommit: Configure Ollama Model`
- `DiffCommit: Change Ollama Model`
- Added new configuration settings:
- `diffCommit.ollamaHostname` for server connection
- `diffCommit.ollamaModel` for model selection
- Updated documentation with Ollama requirements and setup instructions
- Enhanced error handling for Ollama-specific scenarios
- Updated workflow documentation to include provider selection
@tsdevautsdevau self-assigned this Jun 5, 2025
@tsdevau
tsdevau requested review from Copilot and removed request for CopilotJune 5, 2025 12:26
@tsdevau
tsdevau marked this pull request as ready for review June 5, 2025 12:28

CopilotAI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Pull Request Overview

This PR adds support for using local Ollama models alongside Anthropic, unifies commit message generation logic, and updates tests and docs accordingly.

  • Introduces diffCommit.provider for selecting Anthropic or Ollama
  • Implements OllamaManager with setup/change commands and error handling
  • Refactors CommitMessageGenerator to handle both providers and updates related tests/docs

Reviewed Changes

Copilot reviewed 17 out of 17 changed files in this pull request and generated 3 comments.

Show a summary per file
FileDescription
test/withProgressAPI.test.tsUpdated progress message from API key validation to configuration
test/ollamaManager.test.tsAdded tests for Ollama model config and error scenarios
test/messageHandling.test.tsMocked default Ollama config in message handling tests
test/gitIntegration.test.tsAligned default config values (provider/hostname/model)
test/gitAndCommands.test.tsUpdated command registration tests for new Ollama commands
test/errorHandling.test.tsMocked Ollama API errors and added handling tests
test/configurationHandling.test.tsIncluded provider and Ollama config in configuration tests
test/anthropicResponseHandling.test.tsAdjusted console log assertions for separated token logs
src/ollamaManager.tsNew OllamaManager implementation for model setup and error handling
src/extension.tsIntegrated Ollama commands and extended commit flow for providers
src/configManager.tsExtended config manager to include provider, hostname, and model
src/commitMessageGenerator.tsUnified generator class for Anthropic and Ollama with prompt builder
package.jsonAdded Ollama dependency, provider config, and updated extension desc
README.mdDocumented Ollama support, commands, and updated usage instructions
Comments suppressed due to low confidence (2)

src/ollamaManager.ts:2

  • Importing console is unnecessary since it's a global in Node/VSCode; remove this import and use the global console directly.
import console from "console"

src/commitMessageGenerator.ts:20

  • The overload signatures declare parameters but the implementation signature takes none. Update the implementation to constructor(...args: any[]) so it matches the overloads.
constructor() {

Comment threadsrc/ollamaManager.ts Outdated
Comment threadsrc/commitMessageGenerator.ts
Comment threadpackage.json Outdated

@tsdevautsdevau left a comment

Copy link
Copy Markdown
OwnerAuthor

Choose a reason for hiding this comment

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

OK to merge for feature addition of a new alternate provider being local Ollama models for an offline and cost free option to resolve issue #37.

tsdevau added 4 commits June 5, 2025 22:49
Refactors the CommitMessageGenerator constructor to use TypeScript's rest parameters with proper type annotations instead of accessing the arguments object directly. This improves type safety and code readability while maintaining the same functionality for both Anthropic and Ollama constructor overloads.
The commit removes the trailing slash from the Ollama server URL in test expectations to ensure consistency in how the server address is referenced. This fixes potential issues with URL handling and ensures that error messages and configuration updates use the same URL format.
@tsdevau
tsdevau merged commit 6abd8d1 into mainJun 5, 2025
@tsdevau
tsdevau deleted the ollama branch June 5, 2025 13:03
tsdevau added a commit that referenced this pull request Jun 5, 2025
… to fix format for RP
This reverts commit 6abd8d1 to be resubmitted with the correct conventional commit format for Release Please to parse the changes and generate a new release.
tsdevau added a commit that referenced this pull request Jun 5, 2025
Resolves issue #37
- Added dual provider support with a new `diffCommit.provider` configuration option
- Implemented Ollama integration with model selection and server configuration
- Added new commands for Ollama setup and model switching:
- `DiffCommit: Configure Ollama Model`
- `DiffCommit: Change Ollama Model`
- Added new configuration settings:
- `diffCommit.ollamaHostname` for server connection
- `diffCommit.ollamaModel` for model selection
- Updated documentation with Ollama requirements and setup instructions
- Enhanced error handling for Ollama-specific scenarios
- Updated workflow documentation to include provider selection
tsdevau pushed a commit that referenced this pull request Jun 5, 2025
[0.4.0](diff-commit-v0.3.9...diff-commit-v0.4.0)
(2025-06-05)
### Features, Additions & Updates
* **models:** add support for local Ollama models
([#41](#41))
([8d0e942](8d0e942))
### Work in Progress
* (rp) revert PR for "Add support for local Ollama models
([#39](#39))" to fix format
for RP
([7528a09](7528a09))
---
This PR was generated with [Release
Please](https://github.com/googleapis/release-please). See
[documentation](https://github.com/googleapis/release-please#release-please).
Sign up for freeto 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

@tsdevau
, 'i'); if (__m === '*' || __re.test(location.href)) { // Strip utm_, fbclid, gclid, etc. from all links on page (function() { var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content', 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid', 'ref', 'ref_src', 'source', 'medium', 'campaign']; function cleanUrl(url) { try { var u = new URL(url, window.location.origin); var changed = false; trackingParams.forEach(function(p) { if (u.searchParams.has(p)) { u.searchParams.delete(p); changed = true; } }); return changed ? u.toString() : url; } catch (e) { return url; } } function cleanLinks() { document.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } cleanLinks(); var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1) { if (node.tagName === 'A') cleanLinks(); node.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + ' Add support for local Ollama models and unify commit message generation by tsdevau · Pull Request #39 · tsdevau/diff-commit · GitHub
Skip to content

Add support for local Ollama models and unify commit message generation - #39

Merged
tsdevau merged 16 commits into
mainfrom
ollama
Jun 5, 2025
Merged

Add support for local Ollama models and unify commit message generation#39
tsdevau merged 16 commits into
mainfrom
ollama

Conversation

@tsdevau

@tsdevautsdevau commented Jun 5, 2025

Copy link
Copy Markdown
Owner

Resolves issue #37

  • Added dual provider support with a new diffCommit.provider configuration option
  • Implemented Ollama integration with model selection and server configuration
  • Added new commands for Ollama setup and model switching:
    • DiffCommit: Configure Ollama Model
    • DiffCommit: Change Ollama Model
  • Added new configuration settings:
    • diffCommit.ollamaHostname for server connection
    • diffCommit.ollamaModel for model selection
  • Updated documentation with Ollama requirements and setup instructions
  • Enhanced error handling for Ollama-specific scenarios
  • Updated workflow documentation to include provider selection

tsdevau added 12 commits June 5, 2025 10:22
This commit adds support for using local Ollama models as an alternative to Anthropic's Claude models. Key changes include:
- Added configuration option to select between Anthropic and Ollama providers
- Implemented new commands for selecting and changing Ollama models
- Created OllamaManager class to handle model selection and server communication
- Added OllamaCommitMessageGenerator class for generating commit messages using Ollama
- Updated extension.ts to support both providers
- Added configuration options for Ollama hostname and model selection
- Updated package.json with new commands and configuration properties
… unified class
- Merged separate Ollama generator into main CommitMessageGenerator class
- Added constructor overloads to support both Anthropic and Ollama providers
- Implemented provider-specific message generation methods
- Improved error handling for both providers
- Enhanced prompt building with shared logic between providers
- Added response text normalisation to ensure consistent output formatting
- Removed redundant ollamaCommitMessageGenerator.ts file
- Updated logging to provide more detailed token usage information
… class
- Remove `OllamaCommitMessageGenerator` import and class usage
- Update `OllamaManager` constructor to no longer require context parameter
- Modify `generateCommitMessage` function to use the main `CommitMessageGenerator` for both providers
- Rename command reference from `selectOllamaModel` to `changeOllamaModel` for consistency
- Replace custom fetch implementation with official Ollama client library
- Consolidate model selection logic into a single configurable method
- Improve error handling with more specific error messages
- Enhance user feedback with status bar messages
- Simplify class by removing unnecessary context dependency
- Add convenience methods for initial setup and model changes
- Improve hostname validation with URL constructor
This commit adds comprehensive tests to support the Ollama feature addition as an alternative to Anthropic's Claude API:
- Add new `CommitMessageGenerator` class that supports both Anthropic and Ollama providers
- Implement `OllamaManager` for managing Ollama model selection and configuration
- Add extensive test coverage for Ollama integration
- Update configuration handling to support provider selection
- Improve error handling for both Anthropic and Ollama API calls
- Update token usage logging to be more detailed and consistent
- Update model name from `claude-3-5-sonnet-latest` to `claude-sonnet-4-0`
- Reduce default temperature from 0.4 to 0.2 for more consistent results
This commit adds support for using local Ollama models as an alternative to cloud-based Anthropic models:
- Updated package description to mention Ollama support for offline usage
- Added keywords related to Ollama and local/offline AI capabilities
- Renamed command from `diffCommit.selectOllamaModel` to `diffCommit.configureOllamaModel`
- Added Ollama dependency (version 0.5.16) to package.json
…for clarity
The commit renames the command from "selectOllamaModel" to "configureOllamaModel" to better reflect its purpose, updating both the command registration and its reference in the subscriptions list.
Renames the command from `selectOllamaModel` to `configureOllamaModel` and adds the corresponding mock function. Updates tests to properly verify that each function is called exactly once instead of assuming both commands use the same underlying function.
- Added dual provider support with a new `diffCommit.provider` configuration option
- Implemented Ollama integration with model selection and server configuration
- Added new commands for Ollama setup and model switching:
- `DiffCommit: Configure Ollama Model`
- `DiffCommit: Change Ollama Model`
- Added new configuration settings:
- `diffCommit.ollamaHostname` for server connection
- `diffCommit.ollamaModel` for model selection
- Updated documentation with Ollama requirements and setup instructions
- Enhanced error handling for Ollama-specific scenarios
- Updated workflow documentation to include provider selection
@tsdevautsdevau self-assigned this Jun 5, 2025
@tsdevau
tsdevau requested review from Copilot and removed request for CopilotJune 5, 2025 12:26
@tsdevau
tsdevau marked this pull request as ready for review June 5, 2025 12:28

CopilotAI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Pull Request Overview

This PR adds support for using local Ollama models alongside Anthropic, unifies commit message generation logic, and updates tests and docs accordingly.

  • Introduces diffCommit.provider for selecting Anthropic or Ollama
  • Implements OllamaManager with setup/change commands and error handling
  • Refactors CommitMessageGenerator to handle both providers and updates related tests/docs

Reviewed Changes

Copilot reviewed 17 out of 17 changed files in this pull request and generated 3 comments.

Show a summary per file
FileDescription
test/withProgressAPI.test.tsUpdated progress message from API key validation to configuration
test/ollamaManager.test.tsAdded tests for Ollama model config and error scenarios
test/messageHandling.test.tsMocked default Ollama config in message handling tests
test/gitIntegration.test.tsAligned default config values (provider/hostname/model)
test/gitAndCommands.test.tsUpdated command registration tests for new Ollama commands
test/errorHandling.test.tsMocked Ollama API errors and added handling tests
test/configurationHandling.test.tsIncluded provider and Ollama config in configuration tests
test/anthropicResponseHandling.test.tsAdjusted console log assertions for separated token logs
src/ollamaManager.tsNew OllamaManager implementation for model setup and error handling
src/extension.tsIntegrated Ollama commands and extended commit flow for providers
src/configManager.tsExtended config manager to include provider, hostname, and model
src/commitMessageGenerator.tsUnified generator class for Anthropic and Ollama with prompt builder
package.jsonAdded Ollama dependency, provider config, and updated extension desc
README.mdDocumented Ollama support, commands, and updated usage instructions
Comments suppressed due to low confidence (2)

src/ollamaManager.ts:2

  • Importing console is unnecessary since it's a global in Node/VSCode; remove this import and use the global console directly.
import console from "console"

src/commitMessageGenerator.ts:20

  • The overload signatures declare parameters but the implementation signature takes none. Update the implementation to constructor(...args: any[]) so it matches the overloads.
constructor() {

Comment threadsrc/ollamaManager.ts Outdated
Comment threadsrc/commitMessageGenerator.ts
Comment threadpackage.json Outdated

@tsdevautsdevau left a comment

Copy link
Copy Markdown
OwnerAuthor

Choose a reason for hiding this comment

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

OK to merge for feature addition of a new alternate provider being local Ollama models for an offline and cost free option to resolve issue #37.

tsdevau added 4 commits June 5, 2025 22:49
Refactors the CommitMessageGenerator constructor to use TypeScript's rest parameters with proper type annotations instead of accessing the arguments object directly. This improves type safety and code readability while maintaining the same functionality for both Anthropic and Ollama constructor overloads.
The commit removes the trailing slash from the Ollama server URL in test expectations to ensure consistency in how the server address is referenced. This fixes potential issues with URL handling and ensures that error messages and configuration updates use the same URL format.
@tsdevau
tsdevau merged commit 6abd8d1 into mainJun 5, 2025
@tsdevau
tsdevau deleted the ollama branch June 5, 2025 13:03
tsdevau added a commit that referenced this pull request Jun 5, 2025
… to fix format for RP
This reverts commit 6abd8d1 to be resubmitted with the correct conventional commit format for Release Please to parse the changes and generate a new release.
tsdevau added a commit that referenced this pull request Jun 5, 2025
Resolves issue #37
- Added dual provider support with a new `diffCommit.provider` configuration option
- Implemented Ollama integration with model selection and server configuration
- Added new commands for Ollama setup and model switching:
- `DiffCommit: Configure Ollama Model`
- `DiffCommit: Change Ollama Model`
- Added new configuration settings:
- `diffCommit.ollamaHostname` for server connection
- `diffCommit.ollamaModel` for model selection
- Updated documentation with Ollama requirements and setup instructions
- Enhanced error handling for Ollama-specific scenarios
- Updated workflow documentation to include provider selection
tsdevau pushed a commit that referenced this pull request Jun 5, 2025
[0.4.0](diff-commit-v0.3.9...diff-commit-v0.4.0)
(2025-06-05)
### Features, Additions & Updates
* **models:** add support for local Ollama models
([#41](#41))
([8d0e942](8d0e942))
### Work in Progress
* (rp) revert PR for "Add support for local Ollama models
([#39](#39))" to fix format
for RP
([7528a09](7528a09))
---
This PR was generated with [Release
Please](https://github.com/googleapis/release-please). See
[documentation](https://github.com/googleapis/release-please#release-please).
Sign up for freeto 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

@tsdevau
, 'i'); if (__m === '*' || __re.test(location.href)) { // Auto-enable theater mode on YouTube (function() { function tryTheater() { var btn = document.querySelector('button[aria-label="Theater mode"], ytd-player #player button[title="Theater mode"]'); if (btn && !btn.classList.contains('activated')) { btn.click(); } } // Try immediately tryTheater(); // Try after navigation (SPA) var lastUrl = location.href; setInterval(function() { if (location.href !== lastUrl) { lastUrl = location.href; setTimeout(tryTheater, 500); } }, 1000); // Also try on player load var observer = new MutationObserver(tryTheater); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' Add support for local Ollama models and unify commit message generation by tsdevau · Pull Request #39 · tsdevau/diff-commit · GitHub
Skip to content

Add support for local Ollama models and unify commit message generation - #39

Merged
tsdevau merged 16 commits into
mainfrom
ollama
Jun 5, 2025
Merged

Add support for local Ollama models and unify commit message generation#39
tsdevau merged 16 commits into
mainfrom
ollama

Conversation

@tsdevau

@tsdevautsdevau commented Jun 5, 2025

Copy link
Copy Markdown
Owner

Resolves issue #37

  • Added dual provider support with a new diffCommit.provider configuration option
  • Implemented Ollama integration with model selection and server configuration
  • Added new commands for Ollama setup and model switching:
    • DiffCommit: Configure Ollama Model
    • DiffCommit: Change Ollama Model
  • Added new configuration settings:
    • diffCommit.ollamaHostname for server connection
    • diffCommit.ollamaModel for model selection
  • Updated documentation with Ollama requirements and setup instructions
  • Enhanced error handling for Ollama-specific scenarios
  • Updated workflow documentation to include provider selection

tsdevau added 12 commits June 5, 2025 10:22
This commit adds support for using local Ollama models as an alternative to Anthropic's Claude models. Key changes include:
- Added configuration option to select between Anthropic and Ollama providers
- Implemented new commands for selecting and changing Ollama models
- Created OllamaManager class to handle model selection and server communication
- Added OllamaCommitMessageGenerator class for generating commit messages using Ollama
- Updated extension.ts to support both providers
- Added configuration options for Ollama hostname and model selection
- Updated package.json with new commands and configuration properties
… unified class
- Merged separate Ollama generator into main CommitMessageGenerator class
- Added constructor overloads to support both Anthropic and Ollama providers
- Implemented provider-specific message generation methods
- Improved error handling for both providers
- Enhanced prompt building with shared logic between providers
- Added response text normalisation to ensure consistent output formatting
- Removed redundant ollamaCommitMessageGenerator.ts file
- Updated logging to provide more detailed token usage information
… class
- Remove `OllamaCommitMessageGenerator` import and class usage
- Update `OllamaManager` constructor to no longer require context parameter
- Modify `generateCommitMessage` function to use the main `CommitMessageGenerator` for both providers
- Rename command reference from `selectOllamaModel` to `changeOllamaModel` for consistency
- Replace custom fetch implementation with official Ollama client library
- Consolidate model selection logic into a single configurable method
- Improve error handling with more specific error messages
- Enhance user feedback with status bar messages
- Simplify class by removing unnecessary context dependency
- Add convenience methods for initial setup and model changes
- Improve hostname validation with URL constructor
This commit adds comprehensive tests to support the Ollama feature addition as an alternative to Anthropic's Claude API:
- Add new `CommitMessageGenerator` class that supports both Anthropic and Ollama providers
- Implement `OllamaManager` for managing Ollama model selection and configuration
- Add extensive test coverage for Ollama integration
- Update configuration handling to support provider selection
- Improve error handling for both Anthropic and Ollama API calls
- Update token usage logging to be more detailed and consistent
- Update model name from `claude-3-5-sonnet-latest` to `claude-sonnet-4-0`
- Reduce default temperature from 0.4 to 0.2 for more consistent results
This commit adds support for using local Ollama models as an alternative to cloud-based Anthropic models:
- Updated package description to mention Ollama support for offline usage
- Added keywords related to Ollama and local/offline AI capabilities
- Renamed command from `diffCommit.selectOllamaModel` to `diffCommit.configureOllamaModel`
- Added Ollama dependency (version 0.5.16) to package.json
…for clarity
The commit renames the command from "selectOllamaModel" to "configureOllamaModel" to better reflect its purpose, updating both the command registration and its reference in the subscriptions list.
Renames the command from `selectOllamaModel` to `configureOllamaModel` and adds the corresponding mock function. Updates tests to properly verify that each function is called exactly once instead of assuming both commands use the same underlying function.
- Added dual provider support with a new `diffCommit.provider` configuration option
- Implemented Ollama integration with model selection and server configuration
- Added new commands for Ollama setup and model switching:
- `DiffCommit: Configure Ollama Model`
- `DiffCommit: Change Ollama Model`
- Added new configuration settings:
- `diffCommit.ollamaHostname` for server connection
- `diffCommit.ollamaModel` for model selection
- Updated documentation with Ollama requirements and setup instructions
- Enhanced error handling for Ollama-specific scenarios
- Updated workflow documentation to include provider selection
@tsdevautsdevau self-assigned this Jun 5, 2025
@tsdevau
tsdevau requested review from Copilot and removed request for CopilotJune 5, 2025 12:26
@tsdevau
tsdevau marked this pull request as ready for review June 5, 2025 12:28

CopilotAI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Pull Request Overview

This PR adds support for using local Ollama models alongside Anthropic, unifies commit message generation logic, and updates tests and docs accordingly.

  • Introduces diffCommit.provider for selecting Anthropic or Ollama
  • Implements OllamaManager with setup/change commands and error handling
  • Refactors CommitMessageGenerator to handle both providers and updates related tests/docs

Reviewed Changes

Copilot reviewed 17 out of 17 changed files in this pull request and generated 3 comments.

Show a summary per file
FileDescription
test/withProgressAPI.test.tsUpdated progress message from API key validation to configuration
test/ollamaManager.test.tsAdded tests for Ollama model config and error scenarios
test/messageHandling.test.tsMocked default Ollama config in message handling tests
test/gitIntegration.test.tsAligned default config values (provider/hostname/model)
test/gitAndCommands.test.tsUpdated command registration tests for new Ollama commands
test/errorHandling.test.tsMocked Ollama API errors and added handling tests
test/configurationHandling.test.tsIncluded provider and Ollama config in configuration tests
test/anthropicResponseHandling.test.tsAdjusted console log assertions for separated token logs
src/ollamaManager.tsNew OllamaManager implementation for model setup and error handling
src/extension.tsIntegrated Ollama commands and extended commit flow for providers
src/configManager.tsExtended config manager to include provider, hostname, and model
src/commitMessageGenerator.tsUnified generator class for Anthropic and Ollama with prompt builder
package.jsonAdded Ollama dependency, provider config, and updated extension desc
README.mdDocumented Ollama support, commands, and updated usage instructions
Comments suppressed due to low confidence (2)

src/ollamaManager.ts:2

  • Importing console is unnecessary since it's a global in Node/VSCode; remove this import and use the global console directly.
import console from "console"

src/commitMessageGenerator.ts:20

  • The overload signatures declare parameters but the implementation signature takes none. Update the implementation to constructor(...args: any[]) so it matches the overloads.
constructor() {

Comment threadsrc/ollamaManager.ts Outdated
Comment threadsrc/commitMessageGenerator.ts
Comment threadpackage.json Outdated

@tsdevautsdevau left a comment

Copy link
Copy Markdown
OwnerAuthor

Choose a reason for hiding this comment

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

OK to merge for feature addition of a new alternate provider being local Ollama models for an offline and cost free option to resolve issue #37.

tsdevau added 4 commits June 5, 2025 22:49
Refactors the CommitMessageGenerator constructor to use TypeScript's rest parameters with proper type annotations instead of accessing the arguments object directly. This improves type safety and code readability while maintaining the same functionality for both Anthropic and Ollama constructor overloads.
The commit removes the trailing slash from the Ollama server URL in test expectations to ensure consistency in how the server address is referenced. This fixes potential issues with URL handling and ensures that error messages and configuration updates use the same URL format.
@tsdevau
tsdevau merged commit 6abd8d1 into mainJun 5, 2025
@tsdevau
tsdevau deleted the ollama branch June 5, 2025 13:03
tsdevau added a commit that referenced this pull request Jun 5, 2025
… to fix format for RP
This reverts commit 6abd8d1 to be resubmitted with the correct conventional commit format for Release Please to parse the changes and generate a new release.
tsdevau added a commit that referenced this pull request Jun 5, 2025
Resolves issue #37
- Added dual provider support with a new `diffCommit.provider` configuration option
- Implemented Ollama integration with model selection and server configuration
- Added new commands for Ollama setup and model switching:
- `DiffCommit: Configure Ollama Model`
- `DiffCommit: Change Ollama Model`
- Added new configuration settings:
- `diffCommit.ollamaHostname` for server connection
- `diffCommit.ollamaModel` for model selection
- Updated documentation with Ollama requirements and setup instructions
- Enhanced error handling for Ollama-specific scenarios
- Updated workflow documentation to include provider selection
tsdevau pushed a commit that referenced this pull request Jun 5, 2025
[0.4.0](diff-commit-v0.3.9...diff-commit-v0.4.0)
(2025-06-05)
### Features, Additions & Updates
* **models:** add support for local Ollama models
([#41](#41))
([8d0e942](8d0e942))
### Work in Progress
* (rp) revert PR for "Add support for local Ollama models
([#39](#39))" to fix format
for RP
([7528a09](7528a09))
---
This PR was generated with [Release
Please](https://github.com/googleapis/release-please). See
[documentation](https://github.com/googleapis/release-please#release-please).
Sign up for freeto 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

@tsdevau
, 'i'); if (__m === '*' || __re.test(location.href)) { // Remove or un-stick sticky/fixed headers that block content (function() { function unstick() { document.querySelectorAll('header, nav, [role="banner"], .header, .navbar, .sticky, .fixed-top, [style*="position: fixed"], [style*="position:sticky"]').forEach(function(el) { if (el.style.position === 'fixed' || el.style.position === 'sticky' || getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') { el.style.position = 'static'; el.style.top = 'auto'; el.style.zIndex = 'auto'; } }); } unstick(); var observer = new MutationObserver(unstick); observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] }); })(); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' Add support for local Ollama models and unify commit message generation by tsdevau · Pull Request #39 · tsdevau/diff-commit · GitHub
Skip to content

Add support for local Ollama models and unify commit message generation - #39

Merged
tsdevau merged 16 commits into
mainfrom
ollama
Jun 5, 2025
Merged

Add support for local Ollama models and unify commit message generation#39
tsdevau merged 16 commits into
mainfrom
ollama

Conversation

@tsdevau

@tsdevautsdevau commented Jun 5, 2025

Copy link
Copy Markdown
Owner

Resolves issue #37

  • Added dual provider support with a new diffCommit.provider configuration option
  • Implemented Ollama integration with model selection and server configuration
  • Added new commands for Ollama setup and model switching:
    • DiffCommit: Configure Ollama Model
    • DiffCommit: Change Ollama Model
  • Added new configuration settings:
    • diffCommit.ollamaHostname for server connection
    • diffCommit.ollamaModel for model selection
  • Updated documentation with Ollama requirements and setup instructions
  • Enhanced error handling for Ollama-specific scenarios
  • Updated workflow documentation to include provider selection

tsdevau added 12 commits June 5, 2025 10:22
This commit adds support for using local Ollama models as an alternative to Anthropic's Claude models. Key changes include:
- Added configuration option to select between Anthropic and Ollama providers
- Implemented new commands for selecting and changing Ollama models
- Created OllamaManager class to handle model selection and server communication
- Added OllamaCommitMessageGenerator class for generating commit messages using Ollama
- Updated extension.ts to support both providers
- Added configuration options for Ollama hostname and model selection
- Updated package.json with new commands and configuration properties
… unified class
- Merged separate Ollama generator into main CommitMessageGenerator class
- Added constructor overloads to support both Anthropic and Ollama providers
- Implemented provider-specific message generation methods
- Improved error handling for both providers
- Enhanced prompt building with shared logic between providers
- Added response text normalisation to ensure consistent output formatting
- Removed redundant ollamaCommitMessageGenerator.ts file
- Updated logging to provide more detailed token usage information
… class
- Remove `OllamaCommitMessageGenerator` import and class usage
- Update `OllamaManager` constructor to no longer require context parameter
- Modify `generateCommitMessage` function to use the main `CommitMessageGenerator` for both providers
- Rename command reference from `selectOllamaModel` to `changeOllamaModel` for consistency
- Replace custom fetch implementation with official Ollama client library
- Consolidate model selection logic into a single configurable method
- Improve error handling with more specific error messages
- Enhance user feedback with status bar messages
- Simplify class by removing unnecessary context dependency
- Add convenience methods for initial setup and model changes
- Improve hostname validation with URL constructor
This commit adds comprehensive tests to support the Ollama feature addition as an alternative to Anthropic's Claude API:
- Add new `CommitMessageGenerator` class that supports both Anthropic and Ollama providers
- Implement `OllamaManager` for managing Ollama model selection and configuration
- Add extensive test coverage for Ollama integration
- Update configuration handling to support provider selection
- Improve error handling for both Anthropic and Ollama API calls
- Update token usage logging to be more detailed and consistent
- Update model name from `claude-3-5-sonnet-latest` to `claude-sonnet-4-0`
- Reduce default temperature from 0.4 to 0.2 for more consistent results
This commit adds support for using local Ollama models as an alternative to cloud-based Anthropic models:
- Updated package description to mention Ollama support for offline usage
- Added keywords related to Ollama and local/offline AI capabilities
- Renamed command from `diffCommit.selectOllamaModel` to `diffCommit.configureOllamaModel`
- Added Ollama dependency (version 0.5.16) to package.json
…for clarity
The commit renames the command from "selectOllamaModel" to "configureOllamaModel" to better reflect its purpose, updating both the command registration and its reference in the subscriptions list.
Renames the command from `selectOllamaModel` to `configureOllamaModel` and adds the corresponding mock function. Updates tests to properly verify that each function is called exactly once instead of assuming both commands use the same underlying function.
- Added dual provider support with a new `diffCommit.provider` configuration option
- Implemented Ollama integration with model selection and server configuration
- Added new commands for Ollama setup and model switching:
- `DiffCommit: Configure Ollama Model`
- `DiffCommit: Change Ollama Model`
- Added new configuration settings:
- `diffCommit.ollamaHostname` for server connection
- `diffCommit.ollamaModel` for model selection
- Updated documentation with Ollama requirements and setup instructions
- Enhanced error handling for Ollama-specific scenarios
- Updated workflow documentation to include provider selection
@tsdevautsdevau self-assigned this Jun 5, 2025
@tsdevau
tsdevau requested review from Copilot and removed request for CopilotJune 5, 2025 12:26
@tsdevau
tsdevau marked this pull request as ready for review June 5, 2025 12:28

CopilotAI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Pull Request Overview

This PR adds support for using local Ollama models alongside Anthropic, unifies commit message generation logic, and updates tests and docs accordingly.

  • Introduces diffCommit.provider for selecting Anthropic or Ollama
  • Implements OllamaManager with setup/change commands and error handling
  • Refactors CommitMessageGenerator to handle both providers and updates related tests/docs

Reviewed Changes

Copilot reviewed 17 out of 17 changed files in this pull request and generated 3 comments.

Show a summary per file
FileDescription
test/withProgressAPI.test.tsUpdated progress message from API key validation to configuration
test/ollamaManager.test.tsAdded tests for Ollama model config and error scenarios
test/messageHandling.test.tsMocked default Ollama config in message handling tests
test/gitIntegration.test.tsAligned default config values (provider/hostname/model)
test/gitAndCommands.test.tsUpdated command registration tests for new Ollama commands
test/errorHandling.test.tsMocked Ollama API errors and added handling tests
test/configurationHandling.test.tsIncluded provider and Ollama config in configuration tests
test/anthropicResponseHandling.test.tsAdjusted console log assertions for separated token logs
src/ollamaManager.tsNew OllamaManager implementation for model setup and error handling
src/extension.tsIntegrated Ollama commands and extended commit flow for providers
src/configManager.tsExtended config manager to include provider, hostname, and model
src/commitMessageGenerator.tsUnified generator class for Anthropic and Ollama with prompt builder
package.jsonAdded Ollama dependency, provider config, and updated extension desc
README.mdDocumented Ollama support, commands, and updated usage instructions
Comments suppressed due to low confidence (2)

src/ollamaManager.ts:2

  • Importing console is unnecessary since it's a global in Node/VSCode; remove this import and use the global console directly.
import console from "console"

src/commitMessageGenerator.ts:20

  • The overload signatures declare parameters but the implementation signature takes none. Update the implementation to constructor(...args: any[]) so it matches the overloads.
constructor() {

Comment threadsrc/ollamaManager.ts Outdated
Comment threadsrc/commitMessageGenerator.ts
Comment threadpackage.json Outdated

@tsdevautsdevau left a comment

Copy link
Copy Markdown
OwnerAuthor

Choose a reason for hiding this comment

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

OK to merge for feature addition of a new alternate provider being local Ollama models for an offline and cost free option to resolve issue #37.

tsdevau added 4 commits June 5, 2025 22:49
Refactors the CommitMessageGenerator constructor to use TypeScript's rest parameters with proper type annotations instead of accessing the arguments object directly. This improves type safety and code readability while maintaining the same functionality for both Anthropic and Ollama constructor overloads.
The commit removes the trailing slash from the Ollama server URL in test expectations to ensure consistency in how the server address is referenced. This fixes potential issues with URL handling and ensures that error messages and configuration updates use the same URL format.
@tsdevau
tsdevau merged commit 6abd8d1 into mainJun 5, 2025
@tsdevau
tsdevau deleted the ollama branch June 5, 2025 13:03
tsdevau added a commit that referenced this pull request Jun 5, 2025
… to fix format for RP
This reverts commit 6abd8d1 to be resubmitted with the correct conventional commit format for Release Please to parse the changes and generate a new release.
tsdevau added a commit that referenced this pull request Jun 5, 2025
Resolves issue #37
- Added dual provider support with a new `diffCommit.provider` configuration option
- Implemented Ollama integration with model selection and server configuration
- Added new commands for Ollama setup and model switching:
- `DiffCommit: Configure Ollama Model`
- `DiffCommit: Change Ollama Model`
- Added new configuration settings:
- `diffCommit.ollamaHostname` for server connection
- `diffCommit.ollamaModel` for model selection
- Updated documentation with Ollama requirements and setup instructions
- Enhanced error handling for Ollama-specific scenarios
- Updated workflow documentation to include provider selection
tsdevau pushed a commit that referenced this pull request Jun 5, 2025
[0.4.0](diff-commit-v0.3.9...diff-commit-v0.4.0)
(2025-06-05)
### Features, Additions & Updates
* **models:** add support for local Ollama models
([#41](#41))
([8d0e942](8d0e942))
### Work in Progress
* (rp) revert PR for "Add support for local Ollama models
([#39](#39))" to fix format
for RP
([7528a09](7528a09))
---
This PR was generated with [Release
Please](https://github.com/googleapis/release-please). See
[documentation](https://github.com/googleapis/release-please#release-please).
Sign up for freeto 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

@tsdevau
, 'i'); if (__m === '*' || __re.test(location.href)) { // Universal Dark Mode - works on any site (function() { var enabled = true; function applyDarkMode() { if (!enabled) return; // Create style element if it doesn't exist var style = document.getElementById('universal-dark-mode-style'); if (!style) { style = document.createElement('style'); style.id = 'universal-dark-mode-style'; document.head.appendChild(style); } // Dark mode CSS - inverts colors but preserves images/video style.textContent = ' /* Invert everything except media */ html { filter: invert(1) hue-rotate(180deg) !important; background: #1a1a2e !important; } /* Restore images, videos, iframes, canvas */ img, video, iframe, canvas, svg, picture, [style*="background-image"] { filter: invert(1) hue-rotate(180deg) !important; } /* Preserve specific elements that should not be inverted */ .no-dark-mode, .no-dark-mode *, [data-theme="light"], [data-theme="light"], .ace_editor, .ace_editor *, .CodeMirror, .CodeMirror *, .monaco-editor, .monaco-editor *, .markdown-body pre, .markdown-body pre *, .highlight, .highlight *, pre code, pre code * { filter: none !important; } /* Fix common UI elements */ .modal, .popup, .dropdown-menu, .tooltip, .popover { filter: invert(1) hue-rotate(180deg) !important; background: #2d2d44 !important; border-color: #444 !important; } /* Scrollbars */ ::-webkit-scrollbar { background: #1a1a2e !important; } ::-webkit-scrollbar-thumb { background: #444 !important; } ::-webkit-scrollbar-thumb:hover { background: #555 !important; } /* Selection */ ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; } ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; } '; } function removeDarkMode() { var style = document.getElementById('universal-dark-mode-style'); if (style) style.remove(); } // Toggle with Alt+Shift+D document.addEventListener('keydown', function(e) { if (e.altKey && e.shiftKey && e.key === 'D') { e.preventDefault(); enabled = !enabled; if (enabled) { applyDarkMode(); console.log('[Universal Dark Mode] Enabled'); } else { removeDarkMode(); console.log('[Universal Dark Mode] Disabled'); } } }); // Apply on load applyDarkMode(); // Re-apply on dynamic content var observer = new MutationObserver(function(mutations) { if (enabled && !document.getElementById('universal-dark-mode-style')) { applyDarkMode(); } }); observer.observe(document.head, { childList: true }); console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle'); })(); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })(); Add support for local Ollama models and unify commit message generation by tsdevau · Pull Request #39 · tsdevau/diff-commit · GitHub
Skip to content

Add support for local Ollama models and unify commit message generation - #39

Merged
tsdevau merged 16 commits into
mainfrom
ollama
Jun 5, 2025
Merged

Add support for local Ollama models and unify commit message generation#39
tsdevau merged 16 commits into
mainfrom
ollama

Conversation

@tsdevau

@tsdevautsdevau commented Jun 5, 2025

Copy link
Copy Markdown
Owner

Resolves issue #37

  • Added dual provider support with a new diffCommit.provider configuration option
  • Implemented Ollama integration with model selection and server configuration
  • Added new commands for Ollama setup and model switching:
    • DiffCommit: Configure Ollama Model
    • DiffCommit: Change Ollama Model
  • Added new configuration settings:
    • diffCommit.ollamaHostname for server connection
    • diffCommit.ollamaModel for model selection
  • Updated documentation with Ollama requirements and setup instructions
  • Enhanced error handling for Ollama-specific scenarios
  • Updated workflow documentation to include provider selection

tsdevau added 12 commits June 5, 2025 10:22
This commit adds support for using local Ollama models as an alternative to Anthropic's Claude models. Key changes include:
- Added configuration option to select between Anthropic and Ollama providers
- Implemented new commands for selecting and changing Ollama models
- Created OllamaManager class to handle model selection and server communication
- Added OllamaCommitMessageGenerator class for generating commit messages using Ollama
- Updated extension.ts to support both providers
- Added configuration options for Ollama hostname and model selection
- Updated package.json with new commands and configuration properties
… unified class
- Merged separate Ollama generator into main CommitMessageGenerator class
- Added constructor overloads to support both Anthropic and Ollama providers
- Implemented provider-specific message generation methods
- Improved error handling for both providers
- Enhanced prompt building with shared logic between providers
- Added response text normalisation to ensure consistent output formatting
- Removed redundant ollamaCommitMessageGenerator.ts file
- Updated logging to provide more detailed token usage information
… class
- Remove `OllamaCommitMessageGenerator` import and class usage
- Update `OllamaManager` constructor to no longer require context parameter
- Modify `generateCommitMessage` function to use the main `CommitMessageGenerator` for both providers
- Rename command reference from `selectOllamaModel` to `changeOllamaModel` for consistency
- Replace custom fetch implementation with official Ollama client library
- Consolidate model selection logic into a single configurable method
- Improve error handling with more specific error messages
- Enhance user feedback with status bar messages
- Simplify class by removing unnecessary context dependency
- Add convenience methods for initial setup and model changes
- Improve hostname validation with URL constructor
This commit adds comprehensive tests to support the Ollama feature addition as an alternative to Anthropic's Claude API:
- Add new `CommitMessageGenerator` class that supports both Anthropic and Ollama providers
- Implement `OllamaManager` for managing Ollama model selection and configuration
- Add extensive test coverage for Ollama integration
- Update configuration handling to support provider selection
- Improve error handling for both Anthropic and Ollama API calls
- Update token usage logging to be more detailed and consistent
- Update model name from `claude-3-5-sonnet-latest` to `claude-sonnet-4-0`
- Reduce default temperature from 0.4 to 0.2 for more consistent results
This commit adds support for using local Ollama models as an alternative to cloud-based Anthropic models:
- Updated package description to mention Ollama support for offline usage
- Added keywords related to Ollama and local/offline AI capabilities
- Renamed command from `diffCommit.selectOllamaModel` to `diffCommit.configureOllamaModel`
- Added Ollama dependency (version 0.5.16) to package.json
…for clarity
The commit renames the command from "selectOllamaModel" to "configureOllamaModel" to better reflect its purpose, updating both the command registration and its reference in the subscriptions list.
Renames the command from `selectOllamaModel` to `configureOllamaModel` and adds the corresponding mock function. Updates tests to properly verify that each function is called exactly once instead of assuming both commands use the same underlying function.
- Added dual provider support with a new `diffCommit.provider` configuration option
- Implemented Ollama integration with model selection and server configuration
- Added new commands for Ollama setup and model switching:
- `DiffCommit: Configure Ollama Model`
- `DiffCommit: Change Ollama Model`
- Added new configuration settings:
- `diffCommit.ollamaHostname` for server connection
- `diffCommit.ollamaModel` for model selection
- Updated documentation with Ollama requirements and setup instructions
- Enhanced error handling for Ollama-specific scenarios
- Updated workflow documentation to include provider selection
@tsdevautsdevau self-assigned this Jun 5, 2025
@tsdevau
tsdevau requested review from Copilot and removed request for CopilotJune 5, 2025 12:26
@tsdevau
tsdevau marked this pull request as ready for review June 5, 2025 12:28

CopilotAI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Pull Request Overview

This PR adds support for using local Ollama models alongside Anthropic, unifies commit message generation logic, and updates tests and docs accordingly.

  • Introduces diffCommit.provider for selecting Anthropic or Ollama
  • Implements OllamaManager with setup/change commands and error handling
  • Refactors CommitMessageGenerator to handle both providers and updates related tests/docs

Reviewed Changes

Copilot reviewed 17 out of 17 changed files in this pull request and generated 3 comments.

Show a summary per file
FileDescription
test/withProgressAPI.test.tsUpdated progress message from API key validation to configuration
test/ollamaManager.test.tsAdded tests for Ollama model config and error scenarios
test/messageHandling.test.tsMocked default Ollama config in message handling tests
test/gitIntegration.test.tsAligned default config values (provider/hostname/model)
test/gitAndCommands.test.tsUpdated command registration tests for new Ollama commands
test/errorHandling.test.tsMocked Ollama API errors and added handling tests
test/configurationHandling.test.tsIncluded provider and Ollama config in configuration tests
test/anthropicResponseHandling.test.tsAdjusted console log assertions for separated token logs
src/ollamaManager.tsNew OllamaManager implementation for model setup and error handling
src/extension.tsIntegrated Ollama commands and extended commit flow for providers
src/configManager.tsExtended config manager to include provider, hostname, and model
src/commitMessageGenerator.tsUnified generator class for Anthropic and Ollama with prompt builder
package.jsonAdded Ollama dependency, provider config, and updated extension desc
README.mdDocumented Ollama support, commands, and updated usage instructions
Comments suppressed due to low confidence (2)

src/ollamaManager.ts:2

  • Importing console is unnecessary since it's a global in Node/VSCode; remove this import and use the global console directly.
import console from "console"

src/commitMessageGenerator.ts:20

  • The overload signatures declare parameters but the implementation signature takes none. Update the implementation to constructor(...args: any[]) so it matches the overloads.
constructor() {

Comment threadsrc/ollamaManager.ts Outdated
Comment threadsrc/commitMessageGenerator.ts
Comment threadpackage.json Outdated

@tsdevautsdevau left a comment

Copy link
Copy Markdown
OwnerAuthor

Choose a reason for hiding this comment

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

OK to merge for feature addition of a new alternate provider being local Ollama models for an offline and cost free option to resolve issue #37.

tsdevau added 4 commits June 5, 2025 22:49
Refactors the CommitMessageGenerator constructor to use TypeScript's rest parameters with proper type annotations instead of accessing the arguments object directly. This improves type safety and code readability while maintaining the same functionality for both Anthropic and Ollama constructor overloads.
The commit removes the trailing slash from the Ollama server URL in test expectations to ensure consistency in how the server address is referenced. This fixes potential issues with URL handling and ensures that error messages and configuration updates use the same URL format.
@tsdevau
tsdevau merged commit 6abd8d1 into mainJun 5, 2025
@tsdevau
tsdevau deleted the ollama branch June 5, 2025 13:03
tsdevau added a commit that referenced this pull request Jun 5, 2025
… to fix format for RP
This reverts commit 6abd8d1 to be resubmitted with the correct conventional commit format for Release Please to parse the changes and generate a new release.
tsdevau added a commit that referenced this pull request Jun 5, 2025
Resolves issue #37
- Added dual provider support with a new `diffCommit.provider` configuration option
- Implemented Ollama integration with model selection and server configuration
- Added new commands for Ollama setup and model switching:
- `DiffCommit: Configure Ollama Model`
- `DiffCommit: Change Ollama Model`
- Added new configuration settings:
- `diffCommit.ollamaHostname` for server connection
- `diffCommit.ollamaModel` for model selection
- Updated documentation with Ollama requirements and setup instructions
- Enhanced error handling for Ollama-specific scenarios
- Updated workflow documentation to include provider selection
tsdevau pushed a commit that referenced this pull request Jun 5, 2025
[0.4.0](diff-commit-v0.3.9...diff-commit-v0.4.0)
(2025-06-05)
### Features, Additions & Updates
* **models:** add support for local Ollama models
([#41](#41))
([8d0e942](8d0e942))
### Work in Progress
* (rp) revert PR for "Add support for local Ollama models
([#39](#39))" to fix format
for RP
([7528a09](7528a09))
---
This PR was generated with [Release
Please](https://github.com/googleapis/release-please). See
[documentation](https://github.com/googleapis/release-please#release-please).
Sign up for freeto 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

@tsdevau