Compare commits

...

2 Commits

Author SHA1 Message Date
James Long e784dd1196 chore: scope session sorting to tui 2026-07-29 16:42:40 +00:00
James Long 8137d189b0 fix(session): sort by latest activity 2026-07-29 16:36:19 +00:00
3 changed files with 32 additions and 0 deletions
+6
View File
@@ -657,6 +657,12 @@ const layer = Layer.effectDiscard(
input: event.data.input,
timeCreated: event.created,
})
yield* db
.update(SessionTable)
.set({ time_updated: DateTime.toEpochMillis(event.created) })
.where(eq(SessionTable.id, event.data.sessionID))
.run()
.pipe(Effect.orDie)
}),
)
yield* bus.project(SessionEvent.Compaction.Admitted, (event) =>
+24
View File
@@ -171,6 +171,30 @@ describe("Session.create", () => {
}),
)
it.effect("orders sessions by their latest prompt", () =>
Effect.gen(function* () {
const session = yield* Session.Service
const { db } = yield* Database.Service
const active = yield* session.create({ location, title: "active" })
const newer = yield* session.create({ location, title: "newer" })
yield* db
.update(SessionTable)
.set({ time_created: -2, time_updated: -2 })
.where(eq(SessionTable.id, active.id))
.run()
yield* db
.update(SessionTable)
.set({ time_created: -1, time_updated: -1 })
.where(eq(SessionTable.id, newer.id))
.run()
yield* session.prompt({ sessionID: active.id, text: "continue", resume: false })
expect((yield* session.list()).data.map((item) => item.id)).toEqual([active.id, newer.id])
}),
)
it.effect("filters direct child sessions by parent ID", () =>
Effect.gen(function* () {
const session = yield* Session.Service
+2
View File
@@ -404,6 +404,8 @@ export const { use: useData, provider: DataProvider } = createSimpleContext({
break
}
case "session.input.admitted":
if (store.session.info[event.data.sessionID])
setStore("session", "info", event.data.sessionID, "time", "updated", event.created)
addPending({
id: event.data.inputID,
sessionID: event.data.sessionID,