chore: generate

This commit is contained in:
opencode-agent[bot] 2026-06-05 06:31:37 +00:00
commit f6197cefe1
12 changed files with 136 additions and 39 deletions

View file

@ -118,14 +118,23 @@ function createHomeSessionStatus(input: {
const notification = useNotification()
const permission = usePermission()
const sessionStore = createMemo(() => input.sync().child(input.record().session.directory, { bootstrap: false })[0])
const unseenCount = createMemo(() => (input.activeServer() ? notification.session.unseenCount(input.record().session.id) : 0))
const hasError = createMemo(() => input.activeServer() && notification.session.unseenHasError(input.record().session.id))
const unseenCount = createMemo(() =>
input.activeServer() ? notification.session.unseenCount(input.record().session.id) : 0,
)
const hasError = createMemo(
() => input.activeServer() && notification.session.unseenHasError(input.record().session.id),
)
const hasPermissions = createMemo(
() =>
input.activeServer() &&
!!sessionPermissionRequest(sessionStore().session, sessionStore().permission, input.record().session.id, (item) => {
return !permission.autoResponds(item, input.record().session.directory)
}),
!!sessionPermissionRequest(
sessionStore().session,
sessionStore().permission,
input.record().session.id,
(item) => {
return !permission.autoResponds(item, input.record().session.directory)
},
),
)
const serverStatus = createMemo(() =>
homeSessionServerStatus(input.activeServer(), () => ({
@ -278,7 +287,13 @@ function HomeDesign() {
function selectProject(conn: ServerConnection.Any, directory: string) {
const key = ServerConnection.key(conn)
if (!global.createServerCtx(conn).projects.list().some((project) => project.worktree === directory)) return
if (
!global
.createServerCtx(conn)
.projects.list()
.some((project) => project.worktree === directory)
)
return
setSelection(toggleHomeProjectSelection(state.selection, key, directory))
}
@ -534,11 +549,7 @@ function HomeProjectColumn(props: {
</div>
<Show when={healthy()}>
<div class="mx-3 h-px bg-v2-border-border-base" />
<HomeProjectList
{...props}
server={item}
projects={serverCtx.projects.list()}
/>
<HomeProjectList {...props} server={item} projects={serverCtx.projects.list()} />
</Show>
</div>
)
@ -586,7 +597,10 @@ function HomeProjectList(props: {
<HomeProjectRow
project={project}
server={props.server}
selected={props.selected.server === ServerConnection.key(props.server) && props.selected.directory === project.worktree}
selected={
props.selected.server === ServerConnection.key(props.server) &&
props.selected.directory === project.worktree
}
unseenCount={props.unseenCount(props.server, project)}
selectProject={props.selectProject}
openNewSession={props.openNewSession}
@ -662,7 +676,10 @@ function HomeProjectRow(props: {
<MenuV2.Item onSelect={() => props.editProject(props.server, props.project)}>
{props.language.t("common.edit")}
</MenuV2.Item>
<MenuV2.Item disabled={props.unseenCount === 0} onSelect={() => props.clearNotifications(props.server, props.project)}>
<MenuV2.Item
disabled={props.unseenCount === 0}
onSelect={() => props.clearNotifications(props.server, props.project)}
>
{props.language.t("sidebar.project.clearNotifications")}
</MenuV2.Item>
<MenuV2.Separator />
@ -902,7 +919,11 @@ function HomeSessionSearchResultRow(props: {
onHighlight: () => void
onSelect: (session: Session) => void
}) {
const status = createHomeSessionStatus({ record: () => props.record, sync: () => props.sync, activeServer: () => props.activeServer })
const status = createHomeSessionStatus({
record: () => props.record,
sync: () => props.sync,
activeServer: () => props.activeServer,
})
const title = createMemo(() => sessionTitle(props.record.session.title) || props.record.session.id)
const key = () => homeSessionSearchKey(props.record)
@ -993,7 +1014,11 @@ function HomeSessionRow(props: {
activeServer: boolean
openSession: (session: Session) => void
}) {
const status = createHomeSessionStatus({ record: () => props.record, sync: () => props.sync, activeServer: () => props.activeServer })
const status = createHomeSessionStatus({
record: () => props.record,
sync: () => props.sync,
activeServer: () => props.activeServer,
})
const title = createMemo(() => sessionTitle(props.record.session.title) || props.record.session.id)
return (

View file

@ -227,7 +227,9 @@ describe("layout workspace helpers", () => {
})
test("scopes home project selection by server", () => {
expect(toggleHomeProjectSelection(undefined, serverKey("https://debian.example"), "/home/luke/repos/amazon")).toEqual({
expect(
toggleHomeProjectSelection(undefined, serverKey("https://debian.example"), "/home/luke/repos/amazon"),
).toEqual({
server: serverKey("https://debian.example"),
directory: "/home/luke/repos/amazon",
})
@ -270,11 +272,19 @@ describe("layout workspace helpers", () => {
})
test("defers home project navigation until its server is active", () => {
expect(homeProjectNavigation(serverKey("sidecar"), serverKey("https://debian.example"), "/YW1hem9u/session")).toEqual({
expect(
homeProjectNavigation(serverKey("sidecar"), serverKey("https://debian.example"), "/YW1hem9u/session"),
).toEqual({
server: serverKey("https://debian.example"),
href: "/YW1hem9u/session",
})
expect(homeProjectNavigation(serverKey("https://debian.example"), serverKey("https://debian.example"), "/YW1hem9u/session")).toEqual({
expect(
homeProjectNavigation(
serverKey("https://debian.example"),
serverKey("https://debian.example"),
"/YW1hem9u/session",
),
).toEqual({
href: "/YW1hem9u/session",
})
})

View file

@ -4,7 +4,11 @@ import { useNotification } from "@/context/notification"
import { usePermission } from "@/context/permission"
import { sessionPermissionRequest } from "@/pages/session/composer/session-request-tree"
export function useSessionTabAvatarState(directory: Accessor<string>, sessionId: Accessor<string>, active: Accessor<boolean> = () => true) {
export function useSessionTabAvatarState(
directory: Accessor<string>,
sessionId: Accessor<string>,
active: Accessor<boolean> = () => true,
) {
const globalSync = useServerSync()
const notification = useNotification()
const permission = usePermission()