Skip to content

Bug fixes and feature enhancements — February 2026 (Part 2)#1009

Open
madmp87 wants to merge 8 commits intoseanmorley15:mainfrom
madmp87:feature/feb-2026-part2
Open

Bug fixes and feature enhancements — February 2026 (Part 2)#1009
madmp87 wants to merge 8 commits intoseanmorley15:mainfrom
madmp87:feature/feb-2026-part2

Conversation

@madmp87
Copy link
Copy Markdown
Contributor

@madmp87 madmp87 commented Feb 15, 2026

Summary

This PR contains 3 bug fixes and 2 new features, building on Part 1 (#1007) of the February 2026 fixes.

🐛 Bug Fixes

✨ Features

  • Feat [REQUEST] allow non-specific date settings for visits #987: Partial date support for visits
    Add date_precision field to Visit model with three levels: full date (YYYY-MM-DD), month+year (MM/YYYY), year-only (YYYY). Includes dynamic input types, precision selector with visual feedback, formatPartialDate() / formatPartialDateRange() helpers, badges in location detail view, and i18n support for all locale files.

  • Feat [REQUEST] Move cost/price to a per visit level #977: Cost tracking per visit
    Add price (MoneyField) to Visit model so users can record cost per visit instead of only per location. Includes MoneyInput in visit form with currency selector, price display in visit list and location detail timeline. Keeps existing Location.price as estimated/reference price.

🔧 Other Changes

  • Docker Compose: Switch from image: to build: for local development builds
  • CHANGELOG updated with emoji section headers

Files Changed

Area Files Description
Backend models.py, serializers.py, 0072_visit_date_precision.py, 0073_visit_price.py Visit model: date_precision + price fields
Frontend CategoryFilterDropdown.svelte, LocationVisits.svelte Filter fix + cost input UI
Frontend locations/+page.svelte, locations/[id]/+page.svelte Category filter + price display
Frontend collections/+page.svelte Collection filter state sync
Frontend types.ts TypeScript type updates
i18n All 19 locale files Terminology + new translation keys
Config docker-compose.yml, CHANGELOG.md Build config + docs

Test Plan

  • Category filter on locations page works correctly (select/deselect categories)
  • Collection filter/sort state persists across navigation (back/forward)
  • "Adventures" terminology is replaced with "Locations" throughout the UI
  • Visit form shows date precision selector (full date / month+year / year-only)
  • Visit form shows price input with currency selector
  • Price displays correctly in visit list and location detail timeline
  • Existing functionality (location CRUD, collections, map) not broken

Migration Notes

Two new migrations are included:

  • 0072_visit_date_precision — adds date_precision CharField to Visit
  • 0073_visit_price — adds price MoneyField + price_currency to Visit

Both are additive (new nullable fields) and safe to run on existing data.

Closes #990, closes #981, closes #891, closes #987, closes #977

seanmorley15 and others added 3 commits February 14, 2026 14:09
…rley15#991, seanmorley15#617, seanmorley15#984) (seanmorley15#1007)

* fix: resolve location creation failures, broken image uploads, and invalid URL handling

- Add missing addToast import in LocationDetails.svelte for proper error feedback
- Add objectId check and error response handling in ImageManagement.svelte to prevent ghost images
- Add Content-Type check in +page.server.ts image action to handle non-JSON backend responses
- Add client-side URL validation in LocationDetails.svelte (invalid URLs → null)
- Improve Django field error extraction for user-friendly toast messages
- Clean up empty description fields (whitespace → null)
- Update BUGFIX_DOCUMENTATION.md with detailed fix descriptions

* feat: bug fixes and new features bundle

Bug fixes:
- fix: resolve PATCH location with visits (seanmorley15#888)
- fix: Wikipedia/URL image upload via server-side proxy (seanmorley15#991)
- fix: private/public toggle race condition (seanmorley15#617)
- fix: location creation feedback (addToast import)
- fix: invalid URL handling for locations and collections
- fix: world map country highlighting (bg-*-200 -> bg-*-400)
- fix: clipboard API polyfill for HTTP contexts
- fix: MultipleObjectsReturned for duplicate images
- fix: SvelteKit proxy sessionid cookie forwarding

Features:
- feat: duplicate location button (list + detail view)
- feat: duplicate collection button
- feat: i18n translations for 19 languages
- feat: improved error handling and user feedback

Technical:
- Backend: fetch_from_url endpoint with SSRF protection
- Backend: validate_link() for collections
- Backend: file_permissions filter() instead of get()
- Frontend: copyToClipboard() helper function
- Frontend: clipboard polyfill via server-side injection

* chore: switch docker-compose from image to build

Use local source code builds instead of upstream :latest images
to preserve our custom patches and fixes.

* fix: lodging save errors, AI language support, and i18n improvements

- Fix Lodging save: add res.ok checks, error toasts, isSaving state (seanmorley15#984)
- Fix URL validation: silently set invalid URLs to null (Lodging, Transportation)
- Fix AI description language: pass user locale to Wikipedia API
- Fix missing i18n keys: Strava toggle buttons (show/hide)
- Add CHANGELOG.md
- Remove internal documentation from public tracking
- Update .gitignore for Cursor IDE and internal docs

Co-authored-by: Cursor <cursoragent@cursor.com>

* feat: update location duplication handling, improve UI feedback, and enhance localization support

---------

Co-authored-by: AdventureLog Bugfix <bugfix@adventurelog.local>
Co-authored-by: madmp87 <info@so-pa.de>
Co-authored-by: Mathias Ponnwitz <devuser@dockge-dev.fritz.box>
Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Sean Morley <mail@seanmorley.com>
@vercel
Copy link
Copy Markdown

vercel bot commented Feb 15, 2026

Someone is attempting to deploy a commit to the Sean Morley's Projects Team on Vercel.

A member of the Team first needs to authorize it.

AdventureLog Bugfix and others added 5 commits February 15, 2026 18:22
…valid URL handling

- Add missing addToast import in LocationDetails.svelte for proper error feedback
- Add objectId check and error response handling in ImageManagement.svelte to prevent ghost images
- Add Content-Type check in +page.server.ts image action to handle non-JSON backend responses
- Add client-side URL validation in LocationDetails.svelte (invalid URLs → null)
- Improve Django field error extraction for user-friendly toast messages
- Clean up empty description fields (whitespace → null)
- Update BUGFIX_DOCUMENTATION.md with detailed fix descriptions
Add date_precision field to Visit model supporting three precision
levels: full date, month+year, and year-only. This allows users to
record visits where the exact date is unknown.

Backend changes:
- Add date_precision CharField to Visit model with migration
- Update VisitSerializer with date_precision validation and
  require start_date on creation to prevent null-date visits
- Include date_precision in import/export and calendar views

Frontend changes:
- Add DatePrecision type and date_precision to Visit interface
- Add formatPartialDate/formatPartialDateRange display helpers
- Update LocationVisits.svelte with precision selector, dynamic
  input types (text for MM/YYYY, number for YYYY, native picker
  for full dates), and placeholder-to-picker swap pattern
- Update location detail page to display partial dates with badges
- Add i18n keys for date precision in all 21 locale files

Co-authored-by: Cursor <cursoragent@cursor.com>
Replace edit_location and update_location_details translations to use
shorter, more natural terms for "place" instead of "location" across
all 19 locale files (e.g. DE: "Ort bearbeiten" / "Ortsdetails
aktualisieren", EN: "Edit Place" / "Update place details").

Co-authored-by: Cursor <cursoragent@cursor.com>
- Fix seanmorley15#990: Category filter not working in v0.12.0
- Fix seanmorley15#981: Collection filter UI state resets on navigation
- Fix seanmorley15#891: Terminology inconsistency (Adventures vs Locations)
- Feat seanmorley15#987: Partial date support for visits
- Feat seanmorley15#977: Cost tracking per visit
- Docker Compose build configuration

Co-authored-by: Cursor <cursoragent@cursor.com>
Reorganize CHANGELOG.md for PR seanmorley15#1008:
- Add emoji section headers for better readability
- Group Part 2 issues (seanmorley15#990, seanmorley15#981, seanmorley15#891, seanmorley15#987, seanmorley15#977) at top
- Move Docker Compose config from Technical to Improvements

Co-authored-by: Cursor <cursoragent@cursor.com>
@madmp87 madmp87 force-pushed the feature/feb-2026-part2 branch from 5b3c766 to 1ed0a1c Compare February 15, 2026 17:26
@madmp87
Copy link
Copy Markdown
Contributor Author

madmp87 commented Feb 15, 2026

✅ PR Ready for Review

Branch rebased onto origin/development — all merge conflicts resolved cleanly.

CI Status

Check Status Notes
Build and Test Backend ✅ Pass Migrations + server boot OK
Build and Test Frontend ✅ Pass TypeScript/Svelte build OK
Trivy Docker Image Scan ⚠️ Fail Pre-existing CVEs in upstream dependencies (Django 5.2.8, pillow 11.3.0, jaraco.context 5.3.0, wheel 0.45.1) — not introduced by this PR
Trivy Filesystem Scan ⚠️ Fail Same upstream dependency CVEs
Vercel ⚠️ Fail Deployment authorization required (repo owner action)

What's in this PR

Bug Fixes: #990 (category filter), #981 (collection filter state), #891 (terminology consistency)
Features: #987 (partial date support), #977 (cost tracking per visit)

All 5 issues have been commented with implementation details. Ready for maintainer review.

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

Labels

None yet

Projects

None yet

2 participants