summaryrefslogtreecommitdiffhomepage
path: root/packages/desktop/src
diff options
context:
space:
mode:
authorAdam <[email protected]>2025-12-18 07:31:54 -0600
committerAdam <[email protected]>2025-12-18 11:16:32 -0600
commitb0aaf04957336538dc49d2b0416f44dfbd538531 (patch)
treee780b69cbe14a8f348f14c8dc22700a5a94e0d1f /packages/desktop/src
parentb7875256f362d85e9644b376562e7525ee7191ae (diff)
downloadopencode-b0aaf04957336538dc49d2b0416f44dfbd538531.tar.gz
opencode-b0aaf04957336538dc49d2b0416f44dfbd538531.zip
fix(desktop): session ordered by most recent
Diffstat (limited to 'packages/desktop/src')
-rw-r--r--packages/desktop/src/context/global-sync.tsx2
-rw-r--r--packages/desktop/src/pages/layout.tsx18
2 files changed, 15 insertions, 5 deletions
diff --git a/packages/desktop/src/context/global-sync.tsx b/packages/desktop/src/context/global-sync.tsx
index 9e716f4d9..fa1a281dc 100644
--- a/packages/desktop/src/context/global-sync.tsx
+++ b/packages/desktop/src/context/global-sync.tsx
@@ -107,7 +107,7 @@ function createGlobalSync() {
.slice()
.filter((s) => !s.time.archived)
.sort((a, b) => a.id.localeCompare(b.id))
- // Include sessions up to the limit, plus any updated in the last hour
+ // Include up to the limit, plus any updated in the last 4 hours
const sessions = nonArchived.filter((s, i) => {
if (i < store.limit) return true
const updated = new Date(s.time.updated).getTime()
diff --git a/packages/desktop/src/pages/layout.tsx b/packages/desktop/src/pages/layout.tsx
index fccb6d595..387f2415f 100644
--- a/packages/desktop/src/pages/layout.tsx
+++ b/packages/desktop/src/pages/layout.tsx
@@ -122,10 +122,18 @@ export default function Layout(props: ParentProps) {
}
}
+ function projectSessions(directory: string) {
+ if (!directory) return []
+ const sessions = globalSync
+ .child(directory)[0]
+ .session.toSorted((a, b) => (b.time.updated ?? b.time.created) - (a.time.updated ?? a.time.created))
+ return flattenSessions(sessions ?? [])
+ }
+
const currentSessions = createMemo(() => {
if (!params.dir) return []
const directory = base64Decode(params.dir)
- return flattenSessions(globalSync.child(directory)[0].session ?? [])
+ return projectSessions(directory)
})
function navigateSessionByOffset(offset: number) {
@@ -162,7 +170,7 @@ export default function Layout(props: ParentProps) {
const nextProject = projects[nextProjectIndex]
if (!nextProject) return
- const nextProjectSessions = flattenSessions(globalSync.child(nextProject.worktree)[0].session ?? [])
+ const nextProjectSessions = projectSessions(nextProject.worktree)
if (nextProjectSessions.length === 0) {
navigateToProject(nextProject.worktree)
return
@@ -511,7 +519,9 @@ export default function Layout(props: ParentProps) {
const slug = createMemo(() => base64Encode(props.project.worktree))
const name = createMemo(() => getFilename(props.project.worktree))
const [store, setProjectStore] = globalSync.child(props.project.worktree)
- const sessions = createMemo(() => store.session ?? [])
+ const sessions = createMemo(() =>
+ store.session.toSorted((a, b) => (b.time.updated ?? b.time.created) - (a.time.updated ?? a.time.created)),
+ )
const rootSessions = createMemo(() => sessions().filter((s) => !s.parentID))
const childSessionsByParent = createMemo(() => {
const map = new Map<string, Session[]>()
@@ -526,7 +536,7 @@ export default function Layout(props: ParentProps) {
})
const hasMoreSessions = createMemo(() => store.session.length >= store.limit)
const loadMoreSessions = async () => {
- setProjectStore("limit", (limit) => limit + 10)
+ setProjectStore("limit", (limit) => limit + 5)
await globalSync.project.loadSessions(props.project.worktree)
}
const [expanded, setExpanded] = createSignal(true)