feat: add helium extension - #357
Conversation
Adds Helium browser integration: open new tab/window/private window, and search tabs, bookmarks, history, and the web via Helium's default search engine.
|
Thanks for contributing an extension to Vicinae! 👋 Before publication, this pull request receives two reviews:
✅ Ready for human review. The automated reviewer approved the latest commit and a maintainer has been notified. No blocking findings remain on the latest commit. The automated reviewer examines only the current commit. New commits invalidate its previous decision and start another review. |
clankus-aurelius
left a comment
There was a problem hiding this comment.
The restart setup silently changes Helium’s persistent startup behavior. Three additional error-handling and disclosure issues should also be addressed.
Automated review found 1 publication-blocking issue.
This is an AI-generated first pass and may be mistaken. If a finding is unclear or incorrect, reply in the relevant thread and mention @aurelleb.
| writeFileSync(prefsPath, JSON.stringify(prefs)); | ||
| } catch { | ||
| // unreadable or locked profile; skip |
There was a problem hiding this comment.
🔴 Blocking — Debugging setup permanently changes browser startup behavior
Rule: CORRECTNESS-001
The restart flow sets restore_on_startup to 1 for every detected profile and never restores the previous values. Enabling debugging therefore permanently overwrites the user’s Helium startup preference.
Suggested resolution: Do not persistently modify the startup preference. Preserve and restore each prior value, or use a one-time session-restoration mechanism that leaves the configured startup behavior unchanged.
There was a problem hiding this comment.
Fixed in 936b9df. Rather than preserving and restoring prior values, I removed the Preferences rewrite entirely: the relaunch now passes --restore-last-session, which restores the session for that single launch only and leaves the user's configured startup behavior untouched. ensureSessionRestore() is deleted.
| } catch { | ||
| // profile without a readable History db; skip | ||
| } |
There was a problem hiding this comment.
🟠 Warning — History database failures are presented as an empty history
Rule: UX-001
Every profile database error is discarded. If all History databases are unreadable or fail to initialize, the command displays “No history found” instead of reporting the operational failure.
Suggested resolution: Track failed database reads and show an actionable error when no profile was read successfully; reserve the empty state for successful queries with no rows.
There was a problem hiding this comment.
Fixed in 936b9df. Successful database reads are now counted; when no profile was read successfully the command shows an error state instead of the empty state.
| useEffect(() => { | ||
| void getSearchEngine().then(setEngine); | ||
| }, []); |
There was a problem hiding this comment.
🟠 Warning — Search-engine loading failures leave the command stuck
Rule: UX-001
getSearchEngine() has no rejection handler. A profile-directory read failure leaves engine null and the list loading indefinitely without feedback.
Suggested resolution: Catch initialization failures, stop loading, and display an actionable error or explicitly select the documented fallback engine.
There was a problem hiding this comment.
Fixed in 936b9df. getSearchEngine() failures are now caught, loading stops, and an error empty view is shown with the failure message.
| ## Notes | ||
|
|
||
| - Bookmarks, history, and the default search engine are read directly from Helium's local profile files. | ||
| - **Search Web** uses the search engine configured in Helium's settings and fetches suggestions from it (network access). |
There was a problem hiding this comment.
🟠 Warning — Suggestion fallback transmission is not disclosed
Rule: MANIFEST-001
The README says suggestions come from Helium’s configured engine, but fetchSuggestions also sends the query to Google whenever that engine has no suggestion URL, fails, or returns no suggestions.
Suggested resolution: Document when search queries are sent to Google’s suggestion endpoint.
| - **Search Web** uses the search engine configured in Helium's settings and fetches suggestions from it (network access). | |
| - **Search Web** uses the search engine configured in Helium's settings and fetches suggestions from it. If that endpoint is unavailable or returns no suggestions, the query is sent to Google's suggestion endpoint as a fallback (network access). |
There was a problem hiding this comment.
Fixed in 936b9df — applied the suggested README wording.
- Restore session via one-time --restore-last-session launch switch instead of persistently rewriting the startup preference - Report an error when no history database could be read - Show an error state when the search engine cannot be determined - Disclose the Google suggestion fallback in the README
clankus-aurelius
left a comment
There was a problem hiding this comment.
All previously reported issues are resolved by the incremental changes. No new actionable issue was introduced.
Automated extension review passed. A maintainer review is still required.
This is an AI-generated first pass and may be mistaken. If a finding is unclear or incorrect, reply in the relevant thread and mention @aurelleb.
|
@aurelleb automated review passed for |
|
thanks! |
|
Glad it was useful! |
* feat: add helium extension Adds Helium browser integration: open new tab/window/private window, and search tabs, bookmarks, history, and the web via Helium's default search engine.
Adds Helium browser integration for Linux.
Commands
--remote-debugging-port=9222to Helium's launcher flags file and restarts the browser, preserving the session.Notes
/json/list,/json/activate,/json/close,/json/new), since Linux has no AppleScript or BrowserExtension API equivalent. Chromium only accepts--remote-debugging-portat startup, so the extension auto-detects the port (preference →DevToolsActivePort→ default 9222) and launches Helium with an ephemeral port when nothing else enables debugging.@vicinae/apiandsql.js(for the History and Web Data SQLite files).Tested live on Helium 0.15.5.1 (Chromium 151) under Hyprland.