Skip to content

fix(web): tolerate external project script ids in keybinding commands - #112

Merged
lastobelus merged 2 commits into
lastcode/mainfrom
port/upstream/pr-7961-tolerate-project-script-ids
Aug 27, 2026
Merged

fix(web): tolerate external project script ids in keybinding commands#112
lastobelus merged 2 commits into
lastcode/mainfrom
port/upstream/pr-7961-tolerate-project-script-ids

Conversation

@lastobelus

@lastobelus lastobelus commented Aug 27, 2026

Copy link
Copy Markdown
Owner

Summary

  • import the maintainer-preferred fix from fix(web): tolerate external project script ids in keybinding commands pingdotgg/t3code#7961 at pinned head 6be823df41b105ddee33677f0b72aa4f5ad1c868
  • accept every canonical non-empty project-script ID when constructing dynamic keybinding commands, matching the existing ProjectScript contract
  • keep UI-generated IDs as the existing lowercase slugs while allowing externally supplied and already-saved IDs
  • reject whitespace-padded dynamic commands instead of accepting shortcuts that cannot match normalized saved IDs

Incident

A saved action in a LastCode server environment used ID build-intel-package-macos (25 characters). The renderer mapped that valid project script through a 24-character template-literal schema during render, throwing Expected a string matching template literal parts in both thread controls and Project Settings.

No persisted project data was changed or migrated.

Validation

  • 24 focused tests across the dynamic-command contract, project-script helpers, and project-script keybinding decoder
  • contracts and web typechecks
  • focused formatting and lint
  • committed-range git diff --check
  • disposable matched fixture with the exact 25-character action ID rendered in chat
  • locally installed recovery build opened existing saved state from a LastCode GUI node and rendered Build Intel package (macOS) in Project Settings

Provenance

Refs #103

The server accepts any non-empty trimmed string as a ProjectScript id,
but the client's SCRIPT_RUN_COMMAND_PATTERN only allowed lowercase slugs
of up to 24 characters. An id dispatched over the API (e.g. a UUID) made
commandForProjectScript throw during render, crashing every thread view
and the project settings panel with no way to repair from the UI.

Relax the pattern's middle segment to TrimmedNonEmptyString, matching
the server-side constraint. UI-generated ids are still slugs via
nextProjectScriptId, so nothing changes for normal usage; existing
keybinding rules keep decoding.

Fixes pingdotgg#7851

Worked on by ox-alpha via the pi coding agent harness.

(cherry picked from commit 6be823d)
@lastobelus
lastobelus force-pushed the port/upstream/pr-7961-tolerate-project-script-ids branch from 5956bf5 to f0434c7 Compare August 27, 2026 20:46

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 5956bf5b6c

ℹ️ 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".

Comment thread packages/contracts/src/keybindings.ts Outdated
Comment thread packages/contracts/src/keybindings.ts Outdated
@lastobelus

Copy link
Copy Markdown
Owner Author

@codex review

@chatgpt-codex-connector

Copy link
Copy Markdown

Codex Review: Didn't find any major issues. 🚀

Reviewed commit: 935b8f90c2

ℹ️ 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".

@lastobelus
lastobelus merged commit e89a228 into lastcode/main Aug 27, 2026
10 checks passed
@lastobelus
lastobelus deleted the port/upstream/pr-7961-tolerate-project-script-ids branch August 27, 2026 21:11
lastobelus added a commit that referenced this pull request Aug 28, 2026
…#112)

## Summary

- import the maintainer-preferred fix from pingdotgg#7961 at
pinned head `6be823df41b105ddee33677f0b72aa4f5ad1c868`
- accept every canonical non-empty project-script ID when constructing
dynamic keybinding commands, matching the existing `ProjectScript`
contract
- keep UI-generated IDs as the existing lowercase slugs while allowing
externally supplied and already-saved IDs
- reject whitespace-padded dynamic commands instead of accepting
shortcuts that cannot match normalized saved IDs

## Incident

A saved htulo action used ID `build-intel-package-macos` (25
characters). The renderer mapped that valid project script through a
24-character template-literal schema during render, throwing `Expected a
string matching template literal parts` in both thread controls and
Project Settings.

No persisted project data was changed or migrated.

## Validation

- 24 focused tests across the dynamic-command contract, project-script
helpers, and project-script keybinding decoder
- contracts and web typechecks
- focused formatting and lint
- committed-range `git diff --check`
- disposable matched fixture with the exact 25-character action ID
rendered in chat
- locally installed recovery build opened the real htulo thread and
rendered **Build Intel package (macOS)** in Project Settings

## Provenance

- upstream issue: pingdotgg#7851
- upstream PR: pingdotgg#7961
- exact upstream commit preserved by `cherry-pick -x`

Refs #103

---------

Co-authored-by: xuzhaorui <119386408+xuzhaorui@users.noreply.github.com>
lastobelus added a commit that referenced this pull request Aug 28, 2026
…#112)

## Summary

- import the maintainer-preferred fix from pingdotgg#7961 at
pinned head `6be823df41b105ddee33677f0b72aa4f5ad1c868`
- accept every canonical non-empty project-script ID when constructing
dynamic keybinding commands, matching the existing `ProjectScript`
contract
- keep UI-generated IDs as the existing lowercase slugs while allowing
externally supplied and already-saved IDs
- reject whitespace-padded dynamic commands instead of accepting
shortcuts that cannot match normalized saved IDs

## Incident

A saved htulo action used ID `build-intel-package-macos` (25
characters). The renderer mapped that valid project script through a
24-character template-literal schema during render, throwing `Expected a
string matching template literal parts` in both thread controls and
Project Settings.

No persisted project data was changed or migrated.

## Validation

- 24 focused tests across the dynamic-command contract, project-script
helpers, and project-script keybinding decoder
- contracts and web typechecks
- focused formatting and lint
- committed-range `git diff --check`
- disposable matched fixture with the exact 25-character action ID
rendered in chat
- locally installed recovery build opened the real htulo thread and
rendered **Build Intel package (macOS)** in Project Settings

## Provenance

- upstream issue: pingdotgg#7851
- upstream PR: pingdotgg#7961
- exact upstream commit preserved by `cherry-pick -x`

Refs #103

---------

Co-authored-by: xuzhaorui <119386408+xuzhaorui@users.noreply.github.com>
lastobelus added a commit that referenced this pull request Aug 28, 2026
…#112)

## Summary

- import the maintainer-preferred fix from pingdotgg#7961 at
pinned head `6be823df41b105ddee33677f0b72aa4f5ad1c868`
- accept every canonical non-empty project-script ID when constructing
dynamic keybinding commands, matching the existing `ProjectScript`
contract
- keep UI-generated IDs as the existing lowercase slugs while allowing
externally supplied and already-saved IDs
- reject whitespace-padded dynamic commands instead of accepting
shortcuts that cannot match normalized saved IDs

## Incident

A saved htulo action used ID `build-intel-package-macos` (25
characters). The renderer mapped that valid project script through a
24-character template-literal schema during render, throwing `Expected a
string matching template literal parts` in both thread controls and
Project Settings.

No persisted project data was changed or migrated.

## Validation

- 24 focused tests across the dynamic-command contract, project-script
helpers, and project-script keybinding decoder
- contracts and web typechecks
- focused formatting and lint
- committed-range `git diff --check`
- disposable matched fixture with the exact 25-character action ID
rendered in chat
- locally installed recovery build opened the real htulo thread and
rendered **Build Intel package (macOS)** in Project Settings

## Provenance

- upstream issue: pingdotgg#7851
- upstream PR: pingdotgg#7961
- exact upstream commit preserved by `cherry-pick -x`

Refs #103

---------

Co-authored-by: xuzhaorui <119386408+xuzhaorui@users.noreply.github.com>
lastobelus added a commit that referenced this pull request Aug 28, 2026
…#112)

## Summary

- import the maintainer-preferred fix from pingdotgg#7961 at
pinned head `6be823df41b105ddee33677f0b72aa4f5ad1c868`
- accept every canonical non-empty project-script ID when constructing
dynamic keybinding commands, matching the existing `ProjectScript`
contract
- keep UI-generated IDs as the existing lowercase slugs while allowing
externally supplied and already-saved IDs
- reject whitespace-padded dynamic commands instead of accepting
shortcuts that cannot match normalized saved IDs

## Incident

A saved htulo action used ID `build-intel-package-macos` (25
characters). The renderer mapped that valid project script through a
24-character template-literal schema during render, throwing `Expected a
string matching template literal parts` in both thread controls and
Project Settings.

No persisted project data was changed or migrated.

## Validation

- 24 focused tests across the dynamic-command contract, project-script
helpers, and project-script keybinding decoder
- contracts and web typechecks
- focused formatting and lint
- committed-range `git diff --check`
- disposable matched fixture with the exact 25-character action ID
rendered in chat
- locally installed recovery build opened the real htulo thread and
rendered **Build Intel package (macOS)** in Project Settings

## Provenance

- upstream issue: pingdotgg#7851
- upstream PR: pingdotgg#7961
- exact upstream commit preserved by `cherry-pick -x`

Refs #103

---------

Co-authored-by: xuzhaorui <119386408+xuzhaorui@users.noreply.github.com>
lastobelus added a commit that referenced this pull request Aug 28, 2026
…#112)

## Summary

- import the maintainer-preferred fix from pingdotgg#7961 at
pinned head `6be823df41b105ddee33677f0b72aa4f5ad1c868`
- accept every canonical non-empty project-script ID when constructing
dynamic keybinding commands, matching the existing `ProjectScript`
contract
- keep UI-generated IDs as the existing lowercase slugs while allowing
externally supplied and already-saved IDs
- reject whitespace-padded dynamic commands instead of accepting
shortcuts that cannot match normalized saved IDs

## Incident

A saved htulo action used ID `build-intel-package-macos` (25
characters). The renderer mapped that valid project script through a
24-character template-literal schema during render, throwing `Expected a
string matching template literal parts` in both thread controls and
Project Settings.

No persisted project data was changed or migrated.

## Validation

- 24 focused tests across the dynamic-command contract, project-script
helpers, and project-script keybinding decoder
- contracts and web typechecks
- focused formatting and lint
- committed-range `git diff --check`
- disposable matched fixture with the exact 25-character action ID
rendered in chat
- locally installed recovery build opened the real htulo thread and
rendered **Build Intel package (macOS)** in Project Settings

## Provenance

- upstream issue: pingdotgg#7851
- upstream PR: pingdotgg#7961
- exact upstream commit preserved by `cherry-pick -x`

Refs #103

---------

Co-authored-by: xuzhaorui <119386408+xuzhaorui@users.noreply.github.com>
lastobelus added a commit that referenced this pull request Aug 29, 2026
…#112)

## Summary

- import the maintainer-preferred fix from pingdotgg#7961 at
pinned head `6be823df41b105ddee33677f0b72aa4f5ad1c868`
- accept every canonical non-empty project-script ID when constructing
dynamic keybinding commands, matching the existing `ProjectScript`
contract
- keep UI-generated IDs as the existing lowercase slugs while allowing
externally supplied and already-saved IDs
- reject whitespace-padded dynamic commands instead of accepting
shortcuts that cannot match normalized saved IDs

## Incident

A saved htulo action used ID `build-intel-package-macos` (25
characters). The renderer mapped that valid project script through a
24-character template-literal schema during render, throwing `Expected a
string matching template literal parts` in both thread controls and
Project Settings.

No persisted project data was changed or migrated.

## Validation

- 24 focused tests across the dynamic-command contract, project-script
helpers, and project-script keybinding decoder
- contracts and web typechecks
- focused formatting and lint
- committed-range `git diff --check`
- disposable matched fixture with the exact 25-character action ID
rendered in chat
- locally installed recovery build opened the real htulo thread and
rendered **Build Intel package (macOS)** in Project Settings

## Provenance

- upstream issue: pingdotgg#7851
- upstream PR: pingdotgg#7961
- exact upstream commit preserved by `cherry-pick -x`

Refs #103

---------

Co-authored-by: xuzhaorui <119386408+xuzhaorui@users.noreply.github.com>
lastobelus added a commit that referenced this pull request Aug 29, 2026
…#112)

## Summary

- import the maintainer-preferred fix from pingdotgg#7961 at
pinned head `6be823df41b105ddee33677f0b72aa4f5ad1c868`
- accept every canonical non-empty project-script ID when constructing
dynamic keybinding commands, matching the existing `ProjectScript`
contract
- keep UI-generated IDs as the existing lowercase slugs while allowing
externally supplied and already-saved IDs
- reject whitespace-padded dynamic commands instead of accepting
shortcuts that cannot match normalized saved IDs

## Incident

A saved htulo action used ID `build-intel-package-macos` (25
characters). The renderer mapped that valid project script through a
24-character template-literal schema during render, throwing `Expected a
string matching template literal parts` in both thread controls and
Project Settings.

No persisted project data was changed or migrated.

## Validation

- 24 focused tests across the dynamic-command contract, project-script
helpers, and project-script keybinding decoder
- contracts and web typechecks
- focused formatting and lint
- committed-range `git diff --check`
- disposable matched fixture with the exact 25-character action ID
rendered in chat
- locally installed recovery build opened the real htulo thread and
rendered **Build Intel package (macOS)** in Project Settings

## Provenance

- upstream issue: pingdotgg#7851
- upstream PR: pingdotgg#7961
- exact upstream commit preserved by `cherry-pick -x`

Refs #103

