Commit graph

114 commits

Author SHA1 Message Date
Paulo Castellano
fabce14aad feat: implement MCP server with tools, Post API tests, auth middleware
- Create TryPostServer MCP server with 17 tools:
  Post (List, Get, Create, Delete), Hashtag (List, Create, Update, Delete),
  Label (List, Create, Update, Delete), Workspace (Get),
  ApiKey (List, Create, Delete)
- Create AuthenticateMcpToken middleware (logs in workspace owner)
- Register mcp.auth middleware alias in bootstrap/app.php
- Create routes/ai.php with mcp.trypost.test subdomain
- Add PostApiTest with 6 tests (list, show, create, delete, isolation)
- Fix PostApiTest assertions for pagination/resource wrapping
- 704 tests passing, frontend build passing
2026-03-29 20:30:36 -03:00
Paulo Castellano
039ed02b42 feat: rate limiting, cleanup duplicates, ApiKey app tests, bootstrap hardening
- Add API rate limiting (60/min per workspace) in AppServiceProvider
- Add throttle:api middleware to all API routes
- Add rate limit exception rendering for JSON responses
- Add middleware priority list (AuthenticateApiToken before ThrottleRequests)
- Add ApiKeyControllerTest (6 tests for App dashboard CRUD)
- Remove duplicate test files (Controllers/ dir duplicates)
- Remove old controllers and routes/settings.php
- Add routes/mcp.php placeholder
- Add API Keys nav item to settings layout
- Fix LazilyRefreshDatabase conflict in API tests
- 698 tests passing
2026-03-29 20:14:23 -03:00
Paulo Castellano
298360c305 feat: delete old controllers, add API tests, ApiKeys page, MCP route
- Remove old root-level controllers (moved to App/ namespace)
- Remove old routes/settings.php (merged into routes/app.php)
- Add routes/mcp.php placeholder for future MCP server
- Add settings/ApiKeys.vue page with create/delete/copy token
- Add API Keys nav item to settings layout
- Add 26 API endpoint tests (auth, hashtags, labels, api-keys, workspace)
- Add ApiToken factory
- All 710 tests passing
2026-03-29 19:59:17 -03:00
Paulo Castellano
6964cc8e6e fix: update frontend route/action imports for new subdomain structure
Update all Vue components and TypeScript files to import from the new
Wayfinder-generated paths under @/routes/app/ and @/actions/App/Http/Controllers/App/.
2026-03-29 19:43:15 -03:00
Paulo Castellano
8689e54e55 refactor: restructure to Actions, subdomain routes (app/api), API tokens
- Extract business logic from controllers into Action classes:
  Post/, Workspace/, Hashtag/, Label/, Invite/, ApiKey/
- Create subdomain routing: app.trypost.test (Inertia dashboard),
  api.trypost.test (REST API with token auth)
