You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maka.apache.org by "Astro-Han (via GitHub)" <gi...@apache.org> on 2026/08/29 02:31:26 UTC
[I] feat(desktop): unify sparse transcript paging with turn virtualization [maka]
Astro-Han opened a new issue, #4123:
URL: https://github.com/apache/maka/issues/4123
## Problem
Desktop keeps transcript memory and IPC bounded by loading durable messages in byte-limited ranges. The renderer also keeps the DOM bounded through turn virtualization.
These two mechanisms currently stop at different boundaries:
- `DesktopTranscriptReplica` owns only the currently resident durable range. Loading around a target replaces that range.
- The renderer turn virtualizer derives its logical turns only from resident messages.
- The prompt rail uses a separate sampled landmark index that can span the complete conversation.
As a result, navigating to an unloaded prompt replaces the visible transcript range. Durable messages outside that range remain stored, but their logical positions disappear from the renderer until another range is loaded. #3880 makes this state understandable, but the product should ideally present one continuous conversation without exposing resident versus non-resident history.
The `512 KiB` range limit is a transport and memory budget, not a conversation limit. Increasing it would only move the threshold.
## Desired outcome
Users can navigate one continuous logical transcript, including unloaded history, while message bodies, renderer state, IPC, and mounted DOM remain bounded.
Loading or evicting a content page must not remove its logical place from the conversation or make other durable turns appear deleted.
## Suggested architecture boundary
- Runtime Host and storage remain the only durable transcript authority.
- Preserve the existing bounded transcript page protocol and Main/Renderer cache budgets.
- Expose a lightweight, pageable logical turn-position index across the conversation. It should carry only the identity and ordering needed for layout and navigation, not duplicate message bodies.
- Let the renderer virtualizer operate on those logical positions and represent unloaded ranges as gaps or spacers.
- Load message bodies around the viewport, overscan window, and explicit navigation target.
- Evict content pages without removing their logical positions.
- Preserve the scroll anchor while estimated gaps are replaced by measured content.
- Keep sampled prompt landmarks as a navigation projection, not a second transcript or layout authority.
The exact protocol shape should follow the closest existing paging and virtualization seams. This issue does not require introducing another transcript store or retaining the complete transcript in Renderer memory.
## Acceptance criteria
- Jumping from the live tail to an unloaded old or intermediate prompt loads the target without presenting the conversation as a different standalone range.
- Returning to the tail preserves the same logical transcript and live-tail behavior.
- Page loading and eviction preserve scroll position and scrollbar continuity.
- Mounted transcript DOM remains bounded by the existing turn-window budget.
- Main and Renderer content caches remain within their existing byte budgets.
- Active-overlay to durable-message handoff remains correct at the live tail.
- Keyboard and screen-reader navigation work across loaded and unloaded ranges.
- Copy/export reads from the complete data model rather than only the mounted or resident window.
- Regression coverage includes a transcript larger than twice the range budget and navigation between tail, intermediate, and old ranges.
## Alternatives considered
- **Increase the 512 KiB range budget:** postpones the same discontinuity to a larger transcript.
- **Retain several disconnected resident ranges:** adds another cache representation without providing one stable logical layout.
- **Explain resident ranges only in the UI:** #3880 correctly improves the current behavior, but the user still has to understand an internal paging state.
## Related work
- #2913 tracks the broader bounded and incremental Desktop data-flow work.
- #3875 describes how sparse history can make durable prompts appear missing.
- #3880 clarifies the partial-range state under the current architecture and provides a useful large-transcript regression fixture.
@Sun-GLiang, if you are interested, this would be a natural architectural follow-up to #3880. The current PR does not need to expand to include it.
This issue was prepared with Codex under maintainer direction after reviewing the current transcript paging and virtualization boundaries. The maintainer owns the problem definition and proposed direction.
<details>
<summary>简体中文</summary>
## 问题
Desktop 通过按字节限制的范围加载来控制 transcript 的内存和 IPC 使用,同时通过 turn virtualization 控制挂载的 DOM 数量。
目前这两套机制停在了不同的边界:
- `DesktopTranscriptReplica` 只拥有当前驻留的持久化范围,围绕新目标加载时会替换这个范围。
- Renderer turn virtualizer 只能根据当前驻留的消息建立逻辑 turns。
- Prompt rail 使用另一份可以覆盖整段对话的抽样 landmark index。
因此,导航到未加载的 prompt 时,当前可见的 transcript 范围会被替换。范围外的持久化消息仍保存在 storage 中,但它们的逻辑位置会暂时从 Renderer 中消失。#3880 正确解释了这个状态,但理想的产品体验应该是一条连续的对话,不需要向用户暴露驻留和未驻留历史的区别。
`512 KiB` 是传输和内存预算,不是对话历史上限。提高这个数值只会把问题推迟到更大的 transcript。
## 目标结果
用户可以在一条连续的逻辑 transcript 中导航,包括尚未加载的历史;与此同时,消息正文、Renderer state、IPC 和已挂载 DOM 仍保持有界。
内容页面的加载或淘汰不能移除它在对话中的逻辑位置,也不能让其他持久化 turns 看起来像被删除。
## 建议的架构边界
- Runtime Host 和 storage 继续作为 transcript 唯一的持久化权威。
- 保留现有的有界 transcript page protocol 和 Main/Renderer 缓存预算。
- 提供覆盖整段对话、可分页的轻量逻辑 turn position index。它只携带布局和导航所需的身份与顺序,不复制消息正文。
- Renderer virtualizer 基于这些逻辑位置工作,把未加载范围表示成 gap 或 spacer。
- 围绕 viewport、overscan window 和明确的导航目标加载消息正文。
- 淘汰内容页面时不移除其逻辑位置。
- 用实际内容替换估算 gap 时保持滚动锚点稳定。
- 抽样 prompt landmarks 继续只负责导航,不成为第二份 transcript 或布局权威。
具体协议形态应该扩展现有的 paging 和 virtualization seam。这个 issue 不要求增加另一份 transcript store,也不要求在 Renderer 内存中保留完整 transcript。
## 验收标准
- 从 live tail 跳到未加载的较早或中间 prompt 时,可以加载目标,但不会把对话表现成另一段独立范围。
- 返回 tail 时仍处于同一条逻辑 transcript 中,并保持正常 live-tail 行为。
- 页面加载和淘汰期间保持滚动位置与 scrollbar 连续。
- 已挂载 transcript DOM 继续受现有 turn-window 预算限制。
- Main 和 Renderer 内容缓存继续遵守现有字节预算。
- Live tail 的 active-overlay 到 durable-message handoff 保持正确。
- 键盘和 screen reader 可以跨已加载与未加载范围导航。
- Copy/export 从完整数据模型读取,而不是只读取已挂载或驻留窗口。
- 回归测试包含大于两倍 range budget 的 transcript,以及 tail、中间和较早范围之间的导航。
## 考虑过的替代方案
- **提高 512 KiB range budget:** 只会把同样的断层推迟到更大的 transcript。
- **同时保留多个不连续的驻留范围:** 增加另一种缓存表示,但没有提供稳定、统一的逻辑布局。
- **只在 UI 中解释驻留范围:** #3880 正确改善了当前行为,但用户仍然需要理解内部的分页状态。
## 相关工作
- #2913 跟踪 Desktop 有界、增量数据流的整体工作。
- #3875 描述 sparse history 如何让持久化 prompt 看起来像是丢失。
- #3880 在当前架构下解释 partial-range 状态,并提供了有价值的大 transcript 回归 fixture。
@Sun-GLiang,如果你有兴趣,这会是 #3880 很自然的架构后续。当前 PR 不需要扩大范围来包含这项工作。
本 issue 由 Codex 在维护者指示下,根据当前 transcript paging 与 virtualization 边界的审查结果整理。问题定义和建议方向由维护者负责。
</details>
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: commits-unsubscribe@maka.apache.org.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@maka.apache.org
For additional commands, e-mail: commits-help@maka.apache.org
Re: [I] feat(desktop): unify sparse transcript paging with turn virtualization [maka]
Posted by "Sun-GLiang (via GitHub)" <gi...@apache.org>.
Sun-GLiang commented on issue #4123:
URL: https://github.com/apache/maka/issues/4123#issuecomment-5467644105
<!-- issue-4123-implementation-checklist:start -->
## Implementation checklist
- [ ] PR1 — Storage semantic position index
- PR URL: not-created
- Review: not-started
- Merge: not-merged
- Evidence receipt: not-available
- [ ] normalized Turn metadata 与 additive schema migration
- [ ] bounded legacy/imported/chunked recovery
- [ ] exact snapshot、authorityRevision、snapshotGeneration
- [ ] ABA、capacity/backpressure、reopen recovery
- [ ] Storage verification gate passed
- [ ] PR2 — Runtime Host semantic transcript protocol
- PR URL: not-created
- Review: not-started
- Merge: not-merged
- Evidence receipt: not-available
- [ ] subscription-scoped positions query
- [ ] semantic Turn-window pager
- [ ] shared projection 与 signed cursor
- [ ] fragment assembler 与 complete-Turn limits
- [ ] oversized Turn typed failure
- [ ] Runtime Host verification gate passed
- [ ] PR3 — Desktop continuous transcript
- PR URL: not-created
- Review: not-started
- Merge: not-merged
- Evidence receipt: not-available
- [ ] bounded Main semantic body window
- [ ] Preload/IPC snapshot fencing
- [ ] Renderer sparse gaps 与稳定 scrollbar
- [ ] single scroll authority 与统一导航
- [ ] active overlay durable handoff
- [ ] keyboard/screen-reader acceptance
- [ ] Desktop verification gate passed
- [ ] PR4 — Complete export and release
- PR URL: not-created
- Review: not-started
- Merge: not-merged
- Evidence receipt: not-available
- [ ] streaming copy/save 与 overlay snapshot
- [ ] compatibility epoch 与 mixed-version handshake
- [ ] continuous transcript 默认启用
- [ ] 旧 partial-range/export 路径清理
- [ ] release/rollback verification passed
- [ ] Final end-to-end acceptance
- [ ] tail → oldest → intermediate → tail 保持同一 logical transcript
- [ ] >2×512 KiB 与 >16 KiB bootstrap fixtures通过
- [ ] mounted durable Turns ≤10,active overlay ≤1
- [ ] position/body/Main/Renderer缓存预算通过
- [ ] scroll anchor误差 ≤4px
- [ ] DOM/heap第二轮增长 ≤10%
- [ ] shared projection无identity/count泄漏
- [ ] keyboard、screen reader、焦点恢复通过
- [ ] complete copy/save包含oldest/intermediate/tail且不扩张活动cache
- [ ] PR1–PR4均已merge且无未解决review thread
<!-- issue-4123-implementation-checklist:end -->
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: commits-unsubscribe@maka.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@maka.apache.org
For additional commands, e-mail: commits-help@maka.apache.org
Re: [I] feat(desktop): unify sparse transcript paging with turn virtualization [maka]
Posted by "Sun-GLiang (via GitHub)" <gi...@apache.org>.
Sun-GLiang commented on issue #4123:
URL: https://github.com/apache/maka/issues/4123#issuecomment-5467168267
I reproduced the user-visible symptom with a real previously persisted Desktop session.
## Observed behavior
Opening the existing session `描述一下这个issue。` shows only the final small segment of the conversation (the last tool calls and final answer). The earlier prompts and answers appear to be gone from the transcript, while the prompt rail still shows landmarks for the earlier prompts.
This looks like Renderer-side history loss, but the durable transcript is intact:
- 87 durable records are still present, with a complete sequence range from `0` through `86`.
- The stored transcript is about 208,052 bytes.
- The first prompt and its answer, as well as the later intermediate prompts, are all still present in storage.
- The visible UI segment corresponds to the final records near sequence `63`–`83`.
So this is not deletion or storage corruption. The missing content is outside the Renderer’s current resident transcript range.
## Important size-boundary detail
This session is smaller than the 512 KiB transcript page/range limit, but it still reproduces the problem because the initial subscription bootstrap is separately limited to 16 KiB:
```ts
SESSION_TRANSCRIPT_BOOTSTRAP_MAX_BYTES = 16 * 1024;
SESSION_TRANSCRIPT_PAGE_MAX_BYTES = 512 * 1024;
```
On open, `DesktopTranscriptReplica.prepare()` installs only the durable bootstrap and records that older content exists. The Renderer range store then exposes only those resident messages to `ChatView`, so the turn virtualizer can build logical positions only for that tail range.
Navigating to an unloaded prompt follows the same architectural path described in this issue: `DesktopTranscriptReplica.#replaceWithRange()` clears the current durable range, installs the target range, and publishes the old sequences as evicted. The Renderer deletes those sequences from its range store. Consequently, paging changes the set of logical turns instead of preserving one continuous transcript with unloaded gaps.
The prompt rail remains populated because it comes from the separate transcript-wide landmark index (`listTurnLandmarks`), which explains the confusing combination of multiple rail ticks and only one visible transcript segment.
## Conclusion
This is a direct real-session reproduction of #4123. The specific initial-open trigger here is the 16 KiB bootstrap boundary rather than the 512 KiB page boundary, but the root cause is the same: non-resident durable turns have no stable logical positions in Renderer state.
The desired fix in this issue—keeping a lightweight transcript-wide turn-position index, representing unloaded ranges as gaps/spacers, and paging message bodies around the viewport—would address this case as well.
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: commits-unsubscribe@maka.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@maka.apache.org
For additional commands, e-mail: commits-help@maka.apache.org
Re: [I] feat(desktop): unify sparse transcript paging with turn virtualization [maka]
Posted by "Sun-GLiang (via GitHub)" <gi...@apache.org>.
Sun-GLiang commented on issue #4123:
URL: https://github.com/apache/maka/issues/4123#issuecomment-5461678869
### Controlled Desktop E2E reproduction
I ran a controlled reproduction of the large-first-turn + active-live-tail scenario described above.
Tested at [`496cce47cfcacf7b872254a4012788ab63f262d1`](https://github.com/apache/maka/commit/496cce47cfcacf7b872254a4012788ab63f262d1) (`fix(desktop): prepare peer support in development (#4134)`). The test used an isolated E2E user-data directory and scratch SQLite workspace; it did not read or modify a developer database. The fixture Session was bound to the fixture Connection through a current `llmConnectionId`, so the result was not obscured by the legacy-account health banner.
The fixture constructed this durable transcript:
```text
sequence 0-1: Turn 1 request + assistant plan (> 512 KiB)
sequence 2-3: completed Turn 2 request + reply
sequence 4-5: completed Turn 3 request + reply
sequence 6: Turn 4 request
```
It then loaded the durable range around sequence 0 and supplied only the Turn 4 assistant response through the active overlay. The Runtime snapshot also identified Turn 4 as the running root turn with one active text stream.
Observed state:
```text
durable watermark: 6
resident durable sequences: [0, 1]
hasNewer: true
active overlay: [Turn 4 assistant]
durable turn index: [Turn 1, Turn 2, Turn 3, Turn 4]
prompt residency: [true, false, false, false]
Renderer source count: 2
Renderer logical turn ids: [Turn 1, Turn 4]
mounted turn ids: [Turn 1, Turn 4]
```
The rendered transcript visibly contained the Turn 1 request/reply followed immediately by the Turn 4 assistant response. It did **not** contain the Turn 2 request/reply, the Turn 3 request/reply, or even the durable Turn 4 request. The partial-history banner and prompt rail correctly indicated that newer durable content existed, but the missing turns had no logical positions in the virtualizer.
This confirms the failure mode is not only theoretical: when the resident durable range is anchored near the oversized first turn while the live assistant remains in the overlay, the current Renderer projection makes Turn 1 and Turn 4 logically adjacent even though storage still contains the intermediate turns.
The reproduction used controlled state injection at the `DesktopTranscriptReplica` preparation boundary, rather than depending on provider latency or a narrow streaming race. It exercised the production Desktop storage index, transcript range store, Renderer, prompt rail, and turn virtualizer. Therefore it validates the paging/virtualization composition described by this issue, while deliberately not claiming to reproduce every detail of a natural provider-stream lifecycle.
The focused Playwright case passed, and the temporary fixture hooks were removed after capture. The existing transcript replica/range-store verification remained green (20/20 tests).
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: commits-unsubscribe@maka.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@maka.apache.org
For additional commands, e-mail: commits-help@maka.apache.org
Re: [I] feat(desktop): preserve transcript continuity across bounded ranges [maka]
Posted by "Sun-GLiang (via GitHub)" <gi...@apache.org>.
Sun-GLiang commented on issue #4123:
URL: https://github.com/apache/maka/issues/4123#issuecomment-5480032544
Thanks for rewriting the issue. The revised direction is clear. I’ll keep #4295 as a draft and pause for now. Please let me know when the position contract is confirmed and I can proceed with the revised implementation.
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: commits-unsubscribe@maka.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@maka.apache.org
For additional commands, e-mail: commits-help@maka.apache.org
Re: [I] feat(desktop): unify sparse transcript paging with turn virtualization [maka]
Posted by "Sun-GLiang (via GitHub)" <gi...@apache.org>.
Sun-GLiang commented on issue #4123:
URL: https://github.com/apache/maka/issues/4123#issuecomment-5461411634
### Additional regression scenario: large first turn with an active live tail
This was the condition under which the original bug was first observed and would be useful to preserve as an explicit acceptance/regression case.
Given:
- the transcript is larger than the bounded range budget;
- the first turn is large enough to consume most or all of the historical resident range;
- intermediate turns are durable but non-resident;
- the final turn is still streaming through the active overlay.
After navigating from the live tail to the first turn, the current Renderer projection can effectively become:
```text
resident durable range: Turn 1
active overlay: Turn N
non-resident history: Turn 2 ... Turn N-1
```
Because logical turns are derived from resident messages plus the active overlay, the Renderer can make Turn 1 and Turn N appear adjacent. The intermediate durable turns are still present in storage, but their logical positions disappear along with their non-resident bodies.
The unified logical turn-position model should instead preserve:
```text
Turn 1 loaded historical content
Turn 2...N-1 unloaded logical positions / gaps
Turn N active overlay at the live tail
```
Suggested regression coverage:
1. Start with a transcript larger than twice the range budget, with a large first turn and an active final turn.
2. Navigate from the live tail to the first turn while streaming continues.
3. Verify that intermediate durable turns retain logical positions and that the first and active final turns never become logically adjacent.
4. Navigate or scroll back to the live tail.
5. Complete the active-overlay-to-durable handoff and verify stable identity/order, no duplication, no missing turns, and no scroll jump.
This is part of the same paging/virtualization boundary problem, but explicitly covering it would protect the original discovery condition.
---
### 补充回归场景:超大的首个 turn 与仍处于 active 状态的 live tail
这是最初发现该 bug 时的触发条件,建议作为明确的验收和回归测试场景保留下来。
条件如下:
- transcript 大于有界 range budget;
- 第一个 turn 很大,占用历史驻留范围的大部分或全部预算;
- 中间 turns 已持久化,但当前未驻留;
- 最后一个 turn 仍通过 active overlay 流式生成。
从 live tail 跳转到第一个 turn 后,Renderer 当前的投影实际上可能变成:
```text
驻留的 durable range:Turn 1
active overlay: Turn N
未驻留历史: Turn 2 ... Turn N-1
```
由于逻辑 turns 是从驻留消息与 active overlay 推导的,Turn 1 和 Turn N 可能被错误地表现为相邻。中间 turns 仍存在于 storage,但其逻辑位置会随着未驻留正文一起从 Renderer 中消失。
统一后的逻辑 turn-position 模型应当保留:
```text
Turn 1 已加载的历史正文
Turn 2...N-1 未加载的逻辑位置 / gaps
Turn N 位于 live tail 的 active overlay
```
建议测试:在流式生成期间跳转到超大的首个 turn,验证中间 turn 的逻辑位置始终存在;然后返回 live tail 并完成 active-overlay 到 durable message 的交接,验证顺序与身份稳定、不重复、不缺失且滚动位置不跳动。
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: commits-unsubscribe@maka.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@maka.apache.org
For additional commands, e-mail: commits-help@maka.apache.org
Re: [I] feat(desktop): unify sparse transcript paging with turn virtualization [maka]
Posted by "Sun-GLiang (via GitHub)" <gi...@apache.org>.
Sun-GLiang commented on issue #4123:
URL: https://github.com/apache/maka/issues/4123#issuecomment-5459819005
take
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: commits-unsubscribe@maka.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@maka.apache.org
For additional commands, e-mail: commits-help@maka.apache.org
Re: [I] feat(desktop): preserve transcript continuity across bounded ranges [maka]
Posted by "Astro-Han (via GitHub)" <gi...@apache.org>.
Astro-Han commented on issue #4123:
URL: https://github.com/apache/maka/issues/4123#issuecomment-5479609078
I rewrote this issue after reviewing the architecture established by #4206 and #4244. The previous virtualizer and PR1-PR4 plan is superseded.
Please pause #4258 and #4295 while I confirm the smallest Desktop position contract. Continuing the old plan would add substantial backend machinery before the product consumer and interaction are settled.
I'm sorry that the previous issue sent this work in the wrong direction. More context is in https://github.com/apache/maka/pull/4295#issuecomment-5479443985.
Codex helped with the architecture review and wording. I verified the conclusion against the current code and recent performance PRs.
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: commits-unsubscribe@maka.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@maka.apache.org
For additional commands, e-mail: commits-help@maka.apache.org
Re: [I] feat(desktop): unify sparse transcript paging with turn virtualization [maka]
Posted by "Sun-GLiang (via GitHub)" <gi...@apache.org>.
Sun-GLiang commented on issue #4123:
URL: https://github.com/apache/maka/issues/4123#issuecomment-5461837843
### Implementation plan
I am splitting #4123 into four reviewable changes. The branches are intentionally named without tool-specific prefixes, and each independent foundation PR will start from the same current `upstream/main` baseline.
#### Dependency graph
```text
PR-A Turn position index ─┐
├──> PR-C Continuous transcript UI
PR-B Transcript residency ┘
PR-D Complete copy/export ─── independent
#4123 is complete after PR-A, PR-B, PR-C, and PR-D are merged.
```
#### PR-A — `feat/4123-turn-position-index`
- [ ] Add a rebuildable, pageable logical Turn-position index.
- [ ] Reuse the existing admission/legacy Turn-boundary semantics.
- [ ] Maintain the index for new writes and imports.
- [ ] Add resumable bounded backfill for existing Sessions.
- [ ] Add the compatible `session.turn_positions.query` operation.
- [ ] Cover tail, ordinal, sequence, watermark, legacy, import, and resume cases.
#### PR-B — `feat/4123-transcript-residency`
- [ ] Merge disjoint transcript ranges instead of replacing the resident range.
- [ ] Add LRU eviction and viewport/navigation protection.
- [ ] Preserve the existing Main/Renderer byte budgets.
- [ ] Coalesce prefetch requests and make explicit navigation latest-wins.
- [ ] Preserve live-tail catch-up and active-overlay handoff.
#### PR-C — `feat/4123-continuous-transcript`
Depends on PR-A and PR-B.
- [ ] Add a bounded sparse Turn-position store.
- [ ] Represent unloaded ordinal ranges as estimated gaps.
- [ ] Adapt the existing Turn virtualizer instead of introducing another virtual-list implementation.
- [ ] Preserve scroll anchors while gaps become measured content.
- [ ] Keep Rail/Search jumps stable under rapid navigation.
- [ ] Preserve live-tail behavior while reading history.
- [ ] Support keyboard and screen-reader navigation across unloaded ranges.
- [ ] Add the >2× range-budget and large-first-Turn + active-tail E2E regression.
#### PR-D — `feat/4123-complete-transcript-export`
Independent of PR-A/PR-B/PR-C.
- [ ] Page the complete transcript from Main at a fixed watermark.
- [ ] Share the existing Markdown formatting logic.
- [ ] Stream file export without materializing the transcript in Renderer.
- [ ] Ensure clipboard copy includes non-resident history.
- [ ] Cover early, intermediate, tail, live-append, and paging-failure cases.
#### Cross-PR acceptance
- [ ] Loading or evicting bodies never removes their logical place.
- [ ] Scrollbar geometry and visible anchors remain continuous.
- [ ] Main/Renderer content caches remain within their current byte budgets.
- [ ] Mounted transcript DOM remains within the existing 100-Turn budget.
- [ ] Turn-position Renderer state remains bounded.
- [ ] Returning to the tail preserves streaming and overlay-to-durable identity.
- [ ] Copy/export reads the complete transcript rather than the resident window.
I will edit this comment with PR links and checked items as each slice is opened and merged.
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: commits-unsubscribe@maka.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@maka.apache.org
For additional commands, e-mail: commits-help@maka.apache.org
Re: [I] feat(desktop): unify sparse transcript paging with turn virtualization [maka]
Posted by "Sun-GLiang (via GitHub)" <gi...@apache.org>.
Sun-GLiang commented on issue #4123:
URL: https://github.com/apache/maka/issues/4123#issuecomment-5459818529
Thank you for your invitation. I will continue to promote this work.
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: commits-unsubscribe@maka.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@maka.apache.org
For additional commands, e-mail: commits-help@maka.apache.org
Re: [I] feat(desktop): preserve transcript continuity across bounded ranges [maka]
Posted by "Astro-Han (via GitHub)" <gi...@apache.org>.
Astro-Han closed issue #4123: feat(desktop): preserve transcript continuity across bounded ranges
URL: https://github.com/apache/maka/issues/4123
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: commits-unsubscribe@maka.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@maka.apache.org
For additional commands, e-mail: commits-help@maka.apache.org