Sign in
Join now
scn-chat
sharedcomputer.network
/
Star
Starred
Star
Something went wrong. Try again.
Fork
0
Eye filled
Watch
Watching
Watch
ATProto-based AI Assistant Chat interface.
Star
Starred
Star
Something went wrong. Try again.
Fork
Eye filled
Watch
Watching
Watch
Overview
Overview
Issues
Issues
1
1
Pulls
Pulls
Pipelines
Pipelines
scn-chat
/
apps
/
web
/
src
/
features
/
conversation
4 folders
·
3 files
at
main
pouriade.com
·
Split SidebarLayout into the chats and settings layouts
·
5d ago
bfe35094
components
Mark Jump to's layer as leaving with a boolean
5d ago
hooks
Add Edit tags and Delete to the chat header's menu
1w ago
lib
Regenerate a reply as before through one helper
5d ago
pages
Split SidebarLayout into the chats and settings layouts
5d ago
attachment-types.ts
Load less and rerender less. The new-chat page no longer downloads the Markdown renderer: the conversation and the search results load with React.lazy, the chat route's loader starts the conversation's download, the new-chat page starts it once it shows, and opening the search starts the results', so what / downloads drops from 335 KB to 184 KB with brotli. Streamdown imports rehype-raw for its defaults, which markdown.tsx leaves out, so vite.config.ts aliases it to an empty stand-in in parts/no-raw.ts, keeping parse5 out of the build and the Markdown chunk from 163 KB to 71 KB gzipped. The logo's paths are rounded to two decimals, from 10.0 KB to 6.6 KB gzipped. The chat routes' loader starts the models, attachment types, and profile queries without waiting for them, and their head preconnects to the avatar's CDN. attachmentTypesQuery moves to its own module, so the loader doesn't bring the store's hooks into the entry. Pointing at or focusing a link preloads its route, the query cache deciding what is stale.
2w ago
chat.ts
The web app's message records are typed as the lexicon's MessageRecord, and a conversation's info as InfoRecord, from the local copy, which holds only records the server validated, through BranchMessage to the message, status, details, part, and tool views, so their reads need no casts. src/shared/message.ts holds what a status means, isPending and isFinished, which counts a status another client wrote that this app doesn't know as neither, along with a message's parts, whether it is encrypted, and who wrote it, in place of the checks written out in the message view, the message actions, the chat, the reply follower, and tool status. Tests build records with messageRecord in tests/helpers/records.ts, and the status rules are tested once.
2w ago
reply-follower.ts
A reply the follower followed since it was sent stops being followed once the local copy holds its final record, so what streamed of it, which can include whole fetched pages, isn't kept in memory beside the record until the chat closes. The follower's tests run through useChat over the test store, rather than mounting useConversation by hand and holding the messages in state, and a test checks a finished reply's stream goes. specs/web-ui.md says the follower refreshes through the store's refresh intent so the store's hooks know nothing of streams, rather than merging the two.
2w ago