UserStoreProvider was switching between three different return structures
(LoadingSpinner / children directly / Context.Provider wrapping children),
causing full fiber tree restructures in React 19 concurrent mode. When
batched with other state updates (e.g. UpgradeBlockContext loading),
React called insertBefore with a reference node already detached from
the DOM.
- Always render UserStoreContext.Provider so tree structure is stable;
spinner vs children toggle happens inside it
- Use useRef to hold a stable Zustand store (update via setState instead
of recreating on every render)
- Move inline <style> from App.tsx JSX into main.css to avoid React 19
style-tag edge cases with conditional sibling rendering
Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
Added a 14-day trial period for the "solo" and "team" plans during checkout session creation. Also, enforced a member limit of 3 for the "team" plan in the user invitation process and updated the settings page to reflect this limit with appropriate messaging.
Show the active subscription plan pill (Founder/Teams/Solo) next to the
user's name on the overview greeting and in the settings page header.
Made-with: Cursor
- Add view mode dropdown with "Semaine" (7 days) and "2 semaines" (14 days)
- Biweekly mode shows compact cards (smaller padding, no tablo badge, shorter labels)
- Navigation steps by 1 or 2 weeks based on current view mode
- Dynamic column count and card sizing based on view config
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Create shared GanttChart component with week navigation, day columns,
today indicator, and positioned task cards
- Task cards color-coded by status (blue/orange/purple/green)
- Replace list-based RoadmapView in Tasks page with GanttChart
- Replace list-based RoadmapSection in Tablo Details page with GanttChart
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Add due_date column to tasks table with Supabase migration
- Update database types and tasks_with_assignee view
- Add DatePicker to TaskModal for setting due dates
- Display due dates on KanbanTaskCard, list view, and Etapes section
- Enable Roadmap tab on both Tasks page and Tablo Details page
- Add RoadmapView components with timeline grouped by Etape
- Highlight overdue dates in red across all views
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Map each tablo color to a dedicated Lucide icon (Zap, Leaf, Gem, Flame, etc.)
- Apply contrast-aware icon color: dark gray for light backgrounds (yellow, cyan), white for all others
- NavigationBar: always use gray icon for sidebar consistency; active nav item uses light purple background (#804EEC tint)
- Apply icons to NavigationBar, tablos, tablo-details, tablo (dashboard), and tasks pages
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Set purple (#804EEC) as default ChannelBadge background color
- Update ChannelPreview active state to purple highlight (was blue)
- Add "Discussions" title header to chat page
- Standardize all page headers to text-2xl font-bold (tablos, tasks, files, planning)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- NavigationBar: add light/dark theme support with adaptive text colors
- TopBar: match navbar background color in both themes
- main.css: make navbar-background/darker CSS variables theme-aware
- tablo-details: restore working invite button with full share dialog
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- ActionCard: new disabled and badge props; disabled state shows opacity-50, cursor-not-allowed, prevents clicks
- Badge renders inline next to the label (e.g., "Bientôt")
- Invite Team card: permanently disabled with "Bientôt" badge visible without clicking
- Remove onInviteTeam prop and toast callback
Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
Instead of navigating to /tasks, the Create Task action card now opens a TaskModal with tablo selection enabled, allowing users to create a task directly from the dashboard.
Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
Guard TaskModal render with tabloId check to prevent it from mounting with undefined tablo context.
Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>