diff --git a/.gitignore b/.gitignore index 3b728ed..4b41c7c 100644 --- a/.gitignore +++ b/.gitignore @@ -3,3 +3,6 @@ build/ .DS_Store # Raw generated mascot art (34 MB); only the processed sprites in Resources/Mascots are needed. Regenerate with scripts/gen-mascots.sh. Sources/AgentNotch/Resources/mascots-raw/ + +# Local Wrangler state (account id, caches); never commit it. +.wrangler/ diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index d3f4153..c67e4d0 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -25,7 +25,7 @@ make run # run the binary - UI strings go through `L("English text")`. Add the Spanish and German translations in `packaging/locales/.lproj/` and run `python3 scripts/check-strings.py` (CI runs it too). - Keep the layers as they are: `Domain` knows nothing about UI or networking, `Infrastructure` talks to the system. -- The server must stay loopback-only and the app must not make network requests. +- The server must stay loopback-only. The app makes no network requests except the optional Vercel connection, which must stay off by default, hidden until configured, started only by an explicit user action, and documented in the README of every language. - Use [conventional commits](https://www.conventionalcommits.org/) (`feat:`, `fix:`, `docs:`, `chore:`). - Do not commit secrets, certificates, or personal paths. Never include a notarization password or profile. diff --git a/README.de.md b/README.de.md index 770e7b7..00c7685 100644 --- a/README.de.md +++ b/README.de.md @@ -24,7 +24,7 @@ Agent Notch macht den Notch des MacBooks zu einem Live-Dashboard für Ihre KI-Coding-Agenten. Sie sehen, was jeder Agent gerade tut, verfolgen seine Aufgabenliste Schritt für Schritt und **erlauben oder verweigern** Berechtigungsanfragen, ohne Ihre aktuelle Arbeit zu verlassen. Wenn ein Agent fertig ist, sehen Sie seine Antwort; wenn er Sie braucht, sagt der Notch es Ihnen. -Alles läuft lokal, der Server lauscht nur auf `127.0.0.1`, und es werden keine Daten irgendwohin gesendet. +Alles läuft lokal und der Server lauscht nur auf `127.0.0.1`. Deine Agent-Aktivität wird nirgendwohin gesendet: Die einzige ausgehende Anfrage der App ist die optionale Vercel-Verbindung weiter unten, und nur nachdem du sie selbst gestartet hast. > Die App erscheint je nach Systemsprache auf Englisch, Spanisch oder Deutsch, oder in der Sprache, die im Menüleistenelement gewählt wird (Sprache). Die Screenshots in dieser README zeigen die englische Oberfläche (Allow, Deny, Copy reply, Your turn …); auf Deutsch heißen sie Erlauben, Verweigern, Antwort kopieren und Sie sind dran. @@ -126,6 +126,14 @@ Während der Arbeit zeigt Gentle Shell auch die Phase, die es mit `gentle_odd_ph +### Vercel-Deployments (optional) + +Agent Notch kann Produktions-Deployments der Vercel-Projekte anzeigen, die deine Integration sieht. Es ist ausgeschaltet, bis du **Connect Vercel…** wählst: davor ist der Menüeintrag verborgen und die App stellt keine Netzwerkanfragen. + +Beim Verbinden legt die App eine Geräte-Anmeldeinformation im Schlüsselbund ab und spricht nur mit dem Agent-Notch-Worker. Der Worker verwahrt das Client Secret der Integration und tauscht es gegen ein Vercel-Token mit Lesezugriff auf Deployments; dieses Token erreicht deinen Mac nie. Die App fragt ausschließlich Lesezugriff auf Deployments an und sendet keine Prompts, keinen Code, keine Sitzungsdaten und keine Dateipfade. + +**Disconnect** entfernt die lokale Anmeldeinformation. Um auch den Zugriff der Integration zu widerrufen, entferne sie in Vercel; der Dialog sagt es. Deployment-Benachrichtigungen sind standardmäßig aus und kommen, wenn aktiviert, lautlos. + ## Kompatibel mit | | Claude Code | Codex CLI | Pi / Gentle Shell | diff --git a/README.es.md b/README.es.md index 9983203..92238c8 100644 --- a/README.es.md +++ b/README.es.md @@ -24,7 +24,7 @@ Agent Notch convierte el notch del MacBook en un panel en vivo para tus agentes de programación con IA. Ve qué está haciendo cada agente, sigue su lista de tareas paso a paso y **permite o deniega** las solicitudes de permiso sin salir de lo que estás haciendo. Cuando un agente termina, ves su respuesta; cuando te necesita, el notch te lo indica. -Funciona en local, solo escucha en `127.0.0.1` y no envía nada a ningún sitio. +Funciona en local y solo escucha en `127.0.0.1`. Nunca envía tu actividad de agentes a ningún sitio: la única petición saliente que puede hacer la app es la conexión opcional a Vercel de abajo, y solo después de que la inicies tú. > La app se muestra en español, inglés o alemán según el idioma del sistema, o el que elijas en el ítem de la barra de menús (Idioma). Las capturas de este README muestran la interfaz en inglés (Allow, Deny, Copy reply, Your turn…); en español son Permitir, Denegar, Copiar respuesta y Tu turno. @@ -126,6 +126,14 @@ Mientras trabaja, Gentle Shell también muestra la fase que reporta con `gentle_ +### Deployments de Vercel (opcional) + +Agent Notch puede mostrar los despliegues de producción de los proyectos de Vercel que vea tu integración. Está apagado hasta que elijas **Connect Vercel…**: antes de eso el ítem del menú está oculto y la app no hace ninguna petición de red. + +Al conectar, la app guarda una credencial de dispositivo en el Llavero y habla solo con el Worker de Agent Notch. El Worker custodia el client secret de la integración y lo canjea por un token de Vercel con permiso solo de lectura de deployments; ese token nunca llega a tu Mac. La app pide únicamente acceso de lectura a deployments y no envía prompts, código, datos de sesión ni rutas de archivos. + +**Disconnect** borra la credencial local. Para revocar también el acceso de la integración, elimínala en Vercel; el diálogo lo indica. Las notificaciones de deployments están apagadas por defecto y, cuando se activan, llegan en silencio. + ## Compatible con | | Claude Code | Codex CLI | Pi / Gentle Shell | diff --git a/README.md b/README.md index abf42ed..8923bfd 100644 --- a/README.md +++ b/README.md @@ -24,7 +24,7 @@ Agent Notch turns the MacBook notch into a live dashboard for your AI coding agents. See what each agent is doing, follow its task list step by step, and **Allow / Deny** permission requests without leaving what you are working on. When an agent finishes, you see its answer; when it needs you, the notch says so. -It runs locally, listens only on `127.0.0.1`, and never sends anything anywhere. +It runs locally and listens only on `127.0.0.1`. It never sends your agent activity anywhere: the only outbound request the app can make is the optional Vercel connection below, and only after you start it yourself. ## What you get @@ -124,6 +124,14 @@ While it works, Gentle Shell also shows the phase it reports with `gentle_odd_ph +### Vercel deployments (optional) + +Agent Notch can show production deployments from the Vercel projects your integration can see. It is off until you choose **Connect Vercel…**: before that the menu item is hidden and the app makes no network requests. + +When you connect, the app keeps a device credential in the Keychain and talks only to the Agent Notch Worker. The Worker holds the integration's client secret and exchanges it for a Vercel token scoped to reading deployments; that token never reaches your Mac. The app asks for deployment read access only and sends no prompts, code, session data or file paths. + +**Disconnect** removes the local credential. To revoke the integration's access as well, remove it in Vercel; the dialog says so. Deployment notifications are off by default and, when enabled, arrive silently. + ## Works with | | Claude Code | Codex CLI | Pi / Gentle Shell | diff --git a/docs/release-0.3.4.md b/docs/release-0.3.4.md new file mode 100644 index 0000000..1c6b186 --- /dev/null +++ b/docs/release-0.3.4.md @@ -0,0 +1,73 @@ +## Agent Notch 0.3.4 + +Production deployments from Vercel can now appear in the notch, quietly and only if you connect +them. + +### What's new + +- **Vercel deployments (optional).** Choose **Connect Vercel…** in the menu bar, authorize the + integration, and the notch starts showing your production deployments. While a build runs you get + a small Vercel badge with a state dot when the notch is otherwise idle; project, repository, + commit and author are in the expanded list, one hover away. It stays completely off, and hidden, + until you connect. +- **Silent by default.** Deployment notifications are off unless you enable them, and when enabled + they are passive: no sound, no interrupting banner. +- **A quiet notch.** A deployment never resizes or shifts the notch. The collapsed width comes from + agent activity only. + +### What changed + +- The collapsed `n/m` step strip is gone. Step progress is still in the expanded list, so the + collapsed notch no longer grows to show it. If you relied on it, this is the one visible + regression in this release. +- Notifications about a deployment that finished while the app was closed are no longer announced; + only transitions observed while it runs notify. +- The app no longer sends anything anywhere without your action: the single outbound request it can + make is the Vercel connection you start yourself. The privacy section of the README says exactly + what leaves the Mac and what does not. + +### What's fixed + +- Connecting a personal Vercel account works: the token exchange returns no team, and the Worker no + longer rejects it. +- A redirect from the authorization endpoint is refused instead of leaving an opaque Cloudflare + error page. +- An expired or revoked Vercel token now asks you to reconnect instead of showing a generic network + failure. + +### Upgrading from 0.3.3 + +Quit Agent Notch, replace the app in Applications, and reopen it. The hook bridge, the installer and +the Pi extension are unchanged. Vercel stays disconnected until you connect it. + +### Install + +1. Download `AgentNotch-0.3.4.dmg`, drag **Agent Notch** to Applications. +2. This build is **not notarized**: the first time, try to open it, then go to + **System Settings → Privacy & Security**, scroll down to *Security*, click **Open Anyway** and + confirm. +3. Click **Connect** when the app offers it (or choose **Connect agents…** from the menu bar item). +4. Restart any running Claude Code / Codex / Pi session. +5. Optional: choose **Connect Vercel…** and authorize. Only production deployments of the projects + your integration can see are read. + +On macOS 14 the installer needs `jq` (`brew install jq`); macOS 15 and later include it. + +### Known limitations + +- Not notarized yet (see above). +- The Vercel integration is not listed publicly. Connecting uses the Agent Notch integration; if you + fork the project, deploy your own Worker and register your own integration + (`integrations/vercel-worker/README.md`). +- Disconnecting removes the local credential but does not revoke the token in Vercel; remove the + integration in Vercel for that. +- Gentle Shell phase poses require explicit `gentle_odd_phase` reports. +- Codex task-list rendering remains untested on real runs. + +### Checksum + +SHA-256 for `AgentNotch-0.3.4.dmg`: + +```text +7f385526d10f80269676023e711c2a5830eb9fae79884d5a1528934146337876 AgentNotch-0.3.4.dmg +``` diff --git a/packaging/Info.plist b/packaging/Info.plist index db595d5..b230278 100644 --- a/packaging/Info.plist +++ b/packaging/Info.plist @@ -11,8 +11,8 @@ CFBundleExecutableAgentNotch CFBundleIconFileAppIcon CFBundlePackageTypeAPPL - CFBundleShortVersionString0.3.2 - CFBundleVersion6 + CFBundleShortVersionString0.3.4 + CFBundleVersion8 LSMinimumSystemVersion14.0 LSUIElement NSHighResolutionCapable