70 Commits

Author SHA1 Message Date
Nikita
91848ba52e Refactor: remove stream feature flag and related UI elements
- Delete `STREAM_ENABLED_EMAIL` constant and associated conditional rendering
- Simplify dashboard by removing stream setup section
- Update imports to exclude unused icons
- Change "Add Link" button from `<button>` to `<a>` with href="/bookmarks"
2025-12-31 20:10:38 +02:00
Nikita
d165605a68 Add bookmarks page with duplicate URL validation
- /bookmarks route for viewing and adding bookmarks
- Real-time duplicate URL detection as user types
- Session-authenticated API endpoints for list/add/delete
2025-12-31 19:56:32 +02:00
Nikita
4d072aacb5 Fix API route patterns for TanStack Start
- Use createFileRoute with server.handlers pattern
- Export Route instead of APIRoute
2025-12-31 19:34:50 +02:00
Nikita
ca05d547ed Use published @1focus/logs package instead of local file reference 2025-12-31 19:31:33 +02:00
Nikita
b5d55cbf54 Refactor loading states to render empty divs for better UX consistency
- Replace "Loading..." text with empty divs in various components
- Simplify loading placeholders to improve visual stability during data fetches
2025-12-31 18:04:45 +02:00
Nikita
6baa6a91ac Add API key management endpoints and integrate API keys section in settings panel 2025-12-28 20:05:49 -08:00
Nikita
751aa065cd Add scripts for testing Safari bookmarks saving and API key generation. 2025-12-28 18:57:04 -08:00
Nikita
e0631eeef0 Add a new 'logs-setup' task to flow.toml for configuring 1focus logs, including SDK build, dependency installation, API key management, and test log sending. 2025-12-28 15:13:05 -08:00
Nikita
3f2d571592 Update flow.toml to start web and desktop dev servers with port management and cleanup logic; enhance desktop preload and main process to resolve preload path, set web URLs, and expose shell functions; improve README with load fallback info and environment variables; add external logs configuration to worker package. 2025-12-28 12:15:13 -08:00
Nikita
c073fe6ee0 Add initial API documentation for Linsa API endpoints to docs/api.md 2025-12-28 11:45:07 -08:00
Nikita
3a2c78198a Add browser session schema and integrate into viewer data; update UI with sessions section and new session form. 2025-12-26 19:40:13 -08:00
Nikita
9a2e5c5a4a Add PaywallBanner and ReplayGrid components; fetch and display replays with paywall handling in user stream page 2025-12-25 12:01:48 -08:00
Nikita
2be1e74e3b Implement chunk retrieval endpoint and enhance HLS live stream detection logic
- Add `getChunk` handler to serve specific recording chunks based on `streamId` and `index` query params
- Modify route handler to dispatch requests to either list recordings or fetch chunks
- Improve `isHlsPlaylistLive` function with:
  - Basic validation for manifest structure
  - Detection of master playlists and VOD markers
  - Segment presence check
  - Timestamp freshness validation via `#EXT-X-PROGRAM-DATE-TIME`
  - Conservative fallback using media sequence when timestamps are absent
