You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
After upgrading to v1.16.0, the "Modified Files" section in the TUI right sidebar no longer renders at all. Not truncated — the entire section is missing. Files with uncommitted changes are completely invisible.
Steps to Reproduce
Open a project with uncommitted/modified files in opencode TUI
Observe the right sidebar
"Modified Files" section is absent — nothing rendered where the file list should be
Expected Behavior
The "Modified Files" section should show all files with uncommitted changes, with paths truncated at the beginning (as intended by the fix for #30514).
Actual Behavior
The entire "Modified Files" section is hidden/not rendered. There is no way to see which files have been modified.
Environment
OpenCode version: 1.16.0
Platform: Windows (WSL2)
UI: TUI (terminal)
Git: Project has uncommitted changes
Related
This appears to be a regression from #30514 ("TUI sidebar – modified file paths truncated at the end, hiding the filename"). The v1.16.0 release notes mention "Truncated long sidebar file paths" as a TUI Improvement — the fix for #30514 may have introduced an over-correction that hides the entire file list under certain conditions.
Screenshot
Will attach if needed — the sidebar simply shows no modified files section.
Can confirm this is still reproducible on 1.17.8 (Linux, TUI), and it is not caused by user plugins — I reproduced it with opencode run --pure, which logs skipping external plugins in pure mode.
Repro
git init an empty repo, add a file.
Run opencode and ask it to edit the file.
The file is modified on disk (git status confirms it).
The TUI "Modified Files" / sidebar summary stays empty.
Root cause signal from the local SQLite DB
The edit/patch event is being recorded correctly in the part table:
So it looks like the regression is in the session summary projection that feeds the sidebar, not in edit/patch execution. The patch part is written; the per-session summary_* aggregation that the TUI sidebar reads is not being computed/written after v1.16.0.
This matches the closed-but-still-broken pattern others have reported across 1.16.0 → 1.17.4 → 1.17.7 → 1.17.8. Happy to attach the exact DB rows / a small reproduction repo if it helps narrow down where the projection broke.
Follow-up with the exact regression commit + root cause from a v1.15.13 → v1.16.0 source bisection.
Breaking commit
2f2fcc165 — fix(opencode): remove automatic full session diffs (#30127) (@thdxr, merged 2026-05-31, shipped in v1.16.0)
What it changed
In packages/opencode/src/session/summary.ts, the summarize function used to compute the full session diff and write the aggregate to the session summary:
Per-message turn diffs (session.diff({ messageID })) were intentionally preserved — which is why part.type="patch" rows are still written correctly, but session.summary_files / summary_diffs are always 0/empty.
Why the sidebar is empty
The PR description is explicit about the intent: "return empty session-level diff data while preserving the existing API/event shape" and "keep message-scoped turn diffs available through session.diff({ messageID })". The TUI sidebar "Modified Files" section reads the session-level aggregate (session.summary / Session.Event.Diff), which #30127 now always empties. The message-scoped data that's still computed never reaches the sidebar.
Suggested fix direction
Either:
Migrate the TUI sidebar "Modified Files" projection to aggregate from the message-scoped session.diff({ messageID }) turn diffs (which still work and are cheap per-turn), or
Re-aggregate summary.files/additions/deletions from the per-message diffs inside summarize without recomputing the expensive full-session snapshot diff.
This explains why it persists across 1.16.0 → 1.17.8 — the session-level summary was deliberately zeroed and the sidebar was never pointed at the surviving message-scoped data.
But user message rows do contain the actual per-turn diffs: message.data -> $.summary.diffs has file entries, patches, additions, deletions, and statuses.
So the per-message diffs are being generated correctly, but the TUI sidebar remains empty because it reads the session-level aggregate.
Environment:
OpenCode: 1.17.16
OS: Linux 6.8.0-134-generic x64
Terminal: xterm-256color
UI: TUI
Plugins loaded: local config plugins only; issue reproduces with normal TUI sidebar behavior
This looks like the exact mismatch fixed by #33444: session-level summary remains empty while per-message turn diffs exist.
It restores the session-level diff on both paths without reintroducing the full-session snapshot recompute that #30127 removed: the HTTP GET /session/<id>/diff (no messageID) now aggregates the per-message turn diffs already stored on each user message, and the live session.diff event publishes the same merged diff.
I've already open a PR referencing this issue, here's a screenshot of this resolved locally:
Thanks for the report! OpenCode 2.0 is now out and development is focused on V2, so we're closing issues filed against OpenCode 1. Please upgrade (opencode upgrade --major, details: https://anoma.ly/notes/opencode-2-0), and if this is still relevant on 2.0, reopen this issue or open a new one with your 2.0 version.
Activity
WhiteGiverMa commentedon Jun 5, 2026
WhiteGiverMa commentedon Jun 5, 2026
No
Modified Filesshown whilegit statusshows a lot of files.littleStudent commentedon Jun 15, 2026
I have the same issue since 1.16.0.
It seems like the modified files list is not shown at all anymore.
bernatGene commentedon Jun 15, 2026
same issue; currently 1.17.4, might be a opentui problem?
polatdev commentedon Jun 18, 2026
same issue, how to fix?
aic0d3r commentedon Jun 22, 2026
Can confirm this is still reproducible on 1.17.8 (Linux, TUI), and it is not caused by user plugins — I reproduced it with
opencode run --pure, which logsskipping external plugins in pure mode.Repro
git initan empty repo, add a file.git statusconfirms it).Root cause signal from the local SQLite DB
The edit/patch event is being recorded correctly in the
parttable:{"type":"patch","hash":"e3d14d7340059b5852f32f29574e98ff73eb3c47","files":["/tmp/opencode-repro-178/sample.txt"]}But the corresponding
sessionrow never gets populated:So it looks like the regression is in the session summary projection that feeds the sidebar, not in edit/patch execution. The patch part is written; the per-session
summary_*aggregation that the TUI sidebar reads is not being computed/written afterv1.16.0.This matches the closed-but-still-broken pattern others have reported across 1.16.0 → 1.17.4 → 1.17.7 → 1.17.8. Happy to attach the exact DB rows / a small reproduction repo if it helps narrow down where the projection broke.
aic0d3r commentedon Jun 22, 2026
Follow-up with the exact regression commit + root cause from a
v1.15.13 → v1.16.0source bisection.Breaking commit
2f2fcc165—fix(opencode): remove automatic full session diffs (#30127)(@thdxr, merged 2026-05-31, shipped in v1.16.0)What it changed
In
packages/opencode/src/session/summary.ts, thesummarizefunction used to compute the full session diff and write the aggregate to the session summary:#30127 replaced that with hardcoded zeroes at the session level:
Per-message turn diffs (
session.diff({ messageID })) were intentionally preserved — which is whypart.type="patch"rows are still written correctly, butsession.summary_files/summary_diffsare always0/empty.Why the sidebar is empty
The PR description is explicit about the intent: "return empty session-level diff data while preserving the existing API/event shape" and "keep message-scoped turn diffs available through
session.diff({ messageID })". The TUI sidebar "Modified Files" section reads the session-level aggregate (session.summary/Session.Event.Diff), which #30127 now always empties. The message-scoped data that's still computed never reaches the sidebar.Suggested fix direction
Either:
session.diff({ messageID })turn diffs (which still work and are cheap per-turn), orsummary.files/additions/deletionsfrom the per-message diffs insidesummarizewithout recomputing the expensive full-session snapshot diff.This explains why it persists across 1.16.0 → 1.17.8 — the session-level summary was deliberately zeroed and the sidebar was never pointed at the surviving message-scoped data.
FedericohMartin commentedon Jul 9, 2026
I can still reproduce this on OpenCode 1.17.16 on Linux.
Local DB evidence matches the root cause described in #33444:
worktree = /home/fede/Desktop/Zoklo,vcs = git,sandboxes = [].git status --short.session.summary_files = 0,session.summary_additions = 0,session.summary_deletions = 0.message.data -> $.summary.diffshas file entries, patches, additions, deletions, and statuses.So the per-message diffs are being generated correctly, but the TUI sidebar remains empty because it reads the session-level aggregate.
Environment:
This looks like the exact mismatch fixed by #33444: session-level summary remains empty while per-message turn diffs exist.
fix: session changes panel always empty — restore diff computation
WhiteGiverMa commentedon Aug 8, 2026
oh what come on opencode team, it's my favourite agent harness @thdxr
kdbsoft commentedon Aug 19, 2026
same issue
juliolv commentedon Aug 24, 2026
I've reproduced this and have a fix ready.
It restores the session-level diff on both paths without reintroducing the full-session snapshot recompute that #30127 removed: the HTTP
GET /session/<id>/diff(no messageID) now aggregates the per-message turn diffs already stored on each user message, and the livesession.diffevent publishes the same merged diff.I've already open a PR referencing this issue, here's a screenshot of this resolved locally:
thdxr commentedon Oct 11, 2026
Thanks for the report! OpenCode 2.0 is now out and development is focused on V2, so we're closing issues filed against OpenCode 1. Please upgrade (
opencode upgrade --major, details: https://anoma.ly/notes/opencode-2-0), and if this is still relevant on 2.0, reopen this issue or open a new one with your 2.0 version.— from 𝕺𝖕𝖊𝖓𝕮𝖔𝖉𝖊