Skip to content

External storage payload download button disabled when codec server is configured at namespace level #3419

@jtschulz

Description

@jtschulz

Describe the bug
When a codec server is configured at the namespace level, the download button for externally-stored payloads is permanently disabled. Hovering shows the tooltip "Add a codec server with a /download endpoint to download this payload." even though the codec server is reachable and actively decoding payloads on the same page.

Steps To Reproduce

  1. Configure a codec server at the namespace level. Do not configure it via the per-browser "Configure Codec Server" dialog (top-right of any workflow page). If you've previously configured at the browser level, you'll need to clear the endpoint from local storage as well.
  2. Run a workflow that produces a payload large enough to be offloaded to external storage via the SDK's ExternalStorage feature.
  3. Navigate to that workflow execution in the Cloud UI.
  4. Observe that workflow payloads are decoded correctly (the codec server /decode endpoint is being called successfully), but any payload that was offloaded to external storage shows a disabled download button.

Expected behavior
The download button should be enabled whenever a codec server endpoint is resolvable, whether set at the namespace level or as a browser-level override. The codec server is clearly reachable (it handles /decode for every page load), so the button should not be gated on a separate browser-local store.

Screenshots
Image

Desktop:

  • OS: macOS 15.7.4
  • Browser: Chrome 146
  • Version: (Temporal Cloud UI, current production)

Additional context

The root cause seems to be in src/lib/components/payload/payload-code-block.svelte. The button's disabled and tooltip hide attributes check $codecEndpoint, the browser localStorage store, rather than getCodecEndpoint(page.data.settings), which is the function already used by codeServerRequest in data-encoder.ts for all codec requests. getCodecEndpoint correctly falls back to settings.codec.endpoint when the browser store is empty, but the button check does not.

If desired, I can make a PR for this!

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions