Reintroduce houdini 2#528
Draft
thokra-nav wants to merge 1 commit into
Draft
Conversation
Contributor
There was a problem hiding this comment.
Pull request overview
Reintroduces Houdini v2 across the Console frontend after a prior revert, updating generated query behavior, route typings, and UI components to match Houdini 2’s masking and “non-exhaustive” union/interface type patterns.
Changes:
- Bumps Houdini packages to stable v2 releases and updates Houdini/Vite/SvelteKit integration points (
houdini.config.js,vite.config.ts, hooks/client). - Updates many route queries and pages to use Houdini 2 caching defaults (
CacheAndNetwork), new facets shapes, and@mask_disablewhere unmasked presenter data is expected. - Refactors UI components to avoid interface-fragment pitfalls (adds shared
IssueFragment.gql, centralizes issue resource derivation, and introducesexhaustive()helper for non-exhaustive union/interface variants).
Reviewed changes
Copilot reviewed 102 out of 104 changed files in this pull request and generated 2 comments.
Show a summary per file
| File | Description |
|---|---|
| vite.config.ts | Ensures schema endpoint env var is available at build/runtime for Houdini schema fetching. |
| src/routes/userInfo.gql | Adds __typename to align with Houdini 2 interface/union handling. |
| src/routes/team/[team]/valkey/query.gql | Switches cache policy to CacheAndNetwork. |
| src/routes/team/[team]/valkey/create/+page.svelte | Migrates route typing import to SvelteKit $types. |
| src/routes/team/[team]/valkey/+page.ts | Updates Houdini input type imports for v2. |
| src/routes/team/[team]/unleash/+page.svelte | Uses Houdini runtime GraphQLError type instead of a local copy. |
| src/routes/team/[team]/settings/service_accounts/[serviceAccountID]/token/create/+page.svelte | Migrates route typing import to SvelteKit $types. |
| src/routes/team/[team]/settings/service_accounts/[serviceAccountID]/binding/add/+page.svelte | Migrates route typing import to SvelteKit $types. |
| src/routes/team/[team]/settings/confirm_delete/+page.svelte | Moves QueryResult typing to houdini/runtime. |
| src/routes/team/[team]/settings/+page.svelte | Moves QueryResult typing to houdini/runtime. |
| src/routes/team/[team]/secrets/query.gql | Switches cache policy to CacheAndNetwork. |
| src/routes/team/[team]/secrets/+page.ts | Updates Houdini input type imports for v2. |
| src/routes/team/[team]/repositories/+page.ts | Updates Houdini input type imports for v2. |
| src/routes/team/[team]/postgres/query.gql | Switches cache policy to CacheAndNetwork. |
| src/routes/team/[team]/postgres/+page.ts | Updates Houdini input type imports for v2. |
| src/routes/team/[team]/opensearch/query.gql | Switches cache policy to CacheAndNetwork. |
| src/routes/team/[team]/opensearch/create/+page.svelte | Migrates route typing import to SvelteKit $types. |
| src/routes/team/[team]/opensearch/+page.ts | Updates Houdini input type imports for v2. |
| src/routes/team/[team]/members/AddMember.svelte | Updates Houdini input type imports for v2. |
| src/routes/team/[team]/kafka/query.gql | Switches cache policy to CacheAndNetwork. |
| src/routes/team/[team]/kafka/+page.ts | Updates Houdini input type imports for v2. |
| src/routes/team/[team]/jobs/query.gql | Switches cache policy to CacheAndNetwork. |
| src/routes/team/[team]/jobs/+page.ts | Updates Houdini input type imports for v2. |
| src/routes/team/[team]/issues/query.gql | Reworks issues query to use facets + shared IssueFragment unmasked. |
| src/routes/team/[team]/issues/metadata.gql | Removes redundant metadata query (replaced by facets). |
| src/routes/team/[team]/issues/+page.ts | Drops metadata loader and updates Houdini input type imports. |
| src/routes/team/[team]/issues/+page.svelte | Consumes facets for filters and updates IssueType/severity handling. |
| src/routes/team/[team]/configs/query.gql | Switches cache policy to CacheAndNetwork. |
| src/routes/team/[team]/configs/+page.ts | Updates Houdini input type imports for v2. |
| src/routes/team/[team]/buckets/query.gql | Switches cache policy to CacheAndNetwork. |
| src/routes/team/[team]/buckets/+page.ts | Updates Houdini input type imports for v2. |
| src/routes/team/[team]/bigquery/query.gql | Switches cache policy to CacheAndNetwork. |
| src/routes/team/[team]/bigquery/+page.ts | Updates Houdini input type imports for v2. |
| src/routes/team/[team]/applications/query.gql | Switches cache policy to CacheAndNetwork. |
| src/routes/team/[team]/applications/+page.ts | Updates Houdini input type imports for v2. |
| src/routes/team/[team]/alerts/query.gql | Switches to facets-based filtering and expands Prometheus alert fields. |
| src/routes/team/[team]/alerts/PrometheusAlarmDetail.svelte | Moves ValueOf typing to houdini/runtime. |
| src/routes/team/[team]/alerts/metadata.gql | Removes redundant metadata query (replaced by facets). |
| src/routes/team/[team]/alerts/+page.ts | Drops metadata loader and updates Houdini input type imports. |
| src/routes/team/[team]/alerts/+page.svelte | Consumes facets and simplifies Prometheus alert rendering. |
| src/routes/team/[team]/activity-log/query.gql | Switches cache policy to CacheAndNetwork. |
| src/routes/team/[team]/activity-log/+page.ts | Updates Houdini input type imports for v2. |
| src/routes/team/[team]/[env]/valkey/[valkey]/edit/+page.svelte | Migrates route typing import to SvelteKit $types. |
| src/routes/team/[team]/[env]/valkey/[valkey]/edit/+page.server.ts | Updates Houdini input type imports for v2. |
| src/routes/team/[team]/[env]/valkey/[valkey]/delete/+page.svelte | Migrates route typing import to SvelteKit $types. |
| src/routes/team/[team]/[env]/valkey/[valkey]/(single)/query.gql | Uses shared IssueFragment unmasked for issue presenters. |
| src/routes/team/[team]/[env]/postgres/[postgres]/delete/+page.svelte | Migrates route typing import to SvelteKit $types. |
| src/routes/team/[team]/[env]/opensearch/[opensearch]/edit/+page.svelte | Migrates route typing import to SvelteKit $types. |
| src/routes/team/[team]/[env]/opensearch/[opensearch]/edit/+page.server.ts | Updates Houdini input type imports for v2. |
| src/routes/team/[team]/[env]/opensearch/[opensearch]/delete/+page.svelte | Migrates route typing import to SvelteKit $types. |
| src/routes/team/[team]/[env]/opensearch/[opensearch]/(single)/query.gql | Uses shared IssueFragment unmasked for issue presenters. |
| src/routes/team/[team]/[env]/job/[job]/query.gql | Uses shared IssueFragment unmasked for issue presenters. |
| src/routes/team/[team]/[env]/job/[job]/logs/query.gql | Expands log destination inline fragments to satisfy Houdini 2 masking. |
| src/routes/team/[team]/[env]/job/[job]/logs/JobLogs.svelte | Uses generated $result type instead of manual prop typing. |
| src/routes/team/[team]/[env]/job/[job]/issues/query.gql | Uses shared IssueFragment unmasked for issue presenters. |
| src/routes/team/[team]/[env]/job/[job]/issues/+page.ts | Updates Houdini input type imports for v2. |
| src/routes/team/[team]/[env]/job/[job]/activity-log/+page.ts | Updates Houdini input type imports for v2. |
| src/routes/team/[team]/[env]/cloudsql/[cloudsql]/query.gql | Uses shared IssueFragment unmasked for issue presenters. |
| src/routes/team/[team]/[env]/app/[app]/utilization/query.gql | Moves shared fields into inline fragments to satisfy Houdini 2 masking. |
| src/routes/team/[team]/[env]/app/[app]/utilization/+page.svelte | Introduces exhaustive() usage and adapts to data payload shape changes. |
| src/routes/team/[team]/[env]/app/[app]/resize/+page.svelte | Migrates route typing import to SvelteKit $types. |
| src/routes/team/[team]/[env]/app/[app]/query.gql | Uses shared IssueFragment unmasked for issue presenters. |
| src/routes/team/[team]/[env]/app/[app]/logs/query.gql | Expands log destination inline fragments to satisfy Houdini 2 masking. |
| src/routes/team/[team]/[env]/app/[app]/logs/Logs.svelte | Uses generated $result typing and exhaustive() for safe iteration. |
| src/routes/team/[team]/[env]/app/[app]/issues/query.gql | Uses shared IssueFragment unmasked for issue presenters. |
| src/routes/team/[team]/[env]/app/[app]/issues/+page.ts | Updates Houdini input type imports for v2. |
| src/routes/team/[team]/[env]/app/[app]/image/+page.svelte | Migrates route typing import to SvelteKit $types. |
| src/routes/team/[team]/[env]/app/[app]/activity-log/+page.ts | Updates Houdini input type imports for v2. |
| src/routes/deployments/+page.ts | Updates Houdini input type imports for v2. |
| src/routes/admin/userSyncLog/query.gql | Refactors interface selection into inline fragments for Houdini 2. |
| src/routes/admin/userSyncLog/+page.svelte | Uses exhaustive() to iterate safely over interface/union results. |
| src/routes/admin/teams/+page.ts | Updates Houdini input type imports for v2. |
| src/routes/admin/service_accounts/[serviceAccountID]/token/create/+page.svelte | Migrates route typing import to SvelteKit $types. |
| src/routes/admin/service_accounts/[serviceAccountID]/binding/add/+page.svelte | Migrates route typing import to SvelteKit $types. |
| src/routes/admin/+layout.svelte | Migrates route typing import to SvelteKit $types. |
| src/routes/+layout.svelte | Migrates route typing import to SvelteKit $types. |
| src/lib/utils/houdini.ts | Adds exhaustive() helper + Exhaustive<T> type for non-exhaustive variants. |
| src/lib/domain/vulnerability/SuppressFinding.svelte | Moves ValueOf typing to houdini/runtime. |
| src/lib/domain/vulnerability/BulkSuppressCVE.svelte | Moves ValueOf typing to houdini/runtime. |
| src/lib/domain/list-items/IssueListItem.svelte | Switches to unmasked presenter data + centralized issue resource mapping. |
| src/lib/domain/list-items/DeploymentWithTeamListItem.svelte | Moves ValueOf typing to houdini/runtime. |
| src/lib/domain/list-items/DeploymentListItem.svelte | Moves ValueOf typing to houdini/runtime. |
| src/lib/domain/list-items/ActivityLogListItem.svelte | Flattens type-keyed payload props for text components under Houdini 2. |
| src/lib/domain/issues/IssuesFacets.svelte | Updates facets prop shapes to include counts. |
| src/lib/domain/issues/issueResource.ts | Adds shared issue “resource” derivation and IssueDisplayData contract. |
| src/lib/domain/issues/IssueFragment.gql | Adds a shared fragment used with @mask_disable for issue presenters. |
| src/lib/domain/issues/CriticalIssuesCard.svelte | Updates issue typing to shared presenter contract. |
| src/lib/domain/issues/CriticalIssues.svelte | Switches to shared fragment and updated row component props. |
| src/lib/domain/issues/CriticalIssueRow.svelte | Refactors to shared issue resource mapping + safer link handling. |
| src/lib/domain/alerts/AlertsFacets.svelte | Updates environment facets prop shape to include counts. |
| src/lib/domain/activity/TeamActivityCard.svelte | Updates Houdini input type imports for v2. |
| src/lib/domain/activity/shared/texts/types.ts | Updates activity log entry typing model for Houdini 2 interface fragments. |
| src/lib/domain/activity/shared/texts/PostgresDeletedActivityLogEntryText.svelte | Adjusts typing to match Houdini 2 fragment data structure. |
| src/lib/domain/activity/shared/texts/DefaultText.svelte | Adjusts typing to match Houdini 2 fragment data structure. |
| src/hooks.server.ts | Reworks GraphQL request rewriting + cookie forwarding for Houdini 2 client behavior. |
| src/client.ts | Removes custom endpoint switching and tightens SSE handler typing. |
| src/app.d.ts | Extends App namespace types for GraphQL error extension codes. |
| schema.graphql | Updates generated schema content (auto-generated). |
| pnpm-workspace.yaml | Allows Houdini builds and adjusts minimum release age exclusions. |
| package.json | Updates Houdini packages and GraphQL version. |
| houdini.config.js | Adjusts Houdini v2 config (url, defaults, removes imperativeCache feature). |
| Dockerfile | Adjusts build stage base image and keeps runtime stages on alpine. |
| AGENTS.md | Documents Houdini 2 patterns (non-exhaustive variants, interface fragments, presenter strategy). |
Comment on lines
+179
to
+181
| <div class="alarms"> | ||
| {#each alert.alarms as alarm, i (alarm)} | ||
| <PrometheusAlarmDetail {alarm} {i} /> |
Comment on lines
36
to
40
| ... on PrometheusAlert { | ||
| name | ||
| duration | ||
| query | ||
| alarms { |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Revert revert houdini 2 (#527)"
This reverts commit 320b248.