Skip to content
Draft
Changes from 1 commit
Commits
Show all changes
21 commits
Select commit Hold shift + click to select a range
b6f9e17
feat: websocket-only frontend for VS Code-style notebook hosts (#281)
sspickle Aug 16, 2026
b4b1757
feat: comm-only frontend for Google Colab
sspickle Aug 16, 2026
32dae7b
fix: compound/text/extrusion/pause deadlock forever in Colab — raise …
sspickle Aug 16, 2026
a1dff68
fix: self-healing bootstrap — Colab sometimes drops mid-import display
sspickle Aug 16, 2026
51f6667
fix: retry comm-open from the kernel idle loop
sspickle Aug 16, 2026
f3029f1
fix: comm-open retries must not close previous attempts
sspickle Aug 16, 2026
3a2b741
feat: browser-initiated comm handshake for Colab (kernel target + com…
sspickle Aug 16, 2026
f3d621b
fix: session nonce freezes out zombie bootstrap frames
sspickle Aug 16, 2026
c9bc63a
fix: fallback opens carry the session nonce too
sspickle Aug 16, 2026
32e1647
fix: load the Colab bootstrap as an external CDN script
sspickle Aug 16, 2026
1fd6455
fix: drop the idle-loop comm retry — it made Colab drop display outputs
sspickle Aug 16, 2026
57298f4
fix: never display from import — Colab drops import-time display output
sspickle Aug 16, 2026
3dc277a
fix: self-heal displays the bootstrap once, not per unconnected cell
sspickle Aug 16, 2026
1a0501b
fix: show() injects the CDN bootstrap dynamically
sspickle Aug 16, 2026
c7d7b4b
feat: scene replay on every frontend attach
sspickle Aug 16, 2026
f299def
fix: cache-bust the evolving frontend files with the session nonce
sspickle Aug 16, 2026
dd5ca1a
fix: backfill the journal with cmds emitted before the frontend imported
sspickle Aug 17, 2026
ab0123d
fix: follow-up cmds (title/caption) must not clobber constructors in …
sspickle Aug 17, 2026
48b25c4
fix: journal copies constructors at replay time, not record time
sspickle Aug 17, 2026
8475feb
fix: replay cmds in original emission order (dim-scene bug)
sspickle Aug 17, 2026
d534f6b
feat: VPYTHON_WS_PORT pins the websocket port
sspickle Aug 17, 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
Prev Previous commit
Next Next commit
fix: show() injects the CDN bootstrap dynamically
Colab strips script-src attributes in display HTML (and skips large
inline scripts), but a small inline script may insert external scripts
freely. Verified end-to-end live: render -> boot -> comms.open -> connect
-> flush (connected True, backlog flushed).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01G7y9rTA1r8r8EhEnPSQenR
  • Loading branch information
sspickle and claude committed Aug 16, 2026
commit 1a0501bc39866aa68e6d71aa813bb5d4099a684a
13 changes: 9 additions & 4 deletions vpython/with_colab.py
Original file line number Diff line number Diff line change
Expand Up @@ -93,10 +93,15 @@ def show():
activate large inline scripts in display output — observed 2026-08 —
while script-src tags and one-liners run fine.)"""
display(HTML(
'<div id="vpython-colab-root"></div>'
'<script src="' + CDN_BASE + 'glowcomm_colab.js"></script>'
'<script>window.__VPYTHON_COLAB_BOOT({cdn: "' + CDN_BASE +
'", nonce: "' + SESSION_NONCE + '"});</script>'))
"<div id='vpython-colab-root'></div>"
"<script>(function(){"
"var s=document.createElement('script');"
"s.src='" + CDN_BASE + "glowcomm_colab.js';"
"s.onload=function(){window.__VPYTHON_COLAB_BOOT({cdn:'" + CDN_BASE +
"',nonce:'" + SESSION_NONCE + "'});};"
"s.onerror=function(){document.getElementById('vpython-colab-root')"
".textContent='VPython: failed to load bootstrap from CDN';};"
"document.head.appendChild(s);})();</script>"))


def _wire_comm(comm):
Expand Down