fix(sessions): recover home-scoped list after fresh connect
* fix(sessions): use active connection client directly, remove roots filter Root cause A: loadSessions was calling clientForDirectory(serverHome) which scoped the session list to /home/azureuser — a different project than the server's active CWD. Sessions in the current project (e.g. opencode-mobile) were never returned. Root cause B: roots:true filtered out sessions that have a parentID (sub-task / AUTO-REVIEW sessions), hiding valid sessions from the list. Fix: use connState.client directly (the connection's active directory) and drop the roots filter so all sessions for that project are visible. Also adds a verify_session_list CUA smoke scenario that navigates back to the sessions tab after creating a session and asserts the list is non-empty — covering the regression path that was previously untested. * fix(sessions): fetch serverHome in addConnection so loadSessions shows correct sessions Root cause: addConnection() built the HTTP client but never fetched serverHome (only loadConnections and setActiveConnection did). When the user adds a new connection (fresh install / first sign-in), serverHome = null, so loadSessions fell through to connState.client (the server's CWD). On this dev server the CWD is the deploy directory — 11 old May-19 sessions that are not the user's recent work sessions. Fix: addConnection now fetches currentProject + serverHome via the same Promise.all as setActiveConnection, before calling set(). This ensures loadSessions immediately uses clientForDirectory(serverHome) → the global project → the user's actual recent parent sessions. Also adds --opencode-url flag to the CUA smoke script, which appends a connect_and_verify_sessions scenario that reproduces the regression: python scripts/android-cua-smoke.py --opencode-url http://100.108.64.76:4096 * fix(sessions): recover home scope after fresh connect Resolve stale deploy-only session list by recovering server home during first load and keeping regression coverage in default Android CUA smoke and CI. * chore(release): bump version to 0.4.0
This commit is contained in:
@@ -142,15 +142,31 @@ export const useConnections = create<ConnectionsState>((set, get) => ({
|
||||
let base = get().clientBase
|
||||
let activeConnection = get().activeConnection
|
||||
|
||||
let project = get().currentProject
|
||||
let serverHome = get().serverHome
|
||||
|
||||
if (newConnection.active) {
|
||||
activeConnection = newConnection
|
||||
const auth = newConnection.username && password ? { username: newConnection.username, password } : undefined
|
||||
const built = buildClient(newConnection.url, newConnection.directory, auth)
|
||||
client = built.client
|
||||
base = built.base
|
||||
|
||||
// Fetch server metadata so loadSessions can use clientForDirectory(serverHome)
|
||||
// immediately after the connection is added (same as setActiveConnection does).
|
||||
try {
|
||||
const [proj, paths] = await Promise.all([
|
||||
client.project.current().catch(() => null),
|
||||
client.path.get().catch(() => null),
|
||||
])
|
||||
project = proj
|
||||
serverHome = paths?.home || null
|
||||
} catch {
|
||||
// Server might be unreachable; proceed without metadata
|
||||
}
|
||||
}
|
||||
|
||||
set({ connections, activeConnection, client, clientBase: base })
|
||||
set({ connections, activeConnection, client, clientBase: base, currentProject: project, serverHome })
|
||||
},
|
||||
|
||||
removeConnection: async (id) => {
|
||||
|
||||
Reference in New Issue
Block a user