Observation
When a proactive hint is revealed into the chat — via the banner ("Open chat" / "Show me"), the inline gutter hover ("Open chat"), or the status-bar lamp — the extension focuses the Iris chat view (iris.chatView.focus) and opens the proactive session by id, but it does not guarantee the chat view is bound to the exercise the hint actually belongs to.
If the chat view is currently showing a different exercise/course (the student navigated away, the workspace holds several exercises, or a stale binding lingers), the reveal just focuses whatever the chat last showed. The revealed hint can then land in — or appear against — the wrong context. Observed during testing: the chat showed "Iris chat is not enabled for this exercise" for an unrelated exercise while a hint for a different exercise was being revealed.
Expected
Any reveal action should activate the correct chat context first: switch the Iris chat to the hint's exercise (the episode's exerciseId) and its proactive session, then focus and post the revealed hint there. The student should always land in the conversation the hint belongs to, regardless of what the chat view was showing before.
Where it likely lives
iris.intervention.inlineOpen handler (src/extension/telemetry/index.ts, ~176): today it does revealParkedHint() + executeCommand('iris.chatView.focus') — focus only, no exercise switch.
- The banner "Open chat"/"Show me" actions and the lamp click take the same reveal path.
openSession -> openProactiveSession(sessionId) opens the session by id, but the chat provider's active-exercise binding is a separate piece of state that is not re-pointed on reveal.
Notes
Observation
When a proactive hint is revealed into the chat — via the banner ("Open chat" / "Show me"), the inline gutter hover ("Open chat"), or the status-bar lamp — the extension focuses the Iris chat view (
iris.chatView.focus) and opens the proactive session by id, but it does not guarantee the chat view is bound to the exercise the hint actually belongs to.If the chat view is currently showing a different exercise/course (the student navigated away, the workspace holds several exercises, or a stale binding lingers), the reveal just focuses whatever the chat last showed. The revealed hint can then land in — or appear against — the wrong context. Observed during testing: the chat showed "Iris chat is not enabled for this exercise" for an unrelated exercise while a hint for a different exercise was being revealed.
Expected
Any reveal action should activate the correct chat context first: switch the Iris chat to the hint's exercise (the episode's
exerciseId) and its proactive session, then focus and post the revealed hint there. The student should always land in the conversation the hint belongs to, regardless of what the chat view was showing before.Where it likely lives
iris.intervention.inlineOpenhandler (src/extension/telemetry/index.ts, ~176): today it doesrevealParkedHint()+executeCommand('iris.chatView.focus')— focus only, no exercise switch.openSession->openProactiveSession(sessionId)opens the session by id, but the chat provider's active-exercise binding is a separate piece of state that is not re-pointed on reveal.Notes