Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
551 commits
Select commit Hold shift + click to select a range
9e82bdc
Merge pull request #1612 from topcoder-platform/PM-4664
jmgasper Apr 3, 2026
35d675c
Merge pull request #1623 from topcoder-platform/PM-4648-1
jmgasper Apr 3, 2026
72af498
PM-4559: fix Devin review regressions
jmgasper Apr 3, 2026
ebf4273
Merge pull request #1617 from topcoder-platform/PM-4559
jmgasper Apr 3, 2026
c9fe219
Merge remote-tracking branch 'origin/dev' into PM-4637-1
jmgasper Apr 3, 2026
4981fc4
Merge pull request #1605 from topcoder-platform/PM-4490
himaniraghav3 Apr 3, 2026
2542179
QA updates
jmgasper Apr 3, 2026
fb44ac3
Merge branch 'dev' of github.com:topcoder-platform/platform-ui into dev
jmgasper Apr 3, 2026
ad026e6
PM-4477 Show failed submissions in appeals response tab
himaniraghav3 Apr 3, 2026
1f5c3ef
Merge pull request #1624 from topcoder-platform/PM-4477-fix
himaniraghav3 Apr 3, 2026
bae6089
PM-4686: block challenge launch for invalid billing accounts
jmgasper Apr 3, 2026
c1759bb
PM-4680: fix task timeline visibility in challenge details
jmgasper Apr 3, 2026
8091517
PM-4705: remove redundant submission history action
jmgasper Apr 3, 2026
6cf067f
PM-4712: preserve valid reviewer scorecards during initial load
jmgasper Apr 3, 2026
d37f984
PM-4713: Hide edit actions for completed challenges
jmgasper Apr 3, 2026
c246adb
PM-4709: restore AI review details in challenge view mode
jmgasper Apr 3, 2026
598217c
PM-4711: show TaaS role and workload validation errors
jmgasper Apr 3, 2026
eaa26ae
PM-4702: return challenge saves to view mode
jmgasper Apr 3, 2026
2c14044
PM-4559: stretch first multi-prize row
jmgasper Apr 3, 2026
cb43a26
PM-4708: prevent repeated AI config reloads in challenge edit
jmgasper Apr 3, 2026
b39c2d4
PM-4564: restore Gantt toggle in challenge view mode
jmgasper Apr 3, 2026
523b131
PM-4707: add spacing to AI workflow headings
jmgasper Apr 3, 2026
d2d1438
PM-4706: restore review type on manual reviewer cards
jmgasper Apr 3, 2026
37ca1ea
PM-4701: restore project manager project edit access
jmgasper Apr 3, 2026
d2aaf9d
PM-4700: allow project managers to create projects
jmgasper Apr 3, 2026
a18705f
PM-4697: exclude point prizes from dollar billing totals
jmgasper Apr 3, 2026
d03db61
PM-4694: populate edit assignment modal on first open
jmgasper Apr 3, 2026
780e3b5
PM-4693: sort all engagements by newest created date
jmgasper Apr 3, 2026
c373134
PM-4710: restore gating workflow guidance
jmgasper Apr 3, 2026
ffcccd5
PM-4538: defer member-scoped challenge fetches until auth resolves
jmgasper Apr 3, 2026
9e39e0a
PM-4637: redirect engagement saves to the project list
jmgasper Apr 3, 2026
b09604b
PM-4645: restore invited project modal routing
jmgasper Apr 3, 2026
c02832b
PM-4676: Restore draft cancel action in work challenge view
jmgasper Apr 3, 2026
08ccffc
PM-4565: align challenge start mode controls
jmgasper Apr 3, 2026
4ba63c0
PM-2515: keep winners hidden until approval passes
jmgasper Apr 3, 2026
8b2eba4
PM-2691: restore legacy past challenge review and winner data
jmgasper Apr 3, 2026
29947a1
PM-2763: add regression coverage for achievement stats
jmgasper Apr 3, 2026
1ac6b52
Merge pull request #1620 from topcoder-platform/PM-4637-1
jmgasper Apr 4, 2026
9474d8e
Merge pull request #1627 from topcoder-platform/PM-4705
jmgasper Apr 4, 2026
b5449ee
Merge pull request #1628 from topcoder-platform/PM-4712
jmgasper Apr 4, 2026
d557496
Merge pull request #1629 from topcoder-platform/PM-4713
jmgasper Apr 4, 2026
df1eb98
Merge pull request #1631 from topcoder-platform/PM-4711
jmgasper Apr 4, 2026
f5700bf
Merge pull request #1633 from topcoder-platform/PM-4559-2
jmgasper Apr 4, 2026
a694c33
Merge pull request #1634 from topcoder-platform/PM-4708
jmgasper Apr 4, 2026
16aff41
Merge pull request #1635 from topcoder-platform/PM-4564
jmgasper Apr 4, 2026
4ea17f5
Merge pull request #1636 from topcoder-platform/PM-4707
jmgasper Apr 4, 2026
d1af725
Merge pull request #1637 from topcoder-platform/PM-4706
jmgasper Apr 4, 2026
ce65a27
PM-4686: preserve handled launch block errors
jmgasper Apr 4, 2026
7b9570f
Merge pull request #1638 from topcoder-platform/PM-4701
jmgasper Apr 4, 2026
3c26fd2
Merge pull request #1640 from topcoder-platform/PM-4697
jmgasper Apr 4, 2026
8c209cd
Merge pull request #1641 from topcoder-platform/PM-4694
jmgasper Apr 4, 2026
2c88339
Merge pull request #1642 from topcoder-platform/PM-4693
jmgasper Apr 4, 2026
91df007
Merge pull request #1644 from topcoder-platform/PM-4538-1
jmgasper Apr 4, 2026
13c2a15
Merge pull request #1646 from topcoder-platform/PM-4645-2
jmgasper Apr 4, 2026
f4ee4b6
Merge pull request #1645 from topcoder-platform/PM-4637-2
jmgasper Apr 4, 2026
b696743
Merge pull request #1649 from topcoder-platform/PM-4676-1
jmgasper Apr 4, 2026
f249c80
Merge pull request #1650 from topcoder-platform/PM-4565-1
jmgasper Apr 4, 2026
adc7ec9
Merge pull request #1651 from topcoder-platform/PM-2515-1
jmgasper Apr 4, 2026
f88b306
Merge pull request #1653 from topcoder-platform/PM-2763
jmgasper Apr 4, 2026
37af8d2
Merge pull request #1625 from topcoder-platform/PM-4686
jmgasper Apr 4, 2026
7a22f76
Fix standard term defaulting in challenge view mode
jmgasper Apr 4, 2026
03d8842
Fix AI threshold display fallback
jmgasper Apr 4, 2026
4572d03
Add view mode path save dependency
jmgasper Apr 4, 2026
707bd89
Restore auto-finalize label styling
jmgasper Apr 4, 2026
94f76e0
Restrict specification submission tab entries
jmgasper Apr 4, 2026
95834ad
Merge pull request #1652 from topcoder-platform/PM-2691
jmgasper Apr 4, 2026
df232de
Merge branch 'dev' into PM-4680-1
jmgasper Apr 4, 2026
8250b35
Merge branch 'dev' into PM-4709
jmgasper Apr 5, 2026
0ff5239
PM-4623_item2
jmgasper Apr 5, 2026
11e0540
PM-4680: restore view-mode terms guard
jmgasper Apr 5, 2026
c62ba42
Fix review tab keyboard navigation
jmgasper Apr 5, 2026
998fa89
Merge branch 'dev' into PM-4702
jmgasper Apr 5, 2026
a1438d0
Align challenge groups and terms fields
jmgasper Apr 5, 2026
fc3651d
Merge pull request #1654 from topcoder-platform/PM-4623_item2
jmgasper Apr 5, 2026
a0a3249
Merge pull request #1655 from topcoder-platform/groups_alignment
jmgasper Apr 5, 2026
29403d7
Fix invitation acceptance modal redirect
jmgasper Apr 5, 2026
2370e30
QA Fixes
jmgasper Apr 5, 2026
c9a3e00
Merge branch 'PM-4667' of github.com:topcoder-platform/platform-ui in…
jmgasper Apr 6, 2026
b7df92b
Merge origin/dev into codex/pm-4645-invite-accept-fix
jmgasper Apr 6, 2026
7b8dd96
Merge remote-tracking branch 'origin/dev' into PM-4667
jmgasper Apr 6, 2026
e6c6f8f
Merge pull request #1656 from topcoder-platform/codex/pm-4645-invite-…
jmgasper Apr 6, 2026
a1470d0
Fix challenge total billing summary
jmgasper Apr 6, 2026
f563553
Merge pull request #1657 from topcoder-platform/PM-4667
jmgasper Apr 6, 2026
aa515b5
Merge pull request #1658 from topcoder-platform/Challenge_Total
jmgasper Apr 6, 2026
643f1c4
PM-4680: restore create-route standard term defaulting
jmgasper Apr 6, 2026
b7bc363
Keep review section ordering in view mode
jmgasper Apr 6, 2026
e642af9
Merge pull request #1632 from topcoder-platform/PM-4702
jmgasper Apr 6, 2026
5bae9fb
adjust prizes and billing layout
jmgasper Apr 6, 2026
e80956f
Merge remote-tracking branch 'origin/dev' into PM-4700
jmgasper Apr 6, 2026
436fc48
Merge pull request #1659 from topcoder-platform/prizes_and_billing
jmgasper Apr 6, 2026
36b1090
Merge origin/dev into PM-4710
jmgasper Apr 6, 2026
a9292cc
Merge origin/dev into PM-4709
jmgasper Apr 6, 2026
20cb2b8
Merge pull request #1660 from topcoder-platform/codex/pm-4700-refresh
jmgasper Apr 6, 2026
80889f7
Merge pull request #1630 from topcoder-platform/PM-4709
jmgasper Apr 6, 2026
61bfd5f
Merge pull request #1626 from topcoder-platform/PM-4680-1
jmgasper Apr 6, 2026
d5fa4a0
Merge pull request #1643 from topcoder-platform/PM-4710
jmgasper Apr 6, 2026
fcb10e6
PM-4709: keep review section interactive in view mode
jmgasper Apr 6, 2026
7e5dd5b
PM-4702: normalize challenge editor view routes
jmgasper Apr 6, 2026
4adde66
PM-4680: hide task timeline on challenge create route
jmgasper Apr 6, 2026
27c0a17
PM-4713: hide edit for cancelled challenges
jmgasper Apr 6, 2026
4def107
Merge pull request #1661 from topcoder-platform/PM-4702
jmgasper Apr 6, 2026
a944335
Merge pull request #1663 from topcoder-platform/PM-4680
jmgasper Apr 6, 2026
9b5f528
Remove unlimited submission flag
jmgasper Apr 6, 2026
9160828
Merge pull request #1662 from topcoder-platform/PM-4713
jmgasper Apr 6, 2026
1a7bba6
Merge pull request #1664 from topcoder-platform/unlimited_flag
jmgasper Apr 6, 2026
82b6945
PM-4709: align review summary with work-manager
jmgasper Apr 6, 2026
f7a9a56
Restore gating workflow lightning icon
jmgasper Apr 6, 2026
7a3d957
Merge origin/dev into codex/pm-4709-summary-polish
jmgasper Apr 6, 2026
2cf9dc5
PM-4623: point wallet-admin links at Work Manager
jmgasper Apr 6, 2026
d6df224
PM-4760: align copilot fee field with prizes
jmgasper Apr 6, 2026
08d7ef8
PM-4759: scope project billing account search by user
jmgasper Apr 6, 2026
1659cd6
PM-4716: stop repeated engagement autosave retries
jmgasper Apr 6, 2026
f9c0c52
PM-4715: align add group button with groups label
jmgasper Apr 6, 2026
8df67ec
PM-4714: hide project engagements tab for unauthorized roles
jmgasper Apr 6, 2026
f4881a5
PM-4747: always open projects on challenges
jmgasper Apr 6, 2026
2ef88b0
PM-4645: restore re-invite invitation gating
jmgasper Apr 6, 2026
2511ed3
PM-4564: reset Gantt view when entering edit mode
jmgasper Apr 6, 2026
2573726
PM-4695: add reject actions for engagement approver payments
jmgasper Apr 6, 2026
04758ce
PM-2691: restore legacy review matching for old challenges
jmgasper Apr 6, 2026
808e931
PM-2515: match continuation approval reviews by phase name
jmgasper Apr 6, 2026
5a437f7
PM-4710: clarify gating workflow helper copy
jmgasper Apr 6, 2026
fa9a70d
PM-4559: restore first multi-prize row alignment
jmgasper Apr 6, 2026
fa04a56
Merge pull request #1666 from jmgasper/codex/pm-4710-gating-bolt-icon
jmgasper Apr 6, 2026
6648faa
Merge pull request #1667 from topcoder-platform/PM-4623-1
jmgasper Apr 6, 2026
1eff89d
Merge pull request #1668 from topcoder-platform/PM-4760
jmgasper Apr 6, 2026
844b4d4
Merge pull request #1671 from topcoder-platform/PM-4715
jmgasper Apr 6, 2026
b7369f0
Merge pull request #1672 from topcoder-platform/PM-4714
jmgasper Apr 6, 2026
98d183f
Merge pull request #1673 from topcoder-platform/PM-4747
jmgasper Apr 6, 2026
08a1ccd
Merge pull request #1674 from topcoder-platform/PM-4645-3
jmgasper Apr 6, 2026
530a699
Merge pull request #1675 from topcoder-platform/PM-4564-1
jmgasper Apr 6, 2026
bbbf6b4
Merge pull request #1676 from topcoder-platform/PM-4695
jmgasper Apr 6, 2026
d7e4fe0
Merge pull request #1677 from topcoder-platform/PM-2691-1
jmgasper Apr 6, 2026
6dfcd7b
Merge pull request #1678 from topcoder-platform/PM-2515-2
jmgasper Apr 6, 2026
47c87b0
Merge pull request #1669 from topcoder-platform/PM-4759
jmgasper Apr 6, 2026
a67097e
PM-4716 preserve pending autosave across rerenders
jmgasper Apr 6, 2026
aade2f4
Merge pull request #1665 from topcoder-platform/codex/pm-4709-summary…
jmgasper Apr 6, 2026
4cd8a76
Merge pull request #1679 from topcoder-platform/PM-4710-1
jmgasper Apr 6, 2026
0bc4ebe
Merge pull request #1680 from topcoder-platform/PM-4559-3
jmgasper Apr 6, 2026
f3fc7bb
Merge pull request #1670 from topcoder-platform/PM-4716
jmgasper Apr 6, 2026
ecf05fe
QA Fixes
jmgasper Apr 6, 2026
89cad82
Fix project navigation invite redirects
jmgasper Apr 6, 2026
03456ef
Fix prizes and billing labels
jmgasper Apr 6, 2026
569163b
Merge
jmgasper Apr 6, 2026
4921266
Remove design challenge submission limit controls
jmgasper Apr 6, 2026
f0c7cf7
Fix review configuration summary display
jmgasper Apr 7, 2026
b438a0d
Merge pull request #1681 from topcoder-platform/project_navigation_fix
jmgasper Apr 7, 2026
7cd1a8c
Merge pull request #1682 from jmgasper/prizes_and_billing
jmgasper Apr 7, 2026
fa8c953
Resolve ProjectCard spec merge conflict
jmgasper Apr 7, 2026
35dc7fa
Merge pull request #1685 from topcoder-platform/engagements_tab
jmgasper Apr 7, 2026
468d57d
Merge pull request #1684 from topcoder-platform/review_configuration
jmgasper Apr 7, 2026
70efc93
QA fixes for work app
jmgasper Apr 7, 2026
7b93c47
Defer submission limit dirty state until hydration
jmgasper Apr 7, 2026
62b68f5
Merge pull request #1683 from topcoder-platform/limit_flag
jmgasper Apr 7, 2026
c870efb
QA Fixes
jmgasper Apr 7, 2026
872d9de
Better BA autocomplete for project managers
jmgasper Apr 7, 2026
aada328
Render approve escalation action in IR table
vas3a Apr 7, 2026
d85132b
Merge pull request #1686 from topcoder-platform/fix-escalations-rende…
vas3a Apr 7, 2026
4679249
PM-4778 / PM-4784
jmgasper Apr 7, 2026
f94e055
PM-4784: preserve manual AI workflow mode after template switch
jmgasper Apr 7, 2026
c877dce
PM-2691: restore legacy review and winner rows
jmgasper Apr 7, 2026
d7cf284
PM-4785: preserve AI gating selections during reviewer sync
jmgasper Apr 7, 2026
9badbba
PM-4783: lock AI review after submissions start
jmgasper Apr 7, 2026
00209d1
PM-4780: render challenge name input text in black
jmgasper Apr 7, 2026
554f6d9
Merge pull request #1688 from topcoder-platform/PM-4784
jmgasper Apr 7, 2026
5d289a8
Merge pull request #1689 from topcoder-platform/PM-2691-2
jmgasper Apr 7, 2026
ae02f85
Merge pull request #1691 from topcoder-platform/PM-4783
jmgasper Apr 7, 2026
a661565
Merge pull request #1692 from topcoder-platform/PM-4780
jmgasper Apr 7, 2026
fe43726
Merge remote-tracking branch 'origin/dev' into PM-4785
jmgasper Apr 7, 2026
9c1ea45
Merge pull request #1690 from topcoder-platform/PM-4785
jmgasper Apr 7, 2026
14a319a
PM-4785: clear AI review template link on manual save
jmgasper Apr 8, 2026
548dd43
Merge pull request #1693 from topcoder-platform/PM-4785
jmgasper Apr 8, 2026
2ff91c4
PM-4797: return new draft saves to view mode
jmgasper Apr 8, 2026
2cf9781
Merge pull request #1694 from topcoder-platform/PM-4797
jmgasper Apr 8, 2026
04f02b4
PM-4796: match edit button size with header actions
jmgasper Apr 8, 2026
9caa14f
PM-4791: hide duplicate review tabs in view mode
jmgasper Apr 8, 2026
3903524
PM-4790: keep edit billing-account search consistent
jmgasper Apr 8, 2026
ba0f448
Merge pull request #1695 from topcoder-platform/PM-4796
jmgasper Apr 8, 2026
15ee4af
Merge pull request #1696 from topcoder-platform/PM-4791
jmgasper Apr 8, 2026
fb08034
PM-4790: stabilize edit billing-account search cache
jmgasper Apr 8, 2026
c3c9336
Merge pull request #1697 from jmgasper/PM-4790
jmgasper Apr 8, 2026
8d04fad
PS-537 restrict manual submission handles
jmgasper Apr 8, 2026
3d45ee0
Remove bulk prefix from payment action labels
jmgasper Apr 8, 2026
d818dac
Merge pull request #1699 from jmgasper/bulk_reject
jmgasper Apr 8, 2026
5011223
Merge pull request #1698 from jmgasper/PS-537
jmgasper Apr 8, 2026
b84ba33
PM-4801: preserve F2F manual review types on launch
jmgasper Apr 8, 2026
bb85ea7
PM-4808: reload saved AI configs in edit mode
jmgasper Apr 8, 2026
772af6b
PM-4615-4617 Talent Search UI and integration with API
himaniraghav3 Apr 8, 2026
550a7c6
Add pagination, manual skill addition, final layout and css
himaniraghav3 Apr 8, 2026
1ed147c
PM-4808: avoid AI config reload after delete
jmgasper Apr 8, 2026
cfac403
PM-4801: reapply manual review type backfill after defaults load
jmgasper Apr 8, 2026
56de85b
Merge pull request #1700 from topcoder-platform/PM-4801
jmgasper Apr 9, 2026
7e0e7c9
Merge pull request #1701 from topcoder-platform/PM-4808
jmgasper Apr 9, 2026
fe37fa1
Fixes for QA, including PM-4776
jmgasper Apr 9, 2026
9683080
Merge pull request #1706 from topcoder-platform/PM-4776
jmgasper Apr 9, 2026
9713f9d
Add missing awaits and fix dependency array
himaniraghav3 Apr 9, 2026
424bef2
Mobile review flow fix
jmgasper Apr 9, 2026
ad4aeb8
Fix mobile view
himaniraghav3 Apr 9, 2026
92adf00
Merge pull request #1707 from topcoder-platform/PM-4776
jmgasper Apr 9, 2026
b582f7c
fix member count with country filter and prevent duplicate API search
himaniraghav3 Apr 9, 2026
120335d
Fix devin feedback
himaniraghav3 Apr 9, 2026
38b20aa
Merge pull request #1704 from topcoder-platform/feat-talent-search
himaniraghav3 Apr 9, 2026
73b2d9b
PM-4777: Default All option in Filters
Harshitchudasama Apr 9, 2026
9cb5434
PM-4777: Default All option in Filters
Harshitchudasama Apr 9, 2026
a3aa40a
PM-4777: Default All option in Filters
Harshitchudasama Apr 9, 2026
6d5c7d0
Merge pull request #1708 from topcoder-platform/PM-4777
Harshitchudasama Apr 9, 2026
e2ac418
Fixes for review flow on mobile:
jmgasper Apr 10, 2026
e28ff06
Merge pull request #1709 from topcoder-platform/PM-4776
jmgasper Apr 10, 2026
22ddbaa
PM-4821: preserve immediate challenge start mode
jmgasper Apr 10, 2026
066712e
Merge pull request #1710 from topcoder-platform/PM-4821
jmgasper Apr 10, 2026
00c2619
PM-4823: lock completed challenge schedule rows
jmgasper Apr 10, 2026
d2f6f17
PM-4824: honor actual predecessor end dates in schedule editor
jmgasper Apr 10, 2026
ede24b8
Merge pull request #1711 from topcoder-platform/PM-4823
jmgasper Apr 10, 2026
cc4cd5f
Merge pull request #1712 from topcoder-platform/PM-4824
jmgasper Apr 10, 2026
998a997
PM-4819: Move wallet-admin payment creator into work log section
jmgasper Apr 10, 2026
1d739b7
PM-4814: fix manual phase duration entry
jmgasper Apr 10, 2026
1fd130d
Merge pull request #1713 from topcoder-platform/PM-4819
jmgasper Apr 10, 2026
5f30315
Fix for mobile review view
jmgasper Apr 10, 2026
c761d30
Merge pull request #1715 from topcoder-platform/PM-4814
jmgasper Apr 10, 2026
d568d17
PM-4834: Persist edited phase end dates
jmgasper Apr 10, 2026
7b6671a
Merge pull request #1716 from topcoder-platform/PM-4834
jmgasper Apr 10, 2026
4c55b9a
PM-4827: remove challenge editor attachments section
jmgasper Apr 10, 2026
c026ffb
PM-4835: remove inline group creation from challenge groups
jmgasper Apr 10, 2026
28e3468
PM-4813: show all assigned reviewers in view mode
jmgasper Apr 10, 2026
204d739
Merge pull request #1717 from topcoder-platform/PM-4827
jmgasper Apr 10, 2026
e63155f
Merge pull request #1718 from topcoder-platform/PM-4835
jmgasper Apr 10, 2026
9a69dda
Merge pull request #1719 from jmgasper/PM-4813
jmgasper Apr 10, 2026
331d34b
Tweaks for PM-4834
jmgasper Apr 13, 2026
a7c1b44
Fixes for challenge creation flow
jmgasper Apr 13, 2026
c7d740c
PM-4838: show Mark Complete on task challenge view pages
jmgasper Apr 13, 2026
044a500
PM-4813: restore reviewer assignments after draft save
jmgasper Apr 13, 2026
bd57c3f
Merge pull request #1722 from topcoder-platform/PM-4838
jmgasper Apr 13, 2026
338ce46
fix: keep AI reviewers out of persisted reviewer hydration
jmgasper Apr 13, 2026
8907ec0
Merge pull request #1723 from topcoder-platform/PM-4813-1
jmgasper Apr 13, 2026
6e5a346
PM-4813: preserve reviewer fallback assignments in view mode
jmgasper Apr 13, 2026
b4b56c5
Merge pull request #1724 from topcoder-platform/PM-4813-2
jmgasper Apr 13, 2026
80d7cc7
PM-4840: restore persisted copilot and reviewer assignments on refresh
jmgasper Apr 13, 2026
5ccb224
Clear button clears skills, css updates
himaniraghav3 Apr 13, 2026
433cc49
Update active member tooltip to 3 months
himaniraghav3 Apr 13, 2026
7156519
Return to empty state when Clear filters
himaniraghav3 Apr 13, 2026
db8f076
Merge pull request #1726 from topcoder-platform/feat-talent-search
himaniraghav3 Apr 13, 2026
531587b
PM-4788 Add Topgear payment type in wallet-admin
himaniraghav3 Apr 13, 2026
2f1758c
Fix label for consistency
himaniraghav3 Apr 13, 2026
9189a5d
Update src/apps/wallet-admin/src/home/tabs/payments/PaymentsListView.…
himaniraghav3 Apr 13, 2026
0ba9e96
Merge pull request #1727 from topcoder-platform/PM-4788
himaniraghav3 Apr 13, 2026
95d1914
Fix handle all caps
himaniraghav3 Apr 13, 2026
b7021a8
Merge pull request #1728 from topcoder-platform/feat-talent-search
himaniraghav3 Apr 13, 2026
d3126b6
fix(work): replace legacy copilot resource on save
jmgasper Apr 13, 2026
30b5628
Merge pull request #1725 from topcoder-platform/PM-4840
jmgasper Apr 13, 2026
0db540f
Remove deprecated AI warning banner from review app
jmgasper Apr 13, 2026
acb7b94
Merge branch 'dev' of github.com:topcoder-platform/platform-ui into dev
jmgasper Apr 13, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
5 changes: 5 additions & 0 deletions .env.development
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
REACT_APP_GROUPS_API_URL=https://api.topcoder-dev.com/v6/groups
REACT_APP_TERMS_API_URL=https://api.topcoder-dev.com/v5/terms
REACT_APP_RESOURCES_API_URL=https://api.topcoder-dev.com/v6/resources
REACT_APP_MEMBER_API_URL=https://api.topcoder-dev.com/v6/members
REACT_APP_RESOURCE_ROLES_API_URL=https://api.topcoder-dev.com/v6/resource-roles
5 changes: 5 additions & 0 deletions .env.production
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
REACT_APP_GROUPS_API_URL=https://api.topcoder.com/v6/groups
REACT_APP_TERMS_API_URL=https://api.topcoder.com/v5/terms
REACT_APP_RESOURCES_API_URL=https://api.topcoder.com/v6/resources
REACT_APP_MEMBER_API_URL=https://api.topcoder.com/v6/members
REACT_APP_RESOURCE_ROLES_API_URL=https://api.topcoder.com/v6/resource-roles
10 changes: 10 additions & 0 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,14 @@
"sb:build": "storybook build -o build/storybook"
},
"dependencies": {
"@codemirror/autocomplete": "^6.20.1",
"@codemirror/lang-java": "^6.0.2",
"@codemirror/language": "^6.12.2",
"@codemirror/lint": "^6.9.5",
"@codemirror/search": "^6.6.0",
"@codemirror/state": "^6.6.0",
"@codemirror/theme-one-dark": "^6.1.3",
"@codemirror/view": "^6.40.0",
"@datadog/browser-logs": "^4.50.1",
"@hello-pangea/dnd": "^18.0.1",
"@heroicons/react": "^1.0.6",
Expand All @@ -31,6 +39,7 @@
"@stripe/stripe-js": "1.54.2",
"@tinymce/tinymce-react": "^6.3.0",
"@types/codemirror": "5.60.17",
"@uiw/react-codemirror": "^4.25.8",
"amazon-s3-uri": "^0.1.1",
"apexcharts": "^3.54.1",
"axios": "^1.13.2",
Expand All @@ -51,6 +60,7 @@
"express": "^4.22.1",
"express-fileupload": "^1.5.2",
"express-interceptor": "^1.2.0",
"fflate": "^0.8.2",
"filestack-js": "^3.44.2",
"highcharts": "^10.3.3",
"highcharts-react-official": "^3.2.3",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,8 @@ import {
WearableIcon,
} from '~/apps/accounts/src/lib'

import { shouldUseUpdateTraitAction } from '../trait-action.utils'

import styles from './Devices.module.scss'

interface DevicesProps {
Expand Down Expand Up @@ -315,7 +317,9 @@ const Devices: FC<DevicesProps> = (props: DevicesProps) => {
},
}]

const action = props.devicesTrait ? updateMemberTraitsAsync : createMemberTraitsAsync
const action = shouldUseUpdateTraitAction(props.devicesTrait, deviceTypesData)
? updateMemberTraitsAsync
: createMemberTraitsAsync

action(
props.profile.handle,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,8 @@ import {
TelevisionServiceProviderIcon,
} from '~/apps/accounts/src/lib'

import { shouldUseUpdateTraitAction } from '../trait-action.utils'

import { serviceProviderTypes } from './service-provider-types.config'
import styles from './ServiceProvider.module.scss'

Expand Down Expand Up @@ -216,7 +218,9 @@ const ServiceProvider: FC<ServiceProviderProps> = (props: ServiceProviderProps)
},
}]

const action = props.serviceProviderTrait ? updateMemberTraitsAsync : createMemberTraitsAsync
const action = shouldUseUpdateTraitAction(props.serviceProviderTrait, serviceProviderTypesData)
? updateMemberTraitsAsync
: createMemberTraitsAsync

action(
props.profile.handle,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,8 @@ import { createMemberTraitsAsync, updateMemberTraitsAsync, UserProfile, UserTrai
import { Button, Collapsible, ConfirmModal, IconOutline, InputSelect, InputText } from '~/libs/ui'
import { SettingSection, SoftwareIcon } from '~/apps/accounts/src/lib'

import { shouldUseUpdateTraitAction } from '../trait-action.utils'

import { softwareTypes } from './software-types.config'
import styles from './Software.module.scss'

Expand Down Expand Up @@ -170,7 +172,9 @@ const Software: FC<SoftwareProps> = (props: SoftwareProps) => {
},
}]

