
Back in the Captain’s Chair: The Figranium Recovery Update
It has been nearly a month since my last post. To be blunt, I have spent the last few weeks wrestling with issues tied to my Linux distro. Nothing was critically broken to the point where I could not have worked, but it was enough of a cumulative headache to stall my momentum.
To make matters worse, while I was occupied with those OS-level fixes, the "maintenance agents" I left in charge managed to blow things up in my absence. It has been a mess, but I have spent the last few hours stabilizing the ship and cleaning up the wreckage.
The main thing is this: I am officially back. Figranium is back on track, and I am resuming active development with regular updates. Here is a look at the technical improvements included in this release.
Local LLM Support (Ollama Integration)#
The headline feature of this release is the support for local LLMs via Ollama, providing more privacy and lower costs for browser automation tasks.
- Provider Support: Added Ollama alongside OpenAI, Gemini, and Anthropic for CSS selector and script generation.
- Flexible Configuration: Store multiple Ollama base URLs and specify custom models (e.g., gemma:7b, llama3) in the updated Settings screen.
- Improved Fallback: The agent now intelligently cycles through all configured AI providers (including local ones) to ensure reliability.
Intelligent DOM Context Cleaning#
We’ve overhauled how the agent "sees" the page, significantly reducing token consumption and improving AI extraction accuracy.
- Aggressive Stripping: Non-essential attributes and tags (scripts, styles, SVGs, etc.) are now purged before sending content to LLMs.
- Attribute Whitelisting: Only data-bearing attributes (IDs, classes, aria-label, data-testid, etc.) are preserved, providing the AI with a clean, high-signal representation of the DOM.
- HTML Buffering: Optimized raw HTML capture for the results pane to ensure visibility without penalizing extraction performance.
New "HTTP Request" Action Block#
A powerful new action type that allows Figranium tasks to interact with external APIs directly.
- Direct Integration: Send GET/POST requests during a task execution without needing a full browser context.
- Data Chaining: Use results from previous scraping steps as payloads for external webhooks or databases.
UI/UX and Performance Improvements#
- ActionConfigModal: A redesigned modal for configuring complex automation steps, providing better clarity and more granular control.
- Security Hardening: Implementation of Content Security Policy (CSP) headers and SSRF protection for safer self-hosting.
- Keyboard Navigation: Introduced global keyboard shortcuts and navigation hints for a keyboard-first workflow in the Editor.
- WeakMap Caching: Significant performance optimization in the sandbox proxy layer using WeakMap to reduce memory overhead and latency during long-running tasks.
- CenterAlert Refactor: Enhanced accessibility and visual design for global system alerts.
Technical Optimizations#
- PostgreSQL Logging: Improved logging throughput with a new in-memory counter for execution stats.
- Agent Finalization: Optimized the shutdown sequence of Playwright contexts, leading to faster execution cycles.
- Scalability: The task list payload has been reduced by ~95% by stripping large version histories from the initial dashboard view.