Skip to content

Prod release - July 7 2026#2017

Merged
jmgasper merged 63 commits into
masterfrom
dev
Jul 7, 2026
Merged

Prod release - July 7 2026#2017
jmgasper merged 63 commits into
masterfrom
dev

Conversation

@jmgasper

@jmgasper jmgasper commented Jul 6, 2026

Copy link
Copy Markdown
Collaborator

No description provided.

vas3a and others added 30 commits June 25, 2026 18:07
…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
…-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
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.
vas3a and others added 28 commits July 1, 2026 14:37
…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
@jmgasper jmgasper requested a review from kkartunov as a code owner July 6, 2026 06:27
@jmgasper jmgasper merged commit 344b057 into master Jul 7, 2026
11 checks passed
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.

2 participants