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
Commits on
web-rebuild
pouriade.com
d0ab79af
Copied
Failed
Copy SHA
Have components return early rather than return a ternary when what they render depends on a condition. The loading guards in the preferences, plugin settings, admin settings, and access pages show their error or nothing with two plain returns, ReplyStream, Text, Status, and the Markdown image renderer return early, and ConversationView picks each message's actions in an actionsFor helper in place of a nested ternary. CLAUDE.md states the
rule.
rule.
Copy SHA
Browse repository
committed
3w ago
pouriade.com
30e4dc65
Copied
Failed
Copy SHA
Share the sidebar page shell between the admin and settings layouts, and group the secret props on SchemaFields. SidebarLayout in src/shared renders the sidebar beside the current section, taking the sidebar's contents as its nav, so AdminLayout and SettingsLayout hold only their own links. SchemaFields takes one optional secrets prop in place of secretFields, secretsSet, cleared, and onClear, with the cleared list and its handler together under clearing, so a form cannot offer clearing without
both.
both.
Copy SHA
Browse repository
committed
3w ago
pouriade.com
c007df34
Copied
Failed
Copy SHA
Cover the web UI spec's acceptance criteria with tests and tick them off. New tests cover the server redirecting signed-out users before rendering, a viewer being sent from the settings to the login page while a shared chat still opens for them, creating a chat, uploading a PDF and sending it as an attachment part, scrolling to the bottom on send, syncing in a message written from another client, deleting an API key, and the background sync switch. The tool details test now checks that each summary is
collapsed.
collapsed.
Copy SHA
Browse repository
committed
3w ago
pouriade.com
f764916e
Copied
Failed
Copy SHA
Have React components take props: Props, declared as an interface, and read props.example rather than destructuring props in the signature. A component destructures only the values it builds other variables from, such as ModelSelect and EffortSelect passing the rest of their props to the select. Inline prop types became named interfaces, and CLAUDE.md states the
rule.
rule.
Copy SHA
Browse repository
committed
3w ago
pouriade.com
b42a9151
Copied
Failed
Copy SHA
Show a user's last active time in the admin users table only in the browser. The page renders on the server, where toLocaleString used the server's locale and time zone, so hydration never matched on a server in another zone and React rendered the page
over.
over.
Copy SHA
Browse repository
committed
3w ago
pouriade.com
c8b86cd1
Copied
Failed
Copy SHA
Group the web app's code by feature. Each folder in src/features (auth, chat-list, conversation, sharing, models, settings, admin) holds that feature's pages, layouts included, components, hooks, lib, and queries, and the routes stay thin, rendering a feature's page. Page files are named after the component they export. The query factories split from src/queries.ts into each feature's queries.ts, leaving staleTime in src/shared, which also holds the API client, errors, search params, and the schema forms that admin and settings share. inheritedModel moves from the models module to the conversation's branch module, so models no longer depends on the conversation. Tests mirror the new tree, and the specs, the architecture doc, and CLAUDE.md name the new
paths.
paths.
Copy SHA
Browse repository
committed
3w ago
pouriade.com
e02842d3
Copied
Failed
Copy SHA
Keep web app state in one place rather than in copies that go stale. The API keys page and the admin provider models read the listed models from their mutation, and the API keys page clears them when the provider, key, or base URL changes, so a key is no longer saved with models listed for another provider. The composer and regenerate hold the chosen model by reference, with ModelSelect handing back a ModelRef, and the composer takes no images for a chosen model no longer on offer. The users search box follows the URL's q, so the sidebar link empties it, while keeping focus after a search. Adding a plugin starts its fields over when the package changes, as its options already
did.
did.
Copy SHA
Browse repository
committed
3w ago
pouriade.com
9dcaf1f7
Copied
Failed
Copy SHA
Keep only the edited message's rkey in ConversationView, reading its parent and text from the conversation, rather than a copy of them. Renaming passes the header's onSaved as the mutation's per-call onSuccess, so the mutation takes just the
title.
title.
Copy SHA
Browse repository
committed
3w ago
pouriade.com
980c1e9f
Copied
Failed
Copy SHA
Say in the web UI spec that the plugins settings section explains itself when no plugin has settings or switches for the user, matching the change that stopped it rendering
nothing.
nothing.
Copy SHA
Browse repository
committed
3w ago
pouriade.com
a24e31f4
Copied
Failed
Copy SHA
Remove web app comments that only restate the code they sit
on.
on.
Copy SHA
Browse repository
committed
3w ago
pouriade.com
48e19571
Copied
Failed
Copy SHA
Show the plugins settings section with a note when no plugin has settings for the user, rather than rendering nothing, so the sidebar's Plugins link never opens a blank
page.
page.
Copy SHA
Browse repository
committed
3w ago
pouriade.com
2aa3f360
Copied
Failed
Copy SHA
Judge a NAT64 address by the IPv4 address inside it, rather than refusing the whole 64:ff9b::/96 range as private. On an IPv6-only network, DNS64 gives every IPv4-only host a NAT64 address next to its IPv4 one, and the guard refuses a host when any of its addresses is private. So sign-in failed at the callback, with "Refusing to connect to private network address 64:ff9b::d8c6:4f01", since resolving the identity reached the PDS, the handle, and plc.directory through the guard. Every other guarded fetch failed the same way. A NAT64 address hiding a private IPv4 address, like 64:ff9b::7f00:1 for 127.0.0.1, is still
refused.
refused.
Copy SHA
Browse repository
committed
3w ago
pouriade.com
320c87ce
Copied
Failed
Copy SHA
Merge main, bringing in the admin area from admin-ui: settings in the database instead of config.yml, roles, registration and access with viewers and suspension, plugin instances, and admin models. The server merges as is, apart from three fits to this branch: app.ts passes the app name from the settings store to Start with each request, in place of admin-ui's index.html templating; the viewer sign-in check looks for this branch's /shared/ links instead of /s/; and the development URL is port 3000, where the server serves the web
app.
app.
Copy SHA
Browse repository
committed
3w ago
pouriade.com
c152974b
Copied
Failed
Copy SHA
Add the sidebar's sections entry to the extending spec's recipe for a new settings section, since the link comes from that list in pages/settings/layout.tsx rather than from the
route.
route.
Copy SHA
Browse repository
committed
3w ago
pouriade.com
78f542e7
Copied
Failed
Copy SHA
Name the settings test groups after the settings page rather than SettingsPage, which no longer exists since the split into
pages/settings.
pages/settings.
Copy SHA
Browse repository
committed
3w ago
pouriade.com
2697aae6
Copied
Failed
Copy SHA
Split SettingsPage into pages/settings, with layout.tsx for the sidebar and one file per section, as the extending spec's component boundaries describe. The code moves unchanged, apart from two renames so each section's export matches its file, Device to SyncSettings and ApiKeys to ApiKeySettings, and the private Json alias written out as Record<string, unknown> like the rest of the web app. The routes and tests change only their
imports.
imports.
Copy SHA
Browse repository
committed
3w ago
pouriade.com
f2fdab2b
Copied
Failed
Copy SHA
Move the conversation's title, rename, sync, and share controls into ConversationHeader, the first of the extending spec's component splits. ConversationView keeps the rename and sync mutations and passes them in, so their errors stay in the conversation's one alert with stop and regenerate. Rename and sync gain tests, including one that a later stop clears a sync
error.
error.
Copy SHA
Browse repository
committed
3w ago
pouriade.com
af503ef0
Copied
Failed
Copy SHA
Give each reply its own Regenerate with choice. One state used to back every reply's model select, so picking a model on one reply changed them all. RegenerateAction now holds the choice, and the regenerate mutation takes the
model.
model.
Copy SHA
Browse repository
committed
3w ago
pouriade.com
1b3b8a95
Copied
Failed
Copy SHA
Keep the sidebar search on every chat route until it's cleared. Opening a result from the home page used to drop q, while opening one from a chat page kept it, since the box's Effect put it back. The chat layout now validates q and retains it with the router's
retainSearchParams.
retainSearchParams.
Copy SHA
Browse repository
committed
3w ago
pouriade.com
060ce95e
Copied
Failed
Copy SHA
Revert "Re-render only the messages a conversation change adds or changes, so sending, a stream ending, and a final record arriving leave the other messages and the composer alone. Each message is a memoized ConversationMessage with stable props, choose is a callback since React Compiler leaves a function that writes a ref unmemoized, and the composer's inherited model is worked out outside its props so the compiler can skip
it."
it."
Copy SHA
Browse repository
committed
3w ago
pouriade.com
5807c4aa
Copied
Failed
Copy SHA
Re-render only the messages a conversation change adds or changes, so sending, a stream ending, and a final record arriving leave the other messages and the composer alone. Each message is a memoized ConversationMessage with stable props, choose is a callback since React Compiler leaves a function that writes a ref unmemoized, and the composer's inherited model is worked out outside its props so the compiler can skip
it.
it.
Copy SHA
Browse repository
committed
3w ago
pouriade.com
9ffdd10e
Copied
Failed
Copy SHA
Re-render only the streaming reply on each stream delta, not the whole conversation. The conversation starts each stream but follows it only to learn when it ends, and a pending message shows its stream through ReplyStream in MessageView's new pending slot, which reads the stream query without starting it. Markdown loses its memo, which React Compiler now
covers.
covers.
Copy SHA
Browse repository
committed
3w ago
pouriade.com
65df9854
Copied
Failed
Copy SHA
Split the signed-in layout's Effect in two, one saving the time zone and one ending the session on an unauthorized response, so each depends only on what it
uses.
uses.
Copy SHA
Browse repository
committed
3w ago
pouriade.com
f1cfa64e
Copied
Failed
Copy SHA
Let React Compiler compile the composer and search snippets: count uploads in the upload mutation's callbacks instead of a try/finally, and work out each snippet piece's offset in a loop before
rendering.
rendering.
Copy SHA
Browse repository
committed
3w ago
pouriade.com
476da738
Copied
Failed
Copy SHA
Compile the web app with React Compiler, through plugin-react's Babel preset, in the browser build and in tests. Server rendering stays uncompiled, since it renders
once.
once.
Copy SHA
Browse repository
committed
3w ago
pouriade.com
d2f75b22
Copied
Failed
Copy SHA
Find the sibling picker's arrows by their new labels, Previous version and Next version, in the
tests.
tests.
Copy SHA
Browse repository
committed
3w ago
pouriade.com
6a9bad30
Copied
Failed
Copy SHA
Load React Scan in development, which outlines components as they render. It is pinned at 0.5.3, since later versions depend on react-doctor, whose license restricts
use.
use.
Copy SHA
Browse repository
committed
3w ago
pouriade.com
ce6af397
Copied
Failed
Copy SHA
Label the sibling picker's arrow buttons, so screen readers announce them as Previous version and Next
version.
version.
Copy SHA
Browse repository
committed
3w ago
pouriade.com
c06958d8
Copied
Failed
Copy SHA
Cut needless renders and fetches in the web app: memoize Markdown so streaming doesn't reparse every message, keep settings data fresh for a minute, open the store in beforeLoad, subscribe to one search param each, and save plugin settings in
parallel.
parallel.
Copy SHA
Browse repository
committed
3w ago
pouriade.com
d02d2d2a
Copied
Failed
Copy SHA
Send the composer's effort only while its select is shown, so a model without reasoning doesn't carry a hidden
effort.
effort.
Copy SHA
Browse repository
committed
3w ago
pouriade.com
f7bf626c
Copied
Failed
Copy SHA
Start the edit composer over when Edit is clicked on another message, instead of sending the first message's text under the second's
parent.
parent.
Copy SHA
Browse repository
committed
3w ago
pouriade.com
85470ddb
Copied
Failed
Copy SHA
Show a stored default model the model list no longer offers as unavailable, and keep it on
save.
save.
Copy SHA
Browse repository
committed
4w ago
pouriade.com
f18910bc
Copied
Failed
Copy SHA
Gather model choice into one module, with the fallback model chat-turns chooses in one
function.
function.
Copy SHA
Browse repository
committed
4w ago
pouriade.com
b439d9e1
Copied
Failed
Copy SHA
Delete the Composer's initialModel prop, which nothing
passes.
passes.
Copy SHA
Browse repository
committed
4w ago
pouriade.com
0a4c06fa
Copied
Failed
Copy SHA
Ask for a model in the composer when the server has no default to fall back to, instead of failing with "No model
selected".
selected".
Copy SHA
Browse repository
committed
4w ago
pouriade.com
90c36830
Copied
Failed
Copy SHA
Split MessageView's sibling picker, streaming reply, and status line into their own
components.
components.
Copy SHA
Browse repository
committed
4w ago
pouriade.com
4a508c55
Copied
Failed
Copy SHA
Name the composer's message box for assistive technology, like its other
controls.
controls.
Copy SHA
Browse repository
committed
4w ago
pouriade.com
85e54602
Copied
Failed
Copy SHA
Put validateSearch before ssr on the shared chat route, in TanStack Router's property
order.
order.
Copy SHA
Browse repository
committed
4w ago
pouriade.com
ad76e031
Copied
Failed
Copy SHA
Read the store's handover state with useSyncExternalStore, so no change is missed before
subscribing.
subscribing.
Copy SHA
Browse repository
committed
4w ago
pouriade.com
a152e272
Copied
Failed
Copy SHA
Pass SQLite into filePool, so its dependency on the loaded module is
explicit.
explicit.
Copy SHA
Browse repository
committed
4w ago
pouriade.com
1338c31c
Copied
Failed
Copy SHA
Refresh a conversation after a change to it by invalidating its refresh query in the mutation's
onSuccess.
onSuccess.
Copy SHA
Browse repository
committed
4w ago
pouriade.com
d2dc862b
Copied
Failed
Copy SHA
Key message parts by their content and snippet highlights by their offset, instead of by
index.
index.
Copy SHA
Browse repository
committed
4w ago
pouriade.com
fcab578c
Copied
Failed
Copy SHA
Keep the router from resetting the scroll on conversations, so search results and sibling choices keep their
place.
place.
Copy SHA
Browse repository
committed
4w ago
pouriade.com
f90bf6fa
Copied
Failed
Copy SHA
Replace the deprecated query client fetch methods with
queryClient.query.
queryClient.query.
Copy SHA
Browse repository
committed
4w ago
pouriade.com
3cdafb0e
Copied
Failed
Copy SHA
Add the extending terms to the glossary: tool view, tool status, steps, and message
action.
action.
Copy SHA
Browse repository
committed
4w ago
pouriade.com
c729eff2
Copied
Failed
Copy SHA
Add the extending spec: part and tool views, tool status, steps, message actions, a Markdown seam, smaller components, and a forker
guide.
guide.
Copy SHA
Browse repository
committed
4w ago
pouriade.com
fa947399
Copied
Failed
Copy SHA
Replace the web plugins and themes phases with extending and styling in the plan and
specs.
specs.
Copy SHA
Browse repository
committed
4w ago
pouriade.com
f49861c9
Copied
Failed
Copy SHA
Record that the web app is extended in code by forkers, not through plugins or user
themes.
themes.
Copy SHA
Browse repository
committed
4w ago
hadsie.com
6f094c3a
Copied
Failed
Copy SHA
Merge pull request #4 from
Z-Space-Society/admin-ui
Z-Space-Society/admin-ui
Copy SHA
Browse repository
committed
4w ago
hadsie.com
df7c3a9a
Copied
Failed
Copy SHA
Add the admin area for settings to replace config.yml.
admin-ui
Copy SHA
Browse repository
committed
4w ago
pouriade.com
74ccd1b5
Copied
Failed
Copy SHA
Describe the server rendering, the session check, and the store layout in the web-ui
spec.
spec.
Copy SHA
Browse repository
committed
4w ago
pouriade.com
d35aee1b
Copied
Failed
Copy SHA
Test the signed-in redirects and the settings opening the store on demand, and pass the login page its search
params.
params.
Copy SHA
Browse repository
committed
4w ago
pouriade.com
b5fe3db8
Copied
Failed
Copy SHA
Server-render the web app: the session in the root's beforeLoad, server redirects, settings prefetched in loaders, and the chats in a client-only
layout.
layout.
Copy SHA
Browse repository
committed
4w ago
pouriade.com
8e26de3d
Copied
Failed
Copy SHA
Give the web app an in-process fetch with each page request, sending the request's
cookie.
cookie.
Copy SHA
Browse repository
committed
4w ago
pouriade.com
d1cb81a9
Copied
Failed
Copy SHA
Describe the TanStack Form forms in the web-ui
spec.
spec.
Copy SHA
Browse repository
committed
4w ago
pouriade.com
8880fc82
Copied
Failed
Copy SHA
Test that the preferences form keeps stored fields and the API key form clears after adding a
key.
key.
Copy SHA
Browse repository
committed
4w ago
pouriade.com
0d1935a2
Copied
Failed
Copy SHA
Move the settings and sharing forms to TanStack Form, with the plugin form's fields addressed by
position.
position.
Copy SHA
Browse repository
committed
4w ago
pouriade.com
1ce59c08
Copied
Failed
Copy SHA
Describe the URL state in the web-ui
spec.
spec.
Copy SHA
Browse repository
committed
4w ago
pouriade.com
471f7603
Copied
Failed
Copy SHA
Keep the chosen branch in m and the sidebar search in q, so reloading or sharing a link keeps
them.
them.
Copy SHA
Browse repository
committed
4w ago
pouriade.com
33cfe47f
Copied
Failed
Copy SHA
Validate the chat routes' search params: q for the sidebar search, m for the focused
message.
message.
Copy SHA
Browse repository
committed
4w ago
Previous
1
2
Next