Repository navigation
Control Center V2 (4/6): group management - #1692
Merged
Paul Lizer (paullizer) merged 4 commits intoOct 7, 2026
Merged
Paul Lizer (paullizer) merged 4 commits into
Paul Lizer (paullizer) merged 4 commits into
Conversation
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Implement batched group inventory, guarded bulk status, detail workflows, approval-only destructive actions, reusable drawer sections, and regression coverage. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Preserve reviewed Users changes, advance Groups to version 0.261.282, retain dashboard safety fixes, and align approval links with the V2 Approvals detail contract. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
16 of 24 tasks
15 of 24 tasks
Preserve both release histories and existing Groups version lineage; return stable validation errors in all nine reviewed handlers, document fail-closed expiry handling, and remove redundant test imports. Advance application patch to 0.261.283. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Paul Lizer (paullizer)
merged commit Oct 7, 2026
fc1d402
into
microsoft:paullizer-react-v2-ui
11 checks passed
Paul Lizer (paullizer)
added a commit
to paullizer/simplechat
that referenced
this pull request
Oct 7, 2026
Brings in V2 at 01c4959 (microsoft#1692, VERSION 0.261.282 and 0.261.283, microsoft#1695, VERSION 0.261.284, and microsoft#1693, VERSION 0.261.285 and 0.261.286). Conflicts: - docs/explanation/release_notes.md: V2's file byte-for-byte, with this branch's own (v0.261.282) section inserted at the very top, above V2's first section, (v0.261.286). Every V2 section is unchanged. The next commit renumbers this branch's section, because microsoft#1692 already uses 0.261.282. - application/single_app/config.py: V2's file, including its new activity-log indexing policy, with this branch's VERSION line (0.261.282) kept for the merge. The VERSION line was the only conflicting hunk. The next commit renumbers it above V2's 0.261.286. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Paul Lizer (paullizer)
added a commit
to paullizer/simplechat
that referenced
this pull request
Oct 7, 2026
V2 now uses 0.261.286 (microsoft#1693), and microsoft#1692 already uses 0.261.282, so this branch's version moves above both. Renumbers the same 20 lines in 15 files as the previous bump: config.py, this branch's release-notes section, the documentation version notes and the new tests' headers. V2's own (v0.261.282) release-notes section is untouched. The tests' version floor stays 0.261.253. Refs microsoft#1549 Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
/v2/approvals/all/<id>(group notices includegroup_id).paullizer-control-center-dashboardafter Control Center V2 (2/6): dashboard #1686 merged that branch intopaullizer-react-v2-ui, so Users was not in the integration branch. This branch preserves Users and merges the latest integration without rebasing. Groups version is 0.261.282.Linked issue
Refs #1690, #1686. Layer 4 of the six-layer V2 Control Center series; no separate issue. Approval deep links follow the contract supplied by #1687.
Release Notes & Latest Features
Is this visible to end users?
Is this admin-facing (Admin Settings, governance, deployment, config)?
Should this become a Latest Feature card?
Screenshot needed for the card?
Version bump
application/single_app/config.pyVERSIONthird segment bumped, or not needed because this is docs-onlydeployers/version.txtbumped, or not needed becausedeployers/was not changedApplication version advanced to 0.261.282 after integration merge. Deployers unchanged.
Testing / validation
Final merged-head validation (Python route tests used an isolated environment with repository-required Flask 3.1.3/Werkzeug 3.1.6; no global package changes):
python -m pytest functional_tests\test_v2_control_center_groups.py functional_tests\test_control_center_group_writers.py functional_tests\test_control_center_group_token_totals.py functional_tests\test_v2_control_center_foundation.py functional_tests\test_v2_control_center_dashboard.py functional_tests\test_v2_control_center_users.py functional_tests\test_v2_api_security.py functional_tests\test_v2_admin_review_pages.py functional_tests\route_tests\test_route_blueprint_policy_inventory.py functional_tests\route_tests\test_route_unauthenticated_policy_contract.py functional_tests\route_tests\test_route_policy_test_coverage.py -q --tb=short --disable-warnings— 128 passed. Includes Groups filters/sort/paging/cache, safe errors, detail projection, bulk cap before writes, reasons/exclusions, audit parity, permission denials, formula-safe CSV, approval creation without direct mutation, preserved Users and integration regressions.npm --prefix application\v2_ui run build— passed (TypeScript and Vite). Existing bundle-size warning remains; no CDN or dynamic-import additions.python -m pytest ui_tests\test_v2_control_center_groups.py ui_tests\test_v2_control_center_users.py -q --tb=short— 10 passed on the final rebuilt bundle. Covers desktop/mobile details, hostile-text escaping, status/history/approval, member search/CSV/roles/removal, retention/ownership permissions, cross-page bulk/errors, one-shot refresh, keyboard tabs, nested Escape/focus restoration and V2 approval detail links.python .\scripts\build_docs_inventory.py— passed; inventory remains unchanged because no capability/page inventory item was added or renamed.python .\functional_tests\test_docs_app_surface_coverage.py— 7/7 passed.python .\functional_tests\test_docs_site_quality.py— 6/6 passed.python scripts\check_xss_sinks.py --full-file application\v2_ui\src\components\controlCenter\ControlCenterPrimitives.tsx application\v2_ui\src\components\controlCenter\GroupDetailDrawer.tsx application\v2_ui\src\components\controlCenter\UsersSection.tsx application\single_app\route_backend_control_center.py— passed.python scripts\check_xss_sinks.py --full-file application\v2_ui\src\components\controlCenter\GroupsSection.tsx application\v2_ui\src\components\controlCenter\GroupDetailDrawer.tsx application\v2_ui\src\components\controlCenter\EntityDetailSections.tsx application\v2_ui\src\components\controlCenter\ControlCenterPrimitives.tsx application\v2_ui\src\components\ui\Modal.tsx application\v2_ui\src\components\membership\ImportMembersDialog.tsx application\v2_ui\src\pages\ControlCenterPage.tsx application\single_app\functions_control_center_groups.py— passed.python scripts\check_broken_access_control.py --full-file application\single_app\route_backend_control_center.py application\single_app\functions_control_center_groups.py— passed.git diff --cached --check— passed.Browser tests intercept APIs and use local static bundle assets; live Azure/Cosmos execution was not performed. The inventory is a 90-second process-local snapshot with server-side filtering/sorting/paging, not continuation-token query paging. Rebuild cost and memory scale with inventory/aggregates; external metrics writes can lag by that TTL. Detail activity/export contains the most recent 20 records. Known unrelated failing tests identified by the series plan were excluded from acceptance gates.
Documentation
Updated
docs/explanation/features/V2_CONTROL_CENTER.md,docs/guides/v2-control-center.md, and release notes. Documents Groups API/filter/selection/freshness contracts, retained permissions, approval semantics, reusable components and Phase 6 group activity deep-link parameters. Preserved Users and integration release notes. Separate fix documentation is not needed for this feature layer.Security checklist
@swagger_route(security=get_auth_security())sanitize_settings_for_user()Five new V2 routes require
control_center_required('admin'). Detail projections do not return raw group/settings documents or credentials. Member removal/role changes and retention preserve existing Owner/Admin authorization. Destructive and ownership requests only create approvals. React text rendering, encoded URL IDs, formula-safe CSV and safe logged provider failures preserve frontend boundaries.