Skip to content

Releases: RicardoRamosT/Airlock-IDE

AirLock v0.7.0

Choose a tag to compare

@RicardoRamosT RicardoRamosT released this 31 Aug 06:16

AirLock 0.7.0 brings Atlas, an administrator that keeps track of your whole
portfolio instead of one project, and a round of stability work: the crash that
could take AirLock down mid-session, the editor that could overwrite a file
changed underneath it, and closed windows that left Claude sessions running
invisibly. 103 commits since v0.6.2.

Full notes: CHANGELOG.md

Added

  • Atlas, an administrator for everything you are working on. A new sidebar section, and optionally a macOS menu bar item, that keeps track of your whole portfolio rather than one project. It writes you a debrief when you sit down (once a day, at an hour you choose), and you can talk to it all day about anything: it reads your projects, searches the web, runs commands, and opens tabs or terminals in AirLock for you. It remembers what you tell it in your own words (deadlines, priorities, what is parked), and asks about something it has believed for a long time rather than letting it quietly rot. Atlas uses your Claude subscription, and tells you what it will cost before it spends anything.
  • Atlas keeps a list of what it is still worried about. Things with a consequence and a clock (a deadline coming up, a blocker that has not moved, commits that exist only on your machine) now appear under "Still open" with how long they have been true and whether the number is growing (28 → 44). Previously the debrief was written from scratch each day, so the same warning arrived word for word every morning with no sense that it had been ignored for a week. Each one has a "Look into this" button that hands it to the chat for a proper investigation. Telling Atlas a project is parked quiets its concerns without forgetting them.
  • Atlas can capture the screen. Ask it for a screenshot or a recording and it will, which is useful before a meeting or when you want a record of something. macOS asks for Screen Recording permission the first time. Because AirLock is not yet notarised, that permission is tied to each build's signature, so you may be asked to grant it again after an update.
  • Copy any message in the Atlas chat. Hover a message and click Copy. You get the original markdown, so it pastes correctly into anywhere that renders it.
  • Start auto-started Claude sessions without permission prompts. A new option under Settings → Claude runs auto-started sessions with --dangerously-skip-permissions, for people who always work that way and were having to exit and retype the command in every new terminal. Off by default. Note that AirLock also injects the project's vaulted secrets into every terminal, so a session started this way has both no prompts and real credentials available to it.
  • Claude can fetch a credential it is not allowed to see. When a value lives in neither .env nor the vault but a CLI can produce it, Claude runs the fetch and the output goes straight into a session-only store, never into the conversation on success. It can then use the value without it ever being displayed. (A failed fetch still reports a short error excerpt, so Claude can see what went wrong and try again.) Previously the only route was pasting the credential into the terminal yourself, which put it in the transcript in plaintext.

Changed

  • Claude's prompts no longer take over the screen. When Claude needs a secret or asks to type into a terminal, it now appears as a small card in the bottom-right instead of a dialog in the middle of everything. Nothing steals your focus, so you can keep typing and deal with it when you want. Dismissing a card sends it to a new notification bell in the top-right rather than throwing it away, so one you close by accident, or mean to handle later, is still there. Several requests can now wait at once; previously a second one was simply refused while the first dialog was open.

