Skip to content

Refactor Workflow#7517

Open
bdbch wants to merge 4 commits intodevelopfrom
ci/snapshot-release
Open

Refactor Workflow#7517
bdbch wants to merge 4 commits intodevelopfrom
ci/snapshot-release

Conversation

@bdbch
Copy link
Member

@bdbch bdbch commented Feb 12, 2026

Changes Overview

Refactored release automation so publishing is centralized in a single trusted reusable workflow and split by job type:

  • Converted .github/workflows/publish.yml into a reusable workflow_call workflow.
  • Added input-driven release modes (stable and snapshot) with input validation.
  • Split publish behavior into separate jobs:
    • stable-release using changesets/action@v1 (existing stable flow)
    • snapshot-release using direct changeset version/build/publish without committing version bumps
  • Added wrapper workflows:
    • .github/workflows/release.yml for main and release/*
    • .github/workflows/release-snapshot.yml for snapshot/* with branch tag extraction/validation
  • Preserved Slack success/failure notifications for both release paths.

Implementation Approach

Used publish.yml as the single trusted publisher entrypoint and moved branch-trigger concerns to wrapper workflows. This keeps Trusted Publishing tied to one workflow file while allowing different stable vs snapshot release mechanics. Snapshot flow is intentionally ephemeral (no persistent version bump commits).

Testing Done

  • Performed static validation by reviewing all resulting workflow YAMLs and job wiring (needs, if, outputs, inputs).
  • Verified trigger-to-input flow:
    • release.yml -> publish.yml with release_type: stable
    • release-snapshot.yml -> publish.yml with release_type: snapshot and extracted snapshot_tag

No live GitHub Actions run was executed in this branch context.

Verification Steps

  1. Inspect .github/workflows/release.yml and confirm triggers are:
    • main
    • release/*
  2. Inspect .github/workflows/release-snapshot.yml and confirm trigger is:
    • snapshot/*
  3. Confirm release-snapshot.yml extracts and validates tag from snapshot/<tag>.
  4. Inspect .github/workflows/publish.yml and confirm:
    • on: workflow_call
    • validate-inputs job gates release mode
    • stable-release job uses changesets/action@v1
    • snapshot-release job uses:
      • pnpm changeset version --snapshot <tag>
      • pnpm build
      • pnpm changeset publish --tag <tag> --no-git-tag
  5. Trigger a test run:
    • Push to snapshot/test-tag and verify snapshot publish path + Slack message.
    • Push to release/test (or main in controlled context) and verify stable path remains unchanged.

Additional Notes

  • This structure keeps Trusted Publishing anchored to publish.yml while separating behavior by job.
  • Snapshot cleanup is best-effort and non-blocking (continue-on-error) to avoid suppressing release notifications.

Checklist

  • I have created a changeset for this PR if necessary.
  • My changes do not break the library.
  • I have added tests where applicable.
  • I have followed the project guidelines.
  • I have fixed any lint issues.

Related Issues

N/A

bdbch and others added 4 commits February 3, 2026 17:14
* update slack webhook action

* fix(react): simplify Tiptap component API and separate menu imports (#7494)

* fix(react): simplify Tiptap component API and separate menu imports

- Remove isReady from TiptapContextType, editor is now always available
- Move BubbleMenu and FloatingMenu to @tiptap/react/menus entrypoint
- Add backwards-compatible instance prop (deprecated in favor of editor)
- Add helpful error when useTiptap is used outside provider

* Validate editor prop and update demo imports

Throw an error in TiptapWrapper when neither editor nor instance is
provided. Remove the forced cast and expand the deprecation comment to
note upcoming removal. Update demo example imports to use .js/.jsx file
extensions.

* Remove editor prop from BubbleMenu example

* revert Default React demo to useEditor and EditorContent pattern (#7490)

Reverts the Default React demo from using the new <Tiptap> component
wrapper back to the traditional useEditor + <EditorContent> pattern
with prop drilling. The MenuBar now receives the editor as a prop
and uses useEditorState for reactive updates.
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Copilot AI review requested due to automatic review settings February 12, 2026 20:38
@changeset-bot
Copy link

changeset-bot bot commented Feb 12, 2026

⚠️ No Changeset found

Latest commit: 8b57655

Merging this PR will not cause a version bump for any packages. If these changes should not result in a new version, you're good to go. If these changes should result in a version bump, you need to add a changeset.

This PR includes no changesets

When changesets are added to this PR, you'll see the packages that this PR includes changesets for and the associated semver types

Click here to learn what changesets are, and how to add one.

Click here if you're a maintainer who wants to add a changeset to this PR

@netlify
Copy link

netlify bot commented Feb 12, 2026

Deploy Preview for tiptap-embed ready!

Name Link
🔨 Latest commit 8b57655
🔍 Latest deploy log https://app.netlify.com/projects/tiptap-embed/deploys/698e3a43d8e0400008dc432b
😎 Deploy Preview https://deploy-preview-7517--tiptap-embed.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.

To edit notification comments on pull requests, go to your Netlify project configuration.

Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR is titled "Refactor Workflow" but actually contains two distinct sets of changes that should be clearly separated or at minimum accurately described:

  1. Workflow Automation Refactoring (as described): Converts the publish workflow to a reusable pattern with separate stable and snapshot release jobs
  2. Version 3.19.0 Release (not mentioned): Includes package version bumps across all packages and breaking API changes to @tiptap/react

Changes:

  • Refactored GitHub Actions workflows to centralize publishing logic with input-driven release modes (stable/snapshot)
  • Released version 3.19.0 with breaking changes to the React Tiptap component API (removed isReady flag, simplified editor prop handling, moved BubbleMenu/FloatingMenu to separate entrypoint)
  • Added Link extension title attribute support with markdown rendering

Reviewed changes

Copilot reviewed 153 out of 153 changed files in this pull request and generated 5 comments.

Show a summary per file
File Description
.github/workflows/publish.yml Converted to reusable workflow_call with input validation, separate stable/snapshot jobs, and Slack notifications
.github/workflows/release.yml New wrapper workflow for stable releases on main/release/* branches
.github/workflows/release-snapshot.yml New wrapper workflow for snapshot releases with branch tag extraction and validation
packages/react/src/Tiptap.tsx Breaking changes: removed isReady, TiptapLoading, and menu components; made editor non-null; deprecated instance prop
demos/src/Examples/Default/React/ Updated demo to use new Tiptap API without wrapper component
packages/*/package.json Version bumps from 3.18.0 to 3.19.0 across all packages
packages/*/CHANGELOG.md Added 3.19.0 changelog entries with dependency updates
.changeset/*.md Consumed and removed changeset files for Link extension changes
CHANGELOG.md Added v3.19.0 release notes for extension-link and react packages

Comment on lines +206 to +211
- name: Discard snapshot versioning changes
if: always()
continue-on-error: true
run: |
git reset --hard HEAD
git clean -fd
Copy link

Copilot AI Feb 12, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The git cleanup step in the snapshot-release job runs with if: always() and continue-on-error: true, which means it will execute even if the publish step fails. However, this cleanup happens before the notification steps, so if the cleanup itself fails, the failure notification might not accurately reflect what failed.

Consider moving the cleanup step to after the notifications, or ensure the notification conditions account for cleanup failures.

Copilot uses AI. Check for mistakes.
Comment on lines 19 to 22
permissions:
id-token: write
contents: write
pull-requests: write
Copy link

Copilot AI Feb 12, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The snapshot-release workflow has contents: read permission but the publish.yml workflow it calls has contents: write and pull-requests: write permissions. When using workflow_call, the called workflow inherits permissions from the caller unless explicitly overridden.

Since the snapshot release should not commit version bumps (as stated in the PR description), the reduced permissions in release-snapshot.yml are correct. However, the publish.yml workflow's permission declaration at the top level might not apply correctly for the snapshot-release job, which explicitly declares more restrictive permissions.

Verify that the snapshot-release job in publish.yml (lines 152-233) correctly operates with read-only content permissions, since that's what it should inherit from the caller.

Copilot uses AI. Check for mistakes.
@pkg-pr-new
Copy link

pkg-pr-new bot commented Feb 12, 2026

Open in StackBlitz

@tiptap/extension-audio

npm i https://pkg.pr.new/@tiptap/extension-audio@7517

@tiptap/core

npm i https://pkg.pr.new/@tiptap/core@7517

@tiptap/extension-bold

npm i https://pkg.pr.new/@tiptap/extension-bold@7517

@tiptap/extension-bubble-menu

npm i https://pkg.pr.new/@tiptap/extension-bubble-menu@7517

@tiptap/extension-blockquote

npm i https://pkg.pr.new/@tiptap/extension-blockquote@7517

@tiptap/extension-bullet-list

npm i https://pkg.pr.new/@tiptap/extension-bullet-list@7517

@tiptap/extension-code

npm i https://pkg.pr.new/@tiptap/extension-code@7517

@tiptap/extension-code-block

npm i https://pkg.pr.new/@tiptap/extension-code-block@7517

@tiptap/extension-collaboration

npm i https://pkg.pr.new/@tiptap/extension-collaboration@7517

@tiptap/extension-code-block-lowlight

npm i https://pkg.pr.new/@tiptap/extension-code-block-lowlight@7517

@tiptap/extension-collaboration-caret

npm i https://pkg.pr.new/@tiptap/extension-collaboration-caret@7517

@tiptap/extension-color

npm i https://pkg.pr.new/@tiptap/extension-color@7517

@tiptap/extension-details

npm i https://pkg.pr.new/@tiptap/extension-details@7517

@tiptap/extension-document

npm i https://pkg.pr.new/@tiptap/extension-document@7517

@tiptap/extension-drag-handle

npm i https://pkg.pr.new/@tiptap/extension-drag-handle@7517

@tiptap/extension-drag-handle-react

npm i https://pkg.pr.new/@tiptap/extension-drag-handle-react@7517

@tiptap/extension-drag-handle-vue-2

npm i https://pkg.pr.new/@tiptap/extension-drag-handle-vue-2@7517

@tiptap/extension-drag-handle-vue-3

npm i https://pkg.pr.new/@tiptap/extension-drag-handle-vue-3@7517

@tiptap/extension-emoji

npm i https://pkg.pr.new/@tiptap/extension-emoji@7517

@tiptap/extension-file-handler

npm i https://pkg.pr.new/@tiptap/extension-file-handler@7517

@tiptap/extension-floating-menu

npm i https://pkg.pr.new/@tiptap/extension-floating-menu@7517

@tiptap/extension-font-family

npm i https://pkg.pr.new/@tiptap/extension-font-family@7517

@tiptap/extension-heading

npm i https://pkg.pr.new/@tiptap/extension-heading@7517

@tiptap/extension-hard-break

npm i https://pkg.pr.new/@tiptap/extension-hard-break@7517

@tiptap/extension-image

npm i https://pkg.pr.new/@tiptap/extension-image@7517

@tiptap/extension-horizontal-rule

npm i https://pkg.pr.new/@tiptap/extension-horizontal-rule@7517

@tiptap/extension-highlight

npm i https://pkg.pr.new/@tiptap/extension-highlight@7517

@tiptap/extension-italic

npm i https://pkg.pr.new/@tiptap/extension-italic@7517

@tiptap/extension-invisible-characters

npm i https://pkg.pr.new/@tiptap/extension-invisible-characters@7517

@tiptap/extension-link

npm i https://pkg.pr.new/@tiptap/extension-link@7517

@tiptap/extension-list

npm i https://pkg.pr.new/@tiptap/extension-list@7517

@tiptap/extension-mathematics

npm i https://pkg.pr.new/@tiptap/extension-mathematics@7517

@tiptap/extension-mention

npm i https://pkg.pr.new/@tiptap/extension-mention@7517

@tiptap/extension-ordered-list

npm i https://pkg.pr.new/@tiptap/extension-ordered-list@7517

@tiptap/extension-node-range

npm i https://pkg.pr.new/@tiptap/extension-node-range@7517

@tiptap/extension-paragraph

npm i https://pkg.pr.new/@tiptap/extension-paragraph@7517

@tiptap/extension-subscript

npm i https://pkg.pr.new/@tiptap/extension-subscript@7517

@tiptap/extension-strike

npm i https://pkg.pr.new/@tiptap/extension-strike@7517

@tiptap/extension-superscript

npm i https://pkg.pr.new/@tiptap/extension-superscript@7517

@tiptap/extension-table-of-contents

npm i https://pkg.pr.new/@tiptap/extension-table-of-contents@7517

@tiptap/extension-table

npm i https://pkg.pr.new/@tiptap/extension-table@7517

@tiptap/extension-text

npm i https://pkg.pr.new/@tiptap/extension-text@7517

@tiptap/extension-text-style

npm i https://pkg.pr.new/@tiptap/extension-text-style@7517

@tiptap/extension-text-align

npm i https://pkg.pr.new/@tiptap/extension-text-align@7517

@tiptap/extension-twitch

npm i https://pkg.pr.new/@tiptap/extension-twitch@7517

@tiptap/extension-underline

npm i https://pkg.pr.new/@tiptap/extension-underline@7517

@tiptap/extension-typography

npm i https://pkg.pr.new/@tiptap/extension-typography@7517

@tiptap/extensions

npm i https://pkg.pr.new/@tiptap/extensions@7517

@tiptap/extension-unique-id

npm i https://pkg.pr.new/@tiptap/extension-unique-id@7517

@tiptap/extension-youtube

npm i https://pkg.pr.new/@tiptap/extension-youtube@7517

@tiptap/html

npm i https://pkg.pr.new/@tiptap/html@7517

@tiptap/markdown

npm i https://pkg.pr.new/@tiptap/markdown@7517

@tiptap/pm

npm i https://pkg.pr.new/@tiptap/pm@7517

@tiptap/react

npm i https://pkg.pr.new/@tiptap/react@7517

@tiptap/starter-kit

npm i https://pkg.pr.new/@tiptap/starter-kit@7517

@tiptap/static-renderer

npm i https://pkg.pr.new/@tiptap/static-renderer@7517

@tiptap/suggestion

npm i https://pkg.pr.new/@tiptap/suggestion@7517

@tiptap/vue-2

npm i https://pkg.pr.new/@tiptap/vue-2@7517

@tiptap/vue-3

npm i https://pkg.pr.new/@tiptap/vue-3@7517

@tiptap/extension-character-count

npm i https://pkg.pr.new/@tiptap/extension-character-count@7517

@tiptap/extension-dropcursor

npm i https://pkg.pr.new/@tiptap/extension-dropcursor@7517

@tiptap/extension-focus

npm i https://pkg.pr.new/@tiptap/extension-focus@7517

@tiptap/extension-gapcursor

npm i https://pkg.pr.new/@tiptap/extension-gapcursor@7517

@tiptap/extension-history

npm i https://pkg.pr.new/@tiptap/extension-history@7517

@tiptap/extension-list-item

npm i https://pkg.pr.new/@tiptap/extension-list-item@7517

@tiptap/extension-list-keymap

npm i https://pkg.pr.new/@tiptap/extension-list-keymap@7517

@tiptap/extension-placeholder

npm i https://pkg.pr.new/@tiptap/extension-placeholder@7517

@tiptap/extension-table-cell

npm i https://pkg.pr.new/@tiptap/extension-table-cell@7517

@tiptap/extension-table-header

npm i https://pkg.pr.new/@tiptap/extension-table-header@7517

@tiptap/extension-task-item

npm i https://pkg.pr.new/@tiptap/extension-task-item@7517

@tiptap/extension-table-row

npm i https://pkg.pr.new/@tiptap/extension-table-row@7517

@tiptap/extension-task-list

npm i https://pkg.pr.new/@tiptap/extension-task-list@7517

commit: 8b57655

@bdbch
Copy link
Member Author

bdbch commented Feb 13, 2026

Will come back to this later today.

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.

1 participant