---------

Co-authored-by: xuzhaorui <119386408+xuzhaorui@users.noreply.github.com>
lastobelus added a commit that referenced this pull request Aug 29, 2026
…#112)

## Summary

- import the maintainer-preferred fix from pingdotgg#7961 at
pinned head `6be823df41b105ddee33677f0b72aa4f5ad1c868`
- accept every canonical non-empty project-script ID when constructing
dynamic keybinding commands, matching the existing `ProjectScript`
contract
- keep UI-generated IDs as the existing lowercase slugs while allowing
externally supplied and already-saved IDs
- reject whitespace-padded dynamic commands instead of accepting
shortcuts that cannot match normalized saved IDs

## Incident

A saved htulo action used ID `build-intel-package-macos` (25
characters). The renderer mapped that valid project script through a
24-character template-literal schema during render, throwing `Expected a
string matching template literal parts` in both thread controls and
Project Settings.

No persisted project data was changed or migrated.

## Validation

- 24 focused tests across the dynamic-command contract, project-script
helpers, and project-script keybinding decoder
- contracts and web typechecks
- focused formatting and lint
- committed-range `git diff --check`
- disposable matched fixture with the exact 25-character action ID
rendered in chat
- locally installed recovery build opened the real htulo thread and
rendered **Build Intel package (macOS)** in Project Settings

## Provenance

- upstream issue: pingdotgg#7851
- upstream PR: pingdotgg#7961
- exact upstream commit preserved by `cherry-pick -x`

Refs #103

---------

Co-authored-by: xuzhaorui <119386408+xuzhaorui@users.noreply.github.com>
lastobelus added a commit that referenced this pull request Aug 30, 2026
…#112)

## Summary

- import the maintainer-preferred fix from pingdotgg#7961 at
pinned head `6be823df41b105ddee33677f0b72aa4f5ad1c868`
- accept every canonical non-empty project-script ID when constructing
dynamic keybinding commands, matching the existing `ProjectScript`
contract
- keep UI-generated IDs as the existing lowercase slugs while allowing
externally supplied and already-saved IDs
- reject whitespace-padded dynamic commands instead of accepting
shortcuts that cannot match normalized saved IDs

## Incident

A saved htulo action used ID `build-intel-package-macos` (25
characters). The renderer mapped that valid project script through a
24-character template-literal schema during render, throwing `Expected a
string matching template literal parts` in both thread controls and
Project Settings.

No persisted project data was changed or migrated.

## Validation

- 24 focused tests across the dynamic-command contract, project-script
helpers, and project-script keybinding decoder
- contracts and web typechecks
- focused formatting and lint
- committed-range `git diff --check`
- disposable matched fixture with the exact 25-character action ID
rendered in chat
- locally installed recovery build opened the real htulo thread and
rendered **Build Intel package (macOS)** in Project Settings

## Provenance

- upstream issue: pingdotgg#7851
- upstream PR: pingdotgg#7961
- exact upstream commit preserved by `cherry-pick -x`

Refs #103

---------

Co-authored-by: xuzhaorui <119386408+xuzhaorui@users.noreply.github.com>
lastobelus added a commit that referenced this pull request Aug 31, 2026
…#112)

## Summary

- import the maintainer-preferred fix from pingdotgg#7961 at
pinned head `6be823df41b105ddee33677f0b72aa4f5ad1c868`
- accept every canonical non-empty project-script ID when constructing
dynamic keybinding commands, matching the existing `ProjectScript`
contract
- keep UI-generated IDs as the existing lowercase slugs while allowing
externally supplied and already-saved IDs
- reject whitespace-padded dynamic commands instead of accepting
shortcuts that cannot match normalized saved IDs

## Incident

A saved htulo action used ID `build-intel-package-macos` (25
characters). The renderer mapped that valid project script through a
24-character template-literal schema during render, throwing `Expected a
string matching template literal parts` in both thread controls and
Project Settings.

No persisted project data was changed or migrated.

## Validation

- 24 focused tests across the dynamic-command contract, project-script
helpers, and project-script keybinding decoder
- contracts and web typechecks
- focused formatting and lint
- committed-range `git diff --check`
- disposable matched fixture with the exact 25-character action ID
rendered in chat
- locally installed recovery build opened the real htulo thread and
rendered **Build Intel package (macOS)** in Project Settings

## Provenance

- upstream issue: pingdotgg#7851
- upstream PR: pingdotgg#7961
- exact upstream commit preserved by `cherry-pick -x`

Refs #103

---------

Co-authored-by: xuzhaorui <119386408+xuzhaorui@users.noreply.github.com>
lastobelus added a commit that referenced this pull request Sep 1, 2026
…#112)

## Summary

- import the maintainer-preferred fix from pingdotgg#7961 at
pinned head `6be823df41b105ddee33677f0b72aa4f5ad1c868`
- accept every canonical non-empty project-script ID when constructing
dynamic keybinding commands, matching the existing `ProjectScript`
contract
- keep UI-generated IDs as the existing lowercase slugs while allowing
externally supplied and already-saved IDs
- reject whitespace-padded dynamic commands instead of accepting
shortcuts that cannot match normalized saved IDs

## Incident

A saved htulo action used ID `build-intel-package-macos` (25
characters). The renderer mapped that valid project script through a
24-character template-literal schema during render, throwing `Expected a
string matching template literal parts` in both thread controls and
Project Settings.

No persisted project data was changed or migrated.

## Validation

- 24 focused tests across the dynamic-command contract, project-script
helpers, and project-script keybinding decoder
- contracts and web typechecks
- focused formatting and lint
- committed-range `git diff --check`
- disposable matched fixture with the exact 25-character action ID
rendered in chat
- locally installed recovery build opened the real htulo thread and
rendered **Build Intel package (macOS)** in Project Settings

## Provenance

- upstream issue: pingdotgg#7851
- upstream PR: pingdotgg#7961
- exact upstream commit preserved by `cherry-pick -x`

Refs #103

---------

Co-authored-by: xuzhaorui <119386408+xuzhaorui@users.noreply.github.com>
lastobelus added a commit that referenced this pull request Sep 1, 2026
…#112)

## Summary

- import the maintainer-preferred fix from pingdotgg#7961 at
pinned head `6be823df41b105ddee33677f0b72aa4f5ad1c868`
- accept every canonical non-empty project-script ID when constructing
dynamic keybinding commands, matching the existing `ProjectScript`
contract
- keep UI-generated IDs as the existing lowercase slugs while allowing
externally supplied and already-saved IDs
- reject whitespace-padded dynamic commands instead of accepting
shortcuts that cannot match normalized saved IDs

## Incident

A saved htulo action used ID `build-intel-package-macos` (25
characters). The renderer mapped that valid project script through a
24-character template-literal schema during render, throwing `Expected a
string matching template literal parts` in both thread controls and
Project Settings.

No persisted project data was changed or migrated.

## Validation

- 24 focused tests across the dynamic-command contract, project-script
helpers, and project-script keybinding decoder
- contracts and web typechecks
- focused formatting and lint
- committed-range `git diff --check`
- disposable matched fixture with the exact 25-character action ID
rendered in chat
- locally installed recovery build opened the real htulo thread and
rendered **Build Intel package (macOS)** in Project Settings

## Provenance

- upstream issue: pingdotgg#7851
- upstream PR: pingdotgg#7961
- exact upstream commit preserved by `cherry-pick -x`

Refs #103

---------

Co-authored-by: xuzhaorui <119386408+xuzhaorui@users.noreply.github.com>
lastobelus added a commit that referenced this pull request Sep 1, 2026
…#112)

## Summary

- import the maintainer-preferred fix from pingdotgg#7961 at
pinned head `6be823df41b105ddee33677f0b72aa4f5ad1c868`
- accept every canonical non-empty project-script ID when constructing
dynamic keybinding commands, matching the existing `ProjectScript`
contract
- keep UI-generated IDs as the existing lowercase slugs while allowing
externally supplied and already-saved IDs
- reject whitespace-padded dynamic commands instead of accepting
shortcuts that cannot match normalized saved IDs

## Incident

A saved htulo action used ID `build-intel-package-macos` (25
characters). The renderer mapped that valid project script through a
24-character template-literal schema during render, throwing `Expected a
string matching template literal parts` in both thread controls and
Project Settings.

No persisted project data was changed or migrated.

## Validation

- 24 focused tests across the dynamic-command contract, project-script
helpers, and project-script keybinding decoder
- contracts and web typechecks
- focused formatting and lint
- committed-range `git diff --check`
- disposable matched fixture with the exact 25-character action ID
rendered in chat
- locally installed recovery build opened the real htulo thread and
rendered **Build Intel package (macOS)** in Project Settings

## Provenance

- upstream issue: pingdotgg#7851
- upstream PR: pingdotgg#7961
- exact upstream commit preserved by `cherry-pick -x`

Refs #103

---------

Co-authored-by: xuzhaorui <119386408+xuzhaorui@users.noreply.github.com>
lastobelus added a commit that referenced this pull request Sep 1, 2026
…#112)

## Summary

- import the maintainer-preferred fix from pingdotgg#7961 at
pinned head `6be823df41b105ddee33677f0b72aa4f5ad1c868`
- accept every canonical non-empty project-script ID when constructing
dynamic keybinding commands, matching the existing `ProjectScript`
contract
- keep UI-generated IDs as the existing lowercase slugs while allowing
externally supplied and already-saved IDs
- reject whitespace-padded dynamic commands instead of accepting
shortcuts that cannot match normalized saved IDs

## Incident

A saved htulo action used ID `build-intel-package-macos` (25
characters). The renderer mapped that valid project script through a
24-character template-literal schema during render, throwing `Expected a
string matching template literal parts` in both thread controls and
Project Settings.

No persisted project data was changed or migrated.

## Validation

- 24 focused tests across the dynamic-command contract, project-script
helpers, and project-script keybinding decoder
- contracts and web typechecks
- focused formatting and lint
- committed-range `git diff --check`
- disposable matched fixture with the exact 25-character action ID
rendered in chat
- locally installed recovery build opened the real htulo thread and
rendered **Build Intel package (macOS)** in Project Settings

## Provenance

- upstream issue: pingdotgg#7851
- upstream PR: pingdotgg#7961
- exact upstream commit preserved by `cherry-pick -x`

Refs #103

---------

Co-authored-by: xuzhaorui <119386408+xuzhaorui@users.noreply.github.com>
lastobelus added a commit that referenced this pull request Sep 1, 2026
…#112)

## Summary

- import the maintainer-preferred fix from pingdotgg#7961 at
pinned head `6be823df41b105ddee33677f0b72aa4f5ad1c868`
- accept every canonical non-empty project-script ID when constructing
dynamic keybinding commands, matching the existing `ProjectScript`
contract
- keep UI-generated IDs as the existing lowercase slugs while allowing
externally supplied and already-saved IDs
- reject whitespace-padded dynamic commands instead of accepting
shortcuts that cannot match normalized saved IDs

## Incident

A saved htulo action used ID `build-intel-package-macos` (25
characters). The renderer mapped that valid project script through a
24-character template-literal schema during render, throwing `Expected a
string matching template literal parts` in both thread controls and
Project Settings.

No persisted project data was changed or migrated.

## Validation

- 24 focused tests across the dynamic-command contract, project-script
helpers, and project-script keybinding decoder
- contracts and web typechecks
- focused formatting and lint
- committed-range `git diff --check`
- disposable matched fixture with the exact 25-character action ID
rendered in chat
- locally installed recovery build opened the real htulo thread and
rendered **Build Intel package (macOS)** in Project Settings

## Provenance

- upstream issue: pingdotgg#7851
- upstream PR: pingdotgg#7961
- exact upstream commit preserved by `cherry-pick -x`

Refs #103

---------

Co-authored-by: xuzhaorui <119386408+xuzhaorui@users.noreply.github.com>
lastobelus added a commit that referenced this pull request Sep 1, 2026
…#112)

## Summary

- import the maintainer-preferred fix from pingdotgg#7961 at
pinned head `6be823df41b105ddee33677f0b72aa4f5ad1c868`
- accept every canonical non-empty project-script ID when constructing
dynamic keybinding commands, matching the existing `ProjectScript`
contract
- keep UI-generated IDs as the existing lowercase slugs while allowing
externally supplied and already-saved IDs
- reject whitespace-padded dynamic commands instead of accepting
shortcuts that cannot match normalized saved IDs

## Incident

A saved htulo action used ID `build-intel-package-macos` (25
characters). The renderer mapped that valid project script through a
24-character template-literal schema during render, throwing `Expected a
string matching template literal parts` in both thread controls and
Project Settings.

No persisted project data was changed or migrated.

## Validation

- 24 focused tests across the dynamic-command contract, project-script
helpers, and project-script keybinding decoder
- contracts and web typechecks
- focused formatting and lint
- committed-range `git diff --check`
- disposable matched fixture with the exact 25-character action ID
rendered in chat
- locally installed recovery build opened the real htulo thread and
rendered **Build Intel package (macOS)** in Project Settings

## Provenance

- upstream issue: pingdotgg#7851
- upstream PR: pingdotgg#7961
- exact upstream commit preserved by `cherry-pick -x`

Refs #103

---------

Co-authored-by: xuzhaorui <119386408+xuzhaorui@users.noreply.github.com>
lastobelus added a commit that referenced this pull request Sep 1, 2026
…#112)

## Summary

