Commit graph

610 commits

Author SHA1 Message Date
Arthur Belleville
949888ec63
fix: resolve insertBefore DOM reconciliation error in React 19
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>
2026-03-30 23:07:47 +02:00
Arthur Belleville
0012bc87b3
db: enforce is_temporary = false on paid plans at the schema level
Adds a BEFORE trigger and CHECK constraint on profiles to guarantee that
is_temporary cannot coexist with a paid plan (solo, team, or annual),
regardless of which code path performs the update.

Also back-fills any existing inconsistent rows.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-30 22:18:40 +02:00
Arthur Belleville
0b0d7b6cf0
Block app access until organizations add a paid plan 2026-03-24 21:41:38 +01:00
Arthur Belleville
50ee39104b
Update founder signup copy to highlight unlimited features 2026-03-24 20:58:49 +01:00
Arthur Belleville
530e4a0257
Clarify Founder 50-seat limit on signup pages 2026-03-24 20:42:43 +01:00
Arthur Belleville
1113af72ac
allow invited to upgrade plan 2026-03-24 19:10:15 +01:00
Arthur Belleville
f6e5c39dcc
feat: implement trial period for checkout sessions and enforce team plan member limit
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.
2026-03-16 10:21:34 +01:00
Arthur Belleville
9cd51e9f0b
refactor: remove debug log from settings page 2026-03-16 10:07:10 +01:00
Arthur Belleville
9e0529f73b
feat: add plan badge to overview and settings pages
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
2026-03-16 09:52:34 +01:00
Arthur Belleville
65ea60a91c
Add pill in profile 2026-03-16 09:43:18 +01:00
Arthur Belleville
63edd59c57
feat: add PlanAnnouncement component to display active subscription plan notifications 2026-03-16 09:31:26 +01:00
Arthur Belleville
8ae27c2168
feat: add additional Stripe pricing IDs to cloudbuild configuration 2026-03-16 09:05:31 +01:00
Arthur Belleville
4d22e987de
Rename env var 2026-03-16 08:44:33 +01:00
Arthur Belleville
1a0d77857e
Fix missing Stripe price config 2026-03-16 08:41:02 +01:00
Arthur Belleville
5775ff3c8f
feat: enhance Stripe configuration to prioritize environment variables for secret keys 2026-03-16 08:32:41 +01:00
Arthur Belleville
e73268ab31
feat: add Stripe pricing IDs to configuration and update plan price retrieval 2026-03-16 08:32:31 +01:00
Arthur Belleville
c481f2c577
Retry signup tests with Stripe CLI 2026-03-15 19:09:35 +01:00
Arthur Belleville
3d4297f330
docs: add pricing signup flow verification design spec 2026-03-15 18:35:02 +01:00
Arthur Belleville
ca4ede28bb
Merge pull request #62 from artslidd/codex/tablo-overview-builder-v1
Codex/tablo overview builder v1
2026-03-14 14:06:27 +01:00
Arthur Belleville
0efc36e70c
feat: add configurable overview layout builder 2026-03-14 13:36:47 +01:00
Arthur Belleville
6b65e3fee4
chore: ignore local git worktrees directory 2026-03-14 10:47:51 +01:00
Arthur Belleville
105fe7645e
Add no-code tablo overview builder design spec 2026-03-14 10:43:16 +01:00
Arthur Belleville
2d965c524e
Fix organization modal flows 2026-03-08 22:44:02 +01:00
Arthur Belleville
a735c063ab
Add trial rollout date fallback 2026-03-08 22:13:32 +01:00
Arthur Belleville
8fc463313d
Fix trial upsell modal logic 2026-03-08 21:59:38 +01:00
Arthur Belleville
76f497d2c8
Keep founder plan during invites 2026-03-08 21:43:31 +01:00
Arthur Belleville
992b846a85
Fix CircleCI docker node pull 2026-03-08 21:28:44 +01:00
Arthur Belleville
03e426dd23
Implement new billing model 2026-03-08 21:11:42 +01:00
Arthur Belleville
d0820ebbf1
Implement solo teams founder billing 2026-03-08 19:29:44 +01:00
Arthur Belleville
0e91257aa1
Add tablo invite popover 2026-03-07 19:27:22 +01:00
Arthur Belleville
cd327c8b79
Move dispos, split types d'appels, and also put the tablo invitations in the top bar 2026-03-07 19:12:19 +01:00
Arthur Belleville
354831c82f
Some work towards initial release 2026-03-07 15:45:49 +01:00
Arthur Belleville
28d0b938fa
Fix various issues 2026-03-04 22:09:10 +01:00
Arthur Belleville
0c4e9c1301
Enhance recovery mechanism for orphaned tablos by managing triggers
- Introduce logic to temporarily disable the notify_users_on_tablos trigger during the update of orphaned tablos to prevent unwanted notifications.
- Ensure that the trigger is re-enabled after the update, even in case of exceptions, maintaining database integrity.
2026-03-04 21:54:37 +01:00
Arthur Belleville
521772becb
Implement recovery mechanism for orphaned tablos in organization migration
- Add a safety net to handle legacy inconsistencies by assigning orphaned tablos to a dedicated recovery organization.
- Ensure that the NOT NULL constraint can be applied to the organization_id field in the tablos table.
2026-03-04 21:52:50 +01:00
Arthur Belleville
7c15ff3275
Organization support 2026-03-04 21:47:44 +01:00
Arthur Belleville
f2a35a85dc
Merge pull request #58 from artslidd/develop
develop
2026-02-27 09:23:05 +01:00
Arthur Belleville
ec62b9c341
feat(auth): add v2 login/signup pages with localized copy 2026-02-24 12:31:25 +01:00
Arthur Belleville
93f8a3ef1e
fix(topbar): apply dark mode styles to profile dropdown 2026-02-24 11:49:26 +01:00
Arthur Belleville
737cd5f073
feat(ui): improve dark mode surfaces and planning event actions 2026-02-24 11:47:27 +01:00
Arthur Belleville
421676c3f0
feat(tasks): roadmap click-to-create with due date and quick status update 2026-02-24 10:55:16 +01:00
Arthur Belleville
349ba4ae7c
Add biweekly view mode to Gantt chart roadmap
- 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>
2026-02-24 10:44:46 +01:00
Arthur Belleville
c5ed1f0bf0
Redesign Roadmap view as Gantt chart with weekly timeline
- 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>
2026-02-24 10:17:58 +01:00
Arthur Belleville
2b09dd4093
Add due_date field to tasks and implement roadmap feature
- 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>
2026-02-24 10:07:47 +01:00
Arthur Belleville
bec48cfab6
Replace project letter icons with color-mapped Lucide icons across all pages
- 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>
2026-02-23 19:44:09 +01:00
Arthur Belleville
7acb79b3de
Improve UI consistency: chat purple theme, page headers, Discussions title
- 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>
2026-02-23 19:25:34 +01:00
Arthur Belleville
d126fe84dc
Restyle navbar/topbar with light/dark themes and restore invite functionality
- 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>
2026-02-23 19:06:46 +01:00
Arthur Belleville
080d3a98f3
Remove action card selected state and add greeting translations
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-02-23 16:22:01 +01:00
Arthur Belleville
ba2045fb40
Add disabled state and badge to ActionCard, disable Invite card
- 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>
2026-02-23 16:14:46 +01:00
Arthur Belleville
6d0298447d
Open TaskModal from dashboard "Créer une tâche" action card
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>
2026-02-23 16:12:18 +01:00