Skip to content

Commit 79be0ed

Browse files
authored
ci: fix pnpm setup failure, pin toolchain with mise
1 parent 786bf83 commit 79be0ed

27 files changed

Lines changed: 728 additions & 221 deletions

.github/workflows/ci.yml

Lines changed: 23 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -6,25 +6,42 @@ on:
66
pull_request:
77
branches: [main]
88

9+
# Cancel superseded runs on the same ref to save CI minutes.
10+
concurrency:
11+
group: ${{ github.workflow }}-${{ github.ref }}
12+
cancel-in-progress: true
13+
914
jobs:
1015
build:
1116
runs-on: ubuntu-latest
1217
steps:
1318
- name: Checkout
1419
uses: actions/checkout@v4
1520

16-
- name: Setup pnpm
17-
uses: pnpm/action-setup@v4
21+
# Installs Node and pnpm at the exact versions pinned in mise.toml.
22+
- name: Setup toolchain (mise)
23+
uses: jdx/mise-action@v2
24+
with:
25+
cache: true
26+
27+
- name: Get pnpm store directory
28+
shell: bash
29+
run: echo "STORE_PATH=$(pnpm store path --silent)" >> "$GITHUB_ENV"
1830

19-
- name: Setup Node
20-
uses: actions/setup-node@v4
31+
- name: Cache pnpm store
32+
uses: actions/cache@v4
2133
with:
22-
node-version: 24
23-
cache: pnpm
34+
path: ${{ env.STORE_PATH }}
35+
key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }}
36+
restore-keys: |
37+
${{ runner.os }}-pnpm-store-
2438
2539
- name: Install dependencies
2640
run: pnpm install --frozen-lockfile
2741

42+
- name: Format check
43+
run: pnpm format:check
44+
2845
- name: Typecheck
2946
run: pnpm typecheck
3047

.github/workflows/release.yml

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -17,13 +17,18 @@ jobs:
1717
steps:
1818
- uses: actions/checkout@v4
1919

20-
- uses: pnpm/action-setup@v4
21-
22-
- uses: actions/setup-node@v4
20+
# Installs Node and pnpm at the exact versions pinned in mise.toml.
21+
- name: Setup toolchain (mise)
22+
uses: jdx/mise-action@v2
2323
with:
24-
node-version: 24
25-
cache: pnpm
26-
registry-url: https://registry.npmjs.org
24+
cache: true
25+
26+
# Configure npm auth for changesets publish.
27+
- name: Configure npm registry
28+
run: |
29+
echo "//registry.npmjs.org/:_authToken=${NODE_AUTH_TOKEN}" > ~/.npmrc
30+
env:
31+
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
2732

2833
- run: pnpm install --frozen-lockfile
2934

.prettierignore

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
# Generated / vendored — never reformat.
2+
dist
3+
node_modules
4+
pnpm-lock.yaml
5+
CHANGELOG.md

README.md

Lines changed: 21 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -45,18 +45,18 @@ The quickest knob is the `accentColor` prop, which drives the scrubber fill, act
4545

4646
For deeper control, every visual is driven by CSS custom properties on the `.kino` root. Override them in your own stylesheet, or pass a `theme` object of property/value pairs to set them inline.
4747

48-
| Custom property | Default | Role |
49-
| --- | --- | --- |
50-
| `--kino-accent` | `oklch(50.8% 0.118 165.612)` | Accent color (progress, active items, ranges) |
51-
| `--kino-radius` | `12px` | Corner radius of glass surfaces |
52-
| `--kino-surface` | `color-mix(in oklab, black 55%, transparent)` | Glass surface fill |
53-
| `--kino-surface-strong` | `color-mix(in oklab, black 70%, transparent)` | Stronger surface (idle play button) |
54-
| `--kino-border` | `color-mix(in oklab, white 14%, transparent)` | Hairline borders |
55-
| `--kino-text` | `oklch(98% 0 0)` | Primary text and icons |
56-
| `--kino-text-dim` | `color-mix(in oklab, white 65%, transparent)` | Secondary text (timecode) |
57-
| `--kino-blur` | `18px` | Backdrop blur radius |
58-
| `--kino-shadow` | `0 8px 40px rgba(0, 0, 0, 0.45)` | Surface drop shadow |
59-
| `--kino-ease` | `cubic-bezier(0.22, 1, 0.36, 1)` | Shared transition easing |
48+
| Custom property | Default | Role |
49+
| ----------------------- | --------------------------------------------- | --------------------------------------------- |
50+
| `--kino-accent` | `oklch(50.8% 0.118 165.612)` | Accent color (progress, active items, ranges) |
51+
| `--kino-radius` | `12px` | Corner radius of glass surfaces |
52+
| `--kino-surface` | `color-mix(in oklab, black 55%, transparent)` | Glass surface fill |
53+
| `--kino-surface-strong` | `color-mix(in oklab, black 70%, transparent)` | Stronger surface (idle play button) |
54+
| `--kino-border` | `color-mix(in oklab, white 14%, transparent)` | Hairline borders |
55+
| `--kino-text` | `oklch(98% 0 0)` | Primary text and icons |
56+
| `--kino-text-dim` | `color-mix(in oklab, white 65%, transparent)` | Secondary text (timecode) |
57+
| `--kino-blur` | `18px` | Backdrop blur radius |
58+
| `--kino-shadow` | `0 8px 40px rgba(0, 0, 0, 0.45)` | Surface drop shadow |
59+
| `--kino-ease` | `cubic-bezier(0.22, 1, 0.36, 1)` | Shared transition easing |
6060

6161
```css
6262
.kino {
@@ -70,15 +70,15 @@ For deeper control, every visual is driven by CSS custom properties on the `.kin
7070

7171
The player is keyboard-first. Shortcuts are ignored while a text input, textarea, select, or contenteditable element is focused, and modifier-key combinations (Ctrl/Cmd/Alt) are passed through.
7272

73-
| Key | Action |
74-
| --- | --- |
75-
| `Space` / `K` | Play / pause |
76-
| `<` / `>` | Decrease / increase playback rate (0.25 step) |
77-
| `M` | Toggle mute |
78-
| `C` | Toggle captions |
79-
| `S` | Open the speed menu |
80-
| `F` | Toggle fullscreen |
81-
| `0`-`9` | Seek to 0%-90% of the duration |
73+
| Key | Action |
74+
| ------------- | --------------------------------------------- |
75+
| `Space` / `K` | Play / pause |
76+
| `<` / `>` | Decrease / increase playback rate (0.25 step) |
77+
| `M` | Toggle mute |
78+
| `C` | Toggle captions |
79+
| `S` | Open the speed menu |
80+
| `F` | Toggle fullscreen |
81+
| `0`-`9` | Seek to 0%-90% of the duration |
8282

8383
## Capability gating
8484

demo/file-provider.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,9 @@ export function createFileProvider(src: string, poster?: string): Provider {
1616
capabilities: {
1717
canSetQuality: false,
1818
hasStoryboard: false,
19-
canPiP: typeof document !== "undefined" && "pictureInPictureEnabled" in document,
19+
canPiP:
20+
typeof document !== "undefined" &&
21+
"pictureInPictureEnabled" in document,
2022
canFullscreen: true,
2123
canSetRate: true,
2224
hasTextTracks: false,

0 commit comments

Comments
 (0)