From 4974ae6033b76c2844c7c35e33e4ee4c6314d36b Mon Sep 17 00:00:00 2001 From: Claude Date: Fri, 26 Jun 2026 16:31:04 +0000 Subject: [PATCH 1/3] ci: make release manual via workflow_dispatch No release has been cut yet, and auto-publishing on every merge to main is premature. Switch the Release workflow from a push trigger to manual workflow_dispatch so releases are cut deliberately from the Actions tab. Co-Authored-By: Claude Opus 4.8 Claude-Session: https://claude.ai/code/session_018JWDajbftveEqqZWcrFH5n --- .github/workflows/release.yml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 338823a..6674f53 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -1,8 +1,9 @@ name: Release +# Manual only — no auto-publish on merge to main. +# Trigger from the Actions tab ("Run workflow") when you want to cut a release. on: - push: - branches: [main] + workflow_dispatch: concurrency: ${{ github.workflow }}-${{ github.ref }} From b9355ef9ab0e27a27595fc8c8f5475c43c0c827b Mon Sep 17 00:00:00 2001 From: Claude Date: Fri, 26 Jun 2026 16:36:55 +0000 Subject: [PATCH 2/3] ci: gate automated release on CI passing on main Replace the manual workflow_dispatch trigger with a workflow_run trigger so the Release workflow runs automatically after CI succeeds on main, and never when CI is red. This restores the standard changesets flow (merge a changeset -> "Version Packages" PR -> merge to publish) while ensuring a broken main cannot publish. Co-Authored-By: Claude Opus 4.8 Claude-Session: https://claude.ai/code/session_018JWDajbftveEqqZWcrFH5n --- .github/workflows/release.yml | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 6674f53..98f8756 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -1,9 +1,15 @@ name: Release -# Manual only — no auto-publish on merge to main. -# Trigger from the Actions tab ("Run workflow") when you want to cut a release. +# Runs automatically only AFTER the CI workflow succeeds on main, so a red +# main never publishes. The changesets flow then takes over: +# 1. add a changeset in your PR, merge to main +# 2. CI passes -> this opens/updates a "Version Packages" PR +# 3. merging THAT PR re-runs CI -> this publishes to npm on: - workflow_dispatch: + workflow_run: + workflows: [CI] + branches: [main] + types: [completed] concurrency: ${{ github.workflow }}-${{ github.ref }} @@ -14,9 +20,13 @@ permissions: jobs: release: + # Only release when CI on a push to main actually passed. + if: ${{ github.event.workflow_run.conclusion == 'success' && github.event.workflow_run.event == 'push' }} runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 + with: + fetch-depth: 0 # Installs Node and pnpm at the exact versions pinned in mise.toml. - name: Setup toolchain (mise) From ebb6190c8c0b65bf2894d8eeaf5f49c62983af99 Mon Sep 17 00:00:00 2001 From: Claude Date: Fri, 26 Jun 2026 16:40:34 +0000 Subject: [PATCH 3/3] chore: drop initial-release changeset Remove the premature changeset so merging does not auto-open a Version Packages PR. A release changeset will be added when we're ready to ship. Co-Authored-By: Claude Opus 4.8 Claude-Session: https://claude.ai/code/session_018JWDajbftveEqqZWcrFH5n --- .changeset/initial-release.md | 13 ------------- 1 file changed, 13 deletions(-) delete mode 100644 .changeset/initial-release.md diff --git a/.changeset/initial-release.md b/.changeset/initial-release.md deleted file mode 100644 index 3cd7ea5..0000000 --- a/.changeset/initial-release.md +++ /dev/null @@ -1,13 +0,0 @@ ---- -"@karnstack/kino": patch ---- - -Initial release of kino, a premium themeable React video player with a pluggable-provider architecture. - -- Translucent glass / macOS-style player chrome: idle play overlay with speed pre-select, auto-hiding control bar, scrubber with buffered shading, drag-to-seek, and storyboard thumbnail previews. -- Speed, quality, and captions menus that gate themselves on provider and platform capabilities. -- Keyboard-first controls (play/pause, seek, volume, rate, mute, captions, fullscreen, and percent seek) that yield to focused text inputs. -- Themeable via the `accentColor` prop and `--kino-*` CSS custom properties. -- Mux provider built on the `@mux/mux-video` element, plus a `MuxPlayer` drop-in that accepts signed playback, thumbnail, and storyboard tokens (auth-agnostic; tokens are minted server-side). -- Headless `Player` root, store, and control primitives exported for custom chrome. -- React 19 peer dependency. Entry points: `@karnstack/kino`, `@karnstack/kino/mux`, and `@karnstack/kino/styles.css`.