Commit Graph
116 Commits
Author SHA1 Message Date
talksik 07f02ecfeb use universal window controls across platforms 2026-04-15 08:03:32 -07:00
talksik c2d0ed254b fix: improve messaging for reset
Closes #163
2026-04-14 19:04:54 -07:00
Arjun PatelandGitHub 67826b92c0 implement paywall (#161)
* implement core foundation

* inject deps

* fix incorrect migration

* tail migration

* use transaction for migration

* fix: inject deps for tests

* cleanup billing management for admin

* upgrade stripe sdk to v85

* set price env variables

* cleanup billing management

* allow multiple dev windows

* fix: settings scroll

* feat: show nice video thumbnail in listview

* feat: implement freemium restrictions

* remove unnecessary comments

* refactor

* docs

* format

* tweak network settings better hierarchy
2026-04-14 15:18:32 -07:00
talksik 4e76ce902f fix: show proper app version 2026-04-13 10:41:19 -07:00
talksik f676baf8b3 cleanup video audio settings view 2026-04-13 10:39:58 -07:00
talksik 38bd098ca6 feat: select input devices for recordings
Closes #68
2026-04-13 10:29:10 -07:00
talksik 1579de8c6d feat: shift + arrows to seek track 2026-04-13 09:31:25 -07:00
talksik 1cdaac66db show esc keybinding hint for recording 2026-04-13 09:14:22 -07:00
talksik f2b439cc86 fix: prevent stream exit during overlays 2026-04-13 09:11:46 -07:00
talksik 67091e9d13 fix: prevent exit countdown on playback blocked 2026-04-13 09:06:22 -07:00
talksik bf6fdd15b5 refactor: rename playback suspender 2026-04-13 09:03:24 -07:00
Arjun PatelandGitHub 5b6924f7ca feat: support image lightbox viewer and file download (#151)
* feat: add lightbox overlay with nice mechanics

* ui tweak for top bar in stream view

* support locally downloading attachments
2026-04-12 14:14:23 -07:00
talksik dbe61e447a fix: persist selected streams tab
This used to navigate me back to the open streams tab even if I click a
stream in the closed list
2026-04-12 13:44:35 -07:00
e1d2bf11da feat: soft-delete particles within a stream (#149)
Lets a particle's creator delete their own message from the TopBar
dropdown. Other viewers see a "This particle was deleted" tombstone in
place and playback auto-advances after ~2s, keeping indices stable for
concurrent watchers.

- Add optional deleted_at / deleted_by_human_id to non-container
  particle variants and isParticleDeleted helper.
- Add softDeleteParticle Firestore helper.
- New DeleteParticleOverlay confirmation and DeletedParticleView
  tombstone.
- Hide reactions (bar + 1-7 keybinding) on tombstoned particles.
- Show "Deleted particle" + Trash2 icon in the stream list preview.

Closes #146

https://claude.ai/code/session_01M2ShnZPvWfQzzvuu3Xm8b9

Co-authored-by: Claude <[email protected]>
2026-04-12 13:18:10 -07:00
talksik be9cf6c5f0 fix: prevent stream click navigation during text edit 2026-04-12 12:15:59 -07:00
Arjun PatelandGitHub 7568ceb80d feat: extract text editor and allow editing (#150) 2026-04-12 12:13:25 -07:00
f03868e65b feat: paginate closed streams tab (#148)
Closed streams grow unbounded as teams age and can reach 1000s of items,
while open streams stay bounded by active work. Switch the streams list
to subscribe per-status so each tab only pulls what it renders, and cap
the closed tab to a 50-item window that grows via a Load more action.

The open tab remains unbounded so per-row realtime features — autoplay,
huddle indicators — keep full coverage of the streams that matter.
Closed streams are archived and don't need push behavior, which side-
steps the autoplay baseline-reset and huddle-on-page-2 risks that made
pagination complicated for the open tab.

Refs flowy-live/llink#138.

Co-authored-by: Claude <[email protected]>
2026-04-12 11:55:23 -07:00
talksik bea723a90a refactor: extract topbar component into separate file 2026-04-12 11:25:35 -07:00
talksik f64380c421 feat: manage stream name and members
Closes #99
Closes #28
2026-04-12 11:20:05 -07:00
talksik 484ee9d4fb fix: longer markdown content hidden
Added scroll to longer content and padding to avoid conflicting with
stream view peripheral controls and panels
2026-04-12 10:12:06 -07:00
talksik 51c4c6c822 feat: send email notifications for missed messages
- New cron job in cluster
- Handle presence and other concerns
- Toggle in app to disable email notifications
- Handles other edge cases such as cooldown period
- Simple html email with simple message

Closes #117
2026-04-09 14:15:34 -07:00
talksik 6fe5af8d8d fix: dock app badge shows incorrect number
Closes #122

We now only show number based on open streams
2026-04-09 12:31:14 -07:00
talksik bea33d29d3 use green border for presence avatar 2026-04-09 12:17:55 -07:00
Arjun PatelandGitHub 3d8fa79657 add real-time infrastructure (#137)
* setup infra for pusher service

* setup client sdk for pusher service

* fix: ping parse failure

* fix: send pong back to client

avoid disconnections every 2.5 minutes

* increase replicas

* feat: show presence and compose indicator
2026-04-09 12:08:18 -07:00
talksik ce368c9e6e fix: broken screen clip playback progress
It wasn't progressing, likely because the metadata for a screen
recording was not read by the video html element. So we fallback to our
own duration metadata.

Closes #135
2026-04-09 11:00:55 -07:00
talksik 9cda5a3aa3 fix: two components rendering with same key
This is due to using binding.description as the key in Keybindings
overlay
2026-04-09 08:42:05 -07:00
talksik 3995777965 feat: toggle video / audio with keybinding 2026-04-09 08:40:27 -07:00
talksik 070684deb5 show overlay during screen recording 2026-04-09 08:31:23 -07:00
talksik f91068a4c1 fix: freezes during longer screen recordings
Closes #131

Fundamentally, we cannot afford to composite webcam and screen on the
client. We should create two streams and then combine them with ffmpeg
processing in the backend / orion.
2026-04-09 08:31:23 -07:00
talksik aaa0b1891f fix: focus lost when transitioning from immersive to markdown 2026-04-08 17:32:47 -07:00
talksik fbce997180 feat: position reactions in better spot
This prevents overlap with captions. It also introduces the laughing
emoji.
2026-04-08 17:25:50 -07:00
Arjun PatelandGitHub be7a42c483 feat: send screen recordings (#128)
* first pass implementation

* remove screenrecord shortcut hint

* refactor

* fix: prevent mirror review of screen recording

* feat: allow recording with webcam overlay

* fix: review screen recording without clipped content

* tidy keyboard hints consistent position

* refactor: re-use one component for screen picker

huddles and screen clips use same picker component now. We had to make
sure that tailwind works for both of them.

* fix: improve visibility of keyboard hints

During compose video or screen recording, the keyboard hints were
invisible if the content was super bright.
2026-04-08 17:14:39 -07:00
talksik 5f80bd15d5 feat: allow reactions to particles in stream
Closes #111
2026-04-08 10:14:47 -07:00
talksik ac7336592a feat: support markdown formatting and rendering
Resolves #110
Goes the extra mile and supports markdown for sending code and formatted
text, almost document-like. It feels more like GitHub's comments and
text areas.
2026-04-08 09:38:21 -07:00
talksik ead17ba45f remove skip controls with stream playback
Closes #125
2026-04-08 09:04:31 -07:00
talksik 4fc5ecb6fb perf: improve react memo performance 2026-04-08 08:59:52 -07:00
talksik 8cbc04fff7 fix: list of streams glitching to top
This was due to real-time changes to items leading to scrolling to top.

Closes #123
2026-04-08 08:56:12 -07:00
talksik 7e11d66dc2 enhance keyboard experience
Now we have network root and stream-view defining their own hints
instead of trying to re-use one component. And we also introduce an
overlay for additional commands for people.
2026-04-08 08:40:07 -07:00
talksik f95ccf134d remove grid view for streams
- Reduces surface area
- Reduces options for people (less cognitive load)
- One way to use the product
- List view works better for keyboard shortcuts
- List view has basics such as recency
2026-04-08 08:21:54 -07:00
talksik d8b4c488b5 fix: grid view context menu not triggering
Right click on cards was not showing context menu.
2026-04-08 08:11:51 -07:00
talksik 97437c7089 feat: show transcript preview in streams list 2026-04-08 08:11:21 -07:00
talksik 9312f095b2 feat: seek media particles and speed playback
Closes #79
Closes #80
2026-04-07 16:48:40 -07:00
talksik 695adddaff feat: hold to pause stream playback 2026-04-07 16:32:51 -07:00
talksik 45fa4cb0e5 fix: close stream view on huddle
Closes #107
2026-04-07 16:24:19 -07:00
talksik 9c36a8f94d fix: close autoplay window on entering stream
Closes #114
2026-04-07 16:24:02 -07:00
talksik cd0d817cf7 fix: prevent skipping particles in stream after creation
Closes #112
2026-04-07 16:18:50 -07:00
Arjun PatelandGitHub cc190ba85f feat: triage streams with open, close (#121)
* refactor: use interfaces for function params

* cleanup message retention code

* support open / closed streams

- Tabs for viewing separately
- Context menu to close / open streams
- Update stream particle status field

* ui tweak

* show stream state in stream-view

* ui tweaks

* cleanup message retention from orion api
2026-04-07 16:11:13 -07:00
talksik c5525bb980 reduce footprint of closing indicator 2026-04-01 11:43:33 -07:00
talksik e117f58dbe tidy bottom section of stream-view 2026-04-01 11:28:54 -07:00
talksik 7c77d02ab5 feat: show human playback markers on timeline
Resolves #105
2026-04-01 11:02:48 -07:00