Commit graph

301 commits

Author SHA1 Message Date
Arthur Belleville
513aa0a316 fix: use fetch() instead of RPC for DO WebSocket upgrades
DO RPC doesn't support WebSocket upgrade requests. Forward the request
via stub.fetch() and pass userId/channelId via custom headers.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-11 16:58:31 +02:00
Arthur Belleville
bb9550dd39
fix: resolve pre-existing type errors in test files blocking staging build
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-11 16:28:35 +02:00
Arthur Belleville
daa549a036 fix: use [[routes]] array syntax for custom domain in wrangler.toml
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-11 16:12:46 +02:00
Arthur Belleville
6ea66c451b fix: use new_sqlite_classes for Durable Objects (required on free plan)
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-11 16:06:34 +02:00
Arthur Belleville
be7c6d4889 chore: use single chat worker domain for staging and production
Single DB means single chat worker — both frontends connect to chat.xtablo.com.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-11 16:01:57 +02:00
Arthur Belleville
0e8788f32b fix: resolve remaining Stream Chat references and type errors
- Remove useSignUpToStream from hooks/auth.ts and oauth-signin.tsx
- Fix useRef initial values in useChat.ts
- Remove unused destructured variables in chat.tsx

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-11 15:33:48 +02:00
Arthur Belleville
c8db38cf1f chore: remove remaining Stream Chat env vars from API config and Cloud Build
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-11 13:50:29 +02:00
Arthur Belleville
6081ada013 refactor(main): remove all Stream Chat dependencies and components
- Delete ChatProvider, ChannelPreview, CustomChannelHeader, hooks/channel.ts
- Replace TabloDiscussionSection with chatscope-based implementation using useChat
- Update tablo-details.tsx to use useChatUnread instead of useTabloDiscussionUnread
- Remove streamToken field from User type in UserStoreProvider
- Remove useSignUpToStream from shared auth hooks
- Remove stream-chat and stream-chat-react packages
- Remove stream-chat-react CSS import from main.tsx
- Clean up all streamToken references from test mocks and helpers
- Update chat.test.tsx and tablo-details.layout.test.tsx for new implementation

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-11 13:49:57 +02:00
Arthur Belleville
37a94ef2b3
refactor(api): remove all Stream Chat dependencies and operations
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-11 13:44:30 +02:00
Arthur Belleville
54a13c3c30 feat(chat): update env vars — replace Stream API key with chat worker URLs
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-11 13:28:12 +02:00
Arthur Belleville
bb0aa5e28e feat(chat): rewrite chat page with chatscope UI and custom hooks
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-11 13:27:46 +02:00
Arthur Belleville
db59316dc3
feat(chat): add useChatUnread hook for polling unread counts 2026-04-11 12:04:27 +02:00
Arthur Belleville
2833b4b2c1
feat(chat): add useChat hook with WebSocket connection and reconnection 2026-04-11 12:04:03 +02:00
Arthur Belleville
2811e51109
feat(chat-worker): add Hono entry point with WebSocket routing and REST endpoints 2026-04-11 12:02:43 +02:00
Arthur Belleville
986b31eff0
feat(chat-worker): implement ChatRoom Durable Object with WebSocket hibernation
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-11 12:01:24 +02:00
Arthur Belleville
f6a56fdbdd
feat(chat-worker): add JWT auth and PostgREST helpers 2026-04-11 12:00:25 +02:00
Arthur Belleville
d3f4287200
feat(chat-worker): scaffold Cloudflare Worker project
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-11 11:59:27 +02:00
Arthur Belleville
1268a268c1
fix: wait for user data before showing paywall, skip for temporary users
Ensures the UpgradeBlockProvider waits for both user and organization
data before computing the block reason, preventing premature paywall
flash. Temporary users are never blocked.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-07 21:26:10 +02:00
Arthur Belleville
c5d8585918
fix: use useMaybeUser in UpgradeBlockProvider to avoid crash during loading
useUser() throws when the store is null (before user data is fetched).
Switch to useMaybeUser() which safely returns null.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-07 21:15:42 +02:00
Arthur Belleville
812e56e623
Fix temp users getting blocked 2026-04-07 14:41:08 +02:00
Arthur Belleville
d209504292
fix: reduce mobile sidebar width from w-48 to w-40 and always show expanded on mobile overlay
On mobile, the sidebar was 192px wide (w-48) and could appear collapsed (icons-only)
depending on prior desktop state. This introduces effectivelyCollapsed to always force
expanded mode when the mobile overlay is open, and uses a narrower w-40 (160px) width
to reduce screen coverage on small devices like iPhone SE (375px).

Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
2026-04-03 08:24:37 +02:00
Arthur Belleville
63cccc4721
fix: prevent mobile overflow in settings page flex containers
Add flex-wrap to the member action row (date + remove button) and the
header badge/language selector row so they wrap gracefully on narrow
screens without affecting desktop layout.

Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
2026-04-03 08:23:32 +02:00
Arthur Belleville
78875f7a9e
fix: rename static icons so worker can intercept all icon requests
Cloudflare serves static assets before the worker runs, so the icon
redirect logic was never reached. Renamed the default icon files to
default-* prefix. The worker now handles all requests for the original
icon paths: redirects to org-specific icons when cookie is set, or to
the renamed defaults otherwise.

Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
2026-04-02 22:55:21 +02:00
Arthur Belleville
ba2de823c6
fix: redirect apple-touch-icon and favicons to org-specific icons on iOS
iOS uses the apple-touch-icon link tag for the home screen icon, not
the manifest. The worker now intercepts requests for apple-touch-icon
and favicon PNGs, redirecting to the org-specific version from R2
when the x-org-id cookie is set.

Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
2026-04-02 22:44:28 +02:00
Arthur Belleville
bf66fc4000
fix: use assets.xtablo.com for org icon URLs instead of API proxy
Icons are stored in the web-assets R2 bucket which is already served
via assets.xtablo.com, same as user avatars. No need to proxy through
the API endpoint.

Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
2026-04-02 22:39:10 +02:00
Arthur Belleville
ec056fbe6c
fix: use full API URL for org icon references
The API runs on a separate domain from the frontend. Org icon URLs
in the manifest and settings page need the full API base URL.

Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
2026-04-02 22:31:48 +02:00
Arthur Belleville
b20768e280
fix: improve mobile responsiveness for settings page
Stack avatar and org logo sections vertically on mobile, wrap header badges/language selector, and make member list items stack on small screens.

Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
2026-04-02 22:19:58 +02:00
Arthur Belleville
f82d3f70b8
fix: improve mobile responsiveness for login and signup pages
Add horizontal padding to page containers so cards don't bleed to the
edges on small screens, reduce card inner padding on mobile, scale down
headings at mobile breakpoints, and change the first/last name grid from
a fixed two-column layout to responsive (single column on mobile).
Replace the fixed-width form class (w-95) with w-full on the login form.

Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
2026-04-02 22:16:20 +02:00
Arthur Belleville
3830bfcf29
index.d.ts 2026-04-02 22:11:32 +02:00
Arthur Belleville
4c8529a355
style: fix import ordering and formatting in new files
Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
2026-04-02 22:09:18 +02:00
Arthur Belleville
9679a5816a
fix: convert Buffer to Uint8Array for Response body in org icon endpoint
Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
2026-04-02 22:07:46 +02:00
Arthur Belleville
421dc877e2
feat: add organization logo upload UI to settings page
Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
2026-04-02 22:05:56 +02:00
Arthur Belleville
203349023d
feat: include logo_url in organization API response 2026-04-02 22:04:27 +02:00
Arthur Belleville
2e9ab46be8
feat: add org ID cookie management and logo upload/remove hooks
Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
2026-04-02 22:03:59 +02:00
Arthur Belleville
acc83401f4
feat: disable static manifest generation, add manual manifest link for dynamic serving 2026-04-02 22:02:31 +02:00
Arthur Belleville
595b330741
feat: dynamic manifest in Cloudflare Worker with cookie-based org identification
Adds parseOrgIdFromCookie and buildManifest exports to the worker, intercepting /manifest.webmanifest to serve org-specific PWA icon URLs based on the x-org-id cookie. Removes legacy @ts-nocheck and biome-ignore-file comments.

Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
2026-04-02 22:01:57 +02:00
Arthur Belleville
538d6e39e6
feat: add public org icon serving endpoint with default fallback
Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
2026-04-02 22:00:17 +02:00
Arthur Belleville
bb1b206aea
feat: extend PATCH /organization to accept logo upload and removal
Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
2026-04-02 21:59:07 +02:00
Arthur Belleville
2ab1d8e044
feat: add org icon resize, upload, delete, and fetch helpers
Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
2026-04-02 21:55:56 +02:00
Arthur Belleville
bafa36dd31
feat: add sharp for server-side image resizing
Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
2026-04-02 21:53:58 +02:00
Arthur Belleville
67e98d19b2
fix: update Layout test for new mobile sidebar transition classes
Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
2026-04-02 21:28:12 +02:00
Arthur Belleville
ec8f81e205
fix: improve mobile responsiveness for task/kanban pages
- KanbanBoard: responsive grid (1 col mobile, 2 col tablet, 4 col desktop)
- TaskModal: bottom-sheet style on mobile with scroll, touch-friendly close
- Touch targets: enforce 44px minimum on all interactive elements (buttons,
  checkboxes, kebab menus, add buttons, view tabs)
