You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
feat(frontend): activity feed on the redesign layout #905
Day groups with avatar, actor, verb, linked object in mono, and time on the right, on a vertical rail.
System events show the product avatar.
Older entries load on scroll or with a button.
Definition of done
The screen matches the design at 1440×900 in dark and light, checked side by side in a real browser; the comparison and any deliberate difference are written on this issue.
Loading skeleton, error with retry, and empty state exist for every block.
FR and EN strings, no hard-coded copy.
npx tsc -b --noEmit, npx vitest run on the touched features, and npx eslint on the touched files pass.
Backend changes, if any, come with TestXxx_Success, TestXxx_NotFound, TestXxx_Unauthorized, filter by tenant_id, and go test ./... passes.
Done — docs/openapi.yaml: GET /timeline and GET /entities/{type}/{id}/timeline, shared parameters (cursor, limit, kind, actor_id, since, until, domain), TimelinePage / TimelineEvent / TimelineActor / TimelineChange schemas; TS types regenerated. Commit a9ec243 on this PR. Verified — YAML parses, both paths present; Redocly lint: identical 60 errors / 28 warnings before and after, none on these paths. Next — nothing on this issue; PR #933 awaits review. Blocked on — nothing.
Activity
alex-dembele commentedon Oct 9, 2026
activity journal redesign — 2026-10-09
Done — PR #933 on
feat/905-activity, stacked on #932. Backend:application/entity/journal.go(domain, object, visibility per page permission, twin merge keeping the actor),?domain=on/timeline,NamesByIDsinrepository/gorm_user_repository.go, fix inrepository/gorm_audit_chain_repository.go(EntityTypes ignored). Frontend:features/activity/ActivityPage.tsx,journal.ts, route/activity, fr/enactivity.*, dashboard card reuses the sentence;GlobalTimelinePageremoved.Verified —
go test ./...all ok ·npx tsc -b --noEmitclean · eslint clean on touched files ·npx vitest run1041/1041 · live on Postgres at 1440×900 dark and light: domain filter, load more 30→60, drawer opens in place, incidents attributed to their creator.Criteria — 1 ✅ (subtitle gender-neutral) · 2 ✅ · 3 ✅ (object = name; references don't exist yet) · 4 ✅ · 5 ✅ (scroll + button)
Next — merge #925 → #926 → #927 → #928 → #932 → #933. Then #906 assets.
Blocked on — nothing. Owner note: mitigations/reports/frameworks events now visible to holders of their page permission (was audit permission only).
docs(api): document the timeline endpoints (#905)
alex-dembele commentedon Oct 9, 2026
timeline documented — 2026-10-09
Done —
docs/openapi.yaml:GET /timelineandGET /entities/{type}/{id}/timeline, shared parameters (cursor, limit, kind, actor_id, since, until, domain),TimelinePage/TimelineEvent/TimelineActor/TimelineChangeschemas; TS types regenerated. Commit a9ec243 on this PR.Verified — YAML parses, both paths present; Redocly lint: identical 60 errors / 28 warnings before and after, none on these paths.
Next — nothing on this issue; PR #933 awaits review.
Blocked on — nothing.
Merge pull request #933 from opendefender/feat/905-activity