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.
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.
* 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
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.
* 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