What’s New

Every feature, fix, and questionable design decision — in chronological order.

Feb 21, 2026

Dashboard Hero Width + Header Consistency Reconciliation

  • Hero width aligned to module baseline: Removed extra dashboard-hero side inset so the hero now shares the same shell width rhythm as module cards and the global header.
  • Participant chips improved for legibility: Updated hero participant summary contrast so overflow avatars and metadata are no longer visually see-through.
  • Timeline header normalized: Updated the PlanIt wordmark and Share/Settings icon controls to use the same semantic token styling and typography scale as other top bars.
  • Admin settings refreshed: Added a dashboard-style Settings action in admin with theme cycling and sign-out controls in one sheet while keeping admin-specific workflows intact.
Feb 21, 2026

Header Follow-up: Share & Settings Actions Now Work Across Timeline Routes

  • Global nav actions wired: Share and Settings buttons now stay functional outside the dashboard card view (including module routes) instead of only binding on the dashboard screen.
  • Profile management retained in Settings: Profile entry now opens the same manage-profile flow from the nav settings sheet, with save/delete behavior preserved.
  • No hero or module-card layout changes: This pass focuses on interaction wiring and reliability for the redesigned header controls.
Feb 21, 2026

Trip Dashboard Header Redesign: Share + Settings Overlays and Compact Hero

  • Top nav refreshed: PlanIt now uses a custom gradient logo mark, and the old nav theme toggle was replaced by dedicated Share and Settings icon actions.
  • Share flow moved into an overlay: Invite friends now opens a sheet with tap-to-copy trip code and a full join URL, each with immediate copied confirmation feedback.
  • Settings overlay consolidates controls: Dark mode cycling and profile access now live in one settings sheet instead of occupying the hero action row.
  • Hero card rebuilt as a compact visual header: Removed welcome line, tag pills, and inline copy/profile buttons; added layered cover gradient, bottom-anchored trip title, and participant avatar stack + “going” summary.
Feb 21, 2026

Width Fix Follow-up: Removed Extra Module Shell Inset

  • Root cause corrected: Module pages were still appearing narrow because shell wrappers added extra horizontal `px-4` inset on top of the 760px baseline.
  • Inset removed across dashboard + downstream pages: Dashboard, When, Budget, Preferences, Destinations, Book It, Trip Split, and fallback routes now use centered 760px shells without additional page-level horizontal padding.
  • Shared module wrapper aligned: `renderModuleSkeleton()` now emits the same no-extra-inset shell so all modules inherit matching home-section edge alignment.
  • Behavior unchanged: This pass only adjusts page-shell spacing; module logic, overlays, and interactions were not changed.
Feb 21, 2026

Correction: Dashboard + Module Shell Width Matched to Home Sections

  • Width baseline corrected to home shell: Dashboard and downstream module pages now use the same `max-w-[760px]` outer width as the home page sections.
  • All accessible module states kept consistent: Loading, empty/error, input, and results wrappers across When, Budget, Preferences, Destinations, Book It, and Trip Split now align to identical page edges.
  • Shared module skeleton updated: `renderModuleSkeleton()` now emits the same 760px shell so modules that use shared wrappers inherit consistent spacing by default.
  • Dashboard overlays unchanged: Bottom-sheet and modal overlay widths were left as-is so only page-level shells were adjusted.
Feb 21, 2026

Module Page Width Alignment Across Timeline

  • Dashboard-width layout expanded to all modules: Budget, Preferences, Destinations, Book It, and When now use the same outer page width as Dashboard and Trip Split for a consistent full-shell feel.
  • All reachable module states aligned: Loading, empty/error, input, and results screens now share identical edge spacing so scroll boundaries and content rhythm feel consistent from page to page.
  • Placeholder routes no longer look skinny: Router fallback/downstream module views now inherit the same max-width treatment so unfinished pages still align with the app shell.
  • Overlays intentionally unchanged: Dashboard sheets/modal overlays keep their existing dimensions so only full module pages were widened.
Feb 21, 2026

Dashboard + Trip Split Mobile Layout and CTA Alignment Pass

  • Dashboard hero controls compacted on mobile: metadata chips and action buttons now use tighter heights and cleaner grouping so the hero no longer feels oversized on phones.
  • Module sheet actions stay accessible: overlay action buttons are pinned in a sticky footer region so View/Edit controls remain visible while scrolling quick status content.
  • Edge spacing aligned with app shell: dashboard and Trip Split containers now use the same width and vertical rhythm as the nav layout to reduce the cramped inset feel.
  • Module hero titles centered consistently: icon/title/description content now centers in module headers so labels like When and Book It are no longer visually offset.
  • Trip Split CTA flow improved: Add Expense now sits beside Back in the top action row (ledger-first flow), and mobile date/save controls were tightened to reduce clipping.
Feb 21, 2026

Trip Split UI Conformance Pass: Navigation, Tabs, and Date Input Fit

  • Back action placement aligned: Trip Split now places the back button below the hero header, matching the module page rhythm used across the app.
  • Segmented controls visually unified: Ledger/Settle and Equal/Custom toggles now use a consistent rounded-lg segmented treatment instead of rectangle-in-pill styling.
  • Date input clipping hardened: The expense date field now uses stronger sizing constraints to prevent mobile clipping/overflow behavior.
  • Editor utility action density improved: “Back to Ledger” now uses compact secondary styling for cleaner hierarchy beside primary save actions.
Feb 21, 2026

Trip Split Utility Rules: Any Participant + Specific Split Clarity

  • Any participant can be included in splits: Trip Split no longer blocks non-booked guests. You can split expenses with anyone in the trip roster.
  • Specific custom splits are explicitly supported: Equal and custom split messaging now clarifies that you can assign targeted amounts per person.
  • Informational Book It warning added: Expenses that include participants not marked booked now show a non-blocking warning so teams can reconcile logistics without breaking utility workflows.
  • Module status copy corrected: Trip Split route metadata now reflects that expense entry and settle-up flows are live.
Feb 21, 2026

Dashboard Action Row Fit & Compact Edit Controls

  • Header controls now align to one height: The trip code chip, copy button, and profile button in the dashboard hero now share a unified 44px control height for cleaner visual rhythm.
  • Copy button footprint reduced: The copy icon control now uses a compact utility button style, so it no longer consumes the same padding as full-width form actions.
  • Edit actions feel more intentional: Dashboard sheet “Edit” actions now use a compact secondary style that pairs better with primary actions while preserving accessibility and touch targets.
Feb 21, 2026

When Module Wrapper Design-System Conformance

  • Module hero header updated: The When module shell now uses the shared teal gradient module header pattern for consistent chrome across modules.
  • Wrapper spacing and width standardized: The When wrapper now uses the same max-width container and gap-6 spacing rhythm as other module pages.
  • Wrapper-level cards and buttons aligned: The shell card and wrapper-owned action buttons now use shared design-system class constants without changing planner behavior.
Feb 21, 2026

Module Overlay Submitter Chips & Dashboard Polish

  • Submitter chips in overlays: When, Budget, Preferences, and Destination module overlays now show name chips for participants who have submitted, so you can see at a glance who has responded.
  • Trip Split counter removed: The Trip Split dashboard card no longer shows a submission counter since it’s a shared utility, not a per-person survey.
  • Module card status border fix: Decided-status cards no longer override the card background color, keeping the standard surface styling consistent with other states.
Feb 21, 2026

