All docs pages: Honest status

Honest status

Honest status

In short

Wanigan is a beta: its boards, sessions and Needs you are proven by tests against a real core, while much of the live editor has been seen working only on the two demo sites, by hand on real local sites, or with stand-ins. This page says which is which, lists what is known not to work yet and what is not understood yet, and says how to tell us what you find.

On this page

How to read status here

Honesty is the point of this page. Each line says what was actually seen working, and how, so you can tell what has been shown from what has only been built.

The feature matrix

Every feature and rule Wanigan claims has a row in its feature matrix: the claim, the test that proves it, and a status. The statuses mean:

StatusWhat it means
provenA test asserts the outcome the row states, for its fixtures.
addedThe same, by a test added in the pass that wrote the row.
fixedThe claim was false in the code. It was fixed, with a test that fails without the fix.
correctedThe docs claimed something untrue. They now say what the test proves.
partialUseful automated coverage exists, and the row states the gap that remains.
manualNo automated test covers it, and the row says why: a native macOS surface such as a notification, a real call that spends from a plan, your own CLIs and accounts, a real GPU or a packaged app, or a tool outside the test suite.
stub onlyUsed in the live editor’s rows: checked only against a stand-in of the page or the site.

Four ways a thing has been seen

HowWhat it meansWhat it shows
Proven by a testAn automated test, which must pass before every pull request, run against a real Wanigan core: real SQLite, real terminals, the real wanigan command and the real hook relay, with stand-in agents.Wanigan’s own side does what the row says, every time the tests run.
Seen in the real app on the demo sitesA script drove the real Wanigan, step by step, on the two made-up demo sites: Northstar, a Drupal shop, and Fieldnotes, a WordPress journal.It works end to end on a real, running Drupal or WordPress, built the way those two sites are built.
Seen by hand on real sitesThe owner tried it by hand on his own local Drupal and WordPress sites, which are never named here.It works on sites built for real work. It is not a check that runs again by itself.
Tested with stand-ins onlyA test ran it against stand-ins, described below, not against the real program or site.Wanigan handles the answers the real thing gives, as far as the stand-in copies them right. Nobody has seen it work with the real one yet.

What a stand-in is

A stand-in is a made-up program or answer that takes the real one’s place in a test: a pretend claude, codex, gh, ddev or Tailscale that answers the way the real one does, a pretend Drupal or WordPress built from classes in the shape of core’s, a pretend model provider answering on the same computer, or a pretend page. Stand-ins let the tests run on any machine without touching your accounts, spending from a plan or opening a real site.

The demo inside the app, Help › Open the Demo, is something else again: sample projects and stand-in agents in a data folder of their own, where nothing real is touched and no model is called. The demo sites are the two made-up websites above.

What is solid

This beta is for the core workflow: project boards, real terminal sessions, saved work and Needs you. Its rules live in Wanigan’s core, not in the window, and each is proven by tests against a real core.

AreaWhat the tests proveIn the matrix
The board’s rulesWhat an agent files lands in the Inbox, and no agent can take a card from there. Nobody drags work into Working: a session takes the card. Review needs a file, a link or a note. Only you approve.proven; the Inbox rule corrected
ClaimsA session holds its card on a 30-minute lease, renewed while it runs and kept while the Mac sleeps. One session holds a card at a time, and a session that ends gives back what it held.proven; the lease corrected
Sessions in the coreQuitting the app never ends a session, and a new window finds it and replays it. A core that dies is started again and says which sessions it lost. A session that exits with an error, or is killed by a signal nobody sent, is failed and raised.proven, added, fixed
Needs youA permission row shows exactly what is asked, hidden and lookalike characters spelled out. Needs are ranked by kind, then oldest first. A reply to a finished turn clears its row when the agent starts, not when you send it.proven, added
HooksClaude Code’s hooks drive each session’s state. Codex’s hooks are trusted by hash only after Codex’s own app server lists them; otherwise its own notifications are read, and Wanigan says why.proven
Branches and checkpointsA card can work in its own git worktree. Merging back refuses while either checkout has uncommitted work, and a conflict is undone with nothing changed. Each turn gets a checkpoint that leaves git’s status, index and refs exactly as they were.proven, added

