antechamber 0.2.8 → 0.2.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +9 -0
- package/dist/routes-v1.js +16 -1
- package/extensions/omo-dag/package.json +1 -1
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -7,6 +7,15 @@ and this project uses [Semantic Versioning](https://semver.org/).
|
|
|
7
7
|
|
|
8
8
|
## [Unreleased]
|
|
9
9
|
|
|
10
|
+
## [0.2.9] - 2026-10-16
|
|
11
|
+
|
|
12
|
+
### Fixed
|
|
13
|
+
|
|
14
|
+
- Mobile: sessions whose newest 30 messages contain no user prompt no longer
|
|
15
|
+
open blank on OpenChamber's mobile surface. v1 `GET /session/{id}/message`
|
|
16
|
+
now returns `x-next-cursor` and honors `before`, so the client pages back
|
|
17
|
+
until it finds the start of a turn.
|
|
18
|
+
|
|
10
19
|
## [0.2.8] - 2026-10-15
|
|
11
20
|
|
|
12
21
|
- fix(session): resend bare /<skill> commands as /skill:<name>
|
package/dist/routes-v1.js
CHANGED
|
@@ -134,9 +134,24 @@ export async function handleV1(services, req, res, url, path, method, directory)
|
|
|
134
134
|
json(res, 200, await services.sessions.remove(sessionId));
|
|
135
135
|
return;
|
|
136
136
|
case "GET /message": {
|
|
137
|
+
// OpenCode pages backwards from the newest message: `before` is the
|
|
138
|
+
// x-next-cursor of the previous page (here, its oldest message ID).
|
|
139
|
+
// Without the cursor, OpenChamber's loader treats a partial page as the
|
|
140
|
+
// whole history; mobile's 30-message first page then has no user
|
|
141
|
+
// message to anchor a turn on, and the transcript renders blank.
|
|
137
142
|
const messages = services.sessions.messages(sessionId) ?? [];
|
|
138
143
|
const limit = numberParam(url.searchParams.get("limit"));
|
|
139
|
-
|
|
144
|
+
const before = url.searchParams.get("before");
|
|
145
|
+
const end = before === null ? messages.length : messages.findIndex((message) => message.info.id === before);
|
|
146
|
+
if (end < 0 || limit === 0) {
|
|
147
|
+
json(res, 200, []);
|
|
148
|
+
return;
|
|
149
|
+
}
|
|
150
|
+
const start = limit === undefined ? 0 : Math.max(0, end - limit);
|
|
151
|
+
const page = messages.slice(start, end);
|
|
152
|
+
if (start > 0 && page[0] !== undefined)
|
|
153
|
+
res.setHeader("x-next-cursor", page[0].info.id);
|
|
154
|
+
json(res, 200, page);
|
|
140
155
|
return;
|
|
141
156
|
}
|
|
142
157
|
case "GET /children":
|