Mobile Display & Layout Consistency

  • Full-width mobile layout: Destination, Book It, and Trip Split modules now use consistent horizontal padding (px-4) and vertical spacing (py-6) so content never touches the screen edges on mobile.
  • Dashboard header tightened: Reduced vertical padding and inner spacing on the dashboard hero card to show more module cards above the fold on small screens.
  • Module card redesign: Dashboard module cards now use proper card styling with background, shadow, rounded corners, and a colored left border indicating status.
  • Consistent icon sizing: Module card emoji icons are now rendered inside a fixed-size 32×32 container so they display at the same height across platforms.
  • Trip Split shows all participants: When no one has marked “Booked” in Book It, Trip Split now falls back to all trip participants instead of showing 0 people available to split with.
  • Skeleton screens fixed: Loading skeletons for Destination, Book It, and Split now match the same padded layout as their loaded state.
Feb 21, 2026

Book It Module Visual Refresh

  • Teal gradient header: The Book It module now opens with the shared teal gradient hero card, matching every other module in the app.
  • Consistent buttons: All buttons — Booking Link, Copy Summary, and Go to Dashboard — now use the standard design system styling with rounded-lg corners and proper press feedback.
  • Polished inputs: The booking link and notes fields now use the shared input style for consistent sizing, focus rings, and placeholder colors.
  • Better spacing & layout: Section gaps between the header, destination preview, summary, and status cards now use the standard gap-6 spacing.
  • Improved empty states: “Join this trip first” and error screens now show a friendlier icon-and-headline treatment instead of plain text.
  • Card consistency: Destination preview, trip summary, voting status, personal and group status sections, and toggle rows now use the shared card component with proper shadows and rounded corners.
  • Standardized action bar: The booking link and copy summary buttons now use the shared action bar component.
Feb 21, 2026

Destination Module Visual Refresh

  • Teal gradient header: The Destination module now opens with the shared teal gradient hero card, matching every other module in the app.
  • Consistent buttons: All buttons — Add Yours, Back, Analyze, Submit, Edit, Delete, and overflow menus — now use the standard design system styling with rounded-lg corners and proper press feedback.
  • Polished inputs: The destination form fields (name, link, cost, duration, pitch) and AI URL inputs now use the shared input style for consistent sizing, focus rings, and placeholder colors.
  • Better spacing & layout: Section gaps between the header, consensus banner, sort controls, and card list now match the rest of the app.
  • Improved empty states: “No destinations yet” and “Module not available” screens now show a friendlier icon-and-headline treatment instead of plain text.
  • Card consistency: Destination cards, the form panel, AI analysis section, and detail views now use the shared card component with proper shadows and rounded corners.
  • Standardized action bar: The submit/save button area now uses the shared action bar component for a consistent bottom-of-form experience.
Feb 21, 2026

Preferences Module Visual Refresh

  • Teal gradient header: The Preferences module now opens with the signature teal gradient hero card, matching the dashboard and other modules.
  • Consistent buttons: All buttons — Save, Back, Continue to Tier 2, Add Tier 3, Copy Brief, and View Results — now use the standard design system styling with rounded-lg corners and proper press feedback.
  • Polished inputs: The notes textarea now uses the shared input style for consistent sizing and focus rings.
  • Better spacing & layout: Section gaps increased to match the rest of the app, and the module is now centered with a consistent max width on wider screens.
  • Improved empty states: “Module not available” and error screens now show a friendlier icon-and-headline treatment instead of plain text.
  • Card consistency: All content panels — tier cards, brief panel, results consensus, and action bar — use the shared card component with proper shadows and rounded corners.
  • Results view upgraded: The Preference Results page now has the same teal hero header, shared cards, and design-system buttons throughout.
Feb 21, 2026

Budget Module Visual Refresh

  • Teal gradient header: The Budget module now opens with the signature teal gradient hero card, matching the dashboard and other modules.
  • Consistent buttons: All buttons — Save, Back, Select All, Clear, and Edit — now use the standard design system styling with rounded-lg corners and proper press feedback.
  • Polished inputs: Budget range fields, ceiling input, and notes textarea now use the shared input style for consistent sizing and focus rings.
  • Better spacing & layout: Section gaps increased to match the rest of the app, and the module is now centered with a consistent max width on wider screens.
  • Improved empty states: “No submissions yet” and error screens now show a friendlier icon-and-headline treatment instead of plain text.
  • Card consistency: All content panels — form sections, sweet-spot card, range chart, and inclusion breakdown — use the shared card component with proper shadows and rounded corners.
Feb 21, 2026

Dashboard Visual Refresh

  • Teal gradient header: The trip dashboard header now uses the signature teal gradient hero card, matching the look of every other module page.
  • Trip code on teal: The trip code badge now appears in white-on-teal inside the header, making it easier to spot at a glance.
  • Consistent button styling: Copy-code and Profile buttons in the header, plus View/Edit buttons in module sheets, now use the standard design system button style.
  • Better spacing: Section gaps between the header and module card list now match the rest of the app, and the dashboard is centered with a consistent max width.
  • Empty state added: If your trip has no planning modules yet, you’ll now see a friendly empty state instead of a blank page.
Feb 21, 2026

Destination Card Images & Image Lifecycle

  • Card background images: Destinations with uploaded images now show the first image as a 140px hero at the top of the card, with a gradient overlay that fades into the card background. Title and author appear on top of the image for a polished, magazine-style look.
  • Image gallery in detail sheet: When you tap “View details” on a destination with images, a swipeable horizontal gallery appears at the top of the sheet showing all uploaded photos.
  • Image persistence: Images uploaded during AI analysis are now saved to the server when you submit a destination. Previously they were used only for AI extraction and discarded.
  • Image management in edit mode: When editing a destination, existing images appear as thumbnails with a remove button. You can add new images or remove existing ones in the same edit.
  • Thumbnail previews for uploads: The image upload area now shows actual thumbnail previews of your images instead of filename text.
  • Automatic cleanup: Deleting a destination removes all its images from storage. Editing to remove images also deletes them server-side. No orphaned files.
  • Dark mode support: Image overlays use CSS variable tokens so the gradient fade matches both light and dark themes. Vote button on image cards gets a frosted-glass backdrop for legibility on any image.
Feb 21, 2026

Destination Feed UI Improvements

  • Teal gradient hero header added: The Destinations feed now opens with the standard module header — back arrow, title, description, destination count badge, and the “+ Add Yours” button — matching every other module.
  • Card spacing tightened: Card list gap increased from 8px to 16px (gap-4), and card inner gap corrected from gap-2.5 to gap-3 to stay on the 4px grid.
  • Card title typography fixed: Destination card titles now use font-body font-bold instead of font-display font-extrabold, matching the design system type scale for card-level headings.
  • Vote button shrunk: Vote button reduced from 76×76px to 56×56px with rounded-lg, reclaiming vertical space per card.
  • Price label shortened: Card-level price now shows “$1,416/pp” instead of “$1,416 / person” to prevent truncation on narrow screens. Detail sheet keeps the full label.
  • Overflow menu merged into footer: The “⋮” actions button now sits beside “View details →” in a single row, eliminating a separate 48px-tall action row per author card.
  • Improved card density on mobile: On a 390px viewport, 2+ destination cards are now visible simultaneously below the header and sort bar.
Feb 21, 2026

Fix: Mobile Input Zoom on iOS Safari

  • No more auto-zoom on input focus: All text inputs, selects, and textareas now render at 16px minimum, preventing iOS Safari from zooming in when you tap a form field.
  • Global safety net added: A base CSS rule ensures every input element defaults to 16px font size, catching any future inputs that miss the class.
  • 26 inputs fixed across 8 files: Budget, Preferences, Destination, Book It, Trip Split, Admin, Landing, and the When module rank selects all updated from undersized text-sm to text-base.
Feb 21, 2026