Every row, with the test that proves it, is in the feature matrix.

What is beta

These are in the app and pass their tests, but have not all been seen against the real thing they depend on: a running site, a signed-in agent, a real phone or a real microphone.

AreaWhat has been seenNot seen yet
Saving words on DrupalOn Northstar, words in a plain text field made real and verified, by a script driving the real app. By hand on a real local site: a title saved through its own form and put back, a template copied into the theme and removed, a block and a menu link moved and each undone.Words inside formatted text, configuration words, a menu link’s text, Layout Builder inline blocks, paragraphs and Webform: tested with a stand-in Drupal only. Layout Builder moves and reordering a field with several items, on a real site. What CKEditor 5 does to a stored text the next time it opens it.
Saving words on WordPressBy hand on real local sites and a throwaway test site, every value put back: a post’s fields and registered meta, block settings in the markup, the site title and tagline, menu links and widget settings. On Fieldnotes: a title saved and put back, and a block moved and put back, each read back.Making words you typed on the page real is in this build, though the source’s Not done yet list still calls it not built; it is tested with stand-ins only. The newer edits (formatted and nested words, synced patterns, template words, navigation labels, media alt, a term’s name) are tested under a stand-in WordPress only, and no edited block has yet been opened in the block editor to see it called valid.
Words where the content keeps them, and adaptersThe stored-words search and save, and the Paragraphs, Webform, Elementor and ACF adapters, each written from its plugin’s public source and tested with stand-ins in the shape of it.Any of them against the real plugin on a running site. ACF PRO’s repeaters, blocks and options follow ACF’s documentation and are not checked against ACF PRO itself.
Typing on the page, and trying a styleIn headless Chromium on made-up pages, and in the window against a stand-in.In the app, on a site.
Try a style’s sliders and the site’s own coloursIn the window against a stand-in, in both themes: sliders and boxes in step, a palette colour, a token and a used colour each shown on the page. The WordPress palette through the helper, under a stand-in WordPress.Against a live site.
Hiding the admin bars, and the site’s own messagesThe switch, and its sheet on a made-up page carrying Drupal’s Navigation and Toolbar and WordPress’s admin bar. Drupal’s message markup read for each kind, said in Wanigan’s pop-up and kept in the tray.On a running site in the app.
VerifyPassing on Northstar for words in a plain field, from a script driving the real app. A style draft verified once it is in the site, in the window against a stand-in; one Verify finishing both cards of one element, in main’s tests. A page that fills at least a screen measured the same in both renders, on a made-up page in Electron’s real hidden window.The page from before, the masked parts and the held clock on a demo site: tested with stand-ins only. A style put in a real theme by an agent, then verified.
What the Inspector builds on the trace, and the Request tabAgainst a stand-in trace: lenses, a part’s hooks, data, cache, cost, revisions and access, and the request behind the page in the dock’s Request tab.With a real helper’s trace. This part is still being finished.
The page’s DevTools in the dockIn the window against a stand-in. Electron’s part of it (DevTools drawn in a view, a point selected in Elements, its own window and back) in a throwaway window on made-up pages.In the app, on a site. On Windows.
Snap and RecordIn the window against a stand-in page. The recorder’s frames and encoder in Electron, by a probe on a made-up page.A snap or a recording of a real site, in the app. On Windows.
Local and Live, and CompareFinding and keeping environments, lining the pages up, the difference, and the viewer with two pictures a test draws.A real hosted site opened in its tab, and both pictures taken in the app’s hidden windows, end to end.
Start it, for a stopped ddev siteTested against ddev 1.25’s answers and a stand-in ddev.A real ddev start from the app. What ddev says when Docker is not running was read from its program, not seen.
The Drupal trace across versionsDrupal 11, by hand. Each release from 10.3 to 11.4 checked against stand-ins built from that release’s real signatures.A real site on another version. A real 10.6 site traced no parts before this work, and has not been tried again since.
Agents calling wanigan mcpClaude Code 2.1.293, Codex 0.155.1 and Gemini CLI 0.46 each connecting and listing the tools, without a sign-in. The tools’ answers, tested against a real core with a stand-in for the app.A tool called in a real model’s turn, or a look at a real site. For Codex, whether it asks before calling them, and whether its sandbox lets the server reach Wanigan.
Voice inputSpeech turned into text by the built worker, with both models, and through the real app on a Mac with Apple silicon.A real microphone. Windows, Linux and Intel Macs.
Gemini CLIThe installed 0.46, up to its first hook. Its usage limit and token count, against a pretend Gemini API on the same Mac.A real model turn, which needs a Gemini login. A real account’s limit, and a real model’s usage numbers. Its MCP servers and skills in a real turn; the MCP view has no connection check for Gemini.
Codex’s limit and repliesIts limit read from its own record, with a stand-in Codex and with the real 0.155.1 against a stand-in model provider. Its hooks reporting a real turn in an earlier scenario run. A reply from Needs you, with a stand-in Codex.A real account hitting a real limit. A reply from Needs you to a real Codex model turn.
AI review, Draft with Claude, Talk to WaniganReal runs recorded in an earlier development scenario, with Claude Code 2.1.292.The same runs repeated by the independent review, which checked how they start with stand-ins.
Remote Control, and Codex’s token countsBuilt from what the CLIs’ own programs show.Either one run against a real model.
Your phoneA phone-sized browser against the real phone gateway, with a stand-in Tailscale.A real phone through a real Tailscale address, and a notification arriving on one. A Mac cannot open its own Tailscale address, so that needs a second device.
Models on this MacDownloads, loading and launching, tested with stand-ins.A real 17.2 GB download in the tests. In this build Qwen3-Coder 30B is marked not yet proven with Claude Code.
Installing and updatingChecking GitHub for a newer version, and every way that check can fail.Notarization, and installing an update for you: a new version is put in Applications by hand.

Not built yet

  • Serve this card: switching which checkout ddev serves.
  • A component’s props form.
  • Canvas pieces by their own ids.
  • Pictures, adding and taking out as edits in the design layer: for now those are done directly on the page.
  • In the code editor: creating, renaming or deleting files, searching the contents of every file, language servers, and two files side by side.
  • Grok Build as an agent: its hook events are translated and tested, waiting for it to be installed and seen running.
  • A signed feed that would bring adapter fixes between releases: an open decision.

Seen on the demo sites so far

These were seen in the real app, driven by a script, on Northstar and Fieldnotes. The sources record them on no other site yet.

  • Words made real and verified: a product title on Northstar.
  • The component library and its pictures: Northstar’s 73 entries and Fieldnotes’ 166, each pictured at exact sizes in hidden windows and kept for the next time it is asked.
  • Where an entry is used across the site: on Northstar, the theme’s components found in the templates that use them; on Fieldnotes, a button style found in nineteen places through synced patterns and a template part. Each search took 5 to 270 ms.
  • Taking a placed item out, and Undo: a block placement switched off on Northstar and put back; on Fieldnotes, a block taken out of a page as a new revision, and out of a template after its question, each put back.
  • Part identity: 318 of 394 parts named on Northstar and 164 of 165 on Fieldnotes, the same after a reload, and a moved menu link keeping its identity.
  • A site helper set up by another Wanigan, which answers only to that one, and says so.
  • What WordPress core’s AI Client and the Abilities API did during a save, on Fieldnotes: nothing, since no site here has a provider connected.

Known issues, not fixed yet