- import the maintainer-preferred fix from pingdotgg#7961 at
pinned head `6be823df41b105ddee33677f0b72aa4f5ad1c868`
- accept every canonical non-empty project-script ID when constructing
dynamic keybinding commands, matching the existing `ProjectScript`
contract
- keep UI-generated IDs as the existing lowercase slugs while allowing
externally supplied and already-saved IDs
- reject whitespace-padded dynamic commands instead of accepting
shortcuts that cannot match normalized saved IDs

## Incident

A saved htulo action used ID `build-intel-package-macos` (25
characters). The renderer mapped that valid project script through a
24-character template-literal schema during render, throwing `Expected a
string matching template literal parts` in both thread controls and
Project Settings.

No persisted project data was changed or migrated.

## Validation

- 24 focused tests across the dynamic-command contract, project-script
helpers, and project-script keybinding decoder
- contracts and web typechecks
- focused formatting and lint
- committed-range `git diff --check`
- disposable matched fixture with the exact 25-character action ID
rendered in chat
- locally installed recovery build opened the real htulo thread and
rendered **Build Intel package (macOS)** in Project Settings

## Provenance

- upstream issue: pingdotgg#7851
- upstream PR: pingdotgg#7961
- exact upstream commit preserved by `cherry-pick -x`

Refs #103

---------

Co-authored-by: xuzhaorui <119386408+xuzhaorui@users.noreply.github.com>
lastobelus added a commit that referenced this pull request Sep 1, 2026
…#112)

## Summary

- import the maintainer-preferred fix from pingdotgg#7961 at
pinned head `6be823df41b105ddee33677f0b72aa4f5ad1c868`
- accept every canonical non-empty project-script ID when constructing
dynamic keybinding commands, matching the existing `ProjectScript`
contract
- keep UI-generated IDs as the existing lowercase slugs while allowing
externally supplied and already-saved IDs
- reject whitespace-padded dynamic commands instead of accepting
shortcuts that cannot match normalized saved IDs

## Incident

A saved htulo action used ID `build-intel-package-macos` (25
characters). The renderer mapped that valid project script through a
24-character template-literal schema during render, throwing `Expected a
string matching template literal parts` in both thread controls and
Project Settings.

No persisted project data was changed or migrated.

## Validation

- 24 focused tests across the dynamic-command contract, project-script
helpers, and project-script keybinding decoder
- contracts and web typechecks
- focused formatting and lint
- committed-range `git diff --check`
- disposable matched fixture with the exact 25-character action ID
rendered in chat
- locally installed recovery build opened the real htulo thread and
rendered **Build Intel package (macOS)** in Project Settings

## Provenance

- upstream issue: pingdotgg#7851
- upstream PR: pingdotgg#7961
- exact upstream commit preserved by `cherry-pick -x`

Refs #103

---------

Co-authored-by: xuzhaorui <119386408+xuzhaorui@users.noreply.github.com>
lastobelus added a commit that referenced this pull request Sep 2, 2026
…#112)

## Summary

- import the maintainer-preferred fix from pingdotgg#7961 at
pinned head `6be823df41b105ddee33677f0b72aa4f5ad1c868`
- accept every canonical non-empty project-script ID when constructing
dynamic keybinding commands, matching the existing `ProjectScript`
contract
- keep UI-generated IDs as the existing lowercase slugs while allowing
externally supplied and already-saved IDs
- reject whitespace-padded dynamic commands instead of accepting
shortcuts that cannot match normalized saved IDs

## Incident

A saved htulo action used ID `build-intel-package-macos` (25
characters). The renderer mapped that valid project script through a
24-character template-literal schema during render, throwing `Expected a
string matching template literal parts` in both thread controls and
Project Settings.

No persisted project data was changed or migrated.

## Validation

- 24 focused tests across the dynamic-command contract, project-script
helpers, and project-script keybinding decoder
- contracts and web typechecks
- focused formatting and lint
- committed-range `git diff --check`
- disposable matched fixture with the exact 25-character action ID
rendered in chat
- locally installed recovery build opened the real htulo thread and
rendered **Build Intel package (macOS)** in Project Settings

## Provenance

- upstream issue: pingdotgg#7851
- upstream PR: pingdotgg#7961
- exact upstream commit preserved by `cherry-pick -x`

Refs #103

---------

Co-authored-by: xuzhaorui <119386408+xuzhaorui@users.noreply.github.com>
lastobelus added a commit that referenced this pull request Sep 2, 2026
…#112)

## Summary

- import the maintainer-preferred fix from pingdotgg#7961 at
pinned head `6be823df41b105ddee33677f0b72aa4f5ad1c868`
- accept every canonical non-empty project-script ID when constructing
dynamic keybinding commands, matching the existing `ProjectScript`
contract
- keep UI-generated IDs as the existing lowercase slugs while allowing
externally supplied and already-saved IDs
- reject whitespace-padded dynamic commands instead of accepting
shortcuts that cannot match normalized saved IDs

## Incident

A saved htulo action used ID `build-intel-package-macos` (25
characters). The renderer mapped that valid project script through a
24-character template-literal schema during render, throwing `Expected a
string matching template literal parts` in both thread controls and
Project Settings.

No persisted project data was changed or migrated.

## Validation

- 24 focused tests across the dynamic-command contract, project-script
helpers, and project-script keybinding decoder
- contracts and web typechecks
- focused formatting and lint
- committed-range `git diff --check`
- disposable matched fixture with the exact 25-character action ID
rendered in chat
- locally installed recovery build opened the real htulo thread and
rendered **Build Intel package (macOS)** in Project Settings

## Provenance

- upstream issue: pingdotgg#7851
- upstream PR: pingdotgg#7961
- exact upstream commit preserved by `cherry-pick -x`

Refs #103

---------

Co-authored-by: xuzhaorui <119386408+xuzhaorui@users.noreply.github.com>
lastobelus added a commit that referenced this pull request Sep 2, 2026
…#112)

## Summary

- import the maintainer-preferred fix from pingdotgg#7961 at
pinned head `6be823df41b105ddee33677f0b72aa4f5ad1c868`
- accept every canonical non-empty project-script ID when constructing
dynamic keybinding commands, matching the existing `ProjectScript`
contract
- keep UI-generated IDs as the existing lowercase slugs while allowing
externally supplied and already-saved IDs
- reject whitespace-padded dynamic commands instead of accepting
shortcuts that cannot match normalized saved IDs

## Incident

A saved htulo action used ID `build-intel-package-macos` (25
characters). The renderer mapped that valid project script through a
24-character template-literal schema during render, throwing `Expected a
string matching template literal parts` in both thread controls and
Project Settings.

No persisted project data was changed or migrated.

## Validation

- 24 focused tests across the dynamic-command contract, project-script
helpers, and project-script keybinding decoder
- contracts and web typechecks
- focused formatting and lint
- committed-range `git diff --check`
- disposable matched fixture with the exact 25-character action ID
rendered in chat
- locally installed recovery build opened the real htulo thread and
rendered **Build Intel package (macOS)** in Project Settings

## Provenance

- upstream issue: pingdotgg#7851
- upstream PR: pingdotgg#7961
- exact upstream commit preserved by `cherry-pick -x`

Refs #103

---------

Co-authored-by: xuzhaorui <119386408+xuzhaorui@users.noreply.github.com>
lastobelus added a commit that referenced this pull request Sep 2, 2026
…#112)

## Summary

- import the maintainer-preferred fix from pingdotgg#7961 at
pinned head `6be823df41b105ddee33677f0b72aa4f5ad1c868`
- accept every canonical non-empty project-script ID when constructing
dynamic keybinding commands, matching the existing `ProjectScript`
contract
- keep UI-generated IDs as the existing lowercase slugs while allowing
externally supplied and already-saved IDs
- reject whitespace-padded dynamic commands instead of accepting
shortcuts that cannot match normalized saved IDs

## Incident

A saved htulo action used ID `build-intel-package-macos` (25
characters). The renderer mapped that valid project script through a
24-character template-literal schema during render, throwing `Expected a
string matching template literal parts` in both thread controls and
Project Settings.

No persisted project data was changed or migrated.

## Validation

- 24 focused tests across the dynamic-command contract, project-script
helpers, and project-script keybinding decoder
- contracts and web typechecks
- focused formatting and lint
- committed-range `git diff --check`
- disposable matched fixture with the exact 25-character action ID
rendered in chat
- locally installed recovery build opened the real htulo thread and
rendered **Build Intel package (macOS)** in Project Settings

## Provenance

- upstream issue: pingdotgg#7851
- upstream PR: pingdotgg#7961
- exact upstream commit preserved by `cherry-pick -x`

Refs #103

---------

Co-authored-by: xuzhaorui <119386408+xuzhaorui@users.noreply.github.com>
lastobelus added a commit that referenced this pull request Sep 2, 2026
…#112)

## Summary

- import the maintainer-preferred fix from pingdotgg#7961 at
pinned head `6be823df41b105ddee33677f0b72aa4f5ad1c868`
- accept every canonical non-empty project-script ID when constructing
dynamic keybinding commands, matching the existing `ProjectScript`
contract
- keep UI-generated IDs as the existing lowercase slugs while allowing
externally supplied and already-saved IDs
- reject whitespace-padded dynamic commands instead of accepting
shortcuts that cannot match normalized saved IDs

## Incident

A saved htulo action used ID `build-intel-package-macos` (25
characters). The renderer mapped that valid project script through a
24-character template-literal schema during render, throwing `Expected a
string matching template literal parts` in both thread controls and
Project Settings.

No persisted project data was changed or migrated.

## Validation

- 24 focused tests across the dynamic-command contract, project-script
helpers, and project-script keybinding decoder
- contracts and web typechecks
- focused formatting and lint
- committed-range `git diff --check`
- disposable matched fixture with the exact 25-character action ID
rendered in chat
- locally installed recovery build opened the real htulo thread and
rendered **Build Intel package (macOS)** in Project Settings

## Provenance

- upstream issue: pingdotgg#7851
- upstream PR: pingdotgg#7961
- exact upstream commit preserved by `cherry-pick -x`

Refs #103

---------

Co-authored-by: xuzhaorui <119386408+xuzhaorui@users.noreply.github.com>
lastobelus added a commit that referenced this pull request Sep 2, 2026
…#112)

## Summary

- import the maintainer-preferred fix from pingdotgg#7961 at
pinned head `6be823df41b105ddee33677f0b72aa4f5ad1c868`
- accept every canonical non-empty project-script ID when constructing
dynamic keybinding commands, matching the existing `ProjectScript`
contract
- keep UI-generated IDs as the existing lowercase slugs while allowing
externally supplied and already-saved IDs
- reject whitespace-padded dynamic commands instead of accepting
shortcuts that cannot match normalized saved IDs

## Incident

A saved htulo action used ID `build-intel-package-macos` (25
characters). The renderer mapped that valid project script through a
24-character template-literal schema during render, throwing `Expected a
string matching template literal parts` in both thread controls and
Project Settings.

No persisted project data was changed or migrated.

## Validation

- 24 focused tests across the dynamic-command contract, project-script
helpers, and project-script keybinding decoder
- contracts and web typechecks
- focused formatting and lint
- committed-range `git diff --check`
- disposable matched fixture with the exact 25-character action ID
rendered in chat
- locally installed recovery build opened the real htulo thread and
rendered **Build Intel package (macOS)** in Project Settings

## Provenance

- upstream issue: pingdotgg#7851
- upstream PR: pingdotgg#7961
- exact upstream commit preserved by `cherry-pick -x`

Refs #103

---------

Co-authored-by: xuzhaorui <119386408+xuzhaorui@users.noreply.github.com>
lastobelus added a commit that referenced this pull request Sep 3, 2026
…#112)

## Summary

- import the maintainer-preferred fix from pingdotgg#7961 at
pinned head `6be823df41b105ddee33677f0b72aa4f5ad1c868`
- accept every canonical non-empty project-script ID when constructing
dynamic keybinding commands, matching the existing `ProjectScript`
contract
- keep UI-generated IDs as the existing lowercase slugs while allowing
externally supplied and already-saved IDs
- reject whitespace-padded dynamic commands instead of accepting
shortcuts that cannot match normalized saved IDs

## Incident

A saved htulo action used ID `build-intel-package-macos` (25
characters). The renderer mapped that valid project script through a
24-character template-literal schema during render, throwing `Expected a
string matching template literal parts` in both thread controls and
Project Settings.

No persisted project data was changed or migrated.

## Validation

- 24 focused tests across the dynamic-command contract, project-script
helpers, and project-script keybinding decoder
- contracts and web typechecks
- focused formatting and lint
- committed-range `git diff --check`
- disposable matched fixture with the exact 25-character action ID
rendered in chat
- locally installed recovery build opened the real htulo thread and
rendered **Build Intel package (macOS)** in Project Settings

## Provenance

- upstream issue: pingdotgg#7851
- upstream PR: pingdotgg#7961
- exact upstream commit preserved by `cherry-pick -x`

Refs #103

---------

Co-authored-by: xuzhaorui <119386408+xuzhaorui@users.noreply.github.com>
lastobelus added a commit that referenced this pull request Sep 3, 2026
…#112)

## Summary

- import the maintainer-preferred fix from pingdotgg#7961 at
pinned head `6be823df41b105ddee33677f0b72aa4f5ad1c868`
- accept every canonical non-empty project-script ID when constructing
dynamic keybinding commands, matching the existing `ProjectScript`
contract
- keep UI-generated IDs as the existing lowercase slugs while allowing
externally supplied and already-saved IDs
- reject whitespace-padded dynamic commands instead of accepting
shortcuts that cannot match normalized saved IDs