Motion, Polish & Final QA: Design System Complete

  • Page transitions animate smoothly: Navigating between modules and views now plays a subtle fade-and-slide entrance animation, respecting reduced-motion preferences.
  • Module completion celebrates: Saving your budget, preferences, or adding a destination now pulses the save button with a brief teal glow for satisfying feedback.
  • Tracking token standardized: All uppercase micro-labels now use a single tracking-micro token instead of ad-hoc arbitrary values, ensuring consistent letter-spacing across every badge and label.
  • Buttons consistently use rounded-lg: Remaining legacy rounded-full buttons across the When module, Book It, Trip Split, and navigation have been updated to the design-system rounded-lg shape.
  • Cards and panels use rounded-lg: Disclosure rows, popovers, action menus, and detail panels across all modules now use the standard rounded-lg radius.
  • Press feedback standardized: All remaining active:scale-95 press effects have been updated to the design-system active:scale-[0.97] for consistent tactile feel.
  • Typography sweep: Remaining text-xs violations fixed across Book It, Trip Split, and the When module planner. Non-display font-extrabold instances corrected to font-bold.
Feb 21, 2026

Admin Portal Visual Refresh: Design System Migration

  • Buttons use rounded-lg with DS-compliant styles: All admin buttons now use rounded-lg shape, correct font weights (font-semibold for primary, font-medium for secondary), and the design-system press scale instead of the legacy rounded-full pattern.
  • Cards use shadow-based depth: All admin cards — stats, trip list, module config, participant rows, leaderboard, and narrative panels — now use shadow-sm instead of flat borders for visual hierarchy.
  • Inputs match the design system: Every form field across login, create trip, DB recovery, module config, and sheet dialogs now uses the correct bg-surface-input background, px-4 py-3 padding, and focus ring transitions.
  • Headings use the standard type scale: Admin Portal, All Trips, DB Recovery, and Trip Detail headings all use text-lg with proper font weights instead of ad-hoc responsive clamp values.
  • Stat cards are DS-compliant: Dashboard stat cards now use rounded-lg with shadow-sm and the standard type scale for values instead of rounded-xl with arbitrary clamp font sizes.
  • Labels and hints use proper text size: All form labels, helper text, and danger zone descriptions now use text-sm instead of undersized text-xs across both admin.html and admin.js.
  • Dark mode cleanup: Removed unnecessary dark: text overrides on secondary buttons and consolidated all tracking values to the standard 0.06em.
  • Toast notifications refined: Admin toasts now use rounded-lg with the standard shadow-md token instead of arbitrary shadow values.
Feb 20, 2026

Landing & Static Pages Visual Refresh: Design System Migration

  • Buttons use rounded-lg with proper weight: All buttons across the landing page, about page, and changelog now use the design-system rounded-lg shape, font-semibold for primary and font-medium for secondary, with the correct press scale.
  • Inputs match the design system: The trip code and name fields on the landing page now use the correct input surface, padding, and focus ring pattern.
  • Headings use the standard type scale: Hero heading, section headings, stat values, and the CTA heading all use the design-system type scale instead of ad-hoc responsive clamp values.
  • Changelog entries use card depth: All changelog entries now use rounded-lg with shadow instead of rounded-xl with full borders, matching the design system card pattern.
  • Footer text uses proper size: Footer text on all three pages now uses text-sm instead of undersized text-xs.
  • Font weights follow display-only rule: Badge text, feature headings, testimonial names, and step numbers now use font-bold instead of font-extrabold.
  • Dark mode cleanup: Removed unnecessary dark: text overrides on secondary buttons that conflicted with the semantic token auto-swap system.
Feb 20, 2026

Preferences Module Visual Refresh: Design System Migration

  • Typography cleaned up: The Preferences and Preference Results headings now use the standard section-header type scale, replacing ad-hoc responsive clamp values.
  • Helper and guidance text uses proper size: All helper text, tier guidance, and the AI brief pre-formatted text now use text-sm instead of undersized text-xs across the edit and results views.
  • Cards and panels use consistent radius: Consensus rows, note cards, disclosure panels, the locked banner, segmented controls, and the brief detail panel all use rounded-lg instead of rounded-xl.
  • Segmented control buttons refined: Single-option selector buttons now use the design-system press scale and proper text size, and rail-mode buttons use rounded-lg instead of rounded-full.
  • Notes textarea uses correct input surface: The notes input now uses bg-surface-input with design-system padding and focus ring transitions.
  • Font weights follow display-only rule: Card-level headings (AI Search Brief, Submission Status) now use font-bold instead of font-extrabold.
Feb 20, 2026

Destination Module Visual Refresh: Design System Migration

  • Stat labels and vote button labels use proper type scale: Price, Stay, and Travel stat labels and the Vote/Voted text now use the design-system caption size instead of ad-hoc 10px values.
  • Detail section headers are now readable: The "Why this place," "Details," and "Source" section headers in the detail sheet now use the correct secondary text size.
  • Headings use standard type scale: The Destinations and Add/Edit Destination headings now use the standard section-header pattern, replacing ad-hoc responsive clamp values.
  • Font weights follow display-only rule: Stat values, vote counts, and detail hero stats now use font-bold instead of font-extrabold, reserving the heaviest weight for display headings only.
  • All form inputs use correct padding: The destination name, link, cost, duration, pitch, and AI URL inputs now use the design-system standard input padding.
  • Sort and option buttons refined: Sort controls and inclusion/flight option buttons now use rounded-lg corners and the design-system press scale.
Feb 20, 2026

Budget Module Visual Refresh: Design System Migration

  • Budget inputs now use the correct background and spacing: All number inputs and the notes textarea now use the design-system input surface and standard padding, matching the rest of the app.
  • Typography cleaned up: The Budget and Budget Results headings now use the standard section-header type scale, and the sweet-spot value uses the page-title scale, replacing ad-hoc clamp values.
  • Min/Max labels use proper size: The Minimum and Maximum field labels now use the correct text-sm size instead of undersized text-xs.
  • Inclusion rows now use consistent card style: The "What Should Be Included?" rows and the inclusion detail sheet card now use rounded-lg with shadow instead of rounded-xl with borders, matching the design system card pattern.
  • Input focus states standardized: All budget inputs now use the design-system focus ring pattern with smooth transitions.
Feb 20, 2026

When Module Visual Refresh: Design System Migration

  • Cards and panels now use consistent radius: All cards, stat boxes, result sections, disclosure panels, and the heatmap popover now use the standard rounded-lg radius from the design system.
  • Typography cleaned up: The main heading, step headings, stepper labels, legend text, and helper tips now use the correct type scale sizes, replacing ad-hoc clamp values and undersized text-xs.
  • Stepper number badges use correct weight: Step number circles now use font-bold instead of font-extrabold, matching the design system rule that reserves extrabold for display headings only.
  • Overlay navigation buttons refined: The Back, Top, and Next overlay buttons now use the design system press scale and properly sized labels.
  • Dark mode cleanup: Removed unnecessary dark: overrides on tip text that conflicted with the semantic token auto-swap system.
Feb 20, 2026

Dashboard Visual Refresh: Design System Migration

  • Dashboard cards now use consistent depth and radius: All cards on the dashboard use the standard shadow and rounded-lg pattern from the design system, replacing the mixed border-only and rounded-xl styles.
  • Buttons are now rounded-lg with refined press feedback: Action buttons across the dashboard, module sheets, and profile manager now use the design-system button pattern with rounded-lg corners and refined active scale.
  • Profile manager input matches the design system: The display name field now uses the standard input styling with proper padding and focus ring.
  • Typography cleaned up: The trip name heading, labels, and helper text now use the correct type scale sizes from the design system, replacing ad-hoc clamp values and undersized text.
  • Trip code badge now uses monospace font: The share code pill in the dashboard header now uses the mono font for better readability of alphanumeric codes.
  • Module sheet status cards use nested card pattern: The quick-status summary inside module sheets now uses the design system nested card style for clearer visual hierarchy.
Feb 20, 2026

