.prettierrc.json was missing "semi": false, so prettier wanted to add semicolons to a codebase written without them (763 semicolon-free statements vs. 150 with, in hand-written .ts; zero hand-written .svelte files use them at all). That's why prettier --check failed on 249 files — not because the code was unformatted, but because the config didn't match the actual house style. Added "semi": false; left printWidth/etc as configured (printWidth barely moves the failure count: 218/213/212 files at 100/120/140). Ran `prettier --write .` with the corrected config. Verified semantics-preserving before and after: - eslint: 142 problems both before and after, byte-identical - build passes, 38/38 tests pass - token-stream diff (whitespace/semicolons/quotes normalized) on all 218 changed files: only 52 had any remaining token change, all either trailing-comma removal (matching trailingComma: "none") or import/ ternary reflow — no semantic changes - live smoke test: Knowledge, Tasks, Fleet map, and a chat window (AgentTrace, markdown, Scope graph, activity rail) all render correctly, no console errors Most of the diff is shadcn/ui vendor files (lib/components/ui/) moving from the CLI's own style (double quotes, tabs, semicolons) to house style; re-running `shadcn-svelte add` on a component will need a follow-up format pass. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
35 lines
977 B
Svelte
35 lines
977 B
Svelte
<script lang="ts">
|
|
// A fading-blade spinner rather than a rotating arc — rotating a single
|
|
// thin stroke via CSS transform reads as jittery at icon sizes (the arc's
|
|
// sub-pixel edges shimmer each frame). Cycling opacity across fixed blades
|
|
// avoids that entirely and is how native OS spinners do it.
|
|
let { class: className = '' }: { class?: string } = $props()
|
|
|
|
const TICKS = 8
|
|
const DUR = 0.9
|
|
</script>
|
|
|
|
<svg viewBox="0 0 24 24" class={className} fill="none" aria-hidden="true">
|
|
{#each Array.from({ length: TICKS }) as _, i (i)}
|
|
<rect
|
|
x="11"
|
|
y="1.5"
|
|
width="2"
|
|
height="6"
|
|
rx="1"
|
|
fill="currentColor"
|
|
opacity="0.15"
|
|
transform="rotate({i * (360 / TICKS)} 12 12)"
|
|
>
|
|
<animate
|
|
attributeName="opacity"
|
|
values="1;0.15"
|
|
keyTimes="0;1"
|
|
dur="{DUR}s"
|
|
begin="{-(i * (DUR / TICKS)).toFixed(3)}s"
|
|
repeatCount="indefinite"
|
|
/>
|
|
</rect>
|
|
{/each}
|
|
</svg>
|