The clients called all three RPCs with `{}`, so the server's session-less
fallback (`_completion_cwd({})`) read the process TERMINAL_CWD, which
`gateway/run.py` rewrites to $HOME at import in the default-config case: the
catalog, popup and reload still missed the session's project skills.
- ui-tui: `useCompletion` adds `session_id` to `complete.slash`;
`/reload-skills` sends it on `skills.reload` and the follow-up
`commands.catalog`; the gateway-ready catalog fetch sends it when a session
already exists (reconnect). Before the first session the gateway binds the
same workspace it seeds a new session with.
- Desktop: `useSlashCompletions` takes `sessionId`, sends it on both RPCs and
keys the completion cache per session so two chats in two repos don't
serve each other's catalog.