[ANNOUNCE] groups-v2.0.0

Skip to first unread message

Liam Fitzgerald

Dec 9, 2022, 12:41:24 AM12/9/22
to urbit-dev
groups v2.0.0

This release will be pushed to the network as an over-the-air upgrade

An in-depth guide to groups v2 can be found at:

Release Notes:
- Groups has been rewritten with an architecture that is focussed on keeping the
amount of IO to a minimum to ensure data consistency
- Groups now include fully customizable roles, a new permissions model and
searching by ship
- Chat now includes emoji reactions, threaded replies and a better formatting
- Notebooks now have a WYSIWYG note editor and a new grid view
- Collections now include the ability to post text items and the ability to
persist the view modality
- Notifications are now grouped globally, and per-group


Hunter Miller (556):
      github-actions: first attempt at automating glob
      release: fixing get urbit path
      release: more pathing tests and pill booting
      release: fixing bad action
      release: pythonv2
      release: install required pip packages
      release: fixing paths again
      release: more path fixing
      release: trying double quotes
      release: argparse doesn't like args that start with -
      release: don't need hood for glob
      release: adding debug messages and an exit call
      release: adding pause before glob, perhaps timing issue
      release: attempting with desk creation
      release: removing sleep, checking files copied correctly
      release: attempting curl instead
      release: trivial change to trigger action
      release: removing comment
      release: removing workflow for now until we've solidified
      config: updating packages and adding indigo config
      config: restrict font sizing
      fonts: adding self-hosted inter
      fonts: adding source code pro
      config: adding mock mode and some sample data
      config: downgrading node version for vercel
      types: fixing issues with vite and testing-library
      storybook: initial config, moving component to folder
      chat-input: adding button and trying tiptap
      chat-input: making tiptap work with current format
      mocks: updating mocking to use 1.1 changes
      mobile: improving layout fit with mobile bottom bars and font size
      button,chatinput: shuffling directories and adding tests
      button: correcting test name
      button: adding story
      mocks: fixing types
      build: fixing issues finding esbuild
      button: updating snapshot
      meta: removing erroneous add
      button: preferring basic element over component
      chat-input: doing proper usecallback usage
      chat-input: adding placeholder
      chat-input/content: first pass at integrating formatting
      chat-input-menu: reworking for updated design, making accessible
      chat-input-menu: first pass at link handling
      chat-input-menu: second pass based on new design
      chat,link-input: syncing format to latest and changing url placeholder
      chat-content: fixing key issues
      chat-content: fixing blockquote
      chat-content: fixing links
      chat-input-menu: fixing input sizing and state issues
      chat-input: fixing links and updating design
      chat-input-menu: refactoring to use radix popover for better control
      chat-content: adding strikethrough
      chat-input-menu: removing unnecessary memo
      fonts: fixing loading strategy
      fonts: fixing loading strategy
      chat: adding support for formatting inline code
      message-editor: adding history extension
      message-editor: fixing import order
      meta: fixing dep ref
      sidebar: consolidating components and design in prep for mobile
      sidebar: adding sidebar navigation for mobile
      layout: updating to match new props
      chat: adds new block type and a method to test
      chat: cleaning up type issues
      sidebarlink: fixing bad prop binding
      meta: fixing package lock
      meta: another attempt at fixing package-lock
      chat-json: removing unnecessary typing
      chat: implementing server-side drafts need to write an equality check so we aren't setting the same draft over the previous causing the cursor to move
      chat-input: correctly handling return from server
      drafts: mock support
      chat: importing useful things from grid
      chat: moving chat files and adding replies
      ui: fix lint
      chat-message: highlight if being replied to
      chat: fixing type issues
      chat-input: fixing menu positioning and dark visibility
      sidebars: moving to routes
      sidebars: switching to using purely routing
      group: updating to handle undefined case
      chat: removing unused deps
      chat: adds draft piping back in, and fixes chat-action
      meta: fixing tsc-files to work with ambients
      mocks: getting all subs covered
      mocks: adjusting dms to use dynamic subs
      meta: fixing lock file
      unreads: showing unread banner in dms, improving brief mocks
      chat: adding unread markers and updating mocks to use
      mocks: handling invited scry
      Update ui/src/chat/ChatWindow.tsx
      dm-sidebar: cleaning up styles and adding menu and new message
      dropdown: cleaning up focus states and adding dropdown as component class
      archive: making mocks work and unifying dropdowns
      ops: setting up automatic deploys
      ops: make entry file executable
      ops: allow manual deploy
      ops: fix deploy action
      ops: updating janeway to support ssh
      new-dm: cleaning up input to match a little better and fixing dm mocks
      new-dm: fixing button and spacing
      archiving: adding sidebar styling and adding action styling
      dm-sidebar: adding indicator for active navigation
      chat-input: fixing test
      scroller: cleaning up styles
      archive: removing entry points to archive features for now
      dms: adding leave functionality and options to sidebar
      ops: trying to prevent unsafe error
      meta: give homestead a unique tile color
      ops: trying latest janeway
      hooks: abstracting isMobile
      ops: making vercel build with production settings
      ops: enable mock api with staging
      dm-sidebar: fixing bad padding
      ops: don't use ssh-key for remote operations
      ops: bumping janeway for glob fix
      ops: trying new janeway to resolve grep issue
      dms: adding hero to message window
      meta: update kelvin
      chat-scroller: fixing equality for indexes
      ts: switching to better catch-all
      dms: adding subscription for invites
      invites: fixing type and also accounting if ship isn't in dms yet
      chat: don't resub if already subbed
      Update ui/src/state/chat/chat.ts
      Update ui/src/state/chat/chat.ts
      perf: adding profiler and removing mock data from prod build
      meta: changing target
      types: making ts happy
      ci: testing
      api: gross shuffling
      api: wrapping functions to make usage easier
      api: fixing lint issues
      Update ui/src/components/icons/BulletIcon.tsx
      messages: building sidebar out to new design
      sidebar: fixing import
      sidebar: cleanup from merge
      icons: cleaning up duplicates and names
      sidebar: first pass at mobile, still needs bottom menu
      icons: more icon normalization"
      merge: post-merge cleanup
      sidebar: mobile nav, lots of icon and component tweaks
      sidebar: main groups list mobile pass, some consistency changes
      mocks: adding more data for groups/channels
      sidebar: updating snapshots
      sidebar: adding scroll styles and fixing layout on desktop
      nav: fixing dms and mock data
      sidebar: fixing snapshots
      messages-sidebar: cleaning up spacing and persisting filter setting
      sidebar: unifying sidebar items
      sidebar: fixing snapshots
      sidebar: truncation, matching and design cleanup
      sidebar: removing unused components
      dm-hero: fixing collapsing hero on moons/comets
      groups: reorganizing components
      group-options: implementing mobile page
      nav: generic refactoring, fixing nav between primary/secondary
      icons: x icon cleanup and fixing name of person 16
      group-actions: refactoring dialogs out to routes
      group-info: fixing mobile spacing
      layout: fixing casing
      css: fixing import
      mocks: making changes to use new dynamic path matching
      dm-options: add activity
      sidebar: update snapshots
      ops: testing new docker and adding chatstead
      sidebar: fixing dot rendering, some timestamp overflow tweaks
      ops: making deploys more granular
      dm: adding missing options prop
      mocks: correcting ship, fixing default filter and window.our
      base-css: formatting
      chat-options: fixing icon sizing
      state: preventing erroring scries from crashing subs
      meta: updating dep for actual usage
      chat-scroller: if writ deleted don't fail
      api: bumping version to fix issue with wrong data channels
      meta: bumping http-api for fix
      chat: first pass at universal drafts
      chat-input: updating snapshot
      multi-dm: scaffolding out pages and invite ui
      meta: update msw
      chat: fix path interpretation for draft scry"
      chat: fixing front-end piping for drafts
      lint: formatting and snapshot update
      metadata: adding color
      multi-dm: use newId to redirect
      multi-dms: adding mocks and UI to support multi-dms
      lint: updating snapshots
      meta: fixing types from merge
      multi-dms: fixing subs, briefs, empty draft
      handlers: fixing missing color
      club: adding missing reducer pieces
      meta: updating snapshot
      multi-dm: allow leaves and fix club action dejs
      chat-input: update snapshot
      app: redirect to login if session expired
      app: fix erroneous redirect in mock state
      test: add snapshot back
      group-info: setting up initial routes for everyone to work in
      groups-role-mgmt: first pass at UI
      tests: update snapshot
      tests: update snapshot
      groups: fleet diff changes
      groups: front-end changes for new fleet diff
      groups: attempting to fix syntax issues
      groups: moving state and fleshing out reducer
      groups: fixing backend compilation issues
      members: adding invites and searching
      members: making compatible with mobile nav
      ship-selector: moving to appropriate place
      multi-dms: refactoring to cleanup and adding capability for sending messages
      lint: updating snapshot
      groups: correcting join vuln and style
      groups: fixing syntax error
      groups: fixing indent
      clubs: fixing echo issues and missing invites
      lint: fixing chatinput
      lint: fixing chatinput, keeps flopping
      multidm-form: removing console logs
      chat: give brief when joining
      chat-input: wrapping in reply showing and fixing thread width
      chat-input: fixing test
      edit-info: fixing undefined color and stale closure of clubid
      multi-dms: fixing threads
      edit-form: remove errant console log
      groups: adding metadata editor to group info page
      edit-info: needed to use routing pattern so that we always have id
      clubs: use color in avatar
      virtual-scroller: fix not loading messages initially
      edit-info: adding delete ability for groups and cleaning up a few things
      group-info: removing errant console log
      meta: fixing missing handler and snapshot
      sidebar: store multidms in localstorage
      privacy-selector: making reusable and more form friendly
      lint: fix snapshots
      group-editor: account for privacy
      new-dm: use navigate for both
      multi-dm: init subs ahead of time, optimistic create before async send
      clubs: adding pinning
      chat: adding pinned to persistence
      lint: fixing snapshots
      new-dm: better hook usage
      newgroup: fixing casing on roles and putting back onclick
      dms: overzealous pre-subscription failing on scry so message never fires, other small fixes
      ship-selector: use cited ship names
      chat-input: better use of debounce + hooks
      lint: fixing snapshot
      gangs: retrofitting flow to work with new designs
      groups: changing behavior to list, trying to ensure gangs fall out
      chat: ensuring writer check works and giving briefs when we need them
      chat: correcting sidebar, channel index join, spinner, channel settings
      chat: handling chat-leave
      groups: remove replaced cases
      groups: removing errant comment
      groups: adding invite mechanism
      groups: removing invite text field
      lint: fixing snapshot
      groups: adding back in behavior that detects if joined
      dates: only check from end of the day
      groups: fixing add/edit channel
      groups: add invite count, fixing join nav, making sure we see gang leave
      groups: removing unused pages
      lint: updating snapshot
      group-info: make sure privacy is filled correctly
      privacy-selector: fixing secret text
      groups: leave if I'm removed, prevent self kick/ban, invite join smoother
      lint: fixing snapshot
      tests: fixing annoying snapshot bouncing
      channel-index: removing count until it's accurate
      lint: updating snapshot
      channel-create: adding writers to set permissions on creation
      chat,groups: fixing missing json conversion and permission handling
      sections: fixing id creation to be @tas compat
      members: don't show admins options for kicking/banning themselves
      chat-thread: adjusting css so thread takes up full window when constrained
      find-groups: ensure indexed gangs get added to gangs
      ops: update to new release pipeline
      pins: unifying pins and making generic
      chat: fixing types
      chat: better sub state tracking
      ops: trying new janeway
      group-actions: make pin option reflect state
      ops: turning on verbose for debugging deploys
      heap: compiles
      types: fix type info for holt
      heap: adding generators
      find-groups: reversed logic for gang indexing
      heap: starting front-end
      heap: finishing marks and adjusting front-end to heaps
      heaps: final touches for adding/displaying curios
      channels: undoing unification
      heap: removing cruft
      chat: fixing nest/flag issues, threads, and channel index break on empty group
      heap: proper path for group read
      chat: prevent draft overriding current message
      new-group: more immediate validation
      section-input: add style for highlighting on top of std highlight color
      diary: initial copy from heap
      diary: bare bones frontend
      message-editor: update to match type
      chat-scroller: resolving unstable component definition
      lint: fixing duped classes and updating snapshot
      hark: adding basic front-end pieces
      hark: finishing notification UI and converting to use nest for channels
      diary-editor: fixing type
      hark: differentiating notifications for dms and adding dm harks
      hark: guarding against self and gossip
      logged-out: fixing issue where avatar render crashed
      groups: adding all meta notifications
      groups: adding group-level notifications
      lint: fixing snapshot
      vite: addingproxying for preview
      vite: adjusting config to match bugged preview config
      vite: fixing builds that should be production
      vite: redoing app detection to improve vite mode usage
      heap: allow editing curio
      npm: fixing package lock
      channel-index: updating to work with all channel types
      heap: adding backend changes for view persistence
      heap: front-end for view persistence, types cleanup
      dismiss: should work across all channel types
      heap: adding hook for comments
      chat: don't send harks if we're replying to ourselves and only send harks to other repliers
      heap: fixing bad merge
      heap: fixing comment times and correcting notification behavior
      chat: fix bad refactor of leave
      diary: fixing a few issues with subs, inline-code, missing conversions
      diary: adding harks and fixing can-read path
      heap: changing to match diary
      chat: fixing spacing
      perms: fixing missing subscriptions for perms updates and multi-channel issues
      group-unread: fixing flag/nest mixup
      groupsidebar: stop snapshot flip flopping
      chat: add groups ref
      heap: fixing edit and adding some areas that use titles
      group-ref: handle secret case and fix avatar sizing
      app: handle redirects from grid
      diary: note header and beginning of content
      diary: beginning styling view, adding headers to everything
      diary-note: adding comments
      diary-note: comment sorting
      meta: removing erroneous package installation
      layout: fixing overflow and sticky header
      diary-note: finish header actions
      request-join: adding preliminary backend actions and front-end UI
      request-join: adding rescind and fixing notification
      members: adding request -> pending -> join flow
      diary: adding publish action and fixing key issues
      nav: restructure to work better with framer motion
      diary-editor: cleaning up
      diary: persisting view
      diary-channel: removing console log
      heap: fixing view behavior and correcting styles
      app: move grid redirect to prevent resubscribing on navigate change
      chat: fixing bad nav arrangment
      chat: react router needs to match a path
      meta: adjusting meta type to work with cover images
      meta: adjusting to new types
      image-field: refactoring to reusable field and more compatible with react-hook-form
      sidebar-item: prevent crashes from mix
      new-channel: fixing type
      heap,refs: cleaning up usage and location
      diary: fixing ref parsing and adding cite input
      group-invites: use correct invite method
      chat-store: preventing undefined blocks
      diary: preventing null access
      diary: fix delete
      diary: adding edit
      diary-edit: actually using the right time
      ops: sourcemaps likely killing memory
      diary-options: restore delete fix
      lint: formatting
      diary-add: correctly check content
      group-actions: switch to new ref links
      app: fix grid redirect
      groups: only join default channels
      diary: refactoring all places doing link copying to use same and updated to ref structure
      groups: type documentation
      chat: type documentation
      diary: type documentation
      desks: changing docket info
      ui: replacing most instances of homestead/chatstead that matter
      ops: add other deploy targets so team can deploy at will
      heap: type documentation, and misc corrections
      refs: unifying unavailable ref, spacing tweaks, stabilizing heap ref display
      docs: adding %docs supported docs
      chat: correcting hark desks for club and dm
      chat: adding docs, and updating group docs to match
      docs: fixing syntax errors
      ship-selector: only show outline in dark
      meta: updating app descriptions
      dms: autofocus chatinput
      tiptap,diary: fix breaks parsing and diary redirect bug
      tiptap: fixing tests
      docs: adding heap and diary, modifying overview
      meta: adding icons
      chat: adding emoji reactions back
      chat: fixing delete
      chat: adding add reaction button
      reaction: fix aria label
      sidebar: add drop shadow for text contrast
      sidebar: restore average color
      heap: fixing overflow issues
      heapdetail: tweaking mobile and text styles
      chat: fixing reactions render
      meta: updating icons
      groups: redirect to latest channel or top channel
      diary: change placeholder
      chat: fixing bad loading order and new message loads not trigger state update
      vscroll: replacing with virtuoso, running into prepend issues
      apps: fix queries
      vscroll: fixing prepending items and adding loaders
      club: erroneous presig for multidm
      apps: changing to bap for concision
      meta: version bump for release
      diary: updating types and adding migration
      diary: adding extensions and parsing,  pokes fail though
      lint: formatting
      diary: adjusting type so it doesn't blow loom
      diary: fixing issue where bullet lists were ignored
      diary: improving styling on both edit and display side
      diary: headers working end to end
      diary: adding horizontal rules to frontend
      diary: removing extraneous comments
      tests: fixing harness for chatmessage
      tests: fixing more harness issues with fetch
      ops: editing actions to work with ref passing
      diary: making header act more like rest of inline content
      tiptap: fix test
      lint: fix snapshot
      lint: whitespace
      meta: moving folders around
      lint: whitespace
      nav: shuffling around routes and mobile wrappers
      groups: finishing migration
      chat: saga migration
      nav: fixing channel back buttons
      notifications: fixing scrollbar jump and bad overflow
      lint: fix snapshot
      find-groups: changing path for better nav
      vscroll: useMemo on objects generated on render that are deps
      Update ui/src/chat/ChatScroller/ChatScroller.tsx
      messages-sidebar: use correct nest and whom
      lint: whitespace correction
      ops: needed stronger bash-fu
      nav: adding missing routes to mobile nav
      mobile: style tweaks
      chat-scroller: adjusting mobile and fixing issues with loading
      Update ui/src/chat/ChatMessage/ChatMessage.tsx
      chat: reverting problematic save
      chat: reverting revert, mimicking latest negotiations from jake
      heap: use the correct type for reduce
      meta: version bump
      groups: adding better handling for errored group joins
      chat: fixing thread layout regression
      usemedia: fixing logic error in hook so it gets properly initialized
      app: undoing dumb changes
      diary: adds missing piece for state updates
      chat-scroller: fixing logic for day marker
      chat-scroller: removing unused import
      Update ui/src/logic/tiptap.ts
      tiptap: address linting concerns
      lint: whitespace changes
      groups: proxy pokes to host
      groups: adding new poke -> fact tracking and added loading state to group creation
      groups: refactoring to mimic rest of codebase
      chat-scroller: more stable layout
      meta: version bump
      chat: new unread tracking system
      chat: fix loading logic, make sure code and input break correctly
      lint: update snapshot
      chat-scroller: bottom threshold should be small, but top should stay large
      chat: fixing time mismatch so briefs calculate appropriately
      chat: improving brief mgmt, and refactoring isJoined/isUnread
      dismiss-channel-notifs: fix type error
      briefs: calculate correctly and make sure usages use nests
      chat: addressing pr feedback and fixing small issues
      groups: shoring up name normalization
      apps: adding sane tas checking for flags
      multi-dm: fix modal dismiss
      chat: improving word breaking in input and messages, preventing code snippets from being occluded
      lint: fixing snapshots
      channels: protect from non admins if admin only
      chat-message: adding clarity to conditionals
      channels: hiding unpermissioned channels from sidebars, canReadChannel helper
      app: fix media query deduplication
      app: remove errant log
      sidebar-sort: go back to briefs which was correct, ensure they work for all channels
      lint: fix snapshot
      channel-sort: ripping out incorrect sort
      groups: fix invite to work with secret groups
      groups: removing duplicated load
      state: clean state for migrations, making more consistent
      chat-input: remove chat draft machinery until we have time
      chat: initial support for mentions
      chat: adding mention notification and exact patp match
      lint: fix type errors
      group-join: don't fail if there's no notification
      chat: ensure time gets corrected and id + sent match
      message-editor: only allow mentions in chat for now
      chat: changing back fetch size
      multi-dm: adding tracking to edit save
      talk: fake nests to match allbriefs, persist filter
      emoji-picker: remove unused comment
      deps: needed update of all radix for pointer-events fix
      groups: don't invite someone who's joining
      groups: bad logic in gang removal
      meta: version bump for beta
      groups: fix secret join and protect vs missing xeno
      groups: erroneously removed kick
      channel: prevent brief marking from triggering infinite loop
      meta: version bumps
      chat: show date divider on new day even on notice
      heap,diary: use correct time for marking read
      diary: correcting time linkages
      clubs: prevent double 'join' and represent pending correctly
      migration: show unmigrated channels and differentiate with messaging
      migration: converting to tooltip and component, added messaging to groups
      migration: correcting language for groups
      diary: adding remote fetching of notes
      meta: kelvin upgrade
      meta: version bump
      migration: more accurate view of what's migrated
      diary: correcting time passing
      heap: adding remote fetching and cleaning up time linkages
      migration: handle empty groups
      diary: refactoring time linkage based on liam's feedback and correcting toast id
      heap: fixing missing json conv, aligning with diary and clarifying times
      bait: switching to placeholder ref for now
      migration: changing import flag tracking for better logic
      migration: comment for clarification of import state
      channel-list: correcting imports check
      migration: convert cover value to hex, missing json flag
      migration: fix color conversion
      migrate-map: actually give the value, not just a gate
      groups: missing closing bracket
      lint: remove unused and reorder
      lint: removing unused ref
      meta: version bump
      diary: add imp subscription
      ops: changing so subsequent deploys don't glob
      migration: no need to use channels anymore
      local: don't store connection status in localstorage
      migration: use channel previews for unjoined channels
      lint: fixing test
      app-ref: fix id and add subscribeOnce to api
      meta: version bump
      diary: adds mentions to editor and parses links correctly
      migration: only retry after 10 mins
      meta: version bump
      heap: better link check
      diary: add ship to json conv
      migration: use wait checking for valid behavior
      migration: actually initialize and fetch
      migrate: only sub once

