refactor(ui): rebuild activity UI on @datum-cloud/datum-ui#194
Merged
mattdjenkinson merged 1 commit intomainfrom May 1, 2026
Merged
refactor(ui): rebuild activity UI on @datum-cloud/datum-ui#194mattdjenkinson merged 1 commit intomainfrom
mattdjenkinson merged 1 commit intomainfrom
Conversation
Rebuild the activity UI to consume @datum-cloud/datum-ui as a peer dependency, replacing local shadcn primitives with the shared design system and converting the activity feed/events/audit views into table + timeline layouts with manual pagination. Key changes: - Promote @datum-cloud/datum-ui to peer dep; remove local copies of primitives in favor of datum-ui exports - Convert ActivityFeed, EventsFeed, AuditLogQueryComponent to table/timeline views with manual "Load more" pagination - Add Timestamp component using Intl.DateTimeFormat for timezone-aware rendering with single tooltip - Add details panel primitives in components/details.tsx and apply to expanded views (activity, audit, event) - Add tooltip shim that renders Radix Tooltip directly with mirrored datum-ui styles to keep truncation working - Mirror DisplayName/Email enrichment fields on Actor and ActivityLink TS types so the UI can render display names + email/UID hover when the backend populates them - Normalize toolbar styling, filter chip layout, and details-panel padding across feeds; remove "unsaved changes" badge - Drop tailwind/postcss configs and unused local UI components; externalize peers in rollup config - Update Dockerfile to drop postcss/tailwind copies
kevwilliams
approved these changes
May 1, 2026
3 tasks
scotwells
added a commit
that referenced
this pull request
May 4, 2026
The activity-ui example app (served as the activity-ui pod) is crashing in staging with CrashLoopBackOff (272+ restarts) because the Docker image is missing the @datum-cloud/datum-ui package at runtime: Error: Cannot find package '@datum-cloud/datum-ui' imported from /app/build/server/index.js The Dockerfile uses `pnpm deploy --filter activity-ui-example --prod` which only copies `dependencies` into the production image. When PR #194 promoted @datum-cloud/datum-ui to a peer dependency of the activity-ui library, it was never added to the example app's own `dependencies`, so pnpm deploy excluded it from the container. Fix: add @datum-cloud/datum-ui ^0.8.0 to dependencies in ui/example/package.json so it is included in the production image build.
scotwells
added a commit
that referenced
this pull request
May 4, 2026
## Problem The `activity-ui` pod in staging is in CrashLoopBackOff (272+ restarts) with the following error: ``` Error: Cannot find package '@datum-cloud/datum-ui' imported from /app/build/server/index.js ``` ## Root Cause PR #194 promoted `@datum-cloud/datum-ui` to a **peer dependency** of the `@datum-cloud/activity-ui` library (`ui/package.json`) — which is correct for the published package. However, the example app (`ui/example/package.json`) was never updated to include `@datum-cloud/datum-ui` in its own `dependencies`. The Dockerfile builds the image using `pnpm deploy --filter activity-ui-example --prod`, which only copies `dependencies` (not `devDependencies` or peer dependencies of workspace siblings) into the production image at `/deploy/node_modules`. As a result, `@datum-cloud/datum-ui` is absent from the container, and the Remix server bundle can't resolve it at runtime. ## Fix Add `@datum-cloud/datum-ui: ^0.8.0` to `dependencies` in `ui/example/package.json`. This ensures `pnpm deploy --prod` includes the package in the production image. ## Test Plan - [ ] Verify Docker image builds successfully with the fix - [ ] Confirm the `activity-ui` pod starts without the `Cannot find package` error in staging - [ ] Verify activity UI renders correctly end-to-end
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
Rebuilds the activity UI to consume
@datum-cloud/datum-uias a peer dependency and converts the activity feed, events, and audit views to table + timeline layouts with manual pagination. This is the UI half of the work previously bundled in #192; the matching backend display-name enrichment ships in #193.What changes
Design system migration
@datum-cloud/datum-uito a peer dependencyrollup.config.mjsDockerfileto drop postcss/tailwind copiesLayout refactor
ActivityFeed,EventsFeed,AuditLogQueryComponentto table/timeline viewsTimestampcomponent usingIntl.DateTimeFormatfor timezone-aware rendering with a single tooltipcomponents/details.tsx; apply across activity/audit/event expanded viewsDisplay name support
displayName/email(both optional) onActorandActivityLinkTS typesactor.displayName ?? actor.namewith email/UID hover; user-typed link markers swap indisplayNameas visible textTooltip / truncation notes
datum-ui's Tooltip wraps the trigger in a
relative inline-flexspan which broke parent flex truncation. To keep datum-ui's visual styling, the local Tooltip inui/tooltip.tsxre-implements Radix Tooltip directly with the same class tokens — same look, no flex-chain breakage.