Conversation
…ase-table PM-5308 project showcase table
…case-post-management PM-5309 projects showcase post management
…ase-table PM-5309 projects showcase post management
…case-post-management PM-5309 - minor css fix
…nt-update PM-5309 post management update
Initial procurement app
…-media-assets PM-5485 - media assets for project showcase
What was broken Member profile stats could show stale win totals for Development and AI Engineering when the stats aggregate disagreed with the placement history shown on the same profile screens. Root cause The profiles aggregation helper trusted any nonzero aggregate win count before consulting history, so stale aggregates could count non-first placements as wins or undercount first-place history rows. What was changed Profile subtrack summaries now use placement-bearing history as the source for wins and only fall back to aggregate wins when history has no placement data. The compact Member Stats block now passes stats history into the same aggregation path used by the detail pages. Any added/updated tests Added regression coverage for stale nonzero aggregate wins being overridden by placement history, while preserving aggregate wins when legacy history rows do not include placement data.
…ase-list-fixes PM-5308 project showcase list fixes
…ase-list-fixes align
What was broken Problem Writers and Problem Testers added directly to a challenge could not open project-scoped Work challenge URLs when they were not also members of the parent project. Root cause ChallengeEditorPage blocked the challenge fetch and rendered the project access error based only on project membership, so challenge-level resource roles were never evaluated. What was changed Existing challenge routes now fetch the challenge before applying the project fallback. When project access is denied, the page checks the current user's active challenge resource role: full read roles may view the challenge and full write roles may use the edit action. Project/challenge route mismatches still remain denied. Any added/updated tests Updated ChallengeEditorPage tests for Problem Tester-style read access, Problem Writer-style write access, and denial when neither project nor challenge resource access is available.
…M-5487_showcase-media-security
…a-security PM-5487 showcase media security
PM-5489: Allow challenge resources to view Work challenges
PM-5458: Use placement history for profile win counts
What was broken Challenge submission lists could only be filtered by handle, date range, and minimum score, so users with a submission ID from logs had no direct way to find the matching row and submitter. Root cause The submissions section filter state and filter predicate did not include submission identifiers, even though the table displays each submission ID. What was changed Added a Submission ID text filter next to the Handle filter. Matched the filter against current and legacy submission IDs with case-insensitive partial matching before pagination. Any added/updated tests Added a SubmissionsSection test covering filtering by current and legacy submission IDs.
What was broken Marathon Match submissions could only be filtered by general submission fields, so System, Provisional, and Example test rows stayed intermingled in the Work app submissions list. Root cause The submissions list already displayed the current marathon test process from review summation metadata, but that normalized process was not part of the filter state or filter predicate. What was changed Added a Marathon Match-only Test type select with All, System, Provisional, and Example options. The filter uses the existing getSubmissionTestProgress helper so the filter matches the same current test process shown in the table. Any added/updated tests Added SubmissionsSection coverage that verifies marathon submissions can be filtered by System and Example test types.
PM-5510: Add marathon submission test type filter
# Conflicts: # src/apps/work/src/pages/challenges/ChallengeEditorPage/components/SubmissionsSection/SubmissionsSection.spec.tsx # src/apps/work/src/pages/challenges/ChallengeEditorPage/components/SubmissionsSection/SubmissionsSection.tsx
PM-5511: Add submission ID filter
What was broken The work app engagement list only offered a single-select Engagement Status dropdown with an "All" option, so users could not filter by multiple statuses or clear back to all selected statuses. Root cause Engagement list filters and engagement fetch filters modeled status as one string, and the fetch path serialized only one status value. What was changed Replaced the status "All" option with a clearable multi-select that defaults to all statuses selected. Clearing the selection restores the default unfiltered state. Added multi-status fetch fan-out so the UI supports multiple selected statuses while the current engagements API still accepts only one status per request. Any added/updated tests Added EngagementsFilter coverage for the default all-selected multi-select and clear behavior. Updated engagement list and service specs to cover selected status arrays and multi-status API fan-out.
What was broken PMs and copilots could see that an assigned member had not agreed to required terms, but the work app only rendered the API error text and did not provide a direct terms URL to send to the member. Root cause The challenge editor normalized save failures to a plain string and rendered that string directly, even when the selected challenge terms and terms catalog were available in the editor. What was changed The challenge editor now detects the missing-terms save error, matches the referenced terms against the currently selected challenge terms, and renders each matched term title as a link to the public Topcoder terms detail page. Manual form submit failures now rely on the visible save error state instead of surfacing an unhandled rejected promise after the UI has handled the failure. Any added/updated tests Added a ChallengeEditorForm regression test that verifies a missing-terms save error renders the selected term as a terms detail link.
What was broken The billing account details modal could still show stale or markup-derived engagement member payment and challenge fee values when billing-account rows already carried split-looking fields. Root cause The follow-up fix only hydrated finance payments for engagement rows missing paymentAmount or challengeFee, and the modal preferred billing-account split fields before any hydrated finance match. Payment normalization also preferred a generic amount field before explicit paymentAmount when both were present. What was changed Consumed engagement rows now always hydrate matching finance payment splits in the modal. Matched finance paymentAmount and challengeFee values take precedence before billing-account aliases, and explicit paymentAmount now wins over generic amount in payment helpers. Any added/updated tests Updated BillingAccountLineItemsModal coverage for finance splits overriding stale billing-account split fields. Added payment utility coverage for payloads containing both amount and paymentAmount.
What was broken The work app engagement editor still required every private engagement member slot to have an assigned handle. After all assignments were completed and no active assignments remained, saving a private engagement as closed failed in the UI before the API request was sent. Root cause The previous backend fix allowed private engagements without active assignments, but the platform-ui Yup schema still enforced assignedMemberHandles for each required private member slot and the private assignment input was still marked required. What was changed Relaxed private assignment validation so blank member slots are allowed while preserving assignment-detail validation for any selected member handle. Removed the required marker from optional private assignment inputs. Any added/updated tests Updated engagement editor schema tests for private engagements with no assignees and with fewer assigned members than requiredMemberCount. Added form coverage that saves a private engagement with only terminal assignments without sending assignedMemberHandles or assignmentDetails. Updated the private section test mock to match the current assignment helper imports.
Fixes for the billing account details popup in PM-5507
PM-5504: Allow private engagements without assignees
PM-5503: Support multi-status engagement filter
PM-5506: Link missing member terms in work save errors
PM-5245: Prefer finance engagement splits
What was broken The previous platform-ui fix allowed private engagements with an empty assignedMemberHandles array, but rendered empty private member inputs can be registered as undefined array slots. Yup still treated those registered blank slots as required and showed assignedMemberHandles[0]/[1] validation errors before save. Root cause The schema kept a defined item check for every assignedMemberHandles array entry without first normalizing nullish empty autocomplete slots. Current dev also had merged PM-5507 billing modal call sites that referenced missing finance split helper functions, which blocked the required lint/build validation for this branch. What was changed Normalized null or undefined private member slots to blank strings before Yup validates assignedMemberHandles items. Added the missing billing modal finance split helper implementations so the existing current-dev call sites lint and build. Any added/updated tests Added schema coverage for private engagements with registered blank member slots. Re-ran the focused engagement editor schema/form/private-section test suite.
PM-5504: Allow blank private member slots
PM-5309 - fix user role check for project managers
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.
No description provided.