Releases: WynterJones/Nisaba
Release list
v1.0.7 — Nisaba
Preview on a generated component booted the workspace's dev server, which assumes the workspace
is a project -- a folder with a package.json and a dev script. Point it at a folder of loose
files and npm walks up to /private/tmp and reports a missing package.json, which reads as a
broken app rather than a missing project. There is now a second path that needs nothing: the
component is served on its own throwaway port and opened in its own window. React, icons and
Tailwind come from a CDN, TypeScript and JSX are transformed in the page, and every @/...
import the folder cannot answer is met with a shim built from the exact names that file asked
for -- a Button shimmed as a button, an Input as an input, cn as a string join, so the result
is interactive rather than a wall of divs. It shows behaviour and layout, not real shadcn
styling; the dev-server path is still there for the exact thing, now labelled as what it is.
A check parses a real generated component and asserts the shim carries the right names for
the right path, because getting that wrong dies as an opaque module error in a window with no
console.
Opening a menu blurred the whole page behind it. That was deliberate -- the native view has to
be hidden for a dropdown to paint at all, and a blurred still is friendlier than a black
rectangle -- but at ten pixels of blur and a dimming layer it turned every menu click into a
scene change. The still now sits there as it is.
A long path in a dialog painted straight through the card's border. DialogContent is a grid,
and a grid item refuses to shrink below its own min-content, so an unbreakable path pushed the
track wider than the box that was supposed to clip it and truncate never got a say. Grid
children can shrink now, which fixes every dialog rather than the one that showed it.
The audit panel's only route to a copyable prompt was a toast action that expires. There is a
persistent button for it, disabled with an explanation until the plan has been exported, since
the prompt names the exported folder. The panel header lost the URL and the workspace path it
was repeating.
A finished job's progress bar kept running its barber-pole stripes, which says "working" about
something that stopped. Stripes are now tied to being under 100%, so every bar in the app stops
when its work does.
Release notes in the update dialog were HTML tags stripped out and the remainder cut at 400
characters inside a one-line description. They render as a scrollable list of what changed,
on both the available and the ready step.
v1.0.6 — Nisaba
Apple Silicon: Nisaba-1.0.6-arm64.dmg · Intel: Nisaba-1.0.6-x64.dmg
Four agents instead of one
Nisaba drove whichever CLI the workspace had picked. There are four now — Claude Code, Codex, Grok and OpenCode — detected once at startup and offered on every button that hands work to an agent: implement an audit, convert a capture, refine a design profile, build the resource list. CLIs you do not have are greyed out with "not installed" rather than hidden, so it is clear why a choice is unavailable, and the pick is per run: the workspace's agent is the default, not the rule.
A page that blurs instead of vanishing
Native views paint above everything the app draws, so opening a menu had to hide the page — and left a black rectangle behind it. Hiding now photographs the page on the way out and leaves that still in place, blurred and dimmed, so a dropdown reads as a dropdown over a page.
An audit prompt you can paste anywhere
Copying an audit prompt handed the agent a folder path, which is useless to anything that cannot read your disk. The prompt now carries the whole plan inline, works before the plan has been exported at all, and still names the folder when there is one.
A first launch that explains itself
Three steps: what the app is for, which agent CLIs this machine has — including a plain statement of what stops working when it has none — and a workspace to nominate, skippable if browsing and capturing is all you want. Settings replays it.
Also
- One uncapturable element no longer sinks the whole batch it was saved with, and a detector that finds nothing says so instead of doing nothing at all.
- A dev server started against a workspace folder that has since been deleted says exactly that, instead of letting npm walk up to
/private/tmpand report a missing package.json. - The component dialog opens on its first file instead of an empty pane.
- A job's status stopped wrapping onto two lines and taking the row's alignment with it.
- Every link in Nisaba's own UI opens in Nisaba. The address bar keeps "open in your default browser" as the one deliberate way out.
v1.0.5 — Nisaba
Apple Silicon: Nisaba-1.0.5-arm64.dmg · Intel: Nisaba-1.0.5-x64.dmg
An update that installs on the first click
Clicking "Update" did nothing the first time or two — electron-updater can only download what a check resolved in this process, and a stale "available" from an earlier session downloads nothing. One button is now two steps behind one dialog: it checks, downloads against a fresh check with a real progress bar, then restarts. Extra clicks join the download already running, a background re-check no longer blanks out a download you are watching, and macOS actually reopens afterwards.
An agent you can watch work
Refining a design profile held one yellow settings warning and a cursor for minutes, because claude --print says nothing until the whole run finishes. Agent runs now stream their events through a renderer that prints what the agent is doing — files read, prose written, how long it took — and every job log gets the same treatment.
A picker that knows what an element is
"Pick an element" pointed at whatever leaf sat under the cursor, so hovering a button landed on the <span> inside it. Element mode now climbs to the nearest real control — button, heading, input, image, card — and highlights nothing over the anonymous divs in between.
Also in this release
- Fixed: clicking a job blanked the entire app.
- Syntax highlighting everywhere source code appears, in Nisaba's own palette.
- Right-click to save images, on browsed pages and in your own library.
- Extract is one menu — Element, Component, Template.
- Device widths for testing a page at mobile, tablet and desktop.
- Build with AI in Resources: your agent asks what you are building, finds links, and adds them while you talk.
- Fixed: the dev-server preview failing with "did not print a URL" in the packaged app.
- A selection clears once its tab navigates away; error toasts are red; generated components lose the "Rebuilt from…" comment; Knowledge is now Websites.
v1.0.4 — Nisaba
Refine a design profile with your own agent
A measured profile is a guess: Nisaba picks one button, one input and one card out of everything on the page, and sometimes that is the chat bubble rather than the CTA. Refine with agent hands the profile to the Claude Code or Codex CLI you already have. It reads the screenshot and every control the page declared, then writes back a corrected spec.
The answer is folded on, not trusted. The agent may correct what was interpreted — colours, type, radii, spacing, components — while breakpoints, CSS variables and shadows stay as the page reported them, and anything missing or malformed keeps its measured value.
On a real profile this turned a 50%-radius, zero-padding, grey-on-blue "primary button" back into the actual hero CTA, and the primary colour from one used twice on the page into the one used 134 times.
Profiling now also files the raw samples beside the record, so future refinements reason over every control rather than the one that survived ranking.
Elements are copies, not pointers
A saved element is something to reuse in your own project, so it no longer stores or offers to copy the selector it was lifted from, and its CSS rule is named after what the element is.
Check for updates
It rendered the install button while the check was still in flight, offering an update to null. There has to be an update before there is anything to install.
Apple Silicon: Nisaba-1.0.4-arm64.dmg · Intel: Nisaba-1.0.4-x64.dmg
Both signed and notarized. If you are on 1.0.3 the in-app updater will offer this one. The .zip files and latest-mac.yml are what that updater reads — they are not the download you want.
v1.0.3 — Nisaba
Audits you can come back to
Making a second audit used to fold its pins into the first one. A draft now only carries forward when it belongs to the page in front of it, and a saved audit can be reopened from the library to add more pins — numbering carries on from where it stopped. An exported plan's agent prompt can be copied for an agent Nisaba does not run itself.
The in-app updater works
Check for updates failed with ENOENT … app-update.yml — the packer was never writing the file the updater reads. It does now, and mac ships a zip beside the dmg because that is what the updater installs from. This is the last release that has to be installed by hand.
Old design profiles open again
Profiles captured before font resolution landed were missing fonts, derived and most of their components, and opening one crashed the app. A stored profile is completed on read from what was actually measured, with the filled-in parts still labelled as derived.
Also
Workspaces can be edited — folder included, re-checked each time, since that folder is the boundary agent jobs are held inside.
Apple Silicon: Nisaba-1.0.3-arm64.dmg · Intel: Nisaba-1.0.3-x64.dmg
Both signed and notarized. The .zip files and latest-mac.yml are what the in-app updater reads — they are not the download you want.
v1.0.1 — Nisaba
First public release of Nisaba — a desktop browser that turns design research into a reusable library.
Install
Apple Silicon (M1–M4): Nisaba-1.0.1-arm64.dmg
Intel: Nisaba-1.0.1-x64.dmg
Both are signed with a Developer ID and notarized by Apple, so they open without a Gatekeeper warning. Pick the one that matches your Mac — the Intel build will run on Apple Silicon under Rosetta, but browsing will be very slow.
What it does
Browse the web in-app and capture what you find. Everything you keep holds on to its screenshot, its sanitized markup, its computed styles and the URL it came from, so the library gets more useful the longer you use it.
- Captures — viewport, full-page, region and element screenshots at Mobile, Tablet or Desktop widths. The page is laid out at the preset width regardless of your window size.
- Sections and Templates — pull one section out of a page, or capture a whole page as a template source, then hand it to Claude Code or Codex to rebuild as React, shadcn/ui, Next.js or plain HTML.
- Design Systems — profile a page into a
DESIGN.mdthat follows the design.md spec: tokens as YAML front matter, rationale as prose. Real buttons, inputs, selects and cards are sampled from the page, faces resolve to the closest Google Font, and shape/density/depth dials let you rework the system and re-emit it. - Audits — click your way down a page pinning notes to real elements. Nisaba finds the file that renders each one and exports a task plan, or starts an agent on it directly.
- Terminals — background agents run on real PTYs in a dock inside the app, so the full Claude Code or Codex TUI works and you can steer a run mid-flight.
Requires
macOS 10.15+. Claude Code or Codex CLI must be installed and authenticated for the agent features — Nisaba never ships or proxies a model of its own.