fix(workspace): restrict member credit limits to members - #14168
Conversation
Amp-Thread-ID: https://ampcode.com/threads/T-019fa5d0-5779-74f1-9f75-917cbb6e1ef3 Co-authored-by: Amp <amp@ampcode.com>
📝 WalkthroughWalkthrough
ChangesMember menu eligibility
Estimated code review effort: 2 (Simple) | ~10 minutes Possibly related PRs
Suggested labels: Suggested reviewers: Important Pre-merge checks failedPlease resolve all errors before merging. Addressing warnings is optional. ❌ Failed checks (1 inconclusive)
✅ Passed checks (5 passed)
✨ Finishing Touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
🎨 Storybook: ✅ Built — View Storybook🎭 Playwright: ✅ 1733 passed, 0 failed · 3 flaky📊 Browser Reports
📦 Bundle: 8.12 MB gzip 🔴 +65 BDetailsSummary
Category Glance App Entry Points — 3.64 kB (baseline 3.64 kB) • ⚪ 0 BMain entry bundles and manifests
Status: 1 added / 1 removed Graph Workspace — 1.28 MB (baseline 1.28 MB) • ⚪ 0 BGraph editor runtime, canvas, workflow orchestration
Status: 1 added / 1 removed / 1 unchanged Views & Navigation — 112 kB (baseline 112 kB) • ⚪ 0 BTop-level views, pages, and routed surfaces
Status: 12 added / 12 removed / 4 unchanged Panels & Settings — 551 kB (baseline 551 kB) • ⚪ 0 BConfiguration panels, inspectors, and settings screens
Status: 11 added / 11 removed / 15 unchanged User & Accounts — 29.1 kB (baseline 29.1 kB) • ⚪ 0 BAuthentication, profile, and account management bundles
Status: 7 added / 7 removed / 3 unchanged Editors & Dialogs — 121 kB (baseline 121 kB) • ⚪ 0 BModals, dialogs, drawers, and in-app editors
Status: 5 added / 5 removed / 1 unchanged UI Components — 64.7 kB (baseline 64.7 kB) • ⚪ 0 BReusable component library chunks
Status: 6 added / 6 removed / 8 unchanged Data & Services — 3.37 MB (baseline 3.37 MB) • ⚪ 0 BStores, services, APIs, and repositories
Status: 14 added / 14 removed / 3 unchanged Utilities & Hooks — 357 kB (baseline 357 kB) • ⚪ 0 BHelpers, composables, and utility bundles
Status: 15 added / 15 removed / 20 unchanged Vendor & Third-Party — 15.7 MB (baseline 15.7 MB) • ⚪ 0 BExternal libraries and shared vendor chunks Status: 16 unchanged Other — 12.5 MB (baseline 12.5 MB) • 🟢 -62 BBundles that do not match a named category
Status: 70 added / 70 removed / 207 unchanged ⚡ Performance Report
Show regressions
All metrics
Historical variance (last 15 runs)
Trend (last 15 commits on main)
Raw data{
"timestamp": "2026-07-27T23:42:11.892Z",
"gitSha": "829fdbba6f74305687a7a98b91ab00945bc26c7e",
"branch": "fix/fe-1277-member-only-credit-limits",
"measurements": [
{
"name": "canvas-idle",
"durationMs": 2049.453999999997,
"styleRecalcs": 10,
"styleRecalcDurationMs": 9.663,
"layouts": 0,
"layoutDurationMs": 0,
"taskDurationMs": 495.748,
"heapDeltaBytes": 3374236,
"heapUsedBytes": 70791152,
"domNodes": 20,
"jsHeapTotalBytes": 20582400,
"scriptDurationMs": 20.557,
"eventListeners": 4,
"totalBlockingTimeMs": 0,
"frameDurationMs": 16.66333333333332,
"p95FrameDurationMs": 16.800000000000182
},
{
"name": "canvas-idle",
"durationMs": 2016.2819999999897,
"styleRecalcs": 9,
"styleRecalcDurationMs": 8.131999999999998,
"layouts": 0,
"layoutDurationMs": 0,
"taskDurationMs": 442.417,
"heapDeltaBytes": 3578936,
"heapUsedBytes": 71165472,
"domNodes": 18,
"jsHeapTotalBytes": 20320256,
"scriptDurationMs": 15.092000000000004,
"eventListeners": 4,
"totalBlockingTimeMs": 0,
"frameDurationMs": 16.666666666666668,
"p95FrameDurationMs": 16.800000000000182
},
{
"name": "canvas-mouse-sweep",
"durationMs": 1954.8999999999808,
"styleRecalcs": 76,
"styleRecalcDurationMs": 45.168,
"layouts": 12,
"layoutDurationMs": 4.047999999999999,
"taskDurationMs": 969.6870000000001,
"heapDeltaBytes": -1686208,
"heapUsedBytes": 65753568,
"domNodes": 58,
"jsHeapTotalBytes": 21893120,
"scriptDurationMs": 135.755,
"eventListeners": 6,
"totalBlockingTimeMs": 0,
"frameDurationMs": 16.666666666666668,
"p95FrameDurationMs": 16.700000000000728
},
{
"name": "canvas-mouse-sweep",
"durationMs": 1873.1469999999604,
"styleRecalcs": 74,
"styleRecalcDurationMs": 38,
"layouts": 12,
"layoutDurationMs": 3.458,
"taskDurationMs": 903.0970000000001,
"heapDeltaBytes": -15359476,
"heapUsedBytes": 52167436,
"domNodes": -267,
"jsHeapTotalBytes": 20971520,
"scriptDurationMs": 126.503,
"eventListeners": -133,
"totalBlockingTimeMs": 0,
"frameDurationMs": 16.666666666666668,
"p95FrameDurationMs": 16.700000000000728
},
{
"name": "canvas-zoom-sweep",
"durationMs": 1726.854000000003,
"styleRecalcs": 32,
"styleRecalcDurationMs": 18.536,
"layouts": 6,
"layoutDurationMs": 0.6709999999999999,
"taskDurationMs": 405.017,
"heapDeltaBytes": 7032852,
"heapUsedBytes": 74801288,
"domNodes": 77,
"jsHeapTotalBytes": 20320256,
"scriptDurationMs": 21.817999999999998,
"eventListeners": 19,
"totalBlockingTimeMs": 0,
"frameDurationMs": 16.66333333333332,
"p95FrameDurationMs": 16.800000000000182
},
{
"name": "canvas-zoom-sweep",
"durationMs": 1728.2690000000684,
"styleRecalcs": 31,
"styleRecalcDurationMs": 16.519,
"layouts": 6,
"layoutDurationMs": 0.594,
"taskDurationMs": 362.146,
"heapDeltaBytes": 6962956,
"heapUsedBytes": 74713120,
"domNodes": 77,
"jsHeapTotalBytes": 20058112,
"scriptDurationMs": 17.633,
"eventListeners": 19,
"totalBlockingTimeMs": 0,
"frameDurationMs": 16.666666666666668,
"p95FrameDurationMs": 16.800000000000182
},
{
"name": "dom-widget-clipping",
"durationMs": 622.2429999999974,
"styleRecalcs": 11,
"styleRecalcDurationMs": 8.230999999999998,
"layouts": 0,
"layoutDurationMs": 0,
"taskDurationMs": 398.61,
"heapDeltaBytes": -12143968,
"heapUsedBytes": 55459696,
"domNodes": 18,
"jsHeapTotalBytes": 20844544,
"scriptDurationMs": 62.336999999999996,
"eventListeners": 2,
"totalBlockingTimeMs": 0,
"frameDurationMs": 16.66999999999998,
"p95FrameDurationMs": 16.799999999999272
},
{
"name": "dom-widget-clipping",
"durationMs": 597.723999999971,
"styleRecalcs": 9,
"styleRecalcDurationMs": 6.348,
"layouts": 0,
"layoutDurationMs": 0,
"taskDurationMs": 381.892,
"heapDeltaBytes": -12217792,
"heapUsedBytes": 55358664,
"domNodes": 14,
"jsHeapTotalBytes": 21630976,
"scriptDurationMs": 58.995,
"eventListeners": 0,
"totalBlockingTimeMs": 0,
"frameDurationMs": 16.66333333333332,
"p95FrameDurationMs": 16.699999999999818
},
{
"name": "large-graph-idle",
"durationMs": 2042.0690000000263,
"styleRecalcs": 10,
"styleRecalcDurationMs": 10.359,
"layouts": 0,
"layoutDurationMs": 0,
"taskDurationMs": 764.4820000000001,
"heapDeltaBytes": 6670396,
"heapUsedBytes": 65192192,
"domNodes": -268,
"jsHeapTotalBytes": 4788224,
"scriptDurationMs": 124.586,
"eventListeners": -129,
"totalBlockingTimeMs": 0,
"frameDurationMs": 16.66333333333332,
"p95FrameDurationMs": 16.700000000000728
},
{
"name": "large-graph-idle",
"durationMs": 2009.8709999999755,
"styleRecalcs": 10,
"styleRecalcDurationMs": 9.126999999999999,
"layouts": 0,
"layoutDurationMs": 0,
"taskDurationMs": 682.9990000000001,
"heapDeltaBytes": 6037552,
"heapUsedBytes": 64611364,
"domNodes": -268,
"jsHeapTotalBytes": 4788224,
"scriptDurationMs": 103.891,
"eventListeners": -129,
"totalBlockingTimeMs": 0,
"frameDurationMs": 16.666666666666668,
"p95FrameDurationMs": 16.699999999999818
},
{
"name": "large-graph-pan",
"durationMs": 2213.6049999999727,
"styleRecalcs": 69,
"styleRecalcDurationMs": 14.059,
"layouts": 0,
"layoutDurationMs": 0,
"taskDurationMs": 1334.9550000000002,
"heapDeltaBytes": 6240976,
"heapUsedBytes": 65695368,
"domNodes": -268,
"jsHeapTotalBytes": 4993024,
"scriptDurationMs": 452.538,
"eventListeners": -127,
"totalBlockingTimeMs": 0,
"frameDurationMs": 16.66333333333335,
"p95FrameDurationMs": 16.699999999999818
},
{
"name": "large-graph-pan",
"durationMs": 2148.114000000078,
"styleRecalcs": 69,
"styleRecalcDurationMs": 13.650000000000002,
"layouts": 0,
"layoutDurationMs": 0,
"taskDurationMs": 1255.187,
"heapDeltaBytes": -3809720,
"heapUsedBytes": 55933568,
"domNodes": -270,
"jsHeapTotalBytes": 4788224,
"scriptDurationMs": 428.515,
"eventListeners": -129,
"totalBlockingTimeMs": 0,
"frameDurationMs": 16.666666666666668,
"p95FrameDurationMs": 16.700000000000728
},
{
"name": "large-graph-zoom",
"durationMs": 3332.403999999997,
"styleRecalcs": 66,
"styleRecalcDurationMs": 17.317,
"layouts": 60,
"layoutDurationMs": 7.42,
"taskDurationMs": 1574.1520000000003,
"heapDeltaBytes": 24201828,
"heapUsedBytes": 85417076,
"domNodes": 14,
"jsHeapTotalBytes": 7864320,
"scriptDurationMs": 561.697,
"eventListeners": 8,
"totalBlockingTimeMs": 0,
"frameDurationMs": 16.666666666666668,
"p95FrameDurationMs": 16.700000000000728
},
{
"name": "large-graph-zoom",
"durationMs": 3184.2100000000073,
"styleRecalcs": 65,
"styleRecalcDurationMs": 14.071000000000003,
"layouts": 60,
"layoutDurationMs": 7.077999999999999,
"taskDurationMs": 1499.525,
"heapDeltaBytes": -2191820,
"heapUsedBytes": 59153728,
"domNodes": -274,
"jsHeapTotalBytes": 7933952,
"scriptDurationMs": 526.512,
"eventListeners": -133,
"totalBlockingTimeMs": 0,
"frameDurationMs": 16.666666666666668,
"p95FrameDurationMs": 16.800000000000182
},
{
"name": "minimap-idle",
"durationMs": 2009.6419999999853,
"styleRecalcs": 7,
"styleRecalcDurationMs": 7.66,
"layouts": 0,
"layoutDurationMs": 0,
"taskDurationMs": 801.669,
"heapDeltaBytes": 6154012,
"heapUsedBytes": 66296608,
"domNodes": -272,
"jsHeapTotalBytes": 5050368,
"scriptDurationMs": 129.77700000000002,
"eventListeners": -129,
"totalBlockingTimeMs": 0,
"frameDurationMs": 16.666666666666668,
"p95FrameDurationMs": 16.800000000000182
},
{
"name": "minimap-idle",
"durationMs": 2025.457000000074,
"styleRecalcs": 9,
"styleRecalcDurationMs": 8.358,
"layouts": 0,
"layoutDurationMs": 0,
"taskDurationMs": 676.374,
"heapDeltaBytes": 7064312,
"heapUsedBytes": 67052132,
"domNodes": -268,
"jsHeapTotalBytes": 3477504,
"scriptDurationMs": 107.65,
"eventListeners": -127,
"totalBlockingTimeMs": 0,
"frameDurationMs": 16.66333333333335,
"p95FrameDurationMs": 16.699999999999818
},
{
"name": "subgraph-dom-widget-clipping",
"durationMs": 593.9450000000193,
"styleRecalcs": 48,
"styleRecalcDurationMs": 12.353000000000002,
"layouts": 0,
"layoutDurationMs": 0,
"taskDurationMs": 407.51200000000006,
"heapDeltaBytes": -11671728,
"heapUsedBytes": 55729992,
"domNodes": 22,
"jsHeapTotalBytes": 21893120,
"scriptDurationMs": 118.04599999999999,
"eventListeners": 6,
"totalBlockingTimeMs": 0,
"frameDurationMs": 16.666666666666668,
"p95FrameDurationMs": 16.700000000000728
},
{
"name": "subgraph-dom-widget-clipping",
"durationMs": 607.003000000077,
"styleRecalcs": 46,
"styleRecalcDurationMs": 9.871999999999998,
"layouts": 0,
"layoutDurationMs": 0,
"taskDurationMs": 410.62399999999997,
"heapDeltaBytes": -11388552,
"heapUsedBytes": 56310248,
"domNodes": 18,
"jsHeapTotalBytes": 22155264,
"scriptDurationMs": 124.45699999999998,
"eventListeners": 8,
"totalBlockingTimeMs": 0,
"frameDurationMs": 16.666666666666668,
"p95FrameDurationMs": 16.799999999999272
},
{
"name": "subgraph-idle",
"durationMs": 2010.8429999999657,
"styleRecalcs": 10,
"styleRecalcDurationMs": 9.532999999999998,
"layouts": 0,
"layoutDurationMs": 0,
"taskDurationMs": 469.787,
"heapDeltaBytes": 3469192,
"heapUsedBytes": 70934576,
"domNodes": 20,
"jsHeapTotalBytes": 21106688,
"scriptDurationMs": 15.771999999999998,
"eventListeners": 4,
"totalBlockingTimeMs": 0,
"frameDurationMs": 16.66333333333332,
"p95FrameDurationMs": 16.700000000000728
},
{
"name": "subgraph-idle",
"durationMs": 2005.215000000021,
"styleRecalcs": 10,
"styleRecalcDurationMs": 8.66,
"layouts": 0,
"layoutDurationMs": 0,
"taskDurationMs": 480.0110000000001,
"heapDeltaBytes": 3971208,
"heapUsedBytes": 71687716,
"domNodes": 20,
"jsHeapTotalBytes": 20582400,
"scriptDurationMs": 14.411,
"eventListeners": 4,
"totalBlockingTimeMs": 0,
"frameDurationMs": 16.666666666666668,
"p95FrameDurationMs": 16.700000000000728
},
{
"name": "subgraph-mouse-sweep",
"durationMs": 1711.5360000000237,
"styleRecalcs": 76,
"styleRecalcDurationMs": 35.145999999999994,
"layouts": 16,
"layoutDurationMs": 3.6670000000000003,
"taskDurationMs": 814.271,
"heapDeltaBytes": -19276744,
"heapUsedBytes": 48339656,
"domNodes": -266,
"jsHeapTotalBytes": 21233664,
"scriptDurationMs": 93.318,
"eventListeners": -133,
"totalBlockingTimeMs": 0,
"frameDurationMs": 16.666666666666668,
"p95FrameDurationMs": 16.800000000000182
},
{
"name": "subgraph-mouse-sweep",
"durationMs": 1699.8029999999744,
"styleRecalcs": 76,
"styleRecalcDurationMs": 36.219,
"layouts": 16,
"layoutDurationMs": 3.9170000000000003,
"taskDurationMs": 743.591,
"heapDeltaBytes": -5518120,
"heapUsedBytes": 61903124,
"domNodes": 65,
"jsHeapTotalBytes": 20582400,
"scriptDurationMs": 89.416,
"eventListeners": 4,
"totalBlockingTimeMs": 0,
"frameDurationMs": 16.66333333333332,
"p95FrameDurationMs": 16.800000000000182
},
{
"name": "subgraph-transition-enter",
"durationMs": 1399.9789999999734,
"styleRecalcs": 19,
"styleRecalcDurationMs": 30.156000000000002,
"layouts": 15,
"layoutDurationMs": 12.504000000000001,
"taskDurationMs": 950.7290000000002,
"heapDeltaBytes": 29163320,
"heapUsedBytes": 98353372,
"domNodes": 13673,
"jsHeapTotalBytes": 15728640,
"scriptDurationMs": 36.332,
"eventListeners": 2371,
"totalBlockingTimeMs": 140,
"frameDurationMs": 16.666666666666696,
"p95FrameDurationMs": 16.700000000000728
},
{
"name": "viewport-pan-sweep",
"durationMs": 8584.338000000003,
"styleRecalcs": 250,
"styleRecalcDurationMs": 37.486,
"layouts": 0,
"layoutDurationMs": 0,
"taskDurationMs": 4810.686,
"heapDeltaBytes": 8548956,
"heapUsedBytes": 67110516,
"domNodes": -266,
"jsHeapTotalBytes": 7061504,
"scriptDurationMs": 1464.379,
"eventListeners": -111,
"totalBlockingTimeMs": 0,
"frameDurationMs": 16.666666666666668,
"p95FrameDurationMs": 16.700000000000728
},
{
"name": "viewport-pan-sweep",
"durationMs": 8316.382000000089,
"styleRecalcs": 249,
"styleRecalcDurationMs": 35.846000000000004,
"layouts": 0,
"layoutDurationMs": 0,
"taskDurationMs": 4608.714,
"heapDeltaBytes": 11430704,
"heapUsedBytes": 71135768,
"domNodes": -269,
"jsHeapTotalBytes": 7847936,
"scriptDurationMs": 1499.888,
"eventListeners": -111,
"totalBlockingTimeMs": 0,
"frameDurationMs": 16.666666666666668,
"p95FrameDurationMs": 16.799999999999272
},
{
"name": "vue-large-graph-idle",
"durationMs": 17015.33699999999,
"styleRecalcs": 0,
"styleRecalcDurationMs": 0,
"layouts": 0,
"layoutDurationMs": 0,
"taskDurationMs": 16963.805,
"heapDeltaBytes": -63350236,
"heapUsedBytes": 166602212,
"domNodes": -8311,
"jsHeapTotalBytes": -13307904,
"scriptDurationMs": 603.004,
"eventListeners": -16384,
"totalBlockingTimeMs": 0,
"frameDurationMs": 17.780000000000047,
"p95FrameDurationMs": 16.799999999999272
},
{
"name": "vue-large-graph-idle",
"durationMs": 16766.533999999978,
"styleRecalcs": 0,
"styleRecalcDurationMs": 0,
"layouts": 0,
"layoutDurationMs": 0,
"taskDurationMs": 16726.689000000002,
"heapDeltaBytes": -49614348,
"heapUsedBytes": 166878736,
"domNodes": -8311,
"jsHeapTotalBytes": -15142912,
"scriptDurationMs": 574.131,
"eventListeners": -16384,
"totalBlockingTimeMs": 0,
"frameDurationMs": 17.77333333333336,
"p95FrameDurationMs": 16.700000000000728
},
{
"name": "vue-large-graph-pan",
"durationMs": 20705.72599999997,
"styleRecalcs": 143,
"styleRecalcDurationMs": 17.421999999999993,
"layouts": 0,
"layoutDurationMs": 0,
"taskDurationMs": 20662.525999999998,
"heapDeltaBytes": -51510472,
"heapUsedBytes": 166489936,
"domNodes": -8311,
"jsHeapTotalBytes": -13832192,
"scriptDurationMs": 934.2199999999999,
"eventListeners": -16376,
"totalBlockingTimeMs": 197,
"frameDurationMs": 17.776666666666642,
"p95FrameDurationMs": 16.80000000000291
},
{
"name": "vue-large-graph-pan",
"durationMs": 20213.771000000066,
"styleRecalcs": 141,
"styleRecalcDurationMs": 18.818999999999974,
"layouts": 0,
"layoutDurationMs": 0,
"taskDurationMs": 20167.141,
"heapDeltaBytes": -66023836,
"heapUsedBytes": 152046956,
"domNodes": -8311,
"jsHeapTotalBytes": -13045760,
"scriptDurationMs": 883.0440000000001,
"eventListeners": -16382,
"totalBlockingTimeMs": 139,
"frameDurationMs": 17.776666666666642,
"p95FrameDurationMs": 16.700000000000728
},
{
"name": "workflow-execution",
"durationMs": 482.3769999999854,
"styleRecalcs": 28,
"styleRecalcDurationMs": 30.586999999999996,
"layouts": 5,
"layoutDurationMs": 2.2279999999999998,
"taskDurationMs": 150.866,
"heapDeltaBytes": -15286956,
"heapUsedBytes": 51636584,
"domNodes": 183,
"jsHeapTotalBytes": 7999488,
"scriptDurationMs": 11.443,
"eventListeners": 132,
"totalBlockingTimeMs": 0,
"frameDurationMs": 16.666666666666668,
"p95FrameDurationMs": 16.700000000000728
},
{
"name": "workflow-execution",
"durationMs": 453.6050000000387,
"styleRecalcs": 12,
"styleRecalcDurationMs": 17.087999999999997,
"layouts": 3,
"layoutDurationMs": 0.5900000000000001,
"taskDurationMs": 102.277,
"heapDeltaBytes": -16041500,
"heapUsedBytes": 50616664,
"domNodes": 117,
"jsHeapTotalBytes": 7999488,
"scriptDurationMs": 9.988,
"eventListeners": 65,
"totalBlockingTimeMs": 0,
"frameDurationMs": 16.666666666666668,
"p95FrameDurationMs": 16.699999999999818
}
]
} |
There was a problem hiding this comment.
Caution
Some comments are outside the diff and can’t be posted inline due to platform limitations.
⚠️ Outside diff range comments (1)
src/platform/workspace/composables/useMembersPanel.test.ts (1)
826-830: 📐 Maintainability & Code Quality | 🟡 Minor | ⚡ Quick winExercise the billing-disabled branch with an eligible member.
This test targets the creator, so it returns
[]beforebillingControlEnabledis evaluated. Use a non-creatormemberfixture and assert thatchangeRoleandremoveMemberremain whilesetCreditLimitis omitted.As per path instructions, tests must cover billing-flag on/off behavior and avoid redundant branch-only assertions.
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@src/platform/workspace/composables/useMembersPanel.test.ts` around lines 826 - 830, Update the test around setup() to use an eligible non-creator member instead of the creator fixture, ensuring execution reaches the billingControlEnabled check. Assert that the resulting menu includes changeRole and removeMember but excludes setCreditLimit when mockBillingControlEnabled.value is false, while avoiding redundant creator-branch assertions.Source: Path instructions
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Outside diff comments:
In `@src/platform/workspace/composables/useMembersPanel.test.ts`:
- Around line 826-830: Update the test around setup() to use an eligible
non-creator member instead of the creator fixture, ensuring execution reaches
the billingControlEnabled check. Assert that the resulting menu includes
changeRole and removeMember but excludes setCreditLimit when
mockBillingControlEnabled.value is false, while avoiding redundant
creator-branch assertions.
ℹ️ Review info
⚙️ Run configuration
Configuration used: Path: .coderabbit.yaml
Review profile: ASSERTIVE
Plan: Pro Plus
Run ID: 4a5089e4-f8f5-446c-8015-e76730c8bb14
📒 Files selected for processing (3)
src/platform/workspace/components/dialogs/settings/MembersPanelContent.test.tssrc/platform/workspace/composables/useMembersPanel.test.tssrc/platform/workspace/composables/useMembersPanel.ts
Codecov Report✅ All modified and coverable lines are covered by tests. @@ Coverage Diff @@
## main #14168 +/- ##
========================================
Coverage 79.37% 79.37%
========================================
Files 1742 1742
Lines 118815 118816 +1
Branches 39777 39083 -694
========================================
+ Hits 94305 94306 +1
+ Misses 23850 23843 -7
- Partials 660 667 +7
Flags with carried forward coverage won't be shown. Click here to find out more.
... and 4 files with indirect coverage changes 🚀 New features to boost your workflow:
|
|
@dante01yoon Successfully backported to #14214 |
|
@dante01yoon Successfully backported to #14215 |
|
|
|
Summary
Aligns the per-member credit-limit row actions from #13716 with the finalized DES-504 permission model:
memberrowsDesign change
As is
An Owner row exposes Set credit limit alongside its other member-management actions.
To be
The current user has no row menu. Other Owner rows retain applicable role/removal actions, but no longer expose Set credit limit.
Member rows continue to expose Set credit limit.
References
Testing
pnpm test:unit src/platform/workspace/composables/useMembersPanel.test.ts src/platform/workspace/composables/useWorkspaceUI.test.ts src/platform/workspace/components/dialogs/settings/MemberListItem.test.ts src/platform/settings/composables/useSettingUI.test.ts(107 tests)billing_control_enabled=truepnpm typecheckpnpm lint:unstagedoxfmt --checkFollow-up to #13716. Relates FE-1277 and DES-504.