fix(tailscale): preserve occupied Serve handlers - #102
Conversation
|
@codex review |
(cherry picked from commit 6f6d04d)
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: f153060389
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
|
@codex review |
(cherry picked from commit 7b7bbaf)
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 9b08a9b91f
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
|
@codex review |
(cherry picked from commit d8d738d)
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: b435ef7468
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
|
@codex review |
(cherry picked from commit 1c54d3f)
|
Codex Review: Didn't find any major issues. 👍 Reviewed commit: ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
If Codex has suggestions, it will comment; otherwise it will react with 👍. Codex can also answer questions or update the PR. Try commenting "@codex address that feedback". |
|
@codex review |
|
Codex Review: Didn't find any major issues. Swish! Reviewed commit: ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
If Codex has suggestions, it will comment; otherwise it will react with 👍. Codex can also answer questions or update the PR. Try commenting "@codex address that feedback". |
The Legacy Sidebar environment icons were not actually aligned in scanning columns. Relative timestamp labels widened a flex container, so the worktree and environment icons shifted horizontally from row to row.\n\nThis replaces that flexible metadata area with fixed worktree, environment, and timestamp tracks. Empty worktree and local-icon cells remain mounted, while optional port and terminal indicators extend to the left without moving the scanning columns. The newer Show worktree indicators setting is preserved inside the fixed worktree track.\n\nVisual QA on the isolated shared web app:\n- authenticated app loaded successfully through vp run dev --share after rebasing onto PR #102\n- all 10 real Legacy Sidebar rows used identical worktree, environment, and timestamp coordinates\n- labels 2m ago, 42m ago, 1d ago, 17h ago, and just now left every column unchanged\n- local icon off left an aligned empty environment slot\n- local icon on filled that same slot without moving the worktree or timestamp columns\n- worktree icons off left an aligned empty worktree slot without moving environment icons or timestamps\n- original isolated settings were restored after testing\n\nValidation:\n- focused environment-icon tests: 10 passed\n- web typecheck: passed\n- LastCode quick local CI: passed on rebased head 59ade172c\n- web tests: 2,856 passed\n- server tests: 2,838 passed, 7 skipped\n- all remaining workspace suites passed\n\nThe collaborative preview screenshot operation itself failed, so there is no after image attached; visual layout was verified from the rendered browser geometry rather than inferred from source.\n\nImplemented with GPT-5.6 Codex in the T3 Code harness.
Tailscale Serve mappings persist independently of their loopback backends. LastCode previously treated a failed HTTP probe as permission to replace a configured port, and development sharing could proxy IPv4 while Vite listened only on IPv6 localhost. This ports pingdotgg#8338 exactly into LastCode. It treats the live Serve configuration as authoritative, reuses or removes only a handler whose root proxy exactly matches the current LastCode lifecycle, refuses occupied foreign handlers even when their backend is unavailable, and makes shared development bind both Vite and its proxy to `127.0.0.1`. Ordinary non-shared development remains on `localhost`. Upstream source: pingdotgg#8338 Upstream head: `858e5eed8675b2025ec39118c7c9ae23edb7a4ad` Validation: - 6 focused files, 242 tests - shared, tailscale, web, scripts, and server typechecks - scoped lint, formatting, and diff checks - normal guarded LastCode quick CI, including 2,837 server tests Authored with GPT-5.6 Sol through the Codex harness.
The Legacy Sidebar environment icons were not actually aligned in scanning columns. Relative timestamp labels widened a flex container, so the worktree and environment icons shifted horizontally from row to row.\n\nThis replaces that flexible metadata area with fixed worktree, environment, and timestamp tracks. Empty worktree and local-icon cells remain mounted, while optional port and terminal indicators extend to the left without moving the scanning columns. The newer Show worktree indicators setting is preserved inside the fixed worktree track.\n\nVisual QA on the isolated shared web app:\n- authenticated app loaded successfully through vp run dev --share after rebasing onto PR #102\n- all 10 real Legacy Sidebar rows used identical worktree, environment, and timestamp coordinates\n- labels 2m ago, 42m ago, 1d ago, 17h ago, and just now left every column unchanged\n- local icon off left an aligned empty environment slot\n- local icon on filled that same slot without moving the worktree or timestamp columns\n- worktree icons off left an aligned empty worktree slot without moving environment icons or timestamps\n- original isolated settings were restored after testing\n\nValidation:\n- focused environment-icon tests: 10 passed\n- web typecheck: passed\n- LastCode quick local CI: passed on rebased head 59ade172c\n- web tests: 2,856 passed\n- server tests: 2,838 passed, 7 skipped\n- all remaining workspace suites passed\n\nThe collaborative preview screenshot operation itself failed, so there is no after image attached; visual layout was verified from the rendered browser geometry rather than inferred from source.\n\nImplemented with GPT-5.6 Codex in the T3 Code harness.
Tailscale Serve mappings persist independently of their loopback backends. LastCode previously treated a failed HTTP probe as permission to replace a configured port, and development sharing could proxy IPv4 while Vite listened only on IPv6 localhost. This ports pingdotgg#8338 exactly into LastCode. It treats the live Serve configuration as authoritative, reuses or removes only a handler whose root proxy exactly matches the current LastCode lifecycle, refuses occupied foreign handlers even when their backend is unavailable, and makes shared development bind both Vite and its proxy to `127.0.0.1`. Ordinary non-shared development remains on `localhost`. Upstream source: pingdotgg#8338 Upstream head: `858e5eed8675b2025ec39118c7c9ae23edb7a4ad` Validation: - 6 focused files, 242 tests - shared, tailscale, web, scripts, and server typechecks - scoped lint, formatting, and diff checks - normal guarded LastCode quick CI, including 2,837 server tests Authored with GPT-5.6 Sol through the Codex harness.
The Legacy Sidebar environment icons were not actually aligned in scanning columns. Relative timestamp labels widened a flex container, so the worktree and environment icons shifted horizontally from row to row.\n\nThis replaces that flexible metadata area with fixed worktree, environment, and timestamp tracks. Empty worktree and local-icon cells remain mounted, while optional port and terminal indicators extend to the left without moving the scanning columns. The newer Show worktree indicators setting is preserved inside the fixed worktree track.\n\nVisual QA on the isolated shared web app:\n- authenticated app loaded successfully through vp run dev --share after rebasing onto PR #102\n- all 10 real Legacy Sidebar rows used identical worktree, environment, and timestamp coordinates\n- labels 2m ago, 42m ago, 1d ago, 17h ago, and just now left every column unchanged\n- local icon off left an aligned empty environment slot\n- local icon on filled that same slot without moving the worktree or timestamp columns\n- worktree icons off left an aligned empty worktree slot without moving environment icons or timestamps\n- original isolated settings were restored after testing\n\nValidation:\n- focused environment-icon tests: 10 passed\n- web typecheck: passed\n- LastCode quick local CI: passed on rebased head 59ade172c\n- web tests: 2,856 passed\n- server tests: 2,838 passed, 7 skipped\n- all remaining workspace suites passed\n\nThe collaborative preview screenshot operation itself failed, so there is no after image attached; visual layout was verified from the rendered browser geometry rather than inferred from source.\n\nImplemented with GPT-5.6 Codex in the T3 Code harness.
Tailscale Serve mappings persist independently of their loopback backends. LastCode previously treated a failed HTTP probe as permission to replace a configured port, and development sharing could proxy IPv4 while Vite listened only on IPv6 localhost. This ports pingdotgg#8338 exactly into LastCode. It treats the live Serve configuration as authoritative, reuses or removes only a handler whose root proxy exactly matches the current LastCode lifecycle, refuses occupied foreign handlers even when their backend is unavailable, and makes shared development bind both Vite and its proxy to `127.0.0.1`. Ordinary non-shared development remains on `localhost`. Upstream source: pingdotgg#8338 Upstream head: `858e5eed8675b2025ec39118c7c9ae23edb7a4ad` Validation: - 6 focused files, 242 tests - shared, tailscale, web, scripts, and server typechecks - scoped lint, formatting, and diff checks - normal guarded LastCode quick CI, including 2,837 server tests Authored with GPT-5.6 Sol through the Codex harness.
The Legacy Sidebar environment icons were not actually aligned in scanning columns. Relative timestamp labels widened a flex container, so the worktree and environment icons shifted horizontally from row to row.\n\nThis replaces that flexible metadata area with fixed worktree, environment, and timestamp tracks. Empty worktree and local-icon cells remain mounted, while optional port and terminal indicators extend to the left without moving the scanning columns. The newer Show worktree indicators setting is preserved inside the fixed worktree track.\n\nVisual QA on the isolated shared web app:\n- authenticated app loaded successfully through vp run dev --share after rebasing onto PR #102\n- all 10 real Legacy Sidebar rows used identical worktree, environment, and timestamp coordinates\n- labels 2m ago, 42m ago, 1d ago, 17h ago, and just now left every column unchanged\n- local icon off left an aligned empty environment slot\n- local icon on filled that same slot without moving the worktree or timestamp columns\n- worktree icons off left an aligned empty worktree slot without moving environment icons or timestamps\n- original isolated settings were restored after testing\n\nValidation:\n- focused environment-icon tests: 10 passed\n- web typecheck: passed\n- LastCode quick local CI: passed on rebased head 59ade172c\n- web tests: 2,856 passed\n- server tests: 2,838 passed, 7 skipped\n- all remaining workspace suites passed\n\nThe collaborative preview screenshot operation itself failed, so there is no after image attached; visual layout was verified from the rendered browser geometry rather than inferred from source.\n\nImplemented with GPT-5.6 Codex in the T3 Code harness.
Tailscale Serve mappings persist independently of their loopback backends. LastCode previously treated a failed HTTP probe as permission to replace a configured port, and development sharing could proxy IPv4 while Vite listened only on IPv6 localhost. This ports pingdotgg#8338 exactly into LastCode. It treats the live Serve configuration as authoritative, reuses or removes only a handler whose root proxy exactly matches the current LastCode lifecycle, refuses occupied foreign handlers even when their backend is unavailable, and makes shared development bind both Vite and its proxy to `127.0.0.1`. Ordinary non-shared development remains on `localhost`. Upstream source: pingdotgg#8338 Upstream head: `858e5eed8675b2025ec39118c7c9ae23edb7a4ad` Validation: - 6 focused files, 242 tests - shared, tailscale, web, scripts, and server typechecks - scoped lint, formatting, and diff checks - normal guarded LastCode quick CI, including 2,837 server tests Authored with GPT-5.6 Sol through the Codex harness.
The Legacy Sidebar environment icons were not actually aligned in scanning columns. Relative timestamp labels widened a flex container, so the worktree and environment icons shifted horizontally from row to row.\n\nThis replaces that flexible metadata area with fixed worktree, environment, and timestamp tracks. Empty worktree and local-icon cells remain mounted, while optional port and terminal indicators extend to the left without moving the scanning columns. The newer Show worktree indicators setting is preserved inside the fixed worktree track.\n\nVisual QA on the isolated shared web app:\n- authenticated app loaded successfully through vp run dev --share after rebasing onto PR #102\n- all 10 real Legacy Sidebar rows used identical worktree, environment, and timestamp coordinates\n- labels 2m ago, 42m ago, 1d ago, 17h ago, and just now left every column unchanged\n- local icon off left an aligned empty environment slot\n- local icon on filled that same slot without moving the worktree or timestamp columns\n- worktree icons off left an aligned empty worktree slot without moving environment icons or timestamps\n- original isolated settings were restored after testing\n\nValidation:\n- focused environment-icon tests: 10 passed\n- web typecheck: passed\n- LastCode quick local CI: passed on rebased head 59ade172c\n- web tests: 2,856 passed\n- server tests: 2,838 passed, 7 skipped\n- all remaining workspace suites passed\n\nThe collaborative preview screenshot operation itself failed, so there is no after image attached; visual layout was verified from the rendered browser geometry rather than inferred from source.\n\nImplemented with GPT-5.6 Codex in the T3 Code harness.
Tailscale Serve mappings persist independently of their loopback backends. LastCode previously treated a failed HTTP probe as permission to replace a configured port, and development sharing could proxy IPv4 while Vite listened only on IPv6 localhost. This ports pingdotgg#8338 exactly into LastCode. It treats the live Serve configuration as authoritative, reuses or removes only a handler whose root proxy exactly matches the current LastCode lifecycle, refuses occupied foreign handlers even when their backend is unavailable, and makes shared development bind both Vite and its proxy to `127.0.0.1`. Ordinary non-shared development remains on `localhost`. Upstream source: pingdotgg#8338 Upstream head: `858e5eed8675b2025ec39118c7c9ae23edb7a4ad` Validation: - 6 focused files, 242 tests - shared, tailscale, web, scripts, and server typechecks - scoped lint, formatting, and diff checks - normal guarded LastCode quick CI, including 2,837 server tests Authored with GPT-5.6 Sol through the Codex harness.
The Legacy Sidebar environment icons were not actually aligned in scanning columns. Relative timestamp labels widened a flex container, so the worktree and environment icons shifted horizontally from row to row.\n\nThis replaces that flexible metadata area with fixed worktree, environment, and timestamp tracks. Empty worktree and local-icon cells remain mounted, while optional port and terminal indicators extend to the left without moving the scanning columns. The newer Show worktree indicators setting is preserved inside the fixed worktree track.\n\nVisual QA on the isolated shared web app:\n- authenticated app loaded successfully through vp run dev --share after rebasing onto PR #102\n- all 10 real Legacy Sidebar rows used identical worktree, environment, and timestamp coordinates\n- labels 2m ago, 42m ago, 1d ago, 17h ago, and just now left every column unchanged\n- local icon off left an aligned empty environment slot\n- local icon on filled that same slot without moving the worktree or timestamp columns\n- worktree icons off left an aligned empty worktree slot without moving environment icons or timestamps\n- original isolated settings were restored after testing\n\nValidation:\n- focused environment-icon tests: 10 passed\n- web typecheck: passed\n- LastCode quick local CI: passed on rebased head 59ade172c\n- web tests: 2,856 passed\n- server tests: 2,838 passed, 7 skipped\n- all remaining workspace suites passed\n\nThe collaborative preview screenshot operation itself failed, so there is no after image attached; visual layout was verified from the rendered browser geometry rather than inferred from source.\n\nImplemented with GPT-5.6 Codex in the T3 Code harness.
Tailscale Serve mappings persist independently of their loopback backends. LastCode previously treated a failed HTTP probe as permission to replace a configured port, and development sharing could proxy IPv4 while Vite listened only on IPv6 localhost. This ports pingdotgg#8338 exactly into LastCode. It treats the live Serve configuration as authoritative, reuses or removes only a handler whose root proxy exactly matches the current LastCode lifecycle, refuses occupied foreign handlers even when their backend is unavailable, and makes shared development bind both Vite and its proxy to `127.0.0.1`. Ordinary non-shared development remains on `localhost`. Upstream source: pingdotgg#8338 Upstream head: `858e5eed8675b2025ec39118c7c9ae23edb7a4ad` Validation: - 6 focused files, 242 tests - shared, tailscale, web, scripts, and server typechecks - scoped lint, formatting, and diff checks - normal guarded LastCode quick CI, including 2,837 server tests Authored with GPT-5.6 Sol through the Codex harness.
The Legacy Sidebar environment icons were not actually aligned in scanning columns. Relative timestamp labels widened a flex container, so the worktree and environment icons shifted horizontally from row to row.\n\nThis replaces that flexible metadata area with fixed worktree, environment, and timestamp tracks. Empty worktree and local-icon cells remain mounted, while optional port and terminal indicators extend to the left without moving the scanning columns. The newer Show worktree indicators setting is preserved inside the fixed worktree track.\n\nVisual QA on the isolated shared web app:\n- authenticated app loaded successfully through vp run dev --share after rebasing onto PR #102\n- all 10 real Legacy Sidebar rows used identical worktree, environment, and timestamp coordinates\n- labels 2m ago, 42m ago, 1d ago, 17h ago, and just now left every column unchanged\n- local icon off left an aligned empty environment slot\n- local icon on filled that same slot without moving the worktree or timestamp columns\n- worktree icons off left an aligned empty worktree slot without moving environment icons or timestamps\n- original isolated settings were restored after testing\n\nValidation:\n- focused environment-icon tests: 10 passed\n- web typecheck: passed\n- LastCode quick local CI: passed on rebased head 59ade172c\n- web tests: 2,856 passed\n- server tests: 2,838 passed, 7 skipped\n- all remaining workspace suites passed\n\nThe collaborative preview screenshot operation itself failed, so there is no after image attached; visual layout was verified from the rendered browser geometry rather than inferred from source.\n\nImplemented with GPT-5.6 Codex in the T3 Code harness.
Tailscale Serve mappings persist independently of their loopback backends. LastCode previously treated a failed HTTP probe as permission to replace a configured port, and development sharing could proxy IPv4 while Vite listened only on IPv6 localhost. This ports pingdotgg#8338 exactly into LastCode. It treats the live Serve configuration as authoritative, reuses or removes only a handler whose root proxy exactly matches the current LastCode lifecycle, refuses occupied foreign handlers even when their backend is unavailable, and makes shared development bind both Vite and its proxy to `127.0.0.1`. Ordinary non-shared development remains on `localhost`. Upstream source: pingdotgg#8338 Upstream head: `858e5eed8675b2025ec39118c7c9ae23edb7a4ad` Validation: - 6 focused files, 242 tests - shared, tailscale, web, scripts, and server typechecks - scoped lint, formatting, and diff checks - normal guarded LastCode quick CI, including 2,837 server tests Authored with GPT-5.6 Sol through the Codex harness.
The Legacy Sidebar environment icons were not actually aligned in scanning columns. Relative timestamp labels widened a flex container, so the worktree and environment icons shifted horizontally from row to row.\n\nThis replaces that flexible metadata area with fixed worktree, environment, and timestamp tracks. Empty worktree and local-icon cells remain mounted, while optional port and terminal indicators extend to the left without moving the scanning columns. The newer Show worktree indicators setting is preserved inside the fixed worktree track.\n\nVisual QA on the isolated shared web app:\n- authenticated app loaded successfully through vp run dev --share after rebasing onto PR #102\n- all 10 real Legacy Sidebar rows used identical worktree, environment, and timestamp coordinates\n- labels 2m ago, 42m ago, 1d ago, 17h ago, and just now left every column unchanged\n- local icon off left an aligned empty environment slot\n- local icon on filled that same slot without moving the worktree or timestamp columns\n- worktree icons off left an aligned empty worktree slot without moving environment icons or timestamps\n- original isolated settings were restored after testing\n\nValidation:\n- focused environment-icon tests: 10 passed\n- web typecheck: passed\n- LastCode quick local CI: passed on rebased head 59ade172c\n- web tests: 2,856 passed\n- server tests: 2,838 passed, 7 skipped\n- all remaining workspace suites passed\n\nThe collaborative preview screenshot operation itself failed, so there is no after image attached; visual layout was verified from the rendered browser geometry rather than inferred from source.\n\nImplemented with GPT-5.6 Codex in the T3 Code harness.
Tailscale Serve mappings persist independently of their loopback backends. LastCode previously treated a failed HTTP probe as permission to replace a configured port, and development sharing could proxy IPv4 while Vite listened only on IPv6 localhost. This ports pingdotgg#8338 exactly into LastCode. It treats the live Serve configuration as authoritative, reuses or removes only a handler whose root proxy exactly matches the current LastCode lifecycle, refuses occupied foreign handlers even when their backend is unavailable, and makes shared development bind both Vite and its proxy to `127.0.0.1`. Ordinary non-shared development remains on `localhost`. Upstream source: pingdotgg#8338 Upstream head: `858e5eed8675b2025ec39118c7c9ae23edb7a4ad` Validation: - 6 focused files, 242 tests - shared, tailscale, web, scripts, and server typechecks - scoped lint, formatting, and diff checks - normal guarded LastCode quick CI, including 2,837 server tests Authored with GPT-5.6 Sol through the Codex harness.
The Legacy Sidebar environment icons were not actually aligned in scanning columns. Relative timestamp labels widened a flex container, so the worktree and environment icons shifted horizontally from row to row.\n\nThis replaces that flexible metadata area with fixed worktree, environment, and timestamp tracks. Empty worktree and local-icon cells remain mounted, while optional port and terminal indicators extend to the left without moving the scanning columns. The newer Show worktree indicators setting is preserved inside the fixed worktree track.\n\nVisual QA on the isolated shared web app:\n- authenticated app loaded successfully through vp run dev --share after rebasing onto PR #102\n- all 10 real Legacy Sidebar rows used identical worktree, environment, and timestamp coordinates\n- labels 2m ago, 42m ago, 1d ago, 17h ago, and just now left every column unchanged\n- local icon off left an aligned empty environment slot\n- local icon on filled that same slot without moving the worktree or timestamp columns\n- worktree icons off left an aligned empty worktree slot without moving environment icons or timestamps\n- original isolated settings were restored after testing\n\nValidation:\n- focused environment-icon tests: 10 passed\n- web typecheck: passed\n- LastCode quick local CI: passed on rebased head 59ade172c\n- web tests: 2,856 passed\n- server tests: 2,838 passed, 7 skipped\n- all remaining workspace suites passed\n\nThe collaborative preview screenshot operation itself failed, so there is no after image attached; visual layout was verified from the rendered browser geometry rather than inferred from source.\n\nImplemented with GPT-5.6 Codex in the T3 Code harness.
Tailscale Serve mappings persist independently of their loopback backends. LastCode previously treated a failed HTTP probe as permission to replace a configured port, and development sharing could proxy IPv4 while Vite listened only on IPv6 localhost. This ports pingdotgg#8338 exactly into LastCode. It treats the live Serve configuration as authoritative, reuses or removes only a handler whose root proxy exactly matches the current LastCode lifecycle, refuses occupied foreign handlers even when their backend is unavailable, and makes shared development bind both Vite and its proxy to `127.0.0.1`. Ordinary non-shared development remains on `localhost`. Upstream source: pingdotgg#8338 Upstream head: `858e5eed8675b2025ec39118c7c9ae23edb7a4ad` Validation: - 6 focused files, 242 tests - shared, tailscale, web, scripts, and server typechecks - scoped lint, formatting, and diff checks - normal guarded LastCode quick CI, including 2,837 server tests Authored with GPT-5.6 Sol through the Codex harness.
The Legacy Sidebar environment icons were not actually aligned in scanning columns. Relative timestamp labels widened a flex container, so the worktree and environment icons shifted horizontally from row to row.\n\nThis replaces that flexible metadata area with fixed worktree, environment, and timestamp tracks. Empty worktree and local-icon cells remain mounted, while optional port and terminal indicators extend to the left without moving the scanning columns. The newer Show worktree indicators setting is preserved inside the fixed worktree track.\n\nVisual QA on the isolated shared web app:\n- authenticated app loaded successfully through vp run dev --share after rebasing onto PR #102\n- all 10 real Legacy Sidebar rows used identical worktree, environment, and timestamp coordinates\n- labels 2m ago, 42m ago, 1d ago, 17h ago, and just now left every column unchanged\n- local icon off left an aligned empty environment slot\n- local icon on filled that same slot without moving the worktree or timestamp columns\n- worktree icons off left an aligned empty worktree slot without moving environment icons or timestamps\n- original isolated settings were restored after testing\n\nValidation:\n- focused environment-icon tests: 10 passed\n- web typecheck: passed\n- LastCode quick local CI: passed on rebased head 59ade172c\n- web tests: 2,856 passed\n- server tests: 2,838 passed, 7 skipped\n- all remaining workspace suites passed\n\nThe collaborative preview screenshot operation itself failed, so there is no after image attached; visual layout was verified from the rendered browser geometry rather than inferred from source.\n\nImplemented with GPT-5.6 Codex in the T3 Code harness.
Tailscale Serve mappings persist independently of their loopback backends. LastCode previously treated a failed HTTP probe as permission to replace a configured port, and development sharing could proxy IPv4 while Vite listened only on IPv6 localhost. This ports pingdotgg#8338 exactly into LastCode. It treats the live Serve configuration as authoritative, reuses or removes only a handler whose root proxy exactly matches the current LastCode lifecycle, refuses occupied foreign handlers even when their backend is unavailable, and makes shared development bind both Vite and its proxy to `127.0.0.1`. Ordinary non-shared development remains on `localhost`. Upstream source: pingdotgg#8338 Upstream head: `858e5eed8675b2025ec39118c7c9ae23edb7a4ad` Validation: - 6 focused files, 242 tests - shared, tailscale, web, scripts, and server typechecks - scoped lint, formatting, and diff checks - normal guarded LastCode quick CI, including 2,837 server tests Authored with GPT-5.6 Sol through the Codex harness.
The Legacy Sidebar environment icons were not actually aligned in scanning columns. Relative timestamp labels widened a flex container, so the worktree and environment icons shifted horizontally from row to row.\n\nThis replaces that flexible metadata area with fixed worktree, environment, and timestamp tracks. Empty worktree and local-icon cells remain mounted, while optional port and terminal indicators extend to the left without moving the scanning columns. The newer Show worktree indicators setting is preserved inside the fixed worktree track.\n\nVisual QA on the isolated shared web app:\n- authenticated app loaded successfully through vp run dev --share after rebasing onto PR #102\n- all 10 real Legacy Sidebar rows used identical worktree, environment, and timestamp coordinates\n- labels 2m ago, 42m ago, 1d ago, 17h ago, and just now left every column unchanged\n- local icon off left an aligned empty environment slot\n- local icon on filled that same slot without moving the worktree or timestamp columns\n- worktree icons off left an aligned empty worktree slot without moving environment icons or timestamps\n- original isolated settings were restored after testing\n\nValidation:\n- focused environment-icon tests: 10 passed\n- web typecheck: passed\n- LastCode quick local CI: passed on rebased head 59ade172c\n- web tests: 2,856 passed\n- server tests: 2,838 passed, 7 skipped\n- all remaining workspace suites passed\n\nThe collaborative preview screenshot operation itself failed, so there is no after image attached; visual layout was verified from the rendered browser geometry rather than inferred from source.\n\nImplemented with GPT-5.6 Codex in the T3 Code harness.
Tailscale Serve mappings persist independently of their loopback backends. LastCode previously treated a failed HTTP probe as permission to replace a configured port, and development sharing could proxy IPv4 while Vite listened only on IPv6 localhost. This ports pingdotgg#8338 exactly into LastCode. It treats the live Serve configuration as authoritative, reuses or removes only a handler whose root proxy exactly matches the current LastCode lifecycle, refuses occupied foreign handlers even when their backend is unavailable, and makes shared development bind both Vite and its proxy to `127.0.0.1`. Ordinary non-shared development remains on `localhost`. Upstream source: pingdotgg#8338 Upstream head: `858e5eed8675b2025ec39118c7c9ae23edb7a4ad` Validation: - 6 focused files, 242 tests - shared, tailscale, web, scripts, and server typechecks - scoped lint, formatting, and diff checks - normal guarded LastCode quick CI, including 2,837 server tests Authored with GPT-5.6 Sol through the Codex harness.
The Legacy Sidebar environment icons were not actually aligned in scanning columns. Relative timestamp labels widened a flex container, so the worktree and environment icons shifted horizontally from row to row.\n\nThis replaces that flexible metadata area with fixed worktree, environment, and timestamp tracks. Empty worktree and local-icon cells remain mounted, while optional port and terminal indicators extend to the left without moving the scanning columns. The newer Show worktree indicators setting is preserved inside the fixed worktree track.\n\nVisual QA on the isolated shared web app:\n- authenticated app loaded successfully through vp run dev --share after rebasing onto PR #102\n- all 10 real Legacy Sidebar rows used identical worktree, environment, and timestamp coordinates\n- labels 2m ago, 42m ago, 1d ago, 17h ago, and just now left every column unchanged\n- local icon off left an aligned empty environment slot\n- local icon on filled that same slot without moving the worktree or timestamp columns\n- worktree icons off left an aligned empty worktree slot without moving environment icons or timestamps\n- original isolated settings were restored after testing\n\nValidation:\n- focused environment-icon tests: 10 passed\n- web typecheck: passed\n- LastCode quick local CI: passed on rebased head 59ade172c\n- web tests: 2,856 passed\n- server tests: 2,838 passed, 7 skipped\n- all remaining workspace suites passed\n\nThe collaborative preview screenshot operation itself failed, so there is no after image attached; visual layout was verified from the rendered browser geometry rather than inferred from source.\n\nImplemented with GPT-5.6 Codex in the T3 Code harness.
Tailscale Serve mappings persist independently of their loopback backends. LastCode previously treated a failed HTTP probe as permission to replace a configured port, and development sharing could proxy IPv4 while Vite listened only on IPv6 localhost. This ports pingdotgg#8338 exactly into LastCode. It treats the live Serve configuration as authoritative, reuses or removes only a handler whose root proxy exactly matches the current LastCode lifecycle, refuses occupied foreign handlers even when their backend is unavailable, and makes shared development bind both Vite and its proxy to `127.0.0.1`. Ordinary non-shared development remains on `localhost`. Upstream source: pingdotgg#8338 Upstream head: `858e5eed8675b2025ec39118c7c9ae23edb7a4ad` Validation: - 6 focused files, 242 tests - shared, tailscale, web, scripts, and server typechecks - scoped lint, formatting, and diff checks - normal guarded LastCode quick CI, including 2,837 server tests Authored with GPT-5.6 Sol through the Codex harness.
The Legacy Sidebar environment icons were not actually aligned in scanning columns. Relative timestamp labels widened a flex container, so the worktree and environment icons shifted horizontally from row to row.\n\nThis replaces that flexible metadata area with fixed worktree, environment, and timestamp tracks. Empty worktree and local-icon cells remain mounted, while optional port and terminal indicators extend to the left without moving the scanning columns. The newer Show worktree indicators setting is preserved inside the fixed worktree track.\n\nVisual QA on the isolated shared web app:\n- authenticated app loaded successfully through vp run dev --share after rebasing onto PR #102\n- all 10 real Legacy Sidebar rows used identical worktree, environment, and timestamp coordinates\n- labels 2m ago, 42m ago, 1d ago, 17h ago, and just now left every column unchanged\n- local icon off left an aligned empty environment slot\n- local icon on filled that same slot without moving the worktree or timestamp columns\n- worktree icons off left an aligned empty worktree slot without moving environment icons or timestamps\n- original isolated settings were restored after testing\n\nValidation:\n- focused environment-icon tests: 10 passed\n- web typecheck: passed\n- LastCode quick local CI: passed on rebased head 59ade172c\n- web tests: 2,856 passed\n- server tests: 2,838 passed, 7 skipped\n- all remaining workspace suites passed\n\nThe collaborative preview screenshot operation itself failed, so there is no after image attached; visual layout was verified from the rendered browser geometry rather than inferred from source.\n\nImplemented with GPT-5.6 Codex in the T3 Code harness.
Tailscale Serve mappings persist independently of their loopback backends. LastCode previously treated a failed HTTP probe as permission to replace a configured port, and development sharing could proxy IPv4 while Vite listened only on IPv6 localhost. This ports pingdotgg#8338 exactly into LastCode. It treats the live Serve configuration as authoritative, reuses or removes only a handler whose root proxy exactly matches the current LastCode lifecycle, refuses occupied foreign handlers even when their backend is unavailable, and makes shared development bind both Vite and its proxy to `127.0.0.1`. Ordinary non-shared development remains on `localhost`. Upstream source: pingdotgg#8338 Upstream head: `858e5eed8675b2025ec39118c7c9ae23edb7a4ad` Validation: - 6 focused files, 242 tests - shared, tailscale, web, scripts, and server typechecks - scoped lint, formatting, and diff checks - normal guarded LastCode quick CI, including 2,837 server tests Authored with GPT-5.6 Sol through the Codex harness.
The Legacy Sidebar environment icons were not actually aligned in scanning columns. Relative timestamp labels widened a flex container, so the worktree and environment icons shifted horizontally from row to row.\n\nThis replaces that flexible metadata area with fixed worktree, environment, and timestamp tracks. Empty worktree and local-icon cells remain mounted, while optional port and terminal indicators extend to the left without moving the scanning columns. The newer Show worktree indicators setting is preserved inside the fixed worktree track.\n\nVisual QA on the isolated shared web app:\n- authenticated app loaded successfully through vp run dev --share after rebasing onto PR #102\n- all 10 real Legacy Sidebar rows used identical worktree, environment, and timestamp coordinates\n- labels 2m ago, 42m ago, 1d ago, 17h ago, and just now left every column unchanged\n- local icon off left an aligned empty environment slot\n- local icon on filled that same slot without moving the worktree or timestamp columns\n- worktree icons off left an aligned empty worktree slot without moving environment icons or timestamps\n- original isolated settings were restored after testing\n\nValidation:\n- focused environment-icon tests: 10 passed\n- web typecheck: passed\n- LastCode quick local CI: passed on rebased head 59ade172c\n- web tests: 2,856 passed\n- server tests: 2,838 passed, 7 skipped\n- all remaining workspace suites passed\n\nThe collaborative preview screenshot operation itself failed, so there is no after image attached; visual layout was verified from the rendered browser geometry rather than inferred from source.\n\nImplemented with GPT-5.6 Codex in the T3 Code harness.
Tailscale Serve mappings persist independently of their loopback backends. LastCode previously treated a failed HTTP probe as permission to replace a configured port, and development sharing could proxy IPv4 while Vite listened only on IPv6 localhost. This ports pingdotgg#8338 exactly into LastCode. It treats the live Serve configuration as authoritative, reuses or removes only a handler whose root proxy exactly matches the current LastCode lifecycle, refuses occupied foreign handlers even when their backend is unavailable, and makes shared development bind both Vite and its proxy to `127.0.0.1`. Ordinary non-shared development remains on `localhost`. Upstream source: pingdotgg#8338 Upstream head: `858e5eed8675b2025ec39118c7c9ae23edb7a4ad` Validation: - 6 focused files, 242 tests - shared, tailscale, web, scripts, and server typechecks - scoped lint, formatting, and diff checks - normal guarded LastCode quick CI, including 2,837 server tests Authored with GPT-5.6 Sol through the Codex harness.
The Legacy Sidebar environment icons were not actually aligned in scanning columns. Relative timestamp labels widened a flex container, so the worktree and environment icons shifted horizontally from row to row.\n\nThis replaces that flexible metadata area with fixed worktree, environment, and timestamp tracks. Empty worktree and local-icon cells remain mounted, while optional port and terminal indicators extend to the left without moving the scanning columns. The newer Show worktree indicators setting is preserved inside the fixed worktree track.\n\nVisual QA on the isolated shared web app:\n- authenticated app loaded successfully through vp run dev --share after rebasing onto PR #102\n- all 10 real Legacy Sidebar rows used identical worktree, environment, and timestamp coordinates\n- labels 2m ago, 42m ago, 1d ago, 17h ago, and just now left every column unchanged\n- local icon off left an aligned empty environment slot\n- local icon on filled that same slot without moving the worktree or timestamp columns\n- worktree icons off left an aligned empty worktree slot without moving environment icons or timestamps\n- original isolated settings were restored after testing\n\nValidation:\n- focused environment-icon tests: 10 passed\n- web typecheck: passed\n- LastCode quick local CI: passed on rebased head 59ade172c\n- web tests: 2,856 passed\n- server tests: 2,838 passed, 7 skipped\n- all remaining workspace suites passed\n\nThe collaborative preview screenshot operation itself failed, so there is no after image attached; visual layout was verified from the rendered browser geometry rather than inferred from source.\n\nImplemented with GPT-5.6 Codex in the T3 Code harness.
Tailscale Serve mappings persist independently of their loopback backends. LastCode previously treated a failed HTTP probe as permission to replace a configured port, and development sharing could proxy IPv4 while Vite listened only on IPv6 localhost. This ports pingdotgg#8338 exactly into LastCode. It treats the live Serve configuration as authoritative, reuses or removes only a handler whose root proxy exactly matches the current LastCode lifecycle, refuses occupied foreign handlers even when their backend is unavailable, and makes shared development bind both Vite and its proxy to `127.0.0.1`. Ordinary non-shared development remains on `localhost`. Upstream source: pingdotgg#8338 Upstream head: `858e5eed8675b2025ec39118c7c9ae23edb7a4ad` Validation: - 6 focused files, 242 tests - shared, tailscale, web, scripts, and server typechecks - scoped lint, formatting, and diff checks - normal guarded LastCode quick CI, including 2,837 server tests Authored with GPT-5.6 Sol through the Codex harness.
The Legacy Sidebar environment icons were not actually aligned in scanning columns. Relative timestamp labels widened a flex container, so the worktree and environment icons shifted horizontally from row to row.\n\nThis replaces that flexible metadata area with fixed worktree, environment, and timestamp tracks. Empty worktree and local-icon cells remain mounted, while optional port and terminal indicators extend to the left without moving the scanning columns. The newer Show worktree indicators setting is preserved inside the fixed worktree track.\n\nVisual QA on the isolated shared web app:\n- authenticated app loaded successfully through vp run dev --share after rebasing onto PR #102\n- all 10 real Legacy Sidebar rows used identical worktree, environment, and timestamp coordinates\n- labels 2m ago, 42m ago, 1d ago, 17h ago, and just now left every column unchanged\n- local icon off left an aligned empty environment slot\n- local icon on filled that same slot without moving the worktree or timestamp columns\n- worktree icons off left an aligned empty worktree slot without moving environment icons or timestamps\n- original isolated settings were restored after testing\n\nValidation:\n- focused environment-icon tests: 10 passed\n- web typecheck: passed\n- LastCode quick local CI: passed on rebased head 59ade172c\n- web tests: 2,856 passed\n- server tests: 2,838 passed, 7 skipped\n- all remaining workspace suites passed\n\nThe collaborative preview screenshot operation itself failed, so there is no after image attached; visual layout was verified from the rendered browser geometry rather than inferred from source.\n\nImplemented with GPT-5.6 Codex in the T3 Code harness.
Tailscale Serve mappings persist independently of their loopback backends. LastCode previously treated a failed HTTP probe as permission to replace a configured port, and development sharing could proxy IPv4 while Vite listened only on IPv6 localhost. This ports pingdotgg#8338 exactly into LastCode. It treats the live Serve configuration as authoritative, reuses or removes only a handler whose root proxy exactly matches the current LastCode lifecycle, refuses occupied foreign handlers even when their backend is unavailable, and makes shared development bind both Vite and its proxy to `127.0.0.1`. Ordinary non-shared development remains on `localhost`. Upstream source: pingdotgg#8338 Upstream head: `858e5eed8675b2025ec39118c7c9ae23edb7a4ad` Validation: - 6 focused files, 242 tests - shared, tailscale, web, scripts, and server typechecks - scoped lint, formatting, and diff checks - normal guarded LastCode quick CI, including 2,837 server tests Authored with GPT-5.6 Sol through the Codex harness.
The Legacy Sidebar environment icons were not actually aligned in scanning columns. Relative timestamp labels widened a flex container, so the worktree and environment icons shifted horizontally from row to row.\n\nThis replaces that flexible metadata area with fixed worktree, environment, and timestamp tracks. Empty worktree and local-icon cells remain mounted, while optional port and terminal indicators extend to the left without moving the scanning columns. The newer Show worktree indicators setting is preserved inside the fixed worktree track.\n\nVisual QA on the isolated shared web app:\n- authenticated app loaded successfully through vp run dev --share after rebasing onto PR #102\n- all 10 real Legacy Sidebar rows used identical worktree, environment, and timestamp coordinates\n- labels 2m ago, 42m ago, 1d ago, 17h ago, and just now left every column unchanged\n- local icon off left an aligned empty environment slot\n- local icon on filled that same slot without moving the worktree or timestamp columns\n- worktree icons off left an aligned empty worktree slot without moving environment icons or timestamps\n- original isolated settings were restored after testing\n\nValidation:\n- focused environment-icon tests: 10 passed\n- web typecheck: passed\n- LastCode quick local CI: passed on rebased head 59ade172c\n- web tests: 2,856 passed\n- server tests: 2,838 passed, 7 skipped\n- all remaining workspace suites passed\n\nThe collaborative preview screenshot operation itself failed, so there is no after image attached; visual layout was verified from the rendered browser geometry rather than inferred from source.\n\nImplemented with GPT-5.6 Codex in the T3 Code harness.
Tailscale Serve mappings persist independently of their loopback backends. LastCode previously treated a failed HTTP probe as permission to replace a configured port, and development sharing could proxy IPv4 while Vite listened only on IPv6 localhost. This ports pingdotgg#8338 exactly into LastCode. It treats the live Serve configuration as authoritative, reuses or removes only a handler whose root proxy exactly matches the current LastCode lifecycle, refuses occupied foreign handlers even when their backend is unavailable, and makes shared development bind both Vite and its proxy to `127.0.0.1`. Ordinary non-shared development remains on `localhost`. Upstream source: pingdotgg#8338 Upstream head: `858e5eed8675b2025ec39118c7c9ae23edb7a4ad` Validation: - 6 focused files, 242 tests - shared, tailscale, web, scripts, and server typechecks - scoped lint, formatting, and diff checks - normal guarded LastCode quick CI, including 2,837 server tests Authored with GPT-5.6 Sol through the Codex harness.
The Legacy Sidebar environment icons were not actually aligned in scanning columns. Relative timestamp labels widened a flex container, so the worktree and environment icons shifted horizontally from row to row.\n\nThis replaces that flexible metadata area with fixed worktree, environment, and timestamp tracks. Empty worktree and local-icon cells remain mounted, while optional port and terminal indicators extend to the left without moving the scanning columns. The newer Show worktree indicators setting is preserved inside the fixed worktree track.\n\nVisual QA on the isolated shared web app:\n- authenticated app loaded successfully through vp run dev --share after rebasing onto PR #102\n- all 10 real Legacy Sidebar rows used identical worktree, environment, and timestamp coordinates\n- labels 2m ago, 42m ago, 1d ago, 17h ago, and just now left every column unchanged\n- local icon off left an aligned empty environment slot\n- local icon on filled that same slot without moving the worktree or timestamp columns\n- worktree icons off left an aligned empty worktree slot without moving environment icons or timestamps\n- original isolated settings were restored after testing\n\nValidation:\n- focused environment-icon tests: 10 passed\n- web typecheck: passed\n- LastCode quick local CI: passed on rebased head 59ade172c\n- web tests: 2,856 passed\n- server tests: 2,838 passed, 7 skipped\n- all remaining workspace suites passed\n\nThe collaborative preview screenshot operation itself failed, so there is no after image attached; visual layout was verified from the rendered browser geometry rather than inferred from source.\n\nImplemented with GPT-5.6 Codex in the T3 Code harness.
Tailscale Serve mappings persist independently of their loopback backends. LastCode previously treated a failed HTTP probe as permission to replace a configured port, and development sharing could proxy IPv4 while Vite listened only on IPv6 localhost. This ports pingdotgg#8338 exactly into LastCode. It treats the live Serve configuration as authoritative, reuses or removes only a handler whose root proxy exactly matches the current LastCode lifecycle, refuses occupied foreign handlers even when their backend is unavailable, and makes shared development bind both Vite and its proxy to `127.0.0.1`. Ordinary non-shared development remains on `localhost`. Upstream source: pingdotgg#8338 Upstream head: `858e5eed8675b2025ec39118c7c9ae23edb7a4ad` Validation: - 6 focused files, 242 tests - shared, tailscale, web, scripts, and server typechecks - scoped lint, formatting, and diff checks - normal guarded LastCode quick CI, including 2,837 server tests Authored with GPT-5.6 Sol through the Codex harness.
The Legacy Sidebar environment icons were not actually aligned in scanning columns. Relative timestamp labels widened a flex container, so the worktree and environment icons shifted horizontally from row to row.\n\nThis replaces that flexible metadata area with fixed worktree, environment, and timestamp tracks. Empty worktree and local-icon cells remain mounted, while optional port and terminal indicators extend to the left without moving the scanning columns. The newer Show worktree indicators setting is preserved inside the fixed worktree track.\n\nVisual QA on the isolated shared web app:\n- authenticated app loaded successfully through vp run dev --share after rebasing onto PR #102\n- all 10 real Legacy Sidebar rows used identical worktree, environment, and timestamp coordinates\n- labels 2m ago, 42m ago, 1d ago, 17h ago, and just now left every column unchanged\n- local icon off left an aligned empty environment slot\n- local icon on filled that same slot without moving the worktree or timestamp columns\n- worktree icons off left an aligned empty worktree slot without moving environment icons or timestamps\n- original isolated settings were restored after testing\n\nValidation:\n- focused environment-icon tests: 10 passed\n- web typecheck: passed\n- LastCode quick local CI: passed on rebased head 59ade172c\n- web tests: 2,856 passed\n- server tests: 2,838 passed, 7 skipped\n- all remaining workspace suites passed\n\nThe collaborative preview screenshot operation itself failed, so there is no after image attached; visual layout was verified from the rendered browser geometry rather than inferred from source.\n\nImplemented with GPT-5.6 Codex in the T3 Code harness.
Tailscale Serve mappings persist independently of their loopback backends. LastCode previously treated a failed HTTP probe as permission to replace a configured port, and development sharing could proxy IPv4 while Vite listened only on IPv6 localhost. This ports pingdotgg#8338 exactly into LastCode. It treats the live Serve configuration as authoritative, reuses or removes only a handler whose root proxy exactly matches the current LastCode lifecycle, refuses occupied foreign handlers even when their backend is unavailable, and makes shared development bind both Vite and its proxy to `127.0.0.1`. Ordinary non-shared development remains on `localhost`. Upstream source: pingdotgg#8338 Upstream head: `858e5eed8675b2025ec39118c7c9ae23edb7a4ad` Validation: - 6 focused files, 242 tests - shared, tailscale, web, scripts, and server typechecks - scoped lint, formatting, and diff checks - normal guarded LastCode quick CI, including 2,837 server tests Authored with GPT-5.6 Sol through the Codex harness.
The Legacy Sidebar environment icons were not actually aligned in scanning columns. Relative timestamp labels widened a flex container, so the worktree and environment icons shifted horizontally from row to row.\n\nThis replaces that flexible metadata area with fixed worktree, environment, and timestamp tracks. Empty worktree and local-icon cells remain mounted, while optional port and terminal indicators extend to the left without moving the scanning columns. The newer Show worktree indicators setting is preserved inside the fixed worktree track.\n\nVisual QA on the isolated shared web app:\n- authenticated app loaded successfully through vp run dev --share after rebasing onto PR #102\n- all 10 real Legacy Sidebar rows used identical worktree, environment, and timestamp coordinates\n- labels 2m ago, 42m ago, 1d ago, 17h ago, and just now left every column unchanged\n- local icon off left an aligned empty environment slot\n- local icon on filled that same slot without moving the worktree or timestamp columns\n- worktree icons off left an aligned empty worktree slot without moving environment icons or timestamps\n- original isolated settings were restored after testing\n\nValidation:\n- focused environment-icon tests: 10 passed\n- web typecheck: passed\n- LastCode quick local CI: passed on rebased head 59ade172c\n- web tests: 2,856 passed\n- server tests: 2,838 passed, 7 skipped\n- all remaining workspace suites passed\n\nThe collaborative preview screenshot operation itself failed, so there is no after image attached; visual layout was verified from the rendered browser geometry rather than inferred from source.\n\nImplemented with GPT-5.6 Codex in the T3 Code harness.
Tailscale Serve mappings persist independently of their loopback backends. LastCode previously treated a failed HTTP probe as permission to replace a configured port, and development sharing could proxy IPv4 while Vite listened only on IPv6 localhost.
This ports pingdotgg#8338 exactly into LastCode. It treats the live Serve configuration as authoritative, reuses or removes only a handler whose root proxy exactly matches the current LastCode lifecycle, refuses occupied foreign handlers even when their backend is unavailable, and makes shared development bind both Vite and its proxy to
127.0.0.1. Ordinary non-shared development remains onlocalhost.Upstream source: pingdotgg#8338
Upstream head:
858e5eed8675b2025ec39118c7c9ae23edb7a4adValidation:
Authored with GPT-5.6 Sol through the Codex harness.