Jake Miller (2):
      Update desk/app/chat.hoon
      Update desk/app/groups.hoon

James Acklin (140):
      meta: fix error boundary issue target
      meta: change app tile colors
      nav/groups: adds active highlight to special actions
      adds hunter's whom fix to NewDM
      nav/chat: regular sidebar item spacing
      nav/chat: adds pinned DMs to mobile view
      shipName: show alias everywhere
      chatNotice: fix spacing
      dm/header: fix alignment, cursor + select
      dm/sidebar: remove invite from 1:1, mark read on read
      chatMessage: comment out nonworking options
      mocks: add some nicknames
      dm: show reply in ChatInput
      ci: fix ChatMessage snapshot
      groups/nav: tighten sidebar spacing
      groupSidebar: add slide-in animation
      nav: fixing snapshot
      nav/dm: move 'mark read' to first position, blue
      dms: address PR comments
      nav: avoids hover class collision with highlight set
      fixing snapshot
      fixing snapshot again
      equality fix
      chat/multi-dm: use ship nicknames in MultiDmHero
      nav: hover treatments for sidebar item actions
      nav: base dropdown-item hover background
      nav: revives the big yellow button
      nav: update snapshots
      fixing snapshots
      groups: adds byb to mobile nav
      nav: remove search
      nav: fixes pinned heights in groups; unify chat
      chat: navigate to / on back from DM
      groups: brings group icon url/hex field to spec
      chat: disable send on new DM screen without valid ships
      chatInput: disable send button with no content
      groups: hover for ChannelIndex channels
      groups: full-width ancillary pages
      interface: correct ChatInput top-border color
      groups: unifies channel header with Chat
      chat: unread banner to latest design
      chat: show group img/color in Channels sidebar
      groups: fix groupavatar input overflow
      groups/create: properly set default color
      groups: use sigil color logic in ColorBoxIcon
      groups: void hover treatments for dropdown labels
      groups: spacing, color, and casing nits
      groups: more color and prose nits
      shipselector: border fixes
      channelindex: eliminates empty section container
      profile/edit: field alignment, reset dirty state on submit, disabled secondary-button color
      groups: add letter to group avatars everywhere
      profile/edit: more spacing, css
      nav: update snapshot
      heap: channel header consistent with design
      reorder channel/group name in header
      groups: adds react-helmet, app-dependent <title>s
      groups: adds app-cased favicons
      groups: add dynamic titles for most routes
      groups + chat: titles for all accessible channels
      fix merge
      groups: channel actions in header, WIP
      groups: refine channel actions (WIP)
      idiomatic destructuring
      groups: placeholder mutes, remove mark-as-read in header
      correctly leave a channel of any kind
      fix exhaustive-deps error
      groups/nav: applies design to overview nav
      groups/nav: use profile color as item highlight
      group/nav: applies design to inner-group navbar
      groups/nav: uses activity/notifications for group/groups home
      groups/nav: pixel-perfect spacing
      groups/nav: restores overflow behavior in group
      groups/nav: update snapshots, better color function
      chat: bring nav up to spec
      groups/nav: collapse custom color function
      groups/nav: use color2k
      back out route changes
      groups: adds notification routes back in, adds avatar to chatinput, clears Talk home
      update ChatInput snapshot
      diary/note: share + menu parity with design
      diary: assorted cosmetics
      diary: disable publish correctly
      groups/channel-create: add colors + fix icons for channel types
      groups/channel-edit: stay on page when creating channel
      update snapshot
      groups/nav: dynamic styling for group covers, checkpoint
      groups/nav: adds dynamic coloring for image-covers in group
      channels/add: use TW classes
      groups/channel-edit: stay on page when creating channel
      groups/nav: dynamic styling for group covers, checkpoint
      groups/nav: adds dynamic coloring for image-covers in group
      groups/channel-create: add colors + fix icons for channel types
      update snapshot
      channels/add: use TW classes
      groups: sweeping color regression fixes
      update snapshot
      app: soft dark colors
      update snapshot
      groups: change collection to gallery
      heap: text curio cleanup - grid, list, detail
      refs/curio: add line-clamp and margin to text curio refs
      app: product icon extravaganza
      app: update landscape icons
      chat+heap+diary: hide inputs if cannot write
      heap + diary: hide non-permissive comment field
      diary: allow authors and admins to edit notes
      heap: prevent non-authors/non-admins from editing curios
      diary: update index to show/hide edit buttons
      meta: moving dev instructions
      meta: add MIT license
      meta: final readme
      groups: use landscape settings
      meta: updating snapshot
      profile: address PR feedback
      refs: adds desk refs
      addressing PR feedback, fixing test
      groups: adds feedback button and hover-menu to app title
      feel: adds ships to chat reactions
      s3: add rudimentary multi-file upload + store
      s3: adds store, updates types
      s3: produce and set URL for each upload
      s3: key FileStore, associate input with upload
      s3: add example implementation of input
      groups: mobile nav redesign
      groups: update ChannelIndex snapshot
      groups: mobile nav PR feedback
      groups: adds ellipsis to name-hover in group sidebar
      groups: update NewChannel snapshot
      groups: add channel admin actions
      groups: use pretty channel type in actions
      groups: remove comments
      groups: prevent avatar squishing
      meta: version bump
      talk: refurb multi-DM chat info
      talk: MultiDmEditModal feedback, pending list
      meta: 0.9.0 version bump
      meta: alpha -> beta
      meta: version bumps