Trip Split Improvements: Selection, Filters, Currency, and Ledger Flow

  • Split-with quick clear action added: Trip Split now includes a one-tap Clear control beside Select all so you can instantly reset the guest selection.
  • You no longer select yourself in split-with: The current participant is now removed from the split-with checklist so the list only shows other trip members.
  • Split-with now filters to booked guests: The selector now only shows participants currently marked Booked in Book It, with inline helper text explaining why some guests are hidden.
  • Split-with chooser is now collapsible: The participant checklist now starts collapsed by default and can be expanded when needed to reduce vertical clutter in Add Expense.
  • Ledger and Settle Up visual rhythm is now aligned: Card padding, spacing, and type scale between both tabs have been tuned for more consistent scanning without changing core layout behavior.
  • Trip Split now uses admin-configured currency defaults: USD-specific labels and formatting were removed from Trip Split, and the module now reads its default currency from the admin module settings UI.
  • Settle Up scrolling is more stable on iOS: The settle panel now uses a contained overscroll region and preserves scroll position across live refreshes to prevent snap-back-to-top behavior.
  • Custom split amounts are now supported: Add Expense now supports an Equal/Custom amounts mode, stores per-person owed cents, and settle-up math now respects those custom split details.
  • Expenses are now editable with explicit expense dates: Creator-owned ledger rows now include an Edit action, and the form supports setting/updating a dedicated Date of expense field that persists in the ledger.
  • Ledger and add/edit are now distinct flows: Add and edit now open in a dedicated expense-editor flow with a clear return-to-ledger path, keeping the ledger itself focused on viewing list data.
  • Per-expense currency with conversion is now live: Each expense can now be entered in its own currency, converted client-side via Frankfurter into the trip’s base currency, and stored with FX metadata for consistent settle-up totals.
  • Receipt photos can now be attached and viewed per expense: Trip Split now supports uploading multiple receipt images to R2, storing receipt metadata per expense, and opening receipt links directly from the ledger and editor views.
Feb 20, 2026

Budget Included Items: “Other” Is Now Mutually Exclusive

  • “Select all” now skips “Other”: The quick action selects Flights, Accommodation, Food & Drink, Activities, Transport, and Events only.
  • Mutual-exclusion behavior is now enforced: Choosing Other clears normal inclusion chips, and choosing any normal inclusion chip now clears Other.
  • Saved payloads now stay consistent: Budget submissions now sanitize included-item selections so Other cannot be stored together with standard categories.
Feb 20, 2026

When Date Labels Now Match Across Modules

  • Top-week range labels are now consistent: Destination reminders, dashboard When summaries, and Book It date callouts now use the same week-range label source as the When module.
  • Fixed a window-length fallback mismatch: Date labels no longer fall back to default 7-day windows when a trip uses a different configured trip length.
  • Trip-specific date context is now respected outside When: Downstream modules now pass trip context when resolving top-week labels, keeping ranges aligned with the active trip configuration.
Feb 20, 2026

Book It Module: Booking Status, Group Progress, and Shared Details

  • Book It is now live in Timeline: The dashboard’s Book It card now opens a real module instead of a preview stub route.
  • Three-state flow now follows trip readiness: While destination voting is open, Book It shows a Top Trip Preview and lock messaging; once destination is locked, booking controls unlock automatically.
  • Personal booking status with auto-save: You can now mark I’ve Booked or Not Yet, add an optional booking link/notes, and edits save automatically after a short pause.
  • Visibility controls are explicit: Booking status is always visible to the group, while booking link and notes are independently shareable with clear toggles.
  • New Group Status tab (locked only): Shows booked vs not-yet vs no-update counts, a simple progress bar, and member lists grouped by status.
  • Shared details respect privacy toggles: Group view only shows notes/links from members who explicitly enabled sharing.
  • Lock-aware actions for booking coordination: Booking-link and copy-summary actions stay disabled until destination lock, then use available trip context from prior modules.
Feb 20, 2026

Trip Split Module Launch (Ledger + Settle Up)

  • Shared expense ledger is now live: Anyone in the trip can add shared expenses with description, category emoji, and amount in cents-backed currency inputs.
  • Split-with selection works Splitwise-style: Choose who is in on each expense (default is everyone), with equal split math handled server-side for consistent totals.
  • Deterministic cent handling: When totals do not divide evenly, remainder cents are assigned predictably by participant ID so balances stay stable across refreshes.
  • Settle Up view now computes transfers: The app calculates who pays whom using server-side greedy debtor/creditor matching and presents a minimum-like transfer list for group settlement.
  • Group-chat handoff included: Use the new “Copy Settlement Summary” action to paste clean settle-up instructions directly into your trip chat.
Feb 20, 2026

Destinations UI Polish: Vote-First Cards, Cleaner Actions, Better Details

  • Voting is now the primary action: Destination cards now use a larger, high-contrast vote control with a clearer arrow/count layout and more thumb-friendly tap targets.
  • Card hierarchy is easier to scan: Destination names now wrap naturally, key trip facts are grouped into a compact stat row, and noisy chip overload is reduced in the default feed view.
  • Sort state is now unambiguous: Only the active sort pill gets the emphasized accent treatment, while inactive options use muted neutral styling.
  • Source links are friendlier: Raw URLs are replaced with labels like View on booking.com, while still preserving the full outbound link target.
  • Edit/Delete moved behind overflow for authors: Submitter actions are now tucked into a contextual overflow menu with outside-click and Escape-to-close behavior to reduce card clutter.
  • Detail view now leads with a hero summary: Destination detail panels now present name + key trip facts first, then the pitch, then full attribute rows (with match score shown only when present in data).
Feb 20, 2026

Trip Dashboard: Edit Name + Delete Profile

  • New Profile action on dashboard: Participants now have a dedicated in-app profile manager from the Trip Dashboard header.
  • Edit name is now self-serve: Updating your display name saves to the trip immediately and persists across refreshes and module/admin views.
  • Delete profile is now user-controlled: Participants can remove only their own profile + related submissions (with confirmation) and are returned to Home with local identity cleared.
Feb 20, 2026

Destination Guidance: Top Date-Range Reminder

  • Destination feed now shows a timeline reminder: You’ll now see a subtle note reminding the group to propose destinations that fit the current top date range.
  • Reminder uses existing When consensus data: The message is derived from the same submitted-availability source already used for top-week summaries.
  • Graceful fallback is included: If a top date range isn’t available yet, the reminder falls back to a neutral “not set yet” message.
Feb 20, 2026

Home UX: Group Code Now Persists Between Visits

  • Returning to Home now remembers your group code: If you previously entered a valid code, the Home join field auto-fills it on your next visit.
  • No auto-redirect behavior was added: The page still waits for your explicit action, preserving the existing low-friction join flow.
  • Identity hydration still works as before: If a known name exists for that code, Home continues to prefill your name alongside the remembered code.
Feb 20, 2026

Destination Submission Progress: Dashboard Count Fix

  • Destination card submission counts now reflect real activity: The Trip Dashboard no longer shows false 0 submitted when participants have already added or voted on destinations.
  • Existing trips are reconciled automatically: Submission totals now include participant destination/vote activity, so older data is counted even before any new interaction.
  • New destination activity now writes completion state: Adding a destination or voting now marks destination completion for that participant so module progress stays aligned going forward.
Feb 20, 2026

Admin Accuracy: Per-Participant Module Completion Counts

  • Participant completion badges are now keyed correctly: Timeline module counts in Admin now resolve by trip + module + participant, preventing cross-row drift.
  • Legacy When submissions are now represented in Timeline stats: Admin now includes canonical When completion from planner submissions, so users who submitted in legacy flows are no longer undercounted.
  • Module labels now match completion totals: Per-user module tags now reflect submitted modules only, keeping labels aligned with the numeric completion count.
Feb 20, 2026

