Skip to content

feat(web): render GitHub assignees on stories - #161

Open
Nxssie wants to merge 2 commits into
theam:mainfrom
Nxssie:feat/story-assignees
Open

feat(web): render GitHub assignees on stories#161
Nxssie wants to merge 2 commits into
theam:mainfrom
Nxssie:feat/story-assignees

Conversation

@Nxssie

@Nxssie Nxssie commented Aug 15, 2026

Copy link
Copy Markdown

Summary

Closes #101.

Facility already mirrors gh_issues.assignees end to end — webhook sync,
services/api/src/pipeline.ts, and both PipelineStorySchema.assignees and
StoryDetailSchema.assignees — but apps/web never read the field, so
ownership was invisible without opening GitHub.

  • Render @login assignee chips on the story row (IssueRow) and the story
    detail header, in the existing label/timestamp grammar. Several assignees
    collapse to the first plus +N; unassigned renders nothing (Backlog's
    common case), not a placeholder.
  • Add AssigneeChip: GitHub avatar (github.com/{login}.png, no new sync
    column needed) with an initial-letter fallback for deployments where the
    browser can't reach github.com.
  • Add a "mine" filter on the Stories board, next to the stage chips, matching
    against the signed-in user's githubLogin (from Show the signed-in GitHub user, and assign them on the issue and the PR #70).

Test plan

  • bunx tsc --noEmit — clean
  • bunx vitest run (apps/web, full suite) — 67/67 passing, including new
    coverage in pipeline-story.test.ts for the unassigned, +N, and
    avatar/fallback cases
  • bunx biome check on touched files — clean
  • Manual check in a browser (not run in this environment)

Nxssie added 2 commits August 15, 2026 09:30
Facility already mirrors gh_issues.assignees end to end and ships it
on both the pipeline and story-detail responses, but apps/web never
read the field, so ownership was invisible without opening GitHub.

- show @login chips (first + N) on the story row and story header,
  with a GitHub avatar that falls back to an initial when the browser
  can't reach github.com
- add a "mine" filter on the Stories board matching the signed-in
  user's githubLogin
"mine" filters by assignee, an axis independent from stage — grouping
it inline with the single-select stage tabs read as if it belonged to
the same selection. Move it to the end of the row, set off with a
vertical divider, so it reads as its own filter.
@Nxssie

Nxssie commented Aug 15, 2026

Copy link
Copy Markdown
Author

Pushed a follow-up commit (a98dd21) after manually walking through this on a local instance:

  • The mine filter was originally placed inline between "all" and the stage tabs. Visually that read as if it were part of the same single-select group ("all", "Shipped", "In review", ...), when it's actually an independent axis (assignee, not stage) — the two can be active at once (e.g. "all stages, only mine").
  • Moved it to the end of the filter row, set off with a vertical divider, so it reads as its own filter rather than a peer of the stage tabs.

No behavior change to the filtering logic itself, just the grouping/placement.

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.

Show who owns a story — render the assignees Facility already mirrors

1 participant