Skip to content

Commit b5fae24

Browse files
Merge pull request #9 from SaridakisStamatisChristos/codex/fix-pyodide-loading-on-github-pages
Improve Pyodide initialization feedback on the web demo
2 parents ea900d1 + f71ef88 commit b5fae24

File tree

1 file changed

+30
-8
lines changed

1 file changed

+30
-8
lines changed

web/index.html

Lines changed: 30 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -44,10 +44,14 @@ <h3>Log</h3>
4444
for(let i=0;i<81;i++){ cells[i].value = v[i]?String(v[i]):''; }
4545
}
4646

47+
const PYODIDE_INDEX_URL = "https://cdn.jsdelivr.net/pyodide/v0.26.1/full/";
4748
let pyodideReady = (async ()=>{
48-
const py = await loadPyodide();
49-
await py.loadPackage([]);
50-
const code = `
49+
try {
50+
log("Downloading Pyodide runtime...");
51+
const py = await loadPyodide({ indexURL: PYODIDE_INDEX_URL });
52+
log("Initializing solver...");
53+
await py.loadPackage([]);
54+
const code = `
5155
from typing import List, Tuple
5256
def col_cell(r, c): return r*9 + c
5357
def col_row(r, v): return 81 + r*9 + (v-1)
@@ -134,14 +138,26 @@ <h3>Log</h3>
134138
return g
135139
def clues_from_grid(g):
136140
return [(r,c,g[r][c]) for r in range(9) for c in range(9) if g[r][c]!=0]
137-
`);
138-
py.runPython(code);
139-
return py;
141+
`;
142+
py.runPython(code);
143+
log("Pyodide ready. Enter digits and press Solve.");
144+
return py;
145+
} catch (err) {
146+
console.error("Failed to load Pyodide", err);
147+
log("Failed to load Pyodide. See console for details.");
148+
throw err;
149+
}
140150
})();
141151

142152
function log(msg){ logEl.textContent = msg; }
143153
document.getElementById('solveBtn').onclick = async ()=>{
144-
const py = await pyodideReady;
154+
let py;
155+
try {
156+
py = await pyodideReady;
157+
} catch (err) {
158+
log("Pyodide is not available.");
159+
return;
160+
}
145161
const v = readGrid();
146162
log("Solving...");
147163
py.globals.set("vals", v);
@@ -161,7 +177,13 @@ <h3>Log</h3>
161177
log("Solved. Solutions="+cnt);
162178
};
163179
document.getElementById('clearBtn').onclick = ()=>{ writeGrid(Array(81).fill(0)); log("Cleared."); };
164-
document.getElementById('sampleBtn').onclick = ()=>{
180+
document.getElementById('sampleBtn').onclick = async ()=>{
181+
try {
182+
await pyodideReady;
183+
} catch (err) {
184+
log("Cannot load sample because Pyodide failed to initialize.");
185+
return;
186+
}
165187
const s=("53..7...."+"6..195..."+".98....6."+"8...6...3"+"4..8.3..1"+"7...2...6"+".6....28."+"...419..5"+"....8..79");
166188
const arr=[...s].map(ch=> ch==='.'?0:parseInt(ch,10)); writeGrid(arr); log("Loaded sample.");
167189
};

0 commit comments

Comments
 (0)