Skip to content

feat(frontend): activity feed on the redesign layout #905

Closed

Description

@alex-dembele

Problem

The activity page is the organisation's journal, filtered by what the user may see.

Design: https://claude.ai/artifact/HLqrbeYqvv4a6RVnBz9Vei (screen "activity"). Parent: #899. The rules in the epic apply.

Acceptance criteria

  1. Title and subtitle as in the design.
  2. Kind filter pills (Tout, Risques, Incidents, Vulnérabilités, Mitigations, Preuves, Conformité, Rapports).
  3. Day groups with avatar, actor, verb, linked object in mono, and time on the right, on a vertical rail.
  4. System events show the product avatar.
  5. 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.
  • PR opened with Closes #<this issue>; parent epic epic(frontend): rebuild every console screen on the October 2026 redesign #899.

Activity

  1. added
    type:featureNew user-facing capability
    status:readyMeets the ready definition
    tier:4-uxUX: polish on top of a working engine
    and removed
    status:readyMeets the ready definition
    on Oct 8, 2026
  2. alex-dembele commented on Oct 9, 2026

    @alex-dembele
    MemberAuthor

    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, NamesByIDs in repository/gorm_user_repository.go, fix in repository/gorm_audit_chain_repository.go (EntityTypes ignored). Frontend: features/activity/ActivityPage.tsx, journal.ts, route /activity, fr/en activity.*, dashboard card reuses the sentence; GlobalTimelinePage removed.
    Verified — go test ./... all ok · npx tsc -b --noEmit clean · eslint clean on touched files · npx vitest run 1041/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).

  3. alex-dembele commented on Oct 9, 2026

    @alex-dembele
    MemberAuthor

    timeline documented — 2026-10-09

    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.

  4. added a commit that references this issue on Oct 12, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions