Skip to content

Patch v2.2.0#236

Open
TheDanniCraft wants to merge 10 commits intomasterfrom
patch-v2.2.0
Open

Patch v2.2.0#236
TheDanniCraft wants to merge 10 commits intomasterfrom
patch-v2.2.0

Conversation

@TheDanniCraft
Copy link
Copy Markdown
Owner

This pull request introduces several new features, improvements, and backend changes to support enhanced playlist management, remote control capabilities, and campaign offer integration. The most significant updates include new marketing features (Clip Playlists, Remote Control Panel, Editors & Managers), expanded API and WebSocket support for overlay control, and improved campaign offer handling throughout the application.

Feature and Marketing Updates

  • Added new features to marketing materials and UI: Clip Playlists (build and manage playlists), Remote Control Panel (live overlay control), and Editors & Managers (team access without full account sharing). These are now highlighted in the README.md, pricing, FAQ, and feature cards on the landing page. [1] [2] [3] [4]

Campaign Offer Integration

  • Enhanced campaign offer handling: The homepage and floating banners now support additional fields (floatingTitle, floatingSubtitle, endAt countdown), and campaign offer codes are automatically applied at checkout if configured. [1] [2] [3] [4] [5] [6]

Overlay and WebSocket Backend Enhancements

  • Major refactor of WebSocket handling to support role-based connections (overlay/controller), targeted command/state broadcasts, and improved client management for overlays and owners. This enables robust remote control functionality. [1] [2] [3]
  • Added a new API route (src/app/api/controller/[overlayId]/route.ts) for overlay control, supporting queue management, volume control, and moderator queue actions via secure endpoints. (src/app/api/controller/[overlayId]/route.tsR1-R128)

General Improvements

  • Updated health check admin UI to show more detailed database metrics.
  • Minor type and import adjustments to support new features and maintain consistency. [1] [2]

These changes collectively improve the product's feature set, enable more flexible overlay management, and streamline campaign-driven marketing and upgrades.

Copilot AI review requested due to automatic review settings April 13, 2026 20:15
@cranedock
Copy link
Copy Markdown

cranedock bot commented Apr 13, 2026

The preview deployment for clipify is ready. 🟢

Open Preview | Open Build Logs | Open Application Logs

Last updated at: 2026-04-15 00:20:56 CET

Copy link
Copy Markdown

@gemini-code-assist gemini-code-assist bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review

This pull request introduces a Remote Control Panel for Pro users, allowing for live playback control, volume adjustment, and queue management through a new dedicated interface and enhanced WebSocket logic. It also migrates the project roadmap to a CMS-driven system using PocketBase, implements campaign offer banners with countdown timers, and refactors health monitoring to include database ping and aggregation metrics. Review feedback focused on improving code readability by suggesting that several long, single-line JSX and logic blocks be reverted to their original multi-line formats.

column.uid === "clipCount" ? "w-[90px] min-w-[90px] max-w-[90px] text-right" : "",
activeTab === "playlists" && column.uid === "name" ? "w-full" : "",
])}
className={cn([column.uid === "actions" ? "flex items-center justify-end px-[20px]" : "", column.uid === "accessType" ? "w-[48px] min-w-[48px] max-w-[48px] px-1" : "", column.uid === "id" ? "w-[320px] min-w-[320px] max-w-[320px]" : "", column.uid === "clipCount" ? "w-[90px] min-w-[90px] max-w-[90px] text-right" : "", activeTab === "playlists" && column.uid === "name" ? "w-full" : ""])}
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

This line is very long and hard to read. Please format the array passed to cn to be multi-line for better readability.

className={cn([
	column.uid === "actions" ? "flex items-center justify-end px-[20px]" : "",
	column.uid === "accessType" ? "w-[48px] min-w-[48px] max-w-[48px] px-1" : "",
	column.uid === "id" ? "w-[320px] min-w-[320px] max-w-[320px]" : "",
	column.uid === "clipCount" ? "w-[90px] min-w-[90px] max-w-[90px] text-right" : "",
	activeTab === "playlists" && column.uid === "name" ? "w-full" : "",
])}

Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR ships the v2.2.0 feature set, centered on adding a Pro “remote control panel” for overlays, expanding campaign-offer capabilities (including auto-apply at checkout), moving the public roadmap to CMS-backed data, and tightening operational visibility via richer instance health metrics.

Changes:

  • Refactors WebSocket subscriptions to support per-owner and per-overlay targeting plus overlay/controller roles, enabling remote control.
  • Introduces a new controller surface (page + API) to manage playback/volume/queues for an overlay.
  • Expands campaign offer fields across types/UI and updates health snapshot DB metrics + adds queue table indexes.

Reviewed changes

Copilot reviewed 43 out of 43 changed files in this pull request and generated 12 comments.

Show a summary per file
File Description
test/app/store/overlaySubscribers.test.ts Updates tests for new owner+overlay subscriber maps.
test/app/lib/instanceHealth.test.ts Updates tests for new DB ping/aggregation metrics.
test/app/dashboard/page.test.tsx Mocks campaign offer fetch used by dashboard page.
test/app/components/roadmap/roadmapItem.test.tsx Updates roadmap tests for string icon + typed colors.
test/app/components/overlayPlayer.test.tsx Updates tests for subscribe role + queue cleanup behavior.
test/app/components/dashboardNavbar.test.tsx Mocks campaign offer action used in navbar.
test/app/components/adminHealthCharts.test.tsx Updates snapshot fixture for new DB metrics.
test/app/components/OverlayTable.test.tsx Adds campaign offer action + upgrade modal mocking.
test/app/actions/websocket.test.ts Updates tests for owner/overlay subscriber separation.
test/app/actions/subscription.test.ts Mocks campaign offer fetch used by checkout link generation.
src/db/schema.ts Adds composite indexes for clip/mod queue ordering.
src/app/ws/route.ts Updates WS client metadata and cleanup for new subscriber model.
src/app/store/overlaySubscribers.ts Introduces ownerSubscribers alongside overlaySubscribers.
src/app/roadmap/page.tsx Fetches roadmap items from CMS via new server lib.
src/app/llms.txt/llms.txt Updates product capability descriptions (remote control, editors/managers).
src/app/lib/types.ts Expands CampaignOffer fields (dashboard banner, floating fields, auto-apply).
src/app/lib/roadmap.ts New CMS roadmap loader with caching + normalization.
src/app/lib/instanceHealth.ts Adds DB ping timing and total health aggregation timing.
src/app/lib/campaignOffers.ts Maps new campaign offer fields + defaults.
src/app/dashboard/settings/page.tsx Adds remote control panel to Pro feature list.
src/app/dashboard/page.tsx Fetches active campaign offer and passes to OverlayTable.
src/app/dashboard/overlay/[overlayId]/page.tsx Adds controller link + Pro gating UI affordance.
src/app/controller/[overlayId]/page.tsx New controller entry page with access/pro checks.
src/app/controller/[overlayId]/controllerClient.tsx New remote controller client UI + WS state rendering + API polling.
src/app/components/upgradeModal.tsx Integrates campaign pricing promo display + fetches active offer.
src/app/components/roadmap/roadmapItem.tsx Switches to string-based icon resolution and typed colors.
src/app/components/roadmap/roadmapData.ts Replaces static roadmap data with normalization helpers + typed colors.
src/app/components/overlayPlayer.tsx Adds WS role, command handling (mute), and overlay state publishing.
src/app/components/footer.tsx Uses mounted-aware disabling to avoid token hydration issues.
src/app/components/dashboardNavbar.tsx Adds dashboard campaign banner + countdown; fetches offer via action.
src/app/components/countdownTimer.tsx New countdown timer component for campaign end times.
src/app/components/adminHealthCharts.tsx Displays DB ping + aggregation metrics.
src/app/components/Pricing/pricing-tiers.ts Updates Pro tier feature bullets.
src/app/components/OverlayTable/index.tsx Adds (currently unused) campaign offer prop + refactors render/handlers.
src/app/components/LandingPage/faqs.ts Updates Pro benefits copy for new features.
src/app/api/controller/[overlayId]/route.ts New controller API (volume, queue management, mod-clip add).
src/app/admin/page.tsx Shows new DB metrics in admin view.
src/app/actions/websocket.ts Implements role-aware subscribe/command/state_update + targeted broadcast.
src/app/actions/subscription.ts Auto-applies campaign offer code at checkout (and records metadata).
src/app/actions/campaignOffers.ts New server action wrapper for campaign offer fetch.
src/app/HomePageClient.tsx Updates landing content + floating banner fields + countdown support.
README.md Updates product feature list and pricing copy.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment on lines +4 to +5
import * as TablerIcons from "@tabler/icons-react";
import { IconBolt, IconChevronRight, type Icon } from "@tabler/icons-react";
Copy link

Copilot AI Apr 13, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

import * as TablerIcons from "@tabler/icons-react" typically pulls the entire icon set into the client bundle and can significantly increase JS size. Consider a small explicit registry of allowed icons (import only what you use) or a safer dynamic import approach so the roadmap page doesn’t ship every Tabler icon.

Copilot uses AI. Check for mistakes.
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.

2 participants