Each says what happens, what to do in the meantime, and which kind of edge it is. Not done yet is Wanigan’s to do. Core keeps no such thing belongs to the site’s platform, and Wanigan says so when it refuses.

  • Not done yet

    Verify checks the old address after a save moves the page

    When saving words gives the page a new address, as a new title does on a Drupal site that makes addresses from titles with Pathauto, the view goes to the new address. The edit still remembers the old one: Verify renders the old address, which may now answer “not found” or a redirect, and Edits lists the edit under the old page.

    Meanwhile: Look at the page at its new address yourself, with the eye in the toolbar to see it without the layer. Do not rely on Verify’s verdict for that edit.

  • Not done yet

    Edits does not show what a stored-words save said, or its Undo

    When words are saved where the content keeps them (a page builder’s, a shortcode’s or a custom field’s), Wanigan reads the reloaded page back, notes which adapter saved them and whether that plugin version is verified, and keeps a way back for ten minutes, the only one for a custom field, which keeps no revision. The Edits panel shows none of that yet: only that the words were saved, with the revision when there is one.

    Meanwhile: Look at the reloaded page and run Verify. To put the old words back, use the site’s own editor: the edit in Edits still shows them as its old value.

  • Not done yet

    Adapters are verified on one release each, and no watch checks new ones yet

    Each adapter’s verified range is the single plugin release whose source it was written from. The weekly compatibility watch that would check every new plugin release is not built yet. On a newer release an adapter is marked unverified and still saves, or refuses by name if something it calls is gone; the window does not show the unverified mark yet.

    Meanwhile: After a plugin update, look at the page after each save and run Verify. If an adapter refuses, see adapters, and tell us the plugin and its version.

  • Not done yet

    The shortcut sheet lists two code-editor keys wrongly for Windows and Linux

    Off a Mac, the sheet lists Ctrl+G for Go to a line, but the editor’s key there is Ctrl+Alt+G, and Ctrl+G finds the next match instead. It lists Ctrl+- and Ctrl+Shift+- for Back and Forward, but the editor uses Alt+← and Alt+→, as its breadcrumbs say. This site’s keyboard shortcuts page is made from the same sheet, so it shows the same two.

    Meanwhile: On Windows and Linux, use Ctrl+Alt+G, and Alt+← and Alt+→ or the mouse’s back and forward buttons. The Mac keys are right.

  • Not done yet

    Two tours name the wrong key or the wrong place

    The tour of a session says On a Mac, ⌘⇧M; on Windows and Linux, Ctrl+Shift+M moves between the message box and the terminal; that key now starts voice input, and the move is On a Mac, ⌘⇧E; on Windows and Linux, Ctrl+Shift+E. The welcome tour says List is under ···; List is now the board’s other mode, switched from the board’s toolbar.

    Meanwhile: Press On a Mac, ⌘⇧E; on Windows and Linux, Ctrl+Shift+E to move between the message box and the terminal. Open List from the board’s toolbar, or with G then L. Tours explains the rest.

  • Not done yet

    Verify sees a change that leaked past your edit only with the page from before

    Verify compares the page with and without the layer, then the rest of the page with the page as Wanigan kept it just before the edit was made real; no platform’s core keeps that page for configuration or code. A change the site made beyond the edited elements shows in both of today’s renders, so only the page from before reveals it. Where there is none (the edit was made real in a template or by an agent, another edit was made real on that page since, or the page could not be rendered then), the rest of the page is compared with the design only, and the verdict says step 3 did not run, and why.

    Meanwhile: Verify each edit before making the next one on the same page real. When a verdict says step 3 did not run, look over the rest of the page yourself, with and without the layer.

  • Not done yet

    The message box waits for an agent’s first turn

    Codex reports nothing until its first turn begins, so its message box refuses until then. Gemini CLI’s first screen may ask you to sign in or to trust the folder, so its message box works from the second message.

    Meanwhile: Answer startup questions and send the first message in the agent’s terminal, then use the message box.

  • Not done yet

    A Codex session without its hooks misses limits, failures and Esc

    When Codex’s hooks are not trusted, Wanigan reads only Codex’s own notifications, which say a turn ended and never that one began. Such a session cannot find its own record, so a usage limit, a failed turn or Esc goes unseen, and it reads as working until its next prompt. Needs you cannot reply to it, and says so.

    Meanwhile: Answer it in its terminal. The session says why it started without its hooks.

  • Not done yet

    A Codex conversation stays in the account it lives in

    Codex resumes a conversation only in its own account folder. When one Codex account hits its limit, its conversation cannot carry on under another account, as a Claude Code conversation can.

    Meanwhile: Wait for the reset Needs you shows, or start a new conversation on another account.

  • Not done yet

    Codex asks before each wanigan command

    Codex’s sandbox does not let its agent reach Wanigan, so Codex asks you to approve each wanigan command the agent runs.

    Meanwhile: Approve each one as it asks. Widening Codex’s sandbox is your call, and Wanigan does not do it for you.

  • Not done yet

    Gemini CLI’s usage limit is read from its screen

    Nothing Gemini reports carries its usage limit, so Wanigan reads the exact words of the dialog Gemini draws. If a Gemini release rewords that dialog, Wanigan misses the limit.

    Meanwhile: If a Gemini session stops with no reason given, look at its terminal.

  • Not done yet

    What Wanigan keeps for undo and evidence is never cleared by itself

    Per-turn checkpoints, attachments and the records in Wanigan’s database are kept with no total limit, so its data folder grows as you work. Automatic deletion was left out on purpose: it would remove undo and evidence without a rule you can see.

    Meanwhile: Keep an eye on the size of ~/Library/Application Support/Wanigan 2/.

  • Not done yet

    Updates are installed by hand, and the app is not notarized

    Wanigan checks GitHub for a newer version when you ask, or once a day after you say yes, but it does not install one. The build is ad-hoc signed and not notarized, so macOS asks for your approval the first time you open it.

    Meanwhile: When Settings › Updates offers a new version, download it, quit Wanigan, and drag the new one into Applications over the old. Your projects, boards and history stay.

  • Core keeps no such thing

    Drupal’s next configuration import puts configuration words back

    A field’s label, a block’s title, the site’s name and slogan, a view’s words and a webform are configuration. Wanigan saves them through Drupal’s own API, but the next configuration import puts back whatever is exported, and each such save says so.

    Meanwhile: Export the site’s configuration after the save to keep the change.

  • Core keeps no such thing

    WordPress keeps no id for a block

    Wanigan names a WordPress block by its place in the stored markup, with its words as a guard. An edit to one block that shows no words is kept only by that place, so after the blocks are reordered it lands on whichever block is there now. Wanigan marks such an edit Fragile before you make it.

    Meanwhile: Finish or discard a fragile edit before reordering the blocks on that page. A style for every block of its kind is kept by its name instead, so it is not fragile.

Not fully understood yet

Behaviour that has been seen, or a question still open, with no known cause yet. Each is kept as it was seen, not explained away or hidden.

  • Not understood yet

    A control crawl failure in CI that did not happen again locally

    In one release candidate’s CI run, the control crawl, which presses every reachable control in the demo, passed 1,436 checks and failed one: a criterion’s checkbox on a demo review card, where the browser driver timed out before it could click. An unchanged local crawl of the same screen, with one worker, passed all 39 of its controls, that checkbox included. It did not reproduce the failure or the load CI was under, and the cause is not known. An earlier CI run failed the same way on another click, and later runs passed.

    Meanwhile: Nothing changes in the app for it, and no fix is claimed. It is kept as an open risk in how the tests run.

  • Not understood yet

    The test machine could not open a microphone

    Started by the testing agent, Wanigan could not open even Chromium’s pretend audio device: the request never settled, no permission request was logged, and its audio came out as silence. Headless Chromium on the same machine did not have that problem. So voice input has not yet heard a real microphone.

    Meanwhile: If the mic will not listen on your Mac, it says why and what to do, with a button to the system setting. If it still does not listen, tell us your macOS version and what the mic said.

  • Not understood yet

    Whether a Codex conversation could move to another account

    A copy of a Codex conversation in another account loads its history without a model call, but leaves one conversation id in two accounts, which History refuses to choose between. Whether the second account accepts the first one’s encrypted reasoning is not known without spending a turn to find out.

    Meanwhile: Continue a Codex conversation in the account it lives in.

