For games like Dota 2 that have no completion state — shows hours
played on the card, reuses the games fields in the form (hours played
/ total hours), and gets its own cyan badge. No DB column change,
only choices metadata update.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Items can be moved to Completed or Abandoned via card buttons.
Only active items appear in the default/category tabs; completed and
abandoned items are visible only in their respective shelf tabs.
Restore button moves items back to active.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Fetch HLTB main/extra/completionist hours when a game item is saved
- Re-fetch only when name or category changes on edit
- Steam imports also fetch HLTB for each selected game
- Cards show compact HLTB row: "HLTB: 40h · +extra 60h · 100% 100h"
- Edit form shows HLTB breakdown as a hint next to Total hours field
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Steam OpenID flow: user authenticates with Steam, we get their Steam ID
- Server-side API key fetches their owned games with playtime
- Import page shows full library, marks already-imported games
- Imported games land in backlog as GAMES items with hours_played set
- STEAM_API_KEY env var plumbed into both prod and dev containers
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Add debug.killmybacklog.com nginx config (IP-restricted to 164.215.8.152)
- Add django-dev container on port 8081 in docker-compose
- Add dev branch pipeline step deploying to django-dev
- Add killmybacklog.com and debug subdomain to ALLOWED_HOSTS/CSRF origins
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Django raises VariableDoesNotExist when a failed dict lookup is used as a
filter argument (|default:mineral.properties_ru.X). Rewrite color description
to use an {% if %} block so the dict lookup is always the main variable.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Add properties_ru JSON field to store translated category, crystal_system,
luster, streak, specific_gravity, color_description
- Add translate_minerals management command using deep-translator (Google
Translate), with a hard-coded dictionary for crystal systems
- Template: show translated values in RU mode, fall back to English if missing
- Add deep-translator to requirements.txt
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- EN mode no longer shows Russian subtitle under mineral name
- RU mode now correctly reveals all lang-ru elements via CSS body.mode-ru rules
- Subtitle in RU mode shows English name as reference below Russian heading
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Russian fields on Mineral model (name_ru, description_ru, history_ru, etc.)
- scrape_minerals_ru management command fetches from Russian Wikipedia via langlinks
- EN/RU toggle in header, saved to localStorage
- Speaker button next to mineral name uses Web Speech API
- Section headers and labels translated
- Russian Wikipedia link in footer when in RU mode
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Search bar toggle in header (magnifying glass icon)
- /daily-stone/search/?q= endpoint with results list
- /daily-stone/mineral/<id>/ permalink for each mineral
- Mineral count shown in footer
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Removed readonly on image_urls so URLs can be changed in admin.
Added list_editable for day_of_year and color_hex for quick edits.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
SVG gem shape as inline data URI, automatically tinted with the
mineral's color_hex. No static assets needed.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Adds a template filter that cleans up spaced-out formulas from scraping
and wraps subscript numbers in <sub> tags for proper display.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
New dailystone app with 207 minerals scraped from Wikipedia.
Each day displays a different mineral with photos, formula,
properties, description, and history. Page theme color matches
the mineral's typical appearance.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Django app with Item model (games/books/films/other categories), CRUD
views, and login-required access. Login page at /accounts/login/ uses
custom dark-themed template consistent with the site design.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>