Update Dev branch #11
+4
-4
@@ -1,7 +1,7 @@
|
|||||||
import { get, post, put } from "./js/api.js?v=20260909-account-controls";
|
import { get, post, put } from "./api.js?v=20260909-account-controls";
|
||||||
import { initializeAppearance } from "./js/themeController.js?v=20260909-account-controls";
|
import { initializeAppearance } from "./themeController.js?v=20260909-account-controls";
|
||||||
import { clearStatus, setStatus } from "./js/statusNotice.js?v=20260909-account-controls";
|
import { clearStatus, setStatus } from "./statusNotice.js?v=20260909-account-controls";
|
||||||
import { populatePersonaForm, readPersonaForm } from "./js/personaForm.js?v=20260909-account-controls";
|
import { populatePersonaForm, readPersonaForm } from "./personaForm.js?v=20260909-account-controls";
|
||||||
|
|
||||||
const $ = (id) => document.getElementById(id);
|
const $ = (id) => document.getElementById(id);
|
||||||
const marketPersonaList = $("marketPersonaList");
|
const marketPersonaList = $("marketPersonaList");
|
||||||
|
|||||||
+10
-10
@@ -1,12 +1,12 @@
|
|||||||
import { del, get, post, put, stream } from "./js/api.js?v=20260909-account-controls";
|
import { del, get, post, put, stream } from "./api.js?v=20260909-account-controls";
|
||||||
import { regenerateInline } from "./js/regeneration.js";
|
import { regenerateInline } from "./regeneration.js";
|
||||||
import { appendSources, createWebSearchToggle } from "./js/webSearch.js";
|
import { appendSources, createWebSearchToggle } from "./webSearch.js";
|
||||||
import { appendAttachments, createAttachmentComposer } from "./js/attachments.js";
|
import { appendAttachments, createAttachmentComposer } from "./attachments.js";
|
||||||
import { createReasoningToggle, finishReasoning, updateReasoning } from "./js/reasoning.js?v=20260921-reasoning-capability";
|
import { createReasoningToggle, finishReasoning, updateReasoning } from "./reasoning.js?v=20260921-reasoning-capability";
|
||||||
import { closeChatDrawer, openChatDrawer } from "./js/chatDrawer.js?v=20260909-account-controls";
|
import { closeChatDrawer, openChatDrawer } from "./chatDrawer.js?v=20260909-account-controls";
|
||||||
import { onboardingPrompts, requestedChatId } from "./js/constants.js?v=20260909-account-controls";
|
import { onboardingPrompts, requestedChatId } from "./constants.js?v=20260909-account-controls";
|
||||||
import { getModelProfile } from "./js/modelProfiles.js?v=20260909-account-controls";
|
import { getModelProfile } from "./modelProfiles.js?v=20260909-account-controls";
|
||||||
import { applyTheme as applySharedTheme, applyThemeMode as applySharedThemeMode, readStoredAppearance } from "./js/themeController.js?v=20260909-account-controls";
|
import { applyTheme as applySharedTheme, applyThemeMode as applySharedThemeMode, readStoredAppearance } from "./themeController.js?v=20260909-account-controls";
|
||||||
import {
|
import {
|
||||||
activeChatTitle,
|
activeChatTitle,
|
||||||
activeUserPersonaStatus,
|
activeUserPersonaStatus,
|
||||||
@@ -103,7 +103,7 @@ import {
|
|||||||
brandLogoTargets,
|
brandLogoTargets,
|
||||||
brandNameTargets,
|
brandNameTargets,
|
||||||
userPersonaList
|
userPersonaList
|
||||||
} from "./js/dom.js?v=20260909-account-controls";
|
} from "./dom.js?v=20260909-account-controls";
|
||||||
|
|
||||||
const headerModelButton = document.getElementById("headerModelButton");
|
const headerModelButton = document.getElementById("headerModelButton");
|
||||||
const webSearchButton = document.getElementById("webSearch");
|
const webSearchButton = document.getElementById("webSearch");
|
||||||
|
|||||||
@@ -1,11 +1,11 @@
|
|||||||
import { del, get, post, put } from "./js/api.js?v=20260909-account-controls";
|
import { del, get, post, put } from "./api.js?v=20260909-account-controls";
|
||||||
import {
|
import {
|
||||||
applyTheme as applySharedTheme,
|
applyTheme as applySharedTheme,
|
||||||
applyThemeMode as applySharedThemeMode,
|
applyThemeMode as applySharedThemeMode,
|
||||||
initializeAppearance
|
initializeAppearance
|
||||||
} from "./js/themeController.js?v=20260909-account-controls";
|
} from "./themeController.js?v=20260909-account-controls";
|
||||||
import { clearStatus, setStatus } from "./js/statusNotice.js?v=20260909-account-controls";
|
import { clearStatus, setStatus } from "./statusNotice.js?v=20260909-account-controls";
|
||||||
import { populatePersonaForm, readPersonaForm } from "./js/personaForm.js?v=20260909-account-controls";
|
import { populatePersonaForm, readPersonaForm } from "./personaForm.js?v=20260909-account-controls";
|
||||||
|
|
||||||
const $ = (id) => document.getElementById(id);
|
const $ = (id) => document.getElementById(id);
|
||||||
const settingsNotice = $("settingsNotice");
|
const settingsNotice = $("settingsNotice");
|
||||||
|
|||||||
+4
-4
@@ -30,11 +30,11 @@ const files = [
|
|||||||
"src/services/workspaceImportService.js",
|
"src/services/workspaceImportService.js",
|
||||||
"src/services/modelService.js",
|
"src/services/modelService.js",
|
||||||
"src/services/personaService.js",
|
"src/services/personaService.js",
|
||||||
"public/script.js",
|
"public/js/script.js",
|
||||||
"public/pages.js",
|
"public/js/pages.js",
|
||||||
"public/js/workspaceNavigation.js",
|
"public/js/workspaceNavigation.js",
|
||||||
"public/settings.js",
|
"public/js/settings.js",
|
||||||
"public/market.js",
|
"public/js/market.js",
|
||||||
"public/js/api.js",
|
"public/js/api.js",
|
||||||
"public/js/regeneration.js",
|
"public/js/regeneration.js",
|
||||||
"public/js/webSearch.js",
|
"public/js/webSearch.js",
|
||||||
|
|||||||
+8
-2
@@ -1017,7 +1017,7 @@ test("public pages, workspace guards, and legacy chat links have distinct destin
|
|||||||
assert.match(await home.text(), /What would you like to do/);
|
assert.match(await home.text(), /What would you like to do/);
|
||||||
const chat = await fetch(server.baseUrl + "/app/chats/new", {headers: jar.headers()});
|
const chat = await fetch(server.baseUrl + "/app/chats/new", {headers: jar.headers()});
|
||||||
const html = await chat.text();
|
const html = await chat.text();
|
||||||
assert.ok(html.includes('src="/script.js'));
|
assert.ok(html.includes('src="/js/script.js'));
|
||||||
assert.ok(!html.includes('id="loginForm"'));
|
assert.ok(!html.includes('id="loginForm"'));
|
||||||
assert.deepEqual((await request(server.baseUrl, "/chats", {jar})).json.chats, [], "home and chat pages do not create chats on GET");
|
assert.deepEqual((await request(server.baseUrl, "/chats", {jar})).json.chats, [], "home and chat pages do not create chats on GET");
|
||||||
await request(server.baseUrl, "/logout", {method: "POST", body: {}, jar});
|
await request(server.baseUrl, "/logout", {method: "POST", body: {}, jar});
|
||||||
@@ -1071,7 +1071,7 @@ test("page headers share navigation and keep session markup private", async () =
|
|||||||
test("frontend scripts and styles revalidate across deployments", async () => {
|
test("frontend scripts and styles revalidate across deployments", async () => {
|
||||||
const server = await startTestServer({config: {staticMaxAge: "1h"}});
|
const server = await startTestServer({config: {staticMaxAge: "1h"}});
|
||||||
try {
|
try {
|
||||||
for (const asset of ["/script.js?v=20260909-account-controls", "/app/dom.js?v=20260909-account-controls", "/pages.css?v=20260909-account-controls"]) {
|
for (const asset of ["/js/script.js?v=20260909-account-controls", "/js/dom.js?v=20260909-account-controls", "/css/pages.css?v=20260909-account-controls"]) {
|
||||||
const response = await fetch(server.baseUrl + asset);
|
const response = await fetch(server.baseUrl + asset);
|
||||||
assert.equal(response.status, 200);
|
assert.equal(response.status, 200);
|
||||||
assert.equal(response.headers.get("cache-control"), "no-cache");
|
assert.equal(response.headers.get("cache-control"), "no-cache");
|
||||||
@@ -1079,5 +1079,11 @@ test("frontend scripts and styles revalidate across deployments", async () => {
|
|||||||
assert.ok(etag);
|
assert.ok(etag);
|
||||||
await response.text();
|
await response.text();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
for (const entrypoint of ["/js/script.js", "/js/settings.js", "/js/market.js"]) {
|
||||||
|
const response = await fetch(server.baseUrl + entrypoint);
|
||||||
|
assert.equal(response.status, 200);
|
||||||
|
assert.doesNotMatch(await response.text(), /from\s+["']\.\/js\//, `${entrypoint} must not resolve dependencies below /js/js`);
|
||||||
|
}
|
||||||
} finally { await server.close(); }
|
} finally { await server.close(); }
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
import test from "node:test";
|
import test from "node:test";
|
||||||
import assert from "node:assert/strict";
|
import assert from "node:assert/strict";
|
||||||
import {readFile} from "node:fs/promises";
|
import {readFile} from "node:fs/promises";
|
||||||
import {regenerateInline} from "../public/app/regeneration.js";
|
import {regenerateInline} from "../public/js/regeneration.js";
|
||||||
|
|
||||||
class Element {
|
class Element {
|
||||||
constructor(tag = "div") {
|
constructor(tag = "div") {
|
||||||
@@ -86,7 +86,7 @@ test("inline renderer streams in place, follows only nearby output, commits or r
|
|||||||
});
|
});
|
||||||
|
|
||||||
test("Regenerate uses inline activity and never reloads or appends a chat message", async () => {
|
test("Regenerate uses inline activity and never reloads or appends a chat message", async () => {
|
||||||
const source = await readFile(new URL("../public/script.js", import.meta.url), "utf8");
|
const source = await readFile(new URL("../public/js/script.js", import.meta.url), "utf8");
|
||||||
const regenerate = source.slice(source.indexOf("async function retryLatestAssistantMessage"), source.indexOf("async function switchResponseVersion"));
|
const regenerate = source.slice(source.indexOf("async function retryLatestAssistantMessage"), source.indexOf("async function switchResponseVersion"));
|
||||||
assert.match(regenerate, /setLoadingState\(true, false\)/);
|
assert.match(regenerate, /setLoadingState\(true, false\)/);
|
||||||
assert.match(regenerate, /regenerateInline/);
|
assert.match(regenerate, /regenerateInline/);
|
||||||
|
|||||||
Reference in New Issue
Block a user