Skip to content

News Feed#3596

Merged
Alex-Tideman merged 8 commits into
mainfrom
news-feed
Jul 2, 2026
Merged

News Feed#3596
Alex-Tideman merged 8 commits into
mainfrom
news-feed

Conversation

@Alex-Tideman

@Alex-Tideman Alex-Tideman commented Jun 24, 2026

Copy link
Copy Markdown
Collaborator

Description & motivation 💭

Adds a general Temporal News feed to the OSS UI, available from desktop top navigation and mobile/bottom navigation when news fetching is enabled. Provides the latest news on releases, events and other important topics related to Temporal.

What Changed

  • Added a NewsFeedWidget trigger with unread/read megaphone icons.

  • Added a NewsFeedModal that displays feed items with markdown-rendered content, refresh controls, last-fetched timestamp, loading/empty/error states, and an “Automatically fetch news” preference.

  • Added persistent News Feed state:

    • cached feed payload
    • generated client UUID
    • last fetched timestamp
    • last seen server timestamp for unread detection
    • auto-fetch preference
  • Added a 24-hour automatic refresh interval, plus manual refresh with cache reload.

  • Added typed feed parsing and validation for server_time, item IDs, priority, tags, publish dates, and expiration dates.

  • Filters expired items and sorts visible items by priority, then newest publish time.

  • Fetches from https://newsfeed.temporal.io/feed_en.json with client, cluster, and source=web-ui query params and credentials: 'omit'.

  • Adds server/UI config gating via disableNewsFetch.

    • Docker env: TEMPORAL_DISABLE_NEWS_FETCH
    • Included in development and auth configs.
    • Mapped through /api/v1/settings and UI Settings.
  • Hides the News Feed in Cloud UI and when disableNewsFetch is true.

  • Added dark-mode support for markdown previews, including explicit theme passing from nav contexts.

  • Improved markdown iframe height handling so theme changes and hidden modal rendering do not inflate preview height.

  • Added new megaphone and megaphone-unread Holocene icons.

  • Added i18n strings for News Feed labels, empty/loading text, unread trigger labels, and last-fetched copy.

  • Updated the markdown render route CSP construction without changing the effective sandbox policy.

Screenshots (if applicable) 📸

Screenshot 2026-07-02 at 9 19 32 AM Screenshot 2026-07-02 at 9 27 45 AM

Design Considerations 🎨

Testing 🧪

How was this tested 👻

  • Manual testing
  • E2E tests added
  • Unit tests added

Steps for others to test: 🚶🏽‍♂️🚶🏽‍♀️

Checklists

Draft Checklist

Merge Checklist

Issue(s) closed

Docs

Any docs updates needed?

@vercel

vercel Bot commented Jun 24, 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 2, 2026 2:31pm

Request Review

@temporal-cicd

temporal-cicd Bot commented Jun 24, 2026

Copy link
Copy Markdown
Contributor
Warnings
⚠️

📊 Strict Mode: 3 errors in 2 files (0.3% of 888 total)

src/lib/services/settings-service.ts (1)
  • L76:2: Type '{ auth: { enabled: boolean; options: string[] | null; redirectToProvider: boolean; }; baseUrl: string | null; codec: { endpoint: string; passAccessToken: boolean | undefined; includeCredentials: boolean | undefined; customErrorMessage: { ...; }; }; ... 18 more ...; version: string; }' is not assignable to type 'Settings'.
src/routes/(app)/+layout.svelte (2)
  • L88:21: 'namespace.namespaceInfo' is possibly 'null' or 'undefined'.
  • L91:6: Argument of type 'ICapabilities | null | undefined' is not assignable to parameter of type 'NamespaceCapabilities | undefined'.

Generated by 🚫 dangerJS against 2c43b10

@Alex-Tideman
Alex-Tideman marked this pull request as ready for review July 2, 2026 14:31
@Alex-Tideman
Alex-Tideman requested a review from a team as a code owner July 2, 2026 14:31
@Alex-Tideman Alex-Tideman changed the title News Feed - WIP News Feed Jul 2, 2026
@Alex-Tideman
Alex-Tideman requested a review from rossedfort July 2, 2026 14:43
@Alex-Tideman
Alex-Tideman merged commit 5c1854d into main Jul 2, 2026
25 checks passed
@Alex-Tideman
Alex-Tideman deleted the news-feed branch July 2, 2026 15:32
temporal-cicd Bot pushed a commit that referenced this pull request Jul 2, 2026
Auto-generated version bump from 2.51.1 to 2.52.0

Bump type: minor

Changes included:
- [`9c6fcd54`](9c6fcd5) Add direct SSO redirect and backend logout (#3590)
- [`feab0d90`](feab0d9) a11y(4.1.3): Toaster role="log" → per-toast role="status"/"alert" for correct AT announcement semantics (#3560)
- [`d7bbfb01`](d7bbfb0) a11y(2.5.8): toast — replace bare close button with IconButton (36×36 px) (#3553)
- [`4efd6ab6`](4efd6ab) a11y(3.3.1): Holocene input primitives — add aria-invalid, aria-describedby, and uniform live-region error announcement (#3554)
- [`0600b700`](0600b70) Use green only (#3599)
- [`94107549`](9410754) Clarify activity pause timeout behavior (#3600)
- [`9f88d5a8`](9f88d5a) Bump node version to 22.23.1 or newer to fix issue from previous security release (#3604)
- [`ca4104ae`](ca4104a) Update reason copy and inputs (#3588)
- [`51db73fa`](51db73f) Update batch operation reason input hint (#3605)
- [`836d7c55`](836d7c5) a11y(2.4.3): route navigation — move focus to the main landmark on afterNavigate, not just scroll (#3538)
- [`4ee95696`](4ee9569) Improve re-renders for large encoded event histories (#3592)
- [`fa5e7aa1`](fa5e7aa) feature/schedules (#3603)
- [`0d9467fd`](0d9467f) Default includeHeartbeatDetails and includeLastFailure to true for getActivityExecution and pollActivityExecution (#3521)
- [`e5bc514e`](e5bc514) fix schedules: duplicate key (#3612)
- [`f1eb489f`](f1eb489) Remove preview badge (#3581)
- [`1e5173b4`](1e5173b) Add existing versions to worker create deployment version form (#3601)
- [`a8552bae`](a8552ba) fix schedules -e.trim not a function (#3613)
- [`0442f847`](0442f84) Fix width of ComputeBadge in VersionTableRow (#3615)
- [`ddbeb54f`](ddbeb54) fix(cloud-nav): animate and stabilize side-nav collapse (#3606)
- [`3cfc684b`](3cfc684) fix - schedules recent/upcoming runs - sort issue (#3616)
- [`92b8875b`](92b8875) Move timestamp out of translate (#3617)
- [`901258af`](901258a) Fix SAA and WF consistency (#3614)
- [`99593d97`](99593d9) DT-4001 - standalone nexus operations (#3496)
- [`f10d1bf1`](f10d1bf) Clamp codeblock to container width (#3621)
- [`0a9d93ce`](0a9d93c) Remove unnecessary bottom-0 (#3623)
- [`9dabb522`](9dabb52) chore(deps-dev): bump vite from 6.4.2 to 6.4.3 (#3610)
- [`5c1854d3`](5c1854d) News Feed (#3596)
temporal-cicd Bot pushed a commit that referenced this pull request Jul 8, 2026
Auto-generated version bump from 2.51.1 to 2.52.0

Bump type: minor

Changes included:
- [`9c6fcd54`](9c6fcd5) Add direct SSO redirect and backend logout (#3590)
- [`feab0d90`](feab0d9) a11y(4.1.3): Toaster role="log" → per-toast role="status"/"alert" for correct AT announcement semantics (#3560)
- [`d7bbfb01`](d7bbfb0) a11y(2.5.8): toast — replace bare close button with IconButton (36×36 px) (#3553)
- [`4efd6ab6`](4efd6ab) a11y(3.3.1): Holocene input primitives — add aria-invalid, aria-describedby, and uniform live-region error announcement (#3554)
- [`0600b700`](0600b70) Use green only (#3599)
- [`94107549`](9410754) Clarify activity pause timeout behavior (#3600)
- [`9f88d5a8`](9f88d5a) Bump node version to 22.23.1 or newer to fix issue from previous security release (#3604)
- [`ca4104ae`](ca4104a) Update reason copy and inputs (#3588)
- [`51db73fa`](51db73f) Update batch operation reason input hint (#3605)
- [`836d7c55`](836d7c5) a11y(2.4.3): route navigation — move focus to the main landmark on afterNavigate, not just scroll (#3538)
- [`4ee95696`](4ee9569) Improve re-renders for large encoded event histories (#3592)
- [`fa5e7aa1`](fa5e7aa) feature/schedules (#3603)
- [`0d9467fd`](0d9467f) Default includeHeartbeatDetails and includeLastFailure to true for getActivityExecution and pollActivityExecution (#3521)
- [`e5bc514e`](e5bc514) fix schedules: duplicate key (#3612)
- [`f1eb489f`](f1eb489) Remove preview badge (#3581)
- [`1e5173b4`](1e5173b) Add existing versions to worker create deployment version form (#3601)
- [`a8552bae`](a8552ba) fix schedules -e.trim not a function (#3613)
- [`0442f847`](0442f84) Fix width of ComputeBadge in VersionTableRow (#3615)
- [`ddbeb54f`](ddbeb54) fix(cloud-nav): animate and stabilize side-nav collapse (#3606)
- [`3cfc684b`](3cfc684) fix - schedules recent/upcoming runs - sort issue (#3616)
- [`92b8875b`](92b8875) Move timestamp out of translate (#3617)
- [`901258af`](901258a) Fix SAA and WF consistency (#3614)
- [`99593d97`](99593d9) DT-4001 - standalone nexus operations (#3496)
- [`f10d1bf1`](f10d1bf) Clamp codeblock to container width (#3621)
- [`0a9d93ce`](0a9d93c) Remove unnecessary bottom-0 (#3623)
- [`9dabb522`](9dabb52) chore(deps-dev): bump vite from 6.4.2 to 6.4.3 (#3610)
- [`5c1854d3`](5c1854d) News Feed (#3596)
- [`340da30f`](340da30) a11y(2.1.1): guard global r/R keydown so text inputs can receive the letter (#3589)
- [`dd97a9d1`](dd97a9d) fix(markdown-editor): disable chromatic snapshot for preview story (#3631)
- [`7db61ab9`](7db61ab) a11y(4.1.2): Table / ProgressBar / Loading primitives — expose aria-busy on data-refresh regions (#3555)
- [`d2111ecf`](d2111ec) a11y(4.1.3): Add live-region wrappers for workflow status, event count, filter counts, and Banner (#3561)
- [`24eabaec`](24eabae) a11y(2.4.6): guard DrawerContent against empty <h2> when title is omitted (#3595)
- [`3552e307`](3552e30) Fix CodeMirror Lezer dependency mismatch (#3632)
- [`7ac37199`](7ac3719) Update defaults to match workflow defaults (#3634)
- [`c1f02865`](c1f0286) Draft fix for link variant handling (#3620)
- [`bbbf2b8c`](bbbf2b8) Add connection status and optional Latest Version column to deployments (DT-4174) (#3618)
- [`76f266f4`](76f266f) DurationInput updates (#3633)
- [`07da53c5`](07da53c) COM-191 - prefill CloudFormation template params in Launch Stack link (#3619)
- [`90946e0b`](90946e0) Schedules - Timeout empty defaults (#3637)
- [`97f9ad39`](97f9ad3) fix(cloud-nav): smooth label fade on side-nav collapse/expand (#3628)
- [`a399ed35`](a399ed3) Improve Search Attribute deletion messaging (#3629)
- [`ad976d94`](ad976d9) Pass through source prop for News Feed Widget (#3638)
- [`6ef84fe3`](6ef84fe) Restrict select-all to exclude workflow status (#3639)
- [`4c3729f8`](4c3729f) Reduce news feed markdown whitespace (#3642)
- [`aa04a9b6`](aa04a9b) feat(nexus-operations): add loading state to standalone nexus operations list page header (#3643)
- [`dce2f804`](dce2f80) chore: remove unused generate-holocene-props script (#3644)
- [`760bc7bc`](760bc7b) Make megaphone icon bigger (#3645)
- [`c047384a`](c047384) refactor(nexus): replace hand-rolled types with @temporalio/proto (#3646)
rossedfort added a commit that referenced this pull request Jul 8, 2026
Auto-generated version bump from 2.51.1 to 2.52.0

Bump type: minor

Changes included:
- [`9c6fcd54`](9c6fcd5) Add direct SSO redirect and backend logout (#3590)
- [`feab0d90`](feab0d9) a11y(4.1.3): Toaster role="log" → per-toast role="status"/"alert" for correct AT announcement semantics (#3560)
- [`d7bbfb01`](d7bbfb0) a11y(2.5.8): toast — replace bare close button with IconButton (36×36 px) (#3553)
- [`4efd6ab6`](4efd6ab) a11y(3.3.1): Holocene input primitives — add aria-invalid, aria-describedby, and uniform live-region error announcement (#3554)
- [`0600b700`](0600b70) Use green only (#3599)
- [`94107549`](9410754) Clarify activity pause timeout behavior (#3600)
- [`9f88d5a8`](9f88d5a) Bump node version to 22.23.1 or newer to fix issue from previous security release (#3604)
- [`ca4104ae`](ca4104a) Update reason copy and inputs (#3588)
- [`51db73fa`](51db73f) Update batch operation reason input hint (#3605)
- [`836d7c55`](836d7c5) a11y(2.4.3): route navigation — move focus to the main landmark on afterNavigate, not just scroll (#3538)
- [`4ee95696`](4ee9569) Improve re-renders for large encoded event histories (#3592)
- [`fa5e7aa1`](fa5e7aa) feature/schedules (#3603)
- [`0d9467fd`](0d9467f) Default includeHeartbeatDetails and includeLastFailure to true for getActivityExecution and pollActivityExecution (#3521)
- [`e5bc514e`](e5bc514) fix schedules: duplicate key (#3612)
- [`f1eb489f`](f1eb489) Remove preview badge (#3581)
- [`1e5173b4`](1e5173b) Add existing versions to worker create deployment version form (#3601)
- [`a8552bae`](a8552ba) fix schedules -e.trim not a function (#3613)
- [`0442f847`](0442f84) Fix width of ComputeBadge in VersionTableRow (#3615)
- [`ddbeb54f`](ddbeb54) fix(cloud-nav): animate and stabilize side-nav collapse (#3606)
- [`3cfc684b`](3cfc684) fix - schedules recent/upcoming runs - sort issue (#3616)
- [`92b8875b`](92b8875) Move timestamp out of translate (#3617)
- [`901258af`](901258a) Fix SAA and WF consistency (#3614)
- [`99593d97`](99593d9) DT-4001 - standalone nexus operations (#3496)
- [`f10d1bf1`](f10d1bf) Clamp codeblock to container width (#3621)
- [`0a9d93ce`](0a9d93c) Remove unnecessary bottom-0 (#3623)
- [`9dabb522`](9dabb52) chore(deps-dev): bump vite from 6.4.2 to 6.4.3 (#3610)
- [`5c1854d3`](5c1854d) News Feed (#3596)
- [`340da30f`](340da30) a11y(2.1.1): guard global r/R keydown so text inputs can receive the letter (#3589)
- [`dd97a9d1`](dd97a9d) fix(markdown-editor): disable chromatic snapshot for preview story (#3631)
- [`7db61ab9`](7db61ab) a11y(4.1.2): Table / ProgressBar / Loading primitives — expose aria-busy on data-refresh regions (#3555)
- [`d2111ecf`](d2111ec) a11y(4.1.3): Add live-region wrappers for workflow status, event count, filter counts, and Banner (#3561)
- [`24eabaec`](24eabae) a11y(2.4.6): guard DrawerContent against empty <h2> when title is omitted (#3595)
- [`3552e307`](3552e30) Fix CodeMirror Lezer dependency mismatch (#3632)
- [`7ac37199`](7ac3719) Update defaults to match workflow defaults (#3634)
- [`c1f02865`](c1f0286) Draft fix for link variant handling (#3620)
- [`bbbf2b8c`](bbbf2b8) Add connection status and optional Latest Version column to deployments (DT-4174) (#3618)
- [`76f266f4`](76f266f) DurationInput updates (#3633)
- [`07da53c5`](07da53c) COM-191 - prefill CloudFormation template params in Launch Stack link (#3619)
- [`90946e0b`](90946e0) Schedules - Timeout empty defaults (#3637)
- [`97f9ad39`](97f9ad3) fix(cloud-nav): smooth label fade on side-nav collapse/expand (#3628)
- [`a399ed35`](a399ed3) Improve Search Attribute deletion messaging (#3629)
- [`ad976d94`](ad976d9) Pass through source prop for News Feed Widget (#3638)
- [`6ef84fe3`](6ef84fe) Restrict select-all to exclude workflow status (#3639)
- [`4c3729f8`](4c3729f) Reduce news feed markdown whitespace (#3642)
- [`aa04a9b6`](aa04a9b) feat(nexus-operations): add loading state to standalone nexus operations list page header (#3643)
- [`dce2f804`](dce2f80) chore: remove unused generate-holocene-props script (#3644)
- [`760bc7bc`](760bc7b) Make megaphone icon bigger (#3645)
- [`c047384a`](c047384) refactor(nexus): replace hand-rolled types with @temporalio/proto (#3646)

Co-authored-by: rossedfort <[email protected]>
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