Skip to content

feat: expands the Huntly browser extension with AI-powered content processing, plus adds a new X (Twitter) settings area in the web app.#107

Merged
lcomplete merged 5 commits intomainfrom
dev
Jan 30, 2026
Merged

feat: expands the Huntly browser extension with AI-powered content processing, plus adds a new X (Twitter) settings area in the web app.#107
lcomplete merged 5 commits intomainfrom
dev

Conversation

@lcomplete
Copy link
Owner

@lcomplete lcomplete commented Jan 28, 2026

Summary

  • Add AI content processing with streaming support for web clipper in browser extension
  • Add X (Twitter) settings page for configuring auto-save behavior
  • Add separate extension release workflow for independent versioning
  • Remove extension build from main release workflow to decouple releases
  • Add new parser utilities and UI components for content extraction

Test plan

  • Test AI web clipper functionality with different content types
  • Test X settings configuration and auto-save behavior
  • Verify extension builds correctly with new workflow
  • Verify main release workflow still works without extension build

🤖 Generated with Claude Code

- Add AI content processing with streaming support for web clipper
- Add X (Twitter) settings page for configuring auto-save behavior
- Add separate extension release workflow for independent versioning
- Remove extension build from main release workflow
- Add new parser utilities and UI components for content extraction
- Update extension manifest and dependencies for new features

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
@augmentcode
Copy link

augmentcode bot commented Jan 28, 2026

🤖 Augment PR Summary

Summary: This PR significantly expands the Huntly browser extension with AI-powered content processing, plus adds a new X (Twitter) settings area in the web app.

Changes:

  • Introduced a dedicated extension release workflow and removed extension packaging from the main release flow to decouple versioning/releases.
  • Added AI provider infrastructure (provider configs, model selection, connection testing) and an AI toolbar with prompt/shortcut execution and streaming output.
  • Added Shadow DOM–based “Reading Mode” preview UI, including HTML→Markdown conversion and streaming AI result rendering.
  • Added a selectable content parser (Readability vs Defuddle) and surfaced parser controls in both options and preview.
  • Added an X settings page in the client app, including a global “minimum likes” filter and reuse of existing tweet save rules UI.
  • Extended server-side/global settings to include `autoSaveTweetMinLikes` and updated the extension to fetch this value from the server.

Technical Notes: AI prompts support {lang} substitution, model selection spans Huntly-server SSE and Vercel AI SDK providers, and extension options are reworked into a multi-tab settings page.

🤖 Was this summary useful? React with 👍 or 👎

Copy link

@augmentcode augmentcode bot left a comment

Choose a reason for hiding this comment

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

Review completed. 5 suggestions posted.

Fix All in Augment

Comment augment review to trigger a new review at any time.


on:
push:
tags: [ 'ext/v[0-9]+.[0-9]+.[0-9]+*' ]
Copy link

Choose a reason for hiding this comment

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

GitHub Actions tag filters are glob patterns (not regex), so ext/v[0-9]+.[0-9]+... will treat +/. literally and may not trigger on normal ext/v1.2.3 tags.

Fix This in Augment

🤖 Was this useful? React with 👍 or 👎

on:
push:
tags: [ v\d+\.\d+\.\d+ ]
tags: [ 'v[0-9]+.[0-9]+.[0-9]+*' ]
Copy link

Choose a reason for hiding this comment

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

Same concern here: tags: [ 'v[0-9]+.[0-9]+.[0-9]+*' ] is not a regex, and the literal +/. may prevent the workflow from running on expected version tags.

Fix This in Augment

🤖 Was this useful? React with 👍 or 👎

const openSettings = (tab?: string) => {
const optionsUrl = chrome.runtime.getURL('options.html');
const url = tab ? `${optionsUrl}#${tab}` : optionsUrl;
chrome.tabs.create({ url });
Copy link

Choose a reason for hiding this comment

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

chrome.tabs.create is not available in content scripts, and AIToolbar is also used inside the Shadow DOM preview (content-script context), so this can throw when users click “Configure …”.

Fix This in Augment

🤖 Was this useful? React with 👍 or 👎

setTestResult(null);

if (providerType === 'ollama') {
refreshOllamaModels();
Copy link

Choose a reason for hiding this comment

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

loadConfig() calls refreshOllamaModels() immediately after setBaseUrl(...), but refreshOllamaModels reads baseUrl from state, so it can fetch from the wrong URL on first open when a custom Ollama URL is saved.

Fix This in Augment

🤖 Was this useful? React with 👍 or 👎

};

const allSelectedCount = enabledModels.length + customModels.length;
const canSave =
Copy link

Choose a reason for hiding this comment

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

For Azure providers, baseUrl is required (per testProviderConnection), but canSave doesn’t enforce it, so users can save an enabled Azure config that can never work at runtime.

Fix This in Augment

🤖 Was this useful? React with 👍 or 👎

Move the autoSaveTweetMinLikes retrieval from the browser extension to
the server's TweetController to reduce API calls and centralize logic.
Add caching in GlobalSettingService for performance optimization.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
@lcomplete lcomplete changed the title feat: add AI-powered web clipper and X settings to browser extension feat: expands the Huntly browser extension with AI-powered content processing, plus adds a new X (Twitter) settings area in the web app. Jan 28, 2026
- Updated web_clipper.tsx to utilize parserType from messages for improved flexibility in parsing documents.
- Refactored preview handling to ensure proper cleanup and restoration of scroll states.
- Introduced system-prompts.ts to manage multilingual system prompts for summarization, translation, key points extraction, action items, and explanations.
- Added languages.ts to define a comprehensive list of supported languages with their respective codes and names.
… and mark standalone AI processing as complete
@lcomplete lcomplete merged commit ca18992 into main Jan 30, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant