Skip to content

feat: Enhance Transportation & Lodging with visits, tags, and multi-collection support#999

Open
wanoo wants to merge 5 commits intoseanmorley15:developmentfrom
wanoo:feature/transport-lodging
Open

feat: Enhance Transportation & Lodging with visits, tags, and multi-collection support#999
wanoo wants to merge 5 commits intoseanmorley15:developmentfrom
wanoo:feature/transport-lodging

Conversation

@wanoo
Copy link
Copy Markdown

@wanoo wanoo commented Feb 7, 2026

Summary

Bring Transportation and Lodging models up to feature parity with Locations by adding visits, tags, and multi-collection support.

Features

Visits Support

  • Add visits to Transportation and Lodging (like Locations)
  • Track visit dates, notes, and who created each visit
  • Add Visits step in modal for creating/editing

Tags Support

  • Add tags field to Transportation and Lodging
  • Display tags on detail pages
  • Enable search by tags

Multi-Collection Support

  • Change collection field from ForeignKey to ManyToMany
  • Items can now belong to multiple collections
  • Link existing items to collections from collection detail page

Standalone List Pages

  • New /transportations and /lodging pages with filtering
  • Filter by type, visited status, public/private
  • Search by name and location
  • Consistent with /locations page design

UI Enhancements

  • Visited badges on Transportation and Lodging cards
  • Dashboard displays Transportation and Lodging
  • Navigation links to new pages

Changes

  • New migrations for Visit FKs, tags, and M2M collections
  • Updated Transportation and Lodging serializers
  • New TransportationVisits.svelte and LodgingVisits.svelte components
  • New TransportationLink.svelte and LodgingLink.svelte components
  • New standalone pages with filters
  • Updated TypeScript types
  • Added translations for new UI elements

Dependencies

This PR should be merged after #998 (Collaborative Mode) as it extends collaborative mode support to Transportation and Lodging.

Testing

Tested on Clever Cloud deployment.

Related Issue

Closes #995
Closes #1014
Closes #1021

@wanoo wanoo requested a review from seanmorley15 as a code owner February 7, 2026 12:47
@vercel
Copy link
Copy Markdown

vercel bot commented Feb 7, 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.

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>
@wanoo wanoo force-pushed the feature/transport-lodging branch from e6a79c6 to 9ddc466 Compare February 16, 2026 18:53
wanoo and others added 2 commits February 17, 2026 01:05
Enable shared editing of public locations across users with audit logging
and permission controls.

- Public locations can be edited by any authenticated user
- Users can only edit/delete their own visits, images, and attachments
- Location owner retains full control

- Track all changes to locations, visits, images, and attachments
- Record who made changes and when
- View modification history in UI
- Revert to previous versions

- Images and attachments use soft-delete
- Deleted items can be restored
- Track who deleted items and when

- View complete history of location changes
- See who made each modification
- Revert unwanted changes (for owner/staff)

Set COLLABORATIVE_MODE=true in environment to enable.
When disabled, permissions work as before.
…tings, pricing

- Expand Visit model: support Transportation/Lodging parents, rating, pricing, collection link
- Add admin-managed types: TransportationType, LodgingType, AdventureType, ActivityType with seed data
- Convert Transportation/Lodging collections from FK to M2M, add tags support
- Add country FK fields to Transportation (origin/dest) and Lodging
- Add cached average_rating to Location, Transportation, Lodging
- Default is_public=True on all entities
- Add 52 shared frontend components (modal, form, cards, detail, list)
- Refactor entity modals, details, and visits to use shared base components
- Add entity list pages with filters, sorting, and public tab
- Update cards with visit count, tags, rating, last visit date
- Add dashboard stats (total km, nights, places)
- Add collection enhancements (public tab, sharing, broken items, recommendations)
- Sync all i18n translations

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants