From b0ec759fadca4ee8d47e6c449259994bd7ce37ca Mon Sep 17 00:00:00 2001 From: enricobuehler Date: Thu, 6 Aug 2026 23:10:25 +0200 Subject: [PATCH] fix(brand): capitalize "Punktfunk" in user-facing text The docs site's page title read "punktfunk docs". Fixed that and swept the rest of the tree for the same defect, capitalizing the brand wherever it is shown to a human and leaving it lowercase where it is a technical identifier (CLI/package names, `punktfunk://` scheme, PnP enumerator, TLS SNI, logcat tag, config paths, CMS tenant id). User-visible fixes: - docs-site: page title -> "Punktfunk Docs"; API reference title, meta description and the branded bar's aria-label; the BrandMark/Wordmark SVG accessible names (the web console already had these capitalized -- the docs site had drifted from it). - Android: six strings of live UI copy -- the local-network permission dialog (x2), the connect-screen error banner, and the no-controller explainer. - Apple: the "No Hosts" empty-state text and the fallback display name for a host that advertises no instance name. - Windows client: the `--discover` progress line. - KWin fake-input: the application name passed to `authenticate()` (the grant is cached per-exe, so the string is display-only). - THIRD-PARTY-NOTICES: fixed in both generators (about.hbs and gen-third-party-notices.py) and applied to the three checked-in outputs so they match what a regeneration now produces. Every changed line differs from the original only by letter case, so line lengths are unchanged and no formatter width rule is affected. `cargo fmt --all --check` passes. --- THIRD-PARTY-NOTICES.txt | 2 +- about.hbs | 2 +- .../app/src/main/assets/THIRD-PARTY-NOTICES.txt | 2 +- .../main/kotlin/io/unom/punktfunk/ConnectDialogs.kt | 4 ++-- .../main/kotlin/io/unom/punktfunk/ConnectScreen.kt | 2 +- .../kotlin/io/unom/punktfunk/ControllersScreen.kt | 2 +- .../main/kotlin/io/unom/punktfunk/GamepadDialogs.kt | 4 ++-- .../Sources/PunktfunkClient/Home/HomeView.swift | 2 +- .../PunktfunkKit/Connection/HostDiscovery.swift | 2 +- .../PunktfunkKit/Resources/THIRD-PARTY-NOTICES.txt | 2 +- clients/windows/src/main.rs | 2 +- crates/pf-inject/src/inject/linux/kwin_fake_input.rs | 2 +- docs-site/package.json | 2 +- docs-site/src/components/BrandMark.tsx | 6 +++--- docs-site/src/components/Wordmark.tsx | 6 +++--- docs-site/src/lib/cms.ts | 2 +- docs-site/src/lib/layout.shared.tsx | 2 +- docs-site/src/routes/__root.tsx | 2 +- docs-site/src/routes/api/index.tsx | 12 ++++++------ docs-site/src/styles/app.css | 6 +++--- packaging/windows/README.md | 2 +- plugin-kit/src/cli.ts | 2 +- scripts/gen-third-party-notices.py | 2 +- web/src/components/brand-mark.tsx | 2 +- web/src/components/logo.tsx | 2 +- web/src/components/ui/spinner.tsx | 2 +- web/src/components/wordmark.tsx | 2 +- web/src/stories/Store.stories.tsx | 2 +- web/src/styles.css | 4 ++-- web/src/timing-functions.css | 2 +- 30 files changed, 44 insertions(+), 44 deletions(-) diff --git a/THIRD-PARTY-NOTICES.txt b/THIRD-PARTY-NOTICES.txt index 288d1670..fecd7fe9 100644 --- a/THIRD-PARTY-NOTICES.txt +++ b/THIRD-PARTY-NOTICES.txt @@ -1,7 +1,7 @@ THIRD-PARTY SOFTWARE NOTICES ============================================================================ -punktfunk (https://git.unom.io/unom/punktfunk) is licensed under MIT OR Apache-2.0. +Punktfunk (https://git.unom.io/unom/punktfunk) is licensed under MIT OR Apache-2.0. The binaries it ships statically/dynamically link the third-party Rust crates listed below. Each is distributed under its own permissive license; the full license texts follow the manifest. This file is generated by scripts/gen-third-party-notices.py diff --git a/about.hbs b/about.hbs index 2a69a049..598d07ed 100644 --- a/about.hbs +++ b/about.hbs @@ -1,7 +1,7 @@ THIRD-PARTY SOFTWARE NOTICES ============================================================================ -punktfunk (https://git.unom.io/unom/punktfunk) is licensed under MIT OR Apache-2.0. +Punktfunk (https://git.unom.io/unom/punktfunk) is licensed under MIT OR Apache-2.0. The binaries it ships statically/dynamically link the third-party Rust crates below. Each is distributed under its own permissive license; full texts follow. Generated by `cargo about generate about.hbs` (see about.toml) — do not edit by hand. diff --git a/clients/android/app/src/main/assets/THIRD-PARTY-NOTICES.txt b/clients/android/app/src/main/assets/THIRD-PARTY-NOTICES.txt index 288d1670..fecd7fe9 100644 --- a/clients/android/app/src/main/assets/THIRD-PARTY-NOTICES.txt +++ b/clients/android/app/src/main/assets/THIRD-PARTY-NOTICES.txt @@ -1,7 +1,7 @@ THIRD-PARTY SOFTWARE NOTICES ============================================================================ -punktfunk (https://git.unom.io/unom/punktfunk) is licensed under MIT OR Apache-2.0. +Punktfunk (https://git.unom.io/unom/punktfunk) is licensed under MIT OR Apache-2.0. The binaries it ships statically/dynamically link the third-party Rust crates listed below. Each is distributed under its own permissive license; the full license texts follow the manifest. This file is generated by scripts/gen-third-party-notices.py diff --git a/clients/android/app/src/main/kotlin/io/unom/punktfunk/ConnectDialogs.kt b/clients/android/app/src/main/kotlin/io/unom/punktfunk/ConnectDialogs.kt index 209b1d6e..35785456 100644 --- a/clients/android/app/src/main/kotlin/io/unom/punktfunk/ConnectDialogs.kt +++ b/clients/android/app/src/main/kotlin/io/unom/punktfunk/ConnectDialogs.kt @@ -168,9 +168,9 @@ internal fun LocalNetworkDialog(onAllow: () -> Unit, onSettings: () -> Unit, onD title = { Text("Allow local network access") }, text = { Text( - "Android blocks punktfunk from talking to devices on your network, so it can't " + + "Android blocks Punktfunk from talking to devices on your network, so it can't " + "find or reach any host until you allow it. If no prompt appears when you tap " + - "Allow, enable “Nearby devices” for punktfunk in system settings.", + "Allow, enable “Nearby devices” for Punktfunk in system settings.", ) }, confirmButton = { diff --git a/clients/android/app/src/main/kotlin/io/unom/punktfunk/ConnectScreen.kt b/clients/android/app/src/main/kotlin/io/unom/punktfunk/ConnectScreen.kt index 69dae7d1..bafadedb 100644 --- a/clients/android/app/src/main/kotlin/io/unom/punktfunk/ConnectScreen.kt +++ b/clients/android/app/src/main/kotlin/io/unom/punktfunk/ConnectScreen.kt @@ -941,7 +941,7 @@ fun ConnectScreen( color = MaterialTheme.colorScheme.onErrorContainer, ) Text( - "Android blocks punktfunk from finding or reaching hosts until you allow it.", + "Android blocks Punktfunk from finding or reaching hosts until you allow it.", style = MaterialTheme.typography.bodyMedium, color = MaterialTheme.colorScheme.onErrorContainer, textAlign = TextAlign.Center, diff --git a/clients/android/app/src/main/kotlin/io/unom/punktfunk/ControllersScreen.kt b/clients/android/app/src/main/kotlin/io/unom/punktfunk/ControllersScreen.kt index 6c56bee5..c95a6e79 100644 --- a/clients/android/app/src/main/kotlin/io/unom/punktfunk/ControllersScreen.kt +++ b/clients/android/app/src/main/kotlin/io/unom/punktfunk/ControllersScreen.kt @@ -191,7 +191,7 @@ fun ControllersScreen(gamepadSetting: Int, onBack: () -> Unit) { dsUsb?.let { DsRow(it) } if (pads.isEmpty() && !sc2Present) { Text( - "No controller detected. punktfunk can only forward devices Android " + + "No controller detected. Punktfunk can only forward devices Android " + "classifies as a gamepad or joystick — a pad connected through an adapter " + "or hub may show up under \"Other input devices\" below with the adapter's " + "identity, or not at all.", diff --git a/clients/android/app/src/main/kotlin/io/unom/punktfunk/GamepadDialogs.kt b/clients/android/app/src/main/kotlin/io/unom/punktfunk/GamepadDialogs.kt index ecfdf1c6..4a2911e7 100644 --- a/clients/android/app/src/main/kotlin/io/unom/punktfunk/GamepadDialogs.kt +++ b/clients/android/app/src/main/kotlin/io/unom/punktfunk/GamepadDialogs.kt @@ -463,11 +463,11 @@ fun GamepadLocalNetworkDialog(onAllow: () -> Unit, onSettings: () -> Unit, onDis ), ) { DialogText( - "Android blocks punktfunk from talking to devices on your network, so it can't find " + + "Android blocks Punktfunk from talking to devices on your network, so it can't find " + "or reach any host until you allow it.", ) DialogText( - "If no prompt appears after Allow, enable “Nearby devices” for punktfunk in " + + "If no prompt appears after Allow, enable “Nearby devices” for Punktfunk in " + "system settings.", ) } diff --git a/clients/apple/Sources/PunktfunkClient/Home/HomeView.swift b/clients/apple/Sources/PunktfunkClient/Home/HomeView.swift index c0936b1e..917db98f 100644 --- a/clients/apple/Sources/PunktfunkClient/Home/HomeView.swift +++ b/clients/apple/Sources/PunktfunkClient/Home/HomeView.swift @@ -344,7 +344,7 @@ struct HomeView: View { ContentUnavailableView { Label("No Hosts", systemImage: "rectangle.connected.to.line.below") } description: { - Text("Add your punktfunk host with the + button, or scan the network again.") + Text("Add your Punktfunk host with the + button, or scan the network again.") } actions: { Button("Add Host") { showAddHost = true } .glassProminentButtonStyle() diff --git a/clients/apple/Sources/PunktfunkKit/Connection/HostDiscovery.swift b/clients/apple/Sources/PunktfunkKit/Connection/HostDiscovery.swift index 316f2c8d..d6df9346 100644 --- a/clients/apple/Sources/PunktfunkKit/Connection/HostDiscovery.swift +++ b/clients/apple/Sources/PunktfunkKit/Connection/HostDiscovery.swift @@ -453,7 +453,7 @@ public final class HostDiscovery: ObservableObject { private static func instanceName(_ endpoint: NWEndpoint) -> String { if case let .service(name, _, _, _) = endpoint { return name } - return "punktfunk host" + return "Punktfunk host" } private static func entry(_ txt: NWTXTRecord, _ field: String) -> String? { diff --git a/clients/apple/Sources/PunktfunkKit/Resources/THIRD-PARTY-NOTICES.txt b/clients/apple/Sources/PunktfunkKit/Resources/THIRD-PARTY-NOTICES.txt index 288d1670..fecd7fe9 100644 --- a/clients/apple/Sources/PunktfunkKit/Resources/THIRD-PARTY-NOTICES.txt +++ b/clients/apple/Sources/PunktfunkKit/Resources/THIRD-PARTY-NOTICES.txt @@ -1,7 +1,7 @@ THIRD-PARTY SOFTWARE NOTICES ============================================================================ -punktfunk (https://git.unom.io/unom/punktfunk) is licensed under MIT OR Apache-2.0. +Punktfunk (https://git.unom.io/unom/punktfunk) is licensed under MIT OR Apache-2.0. The binaries it ships statically/dynamically link the third-party Rust crates listed below. Each is distributed under its own permissive license; the full license texts follow the manifest. This file is generated by scripts/gen-third-party-notices.py diff --git a/clients/windows/src/main.rs b/clients/windows/src/main.rs index a8624466..110719b0 100644 --- a/clients/windows/src/main.rs +++ b/clients/windows/src/main.rs @@ -244,7 +244,7 @@ fn run_headless_cli(args: &[String], identity: (String, String)) { #[cfg(windows)] fn discover_and_print() { use std::time::{Duration, Instant}; - println!("Browsing the LAN for punktfunk hosts (~5 s)…"); + println!("Browsing the LAN for Punktfunk hosts (~5 s)…"); let (rx, _rescan) = discovery::browse(); let deadline = Instant::now() + Duration::from_secs(5); let mut seen = std::collections::HashSet::new(); diff --git a/crates/pf-inject/src/inject/linux/kwin_fake_input.rs b/crates/pf-inject/src/inject/linux/kwin_fake_input.rs index 0231b68f..2d577692 100644 --- a/crates/pf-inject/src/inject/linux/kwin_fake_input.rs +++ b/crates/pf-inject/src/inject/linux/kwin_fake_input.rs @@ -271,7 +271,7 @@ impl KwinFakeInjector { )?; // Authenticate (the legacy handshake; for an interface-authorized client KWin accepts it // without a dialog — same as krdpserver/krfb headless). - fake.authenticate("punktfunk".into(), "remote streaming input".into()); + fake.authenticate("Punktfunk".into(), "remote streaming input".into()); queue .roundtrip(&mut state) .context("fake_input authenticate roundtrip")?; diff --git a/docs-site/package.json b/docs-site/package.json index a3352690..1950e5c7 100644 --- a/docs-site/package.json +++ b/docs-site/package.json @@ -2,7 +2,7 @@ "name": "punktfunk-docs", "private": true, "type": "module", - "description": "punktfunk documentation site — Fumadocs on TanStack Start (Vite + Nitro/bun)", + "description": "Punktfunk documentation site — Fumadocs on TanStack Start (Vite + Nitro/bun)", "scripts": { "dev": "vite dev --port 3001", "build": "vite build", diff --git a/docs-site/src/components/BrandMark.tsx b/docs-site/src/components/BrandMark.tsx index bee28917..3b41e719 100644 --- a/docs-site/src/components/BrandMark.tsx +++ b/docs-site/src/components/BrandMark.tsx @@ -1,17 +1,17 @@ -// punktfunk brand mark: two overlapping circles forming a lens — the violet +// Punktfunk brand mark: two overlapping circles forming a lens — the violet // brand identity. Copied verbatim from the marketing site (flattened from the // clients/apple punktfunk_Logo.icon). Back-to-front: large light-violet circle, // deep-violet circle, light highlight where they overlap. export default function BrandMark({ className }: { className?: string }) { return ( - punktfunk + Punktfunk - punktfunk + Punktfunk diff --git a/docs-site/src/lib/cms.ts b/docs-site/src/lib/cms.ts index c37ebcd9..a47031eb 100644 --- a/docs-site/src/lib/cms.ts +++ b/docs-site/src/lib/cms.ts @@ -1,4 +1,4 @@ -// The docs reuse the punktfunk footer from the shared unom CMS (cms.unom.io). +// The docs reuse the Punktfunk footer from the shared unom CMS (cms.unom.io). // The footer shape comes from @unom/app-ui/footer so the docs and the marketing // site share one type. The CMS is multi-tenant: footer is a per-tenant // collection, so scope the read to this project's tenant. Read-only GET, so a diff --git a/docs-site/src/lib/layout.shared.tsx b/docs-site/src/lib/layout.shared.tsx index b5e95650..298233cd 100644 --- a/docs-site/src/lib/layout.shared.tsx +++ b/docs-site/src/lib/layout.shared.tsx @@ -3,7 +3,7 @@ import BrandMark from '@/components/BrandMark' import Wordmark from '@/components/Wordmark' // Shared chrome (nav title, links) for both the docs layout and the home layout. -// The lens mark + wordmark mirror the punktfunk marketing site's header. +// The lens mark + wordmark mirror the Punktfunk marketing site's header. export function baseOptions(): BaseLayoutProps { return { nav: { diff --git a/docs-site/src/routes/__root.tsx b/docs-site/src/routes/__root.tsx index 2d20289d..763a3e32 100644 --- a/docs-site/src/routes/__root.tsx +++ b/docs-site/src/routes/__root.tsx @@ -30,7 +30,7 @@ export const Route = createRootRoute({ { charSet: 'utf-8' }, { name: 'viewport', content: 'width=device-width, initial-scale=1' }, { name: 'color-scheme', content: 'dark light' }, - { title: 'punktfunk docs' }, + { title: 'Punktfunk Docs' }, ], links: [ { rel: 'stylesheet', href: appCss }, diff --git a/docs-site/src/routes/api/index.tsx b/docs-site/src/routes/api/index.tsx index 8e215c39..01ed4c32 100644 --- a/docs-site/src/routes/api/index.tsx +++ b/docs-site/src/routes/api/index.tsx @@ -13,18 +13,18 @@ export const Route = createFileRoute('/api/')({ component: ApiReference, head: () => ({ meta: [ - { title: 'punktfunk — Management API reference' }, + { title: 'Punktfunk — Management API Reference' }, { name: 'description', content: - 'Interactive reference for the punktfunk host management REST API (OpenAPI).', + 'Interactive reference for the Punktfunk host management REST API (OpenAPI).', }, ], links: [{ rel: 'stylesheet', href: scalarCss }], }), }) -// The full punktfunk theme rolled out onto Scalar — the same dark-violet (and +// The full Punktfunk theme rolled out onto Scalar — the same dark-violet (and // light-lavender) product chrome as the docs/management console. // // IMPORTANT: Scalar toggles `.light-mode` / `.dark-mode` on `document.body`, @@ -191,7 +191,7 @@ function ApiReference() { url: '/openapi.json', darkMode: isDark, hideDarkModeToggle: true, - metaData: { title: 'punktfunk Management API' }, + metaData: { title: 'Punktfunk Management API' }, hideDownloadButton: false, customCss: SCALAR_CSS, }), @@ -200,13 +200,13 @@ function ApiReference() { return (
- {/* Slim branded bar so the reference stays inside the punktfunk identity + {/* Slim branded bar so the reference stays inside the Punktfunk identity and links back into the docs. */}
diff --git a/docs-site/src/styles/app.css b/docs-site/src/styles/app.css index ce3c96a2..aff2b6d3 100644 --- a/docs-site/src/styles/app.css +++ b/docs-site/src/styles/app.css @@ -4,12 +4,12 @@ /* Pull Fumadocs UI's own classes — and @unom/ui's compiled components — into the Tailwind 4 scan so their utilities aren't purged. @unom/ui is the shared - design-token system the punktfunk marketing site also builds on. */ + design-token system the Punktfunk marketing site also builds on. */ @source '../../node_modules/fumadocs-ui/dist/**/*.js'; @source '../../node_modules/@unom/ui/dist/**/*.{js,mjs}'; @source '../../node_modules/@unom/app-ui/dist/**/*.{js,mjs}'; -/* ── punktfunk brand ──────────────────────────────────────────────────────── +/* ── Punktfunk brand ──────────────────────────────────────────────────────── The brand colour is the violet lens mark. (The marketing site's blue is just a page background, not the brand.) These values feed both @unom/ui's semantic token contract (--brand/--primary/--accent/--highlight) and the Fumadocs @@ -61,7 +61,7 @@ } @theme { - /* Geist — the punktfunk brand typeface, same as the marketing site + /* Geist — the Punktfunk brand typeface, same as the marketing site (the @fontsource-variable/geist face is loaded in __root.tsx). */ --font-sans: 'Geist Variable', ui-sans-serif, system-ui, sans-serif; --font-display: 'Geist Variable', ui-sans-serif, system-ui, sans-serif; diff --git a/packaging/windows/README.md b/packaging/windows/README.md index 3e0b8bec..0a250ffb 100644 --- a/packaging/windows/README.md +++ b/packaging/windows/README.md @@ -224,7 +224,7 @@ path below is the maintainer's test box — substitute your own `punktfunk-probe # Recover a WEDGED driver. Symptom: every session fails with # create virtual output: pf-vdisplay ADD ...: DeviceIoControl(0x222400): Element nicht gefunden (0x80070490) # i.e. ERROR_NOT_FOUND — sustained ADD/REMOVE churn exhausted the IddCx monitor slots (ghost -# "Generic Monitor (punktfunk)" nodes pile up, target_ids climb). A host restart's CLEAR_ALL does NOT +# "Generic Monitor (Punktfunk)" nodes pile up, target_ids climb). A host restart's CLEAR_ALL does NOT # fix it; the driver instance must be reloaded. This clears the ghosts + cycles the adapter (no reboot — # this box boots to Proxmox). powershell -ExecutionPolicy Bypass -File reset-pf-vdisplay.ps1 -Verify -Probe C:\t-goal1\debug\punktfunk-probe.exe diff --git a/plugin-kit/src/cli.ts b/plugin-kit/src/cli.ts index 2535a5e6..cb0dabab 100644 --- a/plugin-kit/src/cli.ts +++ b/plugin-kit/src/cli.ts @@ -83,7 +83,7 @@ export const runPluginCli = async (opts: { } catch (e) { const hint = e instanceof HostRequestError - ? " (is the punktfunk host running?)" + ? " (is the Punktfunk host running?)" : ""; console.error(`${opts.def.name}: ${name} failed: ${e}${hint}`); process.exitCode = 1; diff --git a/scripts/gen-third-party-notices.py b/scripts/gen-third-party-notices.py index 4f09e6f3..f072e70a 100755 --- a/scripts/gen-third-party-notices.py +++ b/scripts/gen-third-party-notices.py @@ -137,7 +137,7 @@ def main(): w("THIRD-PARTY SOFTWARE NOTICES") w("=" * 76) w("") - w("punktfunk (https://git.unom.io/unom/punktfunk) is licensed under MIT OR Apache-2.0.") + w("Punktfunk (https://git.unom.io/unom/punktfunk) is licensed under MIT OR Apache-2.0.") w("The binaries it ships statically/dynamically link the third-party Rust crates listed") w("below. Each is distributed under its own permissive license; the full license texts") w("follow the manifest. This file is generated by scripts/gen-third-party-notices.py") diff --git a/web/src/components/brand-mark.tsx b/web/src/components/brand-mark.tsx index ca61e421..88593bfb 100644 --- a/web/src/components/brand-mark.tsx +++ b/web/src/components/brand-mark.tsx @@ -1,4 +1,4 @@ -// punktfunk brand mark: two overlapping circles forming a lens — the violet +// Punktfunk brand mark: two overlapping circles forming a lens — the violet // brand identity (flattened from the clients/apple punktfunk_Logo.icon, shared // verbatim with the marketing site + docs). Back-to-front: large light-violet // circle, deep-violet circle, light highlight where they overlap. diff --git a/web/src/components/logo.tsx b/web/src/components/logo.tsx index 41b51588..35265755 100644 --- a/web/src/components/logo.tsx +++ b/web/src/components/logo.tsx @@ -2,7 +2,7 @@ import { cn } from "@/lib/utils"; import { BrandMark } from "./brand-mark"; import { Wordmark } from "./wordmark"; -// Full punktfunk lockup: the lens mark anchored to the top-left corner of the +// Full Punktfunk lockup: the lens mark anchored to the top-left corner of the // "funk" wordmark. Size the lockup with a width on the wrapper (e.g. `w-40`); // the mark scales as a fraction of that width. export function Logo({ className }: { className?: string }) { diff --git a/web/src/components/ui/spinner.tsx b/web/src/components/ui/spinner.tsx index 01ce8a56..71ba6c07 100644 --- a/web/src/components/ui/spinner.tsx +++ b/web/src/components/ui/spinner.tsx @@ -3,7 +3,7 @@ import { useEffect, useRef } from "react"; import { cn } from "@/lib/utils"; import { m } from "@/paraglide/messages"; -// The punktfunk lens, alive. The two overlapping circles of the brand mark are +// The Punktfunk lens, alive. The two overlapping circles of the brand mark are // recreated from divs and animated as if orbiting on a path whose long axis points // INTO the screen, so depth is the dominant motion: each circle surges toward and // away from the viewer in antiphase, passing in front of and behind the other. diff --git a/web/src/components/wordmark.tsx b/web/src/components/wordmark.tsx index acc8a20d..bfad03a6 100644 --- a/web/src/components/wordmark.tsx +++ b/web/src/components/wordmark.tsx @@ -1,6 +1,6 @@ import { cn } from "@/lib/utils"; -// The punktfunk "funk" wordmark — the real brand typo, vectorised from the +// The Punktfunk "funk" wordmark — the real brand typo, vectorised from the // marketing logo. currentColor so it recolours per surface; defaults to the // light-violet lens highlight that reads on the dark console chrome. Size via // height (e.g. `h-5`); width follows the viewBox. diff --git a/web/src/stories/Store.stories.tsx b/web/src/stories/Store.stories.tsx index 9d544580..366dc408 100644 --- a/web/src/stories/Store.stories.tsx +++ b/web/src/stories/Store.stories.tsx @@ -73,7 +73,7 @@ export const Incompatible: Story = { ...BASE, compatible: false, incompatible_reason: - "needs punktfunk host ≥ 0.16.0 (this host is 0.15.0)", + "needs Punktfunk host ≥ 0.16.0 (this host is 0.15.0)", }, }, }; diff --git a/web/src/styles.css b/web/src/styles.css index 7a8cd5fe..71c25538 100644 --- a/web/src/styles.css +++ b/web/src/styles.css @@ -9,7 +9,7 @@ Tailwind 4 scan so their utilities aren't purged. */ @source "../node_modules/@unom/ui/dist/**/*.{js,mjs}"; -/* ── punktfunk brand · violet product chrome ──────────────────────────────── +/* ── Punktfunk brand · violet product chrome ──────────────────────────────── Two themes on one violet identity: LIGHT (lavender docs surface — the same palette the design/Scalar reference uses: white bg, faint-violet cards/borders, #6c5bf3 brand) is the :root default; DARK (the violet-tinted app-icon chrome @@ -27,7 +27,7 @@ :root { --radius: 0.625rem; - /* Brand — the violet lens mark (from the punktfunk app icon). Theme-independent. */ + /* Brand — the violet lens mark (from the Punktfunk app icon). Theme-independent. */ --pf-brand: #6c5bf3; /* deep violet — primary on light */ --pf-brand-light: #a79ff8; /* light violet — primary on dark */ --pf-highlight: #d2c9fb; /* lens highlight */ diff --git a/web/src/timing-functions.css b/web/src/timing-functions.css index a323d438..4ad371fc 100644 --- a/web/src/timing-functions.css +++ b/web/src/timing-functions.css @@ -1,4 +1,4 @@ -/* Penner easing tokens — shared with the punktfunk marketing site + @unom/ui. +/* Penner easing tokens — shared with the Punktfunk marketing site + @unom/ui. @unom/ui's accordion/collapsible/material animations resolve these by name. */ @theme { --ease-in-sine: cubic-bezier(0.47, 0, 0.745, 0.715);