/ CHANGELOG

Changelog

Latest releases, completed work, and improvements shipped to Elmo.

Releases

May 10, 2026

What's Changed

  • Publish elmohq/elmo-db-migrate images instead of always attempting to build as part of the CLI. by @jrhizor

May 10, 2026

What's Changed

  • Standardize Docker image naming between the CLI and release process on elmohq/elmo-web and elmohq/elmo-worker. by @jrhizor
  • Fix OG image generation: og:image is now an absolute URL and renders the current page's title/description. Adds og:url, og:site_name, og:locale, and og:logo to the document head. by @jrhizor

May 6, 2026

What's Changed

  • Admin /api/v1/brands endpoints (POST, GET, PATCH) now accept and return a single domains list instead of website + additionalDomains. This future-proofs against a future db model change. by @jrhizor

May 6, 2026

What's Changed

  • elmo init adds a recommended setup path — pick a scraper (BrightData or Olostep), pick a direct LLM API (OpenRouter, Anthropic, OpenAI, or Mistral), four prompts total. The custom path now requires at least one direct LLM API so onboarding analysis works out of the box. by @jrhizor
  • Add telemetry opt-out prompt during elmo init and new elmo telemetry status|enable|disable subcommand. See Telemetry for what's collected. by @jrhizor
  • Add Mistral as a direct API provider. Set MISTRAL_API_KEY and target via mistral:mistral-api:<model>[:online]. by @jrhizor
  • License Elmo under the MIT License. Add Code of Conduct, Contributing guide, Security policy, and a lightweight CLA process. by @jrhizor
  • BrightData: prefer answer_text_markdown over answer_text when extracting response text, so prompt responses render with markdown formatting in the UI. by @jrhizor

April 24, 2026

What's Changed

  • Fix local-mode registration end-to-end and lock down the auth surface. The first /auth/register submission in local mode now atomically creates the default org + admin membership, so register → brand onboarding works in one pass; any subsequent signup is rejected. Demo mode narrows writable /api/auth/** endpoints to a whitelist of just sign-in and sign-out. Drops the unused DEFAULT_ORG_ID and DEFAULT_ORG_NAME env vars. by @jrhizor
  • Redesign the Visibility and Citations filter bar (model / tags / lookback dropdowns + search), wire model filters to brand.enabledModels, and move the visibility-bar rollup into a single SQL query — cuts load time from ~10s to under 1s on large brands. Also fixes the "unbranded" tag filter and a search clear-X flicker. by @jrhizor

April 23, 2026

What's Changed

  • Make default brand cadence configurable via DEFAULT_DELAY_HOURS env var. brand.delayOverrideHours still takes precedence. The default changed from the hard-coded 72h to 24h. by @jrhizor
  • Restyle the demo login and add a preview to Storybook. by @jrhizor
  • Ensure icons/favicons are comprehensive for non-whitelabel deployments. by @jrhizor
  • Replace the page-top demo-mode banner with a compact "Demo" pill next to the sidebar logo (with a tooltip explaining the read-only behavior), and move version / elmohq.com / GitHub links into the sidebar footer for every deployment mode except whitelabel. Also reads the better-auth user.image field so avatars actually render. by @jrhizor

April 22, 2026

What's Changed

  • CLI: mask the external DATABASE_URL prompt and note that it must be an IPv4-compatible direct connection or pooler. by @jrhizor
  • Demo mode: visitors can now actually sign in — better-auth endpoints are exempt from the read-only write-block, and the login form pre-fills the seeded demo credentials. by @jrhizor
  • Demo deployments (READ_ONLY=true) now enable supportsMultiOrg, so the /app brand switcher renders when the demo user is seeded into multiple organizations. Pure local deployments continue to auto-redirect to the default org. by @jrhizor
  • Fix missing stylesheet and favicon in Docker builds caused by @tailwindcss/vite emitting different CSS hashes in the client and SSR passes. by @jrhizor
  • Worker dispatch now reads SCRAPE_TARGETS end-to-end via the provider registry. Deployments that configure non-default providers no longer hit AI_LoadAPIKeyError for providers they never set up, the worker fails fast at startup on misconfigured SCRAPE_TARGETS, and brand.enabledModels filters per brand. by @jrhizor

v0.2.1

GitHub

April 21, 2026

What's Changed

  • CLI elmo init now walks through each provider one at a time. by @jrhizor

Closed Issues

May 2026

April 2026

March 2026

February 2026

January 2026

December 2025