Skip to Content
Release notesv0.1.15 — Beta-feedback sweep

v0.1.15 — Beta-feedback sweep

Released 2026-05-05. macOS Apple Silicon DMG signed + notarized; Windows + Linux build via CI on tag push. Install from codenow.pro/download .

This release is driven by a private-beta tester’s bug + UI/UX report. The headline: CodeNow now feels like a real IDE, not a notepad with tabs.

Editor essentials (P0 #1–3)

The Monaco editor was running with a near-default config. v0.1.15 enables:

  • Auto-indentation on Enter inside blocks, JSX, function bodies.
  • JSX tag auto-closing. Type <div> and </div> is inserted. Works in .tsx, .jsx, .ts, .js.
  • Inline autocomplete with quick-suggestions while you type, plus parameter hints on (, bracket-pair colorization, indent guides, auto-closing brackets and quotes, language-defined auto-surround.
  • TypeScript / JavaScript language service wired up with JsxEmit.React, ESNext target, NodeJS module resolution. Standard built-in TS/JS IntelliSense now fires on the renderer side without an external LSP.

Auto-import for hooks (e.g., useState → import added to top of file) is deferred to v0.1.16 — that needs a full TypeScript Language Server integration which is multi-week work.

File tree (P0 #5, #6, #8)

  • Right-click context menu on any file or folder row in the tree. For folders: New File / New Folder / Rename / Delete / Reveal in Finder. For files: Open / Rename / Delete / Reveal in Finder. Right-click on the empty area of the tree opens a root-level menu.
  • + New file / + New folder icon buttons in the Files panel header — no more dropping out to the OS file manager or the terminal.
  • .env* and other dev dotfiles now visible by default. .env.local, .gitignore, .editorconfig, .npmrc, .eslintrc*, .prettierrc*, .babelrc*, .stylelintrc* all show in the tree out of the box. A “Show hidden” toggle in the panel header reveals truly-hidden things; .git/, .DS_Store, .next/, .cache/, IDE folders stay filtered even with the toggle on.
  • Delete uses the trash, not unlinkshell.trashItem so accidental deletes are recoverable.
  • Three new safe IPCs added: rename-path, trash-path, reveal-in-finder.

Agent scaffolder (P0 #7, #9, #10)

A beta tester scaffolded a Google ADK agent and got: files dumped into the project root, the agent crashed with ValueError: No API keys provided, and the manifest claimed claude-opus-4-7 was the preferred model. All three fixed:

  • Agents scaffold into a slug-named subfolder (<projectPath>/<slug>/agent.py, etc.) instead of cluttering the project root. Recorder’s project-root anchor was updated to .codenow/agent-studio/ so JSONL recordings still land in the right place.
  • Templates auto-load .env.local. Python entrypoints get from dotenv import load_dotenv; load_dotenv('.env.local') and python-dotenv>=1.0.0 in requirements.txt. TypeScript entrypoints get import { config } from 'dotenv'; config({ path: '.env.local' }) and dotenv in package.json.
  • Per-kit default preferred_model — Google ADK → gemini-2.0-flash, Microsoft Agent Framework → gpt-4o, Claude SDK / Cursor SDK / Empty → claude-opus-4-7.

Build New Agent — smart kit detection (P0 #11, #12)

The kit picker now reads your BYOK state and recommends a kit you can actually run:

Detected keyRecommended kit
AnthropicClaude Agent SDK (TypeScript)
OpenAI / AzureMicrosoft Agent Framework (Python)
Google AI StudioGoogle ADK (Python)
(none)Claude SDK with an inline warning explaining you’ll need an Anthropic API key first

Each kit card now shows whether the key it needs is set or missing (Key set: GOOGLE_API_KEY vs Needs ANTHROPIC_API_KEY). Nothing is disabled — pick whatever you want — but the friction is visible upfront instead of after a runtime failure.

The AGENT21_CLIENT_SECRET missing-secret message now includes the env-var snippet inline plus two help links: “How to get a secret” → wiki Requirements page, “What is Agent21?” → agent21.dev.

Migration Assistant rebuild (P1 #13)

The first-launch Migration Assistant was the loudest source of complaints: confusing item count, dead-end “N more need a quick check” line, items that look like buttons but aren’t, no progress indicator, no escape hatch.

Rewritten:

  • Headline counts only importable-now items. SSH keys marked “already set” no longer inflate the number.
  • N need a quick check” is now clickable — expands an amber section listing each item with its specific reason (“VS Code: settings file is encrypted — open VS Code once to unlock”, etc.).
  • Already configured (N)” lives in a separate collapsed section below the actionable items, with a non-interactive grey checkmark instead of a button-styled green pill.
  • Re-scan demoted to a ghost-style secondary, moved away from the primary CTA.
  • Step 1 of 3 · Import progress strip replaces the “30-SECOND SETUP” badge.
  • Skip for now text-button at the bottom-left lets you bail without re-prompting on next launch.

Claude Code tab — friendly empty state (P1 #16, #17)

Click the Claude Code tab without the CLI installed and you used to see zsh: command not found: claude. Now you see an install card with:

  • Headline: “Claude Code CLI not installed”
  • Copy-able install command: curl -fsSL https://claude.ai/install.sh | sh
  • “Copy install command” button + “Re-check” button
  • A note: “Requires a Claude Pro or Claude Max subscription. The free claude.ai tier does not work here.”
  • Link to wiki Requirements page

When the CLI is detected for the first time, a one-time toast surfaces the Pro/Max requirement so you don’t get blindsided after install.

macOS application menu — File + Terminal (P1 #19)

The app menu now has the menus every other IDE has:

File

  • New File ⌘N · New Folder ⌘⇧N · Open Project Folder… ⌘O
  • Save ⌘S · Save All ⌘⌥S
  • Close Tab ⌘W

Terminal

  • New Terminal ⌃⇧` · Toggle Terminal Panel ⌘J
  • Switch to Claude Code Tab ⌘⇧C

(Multi-pty terminal panes — opening a second shell — is queued for v0.1.16.)

Other UX (P1 #14, #15, #18, #20, #21, #22)

  • “Read START_HERE.md first” button after agent scaffolding now actually opens the file in Monaco (was closing the modal and stranding the user).
  • “Build your first agent in 60 seconds” hello-card disappears the moment the project has any agent. No more nagging for already-completed setup.
  • Sidebar tooltips are now fast (300ms delay, custom CSS) instead of the slow ~2s native macOS tooltip on title=.
  • Terminal panel resizes by drag — top edge handle, persisted height, 80px min / 70% of window max.
  • Bottom panel hidden on boot by default; the pty is spawned lazily on first focus, not on app start. No more “empty terminal staring at you with nothing in it”.
  • Live collab pill hidden when you’re alone. Was confusing — looked like someone else might be editing your code. Pill only appears when peerCount ≥ 1.

Welcome screen + IDE chrome

  • + Create New Project button on the welcome screen alongside the existing Open Project Folder. Creates a fresh directory under ~/Documents (configurable) and adds it as a project — no need to drop out to Finder first.
  • Help & Wiki sidebar button at the bottom of the left sidebar — 1-click opens wiki.codenow.pro in your default browser.
  • Report bug item in the user-pill menu — opens a structured GitHub issue template at codenow-wiki/issues/new so beta feedback lands with the right environment fields pre-filled.
  • Bottom status bar consolidation — Format · Format on save · Autofix on save now live behind a ⚙ Editor popover so the bar isn’t a wall of toggles. Theme · Knowledge · Migrate · Share · Members stay visible.
  • IDLE pill fix — the debugger-state badge that read “IDLE” next to the Debug tab was missing a CSS hidden rule, so it was always visible. Now correctly hides when the debugger is idle and shows a colored RUNNING / STOPPED badge during active sessions.
  • DevTools always dock to bottom. Cmd+Opt+I now opens the inspector docked beneath the editor (was floating detached or right-side, depending on your last session). Easier IDE-on-IDE debugging.

Slack first-class

The voice MVP was pulled in v0.1.10 in favor of “use Slack for huddles.” v0.1.15 makes that promise real:

  • Auto-detect Slack desktop app on macOS (/Applications/Slack.app + mdfind fallback), Windows (%LOCALAPPDATA%/slack/slack.exe), Linux (/snap/bin/slack, /usr/bin/slack). Detection is cached per session.
  • First-launch suggestion banner (one-time, dismissible): “Slack detected — connect for 1-click team handoff?”
  • Topbar Slack pill showing the connected workspace name. Click opens Slack workspace home.
  • Connect Slack workspace flow — paste workspace ID + optional default channel + optional user token. Token goes through safeStorage (never plaintext in settings.json).
  • 1-click Open in Slack button (Slack’s official 4-square SVG mark) next to every CodeNow channel in the Members modal. When mapped to a Slack channel, opens slack://channel?team=…&id=… in your local Slack app. When unmapped, prompts to set up a mapping.
  • Channel mappingsettings.slackChannelMap persists per-channel mappings between CodeNow channels and Slack channels. The CodeNow channels and Slack channels are separate platforms with separate identities; the map creates a 1-click jump for handoffs.
  • “Send to Slack” on agent run output — posts a summary to the configured default channel via Slack Web API (when a token is configured) or falls back to a deep link with the summary copied to your clipboard.

Server-side /codenow slash commands + bidirectional channel sync are queued for v0.1.16.

Wiki support docs

  • New /wiki/requirements page documents Pro/Max subscription requirements, Google ADK quota gotchas, and the kit→key matrix.
  • New “CodeNow channels vs. Slack channels” section explains the difference between project-scoped CodeNow chat (Supabase Realtime) and your Slack workspace channels.
  • “Report issue ↗” link in the wiki Navbar + Footer.
  • .github/ISSUE_TEMPLATE/{bug_report,feature_request}.md so users hit a structured form rather than a blank issue.
  • Homepage version prose bumped to v0.1.15.

Editor visual polish

  • Modal padding pass. Migration Assistant / Build New Agent / Manifest Editor all gained breathing room — .modal-content padding 0 → 24px / 28px sides, .iw-section gaps + section-to-section margins bumped, modal headers gain bottom-borders, modal buttons have a min-height: 32px minimum.
  • Emojis → SVG icons. Section icons in the Migration Assistant and a few static markup spots (Claude lead-gen card, multi-apply toolbar) are now Lucide-style 16×16 strokes instead of emoji characters. Status indicators (✓, ✗, ▸, ▾) intentionally remain — they’re functional, not decoration.
  • Manifest fields autofill. Built By now pre-fills from your CodeNow profile (firstName + lastName from auth.json), and version defaults to 0.1.0 when blank. Non-destructive — won’t overwrite anything you’ve already set.
  • “No tools detected” friendlier copy. The terse “Add @tool decorators…” message is now multi-line help with examples for Python and TypeScript, and a Learn more → link to the agent-tools tutorial.
  • Google ADK quota warning on the Build New Agent kit card AND post-scaffold: Free tier is ~10 req/min, ~1500/day. Use Vertex AI or enable billing for real workloads.

Auto-import for React / Next.js / Node

  • Naive auto-import on save. The previous editor was a notepad — type useState and you had to manually add import { useState } from 'react'. Now: 47 of the most common identifiers auto-resolve their imports, get inserted at the top of the file (after 'use client' / 'use server' directives + leading comments), and a status-bar toast tells you what was added.
  • Coverage: all 25 React hooks + lifecycle helpers (useState, useEffect, useRef, useMemo, useCallback, useContext, useReducer, useTransition, useDeferredValue, useId, useSyncExternalStore, Fragment, Suspense, lazy, memo, forwardRef, createContext, …), Next.js navigation/server primitives (useRouter, usePathname, redirect, notFound, NextRequest, NextResponse, cookies, headers, revalidatePath, revalidateTag, unstable_cache, Image, Link), Node built-ins (path, fs, os, crypto, child_process named exports).
  • Honestly naive. No project-graph awareness, no re-export resolution, no same-name disambiguation. Skips locally-declared names and already-imported names. The full LSP-driven, project-aware version is queued for v0.1.16.

Embedded terminal — yellow-warning fix

The persistent “Native installation exists but ~/.local/bin is not in your PATH” Claude Code warning that fired every time the embedded terminal opened on a project where the user’s ~/.zshrc hardcoded PATH is gone. CodeNow now writes a ~/.codenow/zsh-shim/.zshrc + .zprofile that source the user’s real dotfiles and then re-prepend ~/.local/bin, /opt/homebrew/bin, /usr/local/bin to PATH. The pty spawns with ZDOTDIR pointed at the shim. Your real ~/.zshrc stays untouched.

Carried forward from v0.1.14

  • Personalized invitations (First/Last name → “Hi Sarah,”)
  • Consolidated Members modal (Members + Channels + Live coding session + Recent activity)
  • team_audit_log + system messages on join/leave/remove
  • Trial users can invite (capped at 5 seats per project)
  • Email FROM unified to no-reply@codenow.pro
  • Stale-session banner removed

Known follow-ups (v0.1.16)

  • JIRA first-class integration — sidebar with My tickets, transitions, comments, “Slack it on close” hook.
  • “Slack it” — right-click code selection → send to Slack as a code block via Web API or deep link.
  • Daily status compiler — 1-click “Send today’s status” that compiles git log + LOC + closed JIRA tickets into a Slack message.
  • Slack invite Tier B — full OAuth + chat.postMessage for true 1-click invites (today’s “Share via Slack” copies the invite to your clipboard so you can paste in Slack).
  • /codenow Slack slash commands + bidirectional channel sync — server-side Slack app at codenow.pro/slack/install.
  • Auto-import via real TypeScript Language Server — replaces the naive 47-identifier table-based v0.1.15 implementation with project-aware imports.
  • Multi-pane terminal — open a second shell side-by-side instead of cycling through tabs.
  • Fork-replay path adjustmentsrc/main.js still looks at project root for agent.py / agent.ts; needs to also scan <projectPath>/<slug>/ since v0.1.15 scaffolders write into a slug subfolder.
  • detect-agents IPC — same root-only assumption as fork-replay; same fix.
  • In-app Slack channel naming badges — visual differentiation between CodeNow channels and Slack channels in the Members modal (the wiki Requirements page already explains the distinction).
Last updated on