## Incident

A saved htulo action used ID `build-intel-package-macos` (25
characters). The renderer mapped that valid project script through a
24-character template-literal schema during render, throwing `Expected a
string matching template literal parts` in both thread controls and
Project Settings.

No persisted project data was changed or migrated.

## Validation

- 24 focused tests across the dynamic-command contract, project-script
helpers, and project-script keybinding decoder
- contracts and web typechecks
- focused formatting and lint
- committed-range `git diff --check`
- disposable matched fixture with the exact 25-character action ID
rendered in chat
- locally installed recovery build opened the real htulo thread and
rendered **Build Intel package (macOS)** in Project Settings

## Provenance

- upstream issue: pingdotgg#7851
- upstream PR: pingdotgg#7961
- exact upstream commit preserved by `cherry-pick -x`

Refs #103

---------

Co-authored-by: xuzhaorui <119386408+xuzhaorui@users.noreply.github.com>
lastobelus added a commit that referenced this pull request Sep 3, 2026
…#112)

## Summary

- import the maintainer-preferred fix from pingdotgg#7961 at
pinned head `6be823df41b105ddee33677f0b72aa4f5ad1c868`
- accept every canonical non-empty project-script ID when constructing
dynamic keybinding commands, matching the existing `ProjectScript`
contract
- keep UI-generated IDs as the existing lowercase slugs while allowing
externally supplied and already-saved IDs
- reject whitespace-padded dynamic commands instead of accepting
shortcuts that cannot match normalized saved IDs

## Incident

A saved htulo action used ID `build-intel-package-macos` (25
characters). The renderer mapped that valid project script through a
24-character template-literal schema during render, throwing `Expected a
string matching template literal parts` in both thread controls and
Project Settings.

No persisted project data was changed or migrated.

## Validation

- 24 focused tests across the dynamic-command contract, project-script
helpers, and project-script keybinding decoder
- contracts and web typechecks
- focused formatting and lint
- committed-range `git diff --check`
- disposable matched fixture with the exact 25-character action ID
rendered in chat
- locally installed recovery build opened the real htulo thread and
rendered **Build Intel package (macOS)** in Project Settings

## Provenance

- upstream issue: pingdotgg#7851
- upstream PR: pingdotgg#7961
- exact upstream commit preserved by `cherry-pick -x`

Refs #103

---------

Co-authored-by: xuzhaorui <119386408+xuzhaorui@users.noreply.github.com>
lastobelus added a commit that referenced this pull request Sep 3, 2026
…#112)

## Summary

- import the maintainer-preferred fix from pingdotgg#7961 at
pinned head `6be823df41b105ddee33677f0b72aa4f5ad1c868`
- accept every canonical non-empty project-script ID when constructing
dynamic keybinding commands, matching the existing `ProjectScript`
contract
- keep UI-generated IDs as the existing lowercase slugs while allowing
externally supplied and already-saved IDs
- reject whitespace-padded dynamic commands instead of accepting
shortcuts that cannot match normalized saved IDs

## Incident

A saved htulo action used ID `build-intel-package-macos` (25
characters). The renderer mapped that valid project script through a
24-character template-literal schema during render, throwing `Expected a
string matching template literal parts` in both thread controls and
Project Settings.

No persisted project data was changed or migrated.

## Validation

- 24 focused tests across the dynamic-command contract, project-script
helpers, and project-script keybinding decoder
- contracts and web typechecks
- focused formatting and lint
- committed-range `git diff --check`
- disposable matched fixture with the exact 25-character action ID
rendered in chat
- locally installed recovery build opened the real htulo thread and
rendered **Build Intel package (macOS)** in Project Settings

## Provenance

- upstream issue: pingdotgg#7851
- upstream PR: pingdotgg#7961
- exact upstream commit preserved by `cherry-pick -x`

Refs #103

---------

Co-authored-by: xuzhaorui <119386408+xuzhaorui@users.noreply.github.com>
lastobelus added a commit that referenced this pull request Sep 3, 2026
…#112)

## Summary

- import the maintainer-preferred fix from pingdotgg#7961 at
pinned head `6be823df41b105ddee33677f0b72aa4f5ad1c868`
- accept every canonical non-empty project-script ID when constructing
dynamic keybinding commands, matching the existing `ProjectScript`
contract
- keep UI-generated IDs as the existing lowercase slugs while allowing
externally supplied and already-saved IDs
- reject whitespace-padded dynamic commands instead of accepting
shortcuts that cannot match normalized saved IDs

## Incident

A saved htulo action used ID `build-intel-package-macos` (25
characters). The renderer mapped that valid project script through a
24-character template-literal schema during render, throwing `Expected a
string matching template literal parts` in both thread controls and
Project Settings.

No persisted project data was changed or migrated.

## Validation

- 24 focused tests across the dynamic-command contract, project-script
helpers, and project-script keybinding decoder
- contracts and web typechecks
- focused formatting and lint
- committed-range `git diff --check`
- disposable matched fixture with the exact 25-character action ID
rendered in chat
- locally installed recovery build opened the real htulo thread and
rendered **Build Intel package (macOS)** in Project Settings

## Provenance

- upstream issue: pingdotgg#7851
- upstream PR: pingdotgg#7961
- exact upstream commit preserved by `cherry-pick -x`

Refs #103

---------

Co-authored-by: xuzhaorui <119386408+xuzhaorui@users.noreply.github.com>
lastobelus added a commit that referenced this pull request Sep 5, 2026
…#112)

## Summary

- import the maintainer-preferred fix from pingdotgg#7961 at
pinned head `6be823df41b105ddee33677f0b72aa4f5ad1c868`
- accept every canonical non-empty project-script ID when constructing
dynamic keybinding commands, matching the existing `ProjectScript`
contract
- keep UI-generated IDs as the existing lowercase slugs while allowing
externally supplied and already-saved IDs
- reject whitespace-padded dynamic commands instead of accepting
shortcuts that cannot match normalized saved IDs

## Incident

A saved htulo action used ID `build-intel-package-macos` (25
characters). The renderer mapped that valid project script through a
24-character template-literal schema during render, throwing `Expected a
string matching template literal parts` in both thread controls and
Project Settings.

No persisted project data was changed or migrated.

## Validation

- 24 focused tests across the dynamic-command contract, project-script
helpers, and project-script keybinding decoder
- contracts and web typechecks
- focused formatting and lint
- committed-range `git diff --check`
- disposable matched fixture with the exact 25-character action ID
rendered in chat
- locally installed recovery build opened the real htulo thread and
rendered **Build Intel package (macOS)** in Project Settings

## Provenance

- upstream issue: pingdotgg#7851
- upstream PR: pingdotgg#7961
- exact upstream commit preserved by `cherry-pick -x`

Refs #103

---------

Co-authored-by: xuzhaorui <119386408+xuzhaorui@users.noreply.github.com>
lastobelus added a commit that referenced this pull request Sep 5, 2026
…#112)

## Summary

- import the maintainer-preferred fix from pingdotgg#7961 at
pinned head `6be823df41b105ddee33677f0b72aa4f5ad1c868`
- accept every canonical non-empty project-script ID when constructing
dynamic keybinding commands, matching the existing `ProjectScript`
contract
- keep UI-generated IDs as the existing lowercase slugs while allowing
externally supplied and already-saved IDs
- reject whitespace-padded dynamic commands instead of accepting
shortcuts that cannot match normalized saved IDs

## Incident

A saved htulo action used ID `build-intel-package-macos` (25
characters). The renderer mapped that valid project script through a
24-character template-literal schema during render, throwing `Expected a
string matching template literal parts` in both thread controls and
Project Settings.

No persisted project data was changed or migrated.

## Validation

- 24 focused tests across the dynamic-command contract, project-script
helpers, and project-script keybinding decoder
- contracts and web typechecks
- focused formatting and lint
- committed-range `git diff --check`
- disposable matched fixture with the exact 25-character action ID
rendered in chat
- locally installed recovery build opened the real htulo thread and
rendered **Build Intel package (macOS)** in Project Settings

## Provenance

- upstream issue: pingdotgg#7851
- upstream PR: pingdotgg#7961
- exact upstream commit preserved by `cherry-pick -x`

Refs #103

---------

Co-authored-by: xuzhaorui <119386408+xuzhaorui@users.noreply.github.com>
lastobelus added a commit that referenced this pull request Sep 5, 2026
…#112)

## Summary

- import the maintainer-preferred fix from pingdotgg#7961 at
pinned head `6be823df41b105ddee33677f0b72aa4f5ad1c868`
- accept every canonical non-empty project-script ID when constructing
dynamic keybinding commands, matching the existing `ProjectScript`
contract
- keep UI-generated IDs as the existing lowercase slugs while allowing
externally supplied and already-saved IDs
- reject whitespace-padded dynamic commands instead of accepting
shortcuts that cannot match normalized saved IDs

## Incident

A saved htulo action used ID `build-intel-package-macos` (25
characters). The renderer mapped that valid project script through a
24-character template-literal schema during render, throwing `Expected a
string matching template literal parts` in both thread controls and
Project Settings.

No persisted project data was changed or migrated.

## Validation

- 24 focused tests across the dynamic-command contract, project-script
helpers, and project-script keybinding decoder
- contracts and web typechecks
- focused formatting and lint
- committed-range `git diff --check`
- disposable matched fixture with the exact 25-character action ID
rendered in chat
- locally installed recovery build opened the real htulo thread and
rendered **Build Intel package (macOS)** in Project Settings

## Provenance

- upstream issue: pingdotgg#7851
- upstream PR: pingdotgg#7961
- exact upstream commit preserved by `cherry-pick -x`

Refs #103

---------

Co-authored-by: xuzhaorui <119386408+xuzhaorui@users.noreply.github.com>
lastobelus added a commit that referenced this pull request Sep 5, 2026
…#112)

## Summary

- import the maintainer-preferred fix from pingdotgg#7961 at
pinned head `6be823df41b105ddee33677f0b72aa4f5ad1c868`
- accept every canonical non-empty project-script ID when constructing
dynamic keybinding commands, matching the existing `ProjectScript`
contract
- keep UI-generated IDs as the existing lowercase slugs while allowing
externally supplied and already-saved IDs
- reject whitespace-padded dynamic commands instead of accepting
shortcuts that cannot match normalized saved IDs

## Incident

A saved htulo action used ID `build-intel-package-macos` (25
characters). The renderer mapped that valid project script through a
24-character template-literal schema during render, throwing `Expected a
string matching template literal parts` in both thread controls and
Project Settings.

No persisted project data was changed or migrated.

## Validation

- 24 focused tests across the dynamic-command contract, project-script
helpers, and project-script keybinding decoder
- contracts and web typechecks
- focused formatting and lint
- committed-range `git diff --check`
- disposable matched fixture with the exact 25-character action ID
rendered in chat
- locally installed recovery build opened the real htulo thread and
rendered **Build Intel package (macOS)** in Project Settings

## Provenance

- upstream issue: pingdotgg#7851
- upstream PR: pingdotgg#7961
- exact upstream commit preserved by `cherry-pick -x`

Refs #103

---------

Co-authored-by: xuzhaorui <119386408+xuzhaorui@users.noreply.github.com>
lastobelus added a commit that referenced this pull request Sep 5, 2026
…#112)

## Summary

- import the maintainer-preferred fix from pingdotgg#7961 at
pinned head `6be823df41b105ddee33677f0b72aa4f5ad1c868`
- accept every canonical non-empty project-script ID when constructing
dynamic keybinding commands, matching the existing `ProjectScript`
contract
- keep UI-generated IDs as the existing lowercase slugs while allowing
externally supplied and already-saved IDs
- reject whitespace-padded dynamic commands instead of accepting
shortcuts that cannot match normalized saved IDs

## Incident

A saved htulo action used ID `build-intel-package-macos` (25
characters). The renderer mapped that valid project script through a
24-character template-literal schema during render, throwing `Expected a
string matching template literal parts` in both thread controls and
Project Settings.

No persisted project data was changed or migrated.

## Validation

- 24 focused tests across the dynamic-command contract, project-script
helpers, and project-script keybinding decoder
- contracts and web typechecks
- focused formatting and lint
- committed-range `git diff --check`
- disposable matched fixture with the exact 25-character action ID
rendered in chat
- locally installed recovery build opened the real htulo thread and
rendered **Build Intel package (macOS)** in Project Settings

## Provenance

- upstream issue: pingdotgg#7851
- upstream PR: pingdotgg#7961
- exact upstream commit preserved by `cherry-pick -x`

Refs #103

---------

Co-authored-by: xuzhaorui <119386408+xuzhaorui@users.noreply.github.com>
lastobelus added a commit that referenced this pull request Sep 5, 2026
…#112)

## Summary

- import the maintainer-preferred fix from pingdotgg#7961 at
pinned head `6be823df41b105ddee33677f0b72aa4f5ad1c868`
- accept every canonical non-empty project-script ID when constructing
dynamic keybinding commands, matching the existing `ProjectScript`
contract
- keep UI-generated IDs as the existing lowercase slugs while allowing
externally supplied and already-saved IDs
- reject whitespace-padded dynamic commands instead of accepting
shortcuts that cannot match normalized saved IDs

## Incident

