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
/
tests
7 folders
·
3 files
at
main
pouriade.com
·
Open the Add a key form from a button
·
3d ago
b1f9c0f6
features
Open the Add a key form from a button
3d ago
helpers
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
parts
The menus on a chat, a reply, a table, and the conversation header are one shared Menu in shared/ui, imported as `import * as Menu`: a Root holding open and onOpenChange, a Trigger that is an IconButton, a Popup, Items, and a Separator, after the WAI-ARIA menu button pattern. The arrow keys, Home, and End move between items, Tab closes a menu and moves on, Escape closes it back on its button, and choosing an item closes it and returns the focus unless the item moved it, even when the focus was on the page, as in Safari. A reply's details now open as their own card from More rather than as a menu view. The account menu stays a popover, now opening on Settings and giving the focus back on Escape. IconButton gains action, row, and firm tones, with toggle, row, and small sizes, which the hand-built sidebar, header, and message action buttons now use, so MenuItem, ToolButton, and iconAction are gone. usePopover takes a Placement of align, anchored, and portal that Menu.Popup shares, along with its dismiss and focus rules.
1w ago
routes
Add a PNG favicon and the manifest's lang
1w ago
shared
Share relative timestamps as TimeAgo
3d ago
store
The browser store's seam has a second adapter. The worker exposes every StoreCore method through one guard in store/calls.ts, which fails while another tab holds the store and reports an ended session, rather than restating each method, and StoreClient holds them as calls rather than worker. testStore in tests/helpers/store.ts runs the same logic and guard over better-sqlite3 with a fake server API, and the component tests that built their own store, for the conversation, chat list, app, chat, reply follower, settings, and the store's hooks, use it, so they go through the real reads, syncs, and change events. The chat list's search tests check the list is visible again rather than only present, since it stays mounted while hidden.
2w ago
styles
Guard the design system's scales in the theme test
3d ago
App.test.tsx
Settings and admin forms keep Save disabled until the form differs from what was saved, and say "Unsaved changes" beside it until then. SaveBar reads this from its form's context, and a form that adds, such as Issue key or Add plugin, passes adds so it never says so. Leaving a page doesn't ask. Preferences now starts over from the stored record after a save, as the other forms do.
1w ago
setup.ts
Port the composer from design-reference. It is one card stuck to the panel's foot over a fade, with quotes and attachment chips at its top, a box that grows with its text and clears from its corner, and a toolbar of Attach, one quiet select for the model and its thinking effort in a submenu with timer pies, and Send, which Stop replaces while a reply runs. Files paste or drop anywhere on the conversation, Enter doesn't send on touch or while an input method composes, editing shows a banner, More quotes a reply into it, and a button above it jumps to the latest message. New chat goes to /, an empty conversation with starters whose first message creates the chat, reusing it when a send is tried again. The last effort is kept on the device, and ModelSelect and EffortSelect move onto the app's Select.
2w ago
sw.test.ts
The service worker test's request helper declares that it returns a response or null, so the type check no longer narrows it to null and fails.
1w ago