Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
17 commits
Select commit Hold shift + click to select a range
324a398
core: refactor git utilities from util/git.ts to dedicated Git servic…
nexxeln Mar 24, 2026
614ae48
core: add VCS diff tracking with branch comparison and file statistic…
nexxeln Mar 24, 2026
01d786e
core: add /vcs/diff endpoint to retrieve git diff for working tree or…
nexxeln Mar 24, 2026
eb03997
tui: allow users to switch between uncommitted changes and full branc…
nexxeln Mar 24, 2026
f01ba61
core: ensure VCS state is cached even when branch is undefined to sup…
nexxeln Mar 24, 2026
050c861
docs: clarify that documentation covers both configuration and usage,…
nexxeln Mar 24, 2026
dc11d7b
Revert "docs: clarify that documentation covers both configuration an…
nexxeln Mar 24, 2026
62f70a9
Merge branch 'dev' into opencode/quiet-falcon
nexxeln Mar 24, 2026
ec81cb9
app: keep empty sessions from auto-opening review
nexxeln Mar 24, 2026
6cd76bc
app: keep new sessions on review without crashing live diff updates
nexxeln Mar 24, 2026
73de130
Merge remote-tracking branch 'origin/dev' into opencode/quiet-falcon
nexxeln Mar 24, 2026
1344a57
server: reset worktrees against each repo's default branch
nexxeln Mar 24, 2026
b679209
desktop: keep review diffs fresh after branch switches and external e…
nexxeln Mar 24, 2026
724fd59
wip: merge origin/dev into opencode/quiet-falcon
nexxeln Mar 24, 2026
7f7dc3b
server: keep gitlab workflow sessions working after provider updates
nexxeln Mar 24, 2026
18d8a13
wip: merge origin/dev into opencode/quiet-falcon
nexxeln Mar 25, 2026
7e2b9ac
refactor: remove type cast
nexxeln Mar 25, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion packages/app/src/context/global-sync/bootstrap.ts
Original file line number Diff line number Diff line change
Expand Up @@ -190,7 +190,7 @@ export async function bootstrapDirectory(input: {
input.sdk.vcs.get().then((x) => {
const next = x.data ?? input.store.vcs
input.setStore("vcs", next)
if (next?.branch) input.vcsCache.setStore("value", next)
if (next) input.vcsCache.setStore("value", next)
}),
),
() => retry(() => input.sdk.command.list().then((x) => input.setStore("command", x.data ?? []))),
Expand Down
10 changes: 6 additions & 4 deletions packages/app/src/context/global-sync/event-reducer.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -494,8 +494,10 @@ describe("applyDirectoryEvent", () => {
})

test("updates vcs branch in store and cache", () => {
const [store, setStore] = createStore(baseState())
const [cacheStore, setCacheStore] = createStore({ value: undefined as State["vcs"] })
const [store, setStore] = createStore(baseState({ vcs: { branch: "main", default_branch: "main" } }))
const [cacheStore, setCacheStore] = createStore({
value: { branch: "main", default_branch: "main" } as State["vcs"],
})

applyDirectoryEvent({
event: { type: "vcs.branch.updated", properties: { branch: "feature/test" } },
Expand All @@ -511,8 +513,8 @@ describe("applyDirectoryEvent", () => {
},
})

expect(store.vcs).toEqual({ branch: "feature/test" })
expect(cacheStore.value).toEqual({ branch: "feature/test" })
expect(store.vcs).toEqual({ branch: "feature/test", default_branch: "main" })
expect(cacheStore.value).toEqual({ branch: "feature/test", default_branch: "main" })
})

test("routes disposal and lsp events to side-effect handlers", () => {
Expand Down
4 changes: 2 additions & 2 deletions packages/app/src/context/global-sync/event-reducer.ts
Original file line number Diff line number Diff line change
Expand Up @@ -271,9 +271,9 @@ export function applyDirectoryEvent(input: {
break
}
case "vcs.branch.updated": {
const props = event.properties as { branch: string }
const props = event.properties as { branch?: string }
if (input.store.vcs?.branch === props.branch) break
const next = { branch: props.branch }
const next = { ...input.store.vcs, branch: props.branch }
input.setStore("vcs", next)
if (input.vcsCache) input.vcsCache.setStore("value", next)
break
Expand Down
2 changes: 2 additions & 0 deletions packages/app/src/i18n/en.ts
Original file line number Diff line number Diff line change
Expand Up @@ -535,6 +535,8 @@ export const dict = {
"session.review.noVcs.createGit.action": "Create Git repository",
"session.review.noSnapshot": "Snapshot tracking is disabled in config, so session changes are unavailable",
"session.review.noChanges": "No changes",
"session.review.noUncommittedChanges": "No uncommitted changes yet",
"session.review.noBranchChanges": "No branch changes yet",

"session.files.selectToOpen": "Select a file to open",
"session.files.all": "All files",
Expand Down
Loading
Loading