- TabloTasksSection: responsive padding and stacking header layout
- DashboardTaskList: simplified mobile grid hiding non-essential columns
- InlineTaskCreate: larger touch targets on action buttons

Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
2026-04-02 21:24:05 +02:00
Arthur Belleville
6aea504667
fix: improve mobile responsiveness for tablo/project management pages
- Make project card grids responsive (single column on mobile, 2 cols on sm)
- Remove fixed w-56 card width so cards fill available space on mobile
- Convert modals to bottom-sheet style on mobile (items-end, rounded-t-2xl)
- Add max-h-[90vh] + overflow-y-auto to modals for small screens
- Increase touch targets to min 44px on action buttons and interactive elements
- Refactor DashboardTaskList rows from rigid grid to flexible layout
- Remove min-w-[600px] wrapper that forced horizontal scroll on task list
- Make tab navigation horizontally scrollable instead of wrapping on mobile
- Reduce left padding on etape child tasks for narrow screens
- Stack modal action buttons vertically on mobile (flex-col-reverse)
- Add responsive text sizing for headings and dates
- Fix share dialog invite input to stack on mobile

Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
2026-04-02 21:22:46 +02:00
Arthur Belleville
3daf720447
fix: improve mobile sidebar UX with smooth transitions and proper touch handling
Add backdrop overlay with tap-to-dismiss, enforce 44px touch targets on the
toggle button, auto-close on route change, clean up z-index layering, remove
duplicate translate logic, and respect safe-area insets for standalone PWA mode.

Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
2026-04-02 21:22:23 +02:00
Arthur Belleville
378e5e5e1d
fix: resolve zod/v4/core build error and configure workbox cache limit
- Add pnpm packageExtensions to declare zod as peer dep of @hookform/resolvers
  (the package imports zod/v4/core but doesn't declare the peer dependency)
- Raise workbox maximumFileSizeToCacheInBytes to 5MB for large app bundle

Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
2026-04-02 20:07:07 +02:00
Arthur Belleville
8ae711867d
fix(pwa): address code review findings
- Fix includeAssets paths (remove incorrect public/ prefix)
- Add navigateFallback for SPA deep link resilience
- Move InstallBanner inside authenticated routes only

Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
2026-04-02 19:57:39 +02:00
Arthur Belleville
8e6e8b6d71
style(pwa): fix biome formatting in hook and banner
Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
2026-04-02 19:54:46 +02:00
Arthur Belleville
2ffe4b1b41
feat(pwa): wire InstallBanner into app shell
Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
2026-04-02 19:52:29 +02:00
Arthur Belleville
8e41b031aa
feat(pwa): add InstallBanner component with tests
Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
2026-04-02 19:51:38 +02:00
Arthur Belleville
e23013b0af
feat(pwa): add useInstallPrompt hook with tests
Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
2026-04-02 19:48:13 +02:00
Arthur Belleville
c80a6fa94b
fix(pwa): resolve workbox-window build error with Cloudflare plugin
Add workbox-window as direct dependency and set injectRegister: false
to prevent conflict between vite-plugin-pwa and @cloudflare/vite-plugin.

Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
2026-04-02 19:42:10 +02:00
Arthur Belleville
d199e9e3a8
feat(pwa): add safe area insets for standalone mode
Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
2026-04-02 19:35:08 +02:00
Arthur Belleville
9dc4ad95c5
feat(pwa): register service worker with auto-update
Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
2026-04-02 19:34:38 +02:00
Arthur Belleville
a467e2c167
feat(pwa): add PWA meta tags and update viewport for standalone mode
Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
2026-04-02 19:32:31 +02:00
Arthur Belleville
4e01b8cab4
feat(pwa): configure vite-plugin-pwa with manifest and workbox precaching
Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
2026-04-02 19:32:14 +02:00
Arthur Belleville
6d5f78aecf
feat(pwa): add icon generation script and generated PWA icons 2026-04-02 19:01:21 +02:00
Arthur Belleville
ab38e8115b
feat(pwa): add vite-plugin-pwa and sharp dependencies 2026-04-02 18:58:54 +02:00
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
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
0efc36e70c
feat: add configurable overview layout builder 2026-03-14 13:36:47 +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
7c15ff3275
Organization support 2026-03-04 21:47:44 +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
Arthur Belleville
26816ff12d
Wire dashboard action cards to real actions
- Create Project: opens the CreateTabloModal
- Create Task: navigates to /tasks
- Send Message: navigates to /chat
- Invite Team: shows "Bientôt disponible" info toast

Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
2026-02-23 16:08:54 +01:00