feat: frontend perf and a11y pass, plus mod visuals, hero main menu, Simple Voice Chat and vanilla chat autocomplete

Frontend:
- replace the i18next stack with a small typed i18n module
- hero clouds removed, llms.txt, HUD widget ARIA fixes and tests

Mod:
- TargetESP constellation mode; tracker and colors extracted
- JumpCircles: 7 new shapes, shared animation and color pipeline
- KillEffect blood mode with Burst/Fountain/Ring/Spray styles
- main menu: menuLayout setting (orbs/hero) and hero screen
- Simple Voice Chat soft integration: VoiceChat module and HUD panel
- renderer/quick: static Draw facade with glass outline
- vanilla chat: Baritone-style autocomplete popup for the % command prefix
This commit is contained in:
loki5512344 2026-10-01 16:22:05 +02:00
parent 167405aed0
commit e00ea8eb11
Signed by: boba
GPG key ID: 253067914055423B
204 changed files with 6469 additions and 833 deletions

View file

@ -1,5 +1,5 @@
import { type ReactNode, startTransition, useEffect, useMemo } from 'react'
import { useTranslation } from 'react-i18next'
import { useTranslation } from '@shared/i18n/react'
import { themeToCssVars } from '@features/clickgui/themeVars'
import { PRESETS } from '../presets.generated'
import type { ThemeEntry } from '../types'

View file

@ -1,5 +1,5 @@
import { type CSSProperties, memo, useId, useState } from 'react'
import { useTranslation } from 'react-i18next'
import { useTranslation } from '@shared/i18n/react'
import { argbToCss, parseArgb } from '../../types'
import './fields.css'

View file

@ -1,5 +1,5 @@
import { memo } from 'react'
import { useTranslation } from 'react-i18next'
import { useTranslation } from '@shared/i18n/react'
import { cssAngle } from '@features/clickgui/themeVars'
import { argbToCss, type GradientSpec } from '../../types'
import { ColorField } from './ColorField'

View file

@ -1,5 +1,5 @@
import { useEffect, useRef, useState } from 'react'
import { useTranslation } from 'react-i18next'
import { useTranslation } from '@shared/i18n/react'
import { parseArgb, type ThemeEntry } from '../../types'
import { fromProfileJson, toProfileJson, toShareHash } from '../model/codec'

View file

@ -1,5 +1,5 @@
import { type KeyboardEvent, useCallback, useId, useLayoutEffect, useMemo, useRef, useState } from 'react'
import { useTranslation } from 'react-i18next'
import { useTranslation } from '@shared/i18n/react'
import type { GradientSpec, ThemeColors, ThemeEntry } from '../../types'
import { ColorField } from '../fields/ColorField'
import { GradientField } from '../fields/GradientField'

View file

@ -1,4 +1,4 @@
import { useTranslation } from 'react-i18next'
import { useTranslation } from '@shared/i18n/react'
import type { ThemeEntry } from '../../types'
type History = { undo: () => void; redo: () => void; reset: () => void; resetName: string; canUndo: boolean; canRedo: boolean }

View file

@ -1,5 +1,5 @@
import type { CSSProperties } from 'react'
import { useTranslation } from 'react-i18next'
import { useTranslation } from '@shared/i18n/react'
import { themeToCssVars } from '@features/clickgui/themeVars'
import { PRESETS } from '../../presets.generated'