Enhance CrewCode Hub with updates, security details, and QOL improvements #29
Annotations
24 errors and 3 warnings
|
verify (macos-latest)
Process completed with exit code 1.
|
|
src/renderer/src/components/workspaces/mobile-workspace-drawer.test.ts > mobile workspace drawer > renders mobile sidebars as horizontal off-canvas overlays, never bottom sheets:
src/renderer/src/components/workspaces/mobile-workspace-drawer.test.ts#L24
AssertionError: expected '' to contain '.ws-drawer.side.left {'
- Expected
+ Received
- .ws-drawer.side.left {
❯ src/renderer/src/components/workspaces/mobile-workspace-drawer.test.ts:24:32
|
|
src/renderer/src/components/chat/mobile-chat-layout.test.ts > mobile solo chat layout > keeps embedded terminal and Git side panes out of the solo-chat column:
src/renderer/src/components/chat/mobile-chat-layout.test.ts#L38
AssertionError: expected '/* CrewCode desktop kit — extends col…' to contain '.chat-pane-row > .gs { display: none …'
- Expected
+ Received
- .chat-pane-row > .gs { display: none !important; }
+ /* CrewCode desktop kit — extends colors_and_type.css */
+ * { box-sizing: border-box; }
+ html, body, #root { margin: 0; padding: 0; height: 100%; overflow: hidden; }
+ body { background: #000; font-family: var(--font-family-sans); color: var(--foreground); -webkit-font-smoothing: antialiased; overscroll-behavior: none; }
+ .provider-logo { transition: filter 140ms ease, opacity 140ms ease; }
+ /* Monochrome provider SVGs are black when loaded as <img>; invert only in dark mode. */
+ body:not(.light) .provider-logo-monochrome { filter: invert(0.92) sepia(0.08) saturate(0.6); }
+ body.light .provider-logo-monochrome { filter: none; }
+
+ /* App-wide replacement for native `title` bubbles. */
+ .cc-tooltip {
+ position: fixed;
+ z-index: 12000;
+ max-width: min(320px, calc(100vw - 24px));
+ padding: 7px 10px;
+ transform: translate(-50%, -100%);
+ pointer-events: none;
+ color: var(--foreground);
+ background: color-mix(in srgb, var(--popover) 94%, #000);
+ border: 1px solid color-mix(in srgb, var(--border) 72%, var(--muted-foreground));
+ border-radius: 6px;
+ box-shadow: 0 5px 16px rgba(0, 0, 0, .38);
+ font-family: var(--font-family-sans);
+ font-size: 11.5px;
+ font-weight: 500;
+ line-height: 1.35;
+ text-align: center;
+ white-space: normal;
+ transform-origin: 52% calc(100% + 4px);
+ rotate: var(--cc-tooltip-tilt, -2.5deg);
+ animation: ccTooltipIn 120ms cubic-bezier(.2, .8, .2, 1) both;
+ }
+ .cc-tooltip-below { transform-origin: 48% -4px; }
+ .cc-tooltip-below { transform: translate(-50%, 0); }
+ .cc-tooltip::after {
+ content: '';
+ position: absolute;
+ left: 50%;
+ bottom: -4px;
+ width: 7px;
+ height: 7px;
+ transform: translateX(-50%) rotate(45deg);
+ background: inherit;
+ border-right: 1px solid color-mix(in srgb, var(--border) 72%, var(--muted-foreground));
+ border-bottom: 1px solid color-mix(in srgb, var(--border) 72%, var(--muted-foreground));
+ }
+ .cc-tooltip-below::after {
+ top: -4px;
+ bottom: auto;
+ border: 0;
+ border-left: 1px solid color-mix(in srgb, var(--border) 72%, var(--muted-foreground));
+ border-top: 1px solid color-mix(in srgb, var(--border) 72%, var(--muted-foreground));
+ }
+ @Keyframes ccTooltipIn {
+ from { opacity: 0; rotate: var(--cc-tooltip-tilt, -2.5deg); scale: .97; }
+ to { opacity: 1; rotate: var(--cc-tooltip-tilt, -2.5deg); scale: 1; }
+ }
+
+ /* ----- Window shell ----- */
+ .loading-screen {
+ position: fixed;
+ inset: 0;
+ z-index: 10000;
+ display: grid;
+ place-items: center;
+ overflow: hidden;
+ background:
+ radial-gradient(circle at 50% 42%, color-mix(in srgb, var(--primary, #285a48) 22%, transparent) 0 15%, transparent 42%),
+ linear-gradient(180deg, #111711 0%, #0f120f 52%, #080a08 100%);
+ color: var(--foreground);
+ transition: opacity 420ms ease, transform 420ms ease;
+ }
+ body.light .loading-screen {
+ background:
+ radial-gradient(circle at 50% 42%, color-mix(in srgb, var(--primary, #285a48) 16%, transparent) 0 14%, transparent 42%),
+ linear-gradient(180deg, #fbfbf7 0%, #f3f4ef 55%, #e9ece5 100%);
+ }
+ .loading-screen.is-exiting {
+ opacity: 0;
+ transform: scale(1.015);
+ pointer-events: none;
+ }
+ .loading-screen::before,
+ .loading-screen::after {
+ content: "";
+ position: absolute;
+ inset: 26px;
+ border: 1px solid color-mix(in srgb, var(--border) 72%, transparent);
+ border-radius: 18px;
+ pointer-events: none;
+ }
+ .loading-screen::after {
+ inset: auto 50% 18%;
+ width: 1px;
+ height: 28%;
+ border: 0;
+ border-left: 1px solid color-mix(in srgb, var(--border) 86%, transparent);
+ transform: translateX(-50%);
+ opacity: 0.75;
+ }
+ .loading-screen-mark {
+ position: relative;
+ z-index: 1;
+ display: grid;
+ justify-items: center;
+ gap: 24px;
+ animation: loadingMarkIn 760ms cubic-bezier(.2
|
|
src/renderer/src/components/canvas/CanvasMode.test.ts > CanvasMode chat pane bar > disables the mode prompt toggle after session context is delivered:
src/renderer/src/hooks/useMobileLayout.ts#L27
ReferenceError: window is not defined
❯ src/renderer/src/hooks/useMobileLayout.ts:27:5
❯ commitHookEffectListMount node_modules/react-test-renderer/cjs/react-test-renderer.development.js:13038:26
❯ commitPassiveMountOnFiber node_modules/react-test-renderer/cjs/react-test-renderer.development.js:14461:11
❯ commitPassiveMountEffects_complete node_modules/react-test-renderer/cjs/react-test-renderer.development.js:14421:9
❯ commitPassiveMountEffects_begin node_modules/react-test-renderer/cjs/react-test-renderer.development.js:14408:7
❯ commitPassiveMountEffects node_modules/react-test-renderer/cjs/react-test-renderer.development.js:14396:3
❯ flushPassiveEffectsImpl node_modules/react-test-renderer/cjs/react-test-renderer.development.js:16287:3
❯ flushPassiveEffects node_modules/react-test-renderer/cjs/react-test-renderer.development.js:16236:14
❯ node_modules/react-test-renderer/cjs/react-test-renderer.development.js:16051:9
❯ flushActQueue node_modules/react/cjs/react.development.js:2667:24
|
|
src/renderer/src/components/canvas/CanvasMode.test.ts > CanvasMode chat pane bar > toggles the per-chat mode prompt while the session is fresh:
src/renderer/src/hooks/useMobileLayout.ts#L27
ReferenceError: window is not defined
❯ src/renderer/src/hooks/useMobileLayout.ts:27:5
❯ commitHookEffectListMount node_modules/react-test-renderer/cjs/react-test-renderer.development.js:13038:26
❯ commitPassiveMountOnFiber node_modules/react-test-renderer/cjs/react-test-renderer.development.js:14461:11
❯ commitPassiveMountEffects_complete node_modules/react-test-renderer/cjs/react-test-renderer.development.js:14421:9
❯ commitPassiveMountEffects_begin node_modules/react-test-renderer/cjs/react-test-renderer.development.js:14408:7
❯ commitPassiveMountEffects node_modules/react-test-renderer/cjs/react-test-renderer.development.js:14396:3
❯ flushPassiveEffectsImpl node_modules/react-test-renderer/cjs/react-test-renderer.development.js:16287:3
❯ flushPassiveEffects node_modules/react-test-renderer/cjs/react-test-renderer.development.js:16236:14
❯ node_modules/react-test-renderer/cjs/react-test-renderer.development.js:16051:9
❯ flushActQueue node_modules/react/cjs/react.development.js:2667:24
|
|
src/main/pty-service.yuheard.test.ts > PtyService YuHeard bundle boundary > uses injected server access and statically imported wrappers for a Fish shell:
src/main/pty-service.yuheard.test.ts#L80
AssertionError: expected "vi.fn()" to be called with arguments: [ '/usr/bin/fish', …(2) ]
Received:
1st vi.fn() call:
[
- "/usr/bin/fish",
+ "/bin/bash",
[
"-C",
"yuheard-init",
],
- ObjectContaining {
- "env": ObjectContaining {
- "PATH": StringMatching /^\/tmp\/crewcode-yuheard-wrap\/pane-1:/,
+ {
+ "cols": 80,
+ "cwd": "/tmp",
+ "env": {
+ "ACTIONS_ORCHESTRATION_ID": "0f925d94-57f6-44a0-b16d-30d185d195e1.verify.macos-latest",
+ "ACTIONS_RUNNER_ACTION_ARCHIVE_CACHE": "/Users/runner/actionarchivecache",
+ "AGENT_TOOLSDIRECTORY": "/Users/runner/hostedtoolcache",
+ "ANDROID_HOME": "/Users/runner/Library/Android/sdk",
+ "ANDROID_NDK": "/Users/runner/Library/Android/sdk/ndk/27.3.13750724",
+ "ANDROID_NDK_HOME": "/Users/runner/Library/Android/sdk/ndk/27.3.13750724",
+ "ANDROID_NDK_LATEST_HOME": "/Users/runner/Library/Android/sdk/ndk/29.0.14206865",
+ "ANDROID_NDK_ROOT": "/Users/runner/Library/Android/sdk/ndk/27.3.13750724",
+ "ANDROID_SDK_ROOT": "/Users/runner/Library/Android/sdk",
+ "BASE_URL": "/",
+ "BOOTSTRAP_HASKELL_INSTALL_NO_STACK_HOOK": "1",
+ "BOOTSTRAP_HASKELL_NONINTERACTIVE": "1",
+ "CHROMEWEBDRIVER": "/usr/local/share/chromedriver-mac-arm64",
+ "CI": "true",
+ "COLOR": "0",
+ "COLORTERM": "truecolor",
+ "DEV": "1",
+ "DOTNET_MULTILEVEL_LOOKUP": "0",
+ "DOTNET_NOLOGO": "1",
+ "DOTNET_SKIP_FIRST_TIME_EXPERIENCE": "1",
+ "EDGEWEBDRIVER": "/usr/local/share/edge_driver",
+ "EDITOR": "vi",
+ "ENABLE_RUNNER_TRACING": "true",
+ "FORCE_COLOR": "1",
+ "FORCE_TTY": "",
+ "GECKOWEBDRIVER": "/opt/homebrew/opt/geckodriver/bin",
+ "GITHUB_ACTION": "__run_4",
+ "GITHUB_ACTIONS": "true",
+ "GITHUB_ACTION_REF": "",
+ "GITHUB_ACTION_REPOSITORY": "",
+ "GITHUB_ACTOR": "CjLogic",
+ "GITHUB_ACTOR_ID": "78663554",
+ "GITHUB_API_URL": "https://api.github.com",
+ "GITHUB_ARTIFACTS": "/Users/runner/work/_temp/_runner_file_commands/artifacts_40d20794-5215-45bb-9029-a3c19b9b3cc5",
+ "GITHUB_ARTIFACTS_LIST": "/Users/runner/work/_temp/_runner_file_commands/artifacts_list_40d20794-5215-45bb-9029-a3c19b9b3cc5",
+ "GITHUB_BASE_REF": "dev",
+ "GITHUB_ENV": "/Users/runner/work/_temp/_runner_file_commands/set_env_40d20794-5215-45bb-9029-a3c19b9b3cc5",
+ "GITHUB_EVENT_NAME": "pull_request",
+ "GITHUB_EVENT_PATH": "/Users/runner/work/_temp/_github_workflow/event.json",
+ "GITHUB_GRAPHQL_URL": "https://api.github.com/graphql",
+ "GITHUB_HEAD_REF": "main",
+ "GITHUB_JOB": "verify",
+ "GITHUB_OUTPUT": "/Users/runner/work/_temp/_runner_file_commands/set_output_40d20794-5215-45bb-9029-a3c19b9b3cc5",
+ "GITHUB_PATH": "/Users/runner/work/_temp/_runner_file_commands/add_path_40d20794-5215-45bb-9029-a3c19b9b3cc5",
+ "GITHUB_REF": "refs/pull/3/merge",
+ "GITHUB_REF_NAME": "3/merge",
+ "GITHUB_REF_PROTECTED": "false",
+ "GITHUB_REF_TYPE": "branch",
+ "GITHUB_REPOSITORY": "OnPoint-Dev-Tools/crewcode",
+ "GITHUB_REPOSITORY_ID": "1326077029",
+ "GITHUB_REPOSITORY_OWNER": "OnPoint-Dev-Tools",
+ "GITHUB_REPOSITORY_OWNER_ID": "278743206",
+ "GITHUB_RETENTION_DAYS": "90",
+ "GITHUB_RUN_ATTEMPT": "1",
+ "GITHUB_RUN_ID": "33210265124",
+ "GITHUB_RUN_NUMBER": "29",
+ "GITHUB_SERVER_URL": "https://github.com",
+ "GITHUB_SHA": "06efbabf04fc4a92bd01bd2eae7d21730f71ec34",
+ "GITHUB_STATE": "/Users/runner/work/_temp/_runner_file_commands/save_state_40d20794-5215-45bb-9029-a3c19b9b3cc5",
+ "GITHUB_STEP_SUMMARY": "/Users/runner/work/_temp/_runner_file_commands/step_summary_40d20794-5215-45bb-9029-a3c19b9b3cc5",
+ "GITHUB_TRIGGERING_ACTOR": "CjLogic",
+ "GITHUB_WORKFLOW": "CI",
+ "GITHUB_WORKFLOW_REF": "OnPoint-Dev-Tools/crewcode/.github/workflows/ci.yml@refs/pull/3/merge",
+ "GITHUB_WORKFLOW_SHA": "06efbabf04fc4a92bd01bd2eae7d21730f71ec34",
+
|
|
src/main/hub-relay.test.ts > authenticated encrypted Hub relay > applies Brain authorization reductions immediately and stops affected resources:
src/main/hub-relay.test.ts#L564
AssertionError: expected { type: 'rpcResult', …(1) } to match object { type: 'rpcResult', …(1) }
(5 matching properties omitted from actual)
- Expected
+ Received
@@ -1,11 +1,11 @@
{
"response": {
"ok": true,
"result": {
"roots": [
- "/var/folders/df/djsxfhc17x95674wsm_g8s980000gn/T/crewcode-hub-relay-UFuuVq",
+ "/private/var/folders/df/djsxfhc17x95674wsm_g8s980000gn/T/crewcode-hub-relay-UFuuVq",
],
"scopes": [
"terminal",
"workspace:write",
],
❯ src/main/hub-relay.test.ts:564:118
|
|
src/main/brain-authorization-policy.test.ts > Brain authorization policy > persists canonical roots, scopes, and local audit across restart:
src/main/brain-authorization-policy.test.ts#L14
AssertionError: expected { version: 1, …(4) } to match object { scopes: [ 'agent', …(1) ], …(2) }
(2 matching properties omitted from actual)
- Expected
+ Received
@@ -4,11 +4,11 @@
"at": 200,
"userId": "owner",
},
],
"roots": [
- "/var/folders/df/djsxfhc17x95674wsm_g8s980000gn/T/brain-policy-wp9BRE/workspace",
+ "/private/var/folders/df/djsxfhc17x95674wsm_g8s980000gn/T/brain-policy-wp9BRE/workspace",
],
"scopes": [
"agent",
"workspace:read",
],
❯ src/main/brain-authorization-policy.test.ts:14:21
|
|
verify (ubuntu-latest)
Process completed with exit code 1.
|
|
src/renderer/src/components/workspaces/mobile-workspace-drawer.test.ts > mobile workspace drawer > renders mobile sidebars as horizontal off-canvas overlays, never bottom sheets:
src/renderer/src/components/workspaces/mobile-workspace-drawer.test.ts#L24
AssertionError: expected '' to contain '.ws-drawer.side.left {'
- Expected
+ Received
- .ws-drawer.side.left {
❯ src/renderer/src/components/workspaces/mobile-workspace-drawer.test.ts:24:32
|
|
src/renderer/src/components/chat/mobile-chat-layout.test.ts > mobile solo chat layout > keeps embedded terminal and Git side panes out of the solo-chat column:
src/renderer/src/components/chat/mobile-chat-layout.test.ts#L38
AssertionError: expected '/* CrewCode desktop kit — extends col…' to contain '.chat-pane-row > .gs { display: none …'
- Expected
+ Received
- .chat-pane-row > .gs { display: none !important; }
+ /* CrewCode desktop kit — extends colors_and_type.css */
+ * { box-sizing: border-box; }
+ html, body, #root { margin: 0; padding: 0; height: 100%; overflow: hidden; }
+ body { background: #000; font-family: var(--font-family-sans); color: var(--foreground); -webkit-font-smoothing: antialiased; overscroll-behavior: none; }
+ .provider-logo { transition: filter 140ms ease, opacity 140ms ease; }
+ /* Monochrome provider SVGs are black when loaded as <img>; invert only in dark mode. */
+ body:not(.light) .provider-logo-monochrome { filter: invert(0.92) sepia(0.08) saturate(0.6); }
+ body.light .provider-logo-monochrome { filter: none; }
+
+ /* App-wide replacement for native `title` bubbles. */
+ .cc-tooltip {
+ position: fixed;
+ z-index: 12000;
+ max-width: min(320px, calc(100vw - 24px));
+ padding: 7px 10px;
+ transform: translate(-50%, -100%);
+ pointer-events: none;
+ color: var(--foreground);
+ background: color-mix(in srgb, var(--popover) 94%, #000);
+ border: 1px solid color-mix(in srgb, var(--border) 72%, var(--muted-foreground));
+ border-radius: 6px;
+ box-shadow: 0 5px 16px rgba(0, 0, 0, .38);
+ font-family: var(--font-family-sans);
+ font-size: 11.5px;
+ font-weight: 500;
+ line-height: 1.35;
+ text-align: center;
+ white-space: normal;
+ transform-origin: 52% calc(100% + 4px);
+ rotate: var(--cc-tooltip-tilt, -2.5deg);
+ animation: ccTooltipIn 120ms cubic-bezier(.2, .8, .2, 1) both;
+ }
+ .cc-tooltip-below { transform-origin: 48% -4px; }
+ .cc-tooltip-below { transform: translate(-50%, 0); }
+ .cc-tooltip::after {
+ content: '';
+ position: absolute;
+ left: 50%;
+ bottom: -4px;
+ width: 7px;
+ height: 7px;
+ transform: translateX(-50%) rotate(45deg);
+ background: inherit;
+ border-right: 1px solid color-mix(in srgb, var(--border) 72%, var(--muted-foreground));
+ border-bottom: 1px solid color-mix(in srgb, var(--border) 72%, var(--muted-foreground));
+ }
+ .cc-tooltip-below::after {
+ top: -4px;
+ bottom: auto;
+ border: 0;
+ border-left: 1px solid color-mix(in srgb, var(--border) 72%, var(--muted-foreground));
+ border-top: 1px solid color-mix(in srgb, var(--border) 72%, var(--muted-foreground));
+ }
+ @Keyframes ccTooltipIn {
+ from { opacity: 0; rotate: var(--cc-tooltip-tilt, -2.5deg); scale: .97; }
+ to { opacity: 1; rotate: var(--cc-tooltip-tilt, -2.5deg); scale: 1; }
+ }
+
+ /* ----- Window shell ----- */
+ .loading-screen {
+ position: fixed;
+ inset: 0;
+ z-index: 10000;
+ display: grid;
+ place-items: center;
+ overflow: hidden;
+ background:
+ radial-gradient(circle at 50% 42%, color-mix(in srgb, var(--primary, #285a48) 22%, transparent) 0 15%, transparent 42%),
+ linear-gradient(180deg, #111711 0%, #0f120f 52%, #080a08 100%);
+ color: var(--foreground);
+ transition: opacity 420ms ease, transform 420ms ease;
+ }
+ body.light .loading-screen {
+ background:
+ radial-gradient(circle at 50% 42%, color-mix(in srgb, var(--primary, #285a48) 16%, transparent) 0 14%, transparent 42%),
+ linear-gradient(180deg, #fbfbf7 0%, #f3f4ef 55%, #e9ece5 100%);
+ }
+ .loading-screen.is-exiting {
+ opacity: 0;
+ transform: scale(1.015);
+ pointer-events: none;
+ }
+ .loading-screen::before,
+ .loading-screen::after {
+ content: "";
+ position: absolute;
+ inset: 26px;
+ border: 1px solid color-mix(in srgb, var(--border) 72%, transparent);
+ border-radius: 18px;
+ pointer-events: none;
+ }
+ .loading-screen::after {
+ inset: auto 50% 18%;
+ width: 1px;
+ height: 28%;
+ border: 0;
+ border-left: 1px solid color-mix(in srgb, var(--border) 86%, transparent);
+ transform: translateX(-50%);
+ opacity: 0.75;
+ }
+ .loading-screen-mark {
+ position: relative;
+ z-index: 1;
+ display: grid;
+ justify-items: center;
+ gap: 24px;
+ animation: loadingMarkIn 760ms cubic-bezier(.2
|
|
src/renderer/src/components/canvas/CanvasMode.test.ts > CanvasMode chat pane bar > disables the mode prompt toggle after session context is delivered:
src/renderer/src/hooks/useMobileLayout.ts#L27
ReferenceError: window is not defined
❯ src/renderer/src/hooks/useMobileLayout.ts:27:5
❯ commitHookEffectListMount node_modules/react-test-renderer/cjs/react-test-renderer.development.js:13038:26
❯ commitPassiveMountOnFiber node_modules/react-test-renderer/cjs/react-test-renderer.development.js:14461:11
❯ commitPassiveMountEffects_complete node_modules/react-test-renderer/cjs/react-test-renderer.development.js:14421:9
❯ commitPassiveMountEffects_begin node_modules/react-test-renderer/cjs/react-test-renderer.development.js:14408:7
❯ commitPassiveMountEffects node_modules/react-test-renderer/cjs/react-test-renderer.development.js:14396:3
❯ flushPassiveEffectsImpl node_modules/react-test-renderer/cjs/react-test-renderer.development.js:16287:3
❯ flushPassiveEffects node_modules/react-test-renderer/cjs/react-test-renderer.development.js:16236:14
❯ node_modules/react-test-renderer/cjs/react-test-renderer.development.js:16051:9
❯ flushActQueue node_modules/react/cjs/react.development.js:2667:24
|
|
src/renderer/src/components/canvas/CanvasMode.test.ts > CanvasMode chat pane bar > toggles the per-chat mode prompt while the session is fresh:
src/renderer/src/hooks/useMobileLayout.ts#L27
ReferenceError: window is not defined
❯ src/renderer/src/hooks/useMobileLayout.ts:27:5
❯ commitHookEffectListMount node_modules/react-test-renderer/cjs/react-test-renderer.development.js:13038:26
❯ commitPassiveMountOnFiber node_modules/react-test-renderer/cjs/react-test-renderer.development.js:14461:11
❯ commitPassiveMountEffects_complete node_modules/react-test-renderer/cjs/react-test-renderer.development.js:14421:9
❯ commitPassiveMountEffects_begin node_modules/react-test-renderer/cjs/react-test-renderer.development.js:14408:7
❯ commitPassiveMountEffects node_modules/react-test-renderer/cjs/react-test-renderer.development.js:14396:3
❯ flushPassiveEffectsImpl node_modules/react-test-renderer/cjs/react-test-renderer.development.js:16287:3
❯ flushPassiveEffects node_modules/react-test-renderer/cjs/react-test-renderer.development.js:16236:14
❯ node_modules/react-test-renderer/cjs/react-test-renderer.development.js:16051:9
❯ flushActQueue node_modules/react/cjs/react.development.js:2667:24
|
|
src/main/pty-service.yuheard.test.ts > PtyService YuHeard bundle boundary > uses injected server access and statically imported wrappers for a Fish shell:
src/main/pty-service.yuheard.test.ts#L80
AssertionError: expected "vi.fn()" to be called with arguments: [ '/usr/bin/fish', …(2) ]
Received:
1st vi.fn() call:
[
- "/usr/bin/fish",
+ "/bin/bash",
[
"-C",
"yuheard-init",
],
- ObjectContaining {
- "env": ObjectContaining {
- "PATH": StringMatching /^\/tmp\/crewcode-yuheard-wrap\/pane-1:/,
+ {
+ "cols": 80,
+ "cwd": "/tmp",
+ "env": {
+ "ACCEPT_EULA": "Y",
+ "ACTIONS_ORCHESTRATION_ID": "0f925d94-57f6-44a0-b16d-30d185d195e1.verify.ubuntu-latest",
+ "ACTIONS_RUNNER_ACTION_ARCHIVE_CACHE": "/opt/actionarchivecache",
+ "ACTIONS_RUNNER_RETURN_JOB_RESULT_FOR_HOSTED": "1",
+ "AGENT_TOOLSDIRECTORY": "/opt/hostedtoolcache",
+ "ANDROID_HOME": "/usr/local/lib/android/sdk",
+ "ANDROID_NDK": "/usr/local/lib/android/sdk/ndk/27.3.13750724",
+ "ANDROID_NDK_HOME": "/usr/local/lib/android/sdk/ndk/27.3.13750724",
+ "ANDROID_NDK_LATEST_HOME": "/usr/local/lib/android/sdk/ndk/29.0.14206865",
+ "ANDROID_NDK_ROOT": "/usr/local/lib/android/sdk/ndk/27.3.13750724",
+ "ANDROID_SDK_ROOT": "/usr/local/lib/android/sdk",
+ "ANT_HOME": "/usr/share/ant",
+ "AZURE_EXTENSION_DIR": "/opt/az/azcliextensions",
+ "BASE_URL": "/",
+ "BOOTSTRAP_HASKELL_NONINTERACTIVE": "1",
+ "CHROMEWEBDRIVER": "/usr/local/share/chromedriver-linux64",
+ "CHROME_BIN": "/usr/bin/google-chrome",
+ "CI": "true",
+ "COLOR": "0",
+ "COLORTERM": "truecolor",
+ "CONDA": "/usr/share/miniconda",
+ "DEBIAN_FRONTEND": "noninteractive",
+ "DEV": "1",
+ "DOTNET_MULTILEVEL_LOOKUP": "0",
+ "DOTNET_NOLOGO": "1",
+ "DOTNET_SKIP_FIRST_TIME_EXPERIENCE": "1",
+ "EDGEWEBDRIVER": "/usr/local/share/edge_driver",
+ "EDITOR": "vi",
+ "ENABLE_RUNNER_TRACING": "true",
+ "FORCE_COLOR": "1",
+ "FORCE_TTY": "",
+ "GECKOWEBDRIVER": "/usr/local/share/gecko_driver",
+ "GHCUP_INSTALL_BASE_PREFIX": "/usr/local",
+ "GITHUB_ACTION": "__run_4",
+ "GITHUB_ACTIONS": "true",
+ "GITHUB_ACTION_REF": "",
+ "GITHUB_ACTION_REPOSITORY": "",
+ "GITHUB_ACTOR": "CjLogic",
+ "GITHUB_ACTOR_ID": "78663554",
+ "GITHUB_API_URL": "https://api.github.com",
+ "GITHUB_ARTIFACTS": "/home/runner/work/_temp/_runner_file_commands/artifacts_230698ef-cfb0-4f30-94b1-1e36e6409844",
+ "GITHUB_ARTIFACTS_LIST": "/home/runner/work/_temp/_runner_file_commands/artifacts_list_230698ef-cfb0-4f30-94b1-1e36e6409844",
+ "GITHUB_BASE_REF": "dev",
+ "GITHUB_ENV": "/home/runner/work/_temp/_runner_file_commands/set_env_230698ef-cfb0-4f30-94b1-1e36e6409844",
+ "GITHUB_EVENT_NAME": "pull_request",
+ "GITHUB_EVENT_PATH": "/home/runner/work/_temp/_github_workflow/event.json",
+ "GITHUB_GRAPHQL_URL": "https://api.github.com/graphql",
+ "GITHUB_HEAD_REF": "main",
+ "GITHUB_JOB": "verify",
+ "GITHUB_OUTPUT": "/home/runner/work/_temp/_runner_file_commands/set_output_230698ef-cfb0-4f30-94b1-1e36e6409844",
+ "GITHUB_PATH": "/home/runner/work/_temp/_runner_file_commands/add_path_230698ef-cfb0-4f30-94b1-1e36e6409844",
+ "GITHUB_REF": "refs/pull/3/merge",
+ "GITHUB_REF_NAME": "3/merge",
+ "GITHUB_REF_PROTECTED": "false",
+ "GITHUB_REF_TYPE": "branch",
+ "GITHUB_REPOSITORY": "OnPoint-Dev-Tools/crewcode",
+ "GITHUB_REPOSITORY_ID": "1326077029",
+ "GITHUB_REPOSITORY_OWNER": "OnPoint-Dev-Tools",
+ "GITHUB_REPOSITORY_OWNER_ID": "278743206",
+ "GITHUB_RETENTION_DAYS": "90",
+ "GITHUB_RUN_ATTEMPT": "1",
+ "GITHUB_RUN_ID": "33210265124",
+ "GITHUB_RUN_NUMBER": "29",
+ "GITHUB_SERVER_URL": "https://github.com",
+ "GITHUB_SHA": "06efbabf04fc4a92bd01bd2eae7d21730f71ec34",
+ "GITHUB_STATE": "/home/runner/work/_temp/_runner_file_commands/save_state_230698ef-cfb0-4f30-94b1-1e36e6409844",
+ "GITHUB_STEP_SUMMARY": "/home/runner/work/_temp/_runner_file_commands/step_summary_230698ef-cfb0-4f30-94b1-1e36e6409844",
+ "GITHUB_TRIG
|
|
src/renderer/src/components/canvas/CanvasMode.test.ts > CanvasMode chat pane bar > disables the mode prompt toggle after session context is delivered:
src/renderer/src/hooks/useMobileLayout.ts#L27
ReferenceError: window is not defined
❯ src/renderer/src/hooks/useMobileLayout.ts:27:5
❯ commitHookEffectListMount node_modules/react-test-renderer/cjs/react-test-renderer.development.js:13038:26
❯ commitPassiveMountOnFiber node_modules/react-test-renderer/cjs/react-test-renderer.development.js:14461:11
❯ commitPassiveMountEffects_complete node_modules/react-test-renderer/cjs/react-test-renderer.development.js:14421:9
❯ commitPassiveMountEffects_begin node_modules/react-test-renderer/cjs/react-test-renderer.development.js:14408:7
❯ commitPassiveMountEffects node_modules/react-test-renderer/cjs/react-test-renderer.development.js:14396:3
❯ flushPassiveEffectsImpl node_modules/react-test-renderer/cjs/react-test-renderer.development.js:16287:3
❯ flushPassiveEffects node_modules/react-test-renderer/cjs/react-test-renderer.development.js:16236:14
❯ node_modules/react-test-renderer/cjs/react-test-renderer.development.js:16051:9
❯ flushActQueue node_modules/react/cjs/react.development.js:2667:24
|
|
src/renderer/src/components/canvas/CanvasMode.test.ts > CanvasMode chat pane bar > toggles the per-chat mode prompt while the session is fresh:
src/renderer/src/hooks/useMobileLayout.ts#L27
ReferenceError: window is not defined
❯ src/renderer/src/hooks/useMobileLayout.ts:27:5
❯ commitHookEffectListMount node_modules/react-test-renderer/cjs/react-test-renderer.development.js:13038:26
❯ commitPassiveMountOnFiber node_modules/react-test-renderer/cjs/react-test-renderer.development.js:14461:11
❯ commitPassiveMountEffects_complete node_modules/react-test-renderer/cjs/react-test-renderer.development.js:14421:9
❯ commitPassiveMountEffects_begin node_modules/react-test-renderer/cjs/react-test-renderer.development.js:14408:7
❯ commitPassiveMountEffects node_modules/react-test-renderer/cjs/react-test-renderer.development.js:14396:3
❯ flushPassiveEffectsImpl node_modules/react-test-renderer/cjs/react-test-renderer.development.js:16287:3
❯ flushPassiveEffects node_modules/react-test-renderer/cjs/react-test-renderer.development.js:16236:14
❯ node_modules/react-test-renderer/cjs/react-test-renderer.development.js:16051:9
❯ flushActQueue node_modules/react/cjs/react.development.js:2667:24
|
|
src/main/yuheard-wrapper.test.ts > prependWrapperToPath > prepends the wrapper dir to an existing PATH:
src/main/yuheard-wrapper.test.ts#L191
AssertionError: expected '/wrappers/pn-1;/usr/bin:/bin' to be '/wrappers/pn-1:/usr/bin:/bin' // Object.is equality
Expected: "/wrappers/pn-1:/usr/bin:/bin"
Received: "/wrappers/pn-1;/usr/bin:/bin"
❯ src/main/yuheard-wrapper.test.ts:191:69
|
|
src/main/yuheard-wrapper.test.ts > installYuHeardWrapper > creates one shim per agent id and marks them executable:
src/main/yuheard-wrapper.test.ts#L40
AssertionError: expected false to be true // Object.is equality
- Expected
+ Received
- true
+ false
❯ src/main/yuheard-wrapper.test.ts:40:37
|
|
src/main/pty-service.yuheard.test.ts > PtyService YuHeard bundle boundary > uses injected server access and statically imported wrappers for a Fish shell:
src/main/pty-service.yuheard.test.ts#L69
AssertionError: expected "vi.fn()" to be called with arguments: [ 'pane-1', '/tmp' ]
Received:
1st vi.fn() call:
[
"pane-1",
- "/tmp",
+ "C:\\Users\\runneradmin",
]
Number of calls: 1
❯ src/main/pty-service.yuheard.test.ts:69:29
|
|
src/main/hub-relay.test.ts > authenticated encrypted Hub relay > applies Brain authorization reductions immediately and stops affected resources:
src/main/hub-relay.test.ts#L30
Error: EBUSY: resource busy or locked, rmdir 'C:\Users\RUNNER~1\AppData\Local\Temp\crewcode-hub-relay-7xsoBb'
❯ src/main/hub-relay.test.ts:30:23
❯ src/main/hub-relay.test.ts:26:68
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯
Serialized Error: { errno: -4082, code: 'EBUSY', syscall: 'rmdir', path: 'C:\Users\RUNNER~1\AppData\Local\Temp\crewcode-hub-relay-7xsoBb' }
|
|
src/main/hub-machine-enrollment.test.ts > Hub machine client security > parses enrollment and brain options without requiring secrets in argv:
src/main/hub-machine-enrollment.test.ts#L66
AssertionError: expected { …(6) } to match object { …(2) }
(4 matching properties omitted from actual)
- Expected
+ Received
@@ -2,8 +2,8 @@
"allowedScopes": [
"workspace:read",
"agent",
],
"allowedWorkspaceRoots": [
- "/tmp",
+ "D:\\tmp",
],
}
❯ src/main/hub-machine-enrollment.test.ts:66:136
|
|
src/main/hub-local-brain.test.ts > local Brain supervisor > spawns the sibling Brain after owner setup and stops it:
src/main/hub-local-brain.test.ts#L196
AssertionError: expected '\opt\crewcode\out\main\brain.js' to be '/opt/crewcode/out/main/brain.js' // Object.is equality
Expected: "/opt/crewcode/out/main/brain.js"
Received: "\opt\crewcode\out\main\brain.js"
❯ src/main/hub-local-brain.test.ts:196:29
|
|
src/main/hub-local-brain.test.ts > local Brain spawn plan > spawns sibling brain.js from a compiled Hub entry:
src/main/hub-local-brain.test.ts#L58
AssertionError: expected { execPath: '/usr/bin/node', …(1) } to deeply equal { execPath: '/usr/bin/node', …(1) }
- Expected
+ Received
{
"args": [
- "/opt/crewcode/out/main/brain.js",
+ "\\opt\\crewcode\\out\\main\\brain.js",
"--data-dir",
"/brain",
],
"execPath": "/usr/bin/node",
}
❯ src/main/hub-local-brain.test.ts:58:9
|
|
src/main/brain-authorization-policy.test.ts > Brain authorization policy > persists canonical roots, scopes, and local audit across restart:
src/main/brain-authorization-policy.test.ts#L15
AssertionError: expected 438 to be 384 // Object.is equality
- Expected
+ Received
- 384
+ 438
❯ src/main/brain-authorization-policy.test.ts:15:41
|
|
verify (macos-latest)
Node.js 20 is deprecated. The following actions target Node.js 20 but are being forced to run on Node.js 24: actions/checkout@v4, actions/setup-node@v4. For more information see: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
|
|
verify (ubuntu-latest)
Node.js 20 is deprecated. The following actions target Node.js 20 but are being forced to run on Node.js 24: actions/checkout@v4, actions/setup-node@v4. For more information see: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
|
|
verify (windows-latest)
Node.js 20 is deprecated. The following actions target Node.js 20 but are being forced to run on Node.js 24: actions/checkout@v4, actions/setup-node@v4. For more information see: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
|