Skip to content

TS strict (3/3): runtime model/form/service changes + enable strict mode - #3688

Merged
tegan-temporal merged 4 commits into
mainfrom
strict/3-behavior
Jul 20, 2026
Merged

TS strict (3/3): runtime model/form/service changes + enable strict mode#3688
tegan-temporal merged 4 commits into
mainfrom
strict/3-behavior

Conversation

@tegan-temporal

@tegan-temporal tegan-temporal commented Jul 17, 2026

Copy link
Copy Markdown
Contributor

Final PR of the strict-mode split (base #3686 and mechanical #3687 already merged).

Contains the genuine runtime-affecting changes and the strict: true flip, because they're coupled: the standalone-activity form's superForm types only resolve correctly under strictNullChecks, so this code can't type-check on a strict: false main — the flag has to land together with it. (Supersedes the separate flag PR #3640, now closed.)

  • WorkflowExecution optional fields (+ snapshot tests), schedule-form zod default seeding, standalone-activity retry fields as strings coerced at the boundary, duration-input defaults, requestFromAPI's Promise<T | undefined>
  • Flip strict: true in tsconfig.json
  • Switch the Danger strict-error check from warn to fail (1-indexed line numbers)

Verified: svelte-check reports 0 errors under strict on this branch.

@vercel

vercel Bot commented Jul 17, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
holocene Ready Ready Preview, Comment Jul 17, 2026 8:29pm

Request Review

Mechanical null-safety: nullish-coalescing defaults, optional chaining,
{#if} render guards, and generics-driven refactors. Behavior-preserving.
Rebased onto main after the base PR (#3686) merged.
WorkflowExecution optional fields (with their snapshot tests), schedule-form
zod default seeding, standalone-activity retry fields as strings coerced at the
boundary, duration-input defaults, and requestFromAPI's Promise<T | undefined>.
Base automatically changed from strict/2-mechanical to main July 17, 2026 20:25
Fold the strict: true flip + Danger warn->fail into this PR. The standalone-activity
form's superForm types only resolve correctly under strictNullChecks, so the behavior
changes can't type-check on a strict:false main — the flag must land with them.
Supersedes the separate flag PR (#3640).
@tegan-temporal tegan-temporal changed the title TS strict (3/4): runtime-affecting model, form, and service changes TS strict (3/3): runtime model/form/service changes + enable strict mode Jul 17, 2026
@tegan-temporal
tegan-temporal marked this pull request as ready for review July 17, 2026 21:55
@tegan-temporal
tegan-temporal requested a review from a team as a code owner July 17, 2026 21:55
@tegan-temporal tegan-temporal self-assigned this Jul 17, 2026

@andrewzamojc andrewzamojc left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Awesome. I was able to go through each runtime change and see why it's safe or that its covered by a test etc. Good stuff 👍

@tegan-temporal
tegan-temporal merged commit 60e4b6c into main Jul 20, 2026
20 checks passed
@tegan-temporal
tegan-temporal deleted the strict/3-behavior branch July 20, 2026 20:15
laurakwhit added a commit that referenced this pull request Jul 29, 2026
Auto-generated version bump from 2.52.1 to 2.53.0

Bump type: minor

Changes included:
- [`b1602800`](b160280) Make serverless worker Terraform template configurable (COM-216) (#3671)
- [`d1ec2795`](d1ec279) Support markdown tables in Workflow details (#3673)
- [`5eae94c7`](5eae94c) Show IANA region names in schedule timezone picker (DT-4250) (#3668)
- [`f454220c`](f454220) fix(DT-4269): namespace selector tooltip overflow (#3676)
- [`b563bfff`](b563bff) Update format of Execution Duration (#3677)
- [`17f6d7a7`](17f6d7a) Add download json button to Standalone Activities table (#3675)
- [`6f45cc07`](6f45cc0) Migrate old column labels (#3678)
- [`af5c9408`](af5c940) Update to use formatDurationAbbreviated (#3679)
- [`066a662c`](066a662) feat(timeline): HTML virtualization + collapse idle time (#3627)
- [`eee96c60`](eee96c6) Update empty state for Standalone Activities (#3681)
- [`51164cb4`](51164cb) [COM-193] Lock compute provider for new deployment versions (#3674)
- [`0b700a38`](0b700a3) refactor: add es-toolkit (#3652)
- [`bf4ee86f`](bf4ee86) chore(proto): add local @temporalio/proto codegen tooling (#3684)
- [`892163b2`](892163b) TS strict (1/4): type annotations and dead-code cleanup (#3686)
- [`b06e30e7`](b06e30e)  Fix live timeline refresh for completed event groups (#3689)
- [`51f04f87`](51f04f8) TS strict (2/4): strictNullChecks null-safety guards (#3687)
- [`41dfc531`](41dfc53) Shared SavedViews component updates (#3670)
- [`ee6348b1`](ee6348b) Fix max height for paginated table in saved query views (#3691)
- [`60e4b6c0`](60e4b6c) TS strict (3/3): runtime model/form/service changes + enable strict mode (#3688)
- [`ddde6e70`](ddde6e7) Activity commands for Standalone Activities (#3564)
- [`40baeae6`](40baeae) Associate Combobox hints with form fields (#3667)
- [`9940a389`](9940a38) Start delay for standalone activities  (#3650)
- [`02aa74e9`](02aa74e) Add ExecutionTime search attribute for standalone activities (#3666)
- [`c84732e3`](c84732e) Fix TypeError in workflow JSON navigator on empty events (#3696)
- [`839bc0d5`](839bc0d) [DT-4154] Add Cloud Run replica scaling controls (#3694)
- [`32a49e4b`](32a49e4) fix(events): reflect pending-activity commands without reload (#3693)
- [`9f8ddee6`](9f8ddee) Add Batch Operations to Standalone Activities (#3695)
- [`d2eb9444`](d2eb944) Use standaloneActivityOperatorCommands ns capability check (#3698)
- [`ea731e45`](ea731e4) Fix state unsafe mutation error in EndTimeInterval (#3715)
- [`7a081c88`](7a081c8) Update holocene empty-state to runes syntax (#3701)
- [`9693355c`](9693355) Update holocene navigation-item to runes syntax (#3702)
- [`1b5b267e`](1b5b267) Update holocene table to runes syntax (#3711)
- [`e418bdbb`](e418bdb) Update holocene navigation-badge to runes syntax (#3703)
- [`4f45e370`](4f45e37) Remove unused compatibility-badge component (#3704)
- [`596740cd`](596740c) Update holocene navigation-button to runes syntax (#3705)
- [`9ac2f525`](9ac2f52) Remove unused expandable/button component (#3706)
- [`240561dc`](240561d) Update holocene copyable/button to runes syntax (#3707)
- [`4fc08c48`](4fc08c4) Update holocene radio-input and radio-card to runes syntax (#3708)
- [`d6e839f7`](d6e839f) Update holocene table-row and table-header-row to runes syntax (#3710)
- [`99a9ff71`](99a9ff7) fix: surgical security upgrades for Dependabot alerts (#3709)
- [`9b105b47`](9b105b4) fix(serverless-workers): interpolate form values into Terraform snippet (COM-216) (#3716)
- [`d126ea8a`](d126ea8) Fix deployment connection validation status refresh (#3718)
- [`f0edfbd7`](f0edfbd) [DT-4296] Add Terraform setup instructions to the GCP Cloud Run deployment form (#3700)
- [`38453f90`](38453f9) Fix event id param (#3745)
- [`bc70844a`](bc70844) Add runes button component (strangler migration, part 1) (#3727)
- [`a559c6fe`](a559c6f) Migrate app-level button consumers to runes button (#3728)
- [`3a7eaa19`](3a7eaa1) Migrate holocene-internal button renderers and stories to runes button (#3729)
- [`5a72155d`](5a72155) Migrate icon-button to runes with onclick prop (#3730)
- [`08654d88`](08654d8) Migrate split-button to runes with onclick prop (#3731)
- [`40ae4943`](40ae494) Migrate toggle-button to runes button (part 6) (#3732)
- [`9fc25bca`](9fc25bc) Finalize button migration: delete legacy, rename runes button (#3733)
- [`7ce3f72f`](7ce3f72) Bump API to v1.63.4 (#3723)

Co-authored-by: laurakwhit <15069288+laurakwhit@users.noreply.github.com>
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