2025-12-25 10:37:57 -08:00
Nikita
9b0026b8d4 Add in-memory API route for stream filter configuration and update frontend to manage filter settings dynamically 2025-12-25 10:14:38 -08:00
Nikita
9aecbab8a9 Fix: Remove unused viewerCount prop from ProfileSidebar and update related code
- Removed viewerCount from ProfileSidebarProps and component parameters
- Commented out viewerCount usage in ProfileSidebar component
- Updated import statement to exclude unused icons
- Removed viewerCount prop from StreamPage component instances in $username.tsx
2025-12-25 10:10:42 -08:00
Nikita
95f4270f9a Improve ProfileSidebar by replacing avatar display with name and live badge; add Cloudflare Stream config schema; add API routes for fetching/updating Cloudflare config; update stream recordings storage path; enhance HLS check route with mock data for specific user. 2025-12-25 10:02:15 -08:00
Nikita
c964660eda Update ProfileSidebar to conditionally display avatar or live indicator
- Remove default avatar URL fallback
- Show user image if available
- Display animated red dot when user image is absent and user is live
2025-12-25 08:21:40 -08:00
Nikita
271840ba34 Refactor metadata field in GlideCanvasItem schema to be a JSON string
- Changed metadata from a record of strings to a nullable JSON string
- Updated schema to reflect the new data type for metadata
2025-12-25 08:14:29 -08:00
Nikita
9c90b7db8d Add a new "test-jazz-stream" task to flow.toml for testing live stream recording flow, including setup instructions and verification steps.
Update CommentBox component to handle image uploads with validation, preview, and progress tracking, and to manage comments with Jazz container initialization.
2025-12-25 05:04:43 -08:00
Nikita
15432a69b5 Add GlideCanvasItem schema, update viewer data structure, and integrate Glide route and API endpoints for managing canvas items 2025-12-25 03:42:57 -08:00
Nikita
490e608d11 . 2025-12-25 03:03:26 -08:00
Nikita
f2b3f705eb Update profile update to set 'updatedAt' as a Date object; simplify preferences state by removing unused variables; change default theme to 'Dark'; update settings labels and descriptions for clarity; modify sign-out button text; revise billing features list. 2025-12-25 03:02:14 -08:00
Nikita
18f4a3bf71 Update profile API to handle bio, website, and image fields; enhance profile UI with avatar, bio, and website inputs; fetch full profile data on component mount for better state management. 2025-12-25 02:43:16 -08:00
Nikita
205c38d0ee Add database schema updates for user profile fields and streams, seed initial data, and extend components with streaming settings and profile fields. 2025-12-25 00:41:00 -08:00
Nikita
3509b91c08 Add ProfileSidebar component for user profile display and update route to use it 2025-12-24 23:36:11 -08:00
Nikita
50bf16cd6e Update environment variable name for Cloudflare live input UID and refactor StreamPage to fetch HLS URL from API
- Rename `CLOUDFLARE_STREAM_NIKIV_VIDEO_ID` to `CLOUDFLARE_LIVE_INPUT_UID` in env.d.ts
- Remove hardcoded `LIVE_INPUT_UID` constant from `$username.tsx`
- Add `hlsUrl` state and update it based on API response in `$username.tsx`
- Modify stream playback logic to use `hlsUrl` for nikiv user
- Fetch HLS URL from server-side API and update state accordingly
- Update `check-hls.ts` to derive HLS URL dynamically from environment variables
- Remove `CLOUDFLARE_LIVE_INPUT_UID` from `wrangler.jsonc` environment variables
2025-12-24 23:32:50 -08:00
Nikita
b2c94ea623 Update hardcoded Cloudflare Stream UID to a constant and remove dynamic HLS URL updates 2025-12-24 23:26:36 -08:00
Nikita
ca8af44c72 Update environment typings and stream handling for dynamic HLS URL
- Add `CLOUDFLARE_STREAM_NIKIV_VIDEO_ID` to environment variables
- Refactor `$username.tsx` to initialize stream data with default HLS URL
- Implement dynamic HLS URL update based on API response for Nikiv stream
- Modify `/api/check-hls` route to use environment variable for video ID
- Ensure HLS URL updates trigger stream data refresh in client
- Update `wrangler.jsonc` to include `CLOUDFLARE_STREAM_NIKIV_VIDEO_ID` in env vars
2025-12-24 23:17:59 -08:00
Nikita
78a4be3104 Remove commented-out code related to watch time tracking and authentication gating from $username.tsx for cleaner, more maintainable code. 2025-12-24 20:21:56 -08:00
Nikita
797311eeba Improve VideoPlayer event handling and streamline viewer count sync
- Add a `callReady` function to ensure `onReady` is called only once
- Attach `canplay` event listener for native HLS support to trigger `onReady`
- Call `onReady` immediately after manifest parsing for HLS streams
- Simplify `useStreamViewers` hook to skip viewer count sync for user "nikiv"
- Silently handle errors during viewer count synchronization to avoid unnecessary logs
2025-12-24 19:54:00 -08:00
Nikita
559d6dc635 Update pnpm lock with new dependencies and add flow test project with setup, dev, and test scripts 2025-12-24 19:52:54 -08:00
Nikita
9b535249bc Remove unused code related to the free preview countdown banner in StreamPage component 2025-12-24 19:38:34 -08:00
Nikita
e4a15b9c29 Add LiveNowSidebar component for live status notification and integrate it into relevant pages 2025-12-24 19:19:25 -08:00
Nikita
bc84274304 Update setup script to improve environment variable management and secrets handling. 2025-12-24 19:13:20 -08:00
Nikita
3141241626 Improve VideoPlayer to notify when ready and update StreamPage to handle player readiness and connection state 2025-12-24 19:06:58 -08:00
Nikita
0aa68c9ae8 Improve HLS playlist live check logic to correctly identify master playlists and live streams 2025-12-24 18:56:39 -08:00
Nikita
7e480305c4 Add API route to check HLS stream status and integrate server-side HLS validation in StreamPage component 2025-12-24 18:52:46 -08:00
Nikita
7c678b3110 Fix HLS live check to handle fetch errors and improve polling logic 2025-12-24 18:49:49 -08:00
Nikita
03362955f0 Implement free preview timer with localStorage persistence and UI indicator 2025-12-24 18:48:03 -08:00
Nikita
ba34ab4363 Add debug logs for stream status and HLS fetch process 2025-12-24 18:34:54 -08:00
Nikita
2d3d7e0185 Refactor stream status fetch to use local API proxy; add /api/stream-status route; update Stripe config references; modify checkout to use proPriceId; adjust fetch URLs in landing page. 2025-12-24 18:18:19 -08:00
Nikita
157f9a69d8 Add live stream status indicator to landing page and sidebar 2025-12-24 18:12:35 -08:00
Nikita
49c86a8034 Implement dashboard with user session, URL management, and access control 2025-12-24 18:08:54 -08:00
Nikita
dc3112bb3e Update auth page header and description for clarity and consistency 2025-12-24 17:55:42 -08:00
Nikita
fcc3d9eedf Update flow.toml to add environment management tasks and improve index.tsx by removing commented-out gallery code and adjusting hero section height 2025-12-24 17:36:17 -08:00
Nikita
f81affe448 Improve billing and access control by adding creator subscription check; update route components to enforce user authentication before viewing streams and replays. 2025-12-24 17:14:01 -08:00
Nikita
9d7ea0ada1 Update Stripe setup instructions and add new creator economy API routes
- Clarify instructions for creator-specific pricing and setup
- Remove outdated Stripe Price ID prompt from setup script
- Add API route definitions for `/api/creator/tiers`, `/api/creator/subscribe`, and `/api/creator/$username/access`
- Register new routes in route tree for API access
- Update documentation to reflect new endpoints and instructions
2025-12-24 16:58:43 -08:00
Nikita
f7009b161c Add Stripe setup and verification tasks to flow.toml; update database schema with creator economy tables for subscriptions, tiers, products, and payouts. 2025-12-24 16:55:11 -08:00
Nikita
cf4a43779e Implement setup task for worker admin environment and add new database schema and snapshot files 2025-12-24 16:31:01 -08:00
Nikita
26fa0b0ec9 Add URL management schema, route, and related updates for URLs feature 2025-12-24 15:10:38 -08:00