Jared Tobin (11):
      ops: misc deploy action adjustments
      ops: adjust jobs workflow
      ops: dispatch on pushes to jt/action for testing
      Revert "ops: adjust jobs workflow"
      ops: don't add safe directory
      ops: test OTA command in action
      ops: use more appropriate flag order for janeway
      ops: supply ssh key when OTA-ing
      ops: test all commands
      ops: full test
      ops: remove --verbose flags, target master

Liam Fitzgerald (392):
      chat: new backend
      chat: new frontend
      chat: support deleting messages
      chat: add reacts
      chat: auto setup default chat
      chat: make not ugly
      chat: fix ship validation
      ui: strip out moment, use date-fns
      chat: make back incompat changes OTAable
      ui: cleanup chat state mgmt
      chat: add replies
      ui: update glob
      chat: add unreads
      ui: fix build error
      ui: add fixtures
      ui: prettier, add styling
      ui: fix linting
      groups: sketch out prototype
      chat: integrate with groups
      meta: use npm ci to setup deps in CI pipeline
      ui: freeze package-lock
      ui: add ChatWindow
      ui: add group navigation chrome
      groups, chat: add channel creation
      ui: add channel creation
      ui: visualise members
      groups: json conversions for roles
      ui: visualise roles
      groups: add networking
      groups: add ui subscriptions
      ui: synchronise group state in real-time
      groups: add joining mechanism
      chat: fix flag fetching
      ui: allow joining of channels
      chat: add writing roles
      ui: add ChannelSettings page
      chat: add more JSON conversion
      ui: respect writer roles
      chat: match JS types
      chat: implement r/w permissions
      chat: implement permission revocation
      ui: fix adding a channel
      ui: batch state updates to prevent zombie children
      ui: add mocks for group state
      ui: linting pass
      ui: fix tsc
      ui: fix lint
      ui: sketch out pending groups
      ui: componentise Gang
      ui: add GangModal
      ui: fix linting issues after merge
      groups: JSON conversions for join
      ui: allow joining of groups
      groups: refine subscription handling
      groups: navigate to Group page on create
      ui: move from formik to react-hook-form
      groups: add scry endpoint for gangs
      ui: fix gang fetching
      ui: rm formik import
      ui: address hunder review
      groups: make cordon useful
      ui: update cordon types
      ui: use any-ascii
      groups: add +ban-ship
      ui: visualise open cordon
      groups: add %afar cordon
      ui: display custom group
      ui: lint
      ui: add delMessage to useChatState
      ui: surface message deletion
      ui: update tests
      chat: fix replied field in JSON
      ui: implement threading
      ui: implement threading
      ui: make chat threads match root view
      ui: update threading to match spec
      ui: visualise authors in reply
      ui: address pat review
      ui: update indices on delete
      ui: add Dm routing skeleton
      ui: add DM mock data, show
      ui: address tom review
      chat: factor out $diff:writs
      chat: implement DMs
      ui: hopefully unthrash package-lock.json
      chat: subscriptions for live UI
      ui: live updating DMs
      chat: rewrite to split ordering and ID
      chat: stop overflow of bounding box in thread view
      chat: highlight message of thread
      chat: use indigo XIcon
      ui: fix lint
      chat: write DM querying
      ui: rework types to match new datastructures
      chat: move group chats to $pact
      chat: unify dm/groupchat state handling
      ui: implement backward index
      chat: stop rebunting group chat $pact
      chat: fix face shadowing causing bad reply structure
      ui: fix threading in DMs
      ui: fix horizontal overflow
      ui: fix reply state reduction
      ui: address pat review
      ui: address hunter review
      ui: fix lint
      ui: fix lint
      ui: fix threading in ChatInput
      chat: add $brief, make queryable
      ui: order Dms, unread marking
      chat: split $contents into $story, $notice
      ui: render chat notices
      groups: add missing %group-log mark
      chat: make .draft a $story
      ui: fix joining a chat
      chat: typecheck
      chat: add network status to $dm
      chat: add dm $rsvp functionality
      chat: add joining notice
      ui: wire up join/invite flow
      chat: add .unread-id field to $brief
      chat: sketch archival of dms
      chat: fix %older scry
      ui: add fetchOlder api
      chat: update archival technique
      ui: allow chats to be archived
      chat: add /dm/archive scry
      chat: add club initialisation
      chat: finish club draft
      groups: add $bloc to specify superusers
      chat: notify on DM
      chat: autowatch DMs
      chat: invite notifications
      ui: move sigil memoization outside of react
      ui: refine VirtualScroller anchor selection logic
      chat: add JSON for marks
      chat: club subscriptions for live UI
      chat: add initialisation
      ChatScroller: key virtualscroller component
      ChatScroller: prevent threaded messages from being shown inline
      chatdesk: make desk.bill compile
      chat: fix cruft from rebase
      chat: make test passing
      chat: rewire to gossip out group DM messages
      chat: add necessary conversion marks
      groups: add channel grouping
      chat: make club metadata editable
      chat: fix leaving DMs
      groups: add automatic joining of channels
      groups: respect autojoin flag
      chat: make club metadata scryable
      chat: do not notify on counterparty leave
      dms: backend for pinning
      ui: update dm pin pokes
      ui: move from @uw to @uv
      chat: move to @uv for club id
      ui: fix subscribe once
      groups: add missing readers property in channel json
      groups: add missing par
      groups: add necessary fields to create
      chat: load newer
      hark: first draft
      hark: add %saw-seam action
      hark: draft querying patterns
      hark: draft timeboxing
      chat: add %chat-leave poke
      chat: give %chat-leave on briefs
      ui: fix vscroll locking behaviour
      hark: cascading reads
      hark: refactor, add comments
      groups: leave
      groups: protect against self-leave
      groups: give diff for %group-leave
      chat: make %inline-code not recursive
      groups: add index subscription
      groups: fix priority of wutlus
      groups: fix mark in previews
      groups: fix backwards conditional
      groups: clean up index subs
      groups: add channel ordering to zone
      groups: order zones themselves
      groups: introduce $nest
      groups: update channel orderng to use $nest
      groups: fix missing fas in nest enjs
      desk: add desk-wide %holt functionality
      desk: remove redundant $holt poke
      ui: update for nest/flag bifurcation
      landscape-dev: vendor deps at current master
      chat: add upgrade logic from graph-store
      groups: add %invite-decline poke
      desk: fix agent order
      hark: update rug handling
      hark: add %rug mark
      hark: add %action mark
      groups: fix invite mark name
      groups: add %edit zone delta
      contact-hook: upgarde networking
      desk: remove contact-store from bill
      hark: add ui subscription
      hark: add blanket support
      contact-hook: automatically federate through groups
      chat: more sketches of import
      groups: sketch out migration
      groups: fix migration breakage after merge
      groups: add |import generator
      groups: fix md-store import scry
      groups: address hunter concerns
      desk: add +of, ordered set engine
      groups: use +of to ensure correctness
      groups: make zone mandatory, include defaults
      groups: fix zone consistency issues w/ch add
      groups: fix missing zone-ord add
      groups: use %default instead of %$ for def zone
      groups: fix compilation
      chat,heap: fix default zone
      chat: fix $inline recursion
      heap: fix $inline recursion
      ui: update for properly recursive inline type
      chat: allow serving references
      chat: allow asking for references
      chat: add marks for previewing of references
      diary: flesh out quips implementation
      diary: add more JSON conversions
      ui: refactor to remove channel polymorphism
      diary: even more JSON conversions
      ui: adding comments
      diary: fix ui update subscription
      ui: live comment updating
      ui: fix out of sync types
      ui: enable sourcemaps in production
      ui: monkey-patch in correct order
      ui: fix lint
      diary: fix breakage from merge
      diary: flesh out adding a note
      diary: DiaryEditor -> DiaryInlineEditor
      diary: prototype editor
      ui: manually add paragraphs to diary editor
      heap: use %ud for IDs
      ui: update for %ud IDs in %heap
      hark: enable garbage collection
      ui: convert to @ud on way out
      chat: fix brief
      ui: prototype editor, again
      ui: QoL fixes for interactive diary nodes
      ui: fix lint, tsc
      chat: add %cite types
      chat: improve $cite type to allow arbitrary non-group references
      notify: import from groups
      notify: compiles
      notify: upgrade for new hark
      hark: add %hark-yarn mark
      hark, notify: remove debug printfs
      notify: fix +on-load
      ui: cleanup
      notify: add missing marks
      groups: add ask set
      groups: rework permissions for ask set
      ui: update types for ask set in groups
      diary: flesh out adding a note
      diary: DiaryEditor -> DiaryInlineEditor
      diary: prototype editor
      ui: manually add paragraphs to diary editor
      ui: prototype editor, again
      ui: QoL fixes for interactive diary nodes
      ui: fix lint, tsc
      ui: cleanup
      cite: add referencing
      cite: drop unit path in %desk/%chan cases
      ui: add cite path parser, printer
      ui: render out references from $cite
      notify: use %uv consistently
      ui: fix recreation issues with block implementation
      groups: preview group from nest
      groups: add channel preview type
      diary: fix encoding of time in notes-diff
      diary: fix time replication
      ui: update for new references schemes
      ui: fix lint, tsc
      ui: remove unused deps
      notify: rewatch hark if subscription broken
      groups: fix preview devase
      diary: add $sort field
      chat: fix previewing
      chat: fix preview +take
      groups: fix can-read scry
      notify: rewatch hark if subscription broken
      groups: fix preview devase
      diary: add $sort field
      ui: make diary header sticky
      ui: add cancel button to new message
      groups: fix location of pending request notification
      ui: fix sending of useGroupState.revoke()
      ui: tweak ShipSelector styling
      chat: version marks
      chat: add dummy marks
      diary: version marks
      heap: version marks
      groups: version marks
      ui: update mark names
      chat: version subscriptions
      diary: rework quips to nest inside notes
      diary: match chat message type w/ quips
      desk: fix kick resubscribe loop due to public/rolling mismatch
      ui: update comment types to latest, and rework staggered fetching
      diary: add %outline marks and associated endpoints
      ui: clean up no longer use fields
      desk: get rid of duplicate
      ui: make virtuoso set keys on components properly
      diary: write state migration
      chat: fix upgrade
      diary: write markdown parser
      ui: fix array handling in diary rendering
      diary: import poke sketch
      chat, diary: make upgrade logic compile
      chat,diary: fix merge breakage
      chat: fix +roll losing captured state
      groups: upgrade migration style
      heap: add migration path
      chat: fix +roll losing captured state, again
      heap,quips: fix incorrect time handling
      diary: fix url handling for images
      desk: move channel meta migration into %groups
      chat: %create takes all initial state
      diary: %create takes all initial state
      heap: %create takes all initial state
      desk: fix broken migration
      groups: fix zone consistency in migration
      diary: improve migration
      groups: fix admin import
      chat: read all on import
      diary: improve migration
      diary: read all on migration
      heap: read all on migration
      diary: fix log handling in migration
      heap: fix log handling in migration
      chat: fix log handling in migration
      chat: improve migration parsing
      chat: fix versioning
      groups: fix migration
      diary: fix versioning
      heap: fix versioning
      desk: fix breakage from merge
      diary: add comments to migration
      landscape: include club migration
      chat: add pending import indicators
      diary: add pending import indicators
      heap: add pending import indicators
      chat: add ver to group-action marks
      heap: add ver to group-action marks
      diary: add ver to group-action marks
      groups: fix potential networking desync
      migration: improve diary handling
      migration: fix newline handling in diary
      DiaryContent: add %ship renderer
      desk: add desk.release file
      cite: fix %bait typing, conversion
      groups: track nests that were imported
      migration: remove autoconversion
      groups: track nests that were imported
      groups: req/res protocol for dude discovery
      groups: populate .shoal on import
      chat: add req/res for old style graph references
      ui: support for graph-store references
      chat: fix path formatting in migration
      groups: add missing %dude mark
      chat: prevent resub loop in %said handling
      diary: prevent resub loop in %said handling
      heap: prevent resub loop in %said handling
      heap: allow references
      heap: improve validation
      ui: handle %block in %heap
      diary: allow referencing comments in $said
      heap: render references
      diary: migrate references
      desk: prevent duplicate subscriptions on said endpoints
      references: prevent dupe requests by tracking loading
      groups: finish initialising group before giving fact
      groups: cleanup role import
      groups: ensure host has write perms
      groups: avoid overwriting admin perms in go-init
      heap: fix typo in $sect
      groups: fix typo
      groups: fix importing admin
      groups: add /init watch
      groups: fix admin importing
      desk: final versioning