const action = props.softwareTrait ? updateMemberTraitsAsync : createMemberTraitsAsync
const action = shouldUseUpdateTraitAction(props.softwareTrait, softwareTypesData)
? updateMemberTraitsAsync
: createMemberTraitsAsync

action(
props.profile.handle,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,8 @@ import { createMemberTraitsAsync, updateMemberTraitsAsync, UserProfile, UserTrai
import { Button, Collapsible, ConfirmModal, IconOutline, InputText } from '~/libs/ui'
import { SettingSection, SubscriptionsIcon } from '~/apps/accounts/src/lib'

import { shouldUseUpdateTraitAction } from '../trait-action.utils'

import styles from './Subscriptions.module.scss'

interface SubscriptionsProps {
Expand Down Expand Up @@ -150,7 +152,9 @@ const Subscriptions: FC<SubscriptionsProps> = (props: SubscriptionsProps) => {
setIsSaving(false)
})
} else {
const action = props.subscriptionsTrait ? updateMemberTraitsAsync : createMemberTraitsAsync
const action = shouldUseUpdateTraitAction(props.subscriptionsTrait, subscriptionsTypesData)
? updateMemberTraitsAsync
: createMemberTraitsAsync
action(
props.profile.handle,
[{
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
import { shouldUseUpdateTraitAction } from './trait-action.utils'

describe('shouldUseUpdateTraitAction', () => {
it('returns true when the initial trait exists', () => {
expect(shouldUseUpdateTraitAction({ traitId: 'software' }, undefined))
.toBe(true)
})

it('returns true when local traits exist even without the initial trait', () => {
expect(shouldUseUpdateTraitAction(undefined, [{ name: 'Chrome' }]))
.toBe(true)
})

it('returns false when both initial and local traits are missing', () => {
expect(shouldUseUpdateTraitAction(undefined, undefined))
.toBe(false)
})
})
13 changes: 13 additions & 0 deletions src/apps/accounts/src/settings/tabs/tools/trait-action.utils.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
import { UserTrait } from '~/libs/core'

/**
* Determine whether tool traits should use update or create action.
* The initial trait prop can be stale while the user stays on the tab,
* so local list state is also considered to avoid duplicate create calls.
*/
export function shouldUseUpdateTraitAction(
initialTrait: UserTrait | undefined,
localTraitsData: UserTrait[] | undefined,
): boolean {
return Boolean(initialTrait || localTraitsData?.length)
}
Original file line number Diff line number Diff line change
Expand Up @@ -24,13 +24,11 @@ import {
Challenge,
ChallengeFilterCriteria,
ChallengePrizeSet,
ChallengeResource,
ChallengeWinner,
} from '../../lib/models'
import {
getChallengeById,
getChallengeResources,
getResourceRoles,
getChallengeSubmitterResources,
updateChallengeById,
} from '../../lib/services'
import {
Expand Down Expand Up @@ -247,54 +245,7 @@ export const ChallengeDetailsPage: FC = () => {

setIsLoadingSubmitters(true)
try {
const roles = await getResourceRoles()
const submitterRoleIds = roles
.filter(role => role.name.toLowerCase()
.includes('submitter'))
.map(role => role.id)

if (submitterRoleIds.length === 0) {
setSubmitterOptions([{ label: 'Select submitter', value: '' }])
setSubmitterHandleByUserId({})
return
}

const resourcesByRole = await Promise.all(
submitterRoleIds.map(async roleId => {
const resources: ChallengeResource[] = []
let page = 1
const perPage = 200
let totalPages = 1

do {
// eslint-disable-next-line no-await-in-loop
const response = await getChallengeResources(challengeId, {
page,
perPage,
roleId,
})
resources.push(...response.data)
totalPages = response.totalPages
page += 1
} while (page <= totalPages)

return resources
}),
)

const deduplicatedByMemberId = new Map<string, ChallengeResource>()
resourcesByRole.flat()
.forEach(resource => {
if (!deduplicatedByMemberId.has(resource.memberId)) {
deduplicatedByMemberId.set(resource.memberId, resource)
}
})

const submitters = Array.from(deduplicatedByMemberId.values())
.sort((left, right) => (
left.memberHandle.localeCompare(right.memberHandle)
))

const submitters = await getChallengeSubmitterResources(challengeId)
const handleMap: Record<string, string> = {}
const options: InputSelectOption[] = [
{ label: 'Select submitter', value: '' },
Expand Down
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
@import '@libs/ui/styles/includes';

.container {
display: flex;
flex-direction: column;
Expand All @@ -6,3 +8,63 @@
.blockTableContainer {
position: relative;
}

.headerButtons {
display: flex;
align-items: center;
gap: $sp-4;
}

.uploadForm {
position: relative;
display: flex;
flex-direction: column;
gap: $sp-6;
width: 100%;
max-width: 620px;
}

.uploadFormFields {
display: flex;
flex-direction: column;
gap: $sp-4;
}

.fileInputContainer {
display: flex;
flex-direction: column;
gap: $sp-1;
}

.inputLabel {
font-family: $font-barlow;
font-weight: $font-weight-semibold;
font-size: 15px;
color: $black-100;
}

.fileInput {
width: 100%;
}

.selectedFile {
font-family: $font-roboto;
font-size: 14px;
color: $black-80;
}

.actionButtons {
display: flex;
justify-content: flex-end;
gap: $sp-4;
}

.dialogLoadingSpinnerContainer {
position: absolute;
left: $sp-4;
bottom: $sp-2;

.spinner {
background: none;
}
}
Loading
Loading