Commit Graph
2001 Commits
Author SHA1 Message Date
abkslmandnucleic 0404147164 nvrsion: Add: Fix truncation of “Run now” button text in New idea composer, add model selector support for Claude Fable 5, refactor Project Workflow Enhancement, add Wait Button Logic, update iOS remote to match Chat Message Queue Display, block sandboxed/controlled agents from running git commands via mcp__nucleic__host_exec using container-level shims, add chat icon animation to bounce when chat is blocked for >60 seconds, add “Cmd+Shift+N” shortcut to open a floating chat composer over the window, remove “Run now” button from “New idea” composer, and shield Git command execution by scanning inside ‘-c’ strings.
Nucleic-Promote: 1
Co-authored-by: Nucleic <[email protected]>
2026-07-01 19:01:20 -07:00
abkslmandClaude Opus 4.8 4b2d604e74 Surface real API-retry cause + fix Claude status detection
Three related fixes so a provider-side incident (like an Anthropic 529
overload storm) is legible in the app instead of an opaque loop.

1. api_retry message (ClaudeStreamDecoder): the CLI's api_retry payload
   carries no `message` — only error/error_status/attempt/max_retries —
   so the transcript always rendered the generic "API retry". Compose the
   real cause, e.g. "Anthropic API overloaded (529) — retrying 2/10", and
   retain the raw payload for downstream.

2. Claude status matching (StatusFeed): Anthropic titles model outages by
   SKU ("Elevated errors on Claude Opus 4.8"), which the old narrow
   "claude api"/"claude code" patterns matched neither of — so the exact
   incidents that stall the agent were dropped and never lit the
   indicator. Watch Claude Code, the API, the model families, and a
   `claude` catch-all so no Claude incident is silently hidden.

3. Refresh status on agent error (AppStore): an agent error is often the
   first sign of a provider incident and can beat the 30s poll. On any
   .error event, map the session's backend to its provider (new total
   StatusProvider.forBackend) and force-refresh that provider's feed via
   refreshStatusFeedOnError, coalesced to one refresh per provider per
   20s so an api_retry storm can't hammer the status page.

Tests: locks the composed api_retry text and rewrites the Claude status
tests around the corrected behavior (the old sample asserted a
model-named incident was dropped — the bug).

Co-Authored-By: Claude Opus 4.8 <[email protected]>
2026-07-01 18:18:29 -07:00
abkslmandnucleic 984cbf908b nvrsion: promote trunk to dev
Nucleic-Promote: 1
Co-authored-by: Nucleic <[email protected]>
2026-07-01 17:55:43 -07:00
abkslmandClaude Opus 4.8 e98de76ddf Harden shared approval-server control socket against desync
The Nucleic Control approval server ("mcp__nucleic__approve", passed via
--permission-prompt-tool) is shared per control container over one
vsock-relayed unix socket and cached for the app's lifetime. A single
socket desync used to brick the whole container: every new session's
claude failing MCP init ("Available MCP tools: none") and every running
session stalling on its next gated call, with no self-heal until an app
restart.

Four fixes:

1. Self-heal (MCPApprovalServer): start(unixSocketPath:) re-validates on
   every call — keep the listener only if the fd is held and the file is
   still the exact socket inode we bound; otherwise tear down and rebind.
   Bind logic extracted into performUnixBind so first bind and rebind
   can't drift.

2. Lifecycle coupling (ContainerManager + NucleicApp): teardownShared /
   recreateShared release the container-scoped approval server + socket
   via a new onSharedContainerRemoved hook, so a permanently-removed
   container never leaves a stale server behind.

3. Fail loud (ClaudeCodeBackend): after start(unixSocketPath:), assert
   isUnixSocketListening — mirroring the TCP port != 0 guard — so a
   desynced socket throws a retryable spawnFailed instead of the CLI's
   opaque "Available MCP tools: none".

4. Off /tmp (ApprovalServerRegistry): the control socket moves to
   app-owned Application Support/Nucleic/run so the OS can't reap it out
   from under a live listener. Still short enough for the AF_UNIX cap.