A saved htulo action used ID `build-intel-package-macos` (25
characters). The renderer mapped that valid project script through a
24-character template-literal schema during render, throwing `Expected a
string matching template literal parts` in both thread controls and
Project Settings.

No persisted project data was changed or migrated.

## Validation

- 24 focused tests across the dynamic-command contract, project-script
helpers, and project-script keybinding decoder
- contracts and web typechecks
- focused formatting and lint
- committed-range `git diff --check`
- disposable matched fixture with the exact 25-character action ID
rendered in chat
- locally installed recovery build opened the real htulo thread and
rendered **Build Intel package (macOS)** in Project Settings

## Provenance

- upstream issue: pingdotgg#7851
- upstream PR: pingdotgg#7961
- exact upstream commit preserved by `cherry-pick -x`

Refs #103

---------

Co-authored-by: xuzhaorui <119386408+xuzhaorui@users.noreply.github.com>
lastobelus pushed a commit that referenced this pull request Sep 7, 2026
Carry-Group: upstream-bugfixes
Carry-Contribution: {"sourceCommit":"f7e7ab3653928828da416c37a58a47b989daa7cf","subject":"carry(upstream-bugfixes): fix(web): surface drafts in the legacy sidebar (#24)","group":"upstream-bugfixes","metadata":{"Carry-Fix":["https://github.com/lastobelus/lastCode/pull/24"],"Carry-Upstream":["https://github.com/pingdotgg/t3code/pull/7120"],"Carry-Observation":["Existing manifest records upstream pull-request provenance."],"Carry-Evidence":["https://github.com/lastobelus/lastCode/commit/f44a0e2a1a67daec624e2aa3b07aab8ae96a8088"],"Carry-Applies-To":["upstream 8d3c56b (v0.0.39-nightly.20260905.1289); frozen source 4156900"],"Carry-Supersedes":[]}}
Carry-Contribution: {"sourceCommit":"7fc0a88ba083bce3f028664a81fc59f48b9a546f","subject":"carry(upstream-bugfixes): feat(web): filter archived threads by project (#31)","group":"upstream-bugfixes","metadata":{"Carry-Fix":["https://github.com/lastobelus/lastCode/pull/31"],"Carry-Upstream":["https://github.com/pingdotgg/t3code/pull/7282"],"Carry-Observation":["Existing manifest records upstream pull-request provenance."],"Carry-Evidence":["https://github.com/lastobelus/lastCode/commit/fc3fd563304ff38da4fa23ae4c7aa5a2d2799ff3"],"Carry-Applies-To":["upstream 8d3c56b (v0.0.39-nightly.20260905.1289); frozen source 4156900"],"Carry-Supersedes":[]}}
Carry-Contribution: {"sourceCommit":"6f6c0523b215b2d69a7ead8fcad6fecd4f35ef2f","subject":"carry(upstream-bugfixes): fix(web): avoid archive breadcrumb route race (#45)","group":"upstream-bugfixes","metadata":{"Carry-Fix":["https://github.com/lastobelus/lastCode/pull/45"],"Carry-Upstream":["https://github.com/pingdotgg/t3code/pull/7282"],"Carry-Observation":["Existing manifest records upstream pull-request provenance."],"Carry-Evidence":["https://github.com/lastobelus/lastCode/commit/170f9427de40c815c1fd5498f1e1e3303b8e8c8b"],"Carry-Applies-To":["upstream 8d3c56b (v0.0.39-nightly.20260905.1289); frozen source 4156900"],"Carry-Supersedes":[]}}
Carry-Contribution: {"sourceCommit":"4a0e6e2b6b3b63658e9c6eba32d9024ca60bdb88","subject":"carry(upstream-bugfixes): fix(codex): keep finished subagents from pinning Working (#48)","group":"upstream-bugfixes","metadata":{"Carry-Fix":["https://github.com/lastobelus/lastCode/pull/48"],"Carry-Upstream":["https://github.com/pingdotgg/t3code/pull/7848","https://github.com/pingdotgg/t3code/pull/7468"],"Carry-Observation":["Existing manifest records upstream pull-request provenance."],"Carry-Evidence":["https://github.com/lastobelus/lastCode/commit/14e88be35630ea6ec22e418dfba0b5430010d337"],"Carry-Applies-To":["upstream 8d3c56b (v0.0.39-nightly.20260905.1289); frozen source 4156900"],"Carry-Supersedes":[]}}
Carry-Contribution: {"sourceCommit":"8e0f88bb595c6952fc4f21d1a9ac73c7dcf12596","subject":"carry(upstream-bugfixes): fix(server): wait for launchd shutdown safely (#56)","group":"upstream-bugfixes","metadata":{"Carry-Fix":["https://github.com/lastobelus/lastCode/pull/56"],"Carry-Upstream":["https://github.com/pingdotgg/t3code/pull/7874"],"Carry-Observation":["Existing manifest records upstream pull-request provenance."],"Carry-Evidence":["https://github.com/lastobelus/lastCode/commit/a559ca7edd357116c8263fbbf6c6eeda33bed531"],"Carry-Applies-To":["upstream 8d3c56b (v0.0.39-nightly.20260905.1289); frozen source 4156900"],"Carry-Supersedes":[]}}
Carry-Contribution: {"sourceCommit":"7ef50d5c427dfa4c9b2a9555c6fe98dda84669eb","subject":"carry(upstream-bugfixes): fix(codex): retain residual subagent liveness safeguards (#69)","group":"upstream-bugfixes","metadata":{"Carry-Fix":["https://github.com/lastobelus/lastCode/pull/69"],"Carry-Upstream":["https://github.com/pingdotgg/t3code/pull/7468","https://github.com/pingdotgg/t3code/pull/7848","https://github.com/pingdotgg/t3code/pull/7937"],"Carry-Observation":["Existing manifest records upstream pull-request provenance."],"Carry-Evidence":["https://github.com/lastobelus/lastCode/commit/796a340c3ff98d812d3c2b3f3a636994882ce36d"],"Carry-Applies-To":["upstream 8d3c56b (v0.0.39-nightly.20260905.1289); frozen source 4156900"],"Carry-Supersedes":[]}}
Carry-Contribution: {"sourceCommit":"49f77df6e32092d82cbddc89f8ce3f07522cf3bb","subject":"carry(upstream-bugfixes): fix(server): remove large worktrees reliably (#74)","group":"upstream-bugfixes","metadata":{"Carry-Fix":["https://github.com/lastobelus/lastCode/pull/74"],"Carry-Upstream":["https://github.com/pingdotgg/t3code/pull/3902"],"Carry-Observation":["Existing manifest records upstream pull-request provenance."],"Carry-Evidence":["https://github.com/lastobelus/lastCode/commit/cdbc2dcabd265fdce9508530517af14d4da5c1cc"],"Carry-Applies-To":["upstream 8d3c56b (v0.0.39-nightly.20260905.1289); frozen source 4156900"],"Carry-Supersedes":[]}}
Carry-Contribution: {"sourceCommit":"1a20473427ed4ac9d5353132d7d4cb25957f1610","subject":"carry(upstream-bugfixes): fix(web): keep remote icon visible on hover (#82)","group":"upstream-bugfixes","metadata":{"Carry-Fix":["https://github.com/lastobelus/lastCode/pull/82"],"Carry-Upstream":["https://github.com/pingdotgg/t3code/pull/8132"],"Carry-Observation":["Existing manifest records upstream pull-request provenance."],"Carry-Evidence":["https://github.com/lastobelus/lastCode/commit/cbd2a5eb930c53c44f5424d004c54294883323bb"],"Carry-Applies-To":["upstream 8d3c56b (v0.0.39-nightly.20260905.1289); frozen source 4156900"],"Carry-Supersedes":[]}}
Carry-Contribution: {"sourceCommit":"a5947c235329af7b75b6e9fd955850e958412687","subject":"carry(upstream-bugfixes): fix(tailscale): preserve occupied Serve handlers (#102)","group":"upstream-bugfixes","metadata":{"Carry-Fix":["https://github.com/lastobelus/lastCode/pull/102"],"Carry-Upstream":["https://github.com/pingdotgg/t3code/pull/8338"],"Carry-Observation":["Existing manifest records upstream pull-request provenance."],"Carry-Evidence":["https://github.com/lastobelus/lastCode/commit/bd098650bfd55014e41b4014050c5f61ed131c14"],"Carry-Applies-To":["upstream 8d3c56b (v0.0.39-nightly.20260905.1289); frozen source 4156900"],"Carry-Supersedes":[]}}
Carry-Contribution: {"sourceCommit":"54936af5ad0cc6b47052ed5e047287e14e6300b2","subject":"carry(upstream-bugfixes): fix(web): tolerate external project script ids in keybinding commands (#112)","group":"upstream-bugfixes","metadata":{"Carry-Fix":["https://github.com/lastobelus/lastCode/pull/112"],"Carry-Upstream":["https://github.com/pingdotgg/t3code/pull/7961"],"Carry-Observation":["Existing manifest records upstream pull-request provenance."],"Carry-Evidence":["https://github.com/lastobelus/lastCode/commit/07c165ce8391d442cbe365017c6f33001b5f8f59"],"Carry-Applies-To":["upstream 8d3c56b (v0.0.39-nightly.20260905.1289); frozen source 4156900"],"Carry-Supersedes":[]}}
lastobelus pushed a commit that referenced this pull request Sep 7, 2026
Carry-Group: upstream-bugfixes
Carry-Contribution: {"sourceCommit":"f7e7ab3653928828da416c37a58a47b989daa7cf","subject":"carry(upstream-bugfixes): fix(web): surface drafts in the legacy sidebar (#24)","group":"upstream-bugfixes","metadata":{"Carry-Fix":["https://github.com/lastobelus/lastCode/pull/24"],"Carry-Upstream":["https://github.com/pingdotgg/t3code/pull/7120"],"Carry-Observation":["Existing manifest records upstream pull-request provenance."],"Carry-Evidence":["https://github.com/lastobelus/lastCode/commit/f44a0e2a1a67daec624e2aa3b07aab8ae96a8088"],"Carry-Applies-To":["upstream 8d3c56b (v0.0.39-nightly.20260905.1289); frozen source 4156900"],"Carry-Supersedes":[]}}
Carry-Contribution: {"sourceCommit":"7fc0a88ba083bce3f028664a81fc59f48b9a546f","subject":"carry(upstream-bugfixes): feat(web): filter archived threads by project (#31)","group":"upstream-bugfixes","metadata":{"Carry-Fix":["https://github.com/lastobelus/lastCode/pull/31"],"Carry-Upstream":["https://github.com/pingdotgg/t3code/pull/7282"],"Carry-Observation":["Existing manifest records upstream pull-request provenance."],"Carry-Evidence":["https://github.com/lastobelus/lastCode/commit/fc3fd563304ff38da4fa23ae4c7aa5a2d2799ff3"],"Carry-Applies-To":["upstream 8d3c56b (v0.0.39-nightly.20260905.1289); frozen source 4156900"],"Carry-Supersedes":[]}}
Carry-Contribution: {"sourceCommit":"6f6c0523b215b2d69a7ead8fcad6fecd4f35ef2f","subject":"carry(upstream-bugfixes): fix(web): avoid archive breadcrumb route race (#45)","group":"upstream-bugfixes","metadata":{"Carry-Fix":["https://github.com/lastobelus/lastCode/pull/45"],"Carry-Upstream":["https://github.com/pingdotgg/t3code/pull/7282"],"Carry-Observation":["Existing manifest records upstream pull-request provenance."],"Carry-Evidence":["https://github.com/lastobelus/lastCode/commit/170f9427de40c815c1fd5498f1e1e3303b8e8c8b"],"Carry-Applies-To":["upstream 8d3c56b (v0.0.39-nightly.20260905.1289); frozen source 4156900"],"Carry-Supersedes":[]}}
Carry-Contribution: {"sourceCommit":"4a0e6e2b6b3b63658e9c6eba32d9024ca60bdb88","subject":"carry(upstream-bugfixes): fix(codex): keep finished subagents from pinning Working (#48)","group":"upstream-bugfixes","metadata":{"Carry-Fix":["https://github.com/lastobelus/lastCode/pull/48"],"Carry-Upstream":["https://github.com/pingdotgg/t3code/pull/7848","https://github.com/pingdotgg/t3code/pull/7468"],"Carry-Observation":["Existing manifest records upstream pull-request provenance."],"Carry-Evidence":["https://github.com/lastobelus/lastCode/commit/14e88be35630ea6ec22e418dfba0b5430010d337"],"Carry-Applies-To":["upstream 8d3c56b (v0.0.39-nightly.20260905.1289); frozen source 4156900"],"Carry-Supersedes":[]}}
Carry-Contribution: {"sourceCommit":"8e0f88bb595c6952fc4f21d1a9ac73c7dcf12596","subject":"carry(upstream-bugfixes): fix(server): wait for launchd shutdown safely (#56)","group":"upstream-bugfixes","metadata":{"Carry-Fix":["https://github.com/lastobelus/lastCode/pull/56"],"Carry-Upstream":["https://github.com/pingdotgg/t3code/pull/7874"],"Carry-Observation":["Existing manifest records upstream pull-request provenance."],"Carry-Evidence":["https://github.com/lastobelus/lastCode/commit/a559ca7edd357116c8263fbbf6c6eeda33bed531"],"Carry-Applies-To":["upstream 8d3c56b (v0.0.39-nightly.20260905.1289); frozen source 4156900"],"Carry-Supersedes":[]}}
Carry-Contribution: {"sourceCommit":"7ef50d5c427dfa4c9b2a9555c6fe98dda84669eb","subject":"carry(upstream-bugfixes): fix(codex): retain residual subagent liveness safeguards (#69)","group":"upstream-bugfixes","metadata":{"Carry-Fix":["https://github.com/lastobelus/lastCode/pull/69"],"Carry-Upstream":["https://github.com/pingdotgg/t3code/pull/7468","https://github.com/pingdotgg/t3code/pull/7848","https://github.com/pingdotgg/t3code/pull/7937"],"Carry-Observation":["Existing manifest records upstream pull-request provenance."],"Carry-Evidence":["https://github.com/lastobelus/lastCode/commit/796a340c3ff98d812d3c2b3f3a636994882ce36d"],"Carry-Applies-To":["upstream 8d3c56b (v0.0.39-nightly.20260905.1289); frozen source 4156900"],"Carry-Supersedes":[]}}
Carry-Contribution: {"sourceCommit":"49f77df6e32092d82cbddc89f8ce3f07522cf3bb","subject":"carry(upstream-bugfixes): fix(server): remove large worktrees reliably (#74)","group":"upstream-bugfixes","metadata":{"Carry-Fix":["https://github.com/lastobelus/lastCode/pull/74"],"Carry-Upstream":["https://github.com/pingdotgg/t3code/pull/3902"],"Carry-Observation":["Existing manifest records upstream pull-request provenance."],"Carry-Evidence":["https://github.com/lastobelus/lastCode/commit/cdbc2dcabd265fdce9508530517af14d4da5c1cc"],"Carry-Applies-To":["upstream 8d3c56b (v0.0.39-nightly.20260905.1289); frozen source 4156900"],"Carry-Supersedes":[]}}
Carry-Contribution: {"sourceCommit":"1a20473427ed4ac9d5353132d7d4cb25957f1610","subject":"carry(upstream-bugfixes): fix(web): keep remote icon visible on hover (#82)","group":"upstream-bugfixes","metadata":{"Carry-Fix":["https://github.com/lastobelus/lastCode/pull/82"],"Carry-Upstream":["https://github.com/pingdotgg/t3code/pull/8132"],"Carry-Observation":["Existing manifest records upstream pull-request provenance."],"Carry-Evidence":["https://github.com/lastobelus/lastCode/commit/cbd2a5eb930c53c44f5424d004c54294883323bb"],"Carry-Applies-To":["upstream 8d3c56b (v0.0.39-nightly.20260905.1289); frozen source 4156900"],"Carry-Supersedes":[]}}
Carry-Contribution: {"sourceCommit":"a5947c235329af7b75b6e9fd955850e958412687","subject":"carry(upstream-bugfixes): fix(tailscale): preserve occupied Serve handlers (#102)","group":"upstream-bugfixes","metadata":{"Carry-Fix":["https://github.com/lastobelus/lastCode/pull/102"],"Carry-Upstream":["https://github.com/pingdotgg/t3code/pull/8338"],"Carry-Observation":["Existing manifest records upstream pull-request provenance."],"Carry-Evidence":["https://github.com/lastobelus/lastCode/commit/bd098650bfd55014e41b4014050c5f61ed131c14"],"Carry-Applies-To":["upstream 8d3c56b (v0.0.39-nightly.20260905.1289); frozen source 4156900"],"Carry-Supersedes":[]}}
Carry-Contribution: {"sourceCommit":"54936af5ad0cc6b47052ed5e047287e14e6300b2","subject":"carry(upstream-bugfixes): fix(web): tolerate external project script ids in keybinding commands (#112)","group":"upstream-bugfixes","metadata":{"Carry-Fix":["https://github.com/lastobelus/lastCode/pull/112"],"Carry-Upstream":["https://github.com/pingdotgg/t3code/pull/7961"],"Carry-Observation":["Existing manifest records upstream pull-request provenance."],"Carry-Evidence":["https://github.com/lastobelus/lastCode/commit/07c165ce8391d442cbe365017c6f33001b5f8f59"],"Carry-Applies-To":["upstream 8d3c56b (v0.0.39-nightly.20260905.1289); frozen source 4156900"],"Carry-Supersedes":[]}}
lastobelus pushed a commit that referenced this pull request Sep 7, 2026
Carry-Group: upstream-bugfixes
Carry-Contribution: {"sourceCommit":"f7e7ab3653928828da416c37a58a47b989daa7cf","subject":"carry(upstream-bugfixes): fix(web): surface drafts in the legacy sidebar (#24)","group":"upstream-bugfixes","metadata":{"Carry-Fix":["https://github.com/lastobelus/lastCode/pull/24"],"Carry-Upstream":["https://github.com/pingdotgg/t3code/pull/7120"],"Carry-Observation":["Existing manifest records upstream pull-request provenance."],"Carry-Evidence":["https://github.com/lastobelus/lastCode/commit/f44a0e2a1a67daec624e2aa3b07aab8ae96a8088"],"Carry-Applies-To":["upstream 8d3c56b (v0.0.39-nightly.20260905.1289); frozen source 4156900"],"Carry-Supersedes":[]}}
Carry-Contribution: {"sourceCommit":"7fc0a88ba083bce3f028664a81fc59f48b9a546f","subject":"carry(upstream-bugfixes): feat(web): filter archived threads by project (#31)","group":"upstream-bugfixes","metadata":{"Carry-Fix":["https://github.com/lastobelus/lastCode/pull/31"],"Carry-Upstream":["https://github.com/pingdotgg/t3code/pull/7282"],"Carry-Observation":["Existing manifest records upstream pull-request provenance."],"Carry-Evidence":["https://github.com/lastobelus/lastCode/commit/fc3fd563304ff38da4fa23ae4c7aa5a2d2799ff3"],"Carry-Applies-To":["upstream 8d3c56b (v0.0.39-nightly.20260905.1289); frozen source 4156900"],"Carry-Supersedes":[]}}
Carry-Contribution: {"sourceCommit":"6f6c0523b215b2d69a7ead8fcad6fecd4f35ef2f","subject":"carry(upstream-bugfixes): fix(web): avoid archive breadcrumb route race (#45)","group":"upstream-bugfixes","metadata":{"Carry-Fix":["https://github.com/lastobelus/lastCode/pull/45"],"Carry-Upstream":["https://github.com/pingdotgg/t3code/pull/7282"],"Carry-Observation":["Existing manifest records upstream pull-request provenance."],"Carry-Evidence":["https://github.com/lastobelus/lastCode/commit/170f9427de40c815c1fd5498f1e1e3303b8e8c8b"],"Carry-Applies-To":["upstream 8d3c56b (v0.0.39-nightly.20260905.1289); frozen source 4156900"],"Carry-Supersedes":[]}}
Carry-Contribution: {"sourceCommit":"4a0e6e2b6b3b63658e9c6eba32d9024ca60bdb88","subject":"carry(upstream-bugfixes): fix(codex): keep finished subagents from pinning Working (#48)","group":"upstream-bugfixes","metadata":{"Carry-Fix":["https://github.com/lastobelus/lastCode/pull/48"],"Carry-Upstream":["https://github.com/pingdotgg/t3code/pull/7848","https://github.com/pingdotgg/t3code/pull/7468"],"Carry-Observation":["Existing manifest records upstream pull-request provenance."],"Carry-Evidence":["https://github.com/lastobelus/lastCode/commit/14e88be35630ea6ec22e418dfba0b5430010d337"],"Carry-Applies-To":["upstream 8d3c56b (v0.0.39-nightly.20260905.1289); frozen source 4156900"],"Carry-Supersedes":[]}}
Carry-Contribution: {"sourceCommit":"8e0f88bb595c6952fc4f21d1a9ac73c7dcf12596","subject":"carry(upstream-bugfixes): fix(server): wait for launchd shutdown safely (#56)","group":"upstream-bugfixes","metadata":{"Carry-Fix":["https://github.com/lastobelus/lastCode/pull/56"],"Carry-Upstream":["https://github.com/pingdotgg/t3code/pull/7874"],"Carry-Observation":["Existing manifest records upstream pull-request provenance."],"Carry-Evidence":["https://github.com/lastobelus/lastCode/commit/a559ca7edd357116c8263fbbf6c6eeda33bed531"],"Carry-Applies-To":["upstream 8d3c56b (v0.0.39-nightly.20260905.1289); frozen source 4156900"],"Carry-Supersedes":[]}}
Carry-Contribution: {"sourceCommit":"7ef50d5c427dfa4c9b2a9555c6fe98dda84669eb","subject":"carry(upstream-bugfixes): fix(codex): retain residual subagent liveness safeguards (#69)","group":"upstream-bugfixes","metadata":{"Carry-Fix":["https://github.com/lastobelus/lastCode/pull/69"],"Carry-Upstream":["https://github.com/pingdotgg/t3code/pull/7468","https://github.com/pingdotgg/t3code/pull/7848","https://github.com/pingdotgg/t3code/pull/7937"],"Carry-Observation":["Existing manifest records upstream pull-request provenance."],"Carry-Evidence":["https://github.com/lastobelus/lastCode/commit/796a340c3ff98d812d3c2b3f3a636994882ce36d"],"Carry-Applies-To":["upstream 8d3c56b (v0.0.39-nightly.20260905.1289); frozen source 4156900"],"Carry-Supersedes":[]}}
Carry-Contribution: {"sourceCommit":"49f77df6e32092d82cbddc89f8ce3f07522cf3bb","subject":"carry(upstream-bugfixes): fix(server): remove large worktrees reliably (#74)","group":"upstream-bugfixes","metadata":{"Carry-Fix":["https://github.com/lastobelus/lastCode/pull/74"],"Carry-Upstream":["https://github.com/pingdotgg/t3code/pull/3902"],"Carry-Observation":["Existing manifest records upstream pull-request provenance."],"Carry-Evidence":["https://github.com/lastobelus/lastCode/commit/cdbc2dcabd265fdce9508530517af14d4da5c1cc"],"Carry-Applies-To":["upstream 8d3c56b (v0.0.39-nightly.20260905.1289); frozen source 4156900"],"Carry-Supersedes":[]}}
Carry-Contribution: {"sourceCommit":"1a20473427ed4ac9d5353132d7d4cb25957f1610","subject":"carry(upstream-bugfixes): fix(web): keep remote icon visible on hover (#82)","group":"upstream-bugfixes","metadata":{"Carry-Fix":["https://github.com/lastobelus/lastCode/pull/82"],"Carry-Upstream":["https://github.com/pingdotgg/t3code/pull/8132"],"Carry-Observation":["Existing manifest records upstream pull-request provenance."],"Carry-Evidence":["https://github.com/lastobelus/lastCode/commit/cbd2a5eb930c53c44f5424d004c54294883323bb"],"Carry-Applies-To":["upstream 8d3c56b (v0.0.39-nightly.20260905.1289); frozen source 4156900"],"Carry-Supersedes":[]}}
Carry-Contribution: {"sourceCommit":"a5947c235329af7b75b6e9fd955850e958412687","subject":"carry(upstream-bugfixes): fix(tailscale): preserve occupied Serve handlers (#102)","group":"upstream-bugfixes","metadata":{"Carry-Fix":["https://github.com/lastobelus/lastCode/pull/102"],"Carry-Upstream":["https://github.com/pingdotgg/t3code/pull/8338"],"Carry-Observation":["Existing manifest records upstream pull-request provenance."],"Carry-Evidence":["https://github.com/lastobelus/lastCode/commit/bd098650bfd55014e41b4014050c5f61ed131c14"],"Carry-Applies-To":["upstream 8d3c56b (v0.0.39-nightly.20260905.1289); frozen source 4156900"],"Carry-Supersedes":[]}}
Carry-Contribution: {"sourceCommit":"54936af5ad0cc6b47052ed5e047287e14e6300b2","subject":"carry(upstream-bugfixes): fix(web): tolerate external project script ids in keybinding commands (#112)","group":"upstream-bugfixes","metadata":{"Carry-Fix":["https://github.com/lastobelus/lastCode/pull/112"],"Carry-Upstream":["https://github.com/pingdotgg/t3code/pull/7961"],"Carry-Observation":["Existing manifest records upstream pull-request provenance."],"Carry-Evidence":["https://github.com/lastobelus/lastCode/commit/07c165ce8391d442cbe365017c6f33001b5f8f59"],"Carry-Applies-To":["upstream 8d3c56b (v0.0.39-nightly.20260905.1289); frozen source 4156900"],"Carry-Supersedes":[]}}
lastobelus pushed a commit that referenced this pull request Sep 7, 2026
Carry-Group: upstream-bugfixes
Carry-Contribution: {"sourceCommit":"f7e7ab3653928828da416c37a58a47b989daa7cf","subject":"carry(upstream-bugfixes): fix(web): surface drafts in the legacy sidebar (#24)","group":"upstream-bugfixes","metadata":{"Carry-Fix":["https://github.com/lastobelus/lastCode/pull/24"],"Carry-Upstream":["https://github.com/pingdotgg/t3code/pull/7120"],"Carry-Observation":["Existing manifest records upstream pull-request provenance."],"Carry-Evidence":["https://github.com/lastobelus/lastCode/commit/f44a0e2a1a67daec624e2aa3b07aab8ae96a8088"],"Carry-Applies-To":["upstream 8d3c56b (v0.0.39-nightly.20260905.1289); frozen source 4156900"],"Carry-Supersedes":[]}}
Carry-Contribution: {"sourceCommit":"7fc0a88ba083bce3f028664a81fc59f48b9a546f","subject":"carry(upstream-bugfixes): feat(web): filter archived threads by project (#31)","group":"upstream-bugfixes","metadata":{"Carry-Fix":["https://github.com/lastobelus/lastCode/pull/31"],"Carry-Upstream":["https://github.com/pingdotgg/t3code/pull/7282"],"Carry-Observation":["Existing manifest records upstream pull-request provenance."],"Carry-Evidence":["https://github.com/lastobelus/lastCode/commit/fc3fd563304ff38da4fa23ae4c7aa5a2d2799ff3"],"Carry-Applies-To":["upstream 8d3c56b (v0.0.39-nightly.20260905.1289); frozen source 4156900"],"Carry-Supersedes":[]}}
Carry-Contribution: {"sourceCommit":"6f6c0523b215b2d69a7ead8fcad6fecd4f35ef2f","subject":"carry(upstream-bugfixes): fix(web): avoid archive breadcrumb route race (#45)","group":"upstream-bugfixes","metadata":{"Carry-Fix":["https://github.com/lastobelus/lastCode/pull/45"],"Carry-Upstream":["https://github.com/pingdotgg/t3code/pull/7282"],"Carry-Observation":["Existing manifest records upstream pull-request provenance."],"Carry-Evidence":["https://github.com/lastobelus/lastCode/commit/170f9427de40c815c1fd5498f1e1e3303b8e8c8b"],"Carry-Applies-To":["upstream 8d3c56b (v0.0.39-nightly.20260905.1289); frozen source 4156900"],"Carry-Supersedes":[]}}
Carry-Contribution: {"sourceCommit":"4a0e6e2b6b3b63658e9c6eba32d9024ca60bdb88","subject":"carry(upstream-bugfixes): fix(codex): keep finished subagents from pinning Working (#48)","group":"upstream-bugfixes","metadata":{"Carry-Fix":["https://github.com/lastobelus/lastCode/pull/48"],"Carry-Upstream":["https://github.com/pingdotgg/t3code/pull/7848","https://github.com/pingdotgg/t3code/pull/7468"],"Carry-Observation":["Existing manifest records upstream pull-request provenance."],"Carry-Evidence":["https://github.com/lastobelus/lastCode/commit/14e88be35630ea6ec22e418dfba0b5430010d337"],"Carry-Applies-To":["upstream 8d3c56b (v0.0.39-nightly.20260905.1289); frozen source 4156900"],"Carry-Supersedes":[]}}
Carry-Contribution: {"sourceCommit":"8e0f88bb595c6952fc4f21d1a9ac73c7dcf12596","subject":"carry(upstream-bugfixes): fix(server): wait for launchd shutdown safely (#56)","group":"upstream-bugfixes","metadata":{"Carry-Fix":["https://github.com/lastobelus/lastCode/pull/56"],"Carry-Upstream":["https://github.com/pingdotgg/t3code/pull/7874"],"Carry-Observation":["Existing manifest records upstream pull-request provenance."],"Carry-Evidence":["https://github.com/lastobelus/lastCode/commit/a559ca7edd357116c8263fbbf6c6eeda33bed531"],"Carry-Applies-To":["upstream 8d3c56b (v0.0.39-nightly.20260905.1289); frozen source 4156900"],"Carry-Supersedes":[]}}
Carry-Contribution: {"sourceCommit":"7ef50d5c427dfa4c9b2a9555c6fe98dda84669eb","subject":"carry(upstream-bugfixes): fix(codex): retain residual subagent liveness safeguards (#69)","group":"upstream-bugfixes","metadata":{"Carry-Fix":["https://github.com/lastobelus/lastCode/pull/69"],"Carry-Upstream":["https://github.com/pingdotgg/t3code/pull/7468","https://github.com/pingdotgg/t3code/pull/7848","https://github.com/pingdotgg/t3code/pull/7937"],"Carry-Observation":["Existing manifest records upstream pull-request provenance."],"Carry-Evidence":["https://github.com/lastobelus/lastCode/commit/796a340c3ff98d812d3c2b3f3a636994882ce36d"],"Carry-Applies-To":["upstream 8d3c56b (v0.0.39-nightly.20260905.1289); frozen source 4156900"],"Carry-Supersedes":[]}}
Carry-Contribution: {"sourceCommit":"49f77df6e32092d82cbddc89f8ce3f07522cf3bb","subject":"carry(upstream-bugfixes): fix(server): remove large worktrees reliably (#74)","group":"upstream-bugfixes","metadata":{"Carry-Fix":["https://github.com/lastobelus/lastCode/pull/74"],"Carry-Upstream":["https://github.com/pingdotgg/t3code/pull/3902"],"Carry-Observation":["Existing manifest records upstream pull-request provenance."],"Carry-Evidence":["https://github.com/lastobelus/lastCode/commit/cdbc2dcabd265fdce9508530517af14d4da5c1cc"],"Carry-Applies-To":["upstream 8d3c56b (v0.0.39-nightly.20260905.1289); frozen source 4156900"],"Carry-Supersedes":[]}}
Carry-Contribution: {"sourceCommit":"1a20473427ed4ac9d5353132d7d4cb25957f1610","subject":"carry(upstream-bugfixes): fix(web): keep remote icon visible on hover (#82)","group":"upstream-bugfixes","metadata":{"Carry-Fix":["https://github.com/lastobelus/lastCode/pull/82"],"Carry-Upstream":["https://github.com/pingdotgg/t3code/pull/8132"],"Carry-Observation":["Existing manifest records upstream pull-request provenance."],"Carry-Evidence":["https://github.com/lastobelus/lastCode/commit/cbd2a5eb930c53c44f5424d004c54294883323bb"],"Carry-Applies-To":["upstream 8d3c56b (v0.0.39-nightly.20260905.1289); frozen source 4156900"],"Carry-Supersedes":[]}}
Carry-Contribution: {"sourceCommit":"a5947c235329af7b75b6e9fd955850e958412687","subject":"carry(upstream-bugfixes): fix(tailscale): preserve occupied Serve handlers (#102)","group":"upstream-bugfixes","metadata":{"Carry-Fix":["https://github.com/lastobelus/lastCode/pull/102"],"Carry-Upstream":["https://github.com/pingdotgg/t3code/pull/8338"],"Carry-Observation":["Existing manifest records upstream pull-request provenance."],"Carry-Evidence":["https://github.com/lastobelus/lastCode/commit/bd098650bfd55014e41b4014050c5f61ed131c14"],"Carry-Applies-To":["upstream 8d3c56b (v0.0.39-nightly.20260905.1289); frozen source 4156900"],"Carry-Supersedes":[]}}
Carry-Contribution: {"sourceCommit":"54936af5ad0cc6b47052ed5e047287e14e6300b2","subject":"carry(upstream-bugfixes): fix(web): tolerate external project script ids in keybinding commands (#112)","group":"upstream-bugfixes","metadata":{"Carry-Fix":["https://github.com/lastobelus/lastCode/pull/112"],"Carry-Upstream":["https://github.com/pingdotgg/t3code/pull/7961"],"Carry-Observation":["Existing manifest records upstream pull-request provenance."],"Carry-Evidence":["https://github.com/lastobelus/lastCode/commit/07c165ce8391d442cbe365017c6f33001b5f8f59"],"Carry-Applies-To":["upstream 8d3c56b (v0.0.39-nightly.20260905.1289); frozen source 4156900"],"Carry-Supersedes":[]}}
lastobelus pushed a commit that referenced this pull request Sep 7, 2026
Carry-Group: upstream-bugfixes
Carry-Contribution: {"sourceCommit":"f7e7ab3653928828da416c37a58a47b989daa7cf","subject":"carry(upstream-bugfixes): fix(web): surface drafts in the legacy sidebar (#24)","group":"upstream-bugfixes","metadata":{"Carry-Fix":["https://github.com/lastobelus/lastCode/pull/24"],"Carry-Upstream":["https://github.com/pingdotgg/t3code/pull/7120"],"Carry-Observation":["Existing manifest records upstream pull-request provenance."],"Carry-Evidence":["https://github.com/lastobelus/lastCode/commit/f44a0e2a1a67daec624e2aa3b07aab8ae96a8088"],"Carry-Applies-To":["upstream 8d3c56b (v0.0.39-nightly.20260905.1289); frozen source 4156900"],"Carry-Supersedes":[]}}
Carry-Contribution: {"sourceCommit":"7fc0a88ba083bce3f028664a81fc59f48b9a546f","subject":"carry(upstream-bugfixes): feat(web): filter archived threads by project (#31)","group":"upstream-bugfixes","metadata":{"Carry-Fix":["https://github.com/lastobelus/lastCode/pull/31"],"Carry-Upstream":["https://github.com/pingdotgg/t3code/pull/7282"],"Carry-Observation":["Existing manifest records upstream pull-request provenance."],"Carry-Evidence":["https://github.com/lastobelus/lastCode/commit/fc3fd563304ff38da4fa23ae4c7aa5a2d2799ff3"],"Carry-Applies-To":["upstream 8d3c56b (v0.0.39-nightly.20260905.1289); frozen source 4156900"],"Carry-Supersedes":[]}}
Carry-Contribution: {"sourceCommit":"6f6c0523b215b2d69a7ead8fcad6fecd4f35ef2f","subject":"carry(upstream-bugfixes): fix(web): avoid archive breadcrumb route race (#45)","group":"upstream-bugfixes","metadata":{"Carry-Fix":["https://github.com/lastobelus/lastCode/pull/45"],"Carry-Upstream":["https://github.com/pingdotgg/t3code/pull/7282"],"Carry-Observation":["Existing manifest records upstream pull-request provenance."],"Carry-Evidence":["https://github.com/lastobelus/lastCode/commit/170f9427de40c815c1fd5498f1e1e3303b8e8c8b"],"Carry-Applies-To":["upstream 8d3c56b (v0.0.39-nightly.20260905.1289); frozen source 4156900"],"Carry-Supersedes":[]}}
Carry-Contribution: {"sourceCommit":"4a0e6e2b6b3b63658e9c6eba32d9024ca60bdb88","subject":"carry(upstream-bugfixes): fix(codex): keep finished subagents from pinning Working (#48)","group":"upstream-bugfixes","metadata":{"Carry-Fix":["https://github.com/lastobelus/lastCode/pull/48"],"Carry-Upstream":["https://github.com/pingdotgg/t3code/pull/7848","https://github.com/pingdotgg/t3code/pull/7468"],"Carry-Observation":["Existing manifest records upstream pull-request provenance."],"Carry-Evidence":["https://github.com/lastobelus/lastCode/commit/14e88be35630ea6ec22e418dfba0b5430010d337"],"Carry-Applies-To":["upstream 8d3c56b (v0.0.39-nightly.20260905.1289); frozen source 4156900"],"Carry-Supersedes":[]}}
Carry-Contribution: {"sourceCommit":"8e0f88bb595c6952fc4f21d1a9ac73c7dcf12596","subject":"carry(upstream-bugfixes): fix(server): wait for launchd shutdown safely (#56)","group":"upstream-bugfixes","metadata":{"Carry-Fix":["https://github.com/lastobelus/lastCode/pull/56"],"Carry-Upstream":["https://github.com/pingdotgg/t3code/pull/7874"],"Carry-Observation":["Existing manifest records upstream pull-request provenance."],"Carry-Evidence":["https://github.com/lastobelus/lastCode/commit/a559ca7edd357116c8263fbbf6c6eeda33bed531"],"Carry-Applies-To":["upstream 8d3c56b (v0.0.39-nightly.20260905.1289); frozen source 4156900"],"Carry-Supersedes":[]}}
Carry-Contribution: {"sourceCommit":"7ef50d5c427dfa4c9b2a9555c6fe98dda84669eb","subject":"carry(upstream-bugfixes): fix(codex): retain residual subagent liveness safeguards (#69)","group":"upstream-bugfixes","metadata":{"Carry-Fix":["https://github.com/lastobelus/lastCode/pull/69"],"Carry-Upstream":["https://github.com/pingdotgg/t3code/pull/7468","https://github.com/pingdotgg/t3code/pull/7848","https://github.com/pingdotgg/t3code/pull/7937"],"Carry-Observation":["Existing manifest records upstream pull-request provenance."],"Carry-Evidence":["https://github.com/lastobelus/lastCode/commit/796a340c3ff98d812d3c2b3f3a636994882ce36d"],"Carry-Applies-To":["upstream 8d3c56b (v0.0.39-nightly.20260905.1289); frozen source 4156900"],"Carry-Supersedes":[]}}
Carry-Contribution: {"sourceCommit":"49f77df6e32092d82cbddc89f8ce3f07522cf3bb","subject":"carry(upstream-bugfixes): fix(server): remove large worktrees reliably (#74)","group":"upstream-bugfixes","metadata":{"Carry-Fix":["https://github.com/lastobelus/lastCode/pull/74"],"Carry-Upstream":["https://github.com/pingdotgg/t3code/pull/3902"],"Carry-Observation":["Existing manifest records upstream pull-request provenance."],"Carry-Evidence":["https://github.com/lastobelus/lastCode/commit/cdbc2dcabd265fdce9508530517af14d4da5c1cc"],"Carry-Applies-To":["upstream 8d3c56b (v0.0.39-nightly.20260905.1289); frozen source 4156900"],"Carry-Supersedes":[]}}
Carry-Contribution: {"sourceCommit":"1a20473427ed4ac9d5353132d7d4cb25957f1610","subject":"carry(upstream-bugfixes): fix(web): keep remote icon visible on hover (#82)","group":"upstream-bugfixes","metadata":{"Carry-Fix":["https://github.com/lastobelus/lastCode/pull/82"],"Carry-Upstream":["https://github.com/pingdotgg/t3code/pull/8132"],"Carry-Observation":["Existing manifest records upstream pull-request provenance."],"Carry-Evidence":["https://github.com/lastobelus/lastCode/commit/cbd2a5eb930c53c44f5424d004c54294883323bb"],"Carry-Applies-To":["upstream 8d3c56b (v0.0.39-nightly.20260905.1289); frozen source 4156900"],"Carry-Supersedes":[]}}
Carry-Contribution: {"sourceCommit":"a5947c235329af7b75b6e9fd955850e958412687","subject":"carry(upstream-bugfixes): fix(tailscale): preserve occupied Serve handlers (#102)","group":"upstream-bugfixes","metadata":{"Carry-Fix":["https://github.com/lastobelus/lastCode/pull/102"],"Carry-Upstream":["https://github.com/pingdotgg/t3code/pull/8338"],"Carry-Observation":["Existing manifest records upstream pull-request provenance."],"Carry-Evidence":["https://github.com/lastobelus/lastCode/commit/bd098650bfd55014e41b4014050c5f61ed131c14"],"Carry-Applies-To":["upstream 8d3c56b (v0.0.39-nightly.20260905.1289); frozen source 4156900"],"Carry-Supersedes":[]}}
Carry-Contribution: {"sourceCommit":"54936af5ad0cc6b47052ed5e047287e14e6300b2","subject":"carry(upstream-bugfixes): fix(web): tolerate external project script ids in keybinding commands (#112)","group":"upstream-bugfixes","metadata":{"Carry-Fix":["https://github.com/lastobelus/lastCode/pull/112"],"Carry-Upstream":["https://github.com/pingdotgg/t3code/pull/7961"],"Carry-Observation":["Existing manifest records upstream pull-request provenance."],"Carry-Evidence":["https://github.com/lastobelus/lastCode/commit/07c165ce8391d442cbe365017c6f33001b5f8f59"],"Carry-Applies-To":["upstream 8d3c56b (v0.0.39-nightly.20260905.1289); frozen source 4156900"],"Carry-Supersedes":[]}}
Carry-Contribution: {"sourceCommit":"7d57d8bf7e17f7d59208ce29a2f66b3acbb42693","subject":"test(web): align script shortcut fixtures with external IDs","group":"upstream-bugfixes","metadata":{"Carry-Fix":[],"Carry-Upstream":[],"Carry-Observation":[],"Carry-Evidence":[],"Carry-Applies-To":[],"Carry-Supersedes":[]}}
Carry-Contribution: {"sourceCommit":"c2d8a221ba9a04f0a0db9df82079bc106ec9a414","subject":"fix(server): align script ID diagnostics and fixtures","group":"upstream-bugfixes","metadata":{"Carry-Fix":[],"Carry-Upstream":[],"Carry-Observation":[],"Carry-Evidence":[],"Carry-Applies-To":[],"Carry-Supersedes":[]}}
lastobelus pushed a commit that referenced this pull request Sep 8, 2026
Carry-Group: upstream-bugfixes
Carry-Contribution: {"sourceCommit":"f7e7ab3653928828da416c37a58a47b989daa7cf","subject":"carry(upstream-bugfixes): fix(web): surface drafts in the legacy sidebar (#24)","group":"upstream-bugfixes","metadata":{"Carry-Fix":["https://github.com/lastobelus/lastCode/pull/24"],"Carry-Upstream":["https://github.com/pingdotgg/t3code/pull/7120"],"Carry-Observation":["Existing manifest records upstream pull-request provenance."],"Carry-Evidence":["https://github.com/lastobelus/lastCode/commit/f44a0e2a1a67daec624e2aa3b07aab8ae96a8088"],"Carry-Applies-To":["upstream 8d3c56b (v0.0.39-nightly.20260905.1289); frozen source 4156900"],"Carry-Supersedes":[]}}
Carry-Contribution: {"sourceCommit":"7fc0a88ba083bce3f028664a81fc59f48b9a546f","subject":"carry(upstream-bugfixes): feat(web): filter archived threads by project (#31)","group":"upstream-bugfixes","metadata":{"Carry-Fix":["https://github.com/lastobelus/lastCode/pull/31"],"Carry-Upstream":["https://github.com/pingdotgg/t3code/pull/7282"],"Carry-Observation":["Existing manifest records upstream pull-request provenance."],"Carry-Evidence":["https://github.com/lastobelus/lastCode/commit/fc3fd563304ff38da4fa23ae4c7aa5a2d2799ff3"],"Carry-Applies-To":["upstream 8d3c56b (v0.0.39-nightly.20260905.1289); frozen source 4156900"],"Carry-Supersedes":[]}}
Carry-Contribution: {"sourceCommit":"6f6c0523b215b2d69a7ead8fcad6fecd4f35ef2f","subject":"carry(upstream-bugfixes): fix(web): avoid archive breadcrumb route race (#45)","group":"upstream-bugfixes","metadata":{"Carry-Fix":["https://github.com/lastobelus/lastCode/pull/45"],"Carry-Upstream":["https://github.com/pingdotgg/t3code/pull/7282"],"Carry-Observation":["Existing manifest records upstream pull-request provenance."],"Carry-Evidence":["https://github.com/lastobelus/lastCode/commit/170f9427de40c815c1fd5498f1e1e3303b8e8c8b"],"Carry-Applies-To":["upstream 8d3c56b (v0.0.39-nightly.20260905.1289); frozen source 4156900"],"Carry-Supersedes":[]}}
Carry-Contribution: {"sourceCommit":"4a0e6e2b6b3b63658e9c6eba32d9024ca60bdb88","subject":"carry(upstream-bugfixes): fix(codex): keep finished subagents from pinning Working (#48)","group":"upstream-bugfixes","metadata":{"Carry-Fix":["https://github.com/lastobelus/lastCode/pull/48"],"Carry-Upstream":["https://github.com/pingdotgg/t3code/pull/7848","https://github.com/pingdotgg/t3code/pull/7468"],"Carry-Observation":["Existing manifest records upstream pull-request provenance."],"Carry-Evidence":["https://github.com/lastobelus/lastCode/commit/14e88be35630ea6ec22e418dfba0b5430010d337"],"Carry-Applies-To":["upstream 8d3c56b (v0.0.39-nightly.20260905.1289); frozen source 4156900"],"Carry-Supersedes":[]}}
Carry-Contribution: {"sourceCommit":"8e0f88bb595c6952fc4f21d1a9ac73c7dcf12596","subject":"carry(upstream-bugfixes): fix(server): wait for launchd shutdown safely (#56)","group":"upstream-bugfixes","metadata":{"Carry-Fix":["https://github.com/lastobelus/lastCode/pull/56"],"Carry-Upstream":["https://github.com/pingdotgg/t3code/pull/7874"],"Carry-Observation":["Existing manifest records upstream pull-request provenance."],"Carry-Evidence":["https://github.com/lastobelus/lastCode/commit/a559ca7edd357116c8263fbbf6c6eeda33bed531"],"Carry-Applies-To":["upstream 8d3c56b (v0.0.39-nightly.20260905.1289); frozen source 4156900"],"Carry-Supersedes":[]}}
Carry-Contribution: {"sourceCommit":"7ef50d5c427dfa4c9b2a9555c6fe98dda84669eb","subject":"carry(upstream-bugfixes): fix(codex): retain residual subagent liveness safeguards (#69)","group":"upstream-bugfixes","metadata":{"Carry-Fix":["https://github.com/lastobelus/lastCode/pull/69"],"Carry-Upstream":["https://github.com/pingdotgg/t3code/pull/7468","https://github.com/pingdotgg/t3code/pull/7848","https://github.com/pingdotgg/t3code/pull/7937"],"Carry-Observation":["Existing manifest records upstream pull-request provenance."],"Carry-Evidence":["https://github.com/lastobelus/lastCode/commit/796a340c3ff98d812d3c2b3f3a636994882ce36d"],"Carry-Applies-To":["upstream 8d3c56b (v0.0.39-nightly.20260905.1289); frozen source 4156900"],"Carry-Supersedes":[]}}
Carry-Contribution: {"sourceCommit":"49f77df6e32092d82cbddc89f8ce3f07522cf3bb","subject":"carry(upstream-bugfixes): fix(server): remove large worktrees reliably (#74)","group":"upstream-bugfixes","metadata":{"Carry-Fix":["https://github.com/lastobelus/lastCode/pull/74"],"Carry-Upstream":["https://github.com/pingdotgg/t3code/pull/3902"],"Carry-Observation":["Existing manifest records upstream pull-request provenance."],"Carry-Evidence":["https://github.com/lastobelus/lastCode/commit/cdbc2dcabd265fdce9508530517af14d4da5c1cc"],"Carry-Applies-To":["upstream 8d3c56b (v0.0.39-nightly.20260905.1289); frozen source 4156900"],"Carry-Supersedes":[]}}
Carry-Contribution: {"sourceCommit":"1a20473427ed4ac9d5353132d7d4cb25957f1610","subject":"carry(upstream-bugfixes): fix(web): keep remote icon visible on hover (#82)","group":"upstream-bugfixes","metadata":{"Carry-Fix":["https://github.com/lastobelus/lastCode/pull/82"],"Carry-Upstream":["https://github.com/pingdotgg/t3code/pull/8132"],"Carry-Observation":["Existing manifest records upstream pull-request provenance."],"Carry-Evidence":["https://github.com/lastobelus/lastCode/commit/cbd2a5eb930c53c44f5424d004c54294883323bb"],"Carry-Applies-To":["upstream 8d3c56b (v0.0.39-nightly.20260905.1289); frozen source 4156900"],"Carry-Supersedes":[]}}
Carry-Contribution: {"sourceCommit":"a5947c235329af7b75b6e9fd955850e958412687","subject":"carry(upstream-bugfixes): fix(tailscale): preserve occupied Serve handlers (#102)","group":"upstream-bugfixes","metadata":{"Carry-Fix":["https://github.com/lastobelus/lastCode/pull/102"],"Carry-Upstream":["https://github.com/pingdotgg/t3code/pull/8338"],"Carry-Observation":["Existing manifest records upstream pull-request provenance."],"Carry-Evidence":["https://github.com/lastobelus/lastCode/commit/bd098650bfd55014e41b4014050c5f61ed131c14"],"Carry-Applies-To":["upstream 8d3c56b (v0.0.39-nightly.20260905.1289); frozen source 4156900"],"Carry-Supersedes":[]}}
Carry-Contribution: {"sourceCommit":"54936af5ad0cc6b47052ed5e047287e14e6300b2","subject":"carry(upstream-bugfixes): fix(web): tolerate external project script ids in keybinding commands (#112)","group":"upstream-bugfixes","metadata":{"Carry-Fix":["https://github.com/lastobelus/lastCode/pull/112"],"Carry-Upstream":["https://github.com/pingdotgg/t3code/pull/7961"],"Carry-Observation":["Existing manifest records upstream pull-request provenance."],"Carry-Evidence":["https://github.com/lastobelus/lastCode/commit/07c165ce8391d442cbe365017c6f33001b5f8f59"],"Carry-Applies-To":["upstream 8d3c56b (v0.0.39-nightly.20260905.1289); frozen source 4156900"],"Carry-Supersedes":[]}}
Carry-Contribution: {"sourceCommit":"7d57d8bf7e17f7d59208ce29a2f66b3acbb42693","subject":"test(web): align script shortcut fixtures with external IDs","group":"upstream-bugfixes","metadata":{"Carry-Fix":[],"Carry-Upstream":[],"Carry-Observation":[],"Carry-Evidence":[],"Carry-Applies-To":[],"Carry-Supersedes":[]}}
Carry-Contribution: {"sourceCommit":"c2d8a221ba9a04f0a0db9df82079bc106ec9a414","subject":"fix(server): align script ID diagnostics and fixtures","group":"upstream-bugfixes","metadata":{"Carry-Fix":[],"Carry-Upstream":[],"Carry-Observation":[],"Carry-Evidence":[],"Carry-Applies-To":[],"Carry-Supersedes":[]}}
Carry-Contribution: {"sourceCommit":"dd2537bad43114417769bb3d1bbcd6fd0efa8d9f","subject":"test(lastcode): align script ID expectations with external actions","group":"upstream-bugfixes","metadata":{"Carry-Fix":[],"Carry-Upstream":[],"Carry-Observation":["LastCode accepts nonempty trimmed external script IDs; upstream slug-only shortcut expectations do not apply."],"Carry-Evidence":[],"Carry-Applies-To":[],"Carry-Supersedes":[]}}
Carry-Contribution: {"sourceCommit":"27e27fa30d13a3f92fdaecccd5abb79944ce3d1e","subject":"test(lastcode): align server script ID expectations","group":"upstream-bugfixes","metadata":{"Carry-Fix":[],"Carry-Upstream":[],"Carry-Observation":["External script IDs are nonempty and trimmed; retain server rejection coverage for empty and padded IDs."],"Carry-Evidence":[],"Carry-Applies-To":[],"Carry-Supersedes":[]}}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants