You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Commit eefc102
Browse filesBrowse the repository at this point in the historyBrowse files
Shadowfetch
authored and
Shadowfetch
committed
Align native qualification with the current first-run workspace
Copy file name to clipboardExpand all lines: README.md
+6-1Lines changed: 6 additions & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -214,7 +214,12 @@ assets are checksum-only and cannot be installed by this new entry point; use
214
214
the instructions shipped with that released version for those existing assets.
215
215
The 0.33.0 release attempt failed before signing and publication. Its tag stays
216
216
unchanged. Version 0.33.1 was the first signed release; the public trust policy
217
-
in `release/trust` now authorizes 0.33.0 through 2.3.3. An older independently trusted installer bundle whose policy ends at 2.3.1 will reject 2.3.3. Obtain and independently authenticate a reviewed bundle with the updated policy before installing; do not replace trust files with copies from the downloaded release.
217
+
in this source checkout's `release/trust` authorizes 0.33.0 through the 2.4.0 candidate;
218
+
the latest published release is still 2.3.3. The policy range does not establish
219
+
that a candidate has been published or qualified. An older independently trusted
220
+
installer bundle whose policy ends at 2.3.1 will reject 2.3.3. Obtain and
221
+
independently authenticate a reviewed bundle with the updated policy before
222
+
installing; do not replace trust files with copies from the downloaded release.
218
223
For development, use [Build from source](#build-from-source).
219
224
220
225
Obtain an independently authenticated installer bundle as described below,
assert.equal(awaitexecute("return new URL(document.querySelector('script[type=module]').src).pathname"),expectedScript,"The binary embeds the current ui/dist build");
assert.doesNotMatch(onboarding,/\b(Provider|provider|Endpoint|endpoint|APIkey|Chooseamodel|Next)\b/,"Onboarding has no model step");
496
-
assert.deepEqual(awaitexecute("return [...document.querySelectorAll('.wizard input, .wizard select, .wizard textarea')].map(e=>e.type||e.tagName)"),["text","radio","radio"],"Onboarding asks only for the folder and the permission mode");
497
-
assert.equal(awaitexecute("return document.querySelector('input[name=onboarding-mode]:checked').closest('label').textContent.includes('Ask before actions')"),true,"Ask before actions is the default");
493
+
awaitassertFolderOnboarding(execute);
498
494
awaitfill("#onboarding-folder",project);
499
495
awaitsetTheme("light");
500
496
awaitscreenshot("onboarding");
501
497
awaitaccessibility("onboarding");
502
-
awaitclickButton("Trust and open");
503
-
// Without any ready model (no signed-in subscription on this machine), the
504
-
// first run asks how to get one; this run skips it (test-native-first-run.mjs
505
-
// covers that step).
506
-
constmodelStep=awaituntil("Onboarding closes or asks for a model",()=>execute("if(!document.querySelector('.wizard'))return 'closed';return /Choose how ShadowCode thinks/.test(document.body.innerText)?'model':false"),20000);
assert.equal(cfgValues.permissions?.mode,"ask","Onboarding saved Ask before actions");
519
-
note("first run: folder, trust and permission mode (Ask before actions), no model step");
500
+
awaitassertWorkspacePermissions(api,project);
501
+
note("first run: Open project trusts the folder, saves ask-first workspace permissions and opens the composer directly");
520
502
// Onboarding saves "system"; the screenshots below choose explicitly.
521
503
awaitsetTheme("light");
522
504
@@ -528,8 +510,7 @@ try {
528
510
});
529
511
assert.ok(suggestions.length<=3,`At most three suggestions (${suggestions})`);
530
512
assert.equal(awaitexecute("return document.querySelectorAll('.unified-picker-trigger').length"),1,"Exactly one model picker");
531
-
// More's "New worktree starts from" branch list is the one select allowed.
532
-
assert.equal(awaitexecute("return [...document.querySelectorAll('select')].filter(s=>!s.closest('.worktree-base')).length"),0,"No select-based model controls in the workspace");
awaituntil("Inline model setup",()=>visible(".welcome-model-setup .model-setup"),30000);
233
+
awaitassertWelcomeModelSetup(execute);
234
+
awaitassertWelcomeControls(execute);
235
+
// Catalog rendering is asynchronous even when the API above has returned.
236
+
awaituntil("Local recommendation settled",()=>execute("const e=document.querySelector('.welcome-model-setup .model-setup-detail');return !!e && !/Checking what this computer can run/.test(e.innerText)"),30000);
assert.ok(!picker.targets.some((t)=>t.availability==="ready"),"No model is ready on a first run without accounts");
238
245
assert.equal(existsSync(downloads) ? (awaitreaddir(downloads)).length : 0,0,"Nothing is downloaded before a click");
239
246
awaitscreenshot("first-run-model-step");
240
247
awaitaccessibility("first-run-model-step");
241
-
note(`first run without accounts: model step with three choices${recommended ? `, ${recommended.name} preselected` : ""}; nothing downloaded`);
248
+
note(`first run without accounts: inline provider connections, API key form and local download${recommended ? `, ${recommended.name} preselected` : ""}; nothing downloaded`);
0 commit comments