remote-codex 0.11.20 → 0.11.22

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,13 +4,13 @@
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-BdeDlmJY.js"></script>
7
+ <script type="module" crossorigin src="/assets/index-BfspE5mQ.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-C5nUCiEf.js">
13
+ <link rel="modulepreload" crossorigin href="/assets/thread-ui-CDgAOcDh.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
16
  <link rel="stylesheet" crossorigin href="/assets/index-BmBS1Wzk.css">
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "remote-codex",
3
- "version": "0.11.20",
3
+ "version": "0.11.22",
4
4
  "description": "Local web supervisor for Codex workspaces and threads.",
5
5
  "license": "MIT",
6
6
  "type": "module",
@@ -62,6 +62,8 @@
62
62
  "dependencies": {
63
63
  "@fastify/multipart": "^9.0.3",
64
64
  "@fastify/websocket": "^11.0.2",
65
+ "@fontsource/noto-sans": "^5.2.10",
66
+ "@fontsource/noto-sans-sc": "^5.2.9",
65
67
  "@homebridge/node-pty-prebuilt-multiarch": "^0.13.1",
66
68
  "@modelcontextprotocol/sdk": "^1.29.0",
67
69
  "better-sqlite3": "^12.10.0",
@@ -575,7 +575,7 @@ describe('ClaudeRuntimeAdapter', () => {
575
575
  await expect(adapter.listLoadedSessions()).resolves.toEqual(['claude-session-1']);
576
576
  });
577
577
 
578
- it('exposes the Claude Code Sonnet 1M option and enables the 1M context beta', async () => {
578
+ it('exposes Claude Code model aliases and enables the 1M context beta', async () => {
579
579
  const sdkOptions: Record<string, unknown>[] = [];
580
580
  const adapter = new ClaudeRuntimeAdapter({
581
581
  home: '/tmp/claude-home',
@@ -600,6 +600,14 @@ describe('ClaudeRuntimeAdapter', () => {
600
600
  model: 'sonnet[1m]',
601
601
  displayName: 'Claude Sonnet 1M',
602
602
  }),
603
+ expect.objectContaining({
604
+ model: 'fable',
605
+ displayName: 'Claude Fable',
606
+ defaultReasoningEffort: 'medium',
607
+ supportedReasoningEfforts: expect.arrayContaining([
608
+ expect.objectContaining({ reasoningEffort: 'max' }),
609
+ ]),
610
+ }),
603
611
  ]),
604
612
  );
605
613
 
@@ -865,7 +873,7 @@ describe('ClaudeRuntimeAdapter', () => {
865
873
  providerSessionId: 'claude-session-1',
866
874
  prompt: 'Say hello and run pwd',
867
875
  model: 'sonnet',
868
- reasoningEffort: 'xhigh',
876
+ reasoningEffort: 'max',
869
877
  workspacePath: '/tmp/workspace',
870
878
  });
871
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,23 @@ 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' },
514
+ ],
515
+ defaultReasoningEffort: 'medium',
516
+ },
517
+ {
518
+ id: 'fable',
519
+ model: 'fable',
520
+ displayName: 'Claude Fable',
521
+ description: 'Claude Code Fable model alias.',
522
+ isDefault: false,
523
+ hidden: false,
524
+ supportedReasoningEfforts: [
525
+ { reasoningEffort: 'low', description: 'Low effort' },
526
+ { reasoningEffort: 'medium', description: 'Medium effort' },
527
+ { reasoningEffort: 'high', description: 'High effort' },
528
+ { reasoningEffort: 'xhigh', description: 'Extra high effort' },
529
+ { reasoningEffort: 'max', description: 'Maximum effort' },
512
530
  ],
513
531
  defaultReasoningEffort: 'medium',
514
532
  },
@@ -524,6 +542,7 @@ const DEFAULT_CLAUDE_MODELS: AgentModel[] = [
524
542
  { reasoningEffort: 'medium', description: 'Medium effort' },
525
543
  { reasoningEffort: 'high', description: 'High effort' },
526
544
  { reasoningEffort: 'xhigh', description: 'Extra high effort' },
545
+ { reasoningEffort: 'max', description: 'Maximum effort' },
527
546
  ],
528
547
  defaultReasoningEffort: 'medium',
529
548
  },
@@ -578,7 +597,7 @@ function mapModelInfo(model: ModelInfo, index: number): AgentModel {
578
597
  isDefault: index === 0,
579
598
  hidden: false,
580
599
  supportedReasoningEfforts: (model.supportedEffortLevels ?? []).map((effort) => ({
581
- reasoningEffort: effort === 'max' ? 'xhigh' : effort,
600
+ reasoningEffort: effort,
582
601
  description: `${effort} effort`,
583
602
  })),
584
603
  defaultReasoningEffort: model.supportsEffort ? 'medium' : null,
@@ -589,6 +608,7 @@ function withClaudeCodeModelAliases(models: AgentModel[]) {
589
608
  const output = [...models];
590
609
  const defaultSonnet = DEFAULT_CLAUDE_MODELS[0]!;
591
610
  const oneMillionSonnet = DEFAULT_CLAUDE_MODELS[1]!;
611
+ const fable = DEFAULT_CLAUDE_MODELS[2]!;
592
612
  const hasSonnetAlias = output.some((model) => model.model === 'sonnet');
593
613
  if (!hasSonnetAlias) {
594
614
  output.unshift(defaultSonnet);
@@ -596,6 +616,9 @@ function withClaudeCodeModelAliases(models: AgentModel[]) {
596
616
  if (!output.some((model) => model.model === 'sonnet[1m]')) {
597
617
  output.splice(1, 0, oneMillionSonnet);
598
618
  }
619
+ if (!output.some((model) => model.model === 'fable')) {
620
+ output.splice(2, 0, fable);
621
+ }
599
622
  return output.map((model, index) => ({
600
623
  ...model,
601
624
  isDefault: index === 0,
@@ -1053,7 +1076,7 @@ function queryOptionsForRuntime(
1053
1076
  options.betas = ['context-1m-2025-08-07'];
1054
1077
  }
1055
1078
  if (input.reasoningEffort) {
1056
- const effort = input.reasoningEffort === 'xhigh' ? 'max' : input.reasoningEffort;
1079
+ const effort = input.reasoningEffort;
1057
1080
  if (['low', 'medium', 'high', 'xhigh', 'max'].includes(effort)) {
1058
1081
  options.effort = effort as NonNullable<ClaudeQueryOptions['effort']>;
1059
1082
  }
@@ -518,7 +518,14 @@ export type ThreadWorkspaceUploadResultDto =
518
518
  };
519
519
 
520
520
  export type ApprovalMode = 'yolo' | 'guarded';
521
- export type ReasoningEffortDto = 'none' | 'minimal' | 'low' | 'medium' | 'high' | 'xhigh';
521
+ export type ReasoningEffortDto =
522
+ | 'none'
523
+ | 'minimal'
524
+ | 'low'
525
+ | 'medium'
526
+ | 'high'
527
+ | 'xhigh'
528
+ | 'max';
522
529
  export type CollaborationModeDto = 'default' | 'plan';
523
530
  export type SandboxModeDto = 'read-only' | 'workspace-write' | 'danger-full-access';
524
531