Release notes
Reverse chronological. Dates are the date the change landed in production.
2026-05-27
Widget
window.LeFluxpublic API shipped — open / close / toggle / send / ask / setVisitorData / clearConversation / dock / undock / showLauncher / reindex / destroy, plus state getters (isReady/isOpen/isExpanded/getState/getLanguage/getSessionId). Backwards-compat:window.AIChatWidgetstill exists as the underlying instance.- Granular event stream — added
leflux:state-change,leflux:typing-start/:typing-end,leflux:expand/:collapse,leflux:navigating,leflux:language-detected,leflux:destroyto the existingleflux:ready/:open/:close/:message/:reply/:action/:task_complete/:errorset. - Conversation state machine — single source of truth (
idle/typing/processing/navigating/awaiting-input) exposed viaLeFlux.getState().conversationand thestate-changeevent. Drives analytics + custom UI. - Hide launcher mode — new dashboard toggle (Settings → Launcher → “Hide launcher button”). Widget mounts + stays connected; the floating button is invisible. Chat opens only via
window.LeFlux.open()from your own UI. - Log discipline —
[LeFlux]console logs are now silent on customer production hostnames. Enable on prod for support cases by addingdata-debug="true"to the embed<script>. Errors always remain loud.
Server
- Language on every payload —
message_done,message,action_plan,task_completenow carry a normalizedlanguageslug ('en','roman-urdu','de', …) so client-sideLeFlux.getLanguage()is always fresh.
2026-05-26
- Developer docs site launched at /docs. Searchable, dark + light mode, full coverage of installation, configuration, features, API.
2026-05-25
Widget
- Floating composer redesign — input pill now lives INSIDE the chat-window (was a separate bar below on bottom-bar layout). Unified surface across docked + floating modes.
- Ultra-thin header — replaced solid purple banner with glassmorphic blended bar (~50px tall, was ~70). Header now reads as part of the panel, not a marketing slab.
- Modern input field — sparkle icon prefix (themed to primary color), Enter ↵ kbd hint, rounded square send button with glossy hover sweep, transparent surround so messages flow seamlessly behind the pill.
- Configurable launcher — shape (circle/squircle/pill), size (sm/md/lg), icon (chat/sparkle/question/lightning/cursor), position offset, glow toggle. All from the dashboard.
- Nudge messages — optional proactive tooltip near the launcher. Styles: bubble, card, minimal. 24h dismissal cooldown. Renders on all three layouts (floating, bottom-bar, side-panel).
- Dock side-panel mode — true side drawer with host body push, fixed-element shifting (nav bars repositioned to clear the panel), seamless input + scroll handling.
- Required field detection — indexedElements now expose
required: truefor inputs with native required / aria-required. Form-fill never skips a required field. - Focus preservation — input stays focused after every assistant message + action sequence. Visitor can keep typing without clicking back.
Server
- AI-visible state trace — after every action, the LLM sees
[state]block in the next prompt with URL diff + plain-English next-step instructions when the action was a no-op. - Knowledge-base ULTRA-HIGH priority — every turn the LLM scans Site contacts (emails + phones), Page text excerpts (up to 2500 chars per page), Summary, Headings, Notes, and Sitemap before deciding an action.
- Three-equal navigation paths —
navigate,click,scroll_toare now equally weighted in the decision tree. Bot picks based on situational fit, not hardcoded preference. - Cross-page anchor handling — anchor links (
#contact) only work on the page they live on; bot now navigates to/pathname#anchorfor cross-page anchor targets. - Loop guards — same-click 3x, same-navigate 2x, scroll-only 3x → break the loop with honest summary + clarifying question. Never silently emits “Done” when nothing happened.
- Assistant message dedup — server suppresses repeated assistant text against the most recent history entry. No more “Fahad ko hire karne ke liye…” × 3.
- Crawler heartbeat reaper — stale crawl jobs (no heartbeat for 60s) auto-marked failed. No more “scanning…” forever.
- Contact extraction — crawler scans all pages for emails + phone numbers; prepended as a
## Site contactsblock at the top of the LLM prompt.
Dashboard
- Tailwind + shadcn/ui redesign — teal accent (was purple), modernized cards, sticky sidebar with active-nav highlighting.
- Live crawl panel — real-time progress (pages discovered, walked, current URL).
- Launcher + Nudge configurators — full UI for all the per-site widget chrome.
- Empty session cleanup — dashboard hides + server stops writing empty sessions to DB.
2026-05-23
- LeFlux Cloud MVP shipped. Multi-tenant: users → orgs → sites. Per-site config (color, layout, allowed hosts), Playwright crawler, embed.js zero-config loader.
- OpenRouter + Gemini 2.5 Flash replaces the legacy Claude CLI for the LLM call path. Sub-second first-token latency.
2026-05-15
- Universal indexing rolled out — agent now references elements by numeric id, not selectors. Works on any site without per-tenant rules.
2026-04-15
- Iterative loop — agent now takes multiple turns per visitor message. Tasks like form-fill complete autonomously.
2026-04-03
- Initial public release — basic chat widget + Claude CLI integration. Server, widget bundle, embed.js loader.
For granular commit-level changes, see the GitHub commit history.