Mackenzie Davidson (12):
      devex: integrate tlon eslint/prettier #16
      update `@tloncorp/eslint-config`
      add eslint rule to allow jsx in tsx files
      update path to `tsconfig.json` (plays nicer with editors)
      updated linting scripts
      updated `@tloncorp/eslint-config`
      update eslint rule `tailwindcss/no-custom-classname` to allow for custom classes defined in `tailwind.config.js`
      add `tsconfigRootDir` to eslint config
      eslint + prettier: always add semicolon
      lint and format all
      tests: update snapshots
      prettier: updated `trailingComma` rule to `es5` to not have trailing commas in jsx

Patrick O'Sullivan (370):
      Switch to react 17 until we need 18 features
      Update render in main.tsx
      Add mock-http-api
      Add new mocking
      Update mock-http-api, add sample mock poke
      Use VITE_SHIP_URL for mocking requests
      Switch to VITE_MOCK_URL for local dev, add VITE_VERCEL_URL for deployments
      chat: basic chat message/content components
      chat: move Author and ShipImage into chat-message
      chat: fix type issue in onSubmit in ChatInput
      chat: commit snapshots for ChatMessage, set gh test workflow to update snapshots
      chat: use less ambiguous param name for array item in content
      chat: add comments to ChatContent
      Update to mock-http-api 1.1.2
      chat: add chat-reactions
      chat: use interface for ChatContentProps
      chat: use new Chat component
      fix issues around using new mock-http-api
      chat: add key to ChatReaction props
      chat: add y margin around chat time
      Use static time for ChatMessage test, snapshots no longer need update in CI
      rename directories with CamelCase
      chat: switch to new chat types
      chat: shunt block content to the top
      use tailwind officialSorting (the sorting used by prettier) for eslint classname sorting rule
      Switch to unknowns for typeguards
      Move Block/InlineContent components out, remove memos, switch to ternaries in ChatContent render
      Fix tailwind classname order in other relevant components
      Switch to faketimers for mock chat message
      chat log: add date divider, fix some spacing issues
      chat log: add hover state for normal timestamps, add another mockWrit
      chat log: extract prettyDay out into hook
      chat log: add prettyDayAndTime to author
      chat log: remove extraneous divs around conditional components in ChatMessage
      chat log: add usePrettyDayAndDateAndTime, trigger with hover on author
      chat log: fix chat message storybook/test for timestamps
      chat log: switch to css hover states
      chat log: move usePrettyDay* to utils.ts, change to makePrettyDay*
      chat log: use opacity rather than hidden/visible for timestamps
      chat log: bump padding in author and datedivider
      chat log: move date string to the end of author timestamp
      chat log: make sigils a bit smaller
      chat log: tighten up the padding on all rows
      Add husky
      Remove import of empty utilties.css, was causing issue with tailwind config
      Don't lint-staged css files
      Add tailwindcss-scoped-groups for nested group util
      Add bg change on hover, add ChatMessageOptions
      Run npm i -D esbuild to fix deploy issues
      Add note about husky to the readme
      Remove extraneous arrow func
      Make icons more versatile and reduce filesize
      Fix spacing/padding issues around chat message options icons
      Make IconButton accessible
      Switch from tailwindcss-theming to tailwindcss-theme-swapper
      Line up message content with @p
      More style cleanup around message rows
      Make HashIcon square
      Fix issue with option label
      Remove unused import in ChatContent
      Update snapshot
      chat log: Fix a few more padding issues
      chat message options: Center elipsis icon in container
      chat message options: set pointer-events to none on iconbutton label
      chat message: clean up reaction style
      chat message: Add ChatImage block content
      chat message: Update ChatImage to match disc. unions compatible w/urbit
      chat message: Set 600 as default max-width
      chat message: Add border radius to chat images
      chat message: Address ed's feedback
      ops: Add --fix option to lint in precommit hook
      ops: add git add to lint-staged commands
      ops: Run npm lint:fix
      ops: Remove 'git add' from lint-staged per lint-staged docs
      ops: Add tsc to lint-staged
      ops: use npm run scripts in lint-staged
      ops: run tsc only on ts files
      ops: Use tsc-files for typechecking individual files on precommit
      ops: Run tests before lint-staged in pre-commit
      ops: Add vite/client to tsconfig types
      ops: Add vercel.json w/rewrites rule, forces use of react-router for all routes
      Add %contact-store
      dms: start new DM
      dms: add mocks
      dms: Add some better/more detailed contacts to mock store
      dms: run lint
      dms: add filter related boilerplate for later
      dms: allow user to send DM immediately after adding valid ship
      dms: remove avatar from ship tags in new dm select (to match figma)
      dms: fix some style issues around react-select input
      dms: add some more mock contacts
      dms: change sip tag label background to gray-100
      dms: rename SigOption to ShipName
      dms: new dm input box style tweaks
      dms: add NewMessageIcon and new dm button to sidebar
      dms: lots of style updates + dark mode fixes for react-select
      Add invite mock
      Move DM invite into its own page
      dm-invites: match DM header to figma
      dms: pass navigate func as prop to chatinput
      Add new 'huge' size for sigil avatar, allow non-icon sigil
      dm-invites: add basic accept/reject page
      dm-invites: add decline 'are you sure?' modal
      dm-invites: match pending dm state in sidebar to figma
      dm-invites: fix modal size issues on mobile viewports
      dm: cleanup dm header styles
      dm: cleanup pendingDMs variable name in mocks
      dm-invites: address james's feedback on styles
      dms: Allow user to add valid patps not in contacts as DM participants
      Add chatdesk toplevel dir
      Add vite config to new eslintignore file
      chat split: add new chat modes, scripts
      chat split: switch routing scheme based on mode (IS_CHAT?)
      chat split: fix typo in build script
      chat split: add chatstaging mode
      chat split: add missing cases to app.tsx
      Update ui/src/components/icons/AsteriskIcon.tsx
      Update ui/src/components/icons/AsteriskIcon.tsx
      Update ui/src/components/icons/BulletIcon.tsx
      Use bounded box caret down icon
      Fix padding around caretdown in sidebar
      Add pinned label to DM sidebar
      Add pinnedDMs state
      Add PinIcon
      Handle pin/unpin, don't show pinned DMs outside of pins
      Ensure dropdown label in message sidebar aligns with other items
      Add default gray background to dropdown menu, revert padding changes
      Add contact nickname from contact-store to ShipName
      Add option showAlias prop to ShipName
      Add group pinning state, mocks, handlers
      Add pinnedDM check back to MessagesList filter
      Add pinned groups to group sidebar
      Add pinned groups to group mobile sidebar
      Move isPinned into component scope, conditionally render pin/unpin label in dropdown menu
      Update development doc, move to root of repo
      Add react-dnd
      Add another consistent mock group
      Add basic drag/drop to GroupList
      Downgrade react-dnd, avoid compat issue w/react 18
      WIP: persist ordered pins to backend/app settings state
      Move DM invite dialog out to its own component
      Add 'Invite' option/dialog to DMs
      Add updated mockServiceWorker.js
      Update DmInviteInput to allow for multiple ships
      Add ability to add multiple ships from DmInviteDialog
      Add div toggle prop to Sidebar, make GroupItemContainer a list item
      Use wrapper const rather than extra component in SidebarItem
      Format Search.tsx
      Allow user to invite other ships to existing multiDM, remove invite option from single DM menu
      Fix cancel button
      Add ClubDeltaAddHive case to initializeMultiDm
      Remove unnecessary promise.all, then chain
      Update/fix handlers around multiDM subscriptions
      Update mock-http-api
      Add import aliasing to project, show example in Sidebar
      Install prosemirror view, fix failing lint
      Set skipLibCheck to true on tsconfig
      Move NewGroup to dialog, toggled from Sidebar
      Move new group dialog into SideBar component
      Add useStep hook
      Add new NewGroup component, build first step component
      Add NewGroupForm as second step
      Flesh out form a bit more
      Add ColorBoxIcon, clean up styles
      Add EmptyIconBox, naive implementation of setting group icon color
      Remove errant tsconfig
      Switch to ColorPicker for hex code input
      Fix issues with colorpicker input managing its own state
      Use form state to drive colorpicker in NewGroupForm
      Clear color icon state on cancel
      Add image icon preview
      Update all import in touched files to use aliases
      Move dialog/dialogconent into NewGroup
      Fix padding, add divs for TemplateOrScratch
      Move next/prev buttons into NewGroups step components
      Add NavigationDots
      Use router for open/close state on NewGroup modal
      Account when setting defaultColor for colorpicker
      Preserve backgroundLocation when opening NewGroup modal
      WIP, Add naive NewGroupPrivacy component
      WIP, add icons
      Disable next butotn on step 2 if no icon is provided
      Add selectedPrivacy state
      Make PrivactySettingRow a button rather than a div
      Remove form tag, we'll handle form submission manually
      Update icons
      Add template type state
      Add single ship mode to ShipSelector, WIP
      Add initial stab at NewGroupInvite, WIP
      Clean up state, add dropdown
      Add sortBy to GroupMemberRoleList
      Fix ship selector style issues
      Make a few style tweaks
      Make patps in ship invite list bold
      Update based on backend group-create changes
      Fix ship selector in new DM, fixes #382
      Po/fix ship validation in ship selector
      Po/fix hidden member role in member management view
      use toTitleCase from utils
      groups: Ability to leave group
      groups: address design for group leave
      Hide groups already joined and in pending claim state from join list
      Add pending group join popover
      Use group state's reject handler to handle canceling pending group join
      Make a new hook for pending gangs without claim
      Address urcades feedback, make popover mobile-friendly
      Fix duplication of pinned groups
      Fix missing chat channels in chatstead
      Add new buttons to ChannelHeader for heaps
      Setup basic grid, naive image/oembed renders
      Add list view for collections
      Add heaps to mocks
      Flesh out HeapRow
      Fix channelheader import
      Persist displayMode and sortMode to settings-store
      Add settingsPoke mock handler
      Chat: fix bug where group channels aren't rendering
      Bump testing-library version for patch
      WIP: enhance embed thumbs
      Attempt fix for matchesNode error in prod deploy
      Flesh out twitter thumbnails
      Flesh out other oembed thumbs in grid
      Flesh out oembed thumbs in HeapRow
      Account for links, images, music
      Fix twitter icon issue
      Attempt to fix matchesNode issue
      Attempt to fix matchesNode issue on switching chats
      Chat: fix unsupported channel type bug
      Clean up grid, allow thumbs/titles from other oembed providers
      Fix bug introduced with route refactor
      Add edit/delete submenu to grid items
      Clean up HeapRow
      Fix type issue in HeapRow
      Fix matchesNode issue on chat threading
      Add messageEditor.isDestroyed to HeapTextInput useEffect
      Clean up Heap components
      Clean up loading states in grid and row views, remove Suspend
      Remove suspense, HeapLoadingBlock from HeapChannel
      Make embeds look nice in detail, improve mobile formatting
      Fix type def issue on embed functions
      Add audio player to detail view
      Update ui/src/heap/HeapAudioPlayer.tsx
      Fixes from bad push to master, plus added copy functionality to heap block/row
      Add heap/writ references to chat messages
      Match designs for chat references, split out into separate components
      Add initialize for linked channel and loading spinner
      Only call noembed when it could be an embed
      Use isValidURL to check for url before fetching from noembed
      Only show loading spinner if it's a URL
      Match curio references in chat to figma
      Add icons to content references in chat
      Add note references to chat
      Add note image to note references
      Switch to Link component for read more button
      Fix loading issue on heap rows
      WIP: scroll to message in virtual scroller
      Fix scrollToIndex to work with new VirtualScroller implementation
      Remove refToken from note reference, use link in curio ref
      Check for new scrollTo in componentDidUpdate in VirtualScroller
      Update note reference styles
      Only show unread date divider if there is actually an unread message
      Remove link to notifications from chatstead sidebar
      Add toast notification for published new note to diary channel
      Put navigate inside setTimeout in newNote useEffect
      Chat: remove reply action
      Chat: handle references to unsubbed groups
      Chat: remove reply action
      groups: mark join notification read when joining from non-notification
      chat: remove unknown avatar icon from pending chats, use sigil
      groups: show default sidebar when GroupSidebar can't render in some situations
      chat: fix error with loading ref to private curio in another group
      chat: fix error with loading notebook refs
      chat: fix several issues with drafts
      talk: persist message filter in settings store
      groups: persist groups and channel sorts in settings store
      remove old useState code in useSidebarSort
      fix ternary in return object for useSidebarSort
      fix type issue on setSortFn
      Use sortFn rather than sideBarSort in sortRecordsBy
      groups: set notifications sidebar item as active when at default route
      update test snapshot, lint cleanup
      groups: set heap display mode in settings store
      groups: add ability to remove potential invite from invite list on new group creation
      chat: add image upload to chat input
      fix type issue in upload.tsx
      Add loading and error states
      Prevent double encoding of urls and account for spaces in regex
      Fix condition on showing upload button
      Make uploadFile more readable
      Fix type in upload/storage
      Update popover error design
      Update ui/src/dms/MessagesSidebarItem.tsx
      chat: fix issue where S3 urls would seem to persist as drafts
      chat: fix missing special characters in image url regex
      handle frontend disconnects
      remove unused import in disconnect notice component
      don't export setupAPI, not useful
      only retrive groups if we're actually looking at a group
      Remove errorCount from app.tsx, revert scry changes in api.ts
      Chat: fallback to 'find groups' is join failes on group ref
      groups: fix for double listing of matched value in join ship selector
      groups: fix for collision caused by channels using the same channel flag
      remove unused imports
      Check for existing channels for all channel types
      Switch to random small int from date timestamp
      Groups: show private group join requested in group reference
      Use button.text from useGroupJoin
      Fix scroll position issue when switching chats
      Add top padding for new author chat messages
      Update chatmessage snapshot for tests
      Add padding to last message in chat scroll
      groups: fix for jumping/mis-ordered admin channel list
      add updateGroups method, use it in moveChannel method
      chat: use scrollTo to scroll to messages, fix thread exits
      use time rather than idTime for returnUrl
      Apply same fix to single ship selection that was applied to multiple
      Catch disconnects caused by subscription errors, use errorCount
      Move setting of client.onError to setupAPI func
      Add airlockErrorCount, make use of 'reconnecting' status
      Make sure we only show a recent channel for this particular group
      Remove unused JoinGroup component
      Add loading state for all group joins
      Add loading state for group indo edit
      Add loading state for group deletion
      Add loading states for member role changes
      Add presig to patps for index call in FindGroups
      Address hunter's feedback on loading states
      Clean up ChannelManagerHeader
      Add loading states for channel creation
      Add loading state for editing a channel
      Add loading state for section edits
      Add loading state for deleting channels
      chat: Use useWritByFlagAndWrit for all writ references
      chat: fix link to message (use time)
      Add z-index:10 for dropdown class in components.css
      groups: Add presig to invite modal
      groups: Route to channel index by default if no channels joined
      groups: Add zindex to 'joining group' popover
      groups: Fix overflow issue in New Group modal in safari by setting a definite width on dialog
      groups: Prevent refs from loading while scrolling
      make isScrolling prop optional on ContentReference
      make isScrolling prop optional on ChatContent
      chat: Remove copy ref button from DM messages
      update test snapshot
      Update ui/src/chat/ChatMessage/ChatMessageOptions.tsx
      Pass isScrolling prop into each ref type, only load if not scrolling and not loaded
      heap: store links as link content type
      groups: Show default cover import (0x0) as default cover color
      chat: Handle code block input/display
      address urcades feedback on codeblock padding
      Use lodash for findLastIndex to fix tscheck on test
      add new codeblock icon
      Fix padding issue on one-line code blocks
      remove console log
      heap: fix titles for links in detail view
      chat: fix persistent loading spinner in multiDMs
      groups: allow user to see host ship profile from find groups
      chat: clean up chat input toolbar based on urcades feedback
      Update ui/src/components/References/WritBaseReference.tsx
      Update ui/src/state/groups/groups.ts
      Remove HeapDetailHeaderDescription
      Update ui/src/state/groups/groups.ts
      ops/meta: remove prerelease notice
      refs: show when content has not been migrated yet
      Diary: filter out empy text nodes in wrap paragraph
      Diary: load diary note before calling useNote in editor
      Diary: fix lists in editor
      Bump docket versions
      Send empty string title on new links
      Update desk.docket-0 to 1 0 3

james acklin (11):
      Update ChatUnreadAlerts.tsx
      Update ChatUnreadAlerts.tsx
      meta: add landscape-dev instructions
      Update ui/src/components/ShipSelector.tsx
      Update ui/src/components/ShipSelector.tsx
      meta: update README
      Delete user-story.md
      Update ui/src/profiles/ProfileCoverImage.tsx
      Update ui/src/components/Sidebar/Sidebar.tsx
      groups: update image regex
      Update bug_report.md

nerveharp (1):
      Update issue templates

rabsef-bicrym (1):
      fix for checking group before creating diary, chat (#1021)

rcrdlbl (259):
      added 'clear formatting' button to ChatInputMenu
      created false default for isActive and isSelected on ChatInputMenuButton
      changed clear button to text, accompanying CSS edits
      extra padding to textbutton to align more with normal buttons
      removed unused x icon import
      mobile view: text formatting tools now appear below input field
      jsDOM feature mock to keep tests running smoothly
      keyboard focus fixes, exit button added to URL input
      ChatInputMenuToolbar broken into seperate file
      small padding update in ChatInputMenuToolbar
      WIP: sidebar built out to work as seperate from URL route
      fixed route issue
      equalized sidebar widths
      fixed sidebar width changing on select
      added persistence for group navigation
      updated linter snapshots, ran linter
      added useEffect to groups.tsx, removed flag from useNavStore
      wip: group info dialog
      group info modal: working on desktop
      initial mobile fixes
      fixed safari modal oversize
      nav: normalized modal width
      correct dropdown > modal interaction flow
      import cleanup
      safari dark-mode only text selection override
      moved css definition to base.css
      wip: created stub UI for modal
      Merge master in for multi-dm state
      first pass at color picker
      new chats are now placed at bottom of screen
      reverted capitalization change on layout imports
      conditional rendering of auto margin
      built out color picker
      stubbed out empty search page, new search route
      added info and edit options to MultiDM Options
      modal now submits
      requested review changes
      added color field to mock handlers
      useMultiDM implemented in info form, isMulti boolean in DMOptions
      using inbuilt react-select focus property
      removed redundant background application
      using css color variable
      pending groups now don't open options in sidebar
      changed pending prop to use isAccepted in dm and multidm
      restored chatinput test snapshot
      pending invite dropdown
      removed safari button rendering issue
      basic channel list item UI
      wip: drag + drop, section pokes
      pokes for autojoin and zones
      wip: edit chat name
      fixed typeerrors in mocks
      linter updates
      default switch submits info
      wip: permissions dropdown
      replaced drag n drop library
      wip: section layer
      wip: prevent dragging channel outside section/vice versa
      multi-layer drag and drop functions
      type/file location cleanup
      edit/delete section
      cleanup/section field placeholder
      wip: New Channel Form
      wip: adding, deleting channels and sections
      new section drop tools, visual updates, minor reordering bugs
      update snapshots, add polyfill for resize-observer to prevent tests failing
      wip: optimistic updating
      frontend behavior complete
      updated snapshots
      updated variable names to be more accurate, channel flag derivation
      using channelFlag everywhere it should be used
      Default channel conditionally rendered, changed addOrEditChannel to editChannel
      design and interaction feedback
      view profile: first pass
      updated snapshots
      package-lock created with npm 8.12.1
      added profile link to member list avatar for admin
      modal footer no longer gray
      footer is no longer gray even if there's no contact-store entry for the ship
      wip: sidebar user info debugging
      wip: sidebar user info debugging
      WIP: Profile editing  – missing groups
      group add/remove
      linter run
      Update ui/src/components/Sidebar/Sidebar.tsx
      wip: channel manager backend-frontend interaction
      code feedback + group add/delete stability improvements
      header/avatar field default value
      wip: channel deleting + zone reordering
      first pass at backend integration of channel/zone ordering
      sidebar and channelIndex now respect admin-set order
      added variables to tests, updated snapshots
      remove unnecessary exclude from tsconfig
      changed default zone key to 'default'
      snapshots updated
      code style feedback
      linter run
      wip: pre-merge
      wip: heap detail view
      heap: comment list
      copy icon updated
      code style updates from feedback
      collections: layout fixes, heap state initialized on detail page visit
      moved sidebar out of own file
      handled switch to embed state in type info hook
      implemented user dark mode preference in theme-color meta value
      sidebar nav link fix
      sidebar channel list now filters out unjoined groups
      group selector on profile search no longer autofocuses, autofocus option added to groupSelector
      mobile view fixes, main nav width fix
      updated snapshot
      Revert "updated snapshot"
      Revert "homestead: [skip actions] update glob (0v50c5m.mcj3a.fs4mg.t06sg.cadb0)"
      Revert "Revert "homestead: [skip actions] update glob (0v50c5m.mcj3a.fs4mg.t06sg.cadb0)""
      Revert "mobile view fixes, main nav width fix"
      mobile view fixes, main nav width fix
      link truncation fix
      sidebar info spacing fix, removed elipse menu
      removed unnecessary time call from HeapDetail
      moved filtering logic to hooks/utils
      copy edits throughout
      updated terminology
      delete tsconfig.json
      first run: nav animation
      removed animations from mobile
      switched react-spring to framer-motion v6.5.1, changed animation
      fixed disappearing sidebar
      fixed mobile hidden nav settings
      inChannel added to mobile check
      removed redundant mobile nav check
      diary: grid view
      new placeholder images
      diary: list view
      switched share icon to copy
      added sorting-related boilerplate, implemented sort by old/new post on frontend
      re-inserted group header
      removed unnecessary asChild prop from sort controls
      added key to diary list view
      changed title and app icon to read Talk instead of messages
      update to desk file
      removed placeholder image URL from image form
      added fallback colors for when there's a broken cover image
      use the fallback colors if CORS is broken for the header image
      enable submitting a message with an attached reference and blank text
      changed order of app title and page info
      used radix-ui for chatmessage tooltips
      changed grid to fill-auto and not fit-auto
      updated test files
      changed grid resizing and block items to take up full width of container
      linter run
      moved container div definition to HeapChannel
      updated system message styling, fixed accidental HTML execution in ICONS document
      fixed multi-DM avatar, multi-DM filtering in talk, new DMs redirecting to wrong URL
      set header to z-index 50
      fixed navbar disappearing on window resize
      loading state for buttons
      disabled template page in new group form, copy update
      updated snapshot
      added non-null check for section list sorting function
      removed placeholder images and image upload button
      added option to sort curios alphabetically
      if group title text is white, use drop shadow
      added DMOptions dropdown to group chat channels
      set shipSelector padding to avoid size jumping
      now using intersectionObserver to mark channels as read once the divider appears on screen
      set specific width for filtering dropdowns
      set active items one shade darker
      disabled hover color on active state
      updated snapshot
      updated list spacing to y-1
      removed duplicates in pending list, removed pending members from member list
      flipped public/private logic on editing field
      deleted tsconfig backup json file
      using react.forwardref on DateDivider
      chatState re-write, sentMessages array, isMessageDelivered hook
      snapshot update
      frontend to-spec with mocks
      updated snapshot
      posted to client, not delivered state
      code feedback cleanup
      added .reverse to DM filter
      updated styled paragraph test to test for a paragraph and not a single word
      changed tiptap logic to avoid inserting breaks into the middle of a paragraph
      changed tiptap logic to avoid inserting breaks into the middle of a paragraph
      preventing errored joins from appearing in the sidebar
      updated test snapshot
      refactored to use old groups doCopy API
      reverted usehooks-ts version to 2.6.0
      reverted usehooks-ts version to 2.6.0
      updated justCopied to didCopy
      reverted package-lock
      changed nav/main content layout to enable scrolling
      added required value to name field, added required: false to all others
      wip: group cover/icon preview component
      group info fields, new color/image picker design, fixed navigation dots
      group privacy selector visual updates
      group creation flow rework
      moved eslint disable post-lint
      globe icon replaced
      fixed multi-DM use of image or color field
      removed unused imports
      added default setting to channel creation submit action
      added copy functionality to author component
      updated test snapshot
      changed modal to follow top
      added inline to string parsing for proper title previews
      changed default title for untitled images in header
      set field focus target on heap text input to entire input
      disabled CSS hover on touchscreens
      allowed click to select diary node from dropdown, allowed up/down arrow keys to exit image block
      removed chat code block overflow issue
      changed content preview in heaprow to prevent mobile overflow
      prevented overflow on long notifications
      prevented insertion of extraneous newlines into notebook posts
      added apple-touch-icon to header
      changed back button behavior on mobile for Talk
      added feedback menu to talk
      added placeholder to URL field
      implemeted s3 uploader in notebook header
      changed header title
      created image/url upload field, added to profile editor
      added image upload to new group page and DiaryImageNode
      added image upload field to new curio form
      replaced globe icon with open lock icon
      disabled autofocus on mobile
      introducing globe16icon
      bottom margin on link input
      profile/edit: cover image preview update, field height fix
      fixed color field width jumping
      profile modal – cover updated
      removed unused assignment
      updated color/image input field to account for empty default values
      updated dropdown styling, fixed channel header dropdowns (incorrect library)
      linter run
      restructuring of chat thread
      fix broken title value, code cleanup
      emojipicker mobile ruleset
      emojipicker mobile ruleset
      heap input scroll enabled
      added check for background location match
      changed sidebar scroll behavior
      changed sidebar scroll behavior
      mobile nav updates
      mobile sidebar fix, scroll fix
      updateValues on diaryImageNode
      padding normalized
      updated test files to account for missing useVessel hook in chatIndex
      changed emoji picker popover to come out of left side of trigger
      changed truncation css class
      fixed truncation on mobile, various visual fixes, fixed mobile link input
      updated PWA manifests, added bottom spacing for standalone mode
      removed duplicate manifest in header
      added not-prose to writ ref
      added not-prose to more refs
      fixed emoji picker screen collision issues
      portalled emojipicker content
      actually using the group privacy

ryjm (41):
      docs: minor grammar/style edits
      chat: fix state migration
      update marks
      groups: version negotiation
      migrate `net`
      diary: versioning
      chat: lib/epic/hoon -> sur/epic/hoon
      diary: address PR feedback, remove state mig
      diary: re-order state/epic to match chat
      diary: give new epic when it's not cool
      groups: remove state mig and address feedback
      groups: only speak good news when it's not okay
      diary, groups: remove %load, update %sub
      groups: `go-start-sub` -> `(go-sub load.net)`
      groups: formatting
      groups: `?-` to `?.`
      heap: version negotiation
      groups: handle %pub update
      update marks
      chat: update marks
      chat: atone
      chat, diary: intercession
      ops: raze all agents
      all: save bad state to /put
      chat: dangling tis
      chat: fixes
      chat: okay cool comment
      groups: remove erroneous %sub check
      heap: keep
      diary: keep
      groups: avoid alien ships for now
      diary, heap: actually keep
      groups: formatting
      diary: keep arm
      heap: keep arm
      diary, chat, heap: epic conditional and tests
      migration: %bait placeholder
      groups: admin fix
      groups: flip condition and rename
      groups: update other go-init call site

tomholford (232):
      devex: peg node version
      devex: add tests
      devex: add snapshot testing lib and example
      devex: CI pipeline using GH actions
      devex: update CI working directory
      devex: fix working-directory path
      devex: another attempt to fix CI
      devex: fix package-lock
      devex: add eslint + lint stage to CI
      devex: resolve lint issues
      deps: bump @tloncorp/eslint-config
      wip: App Shell / Layout component
      devex: address PR feedback
      devex: add ui/README and dev guide
      ui: fix storybook import
      wip: ChatMessages virtual scroll
      ux: threads start scroll from top
      ux: port groups1 scroller
      devex: resolve lint and tsc errs
      vscroll: fix wheel scroll handler,  address lint
      chat: address vscroll PR feedback
      chat: fix vscroll average height
      vscroll: address PR feedback:
      chat: refactor mock data; fetch older msgs
      scroll: start at bottom, follow new msgs
      scroller: address PR feedback
      scroll: fake scrollbar follows direction
      scroller: fix reflow offset calc
      scroller: fake bar fills whole screen
      scroller: resolve tsc errors
      devex: allow unused args prefixed with _
      scroller: hide loading spinner at start / end
      sidebar: Search, Join, Create Groups  match design
      sidebar: sort groups list by A->Z or recent
      sidebar: address PR feedback
      sidebar: channels sidebar implements Design spec
      sidebar: address PR feedback
      ui: fix focus state, sidebar sorter occlusion
      sidebar: groups actions dialog
      sidebar: styling, layout, integrate w/ Nav changes
      sidebar: show kebab button when menu open
      sidebar: enhanced dropdown styling
      sidebar: address PR feedback
      sidebar: copying link shows confirmation
      sidebar: fix hover opacity styling
      multi-dms: add Club pokes and types
      multi-dms: add poke and type for sending (#262)
      multi-dms: add to zustand state
      multi-dms: simplify chat state interface
      wip: initiate multi-dm
      wip: updated MEssage route, MultiDm TODOs
      wip: initiate multi dm by entering multiple patps
      multi-dm: navigate to MultiDm and show title
      multi-dm: address PR feedback
      multi-dm: pr feedback re: whomIsFlag
      multi-dm: enhanced UX for entering multiple patps
      multi-dm: keydown handler backspace behavior
      multi-dm: can start with Enter or Send
      dm-input: restore click on option behavior
      devex: rename Option --> ShipOption
      dm-input: memoize contacts for improved perf
      devex: replace `any` with FieldValues form type
      devex: fix UseFormRegister types
      ux: ShipSelector perf enhancement
      ux: ShipSelector prefers nicknames
      ux: ShipSelector search uses nickname + patp
      vscroll: load newer messages onScroll
      channel: add create channel modal
      groups: first pass of channel index view
      channels: join from Index view
      channels: title links to Channel from Index
      channels: index uses Briefs to determine joined
      pr: remove ChannelManager placeholder
      pr: button and section styling tweaks
      test: add chatinput test snapshot
      gangs: update design, prep for reject modal
      gangs: reject confirmation modal flow
      deps: add usehooks-ts
      gangs: option to skip future reject confirmations
      logic: use regex for `whomIsFlag`
      test: add single char term case
      logic: use regex for `whomIsFlag`
      test: add single char term case
      groups: refactor Find flow
      channels: Leave a Channel from Index view
      chat: more placeholder images
      chat: add title to Test Image button
      groups: remove Create Channel sidebar action
      api: stubbed Groups Index endpoint
      groups: revamped Join Grop flow
      devex: fix storybook alias resolution
      groups: filter Secret groups from search results
      ui: Groups Join loading state placeholder
      pr: style feedback
      api: integrate with backend /gangs/index endpoint
      gangs: separate Invites from Search results
      groups: Join by Nickname, @p, or Invite URL
      groups: simplify search result display logic
      groups: timeout when unable to query host index
      groups: Find Groups styling feedback
      sidebar: fix Groups / Channels sorting
      sidebar: fix Groups --> Recent sorting
      pr: address feedback - use namespace imports
      devex: fix imports after rebase
      groups: fix sticky Find view
      groups: restore and simplify Join behavior
      devex: fix typo in comment
      groups: re-restore Join behavior
      groups: after leaving, redirect to root route
      groups: consume %invite-reject endpoint
      invites: reflect backend renaming
      channels: clickable rows, semantic HTML
      groups: update `zone` types
      groups: address `tsc` errs
      pr: address feedback on `idx` type
      channels: refactor Index to reflect Zone schema
      channels: sorted ChannelIndex
      channels: update ChannelIndex icons for heaps
      collections: use Shapes Icon
      icons: add Notebooks icon
      sidebar: refactor Sorting hooks
      messages: refactor Sorting behavior
      sidebar: Channels sidebar buckets by Zone
      sidebar: handle empty ChannelList empty state
      sidebar: simplify defaultSort
      heaps: HeapInput component
      heaps: add Heap - List mode styles
      heap: [wip] add rich text
      heaps: render Rich Text curios
      heaps: styling
      heaps: ux enhancements
      channels: use heap icon in sidebar and admin list
      diary: update ChannelIcon to support Notebooks
      heap: persist input drafts
      channels: indicate unreads in sidebar
      channels: simplify unread logic
      channels: dismiss unread notifications on view
      channels: address PR feedback for Unread hook
      groups: sidebar unread indicator
      heaps: hoverable carousel buttons in detail view
      groups: sidebar unread PR feedback
      heap: address PR feedack
      heaps: edit curio modal and flow
      ui: display title when in list mode
      devex: clean up before major refactor
      heaps: more cleanup and prep for edit refactor
      heaps: edit curio modal uses Rich Text
      heaps: remove extraneous changes
      heaps: keyboard navigation for carousel
      devex: address PR feedback
      devex: more cleanup
      ci: address linter errs
      devex: remove extraneous package locks
      devex: forward ref for ChannelHeaderButton
      input: add test for tiptap#parseInline
      deps: upgrade vitest
      test: more coverage
      tiptap: fix parser, add test suite
      test: suppress unrelated Hark test
      deps:  bump vitest
      parser: refactor wrapParagraphs, add tests
      groups: accepting invite navigates sidebar
      groups: accepting invite navigates sidebar
      tiptap: jsonToInline test coverage
      tiptap: refactor JSON serializer
      devex: replace magic number
      tiptap: update codeblock node type
      deps: add codeblock extension + lowlight
      diary: codeblocks in editor
      diary/note: codeblock in published note
      diary/note: remove lowlight, prep for prismjs
      tiptap: unify diary + json inline serializers
      lint: resolve tsc err
      diary/note: embeddable web links
      diary/note: fix link input styling
      idiary/note: edit mode prism syntax highlighting
      diary/note: code block language picker
      perf: reduce supported languages to common + hoon
      perf: suspend DiaryNoteEditor to shrink bundle
      heap/ux: esc key to nav from detail to index
      perf: fix Ref re-renders
      groups/sidebar: render placeholder while loading
      heap/ux: smaller button targets
      docs: more readme tweaks
      ux: add Alpha Notice
      ui: address PR feedback
      devex: simplify notice
      devex: add scripts and config for use with bouncer
      fix bin script paths
      devex: one more paths fix
      devex: update gitignore
      groups: prototype secret
      groups: secret group flow
      devex: update glossary for bloc
      groups: filter secret groups from search results
      groups: editable privacy
      groups: edit group privacy --> secret
      groups: previews accommodate secrecy
      pr: address feedback
      groups: editing Group privacy swaps cordon
      groups: WIP migration for groups-0 --> groups-1
      groups: 0-to-1 migration [wip]
      devex: address PR feedback
      devex: address PR feedback
      groups: suppress superfluous notifications
      groups: suppress superfluous notifications
      ui: mobile styling for New Groups modal
      channels: fix recent sort in sidebar
      text: fix failing test
      ui: fix modal backdrop on mobile
      channels: sort recent applies to all channel types
      test: fix broken Sidebar test
      vscroll: remove oldWhom / indexData
      scroller: deep link to chat msg
      chat: click unread banner to go to first unread
      scroller: restore pre-pending behavior
      style: shade deep links as G1 blue
      scroller: remount when switching channels
      scroller: attempt to fix mobile jank
      scroller: fetch all unreads on load
      unreads: reuse getFirstUnread hook
      notice: consistent localStorage keys
      channels: refactor pre-fetching behavior
      perf: dynamic scroller page fetching
      deps: upgrade react-virtuoso 2.19.0 --> 3.1.4
      scroller: refactor scrollTo behavior
      multi-dm: pre-sig ship names
      heap: empty curio title to pass backend validation
      heaps: fix posting and viewing app refs
      heap: app ref styling for curios
      heap: address PR feedback
      chat: fix double sig on mentions

~midsum-salrux (6):
      Require can-read to watch chat
      Split off go-can-read and check watch-chan
      scry ames on /peers instead of /peers/[ship]
      Send hi to alien ships
      Handle helm poke ack
      Hi and subscribe

édouard (1):
      edit padding of DateDivider to 'py-4'

Liam Fitzgerald

Dec 9, 2022, 12:42:39 AM12/9/22
to urbit-dev
This is currently releasing across the network:
Base hash for %landscape:
Base hash for %groups:
Base hash for %talk:

Liam Fitzgerald

Dec 9, 2022, 2:11:28 AM12/9/22
to urbit-dev
A hotfix has been pushed for %landscape, new base hash:

On Fri, Dec 09, 2022 at 15:42:35, Liam Fitzgerald <li...@tlon.io> wrote:
This is currently releasing across the network:
Base hash for %landscape:
Base hash for %groups:
Base hash for %talk:

Reply all
Reply to author
0 new messages