Repository navigation
Conversation
jmgasper
commented
Oct 28, 2026
Collaborator
- PM-5739
- PM-6614
- PM-6632
- PM-6648
- PM-6653
- PM-6658
- PM-6660
- PM-6662
- PM-6663
- PM-6664
- PM-6667
- PM-6668
- PM-6669
- PM-6672
What was broken The monthly dashboards had no headline figures. The executive overview attachment opens each chart with the current month's value and its change from the previous month. What was changed Each chart now shows its current UTC month value in full, the change from the full previous month (relative %, or percentage points for percent charts) and a caption. Stacked charts headline their total and single-series charts their value. Flexible talent headlines each series, because its series can't be added. Pipeline charts grouped by close date that extend past this month are captioned "including expected closes". When nothing is recorded for the current month yet, such as revenue, which is recognized at month end, the latest month with data is headlined and named instead of showing "$0, -100%". The headlines are derived in the UI from existing API data, so the API is unchanged. The README and the page notice are updated. Any added/updated tests New tests cover stack totals, rises and falls, per-series figures, percentage points, an unknown or zero previous month, captions with and without expected closes, the latest-recorded-month fallback, a chart that ends before today, and rendering through the page for both pipeline date bases. All 152 Sales and Reports app tests pass. yarn lint and the production build pass; the build has only the existing warnings from other packages. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
What was broken The opportunities challenge sidebar listed the manual review in Review Style only as "Manual". Members could not open the scorecard the manual review uses. The design asks for "Manual: Scorecard Link". Root cause The sidebar only knew the AI review config mode. It never read the challenge review definition (challenge.reviewers), which holds the member reviewer's scorecardId. The opportunities models did not type those reviewer fields or the phase type id the reviewers point to. What was changed - Added challengeManualReviewScorecardId and challengeManualReviewScorecardUrl to challenge-detail.utils. They pick the member (non-AI) reviewer on the Review phase, falling back to Iterative Review, and build the public Review App scorecard URL (REVIEW_APP_URL/scorecard/<id>). - ChallengeSidebar passes that URL to ReviewStyleSection. The Manual bullet now reads "Manual: Scorecard Link" with the existing tooltip. The link is only added when no AI review config exists. - Typed ChallengeReviewer isMemberReview/phaseId/scorecardId and ChallengePhase phaseId. Added/updated tests - challenge-detail.utils.spec.ts covers Review phase selection, the Iterative Review fallback, id encoding, and ignoring AI and screening reviewers. - ChallengeSidebar.spec.tsx covers the Manual scorecard link and checks that AI review modes do not get the link. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
What was broken The Marathon Match Tournament "Forums" link (https://discussions.topcoder.com/categories/marathon-match-tournament-2026) redirected to https://topcoder.com/opportunities/challenge/marathon-match-tournament-2026, which shows "Competition not found". Every other retired discussions.topcoder.com category URL was redirected the same way, and every old thread URL dropped users on the forums home page instead of the migrated thread. Root cause The hand-published CloudFront viewer-request function discussions-topcoder-retirement-redirect (distribution E1PCI0WVJ2HCEF) treated every /categories/<code> URL as a challenge forum. Only challenge categories use a challenge UUID as their Vanilla URL code. Community categories such as marathon-match-tournament-2026 were migrated by the forums-api-v6 public import to their own forums.topcoder.com categories, but the function had no mapping for them or for migrated threads. The function source was not in any repo. What was changed - Added infrastructure/discussions-redirect/viewer-request.js, the corrected function source: - /categories/<challenge UUID> now opens the challenge forum tab (?tab=forum). - The 57 migrated Vanilla category URL codes open https://forums.topcoder.com/category/<id>, including /pN pages, trailing slashes, mixed case and percent-encoding. - The 1,357 migrated public /discussion/<id>/... threads open https://forums.topcoder.com/thread/<id>. - Everything else still goes to the forums home. Query parameters are still preserved. - Forums IDs are computed with the same deterministic hash as forums-api-v6 publicImportId, so the function embeds only Vanilla IDs and stays under the 10 KB CloudFront Functions limit. - Added a README with the mapping source, the regeneration notes, and the deploy/rollback steps for the unmanaged production function. Tests - Added infrastructure/discussions-redirect/routing.test.cjs (node --test). It covers the tournament category, other categories, challenge categories, migrated and unmigrated threads, fallbacks, mapping integrity and the size limit. All 6 pass; all 6 fail against the current live function code. - Checked against production forums data, read-only: all 57 categories and 1,357 threads resolve to existing forums rows, and no unmigrated DiscussionID below 40,000 maps to a thread. - Ran in the real cloudfront-js-2.0 runtime through a temporary, unattached dev-account function (deleted afterwards). Compute utilization was 12-15. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
PM-6648: Link manual review scorecard in challenge Review Style
PM-6614: Redirect retired Vanilla forum URLs to migrated forums
PM-6632: Add headline figures to the monthly sales dashboards
- Rename the system-admin tab from "Machine Access · DEV" to "M2M". - Scope catalog: replace Refresh with a green "Add scope" button that opens the create/repair form in a BaseModal dialog. - Manage client: list the client's saved allowed scopes first, then the remaining scopes, each sorted by name, with a scope-name search filter. - Manage client: "Copy client secret" fetches the current secret from the new audited backend route (POST clients/:id/secret) and writes it to the clipboard without rendering it, revealing it only if clipboard access is blocked. The one-time credential panel also gets a copy button. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
M2M admin tab: scope dialog, allowed-first scope search, copy client secret
What was broken The Opportunities challenge forum had no way to share a direct link to a topic or a message. The open topic lived only in component state, so the URL never changed, and a pasted challenge link always landed on the topic list. Root cause ChallengeForum tracked the selected topic in local state that was never read from or written to the URL. ChallengeDetailsPage only understood the `tab` query parameter, so there was no URL that could reopen a topic or point at a post. What was changed - Topic cards and posts in the Opportunities forum have a "Copy link" action. It copies `…/challenge/<id>?tab=forum&topicId=<topic>` for a topic, and adds `&postId=<post>` for a message. The link keeps the current host and path, so TopGear and subdomain hosts link back to themselves. A toast confirms the copy or reports clipboard failures. - Opening a pasted link opens the Forum tab on that topic and marks it read. A message link also scrolls to the post and outlines it in the forum teal. - The Forum tab writes the open topic back to `topicId` (replace navigation), so the address bar also links to the open topic. Leaving the Forum tab drops `topicId`/`postId`. - New helpers `challengeForumLink` and `challengeForumLinkTargetFromSearch` in challenge-detail-route.utils. - New 20px teal `copyLink` forum icon. It is the existing Figma link glyph without its plus. - The shared ForumTopicCard/ForumTopicView only show the action when a callback is passed, so the public forums app is unchanged. Added/updated tests - challenge-detail-route.utils.spec: link building and query parsing. - ChallengeForum.spec: copying topic and message links, clipboard failure toasts, and opening a linked topic that scrolls to and highlights the linked post and reports topic changes. - ChallengeDetailsPage.flows.spec: a shared link reaches the forum, the open topic is kept in the URL, and it is dropped when leaving the Forum tab. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
What was broken The work app's Marathon Match scorer settings had no memory setting, so a copilot or manager could not run a match with anything other than the default scorer memory. Root cause The scorer config editor, model and service did not expose the memoryLimit setting that the marathon-match API now supports (marathon-match-api-v6 PM-5739). What was changed - Added a "Memory Limit (MB)" number field to Scorer Settings, after Compile Timeout. New configs are filled from the API default (GET /challenge/defaults memoryLimit, 2048 MB, the current value for all MMs). Saved configs without a memory limit show that default too, and it does not count as an unsaved change. - The field must be an integer of at least 512 MB. The API returns a clear error for sizes that Fargate does not support for the task definition CPU. - The memory limit is sent on create and update, read from config responses (null when unset), and included in unsaved-change detection. - Updated model docs and added JSDoc for mapConfigToDraft and normalizeMarathonMatchDefaults. Added/updated tests - MarathonMatchScorerSection.spec.tsx: field defaults to 2048, an empty value shows the validation error, an edited value is saved, and a saved config without a memory limit shows the default without unsaved changes. - marathon-match.service.spec.ts: defaults memoryLimit, null memoryLimit for configs without one, and memoryLimit sent on update. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
PM-5739: add memory limit field to MM scorer settings
PM-6653: Add copy link for forum topics and messages
…-dev Show the full April–March fiscal year in sales dashboards -> dev
PM-6660: Update pipeline bookings, filters and column order
…M-6664_wallet-admin-duplicate-payment-report
…duplicate-payment-report PM-6664 wallet admin duplicate payment report
PM-6667: Update sales dashboards and customer payment reporting
Remove Keycloak M2M administration -> dev
PM-6668: Add annual totals and complete customer tables
PM-6663 - create payment
…le-payment PM-6664 - indicate double payments in wallet admin
…ries PM-6658 - admin add entries
…et-entry-delete PM-6662 allow timesheet entry delete
…wups-dev Update sales fiscal-year titles, date defaults and customer totals
PM-6672: consolidate Sales dashboards, filters and customer totals
PM-6672: show selectable breakdowns and expandable customer reports
…ts-page PM-6669 - enhancements for assignments page
Preserve sales dashboard headlines, tests, and documentation alongside the shared totals and customer reporting changes. Bring in the remaining master updates without changing their contents.
Resolve release PR #2574 conflicts by merging master into dev
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.