Adds a self-heal regression test (unlink socket -> next start rebinds and
serves again).

Co-Authored-By: Claude Opus 4.8 <[email protected]>
2026-07-01 17:30:12 -07:00
abkslmandnucleic 8273748bfd nvrsion: Add: Change “Merge” button text to “Ship” in HomeView.swift and SessionDetailView.swift; apply “user-select: none” to non-selectable elements in website/index.html; display images in chat with file preview instead of including them in the transcript; fix message queue display so queued messages appear in order above the composer; refactor ClaudeLoginKeychain.swift and SessionController.swift to handle session logout gracefully.
Nucleic-Promote: 1
Co-authored-by: Nucleic <[email protected]>
2026-07-01 16:13:38 -07:00
abkslmandnucleic f14eeb3bbf nvrsion: Add: Remove “sandboxed agents on Nucleic Control” from website/index.html.
Nucleic-Promote: 1
Co-authored-by: Nucleic <[email protected]>
2026-06-30 14:37:07 -07:00
abkslmandnucleic 7748a0eae0 nvrsion: Add: Fix footer alignment on mobile by aligning “Nucleic,” “Copyright,” and “Made with Nucleic” left under the branding while keeping “Nucleic” left-aligned.
Nucleic-Promote: 1
Co-authored-by: Nucleic <[email protected]>
2026-06-29 22:44:10 -07:00
abkslm 99169aa49a Add self-hosted runner fonts 2026-06-29 21:08:38 -07:00
abkslm 0f6c6d234f Merge branch 'dev' into nucleic/trunk 2026-06-29 21:07:43 -07:00
abkslmandnucleic 11701a5218 nvrsion: Add external-.woff2 setup to prioritize performance in Google Fonts IP collection across website/_headers, website/cockpit-mobile.html, website/cockpit.html, website/fonts/fonts.css, website/index.html, website/privacy.html, website/terms.html.
Nucleic-Promote: 1
Co-authored-by: Nucleic <[email protected]>
2026-06-29 21:07:43 -07:00
abkslmandnucleic 4445ec2ba8 Prevent Google Fonts IP Collection
Nucleic-Session: 70972BA4-18A4-4077-AFC2-9CD7F5873D2F
Co-authored-by: Nucleic <[email protected]>
2026-06-29 21:06:23 -07:00
abkslmandnucleic 39b8a158e1 Prevent Google Fonts IP Collection
Nucleic-Session: 70972BA4-18A4-4077-AFC2-9CD7F5873D2F
Co-authored-by: Nucleic <[email protected]>
2026-06-29 21:06:00 -07:00
abkslmandnucleic b80f4718aa Prevent Google Fonts IP Collection
Nucleic-Session: 70972BA4-18A4-4077-AFC2-9CD7F5873D2F
Co-authored-by: Nucleic <[email protected]>
2026-06-29 21:05:55 -07:00
abkslmandnucleic af875217a5 Prevent Google Fonts IP Collection
Nucleic-Session: 70972BA4-18A4-4077-AFC2-9CD7F5873D2F
Co-authored-by: Nucleic <[email protected]>
2026-06-29 21:05:49 -07:00
abkslmandnucleic e4f0b3e16c Prevent Google Fonts IP Collection
Nucleic-Session: 70972BA4-18A4-4077-AFC2-9CD7F5873D2F
Co-authored-by: Nucleic <[email protected]>
2026-06-29 21:05:42 -07:00
abkslmandnucleic 40442acf34 Prevent Google Fonts IP Collection
Nucleic-Session: 70972BA4-18A4-4077-AFC2-9CD7F5873D2F
Co-authored-by: Nucleic <[email protected]>
2026-06-29 21:05:37 -07:00
abkslmandnucleic 62fa1bb5a5 Prevent Google Fonts IP Collection
Nucleic-Session: 70972BA4-18A4-4077-AFC2-9CD7F5873D2F
Co-authored-by: Nucleic <[email protected]>
2026-06-29 21:05:24 -07:00
abkslmandnucleic 16265b0351 nvrsion: Add iOS mockup file, fix activity chart jumping animation so scrolling locks on the app mockup, and prevent Google Fonts IP Collection.
Nucleic-Promote: 1
Co-authored-by: Nucleic <[email protected]>
2026-06-29 20:59:10 -07:00
abkslm 18c6b0f175 Merge branch 'dev' into nucleic/trunk 2026-06-29 20:59:10 -07:00
abkslmandnucleic 90851f58fe Prevent Google Fonts IP Collection
Nucleic-Session: 70972BA4-18A4-4077-AFC2-9CD7F5873D2F
Co-authored-by: Nucleic <[email protected]>
2026-06-29 20:58:02 -07:00
abkslmandnucleic a97aa5b3d4 Prevent Google Fonts IP Collection
Nucleic-Session: 70972BA4-18A4-4077-AFC2-9CD7F5873D2F
Co-authored-by: Nucleic <[email protected]>
2026-06-29 20:57:50 -07:00
abkslmandnucleic d7f5ab39c1 Prevent Google Fonts IP Collection
Nucleic-Session: 70972BA4-18A4-4077-AFC2-9CD7F5873D2F
Co-authored-by: Nucleic <[email protected]>
2026-06-29 20:57:47 -07:00
abkslmandnucleic 4d4aef8485 Prevent Google Fonts IP Collection
Nucleic-Session: 70972BA4-18A4-4077-AFC2-9CD7F5873D2F
Co-authored-by: Nucleic <[email protected]>
2026-06-29 20:57:28 -07:00
abkslmandnucleic 0f45c3ff24 Prevent Google Fonts IP Collection
Nucleic-Session: 70972BA4-18A4-4077-AFC2-9CD7F5873D2F
Co-authored-by: Nucleic <[email protected]>
2026-06-29 20:57:22 -07:00
abkslmandnucleic 48456d9e9e Prevent Google Fonts IP Collection
Nucleic-Session: 70972BA4-18A4-4077-AFC2-9CD7F5873D2F
Co-authored-by: Nucleic <[email protected]>
2026-06-29 20:56:31 -07:00
abkslmandnucleic 1a00fc82f6 Create iOS Mockup File
Nucleic-Session: 19B02B2B-A53A-42CC-BB40-729D365BA598
Co-authored-by: Nucleic <[email protected]>
2026-06-29 20:55:18 -07:00
abkslmandnucleic 3f02a47676 Create iOS Mockup File
Nucleic-Session: 19B02B2B-A53A-42CC-BB40-729D365BA598
Co-authored-by: Nucleic <[email protected]>
2026-06-29 20:55:00 -07:00
abkslmandnucleic f23f5c6adc Create iOS Mockup File
Nucleic-Session: 19B02B2B-A53A-42CC-BB40-729D365BA598
Co-authored-by: Nucleic <[email protected]>
2026-06-29 20:54:31 -07:00
abkslmandnucleic bfafd922ca Create iOS Mockup File
Nucleic-Session: 19B02B2B-A53A-42CC-BB40-729D365BA598
Co-authored-by: Nucleic <[email protected]>
2026-06-29 20:54:25 -07:00
abkslmandnucleic 83b43880ec Create iOS Mockup File
Nucleic-Session: 19B02B2B-A53A-42CC-BB40-729D365BA598
Co-authored-by: Nucleic <[email protected]>
2026-06-29 20:54:21 -07:00
abkslmandnucleic da4253fc3f Create iOS Mockup File
Nucleic-Session: 19B02B2B-A53A-42CC-BB40-729D365BA598
Co-authored-by: Nucleic <[email protected]>
2026-06-29 20:53:55 -07:00
abkslmandnucleic 227e0e2111 Create iOS Mockup File
Nucleic-Session: 19B02B2B-A53A-42CC-BB40-729D365BA598
Co-authored-by: Nucleic <[email protected]>
2026-06-29 20:53:36 -07:00
abkslmandnucleic 752f7c7170 Create iOS Mockup File
Nucleic-Session: 19B02B2B-A53A-42CC-BB40-729D365BA598
Co-authored-by: Nucleic <[email protected]>
2026-06-29 20:53:30 -07:00
abkslmandnucleic 352108f23a Create iOS Mockup File
Nucleic-Session: 19B02B2B-A53A-42CC-BB40-729D365BA598
Co-authored-by: Nucleic <[email protected]>
2026-06-29 20:53:25 -07:00
abkslmandnucleic b854e26697 nvrsion: Add: Align footer text in a vertical stack below name/copyright and center-align it vertically with the Nucleic title.
Nucleic-Promote: 1
Co-authored-by: Nucleic <[email protected]>
2026-06-29 20:43:34 -07:00
abkslm ad3090d64e Merge branch 'dev' into nucleic/trunk 2026-06-29 20:43:34 -07:00
abkslmandnucleic dcf8edd86c Footer Text Addition
Nucleic-Session: 0C050753-5F34-411E-A0CA-99F780A0C710
Co-authored-by: Nucleic <[email protected]>
2026-06-29 20:43:26 -07:00
abkslmandnucleic bb381a7493 Footer Text Addition
Nucleic-Session: 0C050753-5F34-411E-A0CA-99F780A0C710
Co-authored-by: Nucleic <[email protected]>
2026-06-29 20:43:17 -07:00
abkslmandnucleic f2dc753140 nvrsion: Add updated language: Change “Nucleic is a conductor” to “Nucleic is an orchestrator” and update “conductor” in legal documents to “orchestrator”.
Nucleic-Promote: 1
Co-authored-by: Nucleic <[email protected]>
2026-06-29 20:39:09 -07:00
abkslm 614d1f6fda Merge branch 'dev' into nucleic/trunk 2026-06-29 20:39:09 -07:00
abkslmandnucleic ff639b7f90 Review Privacy Policy Draft
Nucleic-Session: 4F28F8F6-E44D-492A-883F-3B089383607A
Co-authored-by: Nucleic <[email protected]>
2026-06-29 20:38:57 -07:00
abkslmandnucleic 47f1546164 nvrsion: Add: Update website/privacy.html to remove “in git worktrees”: Nucleic orchestrates coding agents in your own machine; your code is read and written locally.
Nucleic-Promote: 1
Co-authored-by: Nucleic <[email protected]>
2026-06-29 20:37:21 -07:00
abkslm ec20cfa2a5 Merge branch 'dev' into nucleic/trunk 2026-06-29 20:37:21 -07:00
abkslmandnucleic 4d3b82bb8a Review Privacy Policy Draft
Nucleic-Session: 4F28F8F6-E44D-492A-883F-3B089383607A
Co-authored-by: Nucleic <[email protected]>
2026-06-29 20:37:13 -07:00
abkslmandnucleic 5e03e07a8e nvrsion: Add: Adjust privacy policy (website/privacy.html) to reflect Google Fonts IP Collection adjustment.
Nucleic-Promote: 1
Co-authored-by: Nucleic <[email protected]>
2026-06-29 20:29:55 -07:00
abkslm 76d041a588 Merge branch 'dev' into nucleic/trunk 2026-06-29 20:29:55 -07:00
abkslmandnucleic 85fc7155bc Prevent Google Fonts IP Collection
Nucleic-Session: 70972BA4-18A4-4077-AFC2-9CD7F5873D2F
Co-authored-by: Nucleic <[email protected]>
2026-06-29 20:29:39 -07:00
abkslmandnucleic 3f5b54f481 Prevent Google Fonts IP Collection
Nucleic-Session: 70972BA4-18A4-4077-AFC2-9CD7F5873D2F
Co-authored-by: Nucleic <[email protected]>
2026-06-29 20:29:37 -07:00
abkslmandnucleic 9fac148b4d nvrsion: Add: Prevent Google Fonts IP Collection to website/cockpit-mobile.html, website/cockpit.html, website/privacy.html, website/terms.html.
Nucleic-Promote: 1
Co-authored-by: Nucleic <[email protected]>
2026-06-29 16:09:49 -07:00
abkslm e4ebf60bc5 Merge branch 'dev' into nucleic/trunk 2026-06-29 16:09:49 -07:00