feat: Add deafen to pc, fix mobiel view, fix freeze on startup
This commit is contained in:
@@ -36,55 +36,55 @@ describe('ThemeService theme application', () => {
|
||||
vi.unstubAllGlobals();
|
||||
});
|
||||
|
||||
it('uses the website dark theme as the built-in default JSON', () => {
|
||||
it('uses the default dark 11 theme as the built-in default JSON', () => {
|
||||
const defaultTheme = JSON.parse(DEFAULT_THEME_JSON) as Record<string, unknown>;
|
||||
|
||||
expect(defaultTheme['css']).toEqual(expect.not.stringContaining('radial-gradient'));
|
||||
expect(defaultTheme).toEqual(expect.objectContaining({
|
||||
meta: {
|
||||
name: 'Toju Website Dark',
|
||||
version: '1.0.0',
|
||||
description: 'Website-inspired dark app theme using the charcoal, green, and amber palette from the public Toju site.'
|
||||
name: 'Toju Default Dark 11',
|
||||
version: '2.0.0',
|
||||
description: 'Built-in dark glass theme for the full Toju app shell.'
|
||||
},
|
||||
tokens: {
|
||||
colors: {
|
||||
background: '210 18% 7%',
|
||||
foreground: '42 33% 94%',
|
||||
card: '210 17% 10%',
|
||||
cardForeground: '42 33% 94%',
|
||||
popover: '210 17% 9%',
|
||||
popoverForeground: '42 33% 94%',
|
||||
primary: '154 49% 55%',
|
||||
primaryForeground: '210 18% 7%',
|
||||
secondary: '210 14% 15%',
|
||||
secondaryForeground: '42 33% 94%',
|
||||
muted: '210 14% 15%',
|
||||
mutedForeground: '42 13% 67%',
|
||||
accent: '38 64% 61%',
|
||||
accentForeground: '210 18% 7%',
|
||||
destructive: '0 72% 55%',
|
||||
background: '225 6% 12%',
|
||||
foreground: '210 40% 96%',
|
||||
card: '220 6% 18%',
|
||||
cardForeground: '210 40% 96%',
|
||||
popover: '220 6% 18%',
|
||||
popoverForeground: '210 40% 96%',
|
||||
primary: '234 85% 64%',
|
||||
primaryForeground: '222 47% 11%',
|
||||
secondary: '222 10% 24%',
|
||||
secondaryForeground: '210 40% 96%',
|
||||
muted: '223 18% 14%',
|
||||
mutedForeground: '215 20% 70%',
|
||||
accent: '234 32% 28%',
|
||||
accentForeground: '210 40% 98%',
|
||||
destructive: '358 82% 59%',
|
||||
destructiveForeground: '0 0% 100%',
|
||||
border: '210 13% 22%',
|
||||
input: '210 13% 22%',
|
||||
ring: '154 49% 55%',
|
||||
railBackground: '210 19% 6%',
|
||||
workspaceBackground: '210 18% 8%',
|
||||
panelBackground: '210 17% 10%',
|
||||
panelBackgroundAlt: '210 14% 13%',
|
||||
titleBarBackground: '210 19% 6%',
|
||||
surfaceHighlight: '154 49% 55%',
|
||||
surfaceHighlightAlt: '38 64% 61%'
|
||||
border: '222 18% 22%',
|
||||
input: '222 18% 22%',
|
||||
ring: '234 85% 64%',
|
||||
railBackground: '225 6% 12%',
|
||||
workspaceBackground: '220 6% 18%',
|
||||
panelBackground: '220 6% 18%',
|
||||
panelBackgroundAlt: '225 6% 15%',
|
||||
titleBarBackground: '225 6% 9%',
|
||||
surfaceHighlight: '234 85% 64%',
|
||||
surfaceHighlightAlt: '261 82% 72%'
|
||||
},
|
||||
spacing: {},
|
||||
radii: {
|
||||
radius: '0.6rem',
|
||||
surface: '0.85rem',
|
||||
radius: '0.875rem',
|
||||
surface: '1.35rem',
|
||||
pill: '999px'
|
||||
},
|
||||
effects: {
|
||||
panelShadow: '0 28px 64px rgba(0, 0, 0, 0.34)',
|
||||
softShadow: '0 16px 36px rgba(0, 0, 0, 0.22)',
|
||||
glassBlur: 'blur(16px) saturate(125%)'
|
||||
panelShadow: '0 24px 60px rgba(0, 0, 0, 0.42)',
|
||||
softShadow: '0 14px 36px rgba(0, 0, 0, 0.28)',
|
||||
glassBlur: 'blur(18px) saturate(135%)'
|
||||
}
|
||||
},
|
||||
layout: expect.objectContaining({
|
||||
@@ -116,9 +116,13 @@ describe('ThemeService theme application', () => {
|
||||
}));
|
||||
});
|
||||
|
||||
it('exposes both built-in theme presets and applies the legacy default preset', () => {
|
||||
expect(BUILT_IN_THEME_PRESETS.map((preset) => preset.theme.meta.name)).toEqual(['Toju Website Dark', 'Toju Default Dark']);
|
||||
expect(service.activeThemeName()).toBe('Toju Website Dark');
|
||||
it('exposes all built-in theme presets and applies the legacy default preset', () => {
|
||||
expect(BUILT_IN_THEME_PRESETS.map((preset) => preset.theme.meta.name)).toEqual([
|
||||
'Toju Default Dark 11',
|
||||
'Toju Website Dark',
|
||||
'Toju Default Dark'
|
||||
]);
|
||||
expect(service.activeThemeName()).toBe('Toju Default Dark 11');
|
||||
|
||||
const applied = service.applyBuiltInPreset('Toju Default Dark');
|
||||
|
||||
@@ -130,23 +134,34 @@ describe('ThemeService theme application', () => {
|
||||
});
|
||||
});
|
||||
|
||||
it('resets to the website dark preset as the new default', () => {
|
||||
expect(service.applyBuiltInPreset('Toju Default Dark')).toBe(true);
|
||||
it('resets to the default dark 11 preset as the built-in default', () => {
|
||||
expect(service.applyBuiltInPreset('Toju Website Dark')).toBe(true);
|
||||
|
||||
service.resetToDefault();
|
||||
|
||||
expect(service.activeThemeName()).toBe('Toju Website Dark');
|
||||
expect(service.activeThemeName()).toBe('Toju Default Dark 11');
|
||||
expect(service.getHostStyles('appRoot')).toMatchObject({
|
||||
'--background': '210 18% 7%',
|
||||
'--primary': '154 49% 55%',
|
||||
'--accent': '38 64% 61%'
|
||||
'--background': '225 6% 12%',
|
||||
'--primary': '234 85% 64%',
|
||||
'--secondary': '222 10% 24%',
|
||||
'--accent': '234 32% 28%'
|
||||
});
|
||||
|
||||
expect(service.activeThemeText()).not.toContain('radial-gradient');
|
||||
});
|
||||
|
||||
it('keeps the importable website dark artifact aligned with the default preset', () => {
|
||||
const artifact = JSON.parse(readFileSync(resolve('../project-files/themes/toju-website-dark.json'), 'utf8')) as unknown;
|
||||
it('keeps hover tokens visually distinct from the background surface', () => {
|
||||
const defaultTheme = createDefaultThemeDocument();
|
||||
const { background, card, secondary, accent } = defaultTheme.tokens.colors;
|
||||
|
||||
expect(secondary).not.toBe(background);
|
||||
expect(secondary).not.toBe(card);
|
||||
expect(accent).not.toBe(background);
|
||||
expect(accent).not.toBe(card);
|
||||
});
|
||||
|
||||
it('keeps the importable default dark 11 artifact aligned with the default preset', () => {
|
||||
const artifact = JSON.parse(readFileSync(resolve('../project-files/themes/toju-default-dark-11.json'), 'utf8')) as unknown;
|
||||
const defaultTheme = JSON.parse(DEFAULT_THEME_JSON) as unknown;
|
||||
|
||||
expect(artifact).toEqual(defaultTheme);
|
||||
@@ -165,14 +180,14 @@ describe('ThemeService theme application', () => {
|
||||
const applied = service.applyCssOnlyTheme('.css-only-theme { background: hsl(var(--background)); }');
|
||||
|
||||
expect(applied).toBe(true);
|
||||
expect(service.activeThemeName()).toBe('Toju Website Dark');
|
||||
expect(service.activeThemeName()).toBe('Toju Default Dark 11');
|
||||
expect(service.getLayoutItemStyles('dmChatPanel')).toMatchObject({
|
||||
gridColumn: '5 / span 16',
|
||||
gridRow: '1 / span 12'
|
||||
});
|
||||
|
||||
expect(service.getHostStyles('appRoot')).toMatchObject({
|
||||
'--background': '210 18% 7%'
|
||||
'--background': '225 6% 12%'
|
||||
});
|
||||
|
||||
expect(styleElements.some((styleElement) => styleElement.textContent === '.css-only-theme { background: hsl(var(--background)); }')).toBe(true);
|
||||
@@ -319,7 +334,7 @@ describe('ThemeService theme application', () => {
|
||||
}
|
||||
});
|
||||
|
||||
expect(service.activeThemeName()).toBe('Toju Website Dark');
|
||||
expect(service.activeThemeName()).toBe('Toju Default Dark 11');
|
||||
});
|
||||
|
||||
it('validates the dedicated DM workspace layout container', () => {
|
||||
@@ -437,16 +452,17 @@ describe('ThemeService theme application', () => {
|
||||
expect(service.activeThemeText()).not.toContain('"elements"');
|
||||
});
|
||||
|
||||
it('loads the website dark saved-theme artifact', () => {
|
||||
const themeText = readFileSync(resolve('../project-files/themes/toju-website-dark.json'), 'utf8');
|
||||
const loaded = service.loadThemeText(themeText, 'apply', 'Theme applied.', 'website dark saved theme');
|
||||
it('loads the default dark 11 saved-theme artifact', () => {
|
||||
const themeText = readFileSync(resolve('../project-files/themes/toju-default-dark-11.json'), 'utf8');
|
||||
const loaded = service.loadThemeText(themeText, 'apply', 'Theme applied.', 'default dark 11 saved theme');
|
||||
|
||||
expect(loaded).toBe(true);
|
||||
expect(service.activeThemeName()).toBe('Toju Website Dark');
|
||||
expect(service.activeThemeName()).toBe('Toju Default Dark 11');
|
||||
expect(service.getHostStyles('appRoot')).toMatchObject({
|
||||
'--background': '210 18% 7%',
|
||||
'--primary': '154 49% 55%',
|
||||
'--accent': '38 64% 61%'
|
||||
'--background': '225 6% 12%',
|
||||
'--primary': '234 85% 64%',
|
||||
'--secondary': '222 10% 24%',
|
||||
'--accent': '234 32% 28%'
|
||||
});
|
||||
|
||||
expect(service.getHostStyles('titleBar')).toMatchObject({
|
||||
@@ -460,7 +476,7 @@ describe('ThemeService theme application', () => {
|
||||
expect(service.getHostStyles('chatRoomMembersPanel')).toMatchObject({ border: '0' });
|
||||
expect(service.getHostStyles('chatComposerBar')).toMatchObject({ border: '0' });
|
||||
|
||||
expect(service.activeThemeText()).toContain('Website-inspired app shell surfaces');
|
||||
expect(service.activeThemeText()).toContain('Dark glass app shell surfaces');
|
||||
});
|
||||
});
|
||||
|
||||
|
||||
Reference in New Issue
Block a user