Skip to content

Conversation

@KATIETOLER
Copy link
Contributor

This PR is meant to add the underlying structure for the new nav.
The effect of this PR adds more svelte5 migrations because the nav is central to a lot of things and updating it ended up being more hairy than I had hoped for.
The LLM helped me do this, so there are probably errors or weirdness somewhere I am code blind to.
The application seemed to run fine though, so maybe I am paranoid.

The icons are added and there are lots of guard rails to prevent any of these changes to prod until we are ready.

@vercel
Copy link

vercel bot commented Jan 13, 2026

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

Project Deployment Review Updated (UTC)
holocene Ready Ready Preview, Comment Jan 13, 2026 4:44pm

}: Props = $props();
const [x, y] = $derived(point);
Copy link
Contributor

Choose a reason for hiding this comment

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

  • ⚠️ Type 'SVGTextElement | undefined' is not assignable to type 'SVGTextElement'.

const showIcon = $derived(icon && config);
const textWidth = $derived(textElement?.getBBox()?.width || 0);
const backdropWidth = $derived(showIcon ? textWidth + 36 : textWidth + 12);
const textX = $derived(
Copy link
Contributor

Choose a reason for hiding this comment

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

  • ⚠️ 'config' is possibly 'undefined'.

const activityTaskScheduled = $derived(
group.eventList.find(isActivityTaskStartedEvent),
);
const retried = $derived(
Copy link
Contributor

Choose a reason for hiding this comment

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

  • ⚠️ 'activityTaskScheduled.attributes.attempt' is possibly 'null' or 'undefined'.

{#key [namespace]}
<PaginatedTable
let:visibleItems
{onFetch}
Copy link
Contributor

Choose a reason for hiding this comment

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

  • ⚠️ Type '(err: APIErrorResponse) => void' is not assignable to type '(error: unknown) => void | undefined'.

query: string | null,
onError: ErrorCallback,
request = fetch,
): Promise<PaginatedSchedulesPromise> => {
Copy link
Contributor

Choose a reason for hiding this comment

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

  • ⚠️ Type '(pageSize?: number, token?: string) => Promise<{ items: IScheduleListEntry[]; nextPageToken: string; } | { items: IScheduleListEntry[] | null | undefined; nextPageToken: string; }>' is not assignable to type 'PaginatedSchedulesPromise'.

import { get, type Subscriber } from 'svelte/store';

import { startOfDay } from 'date-fns';
import { enUS } from 'date-fns/locale';
Copy link
Contributor

Choose a reason for hiding this comment

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

  • ⚠️ Could not find a declaration file for module 'date-fns-tz'. '/home/runner/work/ui/ui/node_modules/.pnpm/date-fns-tz@1.3.8_date-fns@2.30.0/node_modules/date-fns-tz/index.js' implicitly has an 'any' type.

@temporal-cicd
Copy link
Contributor

temporal-cicd bot commented Jan 13, 2026

Warnings
⚠️

📊 Strict Mode: 63 errors in 19 files (5.6% of 1120 total)

src/lib/stores/time-format.ts (1)
  • L4:24: Could not find a declaration file for module 'date-fns-tz'. '/home/runner/work/ui/ui/node_modules/.pnpm/date-fns-tz@1.3.8_date-fns@2.30.0/node_modules/date-fns-tz/index.js' implicitly has an 'any' type.
src/lib/utilities/format-date.ts (1)
  • L121:3: Function lacks ending return statement and return type does not include 'undefined'.
src/lib/services/schedule-service.ts (3)
  • L37:2: Type '(pageSize?: number, token?: string) => Promise<{ items: IScheduleListEntry[]; nextPageToken: string; } | { items: IScheduleListEntry[] | null | undefined; nextPageToken: string; }>' is not assignable to type 'PaginatedSchedulesPromise'.
  • L77:4: Type 'IScheduleListEntry[] | null | undefined' is not assignable to type 'IScheduleListEntry[]'.
  • L171:28: No overload matches this call.
src/lib/holocene/combobox/combobox.svelte (11)
  • L148:4: Type 'null' is not assignable to type 'string'.
  • L151:4: Type 'null' is not assignable to type '"activity" | "add-square" | "add" | "apple" | "archives" | "arrow-down" | "arrow-left" | "arrow-up" | "arrow-right" | "ascending" | "astronaut" | "batch-operation" | "book" | ... 129 more ... | "xmark-square"'.
  • L153:4: Type 'null' is not assignable to type 'keyof T'.
  • L222:4: 'inputElement' is possibly 'null'.
  • L223:4: 'inputElement' is possibly 'null'.
  • L229:14: Argument of type 'string | T | undefined' is not assignable to parameter of type 'string | T'.
  • L234:14: Argument of type 'string | T | undefined' is not assignable to parameter of type 'string | T'.
  • L267:60: Function lacks ending return statement and return type does not include 'undefined'.
  • L360:10: Type 'HTMLLIElement | null' is not assignable to type 'HTMLLIElement'.
  • L360:43: 'menuElement' is possibly 'null'.
  • L582:9: Type 'HTMLUListElement | null' is not assignable to type 'HTMLUListElement | undefined'.
src/lib/holocene/navigation/navigation-container.svelte (1)
  • L25:3: Argument of type '{ accesskey?: string | undefined | null; autocapitalize?: "characters" | "off" | "on" | "none" | "sentences" | "words" | undefined | null; autofocus?: boolean | undefined | null; ... 433 more ...; xmlns?: string | undefined | null; }' is not assignable to parameter of type 'HTMLProps<"nav", HTMLAttributes>'.
src/lib/components/event/event-summary-row.svelte (5)
  • L136:6: Argument of type 'string | undefined' is not assignable to parameter of type 'string'.
  • L181:23: Parameter 'event' implicitly has an 'any' type.
  • L193:30: Parameter 'group' implicitly has an 'any' type.
  • L193:37: Parameter 'hoveredEventId' implicitly has an 'any' type.
  • L322:16: Type 'ITimestamp | null | undefined' is not assignable to type 'ITimestamp'.
src/lib/components/event/pending-activity-summary-row.svelte (5)
  • L125:12: 'event.attempt' is possibly 'null' or 'undefined'.
  • L132:12: 'event.attempt' is possibly 'null' or 'undefined'.
  • L139:13: 'event.attempt' is possibly 'null' or 'undefined'.
  • L141:12: Type 'ITimestamp | null | undefined' is not assignable to type 'ITimestamp'.
  • L152:8: Type 'string | undefined' is not assignable to type 'string | Record<string, unknown> | IPayloads'.
src/lib/components/event/pending-nexus-summary-row.svelte (1)
  • L129:16: Type 'ITimestamp | null | undefined' is not assignable to type 'ITimestamp'.
src/lib/components/lines-and-dots/svg/text.svelte (3)
  • L42:6: Type 'SVGTextElement | undefined' is not assignable to type 'SVGTextElement'.
  • L48:45: 'config' is possibly 'undefined'.
  • L62:4: Type '"activity" | "add-square" | "add" | "apple" | "archives" | "arrow-down" | "arrow-left" | "arrow-up" | "arrow-right" | "ascending" | "astronaut" | "batch-operation" | "book" | ... 130 more ... | undefined' is not assignable to type '"activity" | "add-square" | "add" | "apple" | "archives" | "arrow-down" | "arrow-left" | "arrow-up" | "arrow-right" | "ascending" | "astronaut" | "batch-operation" | "book" | ... 129 more ... | "xmark-square"'.
src/lib/components/lines-and-dots/svg/timeline-graph-row.svelte (7)
  • L100:20: 'distance' is possibly 'null'.
  • L100:31: 'workflowDistance' is possibly 'null'.
  • L111:20: 'distance' is possibly 'null'.
  • L111:31: 'workflowDistance' is possibly 'null'.
  • L151:29: 'activityTaskScheduled.attributes.attempt' is possibly 'null' or 'undefined'.
  • L244:12: 'pendingActivity.attempt' is possibly 'null' or 'undefined'.
  • L287:13: 'activityTaskScheduled' is possibly 'undefined'.
src/lib/components/lines-and-dots/svg/timeline-graph.svelte (3)
  • L40:4: Object is possibly 'null' or 'undefined'.
  • L49:24: Parameter 'e' implicitly has an 'any' type.
  • L110:9: Type 'number | null' is not assignable to type 'number'.
src/lib/holocene/input/chip-input.svelte (1)
  • L56:30: 'e.clipboardData' is possibly 'null'.
src/lib/components/schedule/schedules-count.svelte (2)
  • L14:8: Type 'string | null' is not assignable to type 'string | undefined'.
  • L17:60: Property 'message' does not exist on type '{}'.
src/lib/components/search-attribute-filter/filter-list.svelte (1)
  • L44:6: Type 'null' is not assignable to type 'number'.
src/lib/components/workflow/workflow-filters.svelte (6)
  • L95:6: Type 'string | null' is not assignable to type 'string | undefined'.
  • L103:11: Type '{ icon: "search"; type: "search"; id: string; placeholder: string; label: string; labelHidden: true; value: string | undefined; }' is not assignable to type '__sveltets_2_PropsWithChildren<$$Props, { 'before-input': { disabled: boolean; }; 'after-input': { disabled: boolean; }; }> | undefined'.
  • L113:11: Type '{ icon: "search"; type: "search"; id: string; placeholder: string; label: string; labelHidden: true; value: string | undefined; }' is not assignable to type '__sveltets_2_PropsWithChildren<$$Props, { 'before-input': { disabled: boolean; }; 'after-input': { disabled: boolean; }; }> | undefined'.
  • L129:16: Type 'null' is not assignable to type 'SelectOptionValue'.
  • L140:13: Type 'WorkflowStatus | undefined' is not assignable to type 'SelectOptionValue'.
  • L144:19: Type 'string | null' is not assignable to type 'SelectOptionValue'.
src/lib/holocene/table/paginated-table/api-paginated.svelte (9)
  • L48:13: Type 'null' is not assignable to type 'string'.
  • L50:13: Type 'undefined' is not assignable to type '(error: Error) => void | undefined'.
  • L52:13: Type 'undefined' is not assignable to type '(event: KeyboardEvent) => void | undefined'.
  • L53:13: Type 'undefined' is not assignable to type '(event: KeyboardEvent) => void | undefined'.
  • L55:13: Type 'undefined' is not assignable to type '(event: KeyboardEvent) => void | undefined'.
  • L76:15: Type 'undefined' is not assignable to type 'Error'.
  • L98:20: Element implicitly has an 'any' type because expression of type 'string' can't be used to index type '{ items: T[]; nextPageToken: string; }'.
  • L101:6: Type 'unknown' is not assignable to type 'Error'.
  • L114:20: Element implicitly has an 'any' type because expression of type 'string' can't be used to index type '{ items: T[]; nextPageToken: string; }'.
src/lib/holocene/badge.stories.svelte (1)
  • L34:40: 'type' is possibly 'null' or 'undefined'.
src/lib/pages/deployments.svelte (1)
  • L52:5: Type '(err: APIErrorResponse) => void' is not assignable to type '(error: unknown) => void | undefined'.
src/lib/pages/schedules.svelte (1)
  • L121:5: Type '(err: APIErrorResponse) => void' is not assignable to type '(error: unknown) => void | undefined'.

Generated by 🚫 dangerJS against e8fde2d

@KATIETOLER KATIETOLER requested review from GraceGardner and rossnelson and removed request for Alex-Tideman and rossedfort January 13, 2026 16:58
@KATIETOLER KATIETOLER self-assigned this Jan 13, 2026
? 'focus-visible:ring-success'
: 'focus-visible:ring-primary/70'}"
onclick={toggle}
{#if isCloud}
Copy link
Collaborator

Choose a reason for hiding this comment

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

We should make this it's own component instead of an if statement. Start with a CloudNavBar and OSSNavBar and if we want to use CloudNavBar for OSS we can switch to that

Copy link
Contributor Author

Choose a reason for hiding this comment

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

yess thats a much better plan.

@KATIETOLER KATIETOLER closed this Jan 14, 2026
@KATIETOLER
Copy link
Contributor Author

See this PR -- without all the unintended changes -- here --> #3095

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.

3 participants