What's new in Hydra
Release notes, newest first. The full history is in the project's CHANGELOG.
Front door (v48)
Phase 1 of the owner's build plan: what a first-time visitor meets, accounts, the legal pages, one menu for how Hydra answers, a sidebar for getting around, and the engineering underneath. Nothing that worked before was removed; everything the sidebar used to hold is still one or two clicks away.
Hydra, by its own name (the owner's request: "Hydra is its own company's AI chat").
- The chat app no longer names AI companies or their models. Each company has a fixed letter (Model A, Model B…) and each model a tier (Max, Pro, Swift): in the model chooser, the retry menu, the answer header and its hover ("Written by Model B"), proof receipts, Fusion and Compare drafts, the version switcher, progress lines, error messages, scheduled tasks, agents and Mission Control.
- The names stay where people need them: Settings → API keys and the blocked-companies list (each shows its letter: "OpenAI (GPT) · Model B in the chat"), the notice before a message goes to several companies, the legal and Sub-processors pages, the import instructions for other apps' exports, the comparison pages and release notes, and Admin.
- Asked which model it is, the assistant says it is Hydra, that Hydra uses models from several companies and picks one for each question, and that it doesn't say which. It never claims Hydra made its own model and never denies using another company's.
- Text Hydra writes itself (errors, notes, the models' agreement note, Mission Control's log) has company and model names replaced by letters. The answers themselves are the models' words and aren't changed.
- The guide no longer calls the assistant "Nova" (an old name); it is "Hydra" by default everywhere.
- "Retry with…" offers Smart, every model together, and each company's Max, Pro and Swift.
No amounts of money for members (the owner's request).
- Settings → Usage shows how much of today's and this month's allowance is used, as a percentage, and how many answers; site admins also see the amounts. Limit messages say what share is used ("more than is left of today's allowance (80% used)"), never an amount.
- Mission Control's budgets are Small, Medium, Large and Extra large, and a mission shows the share of its budget used.
- The model catalogue (Settings → Models, which lists companies and prices) is now for the site owner only.
- The price of Hydra Plus is still shown where you subscribe.
Automations started by other systems.
- A scheduled task can also be started by a webhook: switch it on in the task, copy its secret address, and any system that can make a POST (a form tool, a payment provider, Zapier, your own code) starts the task at once. What the call sends (JSON or text, up to 8 KB) is handed to the run as data, marked as coming from outside, and shown in the saved chat. Each run appears in the task's history as "webhook". Replace or remove the address at any time; the old one stops working on save.
Save any answer as a file.
- "Save as…" under every answer: a Word document, a PDF, a PowerPoint (one slide per heading) or a Markdown file, built in the browser.
Videos as attachments.
- Attach a video (MP4, WebM, MOV; up to 200 MB): the browser takes nine frames at even intervals and lays them out on one labelled sheet, which goes to the model as an image with a note about the clip, so any model that reads images can say what happens in it. The file itself is never uploaded. Videos under 3.5 MB are transcribed as well, so the words are read too.
Lockdown.
- Settings → Account & privacy → Lockdown: the models alone. With it on, chats, scheduled tasks and missions can't call connected apps or APIs, read web pages, run code or take actions, in any mode; the provider's own web search summaries still work. Connectors stay set up for when it's off.
Research over your own material.
- Research now treats what you attach to the question (documents, spreadsheets, photos), the project's files, your saved chats, projects and memories, and the apps you've connected as sources alongside the web, and cites them by file, chat or app name in the same numbered list. The saved-chats search is offered to Research only for signed-in accounts with memory on; it reads, it never writes memories.
Two-step sign-in.
- Settings → Account & privacy → Two-step sign-in: scan a QR code (or type the key) into an authenticator app, enter its first code, and keep the eight recovery codes it shows once. From then on a sign-in needs the password and the app's code; a sign-in link or Google/GitHub sign-in asks for the code too. Each code works once; a recovery code signs you in once if the app is lost. Turning it off needs the password and a code.
- The secret is kept encrypted, recovery codes hashed, and wrong codes count towards the account's sign-in limit. Nothing is sent to a third party.
Memory that saves itself, or only when told.
- Settings → Memory has a second switch, "Save things automatically when I share them". On (the default), the assistant keeps durable facts you share about yourself, your work and your preferences, as it did; off, it saves a memory only when you say "remember that…".
Questions drawn in the page.
- "Are you sure?" questions, notices and "type a name" prompts are now drawn in the page instead of the browser's own boxes, which freeze the whole tab (and browser extensions) until answered. Escape cancels, a question that deletes something starts on Cancel, and focus goes back where it was.
- When copying to the clipboard isn't allowed, the text is shown selected, ready for Ctrl+C.
One menu for how Hydra answers.
- Smart, Fast, Deep Think, Fusion, Compare, Code, Research, Build, Image and Video are in one menu next to the model chooser, with the answer options inside it: length (concise, balanced, detailed), web search, Think, and the second-model check (the old "Best" style). The separate tabs, chips and style list are gone.
- No prices in the chat (the owner's request). The menu says how long each mode usually takes and who answers; the answer header and the line under the box no longer show amounts. Usage and spending are under Settings → Usage.
- The menu marks the mode that suits what you're typing ("Suggested") and the modes that come with Hydra Plus.
- The model chooser says what each model can read besides text: images, PDFs, web search.
Photos and video, from the chat (the owner's request).
- "Draw…", "make a picture of…" or "make a video of…" in the chat makes it; a photo attached with "change the background to a beach" is edited. A question about a photo is still answered in chat.
- One-click tools on any picture: Remove background, Upscale and Variations; your own photos in a message can be edited or animated again.
- Up to ten reference photos per edit ("put my dog on this beach" with the dog and the beach attached). Asking for several variations of an edit makes one request per image, as the edit model works, and they come back together.
- Cinema video: clips with sound from 4 to 30 seconds, a named camera move from Cinema Studio's own list (22 to choose from, dolly to bullet time), and up to ten reference photos to follow. Standard (6 or 10 seconds) and Pro (5 or 10 seconds) clips as before; each video model offers its own lengths.
- The connection follows Higgsfield's published API (checked 19 October 2026): every submission carries an idempotency key, uploads send the headers the API returns, and its errors come back in plain words ("busy: try again in a minute", "out of credits", a failed job's own reason).
- Needs the site's Higgsfield keys, as before.
A first visit without red errors.
- When the free messages run out, a model isn't connected, or the network's daily allowance for visitors is used up, a card in the chat says so and what to do, instead of an error.
- Visitors get at most 20 free messages a day from one network (
GUEST_ANSWERS_PER_IP_PER_DAY); a refused message is handed back. - An optional one-time person check (Cloudflare Turnstile) after three free messages, when the site has its keys.
- Below the box, for visitors only: what Hydra is, an illustration of Fusion settling a disputed fact, the modes, the apps it connects to, the price and short answers.
Accounts.
- Email codes to confirm an address, reset a password or sign in with a link (15 minutes, one use), when the site has an email provider (Resend or Postmark). Without one, accounts use a password as before.
- "Continue with Google" and "Continue with GitHub", when the site has those keys.
- New passwords need at least 10 characters (existing ones keep working) and are checked against known breaches (Have I Been Pwned, which only ever sees the first five characters of a hash), with a strength meter and show/hide.
- After five wrong passwords an account waits 30 seconds, doubling up to an hour; failed sign-ins, lock-outs, sign-ups and password resets go into the audit trail.
- Sign-up asks you to confirm you are 13 or older. An invite-only mode for sign-ups, with a code set in Admin.
Legal pages and trust.
- The legal pages name who runs the site from
OPERATOR_NAME,OPERATOR_ADDRESSandCONTACT_EMAIL. Until all three are set they say they are drafts and aren't indexed. - A Sub-processors page: every company Hydra may send data to, what it receives, where, whether its terms let it train on what it receives (Higgsfield's do, by default), and links to its terms and privacy policy, as checked on 19 October 2026.
- A line under the box: answers come from third-party AI models and can be wrong, with a link to that page. Legal links in Settings → Account & privacy.
- Codes, sign-in links, visitor counters and lock-outs are removed when they expire, and the audit trail after 12 months.
- A draft Online Safety Act risk assessment for the owner (
docs/OSA-RISK-ASSESSMENT.md).
Pages for search engines and people.
- The guide as a page (
/docs.html), the release notes (/changelog.html, from this file), and comparisons with ChatGPT, Poe and T3 Chat that state only facts checked on 19 October 2026, with their sources, and make no claim that either is better. - A status page (
/status.html) and a health check (/api/health) for uptime monitors: the data store, the AI models and email, with the version. Nothing secret. - The installed app has shortcuts (New chat, Fusion) and appears in the phone's share sheet: what you share lands in the box.
- Cookieless analytics (Plausible) when the site is built with
PLAUSIBLE_DOMAIN: page views and a few named events, through the site's own address.
A sidebar for getting around.
- New chat, search, projects, agents and your chats. Each chat has a More button (or right-click) with Rename, Pin, Move to a project, Archive and Delete; it works from the keyboard.
- At the bottom: Automations (Scheduled tasks, Mission Control), Settings (API keys, connectors, usage, account and the rest), Help & guide, and your account.
- Ideas moved under the box on the home page: eight of them (four and "More ideas" on a phone). A first visit shows three short steps that end with a real answer; they can be hidden.
- Empty places suggest a start: a dissertation project template, agent templates, an example chat, and example missions in Mission Control.
Security.
- A strict script policy: the app runs only its own script files. Generated pages, previews and code runners run in a separate sandbox with an opaque origin, where their own scripts still work. Policy violations are reported to the site's log.
- Cloud metadata addresses are never fetched, even where private addresses are allowed for testing. Importing an API description from a URL, testing a connector and Build need an account (pasting a description still works for everyone).
- Visitors can lock the API keys kept in their browser with a passphrase.
Engineering.
- Error reports: a crash in the page or a bug in the server's code is written to the log and, when the site has
SENTRY_DSN, sent to Sentry, without message content (email addresses, keys and query strings are removed first). - Checks on GitHub (
.github/workflows/ci.yml): lint, type-check, build, the API, security, locked-site and browser suites, a dependency audit, a scan for committed keys (npm run scan), and Lighthouse on three pages. - A lighter first visit: the answer renderer (Markdown, maths, code highlighting) loads when the page is idle instead of before it can be used, the two fonts on the first screen are preloaded, and the service worker's script no longer delays the page. The home page's JavaScript before first use went from about 197 KB to about 146 KB (compressed).
/api/health,/api/client-errorand the status page are new;.env.examplelists every new setting.
Full strength (v47)
Claude Fable 5.1 at max effort for the hard questions.
- Smart sends coding and maths questions to Claude Fable 5.1, Anthropic's top tier of Claude models (maths used to go to GPT first). They run in the background (13 minutes instead of 60 seconds) with adaptive thinking at max effort and room for 32,000 tokens of thinking and answer. The answer's label says "· max effort", and a status line says it may take a few minutes.
- The same for Deep Think (its draft; the independent review and the revision stay at the normal effort), Code mode, Research's final report and Fusion's final answer when Fable writes it. A person who picks Fable themselves gets it in those modes too.
- Quick questions go to a fast model (Claude Haiku, GPT mini…), not the balanced one, so an allowance lasts longer.
- Never refused for it. A max-effort answer can cost up to about $1.65 at list prices. When the person's allowance, the site's budget or the per-request limit can't cover that, the question runs at the normal effort instead. Max-effort runs have their own hourly allowance (30 an account, 10 a visitor network); past it, normal effort. "Long answers" off in Settings → Usage keeps everything streamed, and the free preview never uses the background for it.
- No Anthropic key? Fable through OpenRouter. When the site has an OpenRouter key and no Anthropic one, hard questions go to OpenRouter's Claude Fable, asking for its top effort (
verbosity: "max", which OpenRouter documents as falling back to "high" where a model doesn't offer it). OpenRouter's list now always keeps the newest Claude of each family, prices each model at OpenRouter's own rates, and leaves out its asynchronous:batchversions. Fusion's judge is Claude, then Fable through OpenRouter, then GPT. - The model knows who it is. Asked "which model are you?", it now names itself and, under Smart, why it was chosen.
- The cost preview shows the same: the model, "(max effort)" and the bigger worst case.
Every answer is Hydra's (the owner's change).
- The answer's header names Hydra, then the mode and why Smart chose the model: "Hydra · quick question · fast model ≈ $0.0005" instead of "Claude · Claude Haiku 5.5 · Claude chosen: quick question · fast model". The model that wrote it is named when you hover over "Hydra", in the proof receipt and in the version switcher. Answers saved earlier read the same way.
- Progress lines don't name the maker either: "Drafting the answer…", "Checking the draft with a second model…", "Asking 3 models…", "2 of 3 models answered…".
- The assistant introduces itself as Hydra's assistant, not as the model underneath. Asked which model or AI is behind an answer, it still says so plainly.
10 free messages, then £13.99 a month (the owner's change).
- The free preview is now the first 10 answered messages instead of 5 minutes, so reading a long answer doesn't use the preview up. The count is kept on the server (an old cookie can't be replayed to get messages back), a message is taken before it is answered (requests sent at the same moment can't share the last one) and handed back when no answer came of it. An account made from a visitor keeps the visitor's count. The banner says how many are left.
- Hydra Plus is £13.99 a month. The preview's spending cap is now $1 (room for ten answers, Claude Fable's included) and a subscriber's monthly AI allowance $18 (about £13.99). The cap, the allowance and the number of free messages can be changed in Admin → Subscriptions; the price with
PLAN_PRICE. - The price against ChatGPT Plus and Claude Pro, on the home page for people who haven't subscribed: "Hydra Plus is £13.99 a month: less than ChatGPT Plus or Claude Pro", linked to a section of the pricing page with the sources, the date checked, and the plain facts that the plans' limits differ, that both have free plans and that ChatGPT Go costs less. Shown only while the price is below both.
- A visitor is never asked to bring an AI key to chat. The site's models (with Smart chosen) stay in the box after the free messages are used, and sending then opens the subscription page; before, the list emptied and the home page said "Connect your first model — add an API key". A site with no AI key at all now says the owner still has to add one.
PLAN_PRICEcan be written in pounds ("13.99") as well as pence ("1399"); the example settings used to show "9.99", which the code read as 9.99 pence.
Found by search engines and AI assistants.
- New pages: About, Pricing and FAQ, with titles, descriptions, social cards and structured data (the FAQ's matching the questions on the page). Linked from the home page.
- The home page's HTML now says what Hydra is (a heading, a summary, the main features and the price) for crawlers that don't run JavaScript; the app replaces it as it starts. A new title and description (150 characters), the organisation, website and app with its two offers as structured data, and the home page's heading now names Hydra for screen readers and search engines.
- llms.txt (a summary for AI assistants), a robots.txt that names the AI search and training crawlers and welcomes them (only
/api/is closed), a sitemap with only the indexable pages, each dated by its last real change, and security.txt. - The web app manifest, llms.txt, security.txt and the sitemap are served with their real types.
Fixes from the live site (each with a test):
- An idle visitor's tab asked the server for its plan about once a second, for ever (each answer made a new plan object, which asked again). It now asks once, after the first answer.
- The free preview never started for an account holding a key of its own for any provider (even one that didn't work), so it could use the site's models within the preview's allowance indefinitely. The clock now starts when the site's models answer.
- What the free preview doesn't include says so before anything is sent: Deep Think, the Best style, extended thinking, Fusion, Compare, Build, images and video open the subscription page with the reason, and the message stays in the box (the refusal used to come after the cost check and the privacy notice).
- /api/usage and /api/models now agree on whether a visitor must sign in.
- The preview's banner says the minutes count from the first message.
- A "Skip to the message box" link for keyboard users, and a label on the hidden file picker.
- The test runner stops if a harness left running is already using its port (it used to test that one's older code instead).
Open door (v46)
Anyone can try Hydra, then subscribe.
- Chat straight away. A visitor lands on an empty box and gets answers at once, without an account, for a 5-minute free preview (once per person: a signed cookie plus a per-network daily count). The clock starts at the first answered message; a refused one (Fusion, say) starts nothing.
- Then £9.99 a month. When the preview is over, the next message opens the subscription page instead of an error. The message goes back into the box, and nothing red is left in the chat. Payment is Stripe Checkout (Hydra never sees card details), confirmed as soon as the person comes back, with Stripe's webhook for renewals and cancellations (signature checked) and Stripe's billing portal under Settings → Account. Deleting an account cancels its subscription.
- Who pays. Only people who sign up after the subscription was switched on, and visitors. Existing accounts, admins, accounts an admin gives free access, and anyone using their own API keys carry on as before.
- Limits. Subscribers get a monthly AI allowance on the site's keys (default $13, about £9.99; editable in Admin → Subscriptions, along with the preview's length and limit and an on/off switch).
- Sign-in like ChatGPT's. Email first, then "Enter your password" or "Create a password" (name optional). There's no invite code any more. The admin's address still needs the admin setup code, and the form asks for it only then. The scripts no longer create invite codes.
- Taking payments is one command:
scripts\set-key.ps1 -Stripechecks your Stripe key with Stripe before saving it, creates the webhook in your Stripe account and saves its signing secret. - A home page in the style of ChatGPT and Claude. A warm greeting set in a serif with the Hydra mark, and the message box right under it, centred as one block (phones keep the box at the bottom). The idea prompts moved out of the middle of the page into an "Ideas" list in the sidebar, with an icon for each and Build, Image or Video marked; picking one starts a fresh chat with it in the box, and the list can be folded away. Under the box: a line saying answers can be wrong, and the legal links. The guide no longer opens by itself, the line about Nova and Fusion is gone, and Log in / Sign up are in the top bar.
Fixes found in a full review (each with a test unless noted):
- Security
- The server's code runner now runs code in a fully separate engine with hard limits on memory, time and stack.
- OpenAPI import and the connector test refuse requests from other websites, have a lower hourly limit for visitors, and never echo a fetched page's text.
- Publishing with the site's Netlify token counts as a paid operation.
- A saved custom-server key never follows a changed address.
- Per-account limits on password change and account deletion.
- Admin search uses the email index.
- Spending checks fail closed when the ledger can't be read.
- Money
- Prices checked against the providers' pages (October 2026). o1, o1-pro, o3/o4-mini, GPT-5 Pro, GPT-4/Turbo, GPT-5.4 and others no longer fall back to a cheaper sibling's price, and long-context rates for Gemini Pro and Grok are counted.
- Web searches by OpenAI, xAI, Perplexity and Gemini are now counted at their published per-search prices (only Claude's were before).
- Tool rounds top up their reservation after the tools ran, including the closing round.
- A run stopped while its tools were working is no longer charged for a round it never sent.
- Fusion's dispute check and Deep's review are fully reserved, and the cost preview matches.
- The answer check reserves for the verifier that actually runs.
- Brand Studio reserves and settles like everything else.
- The cost preview counts agent and project instructions and files, and follows Smart's keyword rules.
- Your chats
- Two tabs no longer lose each other's chats. An old tab used to overwrite a newer tab's chats when it saved; now each tab picks up the others' changes, and a deleted chat stays deleted.
- Stopping a Retry can no longer wipe a message sent after it.
- "Forget my ratings" also clears earlier answer versions and syncs.
- Projects and agents edited offline are re-sent, and saved before sign-out.
- Signing out no longer re-uploads chats deleted on another device, and "Sign out everywhere" and deleting an account no longer show false sync warnings.
- Per-account panels reset on sign-out.
- Memories added while Settings is open aren't lost.
- Temporary chats stay temporary.
- Long chats are condensed to fit the window of the model that reads them.
- Answers and files
- Maths markup is never applied inside code.
- Remote images in answers load only when you click them (no tracking pixels).
- A part of the page that fails to load after an update offers a reload instead of crashing the app.
- JavaScript written as a module runs, and output printed later by a timer is shown.
- Canvas keeps your own code fence and can't be edited mid-rewrite.
- Charts show small numbers properly and fill area gaps correctly. Tables sort version numbers and IP addresses as text.
- Quizzes and flashcards keep keyboard focus. The calculator rounds halves correctly.
- Excel durations ([h]:mm) are read as durations, not dates.
- Word files with text boxes or tables inside tables read correctly.
- PowerPoint tables built from uneven Markdown rows open without a repair prompt.
- Scheduled tasks and connectors
- A task never runs twice at once (a scheduled run and a "Run now").
- A storage error no longer counts as "claimed".
- Two requests refreshing one connector's sign-in can't burn its rotated token or store an older one.
- Site and scripts
- www.hydraai.co.uk is the site's address. The old .netlify.app address shows a notice with how to take local chats along, isn't indexed, and refuses connector sign-ins with a clear message. A 301 redirect is ready in netlify.toml, switched off.
- The model and mode menus stay inside the window; the model menu used to push the whole app sideways.
- Brand Studio is shown to admins only.
- The deploy script keeps a custom-domain APP_URL, and its smoke-test command can be pasted as printed.
- The smoke checks follow a redirecting address first, stop cleanly when the site is unreachable, understand the free preview, and no longer create a probe account.
- The benchmark passes on its exit code.
- Not changed: Gemini 2.5's thinking setting (Google's docs list it for 2.5; no bug). The page's script security policy stays permissive because built-site previews need it; tightening it needs previews on their own address first (planned).
Interactive (v45)
A review of what ChatGPT, Claude, Gemini, Grok and Perplexity shipped between June and October 2026, and the features Hydra was missing that can run on this site. Sources: ChatGPT release notes and the 7 October "Intelligent UI" launch (MacRumors, TechCrunch), Anthropic's Claude updates, Google's September AI roundup and Gemini release notes, Perplexity's release notes, and a Grok feature guide. No comparison of answer quality has been measured — the live site still has no working AI key.
Interactive answers (ChatGPT's GPT-6 "Intelligent UI", Claude's inline charts, Gemini's study tools). When it genuinely helps, an answer now comes with a native, interactive view instead of only text:
- Charts — bar, line, area, donut and scatter. Hover over them, or move along them with the arrow keys (screen readers hear each value). Click a legend entry to hide that series, switch between bars and lines, show the data as a table, or download it as CSV. The colours come from a categorical palette validated for colour-blind readers in both themes; colour is never the only signal (there's always a legend and a table view).
- Sortable tables with a filter for longer ones.
- Calculators: inputs (numbers, sliders, menus, switches) and results that update as you type, for things like a bill splitter, a recipe scaler or a mortgage. Formulas run in a small evaluator that only knows arithmetic, comparisons and maths functions, so model-written code is never executed.
- Quizzes with explanations and a score; flashcards with flip, shuffle and "got it / again".
- Checklists that remember your ticks; timelines; stat tiles (green or red only when the answer says a change is good or bad).
- Choices: buttons for how to continue — your pick is sent as your next message.
Views appear as soon as their data is complete while the answer streams. A broken view says what's wrong, shows its source, and the rest of the answer is unaffected. Exports (Word, PDF, Markdown) turn every view into readable text — a chart becomes its data table, a quiz its questions and answers — and read-aloud says there's a view in the chat. Settings → Usage → "Interactive answers" turns them off. Voice turns and side questions never use them. Their instructions are counted in the cost estimate and the budget hold.
Branch into a new chat (Claude "Fork", Perplexity forking): under any message, continue from that point in a new chat; the original is untouched.
Side question — /btw (Claude /btw, Perplexity Side Chat): ask about the open chat in a small panel without adding anything to it. It uses one model, is marked temporary (no server copy, no memory written), shows its cost, and "Add to chat" keeps it after all.
Outline (ChatGPT's table of contents): longer chats get a list of every question you asked; picking one jumps to it and moves keyboard focus there.
Search inside chats (ChatGPT unified search, Perplexity Cmd+K): a match inside a chat now shows where it matched, with the word highlighted, and opens the chat at that message.
Long pastes become attachments (ChatGPT): pasting more than 12 000 characters adds a text attachment instead of flooding the message box; "Paste as text" undoes it.
Recordings → transcript (ChatGPT, 6 October): attach an MP3, M4A, WAV, WebM, OGG or FLAC file (up to 3.5 MB) and it is transcribed with OpenAI's speech-to-text model. The transcript is attached for any model to read. On the site's key it needs an account. The budget hold assumes the slowest common bitrate; the charge then uses the duration OpenAI reports ($0.006 a minute). Admin's "Speech" switch covers it.
Shareable agents (Gemini Skills, Claude plugins, Perplexity's skills marketplace): export an agent as a .hydra-agent.json file and import someone else's from New agent. An imported file is checked and bounded (only text knowledge files, https avatars, known providers), and nothing is created until you've seen it and pressed Create.
Also: the guide explains all of the above. Every accessibility check now finishes running animations before measuring colours (fixing the flaky check seen in v44's first clean install). The editing bar wording matches how versions work.
Not built, and why:
- Realtime voice you can talk over (Gemini Live, ChatGPT's GPT-Live): its usage can't yet be capped safely on the site's key.
- Browser and computer agents (ChatGPT Work, Perplexity Computer, Grok Bot): need a hosted browser that Netlify functions can't provide.
- Music generation, shopping carts, health and finance: no provider for these on the site.
Tests. New: ui-widgets (every view by mouse and keyboard, a checklist kept across a reload, a choice sent as the next message, light theme and phone width, a broken view, the export, the setting), ui-flow (branch, outline, search jump, long paste, side question, a recording transcribed, agent export and import), api-features (the views' instructions on, off and in voice, their cost in the estimate, transcription charges and refusals), a locked-site test that guests can't transcribe on the site's key, and unit tests for the formula evaluator (including code it must refuse to run), the view checker, and agent files. Totals: API 115 (was 112), browser 103 (was 91), security 40 (was 39), bad-key 2, fresh-site 2 — 262 — plus 41 grader tests. Of three full runs on the final code, two were green and one hit a timing flaw in a new test (fixed); a clean install of the ZIP then passed everything.
Kept (v44)
Nothing you make is lost any more — not by Retry + Stop, signing in or out, deleting, or closing a tab — the site's AI key can't silently be wrong, and budgets count what is really sent. Two independent reviewers read the app and the server end to end; every finding was fixed, and most fixes are covered by 21 new tests (the few that aren't are named in docs/FEATURE-STATUS.md). No comparison with ChatGPT or Claude has been measured: that needs a working key on the live site (scripts\benchmark.ps1).
The site's AI key. The live site's ANTHROPIC_API_KEY holds the text of a PowerShell command (pasted by mistake), so every Claude call failed with "invalid key" and the app only said "choose a model". Now:
- A key with spaces in it is never sent anywhere: that provider counts as not connected.
- The owner sees exactly what is wrong — "ANTHROPIC_API_KEY on this site isn't an API key (it has spaces in it — it looks like a pasted command or sentence)", or "OpenAI (GPT) refused the site's key (OPENAI_API_KEY): Incorrect API key provided…" — with the command that fixes it. Members only learn that the site's models aren't working and that their own key works meanwhile; a chat that reaches a refused key says the same in plain words. Configuration details are never shown to members, and the bad value is never echoed.
scripts\set-key.ps1(new) replaces a site key safely: asks which provider, takes the key without showing it, refuses anything with spaces, warns about the wrong prefix, tests it with the provider before saving (a refused key is not saved — you get the provider's reason), saves it on Netlify, redeploys and runs the smoke test. The key never appears on screen, in a file or in your history.deploy.ps1no longer sends a*_API_KEYvalue with spaces from.env;smoke.ps1lists the site's AI providers, counts warnings, and (signed in) reports a key the site can't use.
Claude prices (October 2026). Opus 5.5 $4 / $20, Sonnet 5.x $2 / $10, Haiku 5.5 $0.10 / $0.50 (over 100k input tokens: $0.50 / $2.50), Fable / Mythos 5.x $10 / $50 per million tokens, with the older models at their own rates — used for cost lines, reservations and the Usage tile. The long-prompt rate applies per request.
Nothing lost (app review: 12 findings)
- Retry, then Stop before the first word deleted the answer being replaced and everything after it (they lived only inside the new, empty version). The previous answer — the version you were looking at — now comes back with its conversation.
- Signing in uploaded this browser's whole guest settings over the account's: the account's memories and blocked providers were wiped and memory switched back on, and guest keys were deleted without being moved when the account already had keys. Signing in now only adds what the account lacks — keys for providers it has no key for (a custom server or Higgsfield moves as a pair), new connections and connectors, new memories, extra provider blocks — and never touches the account's memory switch or profile. The toast says what was added and which of the account's own keys were kept.
- Signing out removed every account chat from the device, including changes that hadn't reached the account (a failed upload, a tab closed within the upload delay, changes made after the sign-in expired, a chat too big to sync). Sign-out now first sends every chat the account has an older copy of; if that fails it says so and asks — Cancel keeps you signed in with everything. The next sign-in also re-uploads any local copy that is newer than the account's.
- Renames, pins, archiving, ratings, fact-checks and version switches didn't count as changes for sync, so other devices kept the old title — and could undo the rename. Each now marks the chat as changed (without moving it in the sidebar), and the server's chat list carries that mark.
- A deleted chat came back if the tab closed during the Undo offer (the account delete only ran afterwards). Deletes now wait on the device until the account confirms them: they are sent as the page closes and retried on the next visit, and a waiting delete is never brought back by sync. Project and agent deletes that fail offline work the same way.
- One chat that couldn't be downloaded stopped the whole sign-in merge (no account chats on a new device, nothing uploaded). Each chat is fetched on its own now (four at a time); a failure skips only that chat.
- The multi-provider privacy notice was only asked on Send: Retry, "Retry with… Combined", Approve and Continue on a Combined answer sent to several providers without it, and a failed cost check skipped it. Every way of starting such an answer asks now; when the panel can't be checked, the notice still shows, naming every provider the answer could reach ("up to N providers").
- Canvas rewrites that hit the model's output limit replaced the document with the part that arrived, silently dropping the rest. A cut-off or failed rewrite now changes nothing and says why.
- Share links included data analysis's automatic "Output of your code" turns (rows printed from your file), shown as if you had written them. They are left out (by the app and by the server).
- A data-analysis step that finished late could end a newer answer's "answering" state (its Stop button disappeared mid-stream).
- Export → import lost which turns were automatic analysis output, Compare answers' mode, and decided Approve / Decline records. They are kept now; a still-pending approval is not imported (its id came from the file and need not match the action the card shows).
- Smaller: the Retry-with menu returns focus to its button; an edit in progress is cancelled (and the box cleared) when you open another chat; Esc only stops the answer in the chat you are looking at; "Delete everything on this device" also forgets "don't ask again" privacy choices; the editing bar no longer says the edit replaces everything after it (it makes a new version).
Budgets and the data guard (server review: 11 findings)
- Reservations count the prompt as it is sent. File and attachment names were unbounded and uncounted (a guest could reserve $0.05 for a $1.80 request), empty files still added their wrapper, every PDF counted as a few pages, and a custom system prompt grew when
{date}was filled in. Names are now one line, at most 120 characters, without quotes or brackets; wrappers are counted; a PDF is sized by its bytes (≈ 1 token per 10 bytes, 3 000–200 000 tokens); images ≈ 1 600 tokens; the system prompt is counted after its placeholders are filled. The app's cost preview uses the same rule. - Deep Think and Best reserved the input once but send it twice (the revision re-sends the whole prompt plus the draft) and the review reads up to ~50 000 characters on its own: both are reserved and shown in the estimate now.
- A run cut off after a tool round (deadline, Stop, disconnect) recorded only that round's output text; the next round's input — sent and billed — was lost. It is recorded now (the last round's input and output plus the tool results).
- Claude's usage is read as cumulative: the final input count includes search results added during the turn, and output isn't counted twice. Gemini's grounding tokens (
toolUsePromptTokenCount) are counted as input. - Spend writes that lost every compare-and-set attempt under heavy load were dropped silently; recording spend now retries much longer with back-off and logs anything it still can't write.
- The data-exfiltration guard: a memory planted through
rememberwith</memory>in it could make an attacker's host look as if you had named it, sofetch_urlsent your data there without asking. Text inside the prompt's own blocks (memories, knowledge files, instructions, profile) can't open or close those blocks any more. A custom agent's knowledge files and your profile now count as private data. Redirects to another site are held to the same rule as the address itself (an open redirect on a site you named could forward your data anywhere), and URLs nested inside a connector tool's arguments are checked too. - Own keys go to the vendor. A key typed in Settings was sent to the site's own
<PROVIDER>_BASE_URLoverride; if that override is a proxy that adds the site's credentials, a made-up key meant unmetered use of the site's account. A user's key now goes to the vendor itself (OWN_KEYS_FOLLOW_BASE_URL=1restores the old behaviour for a proxy that forwards each caller's key). - Model ranking: special-purpose models (computer use, speech, images, embeddings, live audio) are never a chat pick — Smart's quick-question rule had chosen
gemini-2.5-computer-use-preview— and two-digit minor versions sort as newer (GPT-5.10 above 5.9). - (The reviewer's finding that reservations ignored the long-prompt rate was already fixed with the new Claude prices above.)
Tests. New: a bad-key suite (a test site set up exactly like the live one — a pasted command as the Anthropic key, a refused OpenAI key — checked through the API and in the browser as owner and member), ui-sync (Retry + Stop, Retry with Combined and a failed panel check, the sign-in merge with settings, renames and a waiting delete, sign-out with an unsaved change, delete-and-close, edit and Esc across chats), api-hardening (the reservation, the guard, cut-off accounting, cumulative usage, Deep Think's second pass, own-key routing, model tiers) and unit tests for the sync rules, versions and import. Six of them were also run with their fix removed and failed as they should (the malformed-key guard, Retry + Stop, the privacy notice on Retry, Esc in another chat, the planted memory, the redirect). Totals: API 112 (was 103), browser 91 (was 81), security 39, bad-key 2 (new suite), fresh-site 2 — 246 — plus 41 grader tests; every suite passed in three consecutive full runs.
Voices (v43)
Closing the gaps where ChatGPT and Claude were ahead in daily use, and fixing three bugs that cost real answers or real appointments. (No comparison with those apps has been measured: the live site has no AI key yet.)
Answer versions and branches. Retry, Retry with another model and Edit used to delete the old answer — and, after a confirmation prompt, everything that followed it. Now the old turn is kept as a version: ‹ 1 / 3 › under the answer (or the question) switches between versions, each arrow naming the model that wrote the version it leads to, and the conversation that followed each version comes back with it. Compare next to the counter lays every version of an answer out in columns — ask once, retry with Claude, GPT and Gemini, and read them side by side; "Show this one" continues from the one you prefer. Only the branch on screen is ever sent to a model, shared or exported as a document; the full tree is saved, synced, included in Hydra's export file and restored by its import. Usage totals and Smart's ratings count every version (an answer you moved away from still cost money and still says what you thought of it). Up to 10 versions per turn; hidden versions' large attachments and charts are dropped from this device's storage first when it fills up.
Voice conversation. With the message box empty, the round button next to it starts a hands-free conversation (Send takes its place as soon as you type). Speak; the answer is read aloud sentence by sentence while it is still being written — in the site's natural voice when it has an OpenAI key (the next sentence fetched while one plays), the browser's voice otherwise — then it listens again. Tap the circle (or Interrupt) to stop it mid-sentence; after about a minute of silence the microphone pauses. Voice turns use Smart (or the single model you picked) and tell the model it will be heard: short spoken sentences, no Markdown, tables, links or code read aloud, numbers said the way people say them. Every turn is an ordinary message in the chat. Needs a browser with speech recognition (Chrome, Edge, Safari); elsewhere the button isn't shown.
Fixes
- Scheduled tasks no longer drift an hour at the clock change. Tasks stored a fixed UTC offset, so a daily 08:00 task in London would have run at 07:00 from 25 October. They now store the time zone (Europe/London…) and every run is computed in it, including the hour that doesn't exist in spring (01:00 → 02:00 BST) and the one that happens twice in autumn. Tasks saved the old way are moved to your time zone the next time you open Scheduled tasks (when your browser is on the offset they were saved with); any left over say how to fix them. Task rows name the model ("Smart", "GPT-5.4") instead of a raw id.
- Claude's answers no longer stop half-way through a long web search. Anthropic pauses a turn that searches for a long time (
pause_turn); Hydra treated that as the end of the answer. It now sends the paused turn back so Claude carries on (up to four times, each metered). The search queries Claude wrote while streaming were also being collected asundefined{…}; they are now kept exactly. - Tab strips work with the keyboard: arrow keys, Home and End move between the tabs of Settings, the guide, Admin, sign-in and the composer's Chat / Research / Build tabs, and Tab enters and leaves each strip in one step.
- The guide explains versions, voice and the keyboard shortcuts.
Fixes from an independent review of this release (a separate reviewer read the new code; 13 findings, all addressed)
- Damaged or hand-edited version data in a saved or synced chat could crash the app at start-up: every version is now shape-checked before use, and anything malformed is ignored.
- At the 10-version limit, retrying while looking at the oldest version deleted that version and its follow-ups: the oldest *other* version is dropped now.
- Voice turns could run "Best" (a second model reviews and rewrites the answer) without the multi-provider privacy notice, and the rewrite confused the speech. Voice turns are single-model now — no "Best" review, no extended thinking, no automatic data-analysis rounds — and a rewritten answer is read afresh from its start.
- Natural voice was charged a full answer's price ($0.06) for every sentence, and the 40-an-hour limit cut it off after a few turns. Speech is charged by length now (≈ $0.015 per 1 000 characters), short requests have their own allowance, and voice mode sends a few sentences per request.
- A browser time zone the server didn't recognise made every task save fail: the zone is now dropped instead (the task keeps its UTC offset), and re-saving a task that is already due no longer skips today's run.
- Voice stopped reading at a bracket ("the interval [0, 1)…") and skipped an unclosed code block at the end; finished answers are read to the end.
- Switching versions with the keyboard dropped focus to the page, and "Show this one" closed the comparison: messages keep their place across versions now.
- The sign-in tabs could be skipped by Tab on the reset-code form, and the composer tabs when no tab was selected.
- Claude's own web searches (about $0.01 each) were never counted on the site's keys: they are added to each answer's cost and the allowance now. After four pauses in a row a Claude answer stops with a Continue offer instead of ending silently, and paused text goes back without trailing whitespace (which the API refuses).
- Share links upload only the branch on screen, with attachment names but not their contents.