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, open Social Media Tools from your account/dashboard, and generate a personal SocialGPT AI token there or from My API keys.The Social Media Tools start page is available to every signed-in user for extension installation and token setup. The SocialGPT token is dedicated to the extension/Social Media Tools client flow and is separate from ordinary direct OpenAI API access. If you need direct OpenAI-backed API endpoints outside SocialGPT, submit the separate OpenAI access request from that same page. The Facebook/X operator dashboards and audit views on the same area still require the Social Media Tools management permission.
The same Social Media Tools page and My Profile now show your current SocialGPT/OpenAI limits, including daily budget usage, request limiter, default model/output budget, access state, and whether web search is available for your account/environment.
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.
The popup's Use dev / beta server checkbox is intentionally off by default. SocialGPT should keep using tools.tornevall.net unless you explicitly opt into the dev/beta host.
The Facebook admin activity switch, the Facebook admin debug-diagnostics switch, and the participant-request helper switch are no longer shown in the popup or the larger config/options page. Those on/off controls now live only on the Tools-side Facebook Admin Tools dashboard, and the extension fetches their current state from Tools before it starts working on those Facebook surfaces.
On Facebook group participant_requests, Analyze user includes the visible request-card text from the start: profile rows, group/friend clues, membership questions, visible answers/rule acknowledgements, and preview/comment markers are structured into the analysis context. If you click inside the card and Facebook opens or loads more obvious comment/post preview context, the result box can show that new context is available and lets you run Update analysis. The participant helper now also reads Facebook's dedicated preview GraphQL response for that dialog more selectively, keeping participant-specific preview/comment/post details while avoiding large raw response dumps. It now prefers richer GraphQL fields such as preferred_body.text, body_renderer.text, original-post message text, author names, timestamps, comment/post ids, and Facebook URLs before it falls back to DOM-only clues. When Facebook exposes compact base64-like graph ids inside that response, the helper can also decode the readable parts before they are shown back to the AI/user-analysis flow. If Facebook temporarily rerenders the underlying request list while the preview dialog is open, the helper now keeps following that dialog as the active participant surface instead of pretending that no participant card is available anymore. Once the preview dialog is matched, the helper also keeps rescanning that same preview surface as Facebook swaps in more context inside it — including when the operator clicks through to View original post from the preview. That autoscan now also survives Facebook's separate root-level mount_* preview wrappers instead of only listening below body, so later preview/original-post context is less likely to stall until a manual Find preview element click. That follow-up capture now also keeps structured original-post comment-thread payloads (for example later CometPhotoRootContentQuery GraphQL responses), so the helper can show explicit thread-comment counts, original-post text, and captured comment excerpts instead of hiding those deeper comments inside generic network snippets only. Preview-context extraction is now more participant-name-aware too, so scattered comment/post lines tied to the analyzed person are prioritized more strongly while generic preview UI noise is filtered harder. The first visible-card-only participant analysis now deliberately races two backend requests — one without web search and one with web search — so the fastest useful answer can be shown first, while later preview/original-post follow-up reruns can do the same again after more comment context appears. Those follow-up reruns still give the participant's own visible comment extra weight against the saved group rules/context, and the waiting notice now backs off more gracefully when Facebook has already stopped changing. If the helper still seems behind after the full thread becomes visible, Find preview element now also forces another preview/comment rescan instead of only scrolling to the dialog. The floating helper panel also shows a small listbox-style Detected context view with the current participant name/profile information, visible group/friend/profile clues, preview-comment hints, original-post links, and captured GraphQL thread-comment clues when those hints are available.
If you leave the Facebook participant_requests page, the floating participant user-analysis result box now closes automatically and clears any stale follow-up state so an earlier analysis does not linger over unrelated Facebook pages.
The popup also normalizes old string-based devMode values once when it loads, so legacy sync-storage leftovers do not keep users on the dev/beta host accidentally.
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 Toolbox is opened from a rich-text editor or another editable iframe/document surface, the floating SocialGPT UI now mounts inside a dedicated non-editable overlay root so the panel itself does not become editable page content. If the editor itself lives inside an editable iframe, Toolbox now also tries to place the panel on the nearest same-origin top-level page surface so it does not stay visually trapped inside the text editor box.
The Panel mode selector inside Toolbox now supports two extra companion layouts:
These modes now prefer the browser's real side-panel companion surface when that API is available, so SocialGPT stays outside the page itself instead of behaving like just another taller floating overlay. If the browser/runtime does not expose that side-panel API, the extension still falls back to the older in-page docked layout.
When you select text on any page (in global mode, or on the supported platforms in baseline mode), two small floating buttons appear:
When a fact-check, source-check, search, lookup, or user-analysis request requires independent verification, Tools now separates the normal AI answer from the web-search verification lookup. The visible answer can still use the preliminary AI analysis when web search fails or adds no useful evidence, but the metadata clearly marks the result as independent verification missing or web search failed instead of presenting it as verified. Verify-mode model selection is now also Tools-controlled: the extension no longer decides its own fact-check model, and Tools may prefer gpt-4o as the primary verification model when web search is part of that run. Result boxes now render the first markdown answer as safe HTML (including headings, bold text, lists, and links), can show structured citation links returned by Tools, keep long answers in an internal scroll area so the result can be read without losing the action buttons, and show a cleaner styled preview card while the first analysis is still running. The renderer is now also more tolerant of slightly messy AI formatting such as indented headings, numbered lists, and text mixed with simple HTML line breaks. Verify-result cards now also surface explicit web-search metadata when Tools returns it — for example whether web search was actually used, whether independent verification is still missing, how many source links were attached, and whether a verification notice/finalization warning was returned.
When the Tools backend itself hits a temporary OpenAI timeout/connection issue, POST /api/ai/socialgpt/respond can now return a clearer user-facing user_message together with additive retryable, error_code, and upstream metadata instead of only exposing a raw transport failure. In verify/source-check flows, if the preliminary answer already exists but the final OpenAI refinement step times out, Tools can keep the preliminary answer visible and attach an additive notice plus web_search.finalization_failed=true instead of failing the whole request outright.
Both buttons can be dragged again and reset with double-click or Esc.
Verify fact now has its own local Verify-fact result target setting too, so fact-checking can stay on the ordinary on-page result box or be routed into the browser companion independently of Toolbox panel mode.
Toolbox and browser-companion generation now also stay visibly alive while waiting for Tools: Generate, Refresh, and Verify fact keep an inline progress state with step labels, elapsed time, and a small moving progress bar instead of only looking frozen behind one static spinner label.
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:
When the Tools-side Facebook participant scanner is enabled, /groups/*/participant_requests pages can now show:
The Toolbox/fact box now also anchors itself to the chosen participant-request card instead of always opening in a generic detached corner.
When the Tools-side Facebook extension settings enable it, the extension can now assist on Facebook group pages that match /groups/<group>/participant_requests.
Current behavior:
/groups/<id>) instead of one shared rule for every group, and the same per-group rules map is now also saved through Tools extension settings so it can sync back into other installs for the same user/token; on the actual participant-request page only the exact current group's saved rules are shown/used there... action areaSG shorthand, so the main action explicitly reads Analyze usermount_* containers, and a dedicated Find preview element action can scroll to and highlight the currently matched preview dialog for operator confirmationCards enhanced: 0Checking now… spinnerThe popup also no longer duplicates the Facebook Send queued / Release stuck controls because those actions already exist on the ingest page itself.
Guardrails:
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. The popup and the larger config/options page now also expose the same local Panel mode selector as Toolbox itself, so you can switch straight to the browser companion modes before opening the panel in the active tab. Toolbox panel mode now stays separate from the new Verify-fact result target selector, which decides whether Verify fact should stay in the ordinary on-page result box or open inside the browser companion.
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 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.
On Facebook group admin-activity pages, the extension can collect reportable moderation/activity rows and queue them for bulk delivery to Tools.
The options/config page still provides the full settings surface in a larger three-card layout for easier reading and editing.
The popup keeps the most common day-to-day controls, while the Facebook admin activity/debug master switches now intentionally live only on the Tools-side dashboard.
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 |
|---|---|
| SocialGPT AI Token | Your personal SocialGPT token from tools.tornevall.net — required for extension 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 |
| Open Toolbox in active tab | Opens Toolbox directly from the popup and imports the current selection when available |
| Panel mode | Chooses whether Toolbox should open near the field, in one of the docked layouts, or in the companion/sidebar modes that now prefer the real browser side panel when available |
| Verify-fact result target | Chooses whether Verify fact should stay in the ordinary on-page result box or open inside the browser companion |
| 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 | Informational only in the extension UI; Tools now decides the verification model server-side |
| 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 |
The Facebook admin activity switch, Facebook admin debug-diagnostics switch, and participant-request helper switch are no longer popup/config controls. They are managed only from the Tools-side Facebook Admin Tools dashboard, and the extension fetches the live on/off state from Tools when those Facebook workflows run.
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, and global mode 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-tokenprovider_socialgpt provider. Legacy personal tools_ai_bearer tokens still work for compatibility. Direct OpenAI-style endpoints remain separate and require approved OpenAI access.CHROME_WEB_STORE_COMPLIANCE.md in the extension source directory