Skip to content

fix(deps): post-deploy dependency tab fixes#107

Merged
wgordon17 merged 34 commits into
gordon-code:mainfrom
wgordon17:feat/dependencies-tab
May 6, 2026
Merged

fix(deps): post-deploy dependency tab fixes#107
wgordon17 merged 34 commits into
gordon-code:mainfrom
wgordon17:feat/dependencies-tab

Conversation

@wgordon17
Copy link
Copy Markdown
Member

Summary

  • Fixes Invalid userLogin toast caused by pre-migration [bot] suffix doubling
  • Strips Python version specifiers (==, >=) from parsed dependency versions
  • Uses fixed-width repo badge column for consistent alignment in both view modes
  • Removes sort dropdown from Dependencies tab, forces repo+category sort

wgordon17 added 30 commits May 5, 2026 16:50
- Rename statuses: needs-review→Mergeable, waiting→Needs Action (gordon-code#9)
- Add Pending Rebase status group with first-priority classification (gordon-code#14)
- Remove duplicate All entries from filter popovers (gordon-code#1)
- Restyle status group headers to match RepoGroupHeader patterns (gordon-code#2)
- Add ExpandCollapseButtons for status groups (gordon-code#3)
- Add StatusDot, SizeBadge, ReviewBadge to PR rows (gordon-code#4)
- Persist expand state in viewState.dependencyExpandedGroups (gordon-code#5)
- Structured title display with package name and version arrow (gordon-code#6)
- Wire viewState.globalSort into classifiedPRs with repo tiebreaker (gordon-code#7)
- Remove count badges from status group headers (gordon-code#10)
- Unknown bot detection with one-time info notification (gordon-code#12)
- Filter out dep-tool labels (dependencies, renovate) from PR rows (gordon-code#13)
- Excludes authenticated user from unknown bot flagging
- Handles dependabot vs dependabot[bot] via base-name matching
- Replaces pushNotification with inline banner + Track/Dismiss buttons
- Passes userLogin prop from DashboardPage to DependenciesTab
- Adds repo-header-text class to status group headers for consistent color
- Moves version info into title string (package: from → to) for visibility
- Adds Python requirement pattern (>=A to >=B) to extractVersionInfo
- Default sort clusters by repo first, then updatedAt within each repo
expandBotLogins() generates both variants — tracking 'khepri-bot'
now matches PRs from 'khepri-bot[bot]' and vice versa. Applied in
both DashboardPage (isDependencyPr) and DependenciesTab (unknown
bot banner).
onRefresh callback fires manualRefresh via the poll coordinator
so newly tracked bot PRs appear immediately.
- Add parseRenovateBody to parse update type from Renovate PR body table
- Fetch PR bodies on demand for dep PRs where title yields no updateType
- Merge body-derived version info (packageName, from, to, updateType) into
  classifiedPRs for richer display titles and accurate category badges
- Expand VersionInfo.updateType to include pin and digest
- Add needsBodyFallback helper to identify PRs needing body fetch
- Add fetchDepPRBodies GraphQL query in api.ts (nodes batch pattern)
- Ignored dep PRs now stay visible on Dependencies tab (exclusive
  ownership still prevents them from appearing on Pull Requests tab)
- Change empty filter message to 'No dependency PRs match your current
  filters'
- Prefer body-derived versions over imprecise title versions (body has
  full semver, title may only have tag like v9)
- Show category badge for all types including pin and maintenance
  (previously only shown when versionInfo.updateType was set)
- Wire IgnoreBadge into Dependencies tab toolbar for unignoring dep PRs
- Exclude dep PR IDs from Pull Requests tab IgnoreBadge via depPrIds prop
- Restore ignored item filtering in Dependencies tab classifiedPRs
carryOverBodies merges body from existing PR objects into fresh API
data during both produce-path and full-replacement-path store updates.
Bodies no longer flash away on each 5-minute poll cycle.
Category priority (maintenance→major→other) is now the primary sort
axis regardless of the user-selected globalSort. The dropdown sort
(repo, title, etc.) serves as secondary within each category group.
dependencyPullRequests() returns filtered plain objects that lose
SolidJS store proxy tracking. Mutations via produce() to pr.body
never triggered classifiedPRs recomputation. Replaced with a
separate depBodies signal (Map<id, body>) passed as a prop —
reads in classifiedPRs now trigger reactivity correctly.
Replaces ephemeral depBodies signal (raw body strings) with depMeta
signal (parsed VersionInfo objects) backed by localStorage. Bodies are
parsed immediately on fetch via parseRenovateBody and the result is
cached, eliminating classification jank on page refresh. Stale entries
are pruned against the current dependency PR set.
- Remove dead STATUS_META fields (badgeClass, defaultExpanded)
- Collapse duplicated label-scanning loops in depCategory
- Remove redundant /i regex flags on lowercased strings
- Replace badge class ternary with CATEGORY_BADGE_CLASS lookup
- Pass trackedBotLogins as prop instead of duplicate memo
- Exclude all tracked user logins from unknownBots banner
- Remove dead pr.body guard from needsBodyFallback
- Remove unused updateDependencyConfig export
- Restore hideDepDashboard toggle when dep tab is disabled
- Fix tabCounts badge/content mismatch for hidden dep dashboard issues
- Fix stale E2E comment referencing nonexistent 'Waiting' status
- Add fetchDepPRBodies unit tests (10 tests)
- Add approved+stale classifyDepStatus test
- Add hideDepDashboard filter tests (4 tests)
- Includes offending login in Invalid userLogin error message
- Strips Python version specifiers (==, >=, ~=) from parsed versions
- Constrains repo badge width to prevent layout overflow on long names
- Removes sort dropdown from Dependencies tab, uses fixed repo+category sort
Pre-migration data stores logins like 'khepri-bot[bot]'. The bot
variant search appends [bot] again, creating 'khepri-bot[bot][bot]'
which fails VALID_TRACKED_LOGIN and surfaces as an Invalid userLogin
toast on every poll cycle.
The previous fix only applied to comfortable mode. Compact mode also
has shrink-0 + min-w-[9.5rem] with no max-width, so long repo names
like rosa-eng-inventory-dashboard break column alignment.
text-overflow: ellipsis only works on block containers, not inline-flex.
Switches subtleRepo badge to inline-block with align-middle so truncate
actually produces an ellipsis on long repo names.
Tailwind v4 was not generating CSS for max-w-[14rem]/max-w-[16rem]
arbitrary values. Uses inline style for max-width to ensure the
constraint is applied regardless of Tailwind CSS scanning.
Tailwind v4 does generate max-w-[16rem]/max-w-[14rem] correctly.
The earlier issue was inline-flex + truncate incompatibility, not
CSS generation. Reverts to pure Tailwind classes (no inline styles).
Full owner/repo names wasted horizontal space and broke column
alignment. Comfortable mode with subtleRepo now shows the short
name (repo only, no org prefix) matching compact mode behavior.
Full name remains accessible via title tooltip on hover.
Variable min-w/max-w caused each badge to size to its content,
so category badges and titles started at different x-positions
per row. Fixed w-[14rem] ensures consistent column alignment.
wgordon17 added 4 commits May 5, 2026 16:50
- DEP_TITLE_PATTERN requires bot action words after conventional commit
  prefix, preventing false positives on human fix(deps) PRs
- Reset _fetchingDepBodies on auth clear to prevent stale lock
- Replace inline regex with stripVersionSpecifier() (DRY)
- Align USER_GUIDE status groups with code's 4-status model
- Add tests for hideDepDashboard, depPrIds filtering, == specifier
@wgordon17 wgordon17 force-pushed the feat/dependencies-tab branch from 9b63b0b to 148a08e Compare May 6, 2026 16:58
@wgordon17 wgordon17 marked this pull request as ready for review May 6, 2026 17:35
@wgordon17 wgordon17 merged commit 95c7e02 into gordon-code:main May 6, 2026
1 check passed
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.

1 participant