- Remove IconPlus from hashtags and labels buttons
- Remove unused lang/php_*.json files
- Format cleanup
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Remove create_post (use new_post instead)
- Remove no_posts_status (simplify empty state)
- Show create button on all empty states
- Hide plus icon on desktop calendar button
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add day view support in PostController with day parameter
- Implement day view UI with posts list, time display, and navigation
- Force day view on mobile devices (< 1024px)
- Add day/week/month view selector with all three options
- Use date.formatTime() from @/date.ts for consistent time formatting
- Clean up unused translations (add_post, no_posts_day)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Hide phone preview on mobile (only show on lg: screens)
- Form takes full width on mobile
- Add mobile actions sheet with settings, date picker, labels, hashtags, platforms and delete
- Reorganize top bar: show publish button + settings icon on mobile
- Make read-only info responsive
When clicking "Publish Now", the scheduled_at was keeping the original
scheduled time while published_at was set to the actual publish time.
This caused confusion in the UI showing different dates.
Now when status is 'publishing', scheduled_at is updated to now() before
dispatching the PublishPost job.
- Add many-to-many relationship between posts and workspace labels
- Add label selector in post edit page with autosave
- Display labels in posts list
- Add hashtags modal with search for appending hashtags to post content
- Fix sidebar active state for posts edit page
- Fix AvatarImage null src warning in SocialAccountsGrid
- Fix new post state by using Inertia::location for full page reload
- Hide close button on CommandDialog by default
Enables incremental authorization so previously granted scopes
are preserved when requesting new permissions.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Update name to trypost-it/trypost
- Add description and keywords for discoverability
- Add homepage and support links
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Clarify what changes in self-hosted mode
- Mention unlimited workspaces feature
- Note about SaaS mode with Stripe
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add HORIZON_ALLOWED_EMAILS env variable support
- Comma-separated list of emails allowed to access Horizon in production
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Move billing routes from /billing to /settings/billing
- Add billing translations (en/pt-br)
- Update billing/Index.vue to use $t() for all strings
- Fix all controllers using route('dashboard') to use route('calendar') or route('accounts')
- Replace ->with('error', ...) pattern with session()->flash('flash.banner', ...)
- Add self-hosted mode support for hasActiveSubscription() and workspace methods
- Add flash translations for account connection errors
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Create LinkedInTokenSynchronizer service
- Sync tokens when connecting LinkedIn personal or page
- Sync tokens when refreshing tokens in publishers
- Sync tokens when verifying connections
- Prevents token invalidation when connecting both accounts
- ConnectionVerifier now refreshes expired/expiring tokens before verification
- Prevents false disconnection emails when tokens are expired but refreshable
- Added refresh methods for LinkedIn, X, Bluesky, YouTube, TikTok, Pinterest, Threads
- Fixed dark mode for calendar post items (status colors)
- Fixed dark mode for platform tabs in post editor
- Added tests for token refresh behavior