• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

bleedingdeacons / amber / 33348198546
92%

Build:
DEFAULT BRANCH: main
Ran 31 Aug 2026 01:41AM UTC
Jobs 1
Files 33
Run time 1min
Badge
Embed ▾
README BADGES
x

If you need to use a raster PNG badge, change the '.svg' to '.png' in the link

Markdown

Textile

RDoc

HTML

Rst

31 Aug 2026 01:38AM UTC coverage: 92.549% (-0.3%) from 92.879%
33348198546

push

github

web-flow
feat(admin): add a committee tree screen with drag-and-drop membership (#64)

* feat(admin): add a committee tree screen with drag-and-drop membership

Intergroup > Committees: the hierarchy rendered as a tree, each committee
listing the members assigned to it, with members draggable from one to
another.

Deliberately not a CRUD screen. Creating, renaming and reparenting
committees stays on WordPress's own term editor, which already handles
slug collisions, parent loops and capabilities properly; the screen links
to it rather than reimplementing it. What that editor cannot answer is
who is on each committee seen as a tree, and that is all this adds.

Members render against the committee they are assigned to and never
against its ancestors, so memberIdsIn() is called with
includeDescendants: false. The default rollup would print the same person
at every level above them and destroy the one thing the screen is for.

Move is the default and Ctrl/Cmd-drag copies, matching file managers. The
modifier is read on drop rather than dragstart, because the decision to
copy is often made mid-drag.

Drag and drop alone would put the screen out of reach without a pointer,
so every member also carries a Move-or-copy select with both actions as
optgroups. It is the keyboard and screen-reader path, not a nicety.

An Unassigned bucket lists members on no committee. Without it there
would be nothing to drag from for anyone not yet assigned, and it doubles
as the "who has been missed" list.

The write side is one admin-ajax endpoint: nonce, edit_posts (matching
both the menu and the taxonomy's assign_terms cap), and a post-type check
so a position id cannot be reassigned as a member. It writes term
relationships, which is what CommitteeRepository reads and what the ACF
fields load, so a change here shows correctly on the member's edit
screen. Forged term ids are rejected by wp_set_object_terms() itself.

Resolved behind $container->has(CommitteeRepository::class): Unity ... (continued)

3900 of 4214 relevant lines covered (92.55%)

3.94 hits per line

Coverage Regressions

Lines Coverage ∆ File
20
86.75
-3.0% amber/amber/src/Core/AmberServiceProvider.php
8
84.13
-2.54% amber/amber/src/Plugin.php
Jobs
ID Job ID Ran Files Coverage
1 33348198546.1 31 Aug 2026 01:41AM UTC 33
92.55
GitHub Action Run
Source Files on build 33348198546
  • Tree
  • List 33
  • Changed 2
  • Source Changed 0
  • Coverage Changed 2
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Repo
  • Github Actions Build #33348198546
  • abfa7006 on github
  • Prev Build on main (#32901221584)
  • Next Build on main (#33351928210)
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE TRIAL · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc