Skip to content

wave: orgs section on maintainer Orgs & Repos page#1904

Merged
efstajas merged 9 commits into
mainfrom
jason/org-points-limit
May 21, 2026
Merged

wave: orgs section on maintainer Orgs & Repos page#1904
efstajas merged 9 commits into
mainfrom
jason/org-points-limit

Conversation

@efstajas
Copy link
Copy Markdown
Contributor

@efstajas efstajas commented May 20, 2026

Summary

  • Adds an Orgs section to /wave/maintainers/repos that lists each org the user has at least one approved repo in, with a per-Wave-Program points budget gauge (used / total, with low/over-budget colors). A dropdown picks which Wave Program to show limits for; defaults to the first one the user participates in.
  • Picks up the new orgPointsBudget / orgPointsUsed / orgPointsRemaining fields from the wave backend (per-org points cap, drips-network/wave#590).
  • Renames the Repo Applications header action from Add repos to Apply repo and points it straight at /wave/maintainer-onboarding/review-repos. New Add org action on the Orgs section links to install-app.
  • Tooltip popup now portals itself to <body> on show, so its z-index escapes the page's view-transition-name stacking context and renders above the sidenav instead of behind it.
  • Tiny package-lock.json cleanup: drops two duplicate nested zod entries under @web3-onboard/*.
  • Includes an unrelated commit to add a checkbox to an admin panel. Shouldn't be on this PR, but whatever, we are fine with it.

Test plan

  • Sign in as a maintainer with approved repos in at least one Wave Program.
  • Visit /wave/maintainers/repos — confirm the new Orgs section renders above Repo Applications, one card per org, with the budget gauge.
  • Switch the Wave Program dropdown — confirm cards/orgs and budget figures update for the selected wave.
  • Hover the (i) icon next to "Points budget" inside a card — tooltip should render above the sidenav (previously was hidden behind it on this page).
  • Click Apply repo — should land on /wave/maintainer-onboarding/review-repos.
  • Click Add org — should land on /wave/maintainer-onboarding/install-app.
  • Visit as a user with no approved repos — Orgs section shows the empty state.

efstajas added 2 commits May 20, 2026 14:25
Adds an "Orgs" section to /wave/maintainers/repos that lists each org
the user has at least one approved repo in, with a per-Wave-Program
points budget gauge driven by a wave dropdown. Also portals the
tooltip popup to <body> so its z-index escapes the page's
view-transition stacking context, and dedupes a couple of nested
zod entries in package-lock.

Renames the "Add repos" action to "Apply repo" and points it straight
at the synced-repos list; new "Add org" action links to install-app.
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Adds an Orgs section to the Wave maintainer “Orgs & Repos” page, backed by new per-org points budget fields from the Wave backend, and adjusts tooltip rendering to escape stacking-context z-index issues.

Changes:

  • Add an Orgs section to /wave/maintainers/repos derived from the user’s approved repos, including a Wave Program selector and per-org points budget display.
  • Extend Wave DTO schemas to accept new orgPoints* fields (and pointsBudgetOverride).
  • Portal tooltips to <body> and bump tooltip z-index to render above view-transition / sidenav stacking contexts.

Reviewed changes

Copilot reviewed 4 out of 5 changed files in this pull request and generated no comments.

Show a summary per file
File Description
src/routes/(pages)/wave/(base-layout)/maintainers/repos/+page.ts Fetches approved repos separately (when needed) to derive Orgs section independent of repo list filter.
src/routes/(pages)/wave/(base-layout)/maintainers/repos/+page.svelte Introduces Orgs section UI + Wave Program dropdown; renames Repo Applications action to “Apply repo”.
src/lib/utils/wave/types/waveProgram.ts Adds DTO fields for org-level points budgets and related repo fields.
src/lib/components/tooltip/tooltip.svelte Portals expanded tooltip to <body> and adjusts margin/z-index to avoid stacking-context issues.
package-lock.json Removes duplicate nested zod entries under @web3-onboard/*.
Comments suppressed due to low confidence (1)

src/lib/components/tooltip/tooltip.svelte:167

  • Portaling the expanded tooltip out of the .tooltip span means moving the pointer from the trigger to the tooltip content will fire onpointerleave on the span and immediately hide() the tooltip. This makes tooltip content effectively non-interactive (e.g. links/copyable controls inside the tooltip can’t be clicked). Consider keeping the tooltip open while the pointer is over the expanded tooltip as well (e.g. add pointer enter/leave handlers on the expanded element, or track hover state across both trigger and content).
<span
  bind:this={tooltipElem}
  class="tooltip"
  class:disabled
  onpointerover={(e) => {
    if (!disabled && e.pointerType !== 'touch') handleHover(true);
  }}
  onpointerleave={() => !disabled && handleHover(false)}
>
  <div class="trigger">{@render children?.()}</div>
  {#if expanded}
    <!-- svelte-ignore a11y_no_static_element_interactions -->
    <div
      use:portal
      transition:fade={{ duration: 200 }}
      bind:this={contentElem}
      class="expanded-tooltip"
      style:left={`${tooltipPos.left}px`}

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

The list only shows orgs the user has an approved repo in for the
selected Wave Program, not every org the user is a member of.
efstajas added 2 commits May 20, 2026 16:31
Portaling the tooltip body to <body> moved it out from under the
trigger's hover container, so pointerleave on the trigger started
firing as soon as the cursor crossed the gap toward the tooltip.
Mirror the hover handlers onto the portaled element and add a small
grace delay on hide so the gap can be crossed without dismissing.
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 4 out of 5 changed files in this pull request and generated 2 comments.

Comment thread src/lib/components/tooltip/tooltip.svelte
Comment thread src/routes/(pages)/wave/(base-layout)/maintainers/repos/+page.ts
jtourkos and others added 2 commits May 21, 2026 12:37
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 8 out of 8 changed files in this pull request and generated 3 comments.

Comments suppressed due to low confidence (1)

src/lib/flows/wave/add-issues-to-wave-program/configure-details.svelte:466

  • budgetExceededOrgs only filters on pointsRemaining !== null, but pointsBudget can still be null. That would render "{pointsRemaining} of {pointsBudget}" as "N of null". Consider either filtering out org rows with null budgets, or adjusting the copy to handle "unbounded" / unknown budgets.
        <div class="budget-warning-row">
          <strong>{org.orgLogin}</strong> (org): {org.issueCount} issue{org.issueCount > 1
            ? 's'
            : ''} selected ({org.pointsNeeded} points) but only {org.pointsRemaining} of {org.pointsBudget}
          points remaining across the org's approved repos. Some issues will be skipped at this complexity.

Comment thread src/lib/components/tooltip/tooltip.svelte
@efstajas efstajas merged commit 0b3062f into main May 21, 2026
14 of 17 checks passed
@efstajas efstajas deleted the jason/org-points-limit branch May 21, 2026 11:11
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.

4 participants