Skip to main content

Updates

Follow new updates and improvements to Wingman Nico.

Nico 0.2.8: asks that work on a schedule, and remember what they're doing

Schedule an ask in a browser Space and let it do the whole job while you're away.

Scheduled asks

  • Catch up after sleep. A run missed while your Mac was asleep runs when it wakes. You can also keep the Mac awake for scheduled runs.
  • Lost connection. A run waits for the internet to come back and carries on, instead of failing.
  • Permissions in one place. If a scheduled run was refused a command, it appears under Needs your OK. Permissions… shows what each schedule may do and lets you remove any of it.

Asks can do more

  • A memory between steps. Asks keep notes as they work, so they don't lose track of what they were doing partway through a long job.
  • Run commands you approve. An ask can run a command on your Mac. You approve each exact command, and anything using sudo is always refused.
  • Click what they can see. When a website's button can't be reached the usual way, an ask can click it by its position on the page.
  • Any OpenRouter model. Add your key, then choose a model for each ask and see what each call cost.

Fixes

  • Asks handle more websites: controls with no proper name, clickable text, switches, and uploads on sites that use a separate upload button.
  • If a page changes partway through a step, Nico no longer types into the wrong box.
  • A browser that's slow to answer is no longer mistaken for another program.
  • A model reply cut off partway is asked for again.
  • Asks no longer try to read a video as text, which could stop a run.
  • Opening an ask in the HUD now grows the window to fit it.

History searches every session, one ask can read another, and clicking works again in Chrome

Nico 0.2.7. You have been on 0.2.2 since the 8th of October — 0.2.3, 0.2.4 and 0.2.5 were built here and never offered to anybody, so this one release carries all of it. History learned to search, every match leads back into the session that made it, one ask can read another's answer, and clicking in Chrome, Slack and VS Code works again.

Search everything you have ever said to it

There is a search box in the History tab. It reads the six places your words actually live: your questions, the answers, a terminal's whole scrollback, the files a session built, the documents in a Space, and the ones on this Mac's desktop.

Nothing is indexed and nothing is stored. It reads your disk when you type — 285 sessions here, about 200 milliseconds for an ordinary word.

The first version of it was fast and wrong: cormick found one session when the disk held two. The missing one was "Stella - McCormic", and it was invisible twice over — term.txt keeps only the last screen of a terminal, and a session's own built files were never walked at all. So the scan now reads term.vt, the full byte stream, and walks the session's own tree. The word that was wrong takes 646 milliseconds and finds both.

Every match leads back into the session

It did not. A result was a dead end: the bold name was the button and nothing said so, and a document found in a Space had no owner at all.

Now every row has a visible Open, a Space's documents have Show in Finder, and a document found in a Space carries the session that wrote it — read out of Nico's own footnote inside the file, keyed on the Space and the file name, so notes.md in one Space cannot claim another's.

Whether it was a Space, an ask or a terminal, you can open it and carry on where you stopped.

One ask can read another's answer

A session is several asks, and each one holds only the access it needs. Until now they could not see each other, so getting the output of one into the next meant starting again and losing the thread.

Pick, on a new ask or on one already on the card, which earlier asks in this session it should read. What they answered is quoted to it as material to work from.

So: one ask with the browser pulls your email threads. The next one reads that and summarises it. A third tells you what matters, on this Mac. Three capabilities, one chain, one session.

What flows down a chain is data, never instructions — stated in the prompt the model gets, and in the hover text on the card, which is the only place you see it. That rule is what makes a chain safe, because each ask holds one capability and a funnel is otherwise a path from other people's writing to an action on your machine.

An ask cannot read itself, cannot read one below it on the card, and cannot read one from another session.

Clicking works again in Chrome, Slack and VS Code

It had been dead for a week in every Electron window while native applications worked fine. A synthetic mouse event posted to one of those processes is dropped at Chromium's renderer boundary as untrusted, and no field on the event fixes it — a click count and the window-routing fields were both tried on a real Mac and neither opened a link. Typing worked throughout, because a key event follows focus and is never checked that way.

So a click is no longer a mouse press. The element is focused, the focus is read back, and the key that activates that kind of control is sent — Return for a link, Space for a button. The read-back is the point: the accessibility API answering success means the application took the message, not that anything moved, and that false comfort is how an earlier round reported pressing a button it had never pressed.

Space and Return are not interchangeable, either. On macOS Space activates the control that has focus, while Return activates the window's default button — some other control entirely. AXPress drops to second and the mouse to third, so a control that answers to either still works.

Also gone: the crash that ended every This Mac run. The keyboard layout was being read off the main thread, and Text Input Services traps the process there rather than returning an error.

The card that opened blank, or vanished on a swipe

Two faults under one report: "soon after installation, the first time I opened it the HUD kind of stays hidden. If I go to a new desktop, it shows and then vanishes again. So I have to quit and then open it and then it stays top of my desktop."

Neither was visible in the log, which is why three evenings of reading it found nothing. The window was configured, framed and ordered to the front every time, and said so.

The blank card. The view was being published to a page that had not finished subscribing — and the page then drew nothing, which in a transparent window looks exactly like a window that never opened, except that it still swallows your clicks. A fresh install loses that race every time: cold web view, first press seconds after launch. A relaunch wins it, which is why quitting and reopening "fixed" it. The engine now keeps the last view it published and the page asks for it.

The card that vanishes. The window's Space and its level were set once, at launch, and nothing restated them for the rest of the run. A process up since yesterday was trusting a registration made the day before. Both are now restated every time the card is shown.

A picture you attach is actually looked at

On a Space or This Mac ask, an image you dropped on it was named to the model and never shown to it. One place in the code said "a step has no slot for a picture" — true when it was written, and not true since the 14th of October. Both layers now ask the one function that knows what each model can see. Up to six pictures, read as bytes.


Nico checks for updates itself. If you would rather not wait: Status → Check for updates.

A folder you pick, a card that follows your Mac, and asks that wait their turn

Nico 0.2.0. Spaces learned to hand an ask a folder, the card learned light mode, and a handful of things that had been quietly cutting your work short stopped doing it.

Give an ask any folder

A Space has always been a browser and a folder of its own. Now an ask — or an app — can be given any folder on your Mac: a client folder in Dropbox, a scans folder on a drive, another Space's downloads, or wherever you put things by hand.

Press Folder… on the ask, or drag a folder onto it. The row says which folder in words, and says the grant is read and write, because it is — an agent handed a folder can change what is in it, and that belongs on the row rather than in a tooltip.

Some folders are refused and say why: your home folder, the whole disk, a system folder, and a Space's own directory — that last one holds the logins for that business, so you are pointed at its files folder instead.

An ask waits its turn instead of being turned away

Asking a second thing while the first was still thinking used to answer "thread 2 is already running, and one runs at a time", under a row that then sat on not run yet for ever. Nothing was ever going to run it.

A press is not a timer tick. It is somebody asking once, so it joins a queue, the row says queued, and it starts itself when the one in front lands.

A follow-up remembers what you asked first

A question that was never answered used to be deleted from the conversation before the next one was sent. That is right for a run that crashed and wrong for one that never ran — so a follow-up of "retry now" reached the model with nothing attached to it, and said so.

Earlier questions now travel, marked as unanswered.

Nico stopped guessing how much room a model has

Every budget on the browser path was sized for the smallest model that could ever run it. A five-turn conversation of 1,735 words arrived as 4,091 characters of 18,688 — the rest was binned, which is why an ask would say it could not see your earlier draft.

Nico now asks each tool what it holds. Codex answers for free; Claude Code answers once and the answer is kept. Ollama was already being asked. Every limit is then a share of the real number with a ceiling on top, so a bigger window cannot quietly cost you more.

Four other limits were sized the same way: what a model may write in one go, how many of its own steps it can remember, how much of a page it reads, and how much of the conversation travels. And the code meant to shorten an over-long page turned out never to run at all.

The card follows your Mac, or you tell it

Settings → Appearance: System, Light or Dark. Both windows repaint the moment you choose. The terminal stays dark, as terminals do everywhere else on a Mac.

Your sessions are in the menu bar

Sessions, with pinned ones at the top and your recent ones under them. Press one to open it.

A browser ask keeps what it did

The working-out moved below your questions, opens with one press, and for an ask that drove a browser it is the whole step log — every page it opened and everything it pressed. It is now kept as steps.txt in the ask's own folder, so what did this do last Tuesday is a question with an answer. It is on your Mac, it is readable, and you can delete it.

One sentence we had wrong

The Status screen said "Nothing you say leaves this Mac". That was written when the only model ran on your machine, and it is not true when an ask runs on Claude Code or Codex — the question and the session's transcript go to them in the prompt.

What is true on every model is the audio: it is transcribed on your Mac and no request carries a recording. That is what the screen says now, and where an ask goes is said in the same breath. The privacy policy's heading has been corrected the same way: what never comes to us is the promise we can make, and it is not the same sentence as what never leaves your Mac.

Earlier updates