Remove unused persona marketplace and discover page files.
CI / check (22) (push) Failing after 16m32s
CI / check (24) (push) Failing after 15m50s

This commit is contained in:
2026-10-07 23:41:27 +02:00
parent 10ec76d437
commit 5ca611c113
34 changed files with 368 additions and 1216 deletions
+51 -20
View File
@@ -121,6 +121,8 @@ let chatLoadingDepth = 0;
let chatActivityDepth = 0;
let availableModelsById = new Map();
const personalitySelect = document.getElementById("personalitySelect");
let personalities = [];
const {setMessageContent, scrollMessagesToBottom, updateJumpToLatest, addMessage, renderMessages} = createMessageRenderer({
getChatById: (...args) => getChatById(...args),
@@ -136,9 +138,7 @@ const {setMessageContent, scrollMessagesToBottom, updateJumpToLatest, addMessage
renderDrawerSummary: (...args) => renderDrawerSummary(...args),
updateChatActionState: (...args) => updateChatActionState(...args),
updateComposerPlaceholder: (...args) => updateComposerPlaceholder(...args),
createNewChat: (...args) => createNewChat(...args),
openRoleplayStarter: (...args) => openRoleplayStarter(...args),
openPersonaForm: (...args) => openPersonaForm(...args)
createNewChat: (...args) => createNewChat(...args)
});
const {
@@ -146,11 +146,8 @@ const {
setRoleplayStarterNotice,
renderRoleplayStarterStep,
maybeShowPersonaNudge,
openPersonaForm,
closePersonaForm,
openRoleplayStarter,
closeRoleplayStarter,
loadPersonas,
clearChatUserPersona,
renderPersonaSection,
savePersona,
@@ -192,7 +189,8 @@ const {
updateJumpToLatest: (...args) => updateJumpToLatest(...args),
updateSendState: (...args) => updateSendState(...args),
loadSummary: (...args) => loadSummary(...args),
updateHistoryControls: () => updateHistoryControls()
updateHistoryControls: () => updateHistoryControls(),
getPersonalityId: () => personalitySelect?.value || "general-assistant"
});
const {updateSendState, resizeComposerInput, setLoadingState, stopGeneration, sendMessage} = createComposerController({
@@ -220,7 +218,7 @@ const {updateSendState, resizeComposerInput, setLoadingState, stopGeneration, se
});
const {exportCurrentChat, backupWorkspace, importWorkspaceFromFile} = createWorkspaceTransfer({
conversation, getChatById, setNotice, promptPopup, confirmPopup, setChatLoading, loadPersonas, loadChatSessions
conversation, getChatById, setNotice, promptPopup, confirmPopup, setChatLoading, loadChatSessions
});
const {editChatMessage, deleteChatMessage, retryLatestAssistantMessage, switchResponseVersion, switchRetryVariant, branchFromMessage} = createMessageActions({
conversation, setNotice, promptPopup, confirmPopup, setActiveChat, openCreatedChat, setLoadingState, loadSummary, renderMessages, addMessage, setMessageContent, webSearchToggle, reasoningToggle, modelSelect, messagesDiv, msgInput
@@ -334,7 +332,7 @@ function renderOnboardingStep() {
if (onboardingStep === 1) {
onboardingTitle.textContent = "Where shall we start?";
onboardingSubtitle.textContent = "Ask a question, explore an idea, or step into a story.";
[["ask", "Ask questions"], ["brainstorm", "Brainstorm ideas"], ["roleplay", "Roleplay with a character"]].forEach(([key, label]) => {
[["ask", "Ask questions"], ["brainstorm", "Explore ideas"], ["write", "Write something"], ["learn", "Learn a topic"]].forEach(([key, label]) => {
const button = document.createElement("button");
button.type = "button";
button.className = `secondary-action${onboardingIntent === key ? " active" : ""}`;
@@ -356,15 +354,6 @@ function renderOnboardingStep() {
button.className = "secondary-action";
button.textContent = template;
button.addEventListener("click", async () => {
if (onboardingIntent === "roleplay") {
closeOnboarding();
if (conversation.assistantPersonas.length) {
openRoleplayStarter();
} else {
openPersonaForm(null, "assistant");
}
return;
}
if (!conversation.activeChatId) await createNewChat();
msgInput.value = template;
msgInput.dispatchEvent(new Event("input"));
@@ -447,12 +436,54 @@ function updateWorkspaceCopy() {
if (activeChatTitle) {
activeChatTitle.textContent = activeChat ? activeChat.title : "New chat";
}
if (personalitySelect) {
personalitySelect.value = activeChat?.personality_id || personalitySelect.value || "general-assistant";
syncPersonalityIdentity();
}
renderDrawerSummary();
renderPersonaSection();
updateComposerPlaceholder();
}
function syncPersonalityIdentity() {
const personality = personalities.find(item => item.id === personalitySelect?.value);
if (personality && personalitySelect) personalitySelect.style.setProperty("--personality-accent", personality.accentColor);
}
async function loadPersonalities() {
const response = await get("/personalities");
if (response.error) return setNotice(response.error, "error");
personalities = response.personalities || [];
if (!personalitySelect) return;
personalitySelect.replaceChildren(...personalities.map(item => {
const option = document.createElement("option");
option.value = item.id;
option.textContent = `${item.name} · ${item.specialization}${item.isDefault ? " · Default" : ""}`;
option.title = `${item.description} Inspired by ${item.historicalInspiration}.`;
return option;
}));
const requested = new URLSearchParams(location.search).get("personality");
personalitySelect.value = getChatById(conversation.activeChatId)?.personality_id ||
(personalities.some(item => item.id === requested) ? requested : response.defaultPersonalityId) || "general-assistant";
syncPersonalityIdentity();
}
personalitySelect?.addEventListener("change", async () => {
const chatId = conversation.activeChatId;
const selected = personalitySelect.value;
syncPersonalityIdentity();
if (!chatId) return;
const response = await put(`/chats/${chatId}/personality`, {personalityId: selected});
if (response.error || !response.chat) {
updateWorkspaceCopy();
return setNotice(response.error || "Unable to change personality.", "error");
}
Object.assign(getChatById(chatId) || {}, response.chat);
updateWorkspaceCopy();
setNotice(`Personality changed to ${response.personality.name}.`, "success");
});
function renderDrawerSummary() {
const chat = getChatById(conversation.activeChatId);
if (!chatCharacterPill || !chatUserPersonaPill) return;
@@ -888,7 +919,7 @@ async function checkSession() {
attachmentComposer.restoreDraft(null);
resizeComposerInput();
}
await Promise.all([displayModels(), loadSummary(), loadChatSessions(), loadPersonas()]);
await Promise.all([displayModels(), loadSummary(), loadChatSessions(), loadPersonalities()]);
// Starters are offered on workspace home.
const starter = new URLSearchParams(location.search).get("prompt");
if (starter && !msgInput.value) { msgInput.value = starter; msgInput.dispatchEvent(new Event("input")); }
@@ -985,7 +1016,7 @@ if (headerModelButton) headerModelButton.addEventListener("click", (event) => {
openModelSettings();
});
saveGenerationSettingsBtn.addEventListener("click", () => { void saveGenerationSettings(); });
roleplayNewPersonaBtn.addEventListener("click", () => { closeRoleplayStarter(); openPersonaForm(null, "assistant"); });
roleplayNewPersonaBtn.addEventListener("click", closeRoleplayStarter);
clearUserPersonaBtn.addEventListener("click", () => {
closeChatDrawer();
void clearChatUserPersona();