1
00:00:00,000 --> 00:00:01,520
Welcome to the show everybody!

2
00:00:01,720 --> 00:00:06,560
I'm Ethan Park, here with Maya, and thanks
to Jellypod to help make this daily show

3
00:00:06,600 --> 00:00:07,280
a reality.

4
00:00:07,472 --> 00:00:14,320
Maya, we need to talk about Codex 0.141.0
because if you've been running remote

5
00:00:14,400 --> 00:00:19,520
executors, the networking and pathing
under the hood just got a massive overhaul.

6
00:00:19,625 --> 00:00:25,440
Specifically, they've shifted the remote
transport completely to end-to-end

7
00:00:25,512 --> 00:00:28,000
encrypted Noise relay channels.

8
00:00:29,479 --> 00:00:30,639
Noise relays?

9
00:00:31,059 --> 00:00:35,599
That's a huge shift from standard TLS or
basic SSH tunneling.

10
00:00:36,279 --> 00:00:40,179
I'm guessing they're using the Noise
Protocol Framework to do a lightweight,

11
00:00:40,519 --> 00:00:43,579
zero-dependency handshake right at the
transport layer?

12
00:00:44,000 --> 00:00:45,040
Exactly.

13
00:00:45,088 --> 00:00:50,640
They're establishing a secure,
authenticated channel directly between the local CLI

14
00:00:50,760 --> 00:00:55,920
and the remote agent without relying on
heavy external PKI infrastructure.

15
00:00:56,133 --> 00:01:01,840
It keeps the execution transport
incredibly fast but completely opaque to

16
00:01:01,886 --> 00:01:02,800
middleboxes.

17
00:01:02,980 --> 00:01:08,800
And speaking of remote execution, they
finally fixed the classic cross-platform path

18
00:01:08,869 --> 00:01:10,240
serialization headache.

19
00:01:10,420 --> 00:01:15,600
The `exec-server` now passes paths as a
structured `PathUri`.

20
00:01:17,700 --> 00:01:18,740
Oh, thank goodness.

21
00:01:19,659 --> 00:01:24,739
The number of times I've had a remote tool
execution crash because a Windows host

22
00:01:24,779 --> 00:01:28,119
sent backslashes to a Linux runner, or
vice versa...

23
00:01:28,960 --> 00:01:30,239
it's infuriating.

24
00:01:30,719 --> 00:01:37,039
So `PathUri` serializes the scheme, host,
and absolute path components explicitly?

25
00:01:38,000 --> 00:01:38,640
Precisely.

26
00:01:38,800 --> 00:01:45,200
It treats the path as an abstract URI
resource rather than a raw OS-specific string.

27
00:01:45,344 --> 00:01:51,040
When the remote side receives it, it
deserializes the `PathUri` into the target

28
00:01:51,120 --> 00:01:52,800
host's native format.

29
00:01:52,864 --> 00:01:57,280
That means no more broken working
directories when your local machine and remote

30
00:01:57,360 --> 00:01:59,600
nodes disagree on path delimiters.

31
00:02:00,260 --> 00:02:03,019
That's huge for heterogeneous build
clusters.

32
00:02:03,259 --> 00:02:06,739
But wait, how does it handle the shell
execution itself?

33
00:02:07,319 --> 00:02:11,960
If I'm on a macOS local machine pushing to
a Linux runner, is it still trying to

34
00:02:12,059 --> 00:02:13,739
force my local default shell?

35
00:02:15,000 --> 00:02:16,360
Nope, they fixed that too.

36
00:02:16,486 --> 00:02:21,480
Remote runners now inspect the remote
target host's environment directly to spawn

37
00:02:21,520 --> 00:02:22,640
its native shell.

38
00:02:22,760 --> 00:02:28,120
So if you're hitting a remote macOS node,
it'll invoke `zsh`,

39
00:02:28,160 --> 00:02:33,160
and if you're hitting Linux, it'll spin up
`bash`, rather than blindly trying to run

40
00:02:33,222 --> 00:02:36,600
whatever your local shell environment was
configured to use.

41
00:02:37,439 --> 00:02:38,959
That makes a lot of sense.

42
00:02:39,359 --> 00:02:44,959
It actually queries the target
host'spasswd database or environment block to find

43
00:02:45,000 --> 00:02:47,340
the configured shell instead of guessing.