Destinations Cards: Scan-First Meta, Detail Modal, and Author Edit

  • Price now leads each card: Cost is promoted into a dedicated first meta badge (for example, $965 / person) with tabular-number alignment for faster cross-card scanning.
  • Trip facts are grouped more clearly: Duration, inclusion, and flight-time details now sit together in consistent meta chips, while author attribution is separated into a quieter secondary line.
  • Tap card body to open full details: Destination cards now open a modal overlay with full pitch, link, and fact breakdown. Tap-away, close button, and Escape-to-close behavior are all supported.
  • Vote/actions no longer conflict with details open: Upvote, Edit, and Delete controls are isolated from the body tap zone, reducing accidental modal opens on mobile.
  • Authors can edit all destination fields: An Edit action now appears next to Delete for your own cards, reusing the Add Destination form in prefilled edit mode and saving updates in place.
  • Objective duration is now captured and visible: Add/Edit now includes an optional trip-duration field (nights), AI autofill can populate it when explicitly shown in source content, and cards/details show that value as a first-class trip fact.
  • Reusable feed-card conventions added: A shared card class recipe now defines title/meta/description/action structure so other feed cards can adopt the same scan-friendly pattern without redesigning from scratch.
Feb 20, 2026

Destination Page Stability Fix (No More Summary Jumping)

  • Stopped repeat summary regeneration on idle polls: The destination page now loads the Preferences consensus summary once per page visit instead of re-fetching and rebuilding it every poll cycle.
  • Reduced background DOM churn: Destination feed polls now skip full UI re-renders when vote/module data has not changed, preventing unnecessary visual movement.
  • Summary text now updates only when content changes: The consensus banner compares incoming text/links before writing to the DOM, so unchanged content no longer triggers repaint noise.
  • Layout remains stable during refreshes: The consensus area keeps a stable reserved height and no longer collapses/expands between polling ticks.
  • Destination feed idle behavior is calmer: Sitting on the page now avoids the periodic top-of-page shift previously caused by summary section remounts.
Feb 20, 2026

Destination Module: Feed, Add, AI Autofill & Upvotes

  • Destination feed is live: Browse all submitted destination ideas in a mobile-scannable card feed, sorted by most voted or newest.
  • Add destinations manually or with AI: Fill in name, cost, inclusion type, flight time, and a pitch. Optionally paste URLs or upload screenshots for AI-assisted autofill.
  • AI autofill with confidence markers: Anthropic Haiku analyzes screenshots and URLs, prefills high-confidence fields with a green checkmark, and marks uncertain fields as “Needs check” in amber.
  • “For You” POV chips on every card: Destination cards show personalized match/mismatch indicators based on your submitted preferences (flight tolerance, all-inclusive, beach, budget).
  • Upvote to signal preference: Tap the vote button on any card to signal your favorites. Vote counts are visible to the whole group.
  • Group consensus CTA banner: The destination feed shows the AI Search Brief from Step 3 preferences to guide your destination search.
  • Dashboard overlay for destinations: Clicking the Destination card on the dashboard opens a quick-status overlay with browse and add shortcuts.
  • Author can delete own submissions: Expand a destination you submitted to see the delete option. Locked modules prevent new additions and votes.
Feb 19, 2026

PlanIt Launch: Unified Timeline Entry

  • TripWeek is now PlanIt: Core navigation and Timeline surfaces now use PlanIt naming.
  • Home now has one join path: Enter trip code + name once and continue directly into the Timeline experience.
  • Mode selector has been retired: Stable/Experimental toggles and split-flow links were removed from entry surfaces.
  • Legacy planner URL now forwards into Timeline: Direct visits to /planner.html redirect into PlanIt Timeline routing.
  • When continuity is preserved: Existing legacy planner choices remain canonical and continue to power Timeline When without data drift.
Feb 19, 2026

When Reconciliation: Legacy Choices Now Win Conflicts

  • Legacy planner selections are now enforced as canonical for timing: When data reconciliation now preserves existing planner week choices/ranks if conflicting beta payloads exist.
  • Timeline When progress is now aligned with planner submissions: Dashboard module counts for the When card now derive from legacy planner participation/submission state.
  • When module reads now project canonical planner data: When module API responses now serve payloads derived from planner selections to reduce cross-flow drift during merge prep.
  • Convergence storage groundwork is in place: Added backend module-scoped `when_selections` projection table with backfill from legacy selections to support safe cutover planning.
Feb 19, 2026

Single Credential Gateway + Native 3-Step Planner

  • Code + name are now entered once: Home now performs the actual trip join and stores the canonical participant session before routing to Stable or Experimental surfaces.
  • Planner-side duplicate entry removed: Stable planner no longer renders in-page code/name join inputs, and Timeline route prompts no longer duplicate credential entry.
  • Session guards now recover through Home: Missing or stale sessions on planner/module routes now redirect to Home with a return path, instead of trapping users in reconnect/join edge states.
  • Stable + When now run as true 3-step flow: Pick Weeks, Rank Top 5, and Review/Submit are now the native step sequence across planner and embedded When module shells.
  • Progress compatibility preserved: Client step progress is mapped to existing backend progress semantics so participant history remains intact during rollout.
  • Reconnect startup hardening: Planner auto-mount now initializes after all runtime declarations, preventing Safari startup-order crashes during immediate reconnect flows.
  • When overlay deep-links stabilized: Timeline dashboard “View Results” and “Edit Selections” now reliably land on the intended When steps without being overridden by stale local step state.
Feb 19, 2026

Stable Handoff Recovery + Timeout Safety

  • Fixed rare stable handoff hang: Home-to-Stable auto-connect now guarantees loading-state cleanup on every fallback path, including stale local session edge cases.
  • Added explicit join timeout protection: Auto-connect join calls now fail fast with a timeout and return users to a clear manual “Join Trip” recovery path instead of waiting indefinitely.
  • More predictable auto-join behavior: Auto-join now uses a single-attempt handoff lifecycle per load and cleanly restores normal planner chrome when fallback is required.
  • Added a handoff failsafe circuit-breaker: If reconnecting is unexpectedly interrupted before normal cleanup, the planner now auto-releases back to manual Join instead of staying latched on the reconnect card.
Feb 19, 2026

Join Handoff + Landing Alignment Fixes

  • Stable/Experimental control centering corrected: The mode toggle now uses explicit grid centering and overflow-safe pill treatment for more reliable mobile alignment.
  • Step-header flash removed during auto-join: Planner handoff now uses a dedicated loading state so users no longer see Step 1 / 4-step chrome flash before the joined 3-step flow appears.
  • Connecting state alignment improved: Auto-join now renders as an intentional handoff skeleton block instead of a stray Step 1 button-state change near the bottom of the page.
  • Landing quick-entry spacing tightened: Home code/name entry now keeps a cleaner visual rhythm on narrow screens with consistent button sizing.
Feb 19, 2026

Landing Flow Visual Polish (Mode Toggle + Quick Entry)

  • Mode toggle cleaned up: Stable/Experimental segmented control now uses a tighter, overflow-safe container to reduce visual artifacts on narrow mobile widths.
  • Quick-entry spacing reworked for mobile: The Home code/name area now uses a structured card layout with cleaner vertical rhythm and less cramped wrapping at small breakpoints.
  • Go action sizing improved: The Home “Go” action now expands naturally on mobile and keeps a compact min-width desktop treatment for better touch ergonomics.
  • Start Planning links now stay mode-consistent: Both hero and footer Start Planning CTAs now follow the currently selected Stable/Experimental mode target.
Feb 19, 2026

