Workflow selector: 'Open in catalog' links for the config and schemas - #756
Merged
Conversation
- schema_uris resolves each key independently (display-only, infallible); a dangling/unknown ref drops only that link - Invalid state carries a config.yml catalog link, threaded to the UI notice - bucket is Option<&str> through workflows_config_to_commit_workflows; a missing bucket yields no links - route the previous-revision workflow URL through catalog_object_url - single WORKFLOWS_CONFIG_KEY const in quilt-rs, used at all four sites - lighter links-row closure captures projected schema URLs, not full options - zero-copy move of workflow strings in the commit-data builder
fiskus
marked this pull request as ready for review
July 10, 2026 09:20
Member
Author
|
@greptileai Please re-review and update the confidence score — since your review: the seven verified findings from an external review pass were applied (independent per-key schema resolution, config link on the Invalid notice, Option bucket threading, helper reuse, shared WORKFLOWS_CONFIG_KEY, lighter closure capture, zero-copy mapping), and your CSS finding is resolved with an explicit nowrap rule for the label class. |
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.
Summary
Small UI follow-up to the workflow-support effort: the workflow selector (commit dialog and Set-remote popup) now shows a helper row under the dropdown —
config.ymllinks to the bucket's workflows config; the schema links appear only when the selected workflow declares them and update with the selection ("None" shows just the config link; ungoverned buckets show no row).WorkflowsConfig::schema_uris, exposing the previously crate-private schema-URL resolution (behavior-preserving refactor of the existing helper).Testing
Unit tests for the accessor (both/one/none/unknown-id, misconfigured schemas section); backend catalog-link formatting incl. the cross-bucket case; selection-reactivity and view-model tests on the UI side; wire-form tests extended byte-identically on both sides of the Tauri boundary. Full gate green (fmt, clippy native + wasm with denied warnings, tests, rumdl).
Versions
quilt-rs
0.33.0-alpha7, quilt-sync0.18.3-alpha7.Greptile Summary
This PR adds "Open in catalog" links to the workflow selector in the commit and Set-remote dialogs. Links are pre-formatted backend-side using the existing catalog-link machinery and cover the bucket's
config.yml, plus the selected workflow's declared metadata and entries schemas (updating reactively with the selection).quilt-rsgains a new publicWORKFLOWS_CONFIG_KEYconstant (replacing three inline string literals), aWorkflowSchemaUrisstruct, and aschema_urisaccessor that resolves independently per schema key — a dangling or missing schema reference degrades that key toNonewithout suppressing the other.quilt-sync's backend extendsCommitWorkflowInfoandCommitWorkflows::Available/Invalidwith pre-formatted catalog HTTPS URLs; the UI side renders them in a reactive hint row that recomputes as the selection changes.Confidence Score: 5/5
Safe to merge — all changes are additive, the new public accessor is lenient by design and cannot affect any existing gate path, and the wire-form extensions are backward-compatible on both ends.
The refactor of resolve_schema_url into a synchronous declared_schema_url is behavior-preserving and now covered by dedicated tests. Schema resolution is independent per key — a dangling reference degrades only that one link, never the other. The WORKFLOWS_CONFIG_KEY constant replaces three separate string literals without changing any behavior. Backend URL formatting reuses the existing display_for_host machinery with proper None-propagation for hostless remotes. The Tauri boundary wire form is verified byte-identically on both sides. No existing functionality is altered; all new surface area has unit test coverage.
No files require special attention.
Important Files Changed
Sequence Diagram
%%{init: {'theme': 'neutral'}}%% sequenceDiagram participant UI as workflow_select.rs (UI) participant CMD as commands.rs (wire types) participant BE as commit_data.rs (backend) participant WF as workflow.rs (quilt-rs) UI->>CMD: deserialize CommitWorkflows JSON note over CMD: Available { workflows, config_url }<br/>Invalid { reason, config_url } BE->>WF: fetch_workflows_config_for_bucket() WF-->>BE: WorkflowsConfig BE->>WF: config.schema_uris(workflow_id) note over WF: Reads declared URLs from raw YAML<br/>Each key resolves independently<br/>Errors degrade to None (lenient) WF-->>BE: "WorkflowSchemaUris { metadata_schema, entries_schema }" BE->>BE: catalog_object_url(uri, host) note over BE: Uses S3Uri::display_for_host<br/>None when no catalog host BE->>BE: config_object_url(host, bucket) note over BE: Shared by Available + Invalid<br/>Uses WORKFLOWS_CONFIG_KEY constant BE-->>CMD: "CommitWorkflowInfo { metadata_schema_url, entries_schema_url }<br/>CommitWorkflows::Available { config_url }" CMD-->>UI: deserialized structs UI->>UI: build_workflow_view() note over UI: Threads config_url into WorkflowView<br/>Schema URLs attached per WorkflowOption UI->>UI: links_row (reactive closure) note over UI: Recomputes on selected signal change<br/>catalog_links(config_url, schema_urls[idx]) UI->>UI: catalog_link_view(label, url) note over UI: on:click -> prevent_default<br/>spawn_local -> open_in_web_browser%%{init: {'theme': 'base', 'themeVariables': {"darkMode": true, "background": "#0d1117", "primaryColor": "#21262d", "primaryTextColor": "#e6edf3", "primaryBorderColor": "#8b949e", "lineColor": "#8b949e", "textColor": "#e6edf3", "edgeLabelBackground": "#161b22", "actorBkg": "#21262d", "actorBorder": "#8b949e", "actorTextColor": "#e6edf3", "actorLineColor": "#8b949e", "signalColor": "#8b949e", "signalTextColor": "#e6edf3", "noteBkgColor": "#373320", "noteBorderColor": "#d4a72c", "noteTextColor": "#f0e6c0", "labelBoxBkgColor": "#21262d", "labelBoxBorderColor": "#8b949e", "labelTextColor": "#e6edf3", "loopTextColor": "#e6edf3", "activationBkgColor": "#30363d", "activationBorderColor": "#8b949e"}}}%% sequenceDiagram participant UI as workflow_select.rs (UI) participant CMD as commands.rs (wire types) participant BE as commit_data.rs (backend) participant WF as workflow.rs (quilt-rs) UI->>CMD: deserialize CommitWorkflows JSON note over CMD: Available { workflows, config_url }<br/>Invalid { reason, config_url } BE->>WF: fetch_workflows_config_for_bucket() WF-->>BE: WorkflowsConfig BE->>WF: config.schema_uris(workflow_id) note over WF: Reads declared URLs from raw YAML<br/>Each key resolves independently<br/>Errors degrade to None (lenient) WF-->>BE: "WorkflowSchemaUris { metadata_schema, entries_schema }" BE->>BE: catalog_object_url(uri, host) note over BE: Uses S3Uri::display_for_host<br/>None when no catalog host BE->>BE: config_object_url(host, bucket) note over BE: Shared by Available + Invalid<br/>Uses WORKFLOWS_CONFIG_KEY constant BE-->>CMD: "CommitWorkflowInfo { metadata_schema_url, entries_schema_url }<br/>CommitWorkflows::Available { config_url }" CMD-->>UI: deserialized structs UI->>UI: build_workflow_view() note over UI: Threads config_url into WorkflowView<br/>Schema URLs attached per WorkflowOption UI->>UI: links_row (reactive closure) note over UI: Recomputes on selected signal change<br/>catalog_links(config_url, schema_urls[idx]) UI->>UI: catalog_link_view(label, url) note over UI: on:click -> prevent_default<br/>spawn_local -> open_in_web_browserReviews (2): Last reviewed commit: "Drop the oversized comment on the label ..." | Re-trigger Greptile