Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
36 commits
Select commit Hold shift + click to select a range
222adbd
Updates for local routing
jmgasper Dec 11, 2025
36f27b3
fix: dont show edit manager comment to reviewer and filter reviews wh…
hentrymartin Dec 12, 2025
bff048a
Potential fix for code scanning alert no. 63: Inefficient regular exp…
kkartunov Dec 15, 2025
ff680e7
fix: lint
hentrymartin Dec 15, 2025
e4b38d9
Merge pull request #1383 from topcoder-platform/alert-autofix-63
kkartunov Dec 15, 2025
fc0fdad
fix: lint
hentrymartin Dec 15, 2025
8fff622
mm reveal
kkartunov Dec 15, 2025
73ab250
ci: on dev
kkartunov Dec 15, 2025
a3be432
Merge pull request #1382 from topcoder-platform/pm-3216
hentrymartin Dec 15, 2025
b8704a0
Merge pull request #1384 from topcoder-platform/pm-2666_1
hentrymartin Dec 15, 2025
9f5b30b
Points handling for payments
jmgasper Dec 15, 2025
2a17ea4
Merge branch 'dev' of github.com:topcoder-platform/platform-ui into dev
jmgasper Dec 15, 2025
fdbd7f8
mm-reveal-fixes
kkartunov Dec 16, 2025
2ae7173
Merge branch 'dev' into mm-final-2025-reveal
kkartunov Dec 16, 2025
17502e4
fix: check for failed submissions instead of passing submission
hentrymartin Dec 16, 2025
7e39fbb
fix: reviews are not fetched for submitters
hentrymartin Dec 16, 2025
31d9898
fix: lint
hentrymartin Dec 16, 2025
ac1250c
Fix for submitter list on submissions tab for submitter role to only …
jmgasper Dec 17, 2025
344cd89
Revert start.sh dev changes
jmgasper Dec 17, 2025
4fcb67f
Revert start.sh dev changes
jmgasper Dec 17, 2025
19ecbcf
Merge pull request #1388 from topcoder-platform/PM-3255
jmgasper Dec 17, 2025
82bd31f
Show points display for past challenges (PM-3238)
jmgasper Dec 17, 2025
b7e5833
Merge pull request #1386 from topcoder-platform/pm-3254
kkartunov Dec 17, 2025
ef7e240
Merge branch 'mm-final-2025-reveal' into dev
kkartunov Dec 17, 2025
3795707
Merge pull request #1387 from topcoder-platform/pm-2666_fix_1
kkartunov Dec 18, 2025
8ab54f7
Add Slack and email reminder functionality (needs testing / Slack adm…
jmgasper Jan 5, 2026
5d3d35e
Lint
jmgasper Jan 5, 2026
6e0d13c
Send scheduledEndDate value instead of duration when extending a phase
jmgasper Jan 7, 2026
068d8b5
Merge pull request #1390 from topcoder-platform/leave-tracker
jmgasper Jan 8, 2026
fa15311
Fix submissions visibility for approvers & checkpoint-reviewers
vas3a Jan 12, 2026
9544f71
Merge pull request #1392 from topcoder-platform/PM-2631_submissions-v…
vas3a Jan 12, 2026
6186a0e
PM-3352 Validate skills during onboarding
himaniraghav3 Jan 12, 2026
fdea752
add newline at end of scss file
himaniraghav3 Jan 12, 2026
35a3176
PM-3328 Remove skip for now
himaniraghav3 Jan 12, 2026
b1ee60e
fix linting error
himaniraghav3 Jan 12, 2026
18ef8ef
Merge pull request #1393 from topcoder-platform/PM-3352
kkartunov Jan 13, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .circleci/config.yml
Original file line number Diff line number Diff line change
Expand Up @@ -226,6 +226,7 @@ workflows:
branches:
only:
- dev
- mm-final-2025-reveal

- deployQa:
context: org-global
Expand Down
279 changes: 279 additions & 0 deletions public/mm-final-2025-reveal/index.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,279 @@
<!DOCTYPE html>
<html lang="en">

<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Marathon Match Tournament 2025 - Champions Reveal</title>
<link rel="stylesheet" href="styles.css">
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[⚠️ maintainability]
Consider using a versioned URL for the stylesheet to ensure that users receive the latest updates without caching issues.

<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;600;700;800&display=swap" rel="stylesheet">
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[⚠️ maintainability]
Consider using a versioned URL for the Google Fonts to ensure that users receive the latest updates without caching issues.

</head>

<body>
<!-- Loading/Intro Screen -->
<div id="intro-screen" class="intro-screen">
<div class="intro-content">
<div class="logo-container">
<div class="globe-trophy-container">
<div class="globe">
<div class="globe-sphere">
<div class="globe-lines"></div>
<div class="globe-lines"></div>
<div class="globe-lines"></div>
<div class="globe-lines"></div>
<div class="globe-lines"></div>
</div>
<div class="trophy">🏆</div>
</div>
</div>
<h1 class="intro-title">Marathon Match Tournament 2025</h1>
</div>
<p class="intro-subtitle">The champions are about to be revealed...</p>
<div class="loading-bar">
<div class="loading-progress"></div>
</div>
</div>
</div>

<!-- Main Content - Auto-Advancing Presentation -->
<div id="main-content" class="main-content hidden">
<!-- Hero Section -->
<section class="presentation-section hero-section" id="section-hero">
<div class="container">
<div class="hero-content">
<h1 class="hero-title">
<span class="text-line">The Marathon Match</span>
<span class="text-line">Tournament Final</span>
<span class="text-line highlight">Has Concluded!</span>
</h1>
<p class="hero-subtitle">After 24 hours of intense competition, the champions have emerged.</p>
</div>
</div>
</section>

<!-- Problem Section -->
<section class="presentation-section problem-section" id="section-problem">
<div class="container">
<div class="problem-content">
<div class="section-header">
<h2>The Challenge</h2>
<p class="section-subtitle">The problem that tested our finalists</p>
</div>
<div class="problem-card">
<div class="problem-icon">🧩</div>
<h3>Grid Puzzle Game</h3>
<div class="problem-details">
<p class="problem-summary">
Finalists faced a challenging <strong>tile-matching puzzle</strong> on an N×N grid.
Each tile has 4 numbers (one per edge), and the goal is to place tiles so that
adjacent edges match. When two edges match with value <strong>k</strong>, you score
<strong>k³</strong> points. With limited discards and a hidden tile queue, competitors
had to balance strategy, timing, and optimization to maximize their score.
</p>

<div class="problem-animation-container">
<canvas id="puzzle-animation" class="puzzle-animation"></canvas>
<div class="animation-label">Example Solution Animation</div>
</div>

<div class="problem-features">
<div class="feature-item">
<span class="feature-icon">🎯</span>
<div>
<strong>Objective</strong>
<p>Place tiles to match edges and maximize score</p>
</div>
</div>
<div class="feature-item">
<span class="feature-icon">⚡</span>
<div>
<strong>Scoring</strong>
<p>Matching edges with value <strong>k</strong> earns <strong>k³</strong> points
</p>
</div>
</div>
<div class="feature-item">
<span class="feature-icon">🎲</span>
<div>
<strong>Complexity</strong>
<p>Grid size 4-16, hand size 1-N, up to 20 edge values</p>
</div>
</div>
</div>
<div class="problem-credits">
<p><strong>Problem Setter:</strong> dimkadimon</p>
<p><strong>Problem Testers:</strong> JacoCronje and nika</p>
</div>
</div>
</div>
</div>
</section>

<!-- Finalists Section -->
<section class="presentation-section finalists-section" id="section-finalists">
<div class="container">
<div class="finalists-content">
<div class="section-header">
<h2>The Finalists</h2>
<p class="section-subtitle">Elite competitors who made it to the final round</p>
</div>
<div id="finalists-grid" class="finalists-grid">
<!-- Finalists will be populated by JavaScript -->
</div>
</div>
</div>
</section>

<!-- Leaderboard Section -->
<section class="presentation-section leaderboard-transition-section" id="section-leaderboard">
<div class="container">
<div class="section-header">
<h2>The Leaderboard</h2>
<p class="section-subtitle">From provisional scores to final results</p>
</div>

<div class="leaderboard-container">
<div class="leaderboard-header">
<div class="leaderboard-title-container">
<h3 id="leaderboard-title" class="leaderboard-title">PROVISIONAL SCORES</h3>
<div class="leaderboard-subtitle" id="leaderboard-subtitle">Calculated during the 24-hour
challenge</div>
</div>
<div class="transition-indicator hidden" id="transition-indicator">
<div class="transition-text">Transitioning to Final Scores...</div>
<div class="transition-bar">
<div class="transition-progress"></div>
</div>
</div>
</div>

<div class="leaderboard-table-wrapper">
<table class="leaderboard-table" id="leaderboard-table">
<thead>
<tr>
<th class="rank-col">RANK</th>
<th class="member-col">MEMBER</th>
<th class="score-col">SCORE</th>
<th class="change-col hidden" id="change-header">CHANGE</th>
</tr>
</thead>
<tbody id="leaderboard-body">
<!-- Leaderboard rows will be populated by JavaScript -->
</tbody>
</table>
</div>
</div>
</div>
</section>

<!-- Countdown to Reveal -->
<section class="presentation-section countdown-section" id="section-countdown">
<div class="container">
<div class="countdown-content">
<h2>And the Champions Are...</h2>
<div class="countdown-timer">
<span class="countdown-number" id="countdown">3</span>
</div>
</div>
</div>
</section>

<!-- Podium Section -->
<section class="presentation-section podium-section" id="section-podium">
<div class="container">
<div class="podium-container">
<!-- 2nd Place -->
<div class="podium-place second-place reveal-podium-delay">
<div class="podium-pedestal">
<div class="podium-base second-base">
<div class="podium-number">2</div>
<div class="podium-trophy trophy-silver">🏆</div>
</div>
<div class="winner-card second-winner">
<div class="winner-avatar second-avatar">
<div class="avatar-placeholder">🥈</div>
</div>
<div class="winner-info">
<h3 class="winner-name" id="second-name">Loading...</h3>
<p class="winner-country" id="second-country">-</p>
<div class="winner-score" id="second-score">-</div>
</div>
<div class="winner-badge second-badge">2nd</div>
</div>
</div>
</div>

<!-- 1st Place -->
<div class="podium-place first-place reveal-podium">
<div class="podium-pedestal">
<div class="podium-base first-base">
<div class="podium-number">1</div>
<div class="crown">👑</div>
<div class="podium-trophy trophy-gold">🏆</div>
</div>
<div class="winner-card first-winner">
<div class="winner-avatar first-avatar">
<div class="avatar-placeholder">🥇</div>
</div>
<div class="winner-info">
<h3 class="winner-name" id="first-name">Loading...</h3>
<p class="winner-country" id="first-country">-</p>
<div class="winner-score" id="first-score">-</div>
</div>
<div class="winner-badge first-badge">CHAMPION</div>
</div>
</div>
</div>

<!-- 3rd Place -->
<div class="podium-place third-place reveal-podium-delay-2">
<div class="podium-pedestal">
<div class="podium-base third-base">
<div class="podium-number">3</div>
<div class="podium-trophy trophy-bronze">🏆</div>
</div>
<div class="winner-card third-winner">
<div class="winner-avatar third-avatar">
<div class="avatar-placeholder">🥉</div>
</div>
<div class="winner-info">
<h3 class="winner-name" id="third-name">Loading...</h3>
<p class="winner-country" id="third-country">-</p>
<div class="winner-score" id="third-score">-</div>
</div>
<div class="winner-badge third-badge">3rd</div>
</div>
</div>
</div>
</div>

<!-- Celebration Message -->
<div class="celebration-message">
<h2>Congratulations to All Finalists!</h2>
<p>Your dedication, skill, and strategic thinking made this tournament unforgettable.</p>
<div class="celebration-stats">
<div class="stat-item">
<div class="stat-number">24</div>
<div class="stat-label">Hours</div>
</div>
<div class="stat-item">
<div class="stat-number" id="total-finalists">-</div>
<div class="stat-label">Finalists</div>
</div>
<div class="stat-item">
<div class="stat-number">1</div>
<div class="stat-label">Champion</div>
</div>
</div>
</div>
</div>
</section>

</div>

<script src="script.js"></script>
</body>

</html>
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[💡 style]
Add a newline at the end of the file to follow POSIX standards and improve compatibility with various tools.

Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added public/mm-final-2025-reveal/photos/Daiver19.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added public/mm-final-2025-reveal/photos/gaha.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added public/mm-final-2025-reveal/photos/kovi.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added public/mm-final-2025-reveal/photos/krismaz.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added public/mm-final-2025-reveal/photos/marwar22.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added public/mm-final-2025-reveal/photos/sullyper.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added public/mm-final-2025-reveal/photos/wleite.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Loading