One-time Join Session + 3-Step Planner Flow

  • Enter code + name once from Home: The landing quick-entry now captures both trip code and name, then carries that identity into Stable and Experimental planning flows.
  • Stable planner removes duplicate join friction: When session identity is already known, the planner auto-connects and starts directly in planning instead of requiring another manual Join step.
  • Experimental deep-links now recover cleanly: Direct links into Timeline module routes (including When) now show one credential prompt when needed, then continue to the requested route without repeating prompts.
  • Visible participant flow is now 3 steps after join: Joined users now see Pick Weeks, Rank Top 5, and Review/Submit, while internal progress tracking remains backward-compatible.
  • Shared session source of truth: Stable planner, Timeline dashboard, and embedded modules now read/write a shared planner-session identity to reduce cross-flow re-entry issues.
Feb 19, 2026

Preferences Mobile Compact Controls + Brief Summary

  • Much shorter edit flow on phones: Single-select preference questions now use compact one-row controls (segmented or horizontal), replacing taller multi-row bubble stacks.
  • Four-state deal-breakers are preserved: Adults-only, beach access, and all-inclusive still save and submit the full Must / Prefer / Avoid / Don’t care model required for preference auditing.
  • Clear selection hierarchy: Each compact single-select now shows an explicit current selection label directly below the control for quick scanning while editing.
  • AI brief block is now collapsed by default: The large derived-brief section in edit mode was replaced by a concise summary card with optional “Show full brief” disclosure.
  • Copy still captures full detail: Tapping Copy from the collapsed card copies the full derived AI search brief text, not just the visible summary snippet.
Feb 19, 2026

Timeline Module Entry Overlays (When, Budget, Preferences)

  • Overlay-first entry is now consistent: From the Timeline dashboard, tapping When, Budget, or Preferences now opens an at-a-glance overlay first instead of jumping straight into full module screens.
  • Budget quick consensus summary: The Budget overlay now shows module status, submission progress, and a current sweet-spot readout based on submitted ranges before you choose what to do next.
  • Preferences quick consensus summary: The Preferences overlay now shows module status, submission progress, and a concise consensus trend summary based on submitted preference signals.
  • Clear action paths: Each overlay now provides explicit actions for editing your own response or opening full results, with close/dismiss returning to the Timeline dashboard.
  • When behavior preserved: The existing When overlay flow remains intact while matching the same entry pattern used by Budget and Preferences.
Feb 19, 2026

Preferences Shared Results (Group Consensus)

  • New shared results route: Preferences now has a dedicated group-results view at #/TRIPCODE/preferences/results, with quick links to edit your own preferences and return to the dashboard.
  • Submission status header + reminder action: The page now shows N/M submitted, explicit waiting names, and a one-tap “Copy reminder” action for nudging pending participants.
  • Deterministic deal-breaker consensus: Adults-only, beach access, and all-inclusive now render four-state distributions (Must / Prefer / Avoid / Don’t care) with outcome labels: MUST, AVOID, LEAN YES, LEAN AVOID, SPLIT, or NO SIGNAL.
  • Don’t-care-safe winner logic: Climate, vibe, accommodation, and flight-tolerance winners now ignore “Don’t care” when deciding the outcome and only declare a winner when support is strong enough; otherwise they display SPLIT.
  • Structured, reproducible AI brief: The one-sentence AI Search Brief is regenerated from stored structured consensus on every refresh instead of relying on freeform-only text.
  • Nice-to-knows aggregation: Dietary/accessibility chips now aggregate with counts (including capped previews + “View all”), and notes render as compact entries with truncation and expandable long-form detail.
Feb 19, 2026

Preferences Module Revamp (Tap-first Survey)

  • Preferences is now fully interactive: The timeline Preferences card now opens a real survey module instead of a preview stub route.
  • Tiered tap-first flow: The module now uses progressive disclosure (Tier 1 → Tier 2 → optional Tier 3) with large tap targets and explicit skip paths on every question.
  • New four-state deal controls: Adults-only, beach access, and all-inclusive now support Must / Prefer / Avoid / Don’t care, replacing the old three-state pattern.
  • Structured payloads for scoring: Preferences now save as enum fields plus dietary/accessibility chip arrays and one optional notes field, keeping data stable and machine-friendly after refresh.
  • Derived AI Search Brief: The module generates a reproducible search brief directly from saved structured selections and lets you regenerate or copy it anytime.
Feb 19, 2026

Admin Destructive Flow Fluidity Follow-up

  • Native browser confirms replaced: Delete trip, reset submission, remove participant, and reset database actions now use in-app bottom-sheet confirmations for a more consistent mobile and desktop interaction flow.
  • Clearer impact before destructive actions: Confirmation sheets now show concise disclosure details explaining exactly what data is affected before you commit.
  • Safer trip-detail delete behavior: In trip detail, canceling delete no longer bounces you back to the dashboard; navigation now happens only after a confirmed successful delete.
  • Fail-safe fallback preserved: If shared sheet primitives are unavailable, admin destructive actions still fall back to native confirmation prompts so safety checks remain intact.
Feb 19, 2026

Trip Shell Stub Routes Fluidity Pass (Phase 9)

  • Unimplemented module routes now have fluid previews: Preferences, Destination, Book It, and Trip Split routes now render structured preview screens instead of falling through to unmatched hash states.
  • Skeleton-first route transitions: The trip shell now shows lightweight skeleton content before rendering the trip-code entry view and each preview module route.
  • Secondary details moved into sheets: Preview routes now expose a “View planned flow” sheet with disclosure rows for input/results/status context, keeping the main layout compact.
  • Entry-route ergonomics + feedback: The empty-hash trip-code entry flow now uses shared pressable controls, adds optional quick-start guidance, and shows toast feedback for invalid or normalized trip codes.
  • Trip-shell nav touch polish: The timeline page theme toggle now uses a 44px-friendly pressable treatment consistent with the fluid interaction baseline.
Feb 19, 2026

Changelog Page Fluidity Pass (Phase 8)

  • Shared pressable ergonomics on changelog controls: Nav links, footer actions, theme toggle, and the new release-highlights action now use the same touch-friendly pressed/focus behavior as other fluid-ready pages.
  • Release highlights moved into a sheet flow: A new “Release highlights” action opens an in-app bottom sheet that surfaces the latest updates without adding more inline layout churn.
  • Progressive disclosure for dense update text: The highlights sheet uses disclosure rows so each recent release can be scanned quickly, then expanded on demand.
  • Skeleton + toast polish: The feed now gets a lightweight skeleton-first hydration pass during enhancement bootstrap, and key outcomes (theme changes, highlights open, external-link actions) now show toast feedback.
Feb 19, 2026

About Page Fluidity Pass (Phase 7)

  • Shared pressable ergonomics on public controls: About-page nav actions, footer links, and primary CTA now use the shared pressable pattern for consistent tap targets and pressed/focus feedback.
  • Secondary details moved into a sheet: A new “Build details” action opens a bottom sheet so implementation context is available on demand without expanding the main page layout.
  • Progressive disclosure for dense context: Stack, interaction-layer, and rollout posture notes inside the sheet now use shared disclosure rows for cleaner scanning.
  • Lightweight skeleton + toast feedback: Hero media now gets a shared skeleton treatment when needed during image load, and key About interactions (theme toggle + external actions) now surface immediate toast feedback.
Feb 19, 2026

Landing Flow Fluidity Pass (Phase 6)

  • Smoother entry controls: The landing page mode toggle and primary entry buttons now use the same press feedback and touch-friendly sizing pattern as the rest of the app.
  • Skeleton-first entry bootstrap: The hero entry controls now render a compact skeleton state before interaction wiring finishes, reducing abrupt first-paint jumps.
  • Clear immediate feedback: Invalid trip-code submissions, trip-code normalization, and mode switches now show in-app toast feedback instead of silently doing nothing.
  • Mode help moved into a sheet: The new “Compare modes” action opens a bottom sheet with Stable vs Experimental guidance and one-tap mode actions.
  • Progressive disclosure for dense guidance: Stable/Experimental details in the sheet use disclosure rows, keeping the hero compact while preserving detailed context on demand.
Feb 19, 2026

Legacy Planner Fluidity Pass (Phase 5)

  • Shared interaction primitives now power the planner: The production planner now loads the shared interaction layer used by timeline/admin so feedback patterns stay consistent across surfaces.
  • More consistent press feedback: Core planner actions (Join, Submit, Export, Clear, step controls) now use stronger pressed/focus behavior and touch-friendly button sizing.
  • Primary join/reconnect loading skeleton: Step 1 now shows a compact skeleton loading state while cloud join/reconnect is in progress, reducing abrupt state jumps.
  • Clear action moved off browser confirm: Clearing selections now uses an in-app bottom sheet confirmation instead of the native confirm dialog.
  • Step 2 quick controls disclosure: Dense interaction tips are now grouped in an optional disclosure row to keep the main flow cleaner while preserving power-user guidance.
Feb 19, 2026

Admin Portal Fluidity Pass (Phase 4)

  • Shared pressable behavior in admin: Admin controls now use the same press feedback and focus treatment as timeline module actions, improving consistency across dashboard, detail, and DB recovery actions.
  • Skeleton-first loading: Trip list and trip detail now render structured skeleton placeholders while data loads, replacing abrupt text-only loading states.
  • Native popups replaced for key secondary flows: Trip rename, trip clone, and participant selection detail views now open in bottom sheets instead of browser prompt/alert dialogs.
  • Progressive disclosure in participant detail: Selection breakdowns (ranked, available, maybe) now use disclosure rows inside the sheet for cleaner scanability.
  • Toast tone consistency: Admin outcome messages now align with the shared semantic toast tones used across timeline modules.
Feb 19, 2026

When Module Fluidity Pass (Phase 3)

  • Shared pressable ergonomics: Key When actions (Join, Continue, Submit, Export, Clear) now use the shared pressable pattern for more consistent pressed feedback and touch-friendly tap targets.
  • Skeleton-first route mount: Opening the When module from the timeline dashboard now shows a structured skeleton shell before the planner UI hydrates.
  • Quick controls in a sheet: Step 2 adds a compact “Quick controls” action that opens a bottom sheet with touch, desktop, and keyboard shortcuts instead of expanding inline helper text.
  • Dense helper copy moved to shared disclosure rows: Step 1 and Step 3 explainers now use the shared disclosure pattern for cleaner, consistent progressive disclosure.
  • Dashboard back action polished: The trip-shell “Dashboard” back action now uses a larger pressable treatment for easier mobile tap targeting.
Feb 19, 2026

Budget Module Fluidity Pass (Phase 2)

  • More consistent tap ergonomics: Budget controls now use shared pressable interactions, including stronger pressed feedback and 44px-friendly tap targets for key actions.
  • Skeleton-first loading: Budget input and results routes now render structured skeleton blocks during primary data fetches instead of plain loading text.
  • Inclusion details moved to sheets: In results, tapping an inclusion row opens a bottom sheet showing who voted for that item, reducing inline layout jumps.
  • Progressive disclosure for dense details: Added concise disclosure rows for budget guidance and method context, so optional detail stays available without crowding the main flow.
  • Clearer immediate feedback: Validation and load/save failures now trigger consistent toast feedback alongside inline state text.
Feb 19, 2026

Timeline Dashboard Fluidity Pass (Phase 1)

  • When card now opens a bottom sheet: Secondary actions moved into a mobile-friendly sheet with tap-outside and Escape-to-close behavior, plus body scroll lock while open.
  • Skeleton loading for primary dashboard fetch: The dashboard now shows structured skeleton cards while modules load instead of a single text line.
  • More consistent tap ergonomics: Dashboard pressables (including the trip code copy button) now use shared pressed feedback and minimum 44px touch targets.
  • Faster feedback on join/load states: Join success/failure and dashboard load failures now use consistent toast feedback for clearer immediate status.
  • Shared interaction primitives added: Timeline UI now has reusable Pressable, Sheet, Skeleton, DisclosureRow, and standardized Toast helpers for follow-on module migrations.
Feb 19, 2026

Budget Module UX Refinements

  • Inclusion quick actions: “Select all” and “Clear” buttons let you toggle all inclusion categories at once. A new “Events” option covers one-time excursions.
  • Slider guardrails: The min and max budget sliders can no longer cross each other. Typing or dragging one past the other will push it along, so you always get a valid range.
  • Bigger touch targets: Slider thumbs are larger and show a ring on press for easier mobile use.
  • Sweet-spot overlap bar: The results chart now shows a highlighted overlap region across all participants’ comfortable ranges, so you can spot the group’s sweet spot at a glance.
  • Compact inclusion summary: The “What Should Be Included?” section now shows compact count bars. Tap any row to expand and see who voted for it.
  • Due badge alignment: The “Due” date badge now sits inline with the module status badge instead of wrapping to a second line.
Feb 18, 2026

Module Due Dates (Timeline)

  • Per-module due dates: Admins can now set an optional deadline on each planning module independently. Each module gets its own due date — this is not a trip-wide deadline.
  • Yellow “Due” badge: Modules with a future due date show a yellow “Due MMM D” badge on the timeline dashboard card.
  • Auto-lock on expiry: When a module’s due date passes, it automatically locks on the next page load. Late submissions are also rejected server-side.
  • Expired badge: Locked-by-deadline modules show a muted “Expired Xd ago” badge so participants and admins know why it locked.
  • Admin re-open flow: Reopening an expired module automatically clears the old due date, so admins can set a fresh deadline without a re-lock loop.
Feb 18, 2026

Planner Ranking & Heatmap Fixes

  • Availability-first ranking: The leaderboard now sorts by how many people are available first, then uses personal rankings as a tiebreaker. A week with more available people will never be outranked by one with fewer.
  • Heatmap counts match cards: Fixed a bug where the heatmap cell could show a higher count than the corresponding detail card. Both now show the same number — only submitted participants are counted.
  • Submission-aware scoring: Auto-saved selections from participants who haven’t submitted yet no longer inflate availability counts or ranking scores. Only finalized submissions affect the group results.
Feb 17, 2026

When Tile Deep-Links & Top-Week Summary

  • “View Results” goes directly to results: Clicking “View Results” from the When tile now always opens the When module on Step 4 (review & results), regardless of where you left off.
  • “Edit Selections” goes directly to week picker: Clicking “Edit Selections” always lands on Step 2 (pick weeks), so you can start editing immediately.
  • Top week shown on dashboard: The When detail panel now shows “Top week is …” with the current group leader and available-count, giving you a quick read without opening the full module.
  • No redundant onboarding: Identity carries over automatically from the dashboard — both buttons still skip the name re-entry step.
Feb 17, 2026

Timeline UX Fixes

  • Start Planning works in Experimental: Clicking “Start Planning” in Experimental mode now shows a trip code entry form instead of a dead-end page.
  • When module auto-joins: Opening the “When” module from the Timeline dashboard no longer asks you to re-enter your name — your identity carries over from the dashboard session automatically.
  • When tile at-a-glance summary: The “When” card on the Timeline dashboard now expands to show submission progress and quick-action buttons for viewing results or editing selections.
  • When module crash fix: Fixed a bug where the week availability planner would silently fail to initialize when loaded inside the Timeline shell.
Feb 17, 2026

