Tornevall Networks Social Media Tools is a browser-wide extension for AI-assisted replies, fact-checking, and social media workflows. The source tree stays Chrome-first for development, while release packaging can now emit separate archives for Chrome, Edge, Opera, and Firefox. All AI processing runs server-side through the Tornevall Networks Tools platform.
Users who have a Tornevall Networks Tools account and want AI-powered assistance while browsing, moderating social media, or reading content on any website.
projects/socialgpt-chrome folder in the Tools repository.tools.tornevall.net and generate a personal bearer token from your account settings.As soon as you paste or edit the token, the popup/config page now also performs a lightweight token-only validation call and shows an inline spinner plus a clear accepted/rejected result.
projects/socialgpt-chrome/manifest.json remains the Chrome-first source manifest.projects/socialgpt.sh, which creates browser-specific archives under projects/socialgpt-chrome/dist/.browser_specific_settings.gecko without changing the source manifest in the repository.The extension uses a two-tier permission model designed to minimize default access while preserving full browser-wide capability for users who want it.
In baseline mode the extension:
tools.tornevall.net and tools.tornevall.comactiveTab permission to inject scripts temporarily when the user triggers the menu itemNo passive injection happens on arbitrary pages in baseline mode.
Users with a valid Tools bearer token can enable this mode from the extension popup:
<all_urls>)Disabling the toggle removes the broad permission immediately. The extension never activates global mode automatically.
On pages with text composition fields, a floating button appears near the active input. Clicking it opens the Toolbox panel where you can:
The Toolbox header is now draggable, so you can move the panel away from the page UI instead of leaving it anchored to the default composer edge.
The Toolbox close Γ button now also works again alongside that draggable-header behavior.
When you select text on any page (in global mode, or on the supported platforms in baseline mode), two small floating buttons appear:
Both buttons can be dragged and reset with double-click or Esc.
Selection detection was also hardened for short direct selections and double-click timing, so these floating actions appear more reliably on pages with sensitive editors.
Right-clicking anywhere on a page provides:
These work on all pages. On pages without a running content script, the background injects the required scripts via activeTab when the menu item is clicked.
The popup now also includes Open Toolbox in active tab as a no-right-click fallback. If the page already has a live text selection, the popup shortcut imports that selection into Toolbox automatically.
As of 1.2.16, the popup shortcut and the right-click Open Toolbox / Verify fact with Toolbox flows are routed frame-aware through the background worker. On iframe-heavy pages the extension now prefers the most relevant injected frame (existing Toolbox frame, selected-text frame, focused editable frame, otherwise the top frame) instead of depending on whichever frame happened to answer first.
On Facebook group admin_activities pages, the extension can capture admin log entries and submit them to Tools for reporting and statistics.
This now has two explicit consent steps:
If the popup toggle is off, Facebook admin pages stay quiet and no admin-statistics overlay is shown. Even when the popup toggle is on, submission is still disabled by default on each page load until the page-local control is enabled.
On the Tools dashboard, ingested Facebook admin-activity rows remain scoped to the owner of the bearer token that submitted them. The repeat-rejections panel now shows a top-10 list of people who were rejected more than once, and the regular activity by outcome chart includes an optional checkbox that overlays a Rejected more than once series when you want that comparison in the same chart.
The Facebook dashboard now also derives a second moderation layer from the stored admin-log sentence itself, so Approved / Rejected can be split between join requests and pending posts without changing the extension payload format. Anonymous pending posts are still counted as pending posts, but the summary cards also show how many of those post decisions were anonymous.
Shared Facebook chart links (/shared/facebook/chart/{token}) now auto-refresh once per minute and show a live countdown in the corner.
On SoundCloud 4 Artists insights pages, the extension can capture GraphQL-based analytics payloads and submit them to Tools. Auto-ingest must be explicitly enabled in the popup before any data is sent.
The options/config page now mirrors the same controls as the popup, but in a larger three-card layout for easier reading and editing.
Use whichever surface you prefer β both save the same settings.
Both surfaces now also localize dynamically at runtime, with Swedish selected automatically when the browser prefers Swedish and English used as fallback.
As of extension 1.2.15, that UI localization no longer leaks into the actual AI responder defaults: the Answer language and Verify-fact language selectors stay authoritative for generated output even when the popup/config page itself is shown in Swedish.
The popup/options page now also exposes a dedicated Extension language selector (Auto, English, Swedish) so the extension chrome can be localized separately from the AI output language.
| Control | Purpose |
|---|---|
| Tools API Bearer Token | Your personal token from tools.tornevall.net β required for all AI features |
| Use dev / beta server | Switches to tools.tornevall.com for development and testing |
| Enable global browser-wide AI mode | Activates full cross-site AI overlay after permission confirmation |
| Enable Facebook admin activity statistics | Global master switch for showing the Facebook admin statistics overlay on matching pages |
| Enable Facebook admin debug diagnostics | Shows extra diagnostics on Facebook admin pages |
| Open Toolbox in active tab | Opens Toolbox directly from the popup and imports the current selection when available |
| Extension language | Controls the popup/config/Toolbox UI language separately from generated AI reply language |
| Responder name | Your name used in AI-generated replies |
| Auto detect Facebook name | Tries to auto-fill responder name from your Facebook profile |
| Answer language | Language for AI replies (default: match context) |
| Verify-fact language | Language for fact-check results (default: match context) |
| Fact-check model | AI model used for fact-checking |
| Default quick-reply style | Tone preset for quick-reply panel |
| Responder profile | Persona description sent to the AI (stored in Tools) |
| Advanced mark-mode context | Optional local-only settings on the config page for richer mark labels and broader DOM context extraction |
| Test Tools β OpenAI | Tests the connection end-to-end and verifies your token |
Version 1.2.15 fixes a regression introduced during the popup/config runtime localization work:
Practical effect: choosing English (or another supported output language) should once again produce output in that language instead of drifting back to Swedish because the extension UI itself is Swedish.
The larger config/options page now includes an Advanced mark-mode context section for Toolbox users who need more traceability than plain [1], [2] labels.
Default behavior is unchanged:
Available options:
[1], [2], β¦ headerstn-mark-2When a richer mark-label mode is enabled, the page also shows a visible badge on the selected element so you can map the on-page marker to the context text shown in Toolbox.
The extension now also runs its content scripts in nested frames (including matching about:blank child frames) where Chrome allows it, which improves iframe-backed page support for mark mode and selection overlays.
| Storage area | Contents |
|---|---|
chrome.storage.sync |
Token, settings, model catalog, global mode flag, Facebook admin statistics feature flag β synced across devices |
chrome.storage.session |
Debug logs, per-tab state β cleared when browser closes |
The extension does not read, store, or transmit page content or URLs outside of explicit user-triggered AI actions.
client_name, client_version, client_platform) to POST /api/ai/socialgpt/respond so Tools can identify which extension build created a request.client_platform field now reflects the active browser build more accurately (chrome_extension, edge_extension, opera_extension, or firefox_extension) instead of always claiming Chrome..env values, passwords, tokens, API keys, or similar secrets.The extension does not download or execute remote code. All JavaScript is bundled locally. Remote communication is limited to HTTPS API calls to the Tools platform, which return JSON responses β not executable code.
https://tools.tornevall.net/api/ai/socialgpt/respond/api/social-media-tools/extension/settings/api/social-media-tools/extension/validate-tokentools_ai_bearer tokens still work, but other personal API keys can now also be used for these AI endpoints when the key is marked AI-capable and the token owner has approved OpenAI access.CHROME_WEB_STORE_COMPLIANCE.md in the extension source directory