Changelog

What's new

Every improvement and fix we ship, newest first. One line each; the full engineering notes are in the feature catalog.

October 2026

2026-10-04
Pricing, changelog, role pages and comparison pages; Slack bot and actions on by default
New public pages. /pricing (Solo $19, Team $80 billed yearly, your own AI key explained in plain words, a per-question cost estimate with its assumption stated, FAQ), /changelog (built from this page’s changelog…
2026-10-04
Landing: track waitlist modal opens
waitlist_open event — every "Join the waitlist" CTA now fires waitlist_open (GA + dh-track) when the modal opens, so the funnel reads page_view → waitlist_open → waitlist_click → waitlist_join.
2026-10-01
New social share image in the live site theme
link previews (X, LinkedIn, Slack) showed the old violet “company brain that shows its receipts” card.
2026-10-01
Removed the Fazier badge from the landing footers
took the "Launched on Fazier" badge off PersonalityPage.jsx, App.jsx and the crawler footer in landing.html, at the founder's request.
2026-10-01
Admin: promotion tracker and a dashboard that refreshes itself
One registry of everything posted.
2026-10-01
Fix: homepage hero no longer blank for seconds after load
the scroll-reveal treated the hero like any other section: it started at opacity 0 with its fadeUp animations paused until an IntersectionObserver fired, then ran a .7s fade plus a further .1–.2s delayed fadeUp.
2026-10-01
Fix: live homepage hero now shows the company-brain headline
the Sep 30 repositioning only edited the old landing (App.jsx).

September 2026

2026-09-30
Public support page at /support
/support, needed for the Slack Marketplace listing.
2026-09-30
SEO: Dashworks, Glean and Guru alternatives pages
/alternatives/dashworks-alternatives (HubSpot bought Dashworks; product shut down 16 July 2025, sourced), /alternatives/glean-alternatives (self-serve options for small teams) and /alternatives/guru-alternatives.
2026-09-30
MCP get_page no longer crashes on loosely-shaped arguments
Fixed (Sentry ENHANCIAR-BACKEND-15): MCP clients calling get_page without both category and name hit a pydantic ToolError.
2026-09-30
Homepage repositioned as a company brain for every team
Changed: the hero headline, page title, meta description and social (OG/Twitter) tags now lead with “Ask your company anything.
2026-09-30
Fazier launch badge in the footer
a small “Launched on Fazier” badge in the landing footer (both landing variants and the crawler-visible static footer), required for Enhanciar's free Fazier directory listing.
2026-09-29
Alternatives and comparison pages
/alternatives/unblocked-alternatives, /alternatives/swimm-alternatives and /compare/best-tools-to-understand-a-codebase.
2026-09-29
Three more search-intent guides
/guides/understand-legacy-codebase-fast, /guides/git-blame-alternatives and /guides/onboarding-engineers-large-codebase.
2026-09-28
CI’s secret scan had been red on every push since at least 2026-09-24 — three false positives, no real key
The symptom. The secrets job (gitleaks over full history) failed on three historical findings: two generic-api-key hits in scripts/run_retrieval_eval.py and PLAN_GRAPH_MEMORY_IMPL.md (commit 99751f1), and a private-key…
2026-09-28
Google read “enhanciar” as a typo, and the homepage said three different things
The symptom. Searching “enhanciar” on Google returned results for “enhancer”.
2026-09-26
The promotion record was in three places and joined in none of them
New admin page: Promotion.
2026-09-22
Positioning: dropped the team-size framing
“5–50 person engineering teams” removed from /vs/glean.
2026-09-21
Prod deploys were landing on an orphan service; MCP GET streams were burning instance time
Deploy target fixed. The devhive→enhanciar rename (2026-09-20) also changed deploy.yml to deploy main to a new Cloud Run service named enhanciar.
2026-09-17
Ask a teammate
The brain names who can answer.
2026-09-16
A landing page with a personality
The marketing page is rebuilt from a Claude Design file, mechanically.
2026-09-10
The Map grows instead of floating
The force simulation is gone, and the cloud with it.

August 2026

2026-08-30
“Key rejected” about a key that was fine
The error blamed the only part the user had right.
2026-08-30
Five things the redesigned pane still got wrong, one of them a real bug
A saved key and a locked model list, both true, neither explained.
2026-08-30
Models & API, rebuilt from the design instead of from its own history
The pane had grown by accretion and read like it.
2026-08-30
The background model has a name even when no key can reach it
“None is available” was never true.
2026-08-29
Severity was a word inside a message, and a third of the spend was unmetered
Every application log line reached Cloud Run as DEFAULT.
2026-08-29
A page that promised an email it never sent, and a provider tab that really was hardcoded
“Confirmation is on its way to your inbox” — for a message that did not exist.
2026-08-11
Six risks had been written down as “unverified” for a while; reading the code settled all six
Two repos with the same file path — real, and worse than a gap.
2026-08-10
Everything here was debugged against one workspace, and some of it had quietly learned that workspace as the shape of the world
A workspace with two databases could query only one of them.
2026-08-10
I verified the schema block was DELIVERED and never that it contained the answer
The structural-question block shipped hours earlier and was called done.
2026-08-10
The cards arrived; the pictures did not, because the fallback only fired when there were no cards
The log said the pipeline had already won: reason=ok · blocks=1 · image_cols=['images'] · q='show me photos from CustomPopularTreks'.
2026-08-10
Two caps in sequence, and the first one decided what the second was allowed to rank
Expansion kept the first 15 inner keys.
2026-08-10
The log answered in one line what two prompt rewrites had guessed at
cols=['Details', 'price', 'isCustom'] · image_cols=[] — the diagnostic added minutes earlier settled it.
2026-08-10
Prompt wording is not a mechanism — the gallery renders itself now
Two prompt fixes in a row failed to produce a picture.
2026-08-10
“Use ONLY facts from the wiki context” was outranking the rows we had just fetched
The photos question fetched everything it needed and still answered in prose.
2026-08-10
A privacy fix that quietly took the feature with it
“What treks do you have running between November and January” started answering NONE.
2026-08-09
Audited today’s bugs by shape, and two of the shapes had other instances
Deep thinking was silently off for every Claude 5 model — the exact bug found in the Gemini path hours earlier, one provider over.
2026-08-09
A second Firebase project was saved, listed in Settings, and used by nothing
Two repos, two Firebase projects, one reachable.
2026-08-09
“Connected, but carries no projectId” — about a database chat was reading fine
One data shape, two readers, and the second one was wrong.
2026-08-09
“Nothing to sample” was four different failures wearing one sentence
A button whose only failure mode is “nothing came back” is unactionable for the user and unfindable for us.
2026-08-09
Every Slack page was excluded from the contradiction ledger by one word
The scan read chats; the connector pipeline writes conversations.
2026-08-09
“Connect GitHub” under a picker that says “2 connected repos”
Four panes told a user to connect things they had already connected.
2026-08-09
Eight pages cited, two actually read
Asked what happens when a question spans more pages than the context budget holds, the answer turned out to be a citation bug.
2026-08-09
The cap was the wrong fix, and the last blank wait is gone
Capping the row cell would have broken the feature it was meant to protect.
2026-08-09
An architecture question pulled customers’ email addresses, and one document cost $0.24
“Explain how the trek booking flow works end to end” read the Orders collection and printed real customers’ email addresses into the answer.
2026-08-09
The database was read, paid for, and thrown away one line before the prompt
Moving live-data work inside the stream put the await AFTER the prompt was built.
2026-08-09
Streaming was never broken in the code that streams
Every server-side test passed, and the answer still arrived in one lump.
2026-08-09
An answer that cannot do the thing should say what CAN
Asked to change trek dates, the chat refused and stopped.
2026-08-09
Six defects found by using the product, not by reading it
A second repo silently deleted the first repo’s pages.
2026-08-09
While it’s loading, show nothing — never something false
A connector row rendered “Connect” before its status arrived, then flipped to “Connected” a moment later.
2026-08-09
Every namespace artifact now has a durability decision — enforced by a test, not by memory
Three outages this month were one shape: something written under wiki/<ns>/ that nobody added to the durable-mirror allowlist, so it lived exactly as long as the pod.
2026-08-08
A workspace with 85 pages reported itself empty — because one directory existed
The symptom was a vanished “connect Firebase” banner; the cause emptied the whole brain.
2026-08-08
Chat components render the database’s rows, not the model’s memory of them
Ask “good treks for winter” with Firebase connected and the answer can arrive as cards; ask for date-wise trends and it can arrive as a line chart.
2026-08-08
“116 unchanged” now actually means 116 skipped — the incremental gate read the wrong state file
Caught live, watching a README-only auto-ingest re-extract all eight domains.
2026-08-08
The “Other” database card shows its working — files, connection shape, schema
“worker LLM saw database code” told the user nothing they could check — while the Firebase card beside it named package.json, firebase.json and a projectId.
2026-08-08
The last two audit footnotes: key ids stay out of stored evidence, arrow components can’t slip the sweep
A Razorpay key_id rode into a stored evidence quote — by policy, not by accident.
2026-08-08
Every [[wikilink]] now resolves or stops being a link
On a run with 100% file coverage, 54 of 93 wikilinks still dangled.
2026-08-08
Coverage is measured, not trusted — and confidence is earned, not self-graded
The fresh audit showed the bottleneck had moved: the worker could SEE all 66 files and still wrote 40 entities.
2026-08-08
A failed extraction batch is retried, resumable, and never silently permanent
“If I rerun, it picks up the failed ones, right?” The honest answer was no — twice.
2026-08-08
Big domains are chunked across worker calls and stitched — coverage no longer fits in one context
Naming every file is not the same as covering it.
2026-08-08
Truncation stopped being prohibition: every file in a domain now reaches the worker
42% of a real workspace’s files had no wiki page — including its two largest components — and the cause was an 8000-character string cap.
2026-08-08
The verify stage keeps the redaction promise, and an ambiguous basename is refused, never guessed
The ingest banner says a detected credential’s value “was never sent to a model or written to the wiki” — and the verify stage broke both halves.
2026-08-08
The “connect Firebase” banner survives a restart, and pages stopped being confidently wrong
The detected-sources banner lived exactly as long as one pod.
2026-08-08
Empty panes stopped telling an already-ingested workspace to go and ingest something
Impact offered “Ingest a repo” beside 256 analysable files.
2026-08-08
“This workspace has no key” is said before the ingest, not after — and a refusal stopped looking like a crash
The whole failure rendered as [object Object].
2026-08-08
Activity opens on the list of runs, and a run is something you open
It opened straight onto whichever run was newest.
2026-08-08
The Cost page prices calls from the same catalog the model picker uses — instead of a second table of its own
Two price tables, disagreeing.
2026-08-08
A Resume button for failed runs, teammates can watch a run, and the “found in your code” banner stops appearing after a failure
Resuming always worked; nothing offered it.
2026-08-08
Escaping the braces fixed one outage and shipped another — the worker prompt now has none
Same symptom, different engine.
2026-08-08
Search Console’s “Blocked due to unauthorized request (401)” was the sandbox refusing to hand over robots.txt
The property covers every subdomain.
2026-08-07
The Ingest button says whether it will cost anything, before you press it
The reassurance arrived too late to reassure.
2026-08-07
Activity shows the whole team’s runs, and a repo already being ingested is refused instead of ingested twice
Everyone saw only their own runs.
2026-08-07
The branch picker offered “main” for a repository whose default branch is “master”
Picking the only branch on offer failed the clone.
2026-08-07
The Connectors grid and the GitHub pane stopped disagreeing about whether GitHub is connected
Two screens, two answers.
2026-08-07
“Use my own key” for a workspace, and both Install buttons behave the same
An owner with a working key was asked to type it again.
2026-08-07
A GitHub installation can belong to a team — by binding, never by mere membership
Teammates could not see the workspace’s GitHub connection at all.
2026-08-07
The invite email’s “Accept” button now actually accepts
The button labelled “Accept the invite” accepted nothing.
2026-08-07
“Install” stopped silently bouncing you to GitHub, invite mail points at the environment that sent it, and Workspaces got its badge
The one-button install could not tell “nothing to link” from “could not check”.
2026-08-07
Onboarding explains what a workspace is, and lets you make a team on the spot
The switcher offered a choice nobody had been told about.
2026-08-07
A deleted workspace stopped haunting the switcher — and the “Select…” box goes back to saying Personal
The remembered workspace and the real list were never reconciled.
2026-08-07
Ingest picks from the repos you have actually connected, and keeps the paste box for the ones you have not
Your connected repos were the hardest ones to reach.
2026-08-07
One “install” button that reconnects first, and a GitHub rail entry that appears only once GitHub is connected
“install” and “re-sync” asked the user to know something they cannot.
2026-08-06
The feature tour was being suppressed for the account that had never seen it
One browser-wide flag stood in for a per-account fact.
2026-08-06
The dropdown now looks like a dropdown, the key step says what the key buys, and “Other” got its missing icon back
The open menu’s active row drew a square ring inside a rounded panel.
2026-08-06
Eight provider chips became one dropdown, with the real logos and no invented prices
Chips sized to their own labels cannot be a grid.
2026-08-06
Refreshing the browser on the key step skipped onboarding entirely
One flag meant two different things.
2026-08-06
Onboarding showed a new user three paid options and hid every free one
The fourth provider was never mentioned at the moment it matters most.
2026-08-06
The Map painted its empty state and its loading state on top of each other
Two components were both answering “is there anything here”, and during a fetch they answered differently.
2026-08-06
The reset-the-world button can spare a few collections — as a KEEP list, never a delete list
The direction of the list is the whole design.
2026-08-06
Two housekeeping fixes that had no changelog entry, and the rule that caught them
The secret-scan test contained a shape-accurate fake GitHub token, and gitleaks failed the build on it (238b68b).
2026-08-06
The model already notices credentials the scanner misses. We were throwing that away.
This is a report, and it is not the control.
2026-08-06
A key hardcoded in an ordinary file was ingested, sent to a model, and written into the wiki
The guard caught credential files, and the leak was not in one.
2026-08-06
The outbound redactor knew our credentials and not the customer’s
redact.py exists because a private clone URL carries a live GitHub token, and every event, job document and outbound webhook that echoed “the source” was publishing it.
2026-08-06
The verifier was answering a question nobody asked, and calling it a verdict
132 of 502 claims on one real wiki came back “unsupported”, which a reader takes to mean the product made them up.
2026-08-06
Map, Files and Skills were empty after an ingest that worked
Nothing was lost. A team-workspace ingest wrote wiki/ws_…/; three panes read wiki/{uid}/.
2026-08-06
The database suggestion says where it read that, and what pressing the button does
“Detected in your ingested code” named no evidence, so it read like a guess.
2026-08-06
Re-entering Connectors shows the connectors
Open a connector, go to Chat, come back to Connectors — and you were looking at that connector again, with no memory of having asked for it and a “← All connectors” button as the only clue about…
2026-08-06
An ingest button stays shut while its own run is going
Both buttons on a repo card stayed live while the job they started was still running.
2026-08-06
Starting an ingest takes you to the run
Pressing Ingest code showed a toast ending “Watch it in Ingest → Activity”.
2026-08-06
An ingest printed the token it cloned with
The progress line “📥 Cloning …” printed the job’s source, and for a repo reached through the GitHub App the source is a credential.
2026-08-05
A push keeps a repo current; it never reads one for the first time
A push into any repo the App could see used to trigger a full first-time ingest.
2026-08-05
The two buttons on a repo card say what they read, where it lands, and what it costs
“+ Code” and “+ Issues + PRs” told you almost nothing.
2026-08-05
The dropdown menu escapes the box it was drawn in
Reported on the GitHub pane’s branch picker, but none of it was that pane’s fault.
2026-08-05
Native <select> retired, pane by pane
Twenty browser-default dropdowns were left in the app.
2026-08-05
The custom dropdown can be used without a mouse, and gets out of the way on a phone
A native <select> gives you Up/Down, Enter, Escape, Home/End and type-a-letter-to-jump for free.
2026-08-05
Each repo picks the branch that re-ingests it
Auto-sync was hardcoded to the repo’s default branch.
2026-08-05
A push re-ingests the workspace you installed from, not your personal brain
Every push-triggered re-ingest went to the installer’s personal brain.
2026-08-05
The GitHub install page said “read-only”; GitHub’s said “read and write”
The connector page claimed the App never writes.
2026-08-05
MCP can reach a team brain, because the key says which one
The MCP server had no workspace concept at all.
2026-08-05
The Cost per-member table says who, not 0wsEOjKLzhRT4VhKdK2Uf5a3KFR2
The member column was a raw Firebase uid.
2026-08-05
A brain with nothing in it now says so, instead of claiming it searched
“I couldn’t find anything on that in your brain yet” describes a search that happened.
2026-08-05
Switching workspace now actually switches the app
The panes kept showing the workspace you had just left.
2026-08-02
Ingest › Activity now draws the run the way the design draws it
The run header was a different object.
2026-08-02
Every pane is the same width — and that width is a deliberate departure from the design
Seven panes, seven widths.
2026-08-02
A repo ingested from a team workspace now lands in that team’s brain
This was the last always-personal ingest.
2026-08-02
A team workspace can run on its owner’s key — and never quietly on yours
One key per workspace, supplied by its owner.
2026-08-02
You can now see what a shared workspace costs — before anyone’s key starts paying for it
The meter recorded one identity, and a team has two.
2026-08-02
A credential you connected inside a team workspace was invisible to that team’s ingest
The symptom. With a team workspace active, connect Notion — the form saves, the badge says connected, the Connectors grid says connected — and the ingest fails with “Notion is not connected for this…
2026-08-02
Tidying up a connector’s documents is no longer the same button as disconnecting it
They were one operation, and they should never have been.
2026-08-02
A team workspace is never left without its owner
Deleting your account used to strand every team you owned.
2026-08-02
A file uploaded into a team workspace never reached the brain — and we are the ones who broke it
The symptom. With a team workspace active, uploading a file (or pasting a note, or adding a URL) reported success and queued a job, and the job reported “No documents found in Files & Notes”.
2026-08-02
Three kinds of spend were being recorded where nothing reads — your Cost page will go up
Read this bit first: your figures increase, and nothing got more expensive.
2026-08-02
Both verifiers looked for your API key in a folder instead of in your account
The eleventh bug of one shape, and it broke the two features shipped this morning.
2026-08-02
A React component used without importing it is now a lint error, not a crash
no-undef cannot see JSX element names.
2026-08-02
Lint — the third operation, and the one schedule that runs it
Karpathy’s “LLM Wiki” pattern names three operations: ingest, query, lint.
2026-08-02
Claim verification, part 5: the other half — is the ANSWER supported by the pages it cites?
Ingest checks the wiki; nothing checked the answer.
2026-08-02
A team workspace’s credentials belong to the workspace, not to whoever is looking at them
Any member could overwrite or clear a team’s connector credentials.
2026-08-02
A Test button beside every API key — free, and specific about which of four things went wrong
Saving a key told you nothing.
2026-08-02
The uid/namespace bug is now a test failure instead of a code review
Ten instances of one bug have shipped.
2026-08-02
The token meter now knows who pays, separately from whose wiki it is
Every entry point on the usage meter is uid-scoped, and one write passed a namespace.
2026-08-02
The ERD labelled every relationship N : 1, because both of its 1 : 1 tests read fields that do not exist
The unique-index test read t.indexes, a key the ERD payload has never carried.
2026-08-02
The free half of the verifier was not durable, so a cold pod quietly moved the bill onto your key
Tier 1 reads _ast/*.json and _code_graph/*.json; only the second one survived a restart.
2026-08-02
Claim verification, part 4: the verdict shows up next to the sentence it judges — and the launch docs stop promising more than it does
Three lines in the launch and YC docs claimed a “Reviewer” that did not exist and a guarantee nothing could keep — “verifies every claim against the call graph (no hallucinations)”,…
2026-08-02
Claim verification, part 3: an eighth pipeline stage, and a sidecar that must never read as “clean”
Verify is a real stage now — step 6 of 8.
2026-08-02
Claim verification, part 2: the paid tier, and the four ways a checker can lie
What tier 1 cannot settle now reaches a model — one call per page, not per claim.
2026-08-02
Claim verification, part 1: the AST becomes an oracle, and learns when to say “I cannot check this”
A citation only ever proved a page had been read.
2026-08-02
“…and check every claim” is back on the Ingest headline, because it is now true
It was removed a few entries ago, and that was right at the time.
2026-08-02
Ingest, rebuilt to the design — Activity, and a failed run that reported itself green
the run status pill was hard-coded green for every state.
2026-08-02
Ingest, rebuilt to the design — Feed files
The dropzone says what it does.
2026-08-02
Ingest, rebuilt to the design — Add source
The three source kinds are rows in one card, not three cards.
2026-08-02
Ingest, rebuilt to the design — the shell
One measured column instead of three sub-views each inventing their own.
2026-08-02
The last emoji left the interface — including the ones inside chat messages
A chat message can carry an icon now, because the emoji in them were not decoration — they were part of the text.
2026-08-02
Emoji sweep: Onboarding, DB Graph, Billing, GitHub, Settings, Feed, credentials
The icon table the sidebar already owned grew to cover the rest of the app.
2026-08-02
Four controls on the Ingest form were connected to nothing
A DEPTH select with no state and no handler, and three switches that flipped a variable nobody read.
2026-08-02
Impact’s LOW / MEDIUM / HIGH badge was a threshold dressed as a verdict
The rule was: high above 20 transitive nodes or criticality 70, medium above 5, otherwise low.
2026-08-02
Files fed into a team brain were quietly landing in your personal one
The intake routes were the last three that did not take a workspace header.
2026-08-02
One-click database connect copied personal connection strings into the team brain
It seeded its list from the merged read and then wrote that list back.
2026-08-02
Clearing a connector token in Settings brought the old one back
Every clear was undone by the next read.
2026-08-02
“Webhook delivery healthy” was asserting something nothing had ever checked
The green banner’s condition was “the App is installed and has at least one installation”.
2026-08-02
Chat printed the model’s markdown as literal characters
The answer was rendered into a white-space: pre-wrap div.
2026-08-02
Team workspaces: eight more places where the write went to one document and the read came from another
The previous pass moved connector credentials to the workspace document and fixed one of four readers.
2026-08-02
Settings said every saved key was “Not set”, because the route behind it had been 500ing for every user since the day it shipped
GET /api/account/preferences raised NameError on every single request.
2026-08-02
The activity feed stopped labelling itself with emoji
Every event marker in the ingest feed is a drawn glyph.
2026-08-02
Workforce stops drawing a frame inside the window’s frame
The rail and the detail are full-bleed in the pane.
2026-08-02
Three panes finish the design’s smaller list: Skills, Map, ERD
Skills cards say what kind of skill they are and how long the procedure is.
2026-08-02
Workspaces: the invite field was behind the button you had to find first
Inviting is why you open a team card, and it was a click away.
2026-08-02
The shell: rail width, selected states, and a wordmark that stopped competing with its own logo
The sidebar is 206px (was 212), and the selected item’s icon now carries the design’s duotone fill — rgba(28,82,93,0.20) inside the drawn stroke — so the active row reads as filled rather than…
2026-08-02
Attach in the chat composer, and a wider reading column
Attach feeds the file into the brain — the same multipart POST, the same ingest job and the same per-file status the Feed-files pane runs, now shared in one module so the two surfaces cannot accept different files…
2026-08-02
The sidebar icons were drawn a third heavier than the rest of the app
One number, everywhere it was wrong.
2026-08-02
The pipeline preview listed five stages, two of which do not exist
The idle Ingest card promised Scout, Workers, Integrator, Graph, Verify.
2026-08-02
The waiting placeholder said “thinking…” even with Thinking switched off
It is a word collision, not a broken toggle.
2026-08-02
The web chat never learned that “hi” is not a question
Slack has short-circuited greetings since it shipped; the web chat did not.
2026-08-01
Three small things that were in the wrong place, or nowhere
The Tables filter was across the pane from the list it filters.
2026-08-01
The ingest percentage now admits it is an estimate
The progress figure was presented as a measurement.
2026-08-01
Chat’s sources were a separate object below the answer
Citations rendered as a panel stapled under the answer card — its own border, its own background, bottom corners rounded to fake continuity.
2026-08-01
Four more panes stopped saying “Loading…” and nothing else
Actions, Code Reviews and Impact each rendered a bare grey “Loading…” while they fetched, and their own one-line empty hints when they came back with nothing.
2026-08-01
An action card now says what kind of finding it is
Every card led with the tracker chip — Jira, Linear, GitHub — in the same accent violet, so in a queue of twenty a contradiction and a missing document looked identical and you had to open each one to find…
2026-08-01
The activity feed ran backwards, and the pipeline strip was the narrowest thing on screen
Events rendered newest-first and never scrolled.
2026-08-01
The Wiki’s table of contents was decorative
Every entry was an <a> with no href and no click handler.
2026-08-01
Two “blocked” design elements had cheaper, honester answers
The design wanted a RISK badge on each dependency path.
2026-08-01
“Stage 3 of 7” — counted, not claimed
Stage information existed only as prose, and the prose had drifted.
2026-08-01
Pick which tables (or pages, or tickets) to ingest
A connector ingest was all-or-nothing.
2026-08-01
Five fields the design needed and the backend never sent
A live wiki-page count during a run.
2026-08-01
A job whose process died kept reporting progress forever
An ingest was running when a new revision deployed.
2026-08-01
Hovering an event-stream line made it unreadable
The activity feed is the one deliberately dark surface in the app — a #14161a terminal with per-event text colours set inline.
2026-08-01
A connected Database never appeared under “Connected sources”
The Ingest rail listed eight connectors from a hardcoded catalog; Database and Confluence were not in it.
2026-08-01
A saved database connection stops looking like an empty form
Saving the list used to require re-typing every connection string.
2026-08-01
Connector credentials were saved where the connector never looks
Saving wrote users/{uid} unconditionally; every reader resolved by NAMESPACE.
2026-08-01
The Connectors grid answered from memory
It fetched /api/connectors once, on mount, and never again.
2026-08-01
One palette, five real tokens, and DB Graph stops being styled for a dark app
Five CSS variables were used but declared nowhere.
2026-08-01
DB Graph now uses the databases you actually connected
There were two database implementations and they did not talk to each other.
2026-08-01
The chat read like a log file, and the footer sent customers to a build log
Your own turns were indistinguishable from the agent’s.
2026-08-01
The app promised a trial we never grant and a token cap we no longer have
Onboarding announced “Your 14-day free trial is live”.
2026-08-01
User documentation, because this page was never for users
This changelog was the only thing in the site footer a new customer could click hoping to learn how the product works.
2026-08-01
The chat suggests what to do with an answer, instead of always offering a ticket
Every answer carried a “+ Create ticket from this” button, whether or not the answer implied any work.
2026-08-01
“hi” is not a question the brain failed to answer
In Slack it produced “the provided context does not contain information to answer your query” — true, and a terrible first impression, since a greeting is exactly what a new teammate types first.
2026-08-01
The Slack backfill window moved to the button it governs
It applies to the first ingest only — so the one moment it matters is the moment you are about to press Start ingest, and it was sitting on the Connectors page, a screen you visit to manage a connection rather…
2026-08-01
The Slack ingest preview listed raw timestamps instead of threads
“Available to ingest” showed 1785591344.239279.
2026-08-01
A team workspace never sent its id with any connector or ingest call
The symptom: Connectors said Slack was connected and the Ingest page said it was not — the same question answered two ways on two screens.
2026-08-01
The header counter said “254 today” and never said of what
It read 254 / 50,000 today while daily token caps existed.
2026-08-01
The whole app was rendering in the wrong typeface
Every colour already matched the design exactly — accent, all four surfaces, borders, text, radii, shadows, token for token.
2026-08-01
Three surfaces that were shipped switched off
Settings carried two sections wrapped in {false && …} — an email-notifications block whose toggles persisted to Firestore that nothing read (we send no email), and a beta-features list whose flags…
2026-08-01
The Slack panel now says what to type in Slack, and whether you have to keep pressing Ingest
Nothing on the connected panel mentioned @mentions.
2026-08-01
Disconnecting Slack now removes the bot from Slack
Disconnect used to delete our record and tell Slack nothing.
2026-08-01
Design pass wave 2 — Tables, Billing, ERD, Workforce, Ingest
Five panes rebuilt to the revised design, and the rule was “omit rather than invent”.
2026-08-01
The two states nobody designed: empty and loading
Every mockup is full of data.
2026-08-01
Design pass, wave 1 — and a new “Who to ask” card
Impact now answers the question you have next.

July 2026

2026-07-31
Token caps are gone — the paywall is a subscription check, not a budget
Capping tokens protected nobody.
2026-07-31
Security pass: a cross-tenant page read, SSRF guards, and a billable endpoint nobody could reach
GitHub webhooks can no longer be replayed.
2026-07-31
A chatty Slack channel no longer re-ingests the workspace on every message
And now it only pulls what changed.
2026-07-28
One contact address everywhere, because only one mailbox exists
The site published seven addresses; the account has one mailbox.
2026-07-28
Ask the brain in Slack — @mention the bot, get a cited answer in-thread
Almost all of this already existed.
2026-07-27
Adding someone who already has an account told them nothing at all
The gap. An invited address that already has an Enhanciar account skips the invite/token path entirely — the uid resolves, the roster updates, the call returns.
2026-07-27
Team invites: the member cap read the wrong plan, in both directions
The bug. _enforce_member_cap read the owner's stored plan field directly instead of going through billing.effective_plan_id — the one resolver that both honours the sandbox test-plan override and downgrades expired…
2026-07-27
Cost table headers say what the numbers actually are
Renamed, not rebuilt.
2026-07-27
Every emoji-as-icon is gone, connected sources get real brand marks, and Files / GitHub / WhatsApp join the sidebar
Connected sources had no logos.
2026-07-27
The nav and Settings rails get the design comp's icon set — and the emoji come out
Settings was rendering emoji as UI icons.
2026-07-27
Home gets the right-hand rail from the design comp — and three stat tiles that refuse to make numbers up
What shipped. Home is now two columns, per the Claude Design comp (Enhanciar App.dc.html): the activation checklist keeps the left, and a new rail on the right carries Recent sources (drawn from the manifests Home…
2026-07-27
CI now deploys Firebase Hosting too — the half of prod that a green deploy didn't cover
The gap. enhanciar.in is served by Firebase Hosting, not Cloud Run: Hosting serves every static page and the built SPA bundles itself and only forwards a few prefixes (/devhive/**, /enhanciar/api/**, …) to the Cloud Run…
2026-07-26
Removal notices, and invites you can actually see — in both directions
Removal was silent too.
2026-07-26
A security page you can actually read, and a model picker that asks your provider instead of guessing
New /security page. We ask people to connect their codebase, their Slack and sometimes their inbox, and until now the only answer to "what can this thing actually do with my data" was a four-tile band on the landing…
2026-07-26
Freshness phase 2: connector pages go event-stale, staleness gets section-level precision, stale pages can regenerate as a diff you approve — and the Contradiction Ledger arrives
The identity join. Connector pages now carry doc_id + body_sha frontmatter, and a resolver re-links existing pages to their source documents retroactively (URL first, stored ids second, slug reversal third — and it…
2026-07-25
Freshness fast-follow: connector pages join time decay, and re-verify cards become approvable
Connector pages had no freshness signal at all.
2026-07-25
Freshness, part 2: stale pages are ranked lower, marked in the answer, and badged in the UI
Ranking penalty, on both retrieval paths.
2026-07-25
Freshness, part 1: knowledge that knows when it has gone out of date — and the incremental-ingest bug found on the way
Every "incremental" re-ingest was secretly a full one.
2026-07-25
Mobile chat: the clarify session could stick for 24 hours, surviving "New chat"
The bug. MobileChatApp.jsx froze its session_id for the life of the mount (useState(genSessionId)) and the "+ New chat" button only reset the message list, never the id.
2026-07-25
Launch-blocker: every new BYOK key 404'd because the default model was retired
The bug. Verified live with a freshly-created Google AI Studio key: gemini-2.5-flash and gemini-2.5-flash-lite both return HTTP 404 — "This model is no longer available to new users", and gemini-2.5-pro returns 429 (no…
2026-07-25
Chat remembers the thread, the chips became clickable — and an adversarial review of both
Action chips are now a UI, not just a wire event (A3).
2026-07-25
Clarify chat — a miss now comes with a one-click way to fix it
Connect-DB chips on live-data misses.
2026-07-24
Live database answers now work on any LLM provider — and pick the right DB when several are connected
NL→SQL is provider-agnostic.
2026-07-24
Three connector fixes — team-workspace DB suggestions, per-source de-dupe, Slack webhook loop guard
Team workspaces now see detected-DB suggestions.
2026-07-24
Sandbox test-plan switcher — test plan-gated features + quotas without paying
New 🧪 card on Billing (sandbox only).
2026-07-24
Workspaces page redesign — delete a workspace, real member names, one clear list
Delete a team workspace (new).
2026-07-24
Responsive/CSS audit — mobile marketing pages fixed at 375px, desktop hero hardened
The landing hero graphic broke every phone.
2026-07-24
Static site moves to Firebase Hosting (CDN) — kills the ~22s cold start
The problem, measured.
2026-07-22
Performance: 5 Firestore reads → 1, one fewer API call on first paint, no double token verify
The Early Access endpoint read the same Firestore document five times per request.
2026-07-22
Payments visibility + Apple Pay domain verification
A real purchase was invisible in the admin Billing page — two causes.
2026-07-22
Two bugs the first real payment exposed: double-checkout window, and crediting the list price
The pay button came back to life while the payment was still being verified.
2026-07-22
Early Access Pass: ENHANCIAR_EARLY_ACCESS_PRICE_USD test-price override
Charge currency is switchable from the admin panel too — because it decides which payment methods exist.
2026-07-21
Waitlist is now enforced on the backend, not just the SPA; one-branch deploy; cleanup
Backend waitlist gate (closes the frontend-only bypass).
2026-07-21
Landing CTAs are waitlist-aware — the sandbox stops pushing "Join the waitlist"
One build, two behaviours, resolved at runtime.
2026-07-21
Sandbox unlock page no longer leaks /devhive/ in the URL
Enhanciar-only URLs, everywhere the user can see.
2026-07-21
Admin panel: a "Platform keys" page that reads the live Cloud Run secrets
Keep an eye on the keys from the ops panel, not the product.
2026-07-21
Early Access Pass — priority, not instant access; and USD-only billing
The Pass grants priority in the queue, not an instant unlock.
2026-07-20
Graph memory — Phase 5: the retrieval benchmark is published at /enhanciar/benchmarks.html
Numbers nobody outside the repo can check are just adjectives.
2026-07-20
Graph memory — Phase 4: self-improving retrieval (feedback loop + knowledge gaps)
Retrieval never found out whether it was right.
2026-07-20
Graph memory — Phase 3: query auto-routing
Every question used to get the same answer strategy.
2026-07-20
Graph memory — Phase 2: typed relation triples
The graph knew that two things were related; now it knows how.
2026-07-20
Graph memory — Phase 1: retrieval eval harness + recorded baseline
You cannot optimize what you cannot measure.
2026-07-19
Action layer — Phase 8: landing page advertises Actions (sandbox only until go-live)
New "From knowledge to action" section (landing/ActionsSection.jsx): a transcript card morphing into an approval queue with a Jira and a Linear card and one violet Approve CTA.
2026-07-19
Action layer — Phase 7: hardening, MCP tools, runbook
MCP: read + propose, never approve/execute.
2026-07-19
Action layer — Phase 6: Workforce reports file proposed actions
Workforce → queue. When a Workforce agent's run report ends with a "## Proposed actions" (or "## Actions") section, its bullet items are filed into the same approval queue as everything else (source="workforce", linked…
2026-07-19
Action layer: the draft-first executors land (Gmail draft · Notion page · Zendesk internal note)
Gmail draft (gmail.create_draft): creates a draft and never sends — sending stays a deliberate human click in Gmail.
2026-07-19
Action layer — Phase 5: three more executors (GitHub issue · Slack message · Calendar event)
GitHub issue (github.create_issue): new github_app.create_issue resolves the repo's installation token and POSTs the issue; targets() lists your connected repos.
2026-07-19
Action layer — Phase 4: PRD mode (a spec becomes an epic + its stories)
Doc-type sniff during ingest.
2026-07-19
Action layer — Phase 3: the approval UI + a chat "Create ticket from this" button
New Actions tab (frontend/src/components/ActionsPanel.jsx, under Ship).
2026-07-19
Action layer — Phase 2: ingest extracts action items (transcripts/PRDs → review queue)
One more field in the same enrichment call — zero extra LLM cost.
2026-07-19
Action layer — Phase 1: Jira + Linear create-issue executors (approve → real ticket)
Two real executors. enhanciar/actions/jira_actions.py and linear_actions.py are thin ActionExecutor adapters: targets() lists the pickable destinations (Jira projects / Linear teams), render_preview() shows the exact…
2026-07-19
Action layer — Phase 0: proposal queue + executor registry + REST surface (behind the actions flag)
New package enhanciar/actions/.
2026-07-19
Sandbox = full test rig: every feature forced on, quotas + rate limit lifted (prod unchanged)
Per-deployment env, declared in deploy.yml.
2026-07-19
Feature flags: deployment force-override + fail-closed waitlist default (sandbox can open without opening prod)
New precedence tier in feature_flags.is_enabled: ENHANCIAR_FF_FORCE_<FLAG>.
2026-07-19
Sandbox: password-gated preview at sandbox.enhanciar.in
New module enhanciar/sandbox_gate.py + middleware in server.py.
2026-07-19
Internal refactor: modularized LLM helpers and job runners
Extracted the BYOK LLM-completion helpers (_call_llm, _litellm_completion, _gemini_completion, _parse_skill_json) from enhanciar/skills.py into a new enhanciar/llm_call.py; skills.py re-exports them for compatibility.
2026-07-19
Connector-sync bug sweep: six incremental-sync correctness fixes
Sync watermark no longer advances past unlisted documents.
2026-07-19
Removed the demo-data feature entirely
The admin-controlled demo-data mode is gone.
2026-07-19
Three frontend bug fixes: chat stream token loss, mid-stream chat-switch corruption, silent subscription→one-time downgrade
Chat streaming dropped tokens split across network chunks.
2026-07-19
Hybrid vector search — Phase 1 + 2 (index build + query-time fusion), behind a flag default-off
New module enhanciar/vector_index.py.
2026-07-19
Confluence confirmed shipped — status flipped P → S, restored on landing
The prior pass had softened every Confluence mention on the landing page ("shipping soon") because the catalog flagged it status: P.
2026-07-19
Landing page: broadened beyond engineering-only framing
Positioning fix. Hero, Problem, Features and the crawlable SEO snapshot all illustrated the product exclusively with code examples ("blast radius," callers/callees, oauth.py:74), even though the ingestion side already…
2026-07-19
Landing page: competitor-informed copy pass across every section
Accuracy fix — Confluence overstated as live.
2026-07-19
Early Access Pass re-scoped: perks, not a queue-skip
No longer instant/priority access.
2026-07-18
Landing now targets solo developers and teams (not teams only)
Headline de-narrowed — "The affordable team brain that knows why" → "The affordable brain that knows why" (H1 + footer tagline).
2026-07-18
Rebrand: purge every visible "Enhanciar" → "Enhanciar"
Removed the old "Enhanciar" brand name from everywhere it could reach a human: the agent system prompts (scout/worker/integrator/query — the chatbot could have called itself "Enhanciar"), the knowledge doc served to AI…
2026-07-18
Waitlist: stop showing the queue number + mock social-proof popups
Joining no longer surfaces a position number — the modal success, the confirmation email (subject + body), and the in-app "you're on the list" gate all drop the "#N".
2026-07-18
Waitlist modal + paid Early Access Pass
Every "Join the waitlist" CTA now opens a redesigned modal (nav, hero, pricing tiers, CTA band, code-review, demo) instead of an inline form — brand header, one email field, two actions, a highlighted Early Access card,…
2026-07-18
App sealed to the public — invite-only, no sign-in route
Hard "closed" gate. While the waitlist_mode flag is on, every app route (/login, /app, mobile) renders a full-screen "Enhanciar is in early access — join the waitlist" screen before any auth, with no Google sign-in…
2026-07-18
Landing: honest quotes, waitlist funnel analytics, social-proof toast
Fabricated testimonials removed — the three invented customer quotes ("Mira K., Foundry Labs"…) are replaced with real, attributable quotes about the problem (HN on Confluence rot, HN on hallucinating AI wikis,…
2026-07-18
Pre-launch waitlist + invite gate
Waitlist capture on the landing page — hero and bottom-CTA email forms post to the new public POST /api/waitlist (per-IP throttled, idempotent by email).
2026-07-16
Ingest panel remembers itself across tab switches
Switching tabs no longer refetches the Drive listing.
2026-07-16
SEO/GEO overhaul: AI crawlers can finally read the site
Prerendered landing content — the homepage body was an empty React shell without JavaScript, invisible to GPTBot/ClaudeBot/Perplexity/CCBot (and slow for Google's first pass).
2026-07-16
Drive browser: filters get a real loading state
Switching a filter (or typing a search) now clears the stale list instantly and shows a spinner ("Searching your whole Drive…") while the server-side Drive query runs — before, the old rows sat frozen for a second or…
2026-07-15
Drive browser: real filters + honest labels (no more "All · 100")
Server-side filters in the file browser.
2026-07-15
Drive browser: see your real file count, pick exactly what to ingest
Exact count, not "100+".
2026-07-15
Drive ingest: the 100-file cap is gone — pick your pull size
Why you only ever saw ~100 files: the Drive connector's first full ingest carried a hard v1 cap of 100 files ("keeps demos quick") — a real Drive with thousands of files silently truncated.
2026-07-13
Drive ingest v2: confirm before ingesting, pick kinds, and Gemini watches your videos
No more blind ingest.
2026-07-13
Drive ingest keeps your folder structure
Every Drive file now carries its folder path (📁 Projects/Purplle / release.apk) instead of flattening your whole Drive into one anonymous pile.
2026-07-13
Fix: brand mark invisible on gradient chips (chat avatar & co.)
The Enhanciar mark in the chat agent avatar was purple-on-purple — the logo rendered in its default brand purple on the purple gradient chip, leaving a barely-visible smudge.
2026-07-13
Scheduling chips: one combined chip + mixed messages answer both halves
One chip instead of two.
2026-07-13
Chat scheduling: Enter now books the meeting (not a wiki question)
Pressing Enter/Ask while a booking chip is live now opens the booking confirm instead of sending "schedule a meet tomorrow 1pm" to the wiki-grounded Query Agent — which has no calendar tools and could only reply "the…
2026-07-13
Cost dashboard survives deploys + workspace switcher in the top bar
Cost & quota reset to zeros after every deploy.
2026-07-13
Deploys ~3× faster: build in CI with layer cache + uv, ship by image
The container now builds inside GitHub Actions (docker buildx, cache-from/to: type=gha) and Cloud Run deploys the pushed image — replacing gcloud run deploy --source, whose ephemeral Cloud Build workers reinstalled npm…
2026-07-13
Fix: Chat tab crashed ("l is not a function") after a Chrome update
Newer Chrome makes scrollIntoView() return a Promise (scroll-completion spec).
2026-07-13
Ingest preview: a peek, not a dump — plus Drive type filters
The "Available to ingest" list now shows the first 8 items with a "+ N more — Start ingest pulls all of them" footer, instead of scrolling 100 rows of your inbox at you.
2026-07-12
Ingest rail now shows Gmail + Google Drive
Connected Google sources appear under "Connected sources" on the Ingest page.
2026-07-12
Cloud Run bill ≈₹150/day → ~₹0: request-based billing + Cloud Tasks ingest
Root cause: since Jun 28 the prod service ran with --no-cpu-throttling (2 always-on vCPUs billed whenever an instance is awake) — added so background in-process ingests wouldn't stall.
2026-07-10
Chat: instant sidebar thread + typed-in smart titles
New threads appear in the sidebar the instant you hit send — optimistically, using your first line as a provisional title — instead of only showing up after the answer finished and saved.
2026-07-10
OAuth redirects now live on /enhanciar/ in production + final branding cleanup
Google + Slack OAuth now round-trip on /enhanciar/ in prod.
2026-07-10
Google connect is now bring-your-own-client only (no silent shared fallback)
A workspace must add its own Google OAuth client before connecting.
2026-07-10
Branded URLs: /devhive/ → /enhanciar/ everywhere users see them
User-facing URLs now say /enhanciar/.
2026-07-10
Google setup Step 4: paste all scopes at once
One paste instead of five hunts.
2026-07-10
Calendar connector: dropped the ingest UI — it's live-only now
Google Calendar no longer shows an "Ingest" option.
2026-07-10
Ask your calendar in chat — live, never stale
Chat answers calendar questions in real time.
2026-07-10
Faster app load: code-split the tab panels (−62% initial JS)
The app paints far faster now.
2026-07-10
Meeting scheduler in chat: teammate availability + one-click booking
The scheduling chip now books.
2026-07-09
Lite-model background tasks: smart chat titles + real-time scheduling detection
Two fast/cheap models added to the picker: Anthropic Claude Haiku 4.5 (BYOK) and Ollama Cloud · gpt-oss 20B (free) — the missing lite tiers for those providers.
2026-07-09
Team workspaces, part 2: teammate invites + several people's Google accounts
Invite teammates by email.
2026-07-09
Team workspaces, part 1: per-source privacy + shared-brain ingest
Email is private; calendar and everything else is shared.
2026-07-09
Google Calendar connector — meetings & events in the brain
New Google Calendar connector (gcal).
2026-07-08
Gmail/Drive: working "Ingest →", day/count filters, collapsing setup
"Ingest →" now actually starts the sync.
2026-07-08
Gmail/Drive "what will be ingested" preview + copy audit (wave 3)
See exactly what the first sync will pull, before you run it.
2026-07-08
Copy audit — jargon, contradictions, ghost buttons & stale setup guides (waves 1–2)
Ghost buttons fixed. The "one more step" callout after connecting Notion/Slack told users to "hit Refresh, then ⚡ Ingest now" — neither button exists; the real one is Ingest →.
2026-07-08
Google connectors — reconnect handling + Internal-first setup guide
Expired Google tokens now prompt a clean reconnect instead of failing silently.
2026-07-07
New — image & video capture (vision AI)
Upload an image or short video → the brain reads it.
2026-07-07
New connector — Confluence
Confluence Cloud pages.
2026-07-07
Audit follow-ups — Drive extraction, error states, dead-code removal
Google Drive now extracts PDF & Word content instead of storing placeholders.
2026-07-06
Pre-launch audit fixes — paywall & revenue integrity
Landing/Settings subscribers were paying but staying paywalled.
2026-07-06
Connector polish: no more sample data + user-facing copy
WhatsApp no longer leaks sample data in prod.
2026-07-06
CRITICAL: paywall was inert — `unlimited_quota` defaulted ON
The paid product was effectively free.
2026-07-06
Launch-readiness: subscription sync-verify + payment-flow fixes
Subscriptions now activate synchronously (no more "paid but paywalled").
2026-07-06
Security hardening batch (from the review)
F2 · connector secrets encrypted at rest.
2026-07-06
Security: close paywall bypass on /api/overview/regenerate
A security review found that POST /api/overview/regenerate was gated only by current_uid, not enforce_token_cap — so a free/over-cap user could run LLM overview synthesis for free (unmetered), and with provider=google +…
2026-07-06
Durable per-user LLM usage (admin cost visibility)
Usage now mirrored to Firestore.
2026-07-06
No free tier: value actions gated behind a paid subscription
Trial disabled → hard paywall.
2026-07-06
Removed the free tier from billing + removed demo data from Connectors
No free tier. The billing overview no longer shows the ₹0 “Free/forever” plan anywhere.
2026-07-06
Gmail + Google Drive connectors, live again — via your own OAuth client (no CASA)
Un-hid Gmail/Drive (previously hidden behind Google's restricted-scope CASA audit).
2026-07-06
Billing tab redesigned into a proper overview (+ clear upgrade path)
Fixed the "weird" billing page.
2026-07-06
Daily connector auto-refresh (opt-in, incremental)
Opt-in daily sync. New per-workspace Daily auto-refresh toggle in Settings (default OFF).
2026-07-06
Retrieval: entity router index, entity-scored search, abstention + recency (no embeddings)
Robust entities in the router index.
2026-07-06
Onboarding email: removed false “14-day trial” + hidden connectors
The welcome email claimed a “14-day free trial … no card needed” in 4 places — Enhanciar has no trial (it's a paid BYOK product; the landing copy was already fixed, the email was missed).
2026-07-06
Correction: connector ingest DOES use the LLM · router index for connector docs
Fixed wrong copy. An earlier note claimed connector ingest was “raw, no LLM, no cost.” That was wrong — the generic pipeline runs a compulsory per-document enrichment pass (summary · key points · entities) by default…
2026-07-06
Connectors ingest from the Ingest tab (source panel + Manage-connection link)
Ingest connectors like GitHub/Website.
2026-07-06
Connector page: progressive disclosure, page previews, direct deep-links
Key box collapses once connected.
2026-07-06
Prominent “share your pages with the integration” callout (the #1 Notion gotcha)
Saving a Notion token isn’t enough — Notion only exposes pages you explicitly connect to the integration (••• → Connections → Enhanciar).
2026-07-06
Connector page: prominent “Ingest now” + “Remove connection” (deletes its data)
Ingest is now the obvious action.
2026-07-06
Hidden Gmail + Google Drive connectors (pending Google verification)
Gmail and Drive use restricted Google scopes (gmail.readonly, drive.readonly) that can’t be opened to the public until a full Google verification + CASA security audit clears.
2026-07-06
OAuth connectors: “Connect” actually starts sign-in; no operator button
Gmail / Drive / Slack “Connect” now works.
2026-07-06
Connector page: preview what will be ingested · no dead “View in Wiki”
See what will be pulled before ingesting.
2026-07-06
Settings is now tabbed with a left-rail index
Settings was one long scroll of ~12 sections.
2026-07-06
Save buttons now reflect saved state (no more “Connect” on a saved key)
Connector key form. The button was always “✓ Connect” even with a key already saved.
2026-07-06
Per-connector document list — “here are your N Notion pages”
See what each connector pulled in.
2026-07-06
Connector keys live on the connector page · cleaner connected state
Enter the key on the connector itself.
2026-07-05
Connector setup guides — clearer steps, fixed buttons, current Notion flow
Notion how-to matches Notion’s new UI.
2026-07-05
Land on Home after login · per-run ingestion model · Individual vs Bulk (Gemini Batch) mode
Login lands on Home. A genuine sign-in (signed-out → signed-in) now routes to the Home tab; a plain refresh still restores your last tab, and deep links (post-GitHub-install, billing) still win.
2026-07-05
Secret-safe ingest + live Firestore proven on a real repo (trekngo)
Credential dumps are never ingested.
2026-07-05
Hybrid DB extraction — workers read the schema out of your code, so the brain can query Firestore live
LLM + deterministic, merged.
2026-07-04
Live-data query tool — the brain queries your connected database on demand
Read-only live queries.
2026-07-04
Generative UI — chat answers can render components (cards, tables, charts)
The query agent picks the component.
2026-07-04
Auto-detect databases in ingested code → connector suggestions + nav badge
DB detection at ingest.
2026-07-04
Ingest UX: overall progress bar, Ingestion History, roomier Map
Overall progress bar on the Activity/monitor — a single weighted bar (scout 15% · workers 55% · integrator 30%) with a live Processing X/Y files · N% label and green/red end states, above the event feed.
2026-07-04
Ingestion cost controls (Gemini spend was 98% of the cloud bill)
Thinking disabled by default.
2026-07-04
Root-cause fix: eliminate duplicate extraction at the source (disjoint domain file-scoping)
The deeper cause of duplicates: the Scout routinely emits overlapping domain paths — three domains at /src/Containers, another at /src, etc.
2026-07-04
Fix duplicate wiki pages: cross-domain entity dedup by file path
the Scout sometimes assigned the same directory to two domains (e.g.
2026-07-04
Ingestion reliability: fix truncated scout/worker output + robust JSON parsing + content-gen integrator
Root-cause fix — output truncation.
2026-07-04
Free Ollama Cloud models for ingestion (bigger free budget than Groq)
Added Ollama Cloud · gpt-oss 120B and Qwen3-Coder 480B to the Active-model picker (Settings).
2026-07-04
Free Groq models selectable for ingestion (no more burning paid Gemini tokens)
Added Groq · Llama 3.3 70B and Llama 3.1 8B to the Active-model picker (Settings).
2026-07-03
Map source filter: merged nodes light up under every source they came from
The graph now carries sources_all per node, and the Galaxy Map gained source-filter chips (Github / Web / Slack…).
2026-07-03
Brain-like multi-source merge: one wiki page enriched by every source (no more silent overwrite)
Ingesting the same entity from two sources (e.g.
2026-07-03
Fix — Files tab: human-readable file details instead of empty "—" cards
The file detail panel read fields (symbols/loc/in_edges/out_edges) the code-graph never returns, so every stat showed a dash.
2026-07-03
Fix — Map node click: rich info for every node, no more "couldn't load" error
Clicking a file node (e.g.
2026-07-03
Map is now Galaxy-only with cluster legend, node info drawer, micro-animations
Galaxy is THE Map: the Galaxy | Constellation | Force toggle is gone — the Map tab is the Galaxy view only (the Constellation canvas lives on in the Workforce tab; the 1.1k-line legacy force view is deleted).
2026-07-03
Galaxy view: Obsidian-style light-theme knowledge map (new default)
New Galaxy view on the Map tab — a canvas-rendered force-directed galaxy of the whole brain: every node as a community-colored dot with organic starburst clustering, hairline edges, and Obsidian-style labels that fade…
2026-07-03
AI Workforce v1 (flagged): charter agents + run ledger + Ask the council, and the last emoji leave the chrome
New Workforce tab (feature flag workforce, default ON): your agents as hubs on the shared night-sky constellation, their runs as chain stars (done runs ring in the agent's accent).
2026-07-03
Constellation Map: the knowledge graph as a night sky, plus chat suggested prompts
New Constellation view on the Map tab (default): a dark night-sky canvas (#0c0d10) with a drifting particle core ("the brain"), your graph communities as color-accented hubs on a radial ring, and their top members…
2026-07-03
App redesign phase 1: grouped sidebar, Home tab, real deep links, brand illustrations
New IA: the 9-tab top nav + "More" overflow is now a grouped left sidebar (Home · Chat · Knowledge · Data · Sources · Ship · Account) with Phosphor duotone icons — zero emoji in…
2026-07-03
Routing & redirect fixes: connectors land back where you left, no more base-path 404s
Connector OAuth redirects fixed: GitHub, Slack and Google callbacks now return to the app via a base-path-aware _spa_redirect() helper (ENHANCIAR_SPA_BASE, default /enhanciar) instead of a bare /app.
2026-07-02
Website connector rebuilt Firecrawl-style: real markdown, sitemap crawling, JS rendering
Rewrote enhanciar/web_scraper.py as a Python port of the open-source Firecrawl pipeline (we cloned and analyzed the actual source).

June 2026

2026-06-28
Stop re-cloning needlessly: SHA-skip on re-ingest + no-clone Overview rebuild
Skip the clone when nothing changed: a re-ingest now first runs git ls-remote (one cheap network call, no clone) and compares the remote commit SHA to the last-ingested SHA (stored in the incremental state).
2026-06-28
The brain now knows WHAT a project is — auto product Overview + CPU-throttling fix
Product Overview page (NEW): ingest now synthesises a plain-English product-overview page from the extracted entities — leading with the product type and domain (e.g.
2026-06-28
Chat history persistence — conversations survive refresh + a real thread list
chats lived only in memory, so a refresh wiped them and the sidebar was a "coming soon" placeholder.
2026-06-28
Blast-radius graph: fix overlapping node labels
Node labels are now truncated to each box's actual width (mono ≈ 6.8px/char) so text can't overflow or overlap neighbours, and the affected-files band is capped at 6 for breathing room.
2026-06-28
Visual blast-radius in chat + live connector read-through (Jira/Linear/Slack)
Blast-radius graph inline in Chat: ask "what breaks if I change src/App.js?" and the agent now appends a [[impact:<target>]] marker that the chat replaces with a live visual blast-radius graph (new…
2026-06-28
Impact: pick the target from a dropdown (+ chat already answers blast-radius)
Target picker: the 💥 Impact box is now a searchable dropdown of every analyzable file / function / entity in the brain (new GET /api/impact/targets + impact.list_targets), instead of free text you had to remember.
2026-06-28
Ingest activity feed: human-readable progress + more robust domain-plan parsing
Readable logs: progress events used to dump raw JSON ({"type":"progress","data":{"total":117,…}}) because they carry no message.
2026-06-28
Fix: re-sync a GitHub App installation after account delete + recreate
deleting an Enhanciar account purges the github_installations mapping, but the App stays installed on GitHub.
2026-06-28
Large-repo ingest: chunked, media-skipping clone with a per-chunk timeout
media-heavy repos (e.g.
2026-06-27
Graph: filter by ingestion source + cross-source "knows why" links between discussions and code
Source field on every node: the graph builder now stamps each node with its ingestion source — github, github issues, slack, notion, jira, linear, zendesk, google drive, web, … (from connector frontmatter; code/file…
2026-06-27
Fix: Impact / blast-radius silently went blank after every deploy (code-graph artifacts weren't durable)
the durability layer only backed up .md wiki pages to GCS/Firestore — it never persisted the code-graph artifacts Impact reads (_code_graph/*.json caller/callee edges, _index/cross_index.json, graph.json).
2026-06-27
Pick a connected repo/PR instead of typing it + a blast-radius graph in Impact
Code Reviews — repo & PR pickers: the owner/name box is now a themed, searchable dropdown of your connected GitHub repos (new StyledSelect.jsx — a light-theme popover with a filter, replacing the unstyled native…
2026-06-27
Login right panel — broadened beyond "repo" + scoped microanimations
Reflects the whole product, not just code: the "What happens next" steps now read Connect your sources (GitHub + Slack) → Agents read everything (code · threads · docs) → Ask · review · trace impact; plus a new "One…
2026-06-27
AI Code Review section — animated preview mockups replace the static images
Problem: the hero image was weak and only 1 of the 3 "How it works" step cards had a visual.
2026-06-27
Ingest "Add source" redesigned — dense 3-column layout (no more dead whitespace)
Problem: the Add-source view left the bottom half of the screen empty and barren.
2026-06-27
Fix: Connectors grid showed "Connect" for already-connected GitHub/Slack/Google
GET /api/connectors returned credentials_configured: null for GitHub, Slack and Google (their connection state lives in installations/OAuth, not the user doc) — so the Connectors grid + Ingest "Connected sources" showed…
2026-06-27
Connector setup guides + links; connectors no longer "coming soon"
Per-connector setup guides: a new reusable SetupGuide block on every connector's detail page — numbered steps + a prominent external link (new tab).
2026-06-27
Ingest tab restructure + Connectors sync
Add source trimmed: removed the "Local path" source type, renamed "ZIP / tarball" → "ZIP", and a little top margin added above the Add source / Feed files / Activity sub-tabs.
2026-06-27
Unified ⚡ Ingest tab (Ingest + Feed + Monitor merged)
One flow, one tab: the separate Ingest, Feed and Monitor primary tabs are now a single ⚡ Ingest tab with a segmented control — Add source · Feed files · Activity — since they're really one journey: add a source / drop…
2026-06-27
Impact analysis, real Slack ingest, docs-on-merge + repositioning to "the team brain that knows why"
Impact / blast-radius analysis (NEW): a new 💥 Impact tab + GET /api/impact?target=…&depth=… + an impact MCP tool.
2026-06-25
Critical fix: bare-slug repo ingest no longer silently produces an empty brain
The launch-blocker: pasting a bare GitHub slug (pallets/itsdangerous) on the Ingest page reported "Pipeline complete 🎉" but built 0 nodes.
2026-06-25
Code Review = feature, not a separate tier + light section imagery
Removed the standalone "Code Review" pricing tier from the landing Pricing section and the billing.PLANS catalog — it ships inside the existing Solo/Team plans, so there's no separate plan and no Razorpay plan IDs…
2026-06-25
AI Code Review → Bito parity: PR summary, one-click fixes, secret scanning
PR summary + type/risk: every review now opens with a plain-English summary, a change-type tag (feature/bugfix/refactor/…) and a merge-risk read, rendered above the findings table.
2026-06-25
Distinct routes: / (landing), /login, /app
Before: login and the app shared one URL (/enhanciar/ rendered SignupScreen when signed-out, the app when signed-in); landing was at /.
2026-06-25
Fix: landing→app flash for signed-in users
returning, already-signed-in users hitting the root URL saw the full marketing landing paint for a split second before onAuthStateChanged resolved (Firebase persists auth async in IndexedDB) and redirected them to…
2026-06-24
AI Code Review — landing story + in-app discovery + Higgsfield visuals
Landing page: new dedicated CodeReviewSection (id #code-review) between Features and Steps — headline "Senior-level code review.
2026-06-24
Launch asset: 30s SaaS launch video — real product UI, in code (light theme)
Shipped a 30-second cinematic SaaS launch video (1920×1080) modeled on the best AI-SaaS launch references (LangEase / kinetic-type style).
2026-06-24
Code Reviews tab — submit a PR for AI review from the app (BYOK UI)
New "🔍 Code Reviews" tab (More ▾ → Features) — a front-end surface for the BYOK review engine.
2026-06-24
AI Code Review on Pull Requests (BYOK review engine)
Shipped the backend engine that reviews PRs with the workspace's own LLM key.
2026-06-23
Launch asset (v8, final): 2-minute claymation promo film — recurring cast + last-frame chaining
Reshot the full 2-minute launch film with an identity-locked recurring cast.
2026-06-23
Launch asset: 2-minute claymation promo film "Monday Gets a Brain"
Shipped a 2-minute stop-motion claymation launch film for Enhanciar.
2026-06-18
Monitor: job picker — see every parallel job, not just one
All jobs are now visible in the Monitor.
2026-06-18
Fix: ingested repo now appears in the wiki (GitHub chip)
The repo was missing from the wiki.
2026-06-18
Chat can show real source code + demo switched to nanoid
"Show me the code" now works in chat — the root cause was the production chat using the BYOK path (user's own Gemini key, since Vertex is off in prod), which calls the model directly with wiki context and never invokes…
2026-06-18
Billing crash fix + Tree click fix + removable token quota
Billing tab no longer crashes — PaymentFlow called .toLocaleString() directly on plan fields (price_inr_monthly, daily_token_cap, …) that can be null in the catalog, throwing Cannot read properties of null inside the…
2026-06-18
Connected knowledge graph + chat-able repo + readable graph
Graph now has real edges — connector pages (tickets/chats/docs/schemas) almost never use [[wiki links]], so the graph was 30 nodes with ~1 edge (a cloud of disconnected dots).
2026-06-18
Wiki: filter by connector + readable page names
Source filter chips — the Wiki sidebar now has a row of connector chips (All · GitHub · Slack · Jira · Linear · Zendesk · Gmail · Drive · Files · Database · WhatsApp …) with per-source counts, so you can isolate "just…
2026-06-18
Monitor counter no longer freezes at 1/N + ingest survives bad LLM categories
Fixed Monitor "stuck on 1/24" — the demo/generic pipeline was emitting every per-doc progress event correctly (verified: a completed demo job had all 24 progress events + status done), but the UI froze on the first one.
2026-06-18
Fixed tab layout shift + bigger top-right toasts
No more sideways jump when switching tabs — each tab is its own scroll container (.dh-body .tab-pane { overflow:auto }).
2026-06-18
Demo-data mode — backend (feature flag, sample dataset, ingest endpoint)
Live enrichment counter in Monitor — the generic/demo pipeline now emits a per-document progress event (🤖 [i/N] Enriching…) before each LLM call, and the Monitor shows a live "Enriching i/N" count + a Workers progress…
2026-06-18
New Connectors tab + chat/header polish + WhatsApp sample-data mode
New "🔌 Connectors" tab (after Tree) — a hub listing every source (GitHub, WhatsApp, Slack, Notion, Jira, Linear, Zendesk, Gmail, Drive, Files, Database) with live connection status; each card jumps straight to where…
2026-06-18
WhatsApp connector — QR link, chat picker, sync into the brain
New WhatsApp tab (More ▾ → Integrations) — Connect kicks off a session, the panel polls for a QR code every 2.5s and renders it inline; scan it from your phone (Settings → Linked devices) and the panel flips to…
2026-06-10
Enrichment hardened — compulsory LLM digestion + chunked map-reduce
LLM digestion now required for ingestion — generic ingests fail fast with a clear, actionable error when no model key is configured ("add one in Settings → Models & API keys, then re-run"), instead of silently…
2026-06-10
LLM enrichment for non-code ingestion
Model-written digests — Feed/connector documents (Notion, Linear, Jira, Zendesk, files, notes, URLs, database schemas) now get LLM-written Summary, Key points and Decisions sections when a BYOK model key is present,…
2026-06-10
Landing page refresh — 11-connector copy, Skills & Process Map section, features catalog link
Hero copy broadened — "code, Slack, Notion, Jira, tickets, docs — anything", plus the skills-compiler promise: knowledge compiled into executable skills agents can run.
2026-06-10
Skills tab — compiled-skills library, process map & chat-triggered skill creation
New primary "🧠 Skills" tab — a grid of every compiled skill (GET /api/skills) showing the when-to-use description, a subtle confidence meter, last-compiled date and source-document count; click a card to read the full…
2026-06-10
Workspaces tab — management panel & active-workspace switcher
New "👥 Workspaces" tab (More → Account) — lists every workspace you own or belong to with personal badge, plan chip and member count, plus a create-team-workspace form (POST /api/workspaces).
2026-06-10
Settings — connector credential forms (Notion / Linear / Jira / Zendesk / Databases)
New "Integrations" section in Settings — one card per connector group with per-card Save buttons, success/error toasts, and a short setup hint (e.g.
2026-06-10
Feed tab — drag-and-drop "feed your brain" UI
New primary "📥 Feed" tab — the front door for the personal brain: feed anything — notes, PDFs, transcripts, links — and your brain learns it all.
2026-06-10
Auto-compiled skills after every ingest
Auto skills compile — every successful ingest (GitHub code, Issues/PRs, Slack, Gmail, Drive, Notion, Linear, Jira, Zendesk, Files, Databases) now automatically enqueues a skills-compile job for the workspace, so the…
2026-06-10
Team workspaces & query-time ACL enforcement v1
Team workspaces shipped — POST /api/workspaces creates a shared brain (owner = caller, plan inherited), GET /api/workspaces lists yours, and owner-only POST/DELETE …/members invite by email or uid / remove members.
2026-06-10
Company Brain expansion build
6 new connectors — Notion, Linear, Jira, Zendesk, Files & Notes (PDF/docx/md/transcripts/pasted text/URLs), and Databases (Postgres/MySQL schema maps).