Commit Graph
100 Commits
Author SHA1 Message Date
talksik bf873fca84 fix: screenshare not working in electron
The default VideoConference component from livekit doesn't support
screenshare in electron. This attempts to compose our own layout with
livekit components ourselves and introduces our own flow for
screenshare.
2026-04-01 10:29:57 -07:00
talksik 18fba49d96 use headphones icon for huddles 2026-04-01 10:05:04 -07:00
talksik a41146fdeb feat: show when there is an active huddle
This introduces a webhook which listens to events from livekit and
updates our firestore stream particle. It keeps the client simple,
reacting to changes to firestore docs.
2026-04-01 10:03:04 -07:00
talksik c68fc236d1 join huddle with audio automatically 2026-04-01 09:06:44 -07:00
talksik 8fc9643685 simplify deployment tooling 2026-04-01 09:06:32 -07:00
talksik 0cda3b09ec set human name in livekit room context 2026-04-01 08:55:17 -07:00
talksik daa77c4e27 simple huddle implementation with streams 2026-04-01 08:50:56 -07:00
talksik 0c340199e3 return livekit server url from api 2026-04-01 08:41:54 -07:00
talksik 348fcad0cb fix: show controls indicator above stream # shortcut 2026-04-01 08:33:00 -07:00
talksik 476ecdd44e fix: inject livekit env variables for orion 2026-04-01 08:30:16 -07:00
talksik e10586ee1a fix: invalid type passed to hook 2026-04-01 08:26:06 -07:00
talksik edc1176e3e add token endpoint for livekit 2026-04-01 08:22:36 -07:00
talksik 47e2a9baa4 fix: audio bars overlap with bottom controls 2026-03-31 15:08:31 -07:00
Arjun PatelandGitHub 3de3ca7cef setup electron multi-window architecture (#102)
* prototype with two windows

* use deps in separate window render process

* enhance autoplay into desktop overlay

* fix: autoplay window not applying tailwind styles
2026-03-31 15:05:59 -07:00
talksik 7f490b4596 add script for invalidating release.json 2026-03-30 14:13:12 -07:00
talksik c54a75c3c5 chore: bump version 2026-03-30 14:02:06 -07:00
talksik ffb4ae6c5a cleanup unused import 2026-03-30 14:01:49 -07:00
talksik 7a8b31dbcb cleanup unused import 2026-03-30 13:57:22 -07:00
talksik a5e1ea1acf feat: show unseen count in macos dock
Resolves #93
2026-03-30 13:53:50 -07:00
talksik 65ea901626 fix: use actual particle child particle creation time
This was causing issues in which the last_child_created_at field for
stream particles was slightly after the actual particle's creation time,
and so comparing whether it's unseen merely via the playback markers
would be inaccurate.
2026-03-30 13:52:40 -07:00
talksik d10de739b3 show indicator of stream expiring soon 2026-03-30 13:33:02 -07:00
talksik d56541bd13 feat: allow network admin to control ephemerality setting
Resolves #92
2026-03-30 13:27:27 -07:00
talksik 7f93aa9db3 reduce blur for thumbnails 2026-03-30 12:53:35 -07:00
talksik 086cf4f1ee keyboard-driven navigation
Resolves #66
2026-03-30 12:51:15 -07:00
talksik 14285575e4 default to 4 / 3 aspect ratio for videos
This also sets the default window size to adhere to the default aspect
ratio
2026-03-30 12:35:48 -07:00
talksik 9f6633bf1f feat: add grid view for streams 2026-03-30 12:08:16 -07:00
talksik 76c538dca2 enhance text compose experience 2026-03-30 11:34:53 -07:00
talksik c797d7253e improve attachments experience for media particles 2026-03-30 11:27:33 -07:00
Arjun PatelandGitHub d6280439d0 feat: support file and image attachments (#98)
* upload & view attachments to particles

* allow download of attachments
2026-03-30 10:31:24 -07:00
talksik 3564055c29 update response status 2026-03-29 12:23:03 -07:00
talksik 21062a7786 tail migration logs 2026-03-29 11:57:50 -07:00
talksik 43c0a217c6 deploy production environment 2026-03-29 11:44:07 -07:00
talksik 48c73893b3 remove unused env var 2026-03-29 11:02:51 -07:00
talksik 7042b2d575 cleanup workaround for neon db
We are now using the llink database within our gcp datbase instances, so
likely won't be needing this workaround
2026-03-29 10:18:34 -07:00
talksik 5eaa51ffcc migrate to llink database within gcp 2026-03-29 10:17:17 -07:00
talksik 3d71dbaed0 chore: send admin email on adding waitlist entry 2026-03-29 09:43:21 -07:00
talksik be966d78a8 tests: remove unnecessary service test 2026-03-29 09:09:01 -07:00
talksik acac407fd0 feat(orion): add rest api for waitlist 2026-03-29 09:04:15 -07:00
talksik c471c28bb0 chore: improve release script 2026-03-25 16:15:25 -07:00
talksik bf1a9257ff chore: bump version 2026-03-25 16:12:10 -07:00
talksik 8cb9eb55c7 chore: cleanup network selector ui 2026-03-25 16:08:55 -07:00
talksik f3ddceecfc fix: persist auto-play setting 2026-03-25 16:03:14 -07:00
talksik 60daec38ff fix: allow text selection and copy
This was conflicting with the left and right tap areas for navigating a
stream.
2026-03-25 15:56:48 -07:00
talksik 739bb0cf80 fix: fullscreen button not working 2026-03-25 15:54:42 -07:00
talksik d525d6a588 fix: window title inaccurate 2026-03-25 15:54:05 -07:00
talksik 0ab2ec2bb8 fix: stale time ago in streams list 2026-03-25 15:53:35 -07:00
talksik d817e637c0 fix: janky captions experience 2026-03-25 15:41:25 -07:00
talksik 3c1d9cd4a7 feat: improved layout and captions 2026-03-25 15:05:38 -07:00
talksik 986a389606 feat: generate transcript and event-driven particle processing
This generates the transcript and shows the caption experience on the
client side for media particles. It also simplifies other side effects
that we must perform such as updating the `last_child_created_at` field
for stream and container particles.
2026-03-25 14:43:47 -07:00
talksik 92bbaa11b3 fix: neon db errors for prepared statements 2026-03-25 14:42:01 -07:00
talksik 0111ea28af refactor!: use consistent structure for particles
Making the firestore subcollections the same name helps with creating
indices and queries across subcollections of different depths. This also
prevents the need for conditional logic for network root / top-level
particles.
2026-03-25 13:14:08 -07:00
talksik d8a45b22d3 chore: setup boilerplate for particle processor worker
This sets up an example of listening to firestore data and reacting. It
also sets up our first worker in the kubernetes cluster.
2026-03-25 09:52:23 -07:00
talksik 86bdc78852 chore: bump version 2026-03-24 19:58:34 -07:00
Arjun PatelandGitHub 3d52fa6ccc feat: create network, and manage members, invitations (#74) 2026-03-24 19:50:06 -07:00
Arjun PatelandGitHub bf0147d542 refactor: reference human id instead of email (#73)
* refactor: update api and client to reference humanIds

* fix: prevent deletion of network member

This may cause various side effects if there is data in other services
which reference this member
2026-03-24 19:48:02 -07:00
talksik 3bf3f16be7 fix: auto-select myself as new stream's member 2026-03-24 11:29:14 -07:00
talksik 83190727f8 fix: show last sender avatar in streams list 2026-03-24 11:10:56 -07:00
talksik 6f033e2a73 feat: jump to my newly created particle once created 2026-03-24 10:27:50 -07:00
talksik 1fb31a0d04 chore: show submitting loader during compose 2026-03-24 09:58:50 -07:00
talksik 33a1318958 fix: hide author in "seen by" list 2026-03-24 07:29:13 -07:00
talksik fa91ce0382 fix: prefetch media warning
This is due to the "audio" and "video" preload having limited support in
browsers.
2026-03-24 07:27:23 -07:00
talksik 161c89acf7 feat: resume playback on the clip after we left off 2026-03-24 07:13:08 -07:00
talksik 0f993772c9 chore: bump version 2026-03-21 18:58:19 -07:00
talksik 97b2e7914e feat: filter to ephemeral streams and particles 2026-03-21 18:55:03 -07:00
talksik 356a166c7e chore: remove mic icon from autoplay overlay 2026-03-21 18:47:07 -07:00
talksik e61f838a98 feat: allow toggling eavesdropping 2026-03-21 18:34:41 -07:00
talksik 59ffa7ad6e feat: preload adjacent media in streams 2026-03-21 18:24:03 -07:00
talksik f6ee5e998a feat: play sound effect on new text particle 2026-03-21 18:06:58 -07:00
talksik 4a4d213eb6 feat: autoplay inbound clips 2026-03-21 17:59:41 -07:00
talksik 18f587864f fix: prevent resize of window
Users fiddling with window and complaining.
2026-03-21 16:58:44 -07:00
talksik 8168b7d8f5 fix: prevent duplicate artifact creation 2026-03-21 16:38:37 -07:00
talksik e488cc79d0 fix: escape not working during stream configure 2026-03-21 15:39:26 -07:00
talksik 35f24cb0ef chore: integrate linter for react hooks 2026-03-21 15:31:29 -07:00
talksik 3eea235ab1 feat: use declarative callbacks for data changes 2026-03-21 15:31:05 -07:00
talksik e96f5cbe8a fix: playback restarting from start of stream
This does a major refactor to using particleId for state of playback
instead of index, since index would change if the particle children data
does partial hydrations and a particle's index changes. Also it
abstracts much of the playback details from the view component.
2026-03-21 15:11:26 -07:00
talksik 79d8d0eac0 fix: use more condensed width for text content container 2026-03-21 13:45:40 -07:00
talksik a87b1d86a1 chore: always show top bar for necessary metadata 2026-03-21 13:40:48 -07:00
talksik 80afa58ac9 fix: increase size of compose container for long messages 2026-03-21 12:55:08 -07:00
talksik 8ee8aba5a2 fix: open link on clicking preview card 2026-03-21 12:48:45 -07:00
talksik d6b7ecc8fd feat: support sending and preview links 2026-03-21 12:46:23 -07:00
talksik 6bf2f2217a fix: top bar preventing click events on page indicator 2026-03-21 12:08:45 -07:00
talksik cbace421d2 fix: long subheadline overflowing listview 2026-03-21 12:07:25 -07:00
talksik 83c7b2ad53 refactor: structure container concerns better
The consumer of topbar should determine positioning
2026-03-21 11:49:18 -07:00
talksik 44f4dc772a fix: don't show seen by authed user 2026-03-21 11:46:26 -07:00
talksik 4edb6c853a adjust window size and aspect ratio 2026-03-21 11:40:53 -07:00
talksik cba24c5d95 enhance stream view 2026-03-21 11:39:43 -07:00
talksik 2262bf4f3b refactor: organize components flatter 2026-03-21 11:20:49 -07:00
talksik e1375eddfa remove top bar from stream-view 2026-03-21 11:18:13 -07:00
talksik 9ca12922b4 docs 2026-03-19 18:52:21 -07:00
talksik 67bdcddd33 chore: bump version 2026-03-19 18:36:23 -07:00
talksik f89a38ba7d fix: firestore not working in release build 2026-03-19 18:36:06 -07:00
talksik a1b1a46875 build: setup tooling for publish to gcs 2026-03-19 18:12:14 -07:00
talksik 2915a30fe0 fix: prevent opening devtools in production build 2026-03-19 17:20:23 -07:00
talksik e1295b434b fix: optional accessor 2026-03-19 17:18:52 -07:00
talksik 01c5d9be0c build: config electron package & build 2026-03-19 17:07:43 -07:00
Arjun PatelandGitHub 4b66d8e185 feat: initial conversational flow (#37)
* chore: only set visibility for container particles

* create reusable controls indicator for reply or new

* compress the size of top bar

* refactor: restructure state, routing, and more

* introduce stream compose flow

* feat: compose new stream full flow

* implement stream player

* fix: prevent redirect for signed object urls

* fix: implement stream playback cleaner structure

* refactor: layout file name

* feat: show stream name in breadcrumbs

* chore: tweak padding

* chore: adjust position of audio bars

* feat: show latest particle preview in stream list

* fix: remove console log

* refactor: reorder classes

* fix: avoid passing in updated_at to firestore particle

* refactor: extract properties for container particles to flat fields in firestore

* make the stream previews look alive

* feat: show audio bars during audio clip playback

* feat: order streams by last child creation

* feat: playback where I left off

* chore: remove unused store

* fix: recording mode not using shared state

* chore: clean unused variable

* remove unused imports

* fix: improve controls indicator immersion

* feat: show playback progress in bar & auto-play text

* feat: auto-exit stream on playback completion

* fix: jittery media playback progress

* fix: navigate during state change is invalid with react router

* fix: buggy exit progress when changing clips

* feat: add app icon

* update package.json info

* feat: only show streams visible to me

* feat: show seen indicator on particles

* fix: prevent unnecessary effects

* fix: play new particle after playback is ended

* use contols indicator for exit timer
2026-03-19 16:29:40 -07:00
talksik 990137b829 feat: add current path
This resolves #20
2026-03-18 08:14:32 -07:00
talksik ff785f409f fix: handle pre-flight requests 2026-03-18 07:56:08 -07:00
Arjun PatelandGitHub 51857bed63 chore: integrate firestore for particles (#32)
* plumb for firestore

* chore: cleanup orion api to only include essentials

* setup boilerplate for data and rendering

This includes zod types creation for API response validation, and
exploration of path based resolution of rendering particles.

* chore: structure container particles for rendering children

* wire firestore crud for particles

* integrate visibility to particles

* docs: explain particle view resolver
2026-03-17 19:52:31 -07:00
talksik 377537b892 refactor: rename folder 2026-03-14 06:31:54 -07:00