{% extends "base.html" %} {% block title %}Challenges{% endblock %} {% block page_title %}Challenges{% endblock %} {% block content %}

{{ summary.total }}

Total

{{ summary.active }}

Active

{{ summary.inactive }}

Inactive

{{ summary.solved }}

Solved

{{ summary.unsolved }}

Unsolved

{{ summary.invalid_detectors }}

Invalid Detectors

Definitions are loaded from YAML on startup. The active toggle is preserved across restarts — deactivated challenges stay deactivated until re-enabled here or via a YAML change.

{% for c in challenges %} {% endfor %}
Challenge Category Difficulty Pts Solves Players Attempts Hints Avg Solve Detector Active
{{ c.title }} {% if c.prerequisites %} requires: {{ c.prerequisites | join(', ') }} {% endif %}
{{ c.category | replace('_', ' ') | title }} {% set diff_colors = {"beginner": "text-green", "intermediate": "text-cyan", "advanced": "text-amber", "expert": "text-danger"} %} {{ c.difficulty }} {{ c.points }} {% if c.completions > 0 %} {{ c.completions }} {% else %} 0 {% endif %} {{ c.players }} {{ c.total_attempts }} {% if c.hints_used > 0 %} {{ c.hints_used }} {% else %} 0 {% endif %} {% if c.hints_count > 0 %} ({{ c.hints_count }}) {% endif %} {% if c.avg_solve_seconds %} {{ (c.avg_solve_seconds // 60) }}m {% else %} - {% endif %} {% if c.detector_valid %} {% else %} {% endif %}
{% if coverage %}
{% for fw in coverage %}

{{ fw.name }}

{% for label in fw.labels %}
{{ label.id }} ({{ label.challenges | length }}{% if label.challenges | length == 1 %} challenge{% else %} challenges{% endif %})
{% endfor %}
{% endfor %}
{% endif %}
{% endblock %} {% block scripts %} {% endblock %}