Bug fixes and feature enhancements — February 2026 (Part 2)#1009
Open
madmp87 wants to merge 8 commits intoseanmorley15:mainfrom
Open
Bug fixes and feature enhancements — February 2026 (Part 2)#1009madmp87 wants to merge 8 commits intoseanmorley15:mainfrom
madmp87 wants to merge 8 commits intoseanmorley15:mainfrom
Conversation
…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>
…te UI to reflect changes
|
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. |
This was referenced Feb 15, 2026
…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>
5b3c766 to
1ed0a1c
Compare
Contributor
Author
✅ PR Ready for ReviewBranch rebased onto CI Status
What's in this PRBug Fixes: #990 (category filter), #981 (collection filter state), #891 (terminology consistency) All 5 issues have been commented with implementation details. Ready for maintainer review. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
This PR contains 3 bug fixes and 2 new features, building on Part 1 (#1007) of the February 2026 fixes.
🐛 Bug Fixes
Fix [BUG] Category Filter not working in v0.12.0 #990: Category filter not working in v0.12.0
Replace
$:reactive block withafterNavigateto prevent Svelte from resettingtypeString; replace DaisyUI collapse with Svelte-controlled toggle to fix click interception; auto-apply filter on checkbox change for better UX.Fix [BUG] When editing an item, the "Location Display Name" resets #981: Collection filter UI state resets on navigation
Add
afterNavigatecallback to sync filter/sort/data state after every navigation event (same pattern as [BUG] Category Filter not working in v0.12.0 #990); fixorderDirectiondefault mismatch (asc→desc); add visual indicator for active filters on mobile and sidebar; remove debugconsole.log.Fix [BUG] Locations / Adventures terminology inconsistent #891: Terminology inconsistency (Adventures vs Locations)
Update 18 translation values across all 19 locale files, 2 backend error/response strings, and 1 frontend download filename to use consistent "Locations" terminology.
✨ Features
Feat [REQUEST] allow non-specific date settings for visits #987: Partial date support for visits
Add
date_precisionfield 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 existingLocation.priceas estimated/reference price.🔧 Other Changes
image:tobuild:for local development buildsFiles Changed
models.py,serializers.py,0072_visit_date_precision.py,0073_visit_price.pydate_precision+pricefieldsCategoryFilterDropdown.svelte,LocationVisits.sveltelocations/+page.svelte,locations/[id]/+page.sveltecollections/+page.sveltetypes.tsdocker-compose.yml,CHANGELOG.mdTest Plan
Migration Notes
Two new migrations are included:
0072_visit_date_precision— addsdate_precisionCharField to Visit0073_visit_price— addspriceMoneyField +price_currencyto VisitBoth are additive (new nullable fields) and safe to run on existing data.
Closes #990, closes #981, closes #891, closes #987, closes #977