Skip to content

Dashboard: Give the issue, pull request, milestone and notification pages GitHub's list layout - #82

Merged
whereareiam merged 1 commit into
devfrom
feature/dashboard-lists
Oct 4, 2026
Merged

whereareiam merged 1 commit into
devfrom
feature/dashboard-lists

Conversation

@whereareiam

Copy link
Copy Markdown
Owner

What

/issues, /pulls, /milestones and /notifications (and their organization-dashboard variants) were stock Forgejo. They now follow GitHub's /issues and /notifications pages, viewed signed in:

GitHub Before After
Layout left sidebar with the views, content beside it filter dropdowns in a bar, no sidebar sidebar with the views and their counts
Heading name of the current view, 20px / 600 none name of the current view, 20px / 600
Search full-width field under the heading inside the filter bar full-width field under the heading
List bordered box, Open / Closed with counters, sort at the right toggle buttons with icons same bar as the repository issue list
Context switcher none bar across the page top of the sidebar
Notifications Inbox / Done in the sidebar, compact two-line rows Unread / Read toggle, icon-only "mark all" button Unread (with count) / Read / Subscriptions in the sidebar, labelled "Mark all as read", compact rows

How

  • templates/user/dashboard/issues.tmpl (serves issues and pull requests) and milestones.tmpl use the repository issue list's classes (repository issue-list, github-issues / github-pull-list), so they share its existing styles and add nothing to the theme files. The view filter (in your repositories, assigned, created, mentioning, review requested, reviewed) becomes sidebar links; project, label and sort stay as dropdowns. All labels come from Forgejo's translations.
  • templates/user/notification/notification_div.tmpl keeps Forgejo's element ids, classes and forms, which its script relies on.
  • styles/pages/dashboard-lists.css (new page stylesheet, linked from component_assets.tmpl): the context switcher in the sidebar, counters at the right, the milestone list box and the notification rows.
  • components/common/sidebar/sidebar.js: a sidebar inserted after load is set up too, since Forgejo replaces the notifications page element after an action.
  • public/assets/js/issue-list.js: keeps the milestone search placeholder instead of overwriting it with the issue one.

Not matched

  • GitHub's /pulls is now a grouped "Inbox" (needs your review, drafts, waiting, ready to merge). Forgejo has a flat list with a view filter, so pull requests use the same list as issues.
  • GitHub has no account-level milestones page; ours follows the issue list.
  • GitHub's notification row shows the reason and participant avatars and has checkboxes with bulk actions; Forgejo provides none of these.

Verification

Checked in the preview: all four pages, the organization variants of issues, pull requests and milestones, the closed and read views, and marking a notification as read (the count drops and the sidebar keeps working). bun vitest (403 passed), bun check and Prettier pass. Theme file size is unchanged. Screenshots are not attached.

🤖 Generated with Claude Code

…ages GitHub's list layout

/issues, /pulls, /milestones and /notifications were stock Forgejo. They
now use the layout the repository issue list already has, measured
against GitHub's own /issues and /notifications pages: a sidebar with
the views and their counts, a heading, the search field, and a bordered
list under an Open/Closed bar.

- Issues, pull requests and milestones reuse the repository list's
  classes, so they share its styles and add nothing to the theme files.
  The dashboard context switcher moves from a bar across the page to the
  top of the sidebar; the same templates serve organization dashboards.
- Notifications get a sidebar (Unread with its count, Read,
  Subscriptions), a heading with "Mark all as read", and compact rows
  where read notifications recede.
- The few page-specific rules live in a new page stylesheet instead of
  the theme files, which are at their size limit.
- The sidebar script also sets up a sidebar that is inserted later,
  because Forgejo replaces the notifications page element after an
  action.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@whereareiam whereareiam added the feature New user-facing capabilities or themes label Oct 4, 2026
@whereareiam
whereareiam merged commit f5a63f3 into dev Oct 4, 2026
8 of 9 checks passed
@whereareiam
whereareiam deleted the feature/dashboard-lists branch October 4, 2026 15:42
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

feature New user-facing capabilities or themes

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant