Skip to content

fix(parser): prefer OpenCode session.directory over project worktree - #1237

Merged
mjacobs merged 4 commits into
kenn-io:mainfrom
berenddeboer:fix/opencode-prefer-session-directory
Jul 24, 2026
Merged

fix(parser): prefer OpenCode session.directory over project worktree#1237
mjacobs merged 4 commits into
kenn-io:mainfrom
berenddeboer:fix/opencode-prefer-session-directory

Conversation

@berenddeboer

Copy link
Copy Markdown
Contributor

Why

OpenCode sessions under the synthetic global project were imported with cwd=/ and project unknown, even when session.directory held a real working directory. That left recent OpenCode work ungrouped and blocked worktree mappings (see #1236).

What Changed

  • Load session.directory from the OpenCode SQLite session row.
  • Resolve cwd with resolveOpenCodeWorktree: prefer a concrete session directory over project.worktree, treating / as unusable.
  • Derive project from the resolved cwd as before.
  • Document the global-project directory behavior in docs/internal/session-format-sources.md.
  • Cover the resolver and global-project parse path with unit tests.

Closes #1236

@roborev-ci

roborev-ci Bot commented Jul 23, 2026

Copy link
Copy Markdown

roborev: Combined Review (a730167)

The change has one medium-severity compatibility issue affecting legacy OpenCode-family databases.

Medium

  • Legacy schemas fail because session.directory may not existinternal/parser/opencode.go:377

    The query unconditionally references session.directory. COALESCE cannot handle an absent column, so supported legacy databases used by OpenCode, Kilo, MiMoCode, and ICodeMate will fail with no such column: s.directory.

    Fix: Detect whether the column exists before querying and fall back to an empty directory/project worktree for legacy schemas. Add explicit coverage for both schema generations.


Reviewers: 2 done | Synthesis: codex, 7s | Total: 2m14s

@berenddeboer
berenddeboer marked this pull request as ready for review July 23, 2026 08:35
@roborev-ci

roborev-ci Bot commented Jul 23, 2026

Copy link
Copy Markdown

roborev: Combined Review (20b295d)

Code is not ready to merge: one medium-severity data migration issue remains.

Medium

  • internal/parser/opencode.go:166, internal/db/db.go:321 — The parser now derives stored cwd and project differently, but dataVersion remains 70. Existing unchanged OpenCode sessions may pass freshness checks and retain / or unknown indefinitely. Bump dataVersion, document the reparse reason, and add an upgrade-path test confirming existing OpenCode rows are refreshed.

Reviewers: 2 done | Synthesis: codex, 7s | Total: 4m2s

@berenddeboer
berenddeboer marked this pull request as draft July 23, 2026 20:25
@roborev-ci

roborev-ci Bot commented Jul 23, 2026

Copy link
Copy Markdown

roborev: Combined Review (ed3eeb8)

Code is generally sound, but one medium-severity project attribution regression should be fixed.

Medium

  • internal/parser/opencode.go:166 — The resolved session directory is also used to derive Project. When a non-global project has worktree=/repo and directory=/repo/subdir, an unavailable or foreign-OS checkout prevents Git-root discovery and changes the project from repo to subdir. The data-version bump applies this regression to existing sessions.
    • Fix: Use session.directory for Cwd and relative tool paths, but derive Project from the non-placeholder project.worktree. Fall back to the session directory only for the synthetic global project. Add a test covering differing worktree/directory values with an unavailable checkout.

Reviewers: 2 done | Synthesis: codex, 10s | Total: 3m36s

@berenddeboer
berenddeboer marked this pull request as ready for review July 23, 2026 22:06
@berenddeboer
berenddeboer marked this pull request as draft July 23, 2026 22:06
@roborev-ci

roborev-ci Bot commented Jul 23, 2026

Copy link
Copy Markdown

roborev: Combined Review (42dffe1)

No issues found.


Reviewers: 2 done | Synthesis: codex | Total: 3m46s

@berenddeboer
berenddeboer marked this pull request as ready for review July 24, 2026 01:30
@mjacobs
mjacobs merged commit 602210e into kenn-io:main Jul 24, 2026
13 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Development

Successfully merging this pull request may close these issues.

OpenCode: prefer session.directory over project.worktree for cwd

2 participants