Mode-Aware Admin Portal

  • Data integrity fixes: Deleting a trip or removing a participant now properly cleans up module submissions and module records — no more orphaned data.
  • Clone seeds modules: Cloning a trip now correctly initializes all planning modules on the new trip, matching the create-trip behavior.
  • Mode-aware reminder link: The “Copy reminder” button now generates the correct URL (legacy planner or timeline dashboard) based on your selected experience mode.
  • Mode-aware participant stats: In Timeline mode, participant cards show module submission progress instead of legacy week selection counts.
  • Mode-aware group results: In Timeline mode, the Group Results section shows per-module submission progress with completion bars. In Stable mode, the proven leaderboard view is unchanged.
  • Mode-aware CSV export: Export now outputs module submissions (Timeline) or week selections (Stable) depending on your experience mode.
Feb 17, 2026

Experience Mode Selector

  • Choose your experience: A new Stable / Experimental toggle on the landing page lets you switch between the proven legacy planner and the new Timeline dashboard with one click.
  • Persistent across sessions: Your choice is saved in a cookie and survives refreshes, navigation, and new tabs — no need to re-select every visit.
  • Backend-aware: The experience mode cookie is automatically included in all API requests, enabling server-side mode resolution for future data path enforcement.
  • Admin mode indicator: The admin portal now shows a small badge indicating which experience mode is active (Stable or Timeline).
  • Backward compatible: Existing ?ui=timeline bookmarks and links continue to work — they automatically persist the choice to the cookie.
Feb 17, 2026

Fully Semantic Color Tokens

  • CSS-variable-backed tokens: All color tokens now resolve through canonical CSS variables that automatically switch between light and dark themes — no more per-element dark: overrides for colors.
  • Zero arbitrary values: Replaced ~884 inline CSS variable references (bg-[var(--surface)]) with named semantic tokens (bg-surface-card) across every page and module.
  • Heatmap colors tokenized: The availability heatmap’s amber/orange/red color scale is now driven by theme-adaptive CSS variables instead of hardcoded hex values.
  • Avatar colors adapted: Participant avatar circles now use the visualization color palette, automatically adjusting for light and dark backgrounds.
  • Backward compatible: All existing page styling preserved — legacy CSS variable names are aliased to the new canonical system.
Feb 17, 2026

Design System Token Refresh

  • Semantic color tokens: Dark-mode colors are now driven by a centralized design token system instead of ad-hoc hex values — more consistent surfaces, borders, and text across all pages.
  • Improved focus rings: All input fields and buttons now show a cleaner, accent-colored focus ring when navigating with keyboard.
  • Multi-word name fix: Participant names with spaces (like “Alex Smith”) no longer wrap awkwardly in chips and leaderboard entries.
  • Section label refinement: Module section headings have been refined to match the updated typographic scale — slightly larger, softer weight, wider tracking.
Feb 17, 2026

Overlay Nav Button Fix

  • Styled nav buttons: The Back, Top, and Next buttons in the selection overlay now have proper backgrounds, sizing, and spacing — previously they were missing all styling on mobile.
  • Next button accent: The “Next” button is now visually distinct with an accent-colored background so it stands out as the primary action.
  • Tap feedback: All overlay nav buttons now show a subtle press animation when tapped on mobile.
Feb 16, 2026

Stable Routing for Legacy & Timeline UIs

  • No more broken joins: Entering a trip code now always routes to the proven legacy planner — the Join button, week picker, and group results all work as expected.
  • Timeline dashboard opt-in: The new multi-module Trip Dashboard is now accessed via an explicit beta flag (?ui=timeline) or the “Try Dashboard” banner in the planner.
  • Data stays matched: Legacy trips query legacy tables; timeline trips query module tables. No more mismatched data between UI and database.
  • Existing users unaffected: All current beta testers (including INTL2026) continue using the legacy planner with their existing preferences intact.
Feb 16, 2026

Larger Dropdown Arrows

  • Bigger disclosure arrows: Collapsible section arrows (readiness checklist, heatmap, participants, leaderboard rows, admin actions) are now larger and easier to tap on mobile.
  • Standardized sizing: All dropdown arrows now use a single shared style — consistent appearance across the planner, admin portal, and trip dashboard.
  • Touch-friendly: Arrow indicators are more legible on high-DPI mobile screens without being oversized on desktop.
  • FAQ arrows: Inline help sections (“New here?” and “How does ranking work?”) now use the same arrow style as collapsible sections instead of the browser default.
Feb 16, 2026

Unified Public Footer

  • Consistent footer: About and Changelog pages now share the same enterprise-style footer design as the home page.
  • Full tagline: All public pages display the complete “Vibecoded with unreasonable optimism” tagline.
  • Navigation links: Every public page footer now has three links — Home (or contextual equivalent), About/What’s new, and GitHub — with no self-referencing links.
Feb 16, 2026

Multi-Module Platform

  • Trip dashboard: New hub page (/trip.html) shows all planning modules at a glance with live status indicators.
  • Budget module: Comfortable range sliders, absolute ceiling, inclusion preferences, and sweet-spot consensus algorithm.
  • Module framework: Database tables and API endpoints for plugging in future planning modules.
  • Admin module controls: Per-module status management (open, locked, closed) in the admin portal.
  • Backward compatible: Original planner at /planner.html works exactly as before.
Feb 15, 2026

Tailwind Migration & Polish

  • Tailwind v4 build: Full migration to Tailwind CLI — CSS footprint reduced ~90% for faster page loads.
  • High-DPI mobile readability: Larger nav arrows, stepper circles, and collapsible indicators for Retina screens.
  • Save feedback: Checkmark and cross icons (“Saved” / “Save failed”) replace the plain text indicator.
  • Hero card styling: Rank #1 week gets an accent border in both planner and admin leaderboards.
  • Status badge clarity: “Not submitted” (dashed) and “Unavailable” (solid) chips are now visually distinct.
  • Collapsible arrows: Standardized arrow style and animated rotation across all sections.
Feb 15, 2026

Platform UX Overhaul

  • Data integrity: Non-submitted participants now correctly show as “Not submitted” instead of “Unavailable” across both planner and admin.
  • Warm heatmap: New amber → orange → red color scale with always-visible legend and tap-to-inspect popovers.
  • Personalized results: The narrative summary tells you whether you are free for the top week, not just the group stats.
  • Admin safety: Delete separated from View on trip cards. Danger zone labels. Reset styled as destructive.
  • Admin layout: Group results promoted above actions. Participants grouped by status. Trip search added.
  • Mobile polish: Leaderboard promoted to first section. Heatmap and participants collapsible. Compact unselected cards.
  • Copy reminder: One-tap “Copy reminder” button to nudge friends who haven’t submitted.
  • Theme toggle: Sun/moon/auto icon replaces the confusing “System” dropdown.
Feb 14, 2026

Enterprise UI & Landing Page

  • Global nav bar: Consistent TripWeek wordmark, nav links, and theme toggle across all pages.
  • Landing page: SaaS-grade redesign with hero, feature grid, stats bar, fictional testimonials, and dual CTAs.
  • Design token sweep: ~95% of hardcoded colors replaced with semantic tokens. New accent, neutral, and danger token sets.
  • Score snapshot: Accent-striped stat cards with Sora typography.
  • Participant avatars: Colored initial badges across leaderboard, week detail, and participant list.
  • Ranking intent: Leaderboard shows who’s available and who ranked each week. “Top pick” / “2nd pick” labels.
  • Natural language results: Both planner and admin show narrative summaries instead of raw numbers.
Feb 13, 2026

Launch & Core Fixes

  • First deploy: Planner, admin portal, and API deployed to Cloudflare Pages.
  • Auto-rejoin: Returning users reconnect silently from localStorage session.
  • Crash fix: Fixed null-guard in restoreProfile() that crashed on first visit via direct trip links.
  • CI/CD: GitHub Actions workflow for auto-deploy on push to main.
  • iOS double-tap fix: touch-action: manipulation on all interactive elements.
  • Month-row heatmap: Replaced W1-W52 grid with month-grouped layout showing calendar dates.
  • Flexible trips: 2-14 day windows starting on any weekday.