Skip to content

feat: independent social posts, workspace analytics and media editing - #374

Open
paulocastellano wants to merge 111 commits into
mainfrom
codex/independent-social-posts
Open

paulocastellano wants to merge 111 commits into
mainfrom
codex/independent-social-posts

Conversation

@paulocastellano

@paulocastellano paulocastellano commented Sep 28, 2026 •

Copy link
Copy Markdown
Contributor

Summary

  • Create and edit one post per social account, with independent content, media, settings, scheduling, and notes in the shared composer.
  • Add workspace analytics with follower snapshots, publication backfill, persisted metrics, dashboard reports, and API/MCP access.
  • Integrate current main, including YouTube Shorts descriptions and Instagram original image ratios, into the independent-post composer.
  • Put Instagram publication type and image ratio with the format controls at the top of the composer. Detect unsupported original image ratios per slide and offer a crop action.
  • Add per-image media editing with crop presets, alt text, appearance filters, and brightness, contrast, saturation, and warmth adjustments. Applying appearance alone preserves the image dimensions.

This PR supersedes #373 and #370. The work is based on codex/independent-social-posts.

Validation

  • npm run build, vue-tsc --noEmit, and ESLint passed.
  • vendor/bin/pint --dirty --format agent passed.
  • Analytics, post-controller, AI creation, post-update, YouTube description, PostHog, and billing feature tests passed.
  • Browser tests for workspace analytics, post details, Instagram media choices, YouTube descriptions, composer crop, image cropper, and channel media issues passed.

Paulo Castellano added 30 commits September 23, 2026 09:19
@paulocastellano paulocastellano changed the title feat: independent social posts and workspace analytics feat: independent social posts, workspace analytics and media editing Sep 28, 2026
Paulo Castellano added 6 commits September 28, 2026 13:38
- Publish page: queue lists every scheduled post (empty slots only when the
  queue is empty), drafts/sent tabs, post details, labels picker on cards,
  plain confirmation for post deletion
- Composer: per-channel settings, media tray, templates, media imports
  (Google Drive, Google Photos, Canva), alt text, posting actions
- Create module: ideas board/gallery, templates and RSS feeds with
  local-state dialogs and lazy explore directory
- Channels: connect flows with platform logos, posting goal dialog as the
  success screen, Telegram deep link from config, Pinterest boards
- Sidebar: command palette, channel list scrolls on its own, channel reorder
- Label filters drive column and queue counts; deleted labels are rejected
- Tests for all of the above on PostgreSQL and MySQL
- Member permissions (is_admin / requires_approval) replace workspace roles
- Post approvals: pending status, Approvals tab, approve/reject on web, API and MCP, Collaboration emails
- Import posts published natively on the networks (incl. Instagram stories) into Sent with media and metrics
- Disconnecting a channel deletes its posts; purge commands for orphans and imports
- Post groups and recurring posts
- Instagram grid view, reusable media lightbox and ChannelAvatar component
- Remove the standalone post page in favour of the post details dialog
- Rename the Analytics page to Insights; metrics band per content type and network
- Follower and post insights include today's UTC readings for users west of UTC
- Webhook create dialog, MCP settings redesign, publish empty states
- Time format is 12h or 24h only (users.time_format NOT NULL, backfilled per language)
- New signups (email, Google, GitHub) detect time zone, week start and clock from the browser
- Weekly goal and Insights weekly buckets follow the viewer's week start
- Emails render times in the recipient's zone and clock (approval, post at risk)
- The frontend never shows times in the browser zone; display-zone helper for notes and tooltips
- Composer uses the channel zone (user zone for mixed channels), keeps the instant, slot shortcuts
- Calendar clicks open the composer at the clicked instant; confirm before changing a channel zone
- Notification preferences save on their own
- Channel queue: free slots interleaved with posts, drag any scheduled post onto a slot,
  queued posts keep their slots, "+ New" opens at the slot, pending approvals reserve their slot
- Insights export, sync status, column picker and sorting; post notes without replies/reactions
- Remove the never-rendered date range presets

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant