ui: Stores architecture improvements (#26910)

* refactor: Stores barrel imports + SSR gates

* refactor: Drop agenticStore wrapper exports

* refactor: Drop chatStore wrapper exports

* refactor: Drop modelsStore wrapper exports

* refactor: Drop serverStore wrapper exports

* refactor: Drop unused mcpStore wrapper exports

* refactor: Drop mcpResourceStore wrapper exports

* refactor: Drop conversationsStore wrapper exports + move buildConversationTree to utils

* refactor: Drop settingsStore wrapper exports

* refactor: Drop unused toolsStore wrapper exports

* refactor: Fix lint errors from store wrapper removal

* fix: Missing change

* refactor: Cleanup

* refactor: Context Stats store
This commit is contained in:
Aleksander Grygier
2026-08-13 08:11:30 +02:00
committed by GitHub
parent a6040c925c
commit 094e53db1c
116 changed files with 937 additions and 945 deletions
@@ -1,7 +1,7 @@
import { CONFIG_LOCALSTORAGE_KEY, SETTING_CONFIG_DEFAULT } from '$lib/constants';
import { ParameterSyncService } from '$lib/services/parameter-sync.service';
import { serverStore } from '$lib/stores/server.svelte';
import { config, settingsStore } from '$lib/stores/settings.svelte';
import { settingsStore } from '$lib/stores/settings.svelte';
import type { SettingsConfigType } from '$lib/types';
import { beforeEach, describe, expect, it } from 'vitest';
@@ -40,7 +40,7 @@ function mockProps(uiSettings: Record<string, Primitive>) {
const setUser = (key: string, value: Primitive) =>
settingsStore.updateConfig(key as keyof SettingsConfigType, value as never);
const current = (key: string) => (config() as Record<string, unknown>)[key];
const current = (key: string) => (settingsStore.config as Record<string, unknown>)[key];
describe('registry-wide invariants', () => {
beforeEach(() => {
@@ -6,7 +6,7 @@
import { CONFIG_LOCALSTORAGE_KEY } from '$lib/constants';
import { MigrationService } from '$lib/services/migration.service';
import { config, settingsStore } from '$lib/stores/settings.svelte';
import { settingsStore } from '$lib/stores/settings.svelte';
import { beforeEach, describe, expect, it } from 'vitest';
const RENDER_KEYS_MIGRATION_ID = 'render-keys-unfold-v1';
@@ -33,22 +33,22 @@ describe('renderContentAsRawText unfolding', () => {
it('maps raw text to user content as plain text', async () => {
await seedConfig({ renderContentAsRawText: true });
expect(config().renderUserContentAsMarkdown).toBe(false);
expect(settingsStore.config.renderUserContentAsMarkdown).toBe(false);
});
it('maps markdown to user content as markdown', async () => {
await seedConfig({ renderContentAsRawText: false });
expect(config().renderUserContentAsMarkdown).toBe(true);
expect(settingsStore.config.renderUserContentAsMarkdown).toBe(true);
});
it('leaves thinking on its own default', async () => {
await seedConfig({ renderContentAsRawText: true });
expect(config().renderThinkingAsMarkdown).toBe(true);
expect(settingsStore.config.renderThinkingAsMarkdown).toBe(true);
});
it('keeps an explicit user preference over the toggle', async () => {
await seedConfig({ renderContentAsRawText: true, renderUserContentAsMarkdown: true });
expect(config().renderUserContentAsMarkdown).toBe(true);
expect(settingsStore.config.renderUserContentAsMarkdown).toBe(true);
});
it('drops the toggle from the persisted config', async () => {
@@ -58,7 +58,7 @@ describe('renderContentAsRawText unfolding', () => {
it('leaves both surfaces on markdown when nothing is stored', async () => {
await seedConfig({});
expect(config().renderUserContentAsMarkdown).toBe(true);
expect(config().renderThinkingAsMarkdown).toBe(true);
expect(settingsStore.config.renderUserContentAsMarkdown).toBe(true);
expect(settingsStore.config.renderThinkingAsMarkdown).toBe(true);
});
});
@@ -1,6 +1,6 @@
import { CONFIG_LOCALSTORAGE_KEY } from '$lib/constants';
import { serverStore } from '$lib/stores/server.svelte';
import { config, settingsStore } from '$lib/stores/settings.svelte';
import { settingsStore } from '$lib/stores/settings.svelte';
import { beforeEach, describe, expect, it } from 'vitest';
function mockProps(uiSettings: Record<string, string | number | boolean>) {
@@ -25,7 +25,7 @@ describe('server ui_settings application semantics', () => {
settingsStore.syncWithServerDefaults();
expect(config().theme).toBe('dark');
expect(settingsStore.config.theme).toBe('dark');
});
it('never reapplies on later loads: the user config diverges freely', () => {
@@ -40,8 +40,8 @@ describe('server ui_settings application semantics', () => {
settingsStore.syncWithServerDefaults();
settingsStore.syncWithServerDefaults();
expect(config().theme).toBe('light');
expect(config().apiKey).toBe('sk-user-key');
expect(settingsStore.config.theme).toBe('light');
expect(settingsStore.config.apiKey).toBe('sk-user-key');
const stored = JSON.parse(localStorage.getItem(CONFIG_LOCALSTORAGE_KEY) ?? '{}');
expect(stored.apiKey).toBe('sk-user-key');
@@ -55,8 +55,8 @@ describe('server ui_settings application semantics', () => {
settingsStore.forceSyncWithServerDefaults();
expect(config().theme).toBe('dark');
expect(config().apiKey).toBe('');
expect(settingsStore.config.theme).toBe('dark');
expect(settingsStore.config.apiKey).toBe('');
});
});