Skip to content

All packages on their latest versions, redesign in the style of msk-scripts.de - #31

Merged
Musiker15 merged 2 commits into
mainfrom
feat/redesign
Oct 30, 2026
Merged

Musiker15 merged 2 commits into
mainfrom
feat/redesign

Conversation

@Musiker15

Copy link
Copy Markdown
Member

Builds on #30 (spam protection). Merge that first; GitHub then points this pull request at main.

Packages

Every package on its latest release:

  • Next 16, React 19.3, next-intl 4.14
  • Shiki 4, nanoid 6
  • ESLint 10 with eslint-config-next 16
  • Tailwind 4, dotenv 18, @types/node 26, Vitest 5

npm audit finds nothing.

  • TypeScript 6.0.3. 7.0 is out, but the typescript-eslint inside eslint-config-next supports <6.1 only. Same decision as in MSK Forms.
  • Next 16 changes. middleware.ts is proxy.ts, and next lint is gone, so the lint script calls ESLint with a flat config.
  • Removed: recharts and autoprefixer. The old eslint override is dropped, and the postcss override follows the direct dependency.

Redesign

The site now uses the design system of msk-scripts.de, like MSK Forms and MSK Shortener.

  • Tokens and themes. The shop's tokens in light and dark, with the system setting as default. Fluid type and layout up to UWQHD.
  • Fonts and icons. Archivo and Source Sans 3 are served locally, Phosphor replaces the hand-drawn icons.
  • Header and footer. The shop's header with its product lines (Web tools current) and the language, the footer on the anthracite band with the appearance switch. Every page has a head on the band.
  • Code view. Shiki renders VS Code's Light+ and Dark+ into CSS variables, and the page picks one per theme, on our card instead of the GitHub dark background. The few theme colours below 4.5:1 on the card are replaced along their own hue. src/test/code-contrast.test.ts checks every colour of both themes, so a Shiki update that changes one shows up.
  • Language chart. Plain bars rendered on the server, each value also as text.
  • Turnstile. The widget follows the chosen theme.
  • Design docs and tests. DESIGN.md, and src/test/contrast.test.ts for the tokens in both themes.
  • README. It keeps the essentials. Features, development, API, security and the contact moved to docs/, nothing dropped.
  • Privacy policy. It names the new fonts.

Checked

  • Type-check, lint (0 errors), 142 tests.
  • Counter-checked the code contrast test by removing a replacement colour, which turned it red.
  • Production build against MariaDB 11 at 375, 1440 and 2560 px in light and dark on 7 pages: home, a highlighted Lua paste, a password-protected paste, statistics, privacy, imprint, 404. No sideways scrolling, no console errors.
  • Theme switch, language switch, header menu and shop panels work (Escape closes, focus returns).

Base automatically changed from feat/spam-protection to main October 30, 2026 17:39
Next 16, React 19.3, next-intl 4.14, Shiki 4, nanoid 6, ESLint 10 with
eslint-config-next 16, dotenv 18, @types/node 26 and the rest at their
newest releases. Shiki and nanoid keep their API for what is used here.

- TypeScript 6.0.3, the newest the typescript-eslint inside
  eslint-config-next supports (<6.1); 7.0 would break linting.
- middleware.ts is proxy.ts in Next 16, `next lint` is gone: the lint
  script calls ESLint directly with a flat config from eslint-config-next.
- The eslint override is dropped, postcss follows the direct dependency.
- Tailwind 4 and the charts follow with the redesign, which rewrites the
  styles anyway.
MSK Paste now looks and works like the shop, MSK Forms and MSK Shortener
instead of a dark-only page of its own.

- Tailwind 4 with the shop's tokens in two layers, light and dark with the
  system setting as default, the fluid type scale and layout up to UWQHD.
- Archivo and Source Sans 3 served locally through Fontsource; the next/font
  download of Syne, DM Sans and JetBrains Mono is gone. Phosphor replaces
  the hand-drawn icons.
- The shop's header (product lines, Web tools as the current one, language)
  and footer on the anthracite band; every page has a head on the band.
- The code view: Shiki renders VS Code's Light+ and Dark+ into CSS
  variables and the page picks one per theme, on our card instead of the
  GitHub dark background. The few theme colours below 4.5:1 on the card are
  replaced along their own hue, and a test checks every colour of both
  themes.
- The language chart is plain bars rendered on the server, each value also
  as text; recharts is removed.
- The Turnstile widget follows the chosen theme.
- DESIGN.md and a contrast test that reads the tokens from globals.css.
- The README keeps the essentials; features, development, API, security
  and the contact moved to docs/.
- The privacy policy names the new fonts.
@github-actions

Copy link
Copy Markdown

Dependency Review

The following issues were found:

  • ✅ 0 vulnerable package(s)
  • ✅ 0 package(s) with incompatible licenses
  • ✅ 0 package(s) with invalid SPDX license definitions
  • ✅ 0 package(s) with unknown licenses.
  • ⚠️ 4 packages with OpenSSF Scorecard issues.

View full job summary

<header ref={headerRef} className="sticky top-0 z-50 border-t-4 border-b border-t-brand border-b-border bg-card">
<div className="container-page flex min-h-[var(--header-height)] items-center gap-[clamp(1rem,2vw,2.5rem)]">
<Link href="/" className="flex min-h-11 shrink-0 items-center gap-2.5 text-foreground">
<img src="/logo.png" alt="" width={36} height={36} className="h-9 w-9 rounded-lg object-contain" />
<div className="grid gap-x-10 gap-y-10 @lg:grid-cols-2 @4xl:grid-cols-[minmax(0,1.4fr)_repeat(3,minmax(0,1fr))]">
<div className="grid content-start gap-4 @lg:col-span-2 @4xl:col-span-1">
<Link href="/" className="inline-flex min-h-11 items-center gap-2.5 self-start text-band-foreground">
<img src="/logo.png" alt="" width={32} height={32} className="h-8 w-8 rounded-lg object-contain" />
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants