Conversation
topgear.topcoder-dev.com still resolves to community-app, which redirects the TopGear subdomain to wipro.topcoder-dev.com and shows that community's access-denied page instead of the challenge list. Platform UI now owns the TopGear community on the `topgear` host: - add the `topgear` AppSubdomain and a `TOPGEAR.GROUP_ID` config defaulting to community-app's TopGear group (`REACT_APP_TOPGEAR_GROUP_ID`) - redirect the host root to `/opportunities`; the legacy `/challenges` aliases keep redirecting as before - render community-app's TopGear challenge-listing banner in place of the "Find your next opportunity" masthead, the four category cells, and the public summary request - offer competitions only: other `/opportunities/:kind` categories redirect to the listing, and Browse Competitions with its filters, sorting, and pagination is unchanged - send the TopGear group through the Challenge API `groups[]` parameter so the listing matches community-app's group-restricted community Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Opportunities: serve the TopGear community from the topgear host
Table: show ten columns in the PM-6392 order (Stage, Opportunity Name, Account Name, Subcontracting End Customer, Reporting SMU, Amount, Expected Revenue, Created Date, Close Date, Opportunity Owner) and drop Reporting Account, Close Month, Expected Revenue (Converted), Amount (Converted) and Forecast Alert. Selection and ordering are a display concern, so the API response and the WIN contract are untouched, a column the report adds later is kept behind the ordered ones, and each column keeps the cell index it has in row.cells. Numeric cells are right-aligned and non-wrapping, dates non-wrapping, and padding and type sizes are tightened so the table fits a laptop width. Summary: four fixed cards below the title — Total Opportunities, Total Amount, Total Expected Revenue and Total WON SOW Signed — reading the snapshot-wide summary, with an em dash for a column the report does not provide. Stage breakdown: a compact grid of clickable tiles, one per stage, each showing its count, Amount and Expected Revenue, ordered down the pipeline. A tile drills the table into that stage via the new Reports API drilldown, which leaves the summary intact so the breakdown does not collapse to the selected stage; the tile is highlighted and aria-pressed, and clicking it again or Clear stage releases it. Layout: the stage breakdown and the date range filter now share a two-column row beneath the cards, stacking below 1100px. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
QA verified the desktop scrollbar was gone but asked for more room between the Submission ID and Submission Date values, which ran together when a submission id and month name were both long. Rebalance the Marathon My Submissions fixed-layout column widths toward those two columns and raise the cell padding from 8px to 12px. The total column budget stays at 1040px, so the scroll-free threshold proven in the original PM-6311 fix is unchanged. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
The engagements Status facet offered "Open for application" and "Completed". The Aug 2026 Opportunities design asks for "Open for application" and "My engagements" instead, covering the member's open, in-progress, and completed engagements in one list. Swap the second engagements status option, drop the now-duplicated ownership checkbox for that domain only, and translate the new option into an ownership-scoped, status-unrestricted query so no lifecycle stage is hidden. Anonymous visitors never see the option. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Opening a topic from the challenge Forum tab swaps the panel contents without changing the route, so the browser kept the previous scroll offset and a member who opened a topic from far down the list landed past the end of the discussion. Reset the vertical scroll when a topic is opened, when one is created, and when the member returns to the topic list. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Editing a saved private engagement could not add or replace a member. Picking a member opens the Assign Member dialog, but the editor's autosave (and any SWR revalidation of the engagement) calls reset() with the API's view of the engagement. The API cannot report a member whose assignment details are still being entered, so the reset cleared the handle underneath the open dialog - the dialog's Member line changed to "-", its Save wrote an empty member handle, the row fell back to "No details added", and the final save dropped the member. Suspend autosave and defer engagement-driven resets while the Assign Member dialog is open, applying the deferred reset only when the incoming engagement, lead prefill, or project actually changed so unrelated edits survive. Also merge any not-yet-persisted assignment slot back in on every reset. No engagements-api-v6 change is needed: the update endpoint already creates the assignment and sends the offer email once assignmentDetails names the member. Also add the missing ~/config mock that kept EngagementPrivateSection.spec.tsx from running. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
PM-6392 Sales dashboard redesign: compact table, summary cards and stage filtering
The checkpoint tabs were the only submitter-facing tabs deciding "is this row mine?" from the challenge resource list rather than the signed-in member id, which every other tab uses. Match the rest of the app and add the signed-in member id, so an unresolved or incomplete resource list cannot empty the Checkpoint Submission, Checkpoint Screening, and Checkpoint Review tabs. Also add the two role flags and the screening-result callback that were missing from the filter memo dependency lists, which could leave a stale filtered list after roles resolve. The underlying PM-6340 defect is in review-api-v6; this is hardening. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
PM-6316: Allow adding/replacing members on a saved private engagement
PM-6311: More spacing between MM Submission ID and Submission Date
The ticket asks for "My engagements" to carry Applied and Accepted tags. The accepted state already rendered as an accepted-styled pill, but its label read "Selected" while My Work called the same state "Accepted". Map accepted, approved, and selected to "Accepted" so the browse cards, the design, and My Work agree. The pill styling is unchanged: the normalized state key is already in the accepted group, so it keeps the green treatment and check icon. Assignment bucketing is unaffected because it keys off the raw status rather than the label. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
PM-6369: Reset the scroll position when a forum post is opened
PM-6335: Engagements list filter shows Open for application and My engagements
PM-6340: Harden the review app checkpoint tabs for submitters
Resolve conflicts in package.json and yarn.lock: - package.json: keep the Storybook 8.6.18 upgrade from this branch while dropping @sprig-technologies/sprig-browser, which dev removed. - yarn.lock: rebased onto dev's lockfile and regenerated with yarn so the security pins (@topcoder-platform/tc-auth-lib, @topcoder-platform/remark-gfm-v4, postcss/nanoid 3.3.18, Storybook 8) apply on top of dev's new dependencies. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
fix: remediate September 2026 security findings
Request Copilot is needed during the initial phase of a project, before a Salesforce opportunity or billing account exists, so the project challenges page no longer hides it when the project has no billing account. The action stays gated on the admin/manager role and on the project not being cancelled or completed. Adds a "View Request" action beside it that opens a modal listing the copilot opportunities created for the project, each linking to its Copilots app details page. The list is read from GET /projects/copilots/opportunities filtered by projectId, which already supports that filter, so no API change is needed. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
PM-6328 Request Copilot & View Request from Work App
Key Win was rendered inside the grey summary grid at the top of the showcase preview and the published showcase page. Move it out of that grid and render it as a body section after Business Impact Realised, so it reads like the rest of the story content. Key Win is a plain text field (FormTextField, max 255), so ShowcasePostStorySection now carries an isRichText flag and both consumers render plain text sections directly instead of passing them through renderRichTextToHtml, which would markdown-parse the value. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
…enge Marathon Match challenge details were already public, but the leaderboard that makes a running match worth watching was not: the Submissions tab needed a signed-in member and the Dashboard tab needed registration or an administrator role. Anyone following a live match had to sign in first. Marathon Matches now list the Submissions leaderboard for signed out visitors, and the metadata-gated Dashboard tab no longer requires member tab access. Other challenge types keep the existing sign-in handoff. Review API stays the authority for what a visitor may read: it re-checks challenge whitelist and group visibility, and it withholds member-private submission fields from anonymous callers. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
PM-6367 Move Key Win below Business Impact Realised in showcase
The gig apply page kept the scroll offset carried over from the gig details page, so clicking Apply after scrolling opened the form mid-page. Reset the window scroll on mount, matching the gig details page behavior. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
The competition card metric column was 195px wide and the count cell was the flexible column, so a three-digit registrants count was truncated to "1...". Widen the metric column and size the value column to its content so the label absorbs any shortfall instead of the number. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
PM-6293: Make MM Leaderboard Public during the challenge
PM-6404: Include H4 sections in challenge table of contents
…ore-completion PM-6234: Withhold final score during system testing
…-my-role PM-6398: Show My Role to review submitters
…ngagement-details PM-6335: Open assigned private engagement details
…t-awards PM-6294: Show checkpoint awards in challenge header
PM-6363: Correct SMU labels in Work forms
…search PM-6409: Search engagements by assigned member handle
PM-6406 PM-6401: fix QA timeline and winners header issues
…ties PM-6411 Fix unintended challenge timeline scrollbar
…ties PM-6410 Show stalled status on competition cards
…ties PM-6413 Keep second-place winner badge circular
…ties PM-6414 Remove completed engagement listing filter
…ties PM-6412 Show zero final scores on winner podium cards
…al-icon PM-6389: Center Approval phase checkmark
…ments PM-6335: Filter ended engagements and restore private details
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.
https://topcoder.atlassian.net/browse/PM-6392
https://topcoder.atlassian.net/browse/PM-6311
https://topcoder.atlassian.net/browse/PM-6335
https://topcoder.atlassian.net/browse/PM-6369
https://topcoder.atlassian.net/browse/PM-6316
https://topcoder.atlassian.net/browse/PM-6340
https://topcoder.atlassian.net/browse/PM-6335
https://topcoder.atlassian.net/browse/PM-6328
https://topcoder.atlassian.net/browse/PM-6325
https://topcoder.atlassian.net/browse/PM-6336
https://topcoder.atlassian.net/browse/PM-6337
https://topcoder.atlassian.net/browse/PM-6338
https://topcoder.atlassian.net/browse/PM-6339
https://topcoder.atlassian.net/browse/PM-6342
https://topcoder.atlassian.net/browse/PM-6345
https://topcoder.atlassian.net/browse/PM-6351
https://topcoder.atlassian.net/browse/PM-6352
https://topcoder.atlassian.net/browse/PM-6374
https://topcoder.atlassian.net/browse/PM-6375
https://topcoder.atlassian.net/browse/PM-6382
https://topcoder.atlassian.net/browse/PM-6383
https://topcoder.atlassian.net/browse/PM-6384
https://topcoder.atlassian.net/browse/PM-6385
https://topcoder.atlassian.net/browse/PM-6386
https://topcoder.atlassian.net/browse/PM-6387
https://topcoder.atlassian.net/browse/PM-6388
https://topcoder.atlassian.net/browse/PM-6389
https://topcoder.atlassian.net/browse/PM-6390
https://topcoder.atlassian.net/browse/PM-6391
https://topcoder.atlassian.net/browse/PM-6325
https://topcoder.atlassian.net/browse/PS-616
https://topcoder.atlassian.net/browse/PM-6402
https://topcoder.atlassian.net/browse/PM-6406
https://topcoder.atlassian.net/browse/PM-6403
https://topcoder.atlassian.net/browse/PM-6407
https://topcoder.atlassian.net/browse/PM-6401
https://topcoder.atlassian.net/browse/PM-6405
https://topcoder.atlassian.net/browse/PM-6408
https://topcoder.atlassian.net/browse/PM-6400