remote-codex 0.11.21 → 0.11.23

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -4,16 +4,16 @@
4
4
  <meta charset="UTF-8" />
5
5
  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
6
6
  <title>Remote Codex Supervisor</title>
7
- <script type="module" crossorigin src="/assets/index-BfspE5mQ.js"></script>
7
+ <script type="module" crossorigin src="/assets/index-CtcCwgIc.js"></script>
8
8
  <link rel="modulepreload" crossorigin href="/assets/react-vendor-CgLzZcV4.js">
9
9
  <link rel="modulepreload" crossorigin href="/assets/ui-vendor-CeKGesq3.js">
10
10
  <link rel="modulepreload" crossorigin href="/assets/graph-vendor-DVPtkh3h.js">
11
11
  <link rel="modulepreload" crossorigin href="/assets/terminal-vendor-B365Go3Z.js">
12
12
  <link rel="modulepreload" crossorigin href="/assets/markdown-vendor-BQJfKm05.js">
13
- <link rel="modulepreload" crossorigin href="/assets/thread-ui-CDgAOcDh.js">
13
+ <link rel="modulepreload" crossorigin href="/assets/thread-ui-jJyFqIuV.js">
14
14
  <link rel="stylesheet" crossorigin href="/assets/graph-vendor-C5ap-Sga.css">
15
15
  <link rel="stylesheet" crossorigin href="/assets/terminal-vendor-Beg8tuEN.css">
16
- <link rel="stylesheet" crossorigin href="/assets/index-BmBS1Wzk.css">
16
+ <link rel="stylesheet" crossorigin href="/assets/index-PMKHoC-h.css">
17
17
  </head>
18
18
  <body class="bg-stone-950">
19
19
  <div id="root"></div>
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "remote-codex",
3
- "version": "0.11.21",
3
+ "version": "0.11.23",
4
4
  "description": "Local web supervisor for Codex workspaces and threads.",
5
5
  "license": "MIT",
6
6
  "type": "module",
@@ -54,6 +54,7 @@
54
54
  "test": "NODE_ENV=test pnpm -r --if-present test",
55
55
  "test:e2e": "playwright test",
56
56
  "db:migrate": "pnpm --filter @remote-codex/db db:migrate",
57
+ "release:mobile": "node scripts/publish-mobile-release-assets.mjs",
57
58
  "impeccable": "impeccable",
58
59
  "impeccable:detect": "impeccable detect apps/supervisor-web/src",
59
60
  "impeccable:detect:fast": "impeccable detect --fast apps/supervisor-web/src",
@@ -62,6 +63,8 @@
62
63
  "dependencies": {
63
64
  "@fastify/multipart": "^9.0.3",
64
65
  "@fastify/websocket": "^11.0.2",
66
+ "@fontsource/noto-sans": "^5.2.10",
67
+ "@fontsource/noto-sans-sc": "^5.2.9",
65
68
  "@homebridge/node-pty-prebuilt-multiarch": "^0.13.1",
66
69
  "@modelcontextprotocol/sdk": "^1.29.0",
67
70
  "better-sqlite3": "^12.10.0",
@@ -604,6 +604,9 @@ describe('ClaudeRuntimeAdapter', () => {
604
604
  model: 'fable',
605
605
  displayName: 'Claude Fable',
606
606
  defaultReasoningEffort: 'medium',
607
+ supportedReasoningEfforts: expect.arrayContaining([
608
+ expect.objectContaining({ reasoningEffort: 'max' }),
609
+ ]),
607
610
  }),
608
611
  ]),
609
612
  );
@@ -870,7 +873,7 @@ describe('ClaudeRuntimeAdapter', () => {
870
873
  providerSessionId: 'claude-session-1',
871
874
  prompt: 'Say hello and run pwd',
872
875
  model: 'sonnet',
873
- reasoningEffort: 'xhigh',
876
+ reasoningEffort: 'max',
874
877
  workspacePath: '/tmp/workspace',
875
878
  });
876
879
  expect(started.status).toBe('inProgress');
@@ -494,6 +494,7 @@ const DEFAULT_CLAUDE_MODELS: AgentModel[] = [
494
494
  { reasoningEffort: 'medium', description: 'Medium effort' },
495
495
  { reasoningEffort: 'high', description: 'High effort' },
496
496
  { reasoningEffort: 'xhigh', description: 'Extra high effort' },
497
+ { reasoningEffort: 'max', description: 'Maximum effort' },
497
498
  ],
498
499
  defaultReasoningEffort: 'medium',
499
500
  },
@@ -509,6 +510,7 @@ const DEFAULT_CLAUDE_MODELS: AgentModel[] = [
509
510
  { reasoningEffort: 'medium', description: 'Medium effort' },
510
511
  { reasoningEffort: 'high', description: 'High effort' },
511
512
  { reasoningEffort: 'xhigh', description: 'Extra high effort' },
513
+ { reasoningEffort: 'max', description: 'Maximum effort' },
512
514
  ],
513
515
  defaultReasoningEffort: 'medium',
514
516
  },
@@ -524,6 +526,7 @@ const DEFAULT_CLAUDE_MODELS: AgentModel[] = [
524
526
  { reasoningEffort: 'medium', description: 'Medium effort' },
525
527
  { reasoningEffort: 'high', description: 'High effort' },
526
528
  { reasoningEffort: 'xhigh', description: 'Extra high effort' },
529
+ { reasoningEffort: 'max', description: 'Maximum effort' },
527
530
  ],
528
531
  defaultReasoningEffort: 'medium',
529
532
  },
@@ -539,6 +542,7 @@ const DEFAULT_CLAUDE_MODELS: AgentModel[] = [
539
542
  { reasoningEffort: 'medium', description: 'Medium effort' },
540
543
  { reasoningEffort: 'high', description: 'High effort' },
541
544
  { reasoningEffort: 'xhigh', description: 'Extra high effort' },
545
+ { reasoningEffort: 'max', description: 'Maximum effort' },
542
546
  ],
543
547
  defaultReasoningEffort: 'medium',
544
548
  },
@@ -593,7 +597,7 @@ function mapModelInfo(model: ModelInfo, index: number): AgentModel {
593
597
  isDefault: index === 0,
594
598
  hidden: false,
595
599
  supportedReasoningEfforts: (model.supportedEffortLevels ?? []).map((effort) => ({
596
- reasoningEffort: effort === 'max' ? 'xhigh' : effort,
600
+ reasoningEffort: effort,
597
601
  description: `${effort} effort`,
598
602
  })),
599
603
  defaultReasoningEffort: model.supportsEffort ? 'medium' : null,
@@ -1072,7 +1076,7 @@ function queryOptionsForRuntime(
1072
1076
  options.betas = ['context-1m-2025-08-07'];
1073
1077
  }
1074
1078
  if (input.reasoningEffort) {
1075
- const effort = input.reasoningEffort === 'xhigh' ? 'max' : input.reasoningEffort;
1079
+ const effort = input.reasoningEffort;
1076
1080
  if (['low', 'medium', 'high', 'xhigh', 'max'].includes(effort)) {
1077
1081
  options.effort = effort as NonNullable<ClaudeQueryOptions['effort']>;
1078
1082
  }
@@ -112,6 +112,20 @@ export interface RelayDeviceDto {
112
112
  createdAt: string;
113
113
  }
114
114
 
115
+ export type RelayThreadAccessDto = 'read' | 'control';
116
+ export type RelayWorkspaceAccessDto = 'none' | 'read' | 'write';
117
+
118
+ export interface CreateRelaySessionShareInput {
119
+ targetIdentifier: string;
120
+ deviceId: string;
121
+ threadId: string;
122
+ workspaceId?: string | null;
123
+ label?: string | null;
124
+ threadAccess: RelayThreadAccessDto;
125
+ workspaceAccess: RelayWorkspaceAccessDto;
126
+ expiresAt?: string | null;
127
+ }
128
+
115
129
  export interface RelaySessionShareDto {
116
130
  id: string;
117
131
  ownerUserId: string;
@@ -121,9 +135,21 @@ export interface RelaySessionShareDto {
121
135
  deviceId: string;
122
136
  deviceName: string;
123
137
  threadId: string;
138
+ workspaceId: string | null;
124
139
  label: string | null;
140
+ threadAccess: RelayThreadAccessDto;
141
+ workspaceAccess: RelayWorkspaceAccessDto;
125
142
  createdAt: string;
126
143
  revokedAt: string | null;
144
+ expiresAt: string | null;
145
+ }
146
+
147
+ export interface RelayEffectiveAccessDto {
148
+ kind: 'owner' | 'shared';
149
+ shareId: string | null;
150
+ threadAccess: RelayThreadAccessDto;
151
+ workspaceAccess: RelayWorkspaceAccessDto;
152
+ workspaceId: string | null;
127
153
  }
128
154
 
129
155
  export interface RelaySessionDto {
@@ -518,7 +544,14 @@ export type ThreadWorkspaceUploadResultDto =
518
544
  };
519
545
 
520
546
  export type ApprovalMode = 'yolo' | 'guarded';
521
- export type ReasoningEffortDto = 'none' | 'minimal' | 'low' | 'medium' | 'high' | 'xhigh';
547
+ export type ReasoningEffortDto =
548
+ | 'none'
549
+ | 'minimal'
550
+ | 'low'
551
+ | 'medium'
552
+ | 'high'
553
+ | 'xhigh'
554
+ | 'max';
522
555
  export type CollaborationModeDto = 'default' | 'plan';
523
556
  export type SandboxModeDto = 'read-only' | 'workspace-write' | 'danger-full-access';
524
557