How what comes next is decided

Wanigan is maintained by one person, its owner, who decides what is built next. The design notes record each decision with its date and the reason for it.

  • The next release, beta.5, brings Studio, the new design for the whole app. Its plan ends with an independent review, whose findings are fixed before the release.
  • Adapters are built in an order ranked by how many sites each reaches, and by risk.
  • What has not been seen working stays on the source’s Not done yet list, and on this page, until it has been. The feature matrix changes with every feature added or changed.
  • Bug reports with steps, and small, well-tested fixes, help most right now. For anything larger, an issue comes first, so the shape is agreed before anyone builds it.
  • An open decision is said as one: a signed feed for adapter fixes between releases is the current example.

Tell us

Found something that is not on this page, or something here that is wrong? Input goes to GitHub as an issue, and security problems go privately.

In depth

What each platform’s core keeps nowhere

Some refusals are not Wanigan’s to fix: the site’s own core keeps the thing nowhere it can write. A research pass checked 39 of Wanigan’s refusals against Drupal core 11.4.8 and WordPress core 7.1.3, read from their code. Only five proved impossible through core as a whole, and eight more split into a part that works and a part that never will. What stays impossible has two causes: the thing is code, or core stores nothing for it on purpose.

PlatformThe thingWhy
DrupalWords typed into a Twig templateA template is code, and core keeps no stored override for it. Interface translation reaches only words printed through t().
WordPressWords a shortcode, a plugin or a classic theme’s PHP printsThey are made while the page renders and stored nowhere.
WordPressA static block’s own settingsOnly the block’s JavaScript in the editor writes them; the server has no save for them.
WordPressA lasting id for each blockCore stores none, so a block can be named only by its place.
WordPressA post’s words in each languageCore keeps one value per field, post, template and option.
WordPressA widget that only displaysIt registers no update callback, so core’s widget save has nothing to call.
DrupalA single-directory component placed without codeNo core entity, block or field holds a component, and core builds no form from its props.
DrupalA style for one instance, beyond CKEditor 5’s style classes, column widths and formatter settingsCore keeps no other place for a style on one instance.
DrupalA value for one breakpointBreakpoints are only names; the values live in the theme’s CSS.
BothEvery place a component, a template or a style is usedCore records no use made in code, and some names are made while the page runs.
BothThe page as it was before a change to configuration or codeOnly content, and a few WordPress post types, keep revisions.
BothA preview of a configuration or code change across the whole siteDrupal’s Workspaces previews content but refuses configuration, and nothing stages code.
DrupalWhere an aggregated stylesheet’s rules came fromAggregation strips every comment, source maps included.
WordPressA held clock for time() and current_time()Core has no filter to hold them still.
WordPressWhich pattern an unsynced group of blocks came from, and blocks that Block Hooks addCore records where a pattern came from for one root block only, and hooked blocks are added while the page renders.

When Wanigan refuses one of these, it says the site keeps no such thing, and where it can it offers another way. Words a template writes go to an agent with the file and the line. A parent theme’s template is to be copied into the child theme and changed there. Where an entry is used is found through what the site stores and a parse of the theme, and the answer says what it cannot see. The page from before a save is Wanigan’s own capture, taken just before it saves.