44
00:02:47,939 --> 00:02:52,519
That prevents those weird "command not
found" errors when a host-specific shell

45
00:02:52,619 --> 00:02:55,639
profile tries to load on an OS that
doesn't support it.

46
00:02:56,000 --> 00:02:57,240
Exactly.

47
00:02:57,330 --> 00:03:03,760
Now, let's look at the local side of
things in 0.141.0 because there are some

48
00:03:03,831 --> 00:03:06,320
critical changes to the state engine.

49
00:03:06,373 --> 00:03:11,360
First off, they've pinned the bundled
SQLite to a version that includes a critical

50
00:03:11,480 --> 00:03:15,360
fix for write-ahead log, or WAL, reset
corruption.

51
00:03:16,440 --> 00:03:18,440
Oh, the WAL-reset bug!

52
00:03:19,399 --> 00:03:24,019
That's the one where a hard crash or
sudden power loss right during a log

53
00:03:24,079 --> 00:03:28,340
checkpointing phase could leave the WAL
header in an inconsistent state,

54
00:03:28,840 --> 00:03:32,539
basically corrupting your entire local
database on the next reboot.

55
00:03:33,000 --> 00:03:33,880
That is the one.

56
00:03:34,067 --> 00:03:38,440
If your local agent state got borked
during an abrupt shutdown,

57
00:03:38,480 --> 00:03:43,120
you had to wipe the state directory
manually and re-sync everything.

58
00:03:43,230 --> 00:03:48,680
Pinning to this patched SQLite version
means the database can safely recover and

59
00:03:48,749 --> 00:03:53,800
replay the WAL transactions even after a
sudden kernel panic or power cut.

60
00:03:54,319 --> 00:03:58,559
That's a massive reliability win for local
developer environments.

61
00:03:58,599 --> 00:04:02,979
But speaking of the local developer
experience, they also updated the terminal UI,

62
00:04:03,119 --> 00:04:03,359
right?

63
00:04:03,859 --> 00:04:06,199
I saw something about auto-resolving
prompts.

64
00:04:07,000 --> 00:04:11,960
Yeah, the TUI now has interactive prompts
with an inactivity countdown.

65
00:04:12,173 --> 00:04:17,080
If a task is waiting for user input, it'll
show a countdown timer and then

66
00:04:17,160 --> 00:04:20,680
auto-submit a default choice once it hits
zero.

67
00:04:20,780 --> 00:04:26,280
But here's the clever part: the
millisecond you press any key to start typing,

68
00:04:26,300 --> 00:04:28,520
the countdown instantly pauses.

69
00:04:29,999 --> 00:04:30,599
Oh, I love that.

70
00:04:31,759 --> 00:04:37,099
It prevents headless CI environments or
background scripts from hanging forever on a

71
00:04:37,159 --> 00:04:41,899
prompt, but it doesn't penalize a human
developer who just needed a second to look

72
00:04:41,939 --> 00:04:44,079
up a configuration value before typing.

73
00:04:45,000 --> 00:04:47,640
Exactly, it's the best of both worlds.

74
00:04:47,780 --> 00:04:53,480
And to make the TUI look cleaner, they've
completely discarded legacy layout options

75
00:04:53,613 --> 00:04:56,200
in favor of always-on terminal reflow.

76
00:04:57,459 --> 00:05:02,960
So no more manually setting column
overrides or having text clipped when you resize

77
00:05:03,000 --> 00:05:04,480
your terminal pane in tmux?

78
00:05:05,000 --> 00:05:09,880
Yep, it recalculates the bounding boxes
and reflows dynamically,

79
00:05:09,933 --> 00:05:12,680
no matter how complex the dashboard layout
gets.

80
00:05:12,893 --> 00:05:16,920
It really makes the CLI feel like a
modern, robust tool.

81
00:05:17,060 --> 00:05:23,400
And that's Codex 0.141.0 for you -- much
safer under the

82
00:05:23,480 --> 00:05:26,040
hood, and a lot smoother on the terminal.

83
00:05:26,166 --> 00:05:28,160
Thanks for listening, everyone!

84
00:05:28,260 --> 00:05:29,320
I'm Ethan Park.

85
00:05:32,319 --> 00:05:32,320
And I'm Maya.

86
00:05:32,319 --> 00:05:32,480
Catch you next time!

