Skip to content

Allow users to mark crackmes as done - #206

Open
0M4NU4L wants to merge 1 commit into
crackmesone:mainfrom
0M4NU4L:feature/mark-as-done
Open

0M4NU4L wants to merge 1 commit into
crackmesone:mainfrom
0M4NU4L:feature/mark-as-done

Conversation

@0M4NU4L

@0M4NU4L 0M4NU4L commented Nov 9, 2026

Copy link
Copy Markdown

Add manual "mark as done" solve tracking for personal progress tracking.

  • Challenge Page: Added a "Mark as done" / "Done" button styled identically to the Download button, with hover tooltip indicating it is personal progress only.
  • Lists: Added a "Done" column with checkboxes. Solved challenges dim and sink to the bottom.
  • Search Filter: Added "Hide solved crackmes" filter option on /search (persists across pagination and random links).
  • Official Solves: Verified flag solves automatically show as solved and cannot be manually unmarked.
  • personal Progress Only: Does not affect points, scoreboard, ratings, or public profiles.

Add manual "mark as done" solve tracking for personal progress tracking (crackmesone#182).

- Add manual_solves array to user document with atomic $addToSet / $pull updates, 5000-solve cap, and O(1) query-level projection.
- Add POST /crackme/<hexid>/toggle-manual-solve with 30/minute rate limiter and server-side guard blocking manual unmarking of official flag solves.
- Update challenge detail page (/crackme/<hexid>) with "Mark as done" / "Done" action button styled identically to [Download] (#9acc14 solid green, white text, flat square borders) with tooltip "Mark as done. Only visible to yourself" / "Mark it as undone. Only visible to yourself".
- Support instant client-side toggle, row dimming, and client-side sink-to-bottom reordering on search and latest crackmes lists.
- Add "Hide solved crackmes" filter option on /search and preserve parameter across pagination and random cracky links.
- Graceful guest fallback via browser localStorage when logged out.
- Add comprehensive test suite in tests/test_manual_solves.py covering models, controllers, filters, rate limits, and official solve integration.
Copilot AI balanced review requested due to automatic review settings November 9, 2026 23:34

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Copilot was unable to review this pull request because the user who requested the review has insufficient remaining quota. Try requesting a review at a lower effort level.

An organization owner can choose the repository organization as the billing source for reviews requested by members with a paid Copilot license. Learn about Copilot code review billing.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants