Commit Graph

24 Commits

Author SHA1 Message Date
095614cb65 Fix howlongtobeatpy version constraint (max is 1.0.21)
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
2026-03-31 23:06:45 +03:00
ffcd8c40b4 Add HowLongToBeat estimates to game cards
Some checks failed
ci/woodpecker/push/woodpecker Pipeline failed
- 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>
2026-03-31 23:04:36 +03:00
a4c31bf40b Add Steam library import via OpenID
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
- 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>
2026-03-31 22:38:28 +03:00
8f34d9388f Fix logout 405: use POST form instead of GET link
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
Django 5+ LogoutView rejects GET requests.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-31 22:23:32 +03:00
e119e79751 Add dev environment: debug subdomain, IP restriction, separate container
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
- 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>
2026-03-31 22:09:53 +03:00
8f0667d160 add tests
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
2026-03-31 21:52:26 +03:00
80f5335886 add sign up process for backlogger
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
2026-03-31 21:45:29 +03:00
ce3fdfffa1 move to new domain
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
2026-03-31 19:33:16 +03:00
959f0aa9d7 Fix 500: avoid dict lookup as default filter argument
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
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>
2026-03-31 09:05:22 +03:00
0a3248daa4 Add Russian translations for mineral property values
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
- 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>
2026-03-31 08:56:23 +03:00
1e5453f62d Fix language toggle: use body class instead of inline styles
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
- 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>
2026-03-31 08:45:33 +03:00
8a162afe2a Add Russian translations and pronunciation button
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
- 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>
2026-03-30 22:54:46 +03:00
7220af6a60 Add mineral search and permalink pages
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
- 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>
2026-03-30 22:44:13 +03:00
aa64d6949a Make mineral admin fully editable with organized fieldsets
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
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>
2026-03-30 22:32:21 +03:00
cd068ca593 Add dynamic crystal favicon colored per mineral
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
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>
2026-03-30 22:20:14 +03:00
6695e7e8ab Render chemical formulas with proper subscript notation
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
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>
2026-03-30 22:13:19 +03:00
44e2420c29 Add random mineral button to daily-stone page
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-30 22:03:43 +03:00
0be99e8e9a Add daily-stone page showing a different mineral each day
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
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>
2026-03-30 18:30:10 +03:00
a8ab5f6ce1 Add backlogger app at /backlogger/ with login protection
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
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>
2026-03-29 22:18:32 +03:00
62bb86f11d Add nginx vhost configs for reference
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
2026-03-29 21:46:18 +03:00
81009b6705 Add core migrations
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
2026-03-29 21:37:03 +03:00
114fabdbdb Switch to Django with visitor tracking and server info footnote
All checks were successful
ci/woodpecker/manual/woodpecker Pipeline was successful
2026-03-29 21:31:35 +03:00
7f4b543f3d Allow manual pipeline trigger
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
2026-03-29 21:18:17 +03:00
021d53fe13 Initial website commit 2026-03-29 21:08:06 +03:00