- Week and month calendar views now detect the trip week containing today and scroll to that week when the page loads.
- Preserved explicit
?week=links so shared week URLs still open at the requested week instead of the current week.
- Added an
actualCostfield for activities so planned estimates and real paid/spent costs can be recorded separately. - Exposed actual activity costs through public/admin APIs, CLI output, MCP tool schemas, and the public activity edit form.
- Kept existing estimated cost calculations unchanged.
- Sorted the map timeline and active location fallback by planned dates instead of raw location order.
- Sorted activity lists, detail markers, and detail route legs by scheduled date plus scheduled time/period.
- Added compact schedule labels to activity rows in the location detail panel.
- Skipped map route points without real coordinates so detail routes no longer
draw through
(0,0)placeholder data while the full itinerary list remains visible. - Removed the separate per-event "remove from itinerary" action so event management uses the single delete flow.
- Removed legacy per-event exclusion state from cost, calendar, map, and session reads.
- Replaced remote per-leg route fetching on map render with immediate local route estimates so the full route appears without waiting on third-party routing services.
- Tightened calendar event cards with duration-first labels such as
1h30p, a right-aligned theme-aware cost chip, and compactKcost formatting. - Merged legacy cafe activities into the eating/drinking group across calendar legends, cost summaries, location details, and print export.
- Updated calendar budget summaries to compare current spend against the plan budget and show both usage percent and remaining amount below the amount.
- Removed the inline
/ 150.000.000 ₫label from calendar total cost cards so the real spend stays visually primary. - Added API and MCP support for setting
budgetLimitwhen AI tools create or update a plan. - Added a calendar
Move view onlymode that disables event drag/drop and resize interactions so touch-screen scrolling stays stable. - Aligned calendar event card content to the top so title and metadata no longer sit vertically centered inside taller cards.
- Restored OSRM road-route drawing for overview and detail map paths, with cached per-leg routes and straight-line fallback only when road routing fails.
- Added separate activity CTA fields for the event detail drawer:
externalUrlandexternalLabel. - Kept the drawer's top-right Maps button dedicated to Google Maps while the lower CTA can point to Booking.com, a website, Facebook, or a Maps fallback.
- Added admin/public/API/MCP support for storing and updating the new CTA fields without overloading the visible location/address field.
- Added activity form controls for the CTA link and optional button label.
- Preserved the recent event delete confirmation change in this release range.
- Restored the "Khác" activity type in the public activity form and MCP add/update activity contracts.
- Added the "Khác" cost overview card back as a conditional card that only
appears when the plan has declared
otheractivity cost. - Included
otheractivity costs in location, plan, summary, and print totals. - Added a distinct glass event style for
otheractivity cards.
- Lightened the week and month calendar shell backgrounds so the schedule reads softer against the app chrome.
- Reduced location/day background tints and replaced colored day borders with neutral borders.
- Kept activity event card colors unchanged so event types remain scannable.
- Removed the "Khác" cost category from week and month cost overview cards.
- Removed "Khác" from the activity type picker so new activities must use a classified category.
- Normalized unknown or legacy activity types into the sightseeing category so all declared activity costs continue to be counted.
- Removed the 60% lodging target note from week and month cost overview cards.
- Kept the main cost amount, percentage label, and progress bar.
- Switched event detail preview images from local
/assets/...paths to stable jsDelivr CDN URLs backed by the generated preview assets in repo tagv1.0.3. - Verified all generated event preview CDN URLs return
200 image/webp. - Documented the release-note convention: visible UI updates should include an embedded screenshot link uploaded as a GitHub Release asset.
- Tightened spacing between week event time, dot divider, and duration so the metadata stays on one compact line.
- Aligned week event card content to the top and reduced text line-height inside compact timed cards.
- Reworked calendar event cards from solid/pastel fills to translucent glass tints that better match the app's overall visual system.
- Kept activity-type color semantics while reducing saturation and opacity: food red, transport gray, cafe orange, sightseeing blue, accommodation slate.
- Added backdrop blur, soft inset highlight, and lighter shadows to event cards.
- Added light-mode variants so event cards stay readable without looking heavy.
- Added generated internal preview images for sightseeing, accommodation, food, cafe, transport, and fallback events.
- Replaced activity/location image lookup for event detail thumbnails with the generated internal WebP assets, avoiding unrelated external images.
- Optimized generated previews to 1200x675 WebP assets for faster drawer load.
This release summarizes the user-facing and integration changes since the previous GitHub Release.
- Added public week and month calendar views for trip plans.
- Added Google Calendar-style time rows in week view.
- Added exact activity scheduling with
scheduledTimeand activitydurationMinutes, instead of anchoring items only to morning/afternoon. - Added drag/drop and resize interactions for activities on calendar views.
- Snapped calendar edits to 30-minute intervals.
- Added explicit calendar save/discard controls so drag edits do not save immediately.
- Kept overlapping calendar events independent when moving one event.
- Improved overlapping event layout so short overlaps render side-by-side/on top instead of dragging attached events together.
- Stacked month-view time blocks vertically and hid empty blocks to avoid layout overflow.
- Added event cost display on calendar cards.
- Simplified week event cards to show event name, time/duration, cost chip, and location when present.
- Updated event colors by activity type: food red, transport gray, cafe orange, sightseeing blue.
- Changed accommodation icon from hotel to bed.
- Tuned calendar backgrounds and light-mode event cards for clearer contrast.
- Changed event detail from a dedicated
/eventpage to a right-side drawer overlay on the current calendar/map view. - Kept event deep links through
event=<id>while preserving the active view path. - Added drawer details for thumbnail, schedule, duration, cost, participants, notes, location, and Google Maps link.
- Moved participant counts and pricing logic to individual activities instead of fixed location-level values.
- Added activity-based pricing controls for tickets, accommodation, food, cafe, transport, and other costs.
- Split cost summaries into transport, accommodation, food, cafe, sightseeing, and other categories.
- Derived location overview text from the detailed activities in the itinerary so summaries stay current.
- Added a separate cafe activity type so coffee/snack stops no longer appear under food.
- Added map links and address display for activity/accommodation summaries.
- Added illustrative event thumbnails through the existing image service.
- Replaced the old admin dashboard flow with calendar-based plan editing.
- Added admin login gating before entering admin mode.
- Added calendar/sidebar CRUD controls for locations and detailed activities.
- Added explicit save controls for schedule edits.
- Allowed public users to customize/share session plans without admin writes.
- Improved stable share URLs by returning pretty
?slug=...links for session plans. - Allowed reading and updating session plans by slug so agents can revise the same shared link.
- Added public MCP plan editing by share link.
- Added prod MCP admin editing support and repo CLI commands for plan, location, and activity operations.
- Added admin password header support for API writes.
- Fixed MCP SSE behavior and added activity API aliases for legacy sub-location commands.
- Added activity proximity analysis for planning nearby stops.
- Added Vexere/search-oriented planning integration documentation.
- Updated the project travel-plan skill and AI integration docs for the new activity scheduling and cost model.
- Added compact itinerary calendar view and check-in/check-out badges.
- Added route drawing by road distance and separate colors for route legs.
- Added full-stay calendar rendering with proximity hints.
- Fixed weekday alignment and calendar boundary labels.
- Improved public trip viewer controls and readability.
- Added manual travel date editing.
- Removed the GitHub Actions workflow that auto-published GitHub Releases from
RELEASE_NOTES.md. - GitHub Releases are now created manually with GitHub CLI so each release note can be written for the actual update.
Generated before push from commits:
50f51daUse drawer for calendar event details
Generated before push from commits:
d7132f3Publish GitHub releases from release notes
Generated before push from commits:
912b328Use illustrative event thumbnails
Generated before push from commits:
303f091Update calendar event type colors
Generated before push from commits:
490376aAdd calendar event detail page
Generated before push from commits:
726d572Add cafe activity type4f349eaDocument release notes push policy
Generated before push from commits:
726d572Add cafe activity type4f349eaDocument release notes push policy
Generated before push from commits:
d18f462Keep overlapping calendar drags independent
- Added a separate
cafeactivity type so coffee/snack stops no longer appear underĂn uống. - Added cafe cost cards, labels, icons, calendar styling, and export columns.
- Preserved side-by-side rendering for overlapping calendar events.

