Repository navigation
Releases: aebrer/colourdle
Release list
v1.6.1 — Auto-finish explore on exact match
v1.6.0 — Meodai colour palettes
Integrates meodai/color-names — a community-curated collection of over 30,000 handpicked colour names.
New palettes
- Meodai (~4,300 curated names) — included in the default "All" pool, roughly doubling it from ~3,300 to ~7,600 colours
- Meodai Full (30k+) — opt-in only, not in the "All" pool or daily rotation
Other changes
- Daily "All" picker prevents the same source appearing twice in a row
- Clickable (i) info badge on the source label during gameplay with per-palette descriptions
- Updated about page with palette docs and meodai credits
v1.5.3: Fix DST bug in daily puzzle numbering
Fix daily puzzle number repeating after DST spring-forward.
getDailyNumber() used local-time Date objects for millisecond arithmetic, which loses an hour across DST boundaries. Switched to Date.UTC() for the day-count arithmetic — the standard DST-safe approach for calendar date differences in vanilla JS.
v1.5.1 — Percentile fix & input placeholder
Hotfix for percentile display and UX improvement.
Fixes
- Percentile display: Was counting the player themselves in the comparison pool ("you beat 2 out of 2 players" when there were only 2 total scores). Now correctly excludes self — "you beat 1 of 1 player"
- Top 0%: Clamped to minimum "Top 1%"
- Pluralization: Proper singular "player" vs plural "players"
Changes
- Input placeholder changed from
...towrite a colour name herefor better discoverability
v1.5.0 — POEM-based name scoring
Name scoring now uses the same POEM consensus as matching — all six distance measures rank every colour name by similarity to your guess, and the target's rank determines your score via a quadratic curve.
What's new
- Word order doesn't matter — "gray sky" scores 100 against "Sky Gray" (was ~56)
- Typos more forgiving — "cerulian" → "Cerulean" scores 100 (was ~86)
- Quadratic curve rewards top positions, penalises distant matches: top 1% → 98, top 10% → 81, top 50% → 25
- Updated about page with new scoring formula
Why
Matching and scoring now use the same algorithm. If POEM thinks your guess is close, you get rewarded for it — no more penalty for word swaps or minor spelling variations.
v1.4.1 — Behind the Matching
Add an interactive Behind the Matching page that lets you compare Colourdle's POEM adaptation against the original paper's fitness-based selection, side by side.
What's new
- Both algorithms run in-browser on all ~3,300 colours
- Shows top-10 matches, per-measure distances, and timing
- Linked from the about page's "How Matching Works" section
- Try "gingerbread" for a case where the approaches disagree
Based on Brereton et al. 2020.
v1.4.0 — POEM-based Pareto matching
Replace simple Levenshtein matching with POEM (Pareto-Optimal Embedded Matching), a multi-measure consensus algorithm adapted from Brereton et al. 2020.
What's new
- 6 string similarity measures: Levenshtein, word-sorted Levenshtein, bigram Dice, word Jaccard, substring containment, word containment
- Pareto front selection with mean distance tiebreak — no single measure can outvote the consensus
- Top 50% pruning per measure before dominance computation
- Zero external dependencies
"gray sky"now correctly matches Sky Gray instead of Gray Sand
Technical
- Updated about page documenting the algorithm with published citation
- PR review fixes: Pareto correctness, consistent Set usage in Jaccard, empty pool guard
v1.3.5 — Pirated movie subtitle source label
Source label (XKCD, CRAYOLA, etc.) moved from tiny chrome bar text to massive white-on-black burned-in subtitle styling above the input field. Impossible to miss.
v1.3.4 — Total → Final on summary screen
Also changed "Total" to "Final" on the summary totals row (missed in v1.3.2).
v1.3.3 — Top X% percentile format
Percentile now shows "Top 25% (you beat 3 out of 4 players)" instead of "Better than 75% of 4 players".