SOURCE / PINNED RELEASE
Made of little things.
Napcraft
- Release
- ee47ac6a25df…
- Author-recorded commit
- 410dea87e109…
- License
- LICENSE
- Author’s source reference
- nostr://npub182jczunncwe0jn6frpqwq3e0qjws7yqqnc3auccqv9nte2dnd63scjm4rf/wss%3A%2F%2Fgit.napplet.soy%2F/n-52f9e22f5ce
Archive hash verified: 9e6e0cabb18d0d46…. The source-to-build association is the author’s claim; it has not been independently rebuilt.
import { chromium, executable, frameOf, approveLocalPrompts } from './browser-support.mjs';
import { readFile, writeFile } from 'node:fs/promises';
import assert from 'node:assert/strict';
const fixture=process.argv[2];
if (!fixture) throw new Error('Pass a saved {code,edits} JSON fixture for an ORIGINAL pinned world.');
const saved=JSON.parse(await readFile(fixture,'utf8'));
const browser=await chromium.launch({executablePath:executable,headless:true});
try {
const page=await browser.newPage();await page.goto(process.env.NAPCRAFT_URL);
const stop=approveLocalPrompts(page),frame=await frameOf(page);
await frame.evaluate(()=>{window.calls=[];const old=window.napplet.cvm.registry.call.bind(window.napplet.cvm.registry);window.napplet.cvm.registry.call=(f,t,a,o)=>{window.calls.push({tool:t,args:a});return old(f,t,a,o)};});
await frame.locator('#join').click();await frame.locator('#code').fill(saved.code);await frame.locator('#confirmJoin').click();await frame.locator('#share').waitFor();
await frame.waitForFunction(n=>Number(document.querySelector('canvas').dataset.confirmedEdits)===n,saved.edits);
await frame.locator('#place').click();await frame.locator('#remove').click();
await frame.waitForFunction(n=>Number(document.querySelector('canvas').dataset.confirmedEdits)===n&&document.querySelector('#app').dataset.pending==='0',saved.edits+2);
const operations=await frame.evaluate(()=>window.calls.map(c=>c.args.operation));
assert.ok(operations.includes('editBlock'));assert.ok(!operations.includes('editBlocks'));
saved.edits+=2;await writeFile(fixture,JSON.stringify(saved));
console.log('PASS existing pinned release remains editable with legacy operations; edits',saved.edits);
stop();
}finally{await browser.close();}
