What's New
Stay up to date with the latest features, improvements, and fixes.
Readable in both themes, and reachable by keyboard
An accessibility pass measured against the pages the site actually serves, rather than the code that produces them. Every finding here was invisible in the source.
- FixedError messages were unreadable in dark mode. Form validation text sat at 1.84:1 against the background — technically present, effectively invisible. It now meets the 4.5:1 the standard asks for.
- FixedLink and button text in the light theme fell below the contrast minimum. The brand orange is slightly darker so body copy in it is genuinely readable, not just readable-looking.
- FixedForm field borders were nearly invisible in both themes. The edge of an input is what tells you it is an input, so it now has enough contrast to do that job.
- FixedFourteen pages had no main landmark, so "skip to content" had nothing to skip to and screen reader landmark navigation walked past the page body.
- FixedThe roadmap's status columns looked like headings but were not, so nothing navigating by heading could find them. They are real headings now, and the page reads in the order it appears.
- FixedAn arrow link on the blog announced as "link" with no indication of where it went, and two panels on a service page both announced as "complementary" with no way to tell them apart.
- ImprovedContrast is now checked by the test suite. The colour that started this carried a comment claiming it was accessible; it was not, and nothing was measuring.
- ImprovedTightened the browser security policy: removed permissions nothing used, and added the header that isolates this site from any page that opens it.
216 pages that existed but were never announced
Pages can be built, correct and completely undiscoverable. This release closes the gap between what the site serves and what it tells search engines it serves.
- Fixed216 pages were missing from the sitemap, including every buyer-need and project page. They were live and reachable, and nothing pointed at them.
- FixedTranslated pages competed with their own English versions instead of being recognised as translations of each other, so the wrong language often won.
- FixedThe public roadmap described two different products, neither of them this one. It now lists what shipped, what is next, and what is known to be broken.
Five failures that had been failing quietly
Each of these had a graceful fallback, which is exactly why they lasted. Nothing errored, nothing looked broken, and the feature simply did not work.
- FixedEnquiry emails reported success without being delivered. The confirmation now reflects what actually happened rather than what was attempted.
- FixedThe admin audit log recorded nothing at all. Sign-ins and sign-outs are now written to it.
- FixedThe AI key in production was invalid and no page or check said so, because every caller fell back silently.
- FixedProject briefs were being cut off mid-sentence when the model hit its output limit.
- ImprovedThe health check now verifies the things that actually break — a verified sending domain rather than the mere presence of a key — and reports degraded separately from down.
- ImprovedEvery service in the marketplace has an illustration that is about that service.
The site got much faster, and readable in eight languages
Most of the site was being rendered on every request when almost none of it needed to be.
- ImprovedPages are now built ahead of time instead of on demand: 5 prerendered routes became 365, and the homepage went from 25ms to 8.8ms to first byte.
- ImprovedThe marketplace page went from 887KB of HTML to 259KB, and from 3,746 elements to 920 — the difference between a page that stutters on a phone and one that does not.
- FixedEvery documentation link on the docs index led nowhere. The pages had never existed, and the index rendered ten confident cards pointing at them.
- ImprovedThe service catalogue reads in all eight languages rather than falling back to English.
- ImprovedLink previews now show what the page is and what it costs, with the logo, rather than a generic card.
Every service has its own page and a real price
The marketplace stopped being a filtered list and became a set of pages a person or a search engine can actually land on.
- NewEach service has its own page, priced against the live market, with a quote you can request without creating an account.
- FixedSigning in with Google failed with a redirect mismatch. There is now one callback URL per provider, and a test that fails if a second one appears.
- FixedThe GitHub importer hid every repository you collaborate on but do not own, which for most people is most of their work.
Projects, flows, and tasks that know who they are for
The workspace gained the structure the extensions had been assuming was there.
- NewA project switcher, and projects you can import straight from GitHub.
- NewFlows: writing down what has to keep working, so a change that breaks it is caught rather than discovered.
- ImprovedTasks now distinguish what a person is meant to do from what an agent is meant to do, instead of mixing both into one list.
- ImprovedSign-in asks Google for the minimum it will give, and requests anything more only at the moment it is used.