Fixed

  • AirLock could close unexpectedly while Atlas was working. A fault deep inside Node's SQLite binding could terminate the whole application, taking every window, terminal and running Claude session with it. Atlas's storage now runs in its own separate process, so the same fault costs a single failed write and nothing else. The bug is upstream, not AirLock's, but the damage it could do was.

  • The editor could overwrite a file that changed on disk. If Claude, a formatter or git switch rewrote a file you had open, typing a single character would put your older copy over the top of it about a second later, and report it as saved. The editor now notices and offers to reload or keep your version, and it will not overwrite without you choosing. Saves are also written atomically, so a crash mid-save can no longer leave a source file empty, and the last second of typing is no longer lost when you close a window or quit.

  • Closing a window left its terminals running. Every shell in a closed window kept going invisibly, including a Claude session mid-task that was still editing files, until you quit AirLock entirely. Reloading a window did the same. They are now shut down with the window that owned them; tearing a tab out into a new window still moves its terminals across alive.

  • AirLock could replace your Claude Code settings file. If ~/.claude/settings.json could not be read (a stray comma is enough) AirLock treated it as absent and wrote its own settings over the top, losing everything else in it. The same flaw could reset your AirLock preferences or a project's configuration, and a declined keychain prompt could overwrite a project's entire secret vault with a single entry. In every case AirLock now refuses to write rather than assuming an unreadable file is an empty one.

  • The app could freeze for as long as something else took. Several background checks ran without any time limit, so a slow network drive, an unhealthy Docker daemon or a keychain prompt could stall every window at once, a beachball that looked exactly like a crash. Everything AirLock runs now has a deadline, and the keychain no longer blocks the interface while macOS asks for permission.

  • File watching could stop silently. After certain errors AirLock quietly stopped noticing changes on disk in a project, so the file tree drifted out of date with no indication anything was wrong.

  • Atlas no longer loses a message while it is thinking. Your question is saved the moment you send it, so closing the panel mid-answer and reopening shows it still in progress instead of appearing to have vanished. If Atlas is interrupted, by a quit or by a failure, it says so rather than silently dropping what you asked.

  • Projects stop fighting over your GitHub account. Pinning a project to an account is supposed to make every push from that repo use it, whatever account is active elsewhere. But a pin could go stale without ever saying so: anything that ran gh auth setup-git in the repo, including an agent trying to get past a failed push, quietly swapped AirLock's per-account credential for a generic one that just uses whichever account happens to be active. The project still showed as pinned while its pushes went out as the wrong user, so the fix looked like switching accounts, which then broke the next project. AirLock now checks the pin is genuinely in force each time you focus a project, and repairs it if not. Pins made before this check existed are repaired the same way.

  • Focusing a pinned project no longer switches your active GitHub account. A pinned project carries its own credentials, so there was never a reason to move the machine-wide account when you clicked its tab, and doing so meant a push running in the background from a different project could go out as the wrong user.

  • The dock badge dropped to grey while Claude was still working. AirLock only learned a session was busy when you submitted a prompt, or when a tool call finished. But a turn can resume without any prompt being submitted (feeding ! shell output back into the conversation does exactly that), and if its first move is a long tool call, nothing said "busy" until that call returned. Four straight minutes of real work read as idle. Tool starts now count too.

  • The licence now ships with the app. AirLock is free for noncommercial use and needs a paid licence at a company, but neither document was in the installed app: they existed only in the repository, so anyone who installed from the DMG had no copy of the terms and no way to find out that a commercial licence exists. Both are now in the bundle and readable from Settings → About.

  • Electron's and Chromium's notices ship too. Chromium's licence requires its notice travel with anything built on it, and the macOS build was leaving both files behind. They are in the bundle now, alongside a credit for the icon set.

Install (macOS, Apple Silicon)

Download AirLock-0.7.0-arm64.dmg below and drag AirLock to Applications. It is ad-hoc signed and not notarized, so on first launch macOS will say it "cannot verify that this app is free from malware". To open: right-click the app in Applications and choose Open, then Open Anyway (or allow it under System Settings → Privacy & Security). Notarization is still not configured. For a tool that asks you to trust it with credentials that warning is a real gap, not something to hand-wave.

Already running AirLock? The in-app Update button will offer this build.

One note if you use Atlas's screen capture: macOS ties Screen Recording permission to a build's signature, and an ad-hoc signature changes with every build, so you may be asked to grant it again after an update.

Verify the download

shasum -a 256 AirLock-0.7.0-arm64.dmg
3d7589ee353952e550b6222a7f63c1410648220bbe4fccf158aae1e4699fbeba

Where the security line is

AirLock stops the agent from reading your credentials. It does not sandbox what a credential-bearing command does, and redaction...

Read more

AirLock v0.6.2

Choose a tag to compare

@RicardoRamosT RicardoRamosT released this 28 Jul 17:19

A small fix release: a phantom drag label that followed your cursor outside the
window, the dock icon it took down with it, and Claude Code's input box hiding
under the bottom bar after a display change.

Full notes: CHANGELOG.md

Fixed

  • A phantom "Release to open … in a new window" label followed your cursor
    whenever it left AirLock, with no drag behind it. Reordering a project tab once
    was enough to trigger it for the rest of the session: the drop cleared the
    strip's drag state before dragend ran, so the drag never ended as far as the
    cross-window tracking was concerned, and its cursor poll never stopped.
  • The dock icon lost its status badge and the running-app dot the first time
    that label appeared — permanently, until relaunch. Showing a window on every
    macOS workspace hides the app's entire dock tile, and nothing put it back. Both
    dots are restored now.
  • Claude Code's input box no longer hides under the bottom bar after a display
    change. Moving the window to a differently-scaled screen, switching resolution,
    or waking with a monitor attached changes how tall a terminal row actually
    renders without resizing anything — so the terminal kept one row too many, and
    the row that fell off the bottom was the one you type in.

Install

Download the DMG, drag AirLock to Applications. On first launch macOS will say it
"cannot verify that this app is free from malware" — right-click the app →
Open → Open Anyway. Notarization is still not configured; for a tool that
asks you to trust it with credentials that warning is a real gap, not something to
hand-wave.

Already running AirLock? The in-app Update button will offer this build.

Verify the download

shasum -a 256 AirLock-0.6.2-arm64.dmg
972d933b37fe1a7ff7376146c84097586a6a57760be11a3385f5eb1792baf43e

AirLock v0.6.1

Choose a tag to compare

@RicardoRamosT RicardoRamosT released this 28 Jul 08:11

Slack gets a real sidebar, Azure and Snowflake stop showing you other projects'
resources, and every panel that loads now says so instead of showing you a
finished-looking empty page.

Full notes: CHANGELOG.md

Highlights

  • Slack in the sidebar — a real chat transcript for your allow-listed
    channels: history that pages back on demand, emoji, avatars, and attachments
    that open in a tab. Connect a workspace once and reuse it across projects.
  • Azure/Snowflake are project-scoped. az webapp list is account-wide, so a
    project that doesn't use Azure was being shown every web app in the
    subscription. Fixed — and the CLIs aren't spawned at all in a project that
    doesn't use them.
  • The Extensions hub is a full page, grouped by real connection state, with a
    detail pane per extension.
  • CI in the Git section — the current branch's GitHub Actions run, with its
    real step count. (The Activity panel is gone; this is where its one unique
    capability went.)
  • Audit ▸ Verify chain — re-walks the hash-chained audit log and tells you
    whether it holds. An audit claim you can't check is decoration.
  • Commercial licensing. AirLock is now dual-licensed: noncommercial use stays
    free under PolyForm Strict, and commercial use has a licence to buy. See
    COMMERCIAL.md.

Install

macOS, Apple Silicon. Download the DMG below.

This build is ad-hoc signed, not notarized, so the first launch will say
macOS "cannot verify that this app is free from malware". Right-click the app →
Open → Open Anyway. Notarization is next up — for a tool that asks you to
trust it with credentials, that warning is a real gap and not something to
hand-wave.

Verify the download

shasum -a 256 AirLock-0.6.1-arm64.dmg
852de17d4fd2171baa7213768fb5ffbd2b9c5615b7bda3c8e503474f97e08ab6

Where the security line is

AirLock stops the agent from reading your credentials. It does not sandbox
what a credential-bearing command does, and redaction matches known values — so
an agent that deliberately encodes a secret can defeat it. The
threat model
states all of this precisely. The no-secret-value invariant is enforced by
this test,
which fails the build if the MCP tool file so much as references a
value-returning function.

AirLock v0.6.0

Choose a tag to compare

@RicardoRamosT RicardoRamosT released this 26 Jul 05:52

AirLock 0.6.0 — projects that follow you between windows, and your Claude budget where you can always see it.

Highlights

Tear a project tab into its own window. Drag a tab out of the window and it becomes its own window; drop it onto another AirLock window to merge it in. Running terminals move alive — a claude mid-turn keeps streaming, with its scrollback intact. While you drag, a label follows the cursor telling you exactly what releasing will do.

Plan usage moved into the title bar. Your 5-hour and 7-day windows are now two gauges flanking the window title, so they stay visible even with the sidebar collapsed — and the sidebar got its 88px back. Each fill warms from blue through orange to red as the window runs down (yellow at 75%, red at 90%), a clock marks the session window and a calendar the week, and either one clicks through to the Usage dashboard.

Claude's state on the dock icon. The app icon carries a live badge — amber while Claude is working, green when it finishes — driven by Claude Code hooks plus a session heartbeat, so it stays honest through long thinking and subagent waits. On by default; opt out in Settings.

A Changelog per project. The Overview page gained a Changelog: git-derived Changes alongside your own Notes, with markdown detail bodies, per-tab search, and inline editing. Claude can write to it as it works — and with the new bulk tools it can backfill a whole history in one call, with each entry's real date.

The editor grew up. VS Code Dark+/Light+ theming, a minimap, indent guides, bracket-pair colours, a path + symbol breadcrumb, sticky scroll that pins the enclosing scope, and pinch / ⌘± font zoom.

The right GitHub account, per project. Pin an account to a repo and every push from it uses that account — terminal, agent, or GUI — via a repo-local credential helper. Non-pinned projects auto-switch on focus, and a dot on the Accounts button tells you at a glance whether the account in play is the right one for the repo you're in.

Extension Hub, expandable. Connected integrations open up in place to show and control their resources — Slack channels, GitHub issues and PRs — with the connected account shown on the row.

Usage dashboard. The ledger now survives relaunches, usage leads (cost is shown as an API-equivalent estimate, since subscription sessions report $0), and a process-memory table explains where AirLock's memory actually goes.

Everything below the tabs got a pass. Folder-shaped project tabs with an inline Overview, chip-styled status bar, a rounded activity rail with a grow-in indicator, a centered Update button that no longer shoves the Claude status around, and a regrouped Layout settings page.

Under the hood. The MCP tool set is now 39 tools. npm run lint passes for the first time. 1,570 unit tests, typecheck and packaging all green.

Install

Download the DMG below, open it, and drag AirLock into Applications.

First launch: macOS will say it "could not verify AirLock is free of malware" — the build is ad-hoc signed, not notarized (no paid Apple Developer account). One-time fix: System Settings → Privacy & Security → "Open Anyway", or xattr -cr /Applications/AirLock.app.

Already running 0.5.0? The in-app Update button in the status bar will offer this release.

macOS, Apple Silicon.

All changes

196 commits since v0.5.0.

Features (118)

  • feat(oauth): normalizeTeamId + team pin on buildAuthorizeUrl (f875788)
  • feat(oauth): pin Slack workspace from saved config; merge setConfig (754f684)
  • feat(slack): pure slackWorkspacePatch (record workspace, reset channels on change) (aeea0e2)
  • feat(slack): capture connected workspace via auth.test on broker connect (517f8fc)
  • feat(extensions): ExtensionSummary.account + populate from Slack workspace (7b4cdd4)
  • feat(extensions): show Slack workspace on the row + Change workspace action (30b6ed3)
  • feat(oauth): workspace field + manage mode in the connect modal (0d5901a)
  • feat(dockstatus): pure aggregator (parse session line + fold to dock state) (17d9d26)
  • feat(dockstatus): additive+reversible Claude hook install (AirLock-labeled) (1d83f8b)
  • feat(dockstatus): pure-shell hook emitter (session_id -> side-channel) (5964e0b)
  • feat(dockstatus): pre-baked dock icon variants + ship script/icons (175f1b6)
  • feat(dockstatus): dock controller + polling watcher + reconcile wire (19f3e70)
  • feat(dockstatus): dockStatus.enabled pref (opt-in, default off) (b8ffdb9)
  • feat(dockstatus): reconcile on boot + on the pref toggle (937bb1e)
  • feat(dockstatus): opt-in Settings toggle (Claude section) (0af8a38)
  • feat(slack): full conversation scopes + opt-in scope-tier helper (slackScopes) (6c2e01d)
  • feat(slack): parseUsers + pure labelConversations/cleanMpimName for DM+group labels (9389b40)
  • feat(slack): list all conversation types with per-type fallback + listUsers (7e6d56c)
  • feat(slack): labeled conversation listing gated by the per-project opt-in (dc239f9)
  • feat(slack): picker shows per-type glyph (#/lock/@/group) and persists kind (99b4353)
  • feat(slack): kind-aware glyphs in read tool + sidebar resources (8e82a01)
  • feat(slack): gate connect scopes on the per-project opt-in (d27337e)
  • feat(slack): private-access opt-in toggle in the connect modal (87d51f1)
  • feat(extensions): standardize action icons into fixed columns (702fd21)
  • feat(github): listResources returns open issues + PRs for the current repo (2aff720)
  • feat(extensions): extensions:resources IPC returns eye-on connected resources by section (34ebbae)
  • feat(integrations): activity-surface manifests get an 'activity' category; Vercel opts in (f59e79f)
  • feat(activity): eye-gate manifest integrations in the Activity feed (5e7c30b)
  • feat(extensions): pin becomes an eye (show/hide in sidebar) toggle (e9e64cd)
  • feat(sidebar): surface GitHub issues+PRs in Git and Slack channels in Activity (a5bc557)
  • feat(usage): add MemProc/MemorySample shared types for memory panel (7cefb67)
  • feat(usage): pure ps/footprint parse + classify for memory panel (519ef38)
  • feat(usage): footprint-based memory sampler (thin spawn wiring) (11990d4)
  • feat(usage): memoryFormat helpers (bytes, kind labels, sort) (c6e88b1)
  • feat(usage): memory:get IPC (handler + preload + api type) (674dda5)
  • feat(usage): render AirLock process-memory table in the dashboard (085e52a)
  • feat(editor): VS Code Dark+/Light+ theme (replace One Dark) (42e6dd4)
  • feat(editor): minimap, indent guides, bracket-pair colorization (12be12e)
  • feat(editor): scope model core (enclosingScopes, pathSegments) (377bd09)
  • feat(editor): markdown heading scope provider (cc2d3c0)
  • feat(editor): LSP documentSymbol normalizer + lspSymbolsToScopes (39e67f0)
  • feat(editor): lsp:documentSymbol IPC (client + handler + preload + api) (ece0a0d)
  • feat(editor): path + symbol breadcrumb bar (merges save state) (c64bb0d)
  • perf(editor): edit-driven breadcrumb scope refresh (drop idle poll) + dedupe SaveState (0b53cc5)
  • feat(editor): stickyLines pure helper (af9d6f0)
  • feat(editor): sticky scroll overlay (pinned enclosing-scope headers) (4103f57)
  • feat(dockstatus): enable the dock activity badge by default (opt-out) (86f241a)
  • feat(editor): explicit font size (default 13) + pinch/Cmd zoom; minimap shows text (33f90d3)
  • feat(terminal): Cmd+click http(s) URLs to open in the browser (35ca786)
  • feat(quota): pure serializeLedger/deserializeLedger for usage persistence (d12c3ed)
  • feat(usage): pure costLabel helper (≈ estimate on subscription) (3ca63c8)
  • feat(quota): persist the usage ledger across launches (usage-ledger.json) (b3af61c)
  • feat(usage): lead with usage, demote cost as API-equivalent, drop 0/N live tile (03da982)
  • refine(usage): explainer as a bulleted list, drop em-dashes from copy (b8beb18)
  • refine(usage): normalize Plan-windows row to the 12px body tier (5e12d23)
  • feat(integrations): capture auth-check stdout + parseAccount for a connected-account label (b4cb8f3)
  • feat(integrations): buildExtensionSummaries folds a per-integration account label (deebc51)
  • feat(integrations): account probe in extensions:list + integrations:resources IPC (e777eec)
  • feat(integrations): expand a connected Hub row to see & control its resources (d9725e3)
  • feat(integrations): extensions:resourcesFor IPC (per-id, pin-independent connected resources) (c600f84)
  • feat(integrations): expand connected extensions (Slack channels, GitHub issues) in the Hub (605e3f1)
  • feat(sidebar): add .sb-card / .sb-section-head / .sb-badge primitives + stacked divider (2722e71)
  • feat(sidebar): Extension Hub bucket headers gain a count badge (ea2fdb8)
  • feat(sidebar): card connect/empty states with a filled primary CTA (19f1804)
  • feat(settings): caret connects the Themes flyout to its parent row (040c824)
  • feat(activity-bar): caret connects each bottom-rail flyout to its button (8005452)
  • feat(git): buildCredentialHelperConfig — persisted per-repo gh-account credential routing (17a710d)
  • feat(prefs): githubAutoSwitch app-global toggle (default on) (4d0f404)
  • feat(github): pin installs a per-repo credential helper; auto-switch active account on focus (6792ced)
  • feat(github): pin/unpin + auto-switch toggle in the accounts dialog; auto-switch on focus (15bf87a)
  • refine(github): one pin CTA, lock account-switch while pinned, organize the dialog (37f9c51)
  • feat(host): agent can always start the dev server (guess fallback) (2f1c20e)
  • feat(host): Start button on a down dev-URL host (32a167d)
  • feat(host): Start button on the unverified server tier (0600565)
  • feat(update): pure dev-manifest parse + freshness + source-pick helpers (492e674)
  • feat(update): compile-time AIRLOCK_DEV_UPDATE gate + UpdateStatus.localAppPath (9f5dd2d)
  • feat(update): package:dev build + dev-update.json manifest writer (8b07b76)
  • feat(update): dev-gated dev-update.json watch surfaces local builds (6b37306)
  • feat(update): apply local dev builds (skip download/mount, reuse swap) (9d...
Read more

AirLock v0.5.0

Choose a tag to compare

@RicardoRamosT RicardoRamosT released this 07 Jul 04:20

AirLock 0.5.0 brings a new integrations platform (Extension Hub + one-click Slack and GitHub), an Events panel, managed dev servers, and inline Excel/PDF viewers. 98 commits since v0.4.0.

Added

  • Extension Hub. A new "Extensions" sidebar view lists every integration grouped by state (Connected / Available / Not installed / Disabled), with enable and pin toggles and one-click Install / Connect actions. Category integrations (Snowflake, Azure, Vercel) appear under Databases / Host only when you pin them.
  • Connect Slack in one click. Slack connects through your browser via a hosted OAuth broker (no pasted token), then a channel allow-list "permission wall" lets you choose exactly which channels Claude may read. Two gated MCP tools (slack_read_channel, slack_list_allowed_channels) let Claude pull that context; the token stays in the main process and never reaches the model.
  • Connect GitHub with a device login. GitHub connects with a device-code sign-in (no secret, no pasted token); a github_read_issue MCP tool reads an issue through the vaulted token.
  • Events panel. A new "Events" sidebar view with a live feed you can filter by level and category, backed by a size-rotated on-disk log with a secret-redaction safety net. A read_events MCP tool lets Claude query it.
  • Managed dev servers. Start / Stop / Restart your project's dev server from the HOST view, or let Claude drive it with the start_dev_server / stop_dev_server MCP tools. AirLock discovers the served port and tracks liveness, and an already-running unmanaged server can be adopted in place.
  • Inline Excel viewer. Open .xlsx / .xls / .xlsm files as a formatted, multi-sheet table (bold, italic, color, fill, alignment, and merged cells).
  • Inline PDF viewer. Open .pdf files directly in a tab.
  • Render environment variables in the sidebar. Expand a Render service to see its env keys (masked, reveal on click) and run a value-free dev vs prod comparison.
  • Tabbed Settings. A left category rail (Appearance, Layout, Terminal, Claude, Secrets, Agent, About) instead of one long scroll, plus per-section sidebar-visibility toggles and an About tab (version, MCP port, and update check).
  • Let Claude run your app. An opt-in skill (Settings → Claude) routes Claude's "run the app" requests to AirLock's managed dev server.
  • Drag files onto a terminal to paste their absolute path(s), the way the macOS Terminal does.

Changed

  • Per-project MCP scoping. Claude's MCP tools now resolve to the calling session's project (via a per-session token) instead of whichever window last had focus, so tools act on the right project across multiple projects and windows.
  • Session restore falls back to a fresh Claude when a restored tab has no resumable conversation, so it never lands on a dead claude --continue prompt.

Fixed

  • The tab "working" dot lights again on Claude Code 2.1.199 (re-anchored on the live elapsed-timer footer after Claude Code dropped the "esc to interrupt" hint and the trailing "…").
  • Terminal drag-and-drop now fires over the terminal instead of silently doing nothing, for both Finder and file-tree drags.
  • The project Overview renders README HTML wrappers and shields.io badges as clean labelled links instead of leaking raw tags.
  • A shared "Open a folder first" empty state now appears across Secrets, Databases, Git, Audit, and Files.

Install (macOS, Apple Silicon)

Download AirLock-0.5.0-arm64.dmg below. It is ad-hoc signed, so on first launch macOS Gatekeeper will block it. To open: right-click the app in Applications and choose Open, then Open Anyway (or allow it under System Settings → Privacy & Security).

AirLock v0.4.0

Choose a tag to compare

@RicardoRamosT RicardoRamosT released this 26 Jun 20:10

AirLock v0.4.0 is a big one. It brings a new Project Overview dashboard, session restore,
control of your hosting (Azure / Render / Neon) from the sidebar, at-a-glance
status dots, a richer Git panel and audit log, and a round of reliability fixes.

Added

  • Project Overview dashboard. A per-project dashboard tab: live status, a
    language/tech bar with tech-logo tiles, and your rendered README. "Generate /
    Refresh" asks the project's Claude to write an overview.md (kept free of
    secrets) and renders it as safe, HTML-inert markdown where in-repo links open
    the file in the editor. Multiple project overviews can be open at once.
  • Session restore. Reopen the projects, tabs, and splits you had on quit, and
    resume each tab's Claude session (claude --continue) when you focus it.
    Survives restarts. Toggle in Settings.
  • Control your hosting from the sidebar. Azure Web App rows expand to State /
    Region / URL with Start / Stop and Open-in-Portal; Render service rows show
    type / region / plan / branch / last deploy, recent deploy history, and Site /
    Dashboard / Manual-Deploy (with confirm).
  • Neon org tree + multiple accounts. Browse Neon as Org → Project → Branch →
    Database → Table, and connect a different API key per project (personal or
    organization), gh-style.
  • Activity-bar status dots. Host, Databases, Docker, Git, and Activity each
    show a green / yellow / red / grey health dot.
  • Git change context menu. Right-click a changed file to view its diff, open
    it, stage / unstage, copy its path, or discard it, plus Undo last commit.
  • Cmd+click a file path in any terminal to open it in the editor.
  • Drag to reorder tabs in both the project strip and the main tab bar.
  • Resize the sidebar by dragging its border.
  • Gated terminal input for Claude (MCP). A send_terminal_input tool lets
    the agent type into a terminal only after you approve it in a grant modal.

Changed

  • Secrets are stored as a single Keychain item per project (not one per
    secret), cutting Keychain prompts from many to one per project. Safe one-time
    migration.
  • Host sections are scoped to the current project and auto-reload on switch,
    so you no longer briefly see another project's resources. Account-wide integrations
    (Azure, Snowflake, Vercel) only appear under the projects that use them; Render
    is matched strictly to the project's repo.
  • One Refresh button for the whole HOST view, always visible.
  • The Audit log records git, file, and integration actions (not just secret
    access) in a live feed with per-entry actor badges (you vs. Claude).

Fixed

  • File-watcher fd exhaustion (EMFILE) that showed up as blank terminals and
    dropped MCP connections. The watcher now uses FSEvents and ignores dependency/build/cache
    dirs (node_modules, venv, __pycache__, target, .claude, …).
  • Keychain re-prompt loop fixed with a session read-cache and denial backoff.
  • Neon: a project-scoped key shows a clear "use a personal/org key" hint instead
    of a raw 404; organization keys are identified correctly.
  • Render: deactivated services no longer show a red status dot.
  • Claude auto-start no longer inherits a project's injected ANTHROPIC_API_KEY.
  • The tab "working" dot matches Claude Code v2.1.185 again.

Install

macOS (Apple Silicon). The DMG is ad-hoc signed, so on first launch macOS
Gatekeeper will block it. Right-click AirLock.app → Open, then Open
Anyway
, or allow it under System Settings → Privacy & Security.

AirLock v0.3.0

Choose a tag to compare

@RicardoRamosT RicardoRamosT released this 16 Jun 05:38

Added

  • Connect a database with a connection string. A "+ Add database" button in
    the Databases sidebar opens a modal to paste a postgresql://… connection
    string (Neon or any Postgres) and browse its tables. The password stays in the
    main process and never reaches the renderer or the AI model.
  • Database & Neon tables open as tabs. Browsing a table now opens a
    persistent, switchable, closable tab in the main tab bar instead of a
    full-pane overlay.
  • Remove a database directly from the Databases section (per-row button).
  • Terminal keyboard text selection on the current command line:
    Cmd+Shift+←/→ selects to line start/end, Option+Shift+←/→ selects/extends
    by word, and Cmd+C copies the highlight.
  • CLI integrations. Manifest-driven status panels for the Vercel,
    Snowflake, and Azure (Web Apps) CLIs, shown in the Databases/Host
    sidebar with Install/Connect buttons when a CLI is missing or unauthenticated,
    plus integration status in the Activity feed.
  • Choose your terminal. Pick a default external terminal (iTerm, Ghostty, …)
    in Settings; new terminals open there.
  • Find All References in the editor, via right-click → Find All References or
    Shift+F12, with a results overlay.

Changed

  • Standardized sidebar layout. Every section (Files, Git, Secrets,
    Databases, Neon, Integrations, Docker, Host, Render, Activity, Audit) now
    shares one layout grammar: uniform control heights, spacing, equal-width
    toolbar buttons, row actions, inputs, and empty states.
  • Neon Connect panel gained a Disconnect button, and the connect field
    now rejects a Postgres connection string pasted where the API key belongs.
  • HOST view uses consistent full-width Connect / Set-URL buttons; a
    connected integration with nothing to list now shows "no resources" instead of
    a blank header.

Fixed

  • The Neon panel no longer gets stuck on "401 Unauthorized" with no way to clear
    a bad/stale key.
  • HOST dev-server detection: detect by subdirectory + probe, re-probe every 5s
    while focused, and stop reporting macOS AirPlay (port 5000) as a live server.
  • Window first paint no longer collapses; the status bar no longer balloons in
    multi-window mode; status-bar divider + terminal overflow clipped at the grid
    seam.
  • Usage dashboard: corrected liveness, per-model attribution, and reset-time
    display.

Internal

  • The renderer no longer bundles native modules (agent-core boundary enforced),
    fixing a packaging break.
  • Connection-string validator requires real user:password@host credentials so
    a credential-less URL can't silently fail to appear.

AirLock v0.2.0

Choose a tag to compare

@RicardoRamosT RicardoRamosT released this 12 Jun 05:57

New

  • One-click in-app updates. From this version on, when a newer release is published, an ↑ Update button appears in the bottom status bar; one click downloads, installs in place, and relaunches. No more manual reinstalls.
  • Claude service status in the bottom bar (live from status.anthropic.com; click to open the status page).
  • Import .env now imports every env file (.env, .env.local, …), excluding templates like .env.example, plus a new import_env agent tool so Claude can vault env files for you.
  • Secrets: per-row … menu (Reveal / Copy / Update / Delete); the Update dialog now shows the current value for editing.
  • Activity: per-row … menu (Open on GitHub / Dismiss).
  • Rename project tabs (right-click → Rename tab, or double-click the label). The rename is display-only; the folder is untouched.
  • Terminal text editing: Shift+Enter inserts a newline (no submit); Cmd/Option + arrows and deletes for line/word navigation and kills.
  • Drag files or folders from Finder into the file tree to copy them in, auto-renaming on conflicts (keep-both).

Fixed

  • Blank-tab terminals now start in $HOME instead of inheriting the last project's directory (and never inherit its secrets).
  • Dropping files on the empty space below the file tree's last row now works (and right-click → New File/Folder there too).
  • Quota meter shows "starts on next use" across a rate-limit window reset instead of hiding the bar.
  • Agent tools: list_tabs terminals now expose ptyId for get_terminal_tail; list_secret_names/activity_status echo which project they answered for.

Install: download the DMG below, open it, drag AirLock to Applications (Gatekeeper: right-click → Open the first time). This is the last manual install; future versions arrive via the in-app Update button.

AirLock v0.1.1

Choose a tag to compare

@RicardoRamosT RicardoRamosT released this 11 Jun 09:31

What's new

  • Suggestions button in the activity bar: opens a prefilled GitHub issue (suggestion template, auto-labeled) so you can send ideas straight from the IDE.
  • README rewritten as a proper product page with a hero screenshot.
  • License in place: PolyForm Strict 1.0.0 (source-available, noncommercial, no derivatives).

Install

  1. Download AirLock-0.1.1-arm64.dmg (macOS, Apple Silicon).
  2. Open it and drag AirLock into Applications.
  3. First launch: macOS will say it could not verify the app (ad-hoc signed, not notarized). One-time fix: System Settings → Privacy & Security → "Open Anyway", or xattr -cr /Applications/AirLock.app.

For the full experience, have Claude Code installed; AirLock auto-detects it.

AirLock v0.1.0

Choose a tag to compare

@RicardoRamosT RicardoRamosT released this 11 Jun 09:03

First shareable build of AirLock, the multi-project, Claude-first IDE that can't leak your secrets.

Install

  1. Download AirLock-0.1.0-arm64.dmg (macOS, Apple Silicon).
  2. Open it and drag AirLock into Applications.
  3. First launch: macOS will say it could not verify the app (ad-hoc signed, not notarized). One-time fix: System Settings → Privacy & Security → "Open Anyway", or xattr -cr /Applications/AirLock.app.

For the full experience, have Claude Code installed; AirLock auto-detects it.

Highlights

  • Multi-project workspace: tabs, splits, or windows; background terminals never die
  • Claude-first: terminal auto-start, per-project status dots, plan-usage meter + usage dashboard
  • Local MCP bridge: 25 tools so the Claude in your terminal can see and drive the IDE
  • Keychain secret broker: inject-at-spawn, output redaction, leak-scanned commits, hash-chained audit. No tool can return a secret value.

Licensed under PolyForm Strict 1.0.0 (source-available, noncommercial, no derivatives).