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 <noreply@anthropic.com>
* increases timeout
* refactor: reuse constants for redis db
* avoid closing connection on pong error
* fix: prevent electron from pausing timer executions
Our pings could be paused when our app is backgrounded.
* refactor: remove unnecessary refs
* fix: presence unreliable within same pod
It was broadcasting presence changes to other pods, but not notifying
clients connected to the same pod
- 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
* 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
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
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.
* 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.
This created some distortion because while we were hiding the autoplay
window, this would not stop it's media. It's better to stop the media
completely
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.
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.
- 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