- Add ApiToken model with tp_ prefix, token_lookup/hash auth
- Add AuthenticateApiToken middleware for API authentication
- Create Api controllers with JSON Resources for all entities
- Create App controllers that use Actions + Inertia responses
- Organize Form Requests into Api/ and App/ directories
- Add api_tokens migration
- Update all route names with app. prefix
- Update all tests to use new route names (684 passing)
2026-03-29 19:24:28 -03:00
Paulo Castellano
892efa37ef
Merge pull request #9 from trypost-it/upgrade/laravel-13-inertia-3
Upgrade to Laravel 13 and Inertia v3
2026-03-29 18:33:07 -03:00
Paulo Castellano
0aa7467505 fix: remove console.log from upload progress callback 2026-03-29 18:29:11 -03:00
Paulo Castellano
03c6cc8d1d
Merge branch 'main' into upgrade/laravel-13-inertia-3 2026-03-29 18:28:54 -03:00
Paulo Castellano
20b15f9fe6
Merge pull request #8 from trypost-it/refactor/move-helpers
Move helpers to app/Helpers/upload.php
2026-03-29 18:28:45 -03:00
Paulo Castellano
05eedd0761 upgrade: add Laravel 13 config changes and update Boost skills
Add serializable_classes to cache config and serialization to session
config for security hardening. Update Boost skills to latest versions.
2026-03-29 18:25:28 -03:00
Paulo Castellano
56ffe2da90 upgrade: Laravel 13, Inertia v3, remove pion/chunk-upload 2026-03-29 18:10:10 -03:00
Paulo Castellano
fafa220bfd refactor: move helpers.php to app/Helpers/upload.php 2026-03-29 17:40:02 -03:00
Paulo Castellano
557cd210a0
Merge pull request #5 from trypost-it/fix/nullable-content-publishers
Fix nullable content across all social publishers
2026-03-29 17:34:52 -03:00
Paulo Castellano
4d54f025bb
Merge branch 'main' into fix/nullable-content-publishers 2026-03-29 17:34:44 -03:00
Paulo Castellano
e4eba11953
Merge pull request #7 from trypost-it/chore/remove-docs
Remove docs directory
2026-03-29 17:34:25 -03:00
Paulo Castellano
f6deae47d0 chore: remove docs directory, migrated to separate repository 2026-03-29 17:33:36 -03:00
Paulo Castellano
b0ad174be2
Merge branch 'main' into fix/nullable-content-publishers 2026-03-29 17:31:59 -03:00
Paulo Castellano
88d56231cc
Merge pull request #6 from trypost-it/fix/deprecated-timezone-validation
Fix deprecated timezone validation on registration
2026-03-29 17:31:22 -03:00
Paulo Castellano
84911dcb34 fix: accept deprecated timezones during registration 2026-03-29 17:26:27 -03:00
Paulo Castellano
5c26d58ad5
Merge pull request #1 from niravsutariya/patch-1
fix: correct Google OAuth config key in token refresh
2026-03-29 17:05:56 -03:00
Paulo Castellano
7f3fea991a fix: handle nullable content across all social publishers 2026-03-29 17:04:01 -03:00
Paulo Castellano
184998645f
Delete CNAME 2026-03-29 16:56:31 -03:00
Paulo Castellano
4b015241ac fix: allow invited members to access workspace when owner has subscription
Members invited to a workspace no longer need their own subscription
if the workspace owner has an active subscription or trial.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-29 13:22:27 -03:00
Paulo Castellano
0544259f93 chore: small improvement on facebook profile link 2026-03-29 12:36:54 -03:00
Paulo Castellano
516cc9ee1e chore: updating facebook permissions 2026-03-29 11:51:00 -03:00
Paulo Castellano
e586021171 chore: updating sender email. 2026-03-16 13:18:33 -03:00
Paulo Castellano
e46aee5584 chore: change email provider to sendkit 2026-03-16 13:14:37 -03:00
Paulo Castellano
8776a3233f chore: change email provider to sendkit 2026-03-16 13:14:22 -03:00
Nirav Sutariya
825b009d03
Update ConnectionVerifier.php
In service file you mentioned key google not youtube.. It was fialed when daily verify command will run.
2026-02-16 15:20:56 +05:30
Paulo Castellano
2e7ea05a97 refactor: remove icons from buttons and cleanup
- 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>
2026-01-26 18:13:31 -03:00
Paulo Castellano
0e6540bda0 refactor: remove duplicate translation keys
- 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>
2026-01-26 18:11:45 -03:00
Paulo Castellano
93c245989a feat: add daily view to calendar for mobile
- 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>
2026-01-26 18:03:35 -03:00
Paulo Castellano
06b7d2928c feat: improve post edit page for mobile
- 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
2026-01-26 16:16:34 -03:00
Paulo Castellano
0cd5e8f744 fix: update scheduled_at to current time when publishing immediately
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.
2026-01-26 16:01:14 -03:00
Paulo Castellano
5f5dd0c7e7 chore: update composer.lock 2026-01-26 15:22:08 -03:00
Paulo Castellano
c0886737c4 feat: add labels and hashtags to posts
- 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
2026-01-26 15:18:35 -03:00
Paulo Castellano
6fc9defb89 test: add destroy post tests for status filters and redirect param 2026-01-26 14:00:37 -03:00
Paulo Castellano
44f9f67b7d fix: redirect to posts list when deleting post from edit page 2026-01-26 13:57:48 -03:00
Paulo Castellano
4fa1cb32dc feat: add include_granted_scopes to Google OAuth
Enables incremental authorization so previously granted scopes
are preserved when requesting new permissions.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-26 13:41:15 -03:00
Paulo Castellano
3f5411e73c chore: add author to composer.json
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-26 12:15:21 -03:00
Paulo Castellano
366bf51d0a chore: update composer.json with proper project metadata
- 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>
2026-01-26 12:14:41 -03:00
Paulo Castellano
47a924081c docs: expand SELF_HOSTED mode documentation
- 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>
2026-01-26 12:09:09 -03:00
Paulo Castellano
d598783d65 docs: add Horizon configuration documentation
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-26 12:07:16 -03:00
Paulo Castellano
8289e11128 feat: use environment variable for Horizon access control
- 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>
2026-01-26 12:06:00 -03:00
Paulo Castellano
9dc04c28dc chore: update config files and remove unused translation files
- Update composer.lock dependencies
- Update .mcp.json and boost.json config
- Remove unused lang/php_*.json translation files
- Update CLAUDE.md and GEMINI.md

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-26 12:02:24 -03:00
Paulo Castellano
2239d2480c feat: translate billing page and fix flash messages
- 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>
2026-01-26 12:01:53 -03:00
Paulo Castellano
1d056f426f feat: sync LinkedIn tokens between personal and page accounts
- 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
2026-01-26 11:15:29 -03:00
Paulo Castellano
06c8455e19 chore: renaming to fix git 2026-01-26 10:55:27 -03:00
Paulo Castellano
4003340083 chore: renaming to fix git 2026-01-26 10:55:18 -03:00
Paulo Castellano
47a3788adb chore: renaming to fix git 2026-01-26 10:54:55 -03:00