Conversation
* 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>
|
✅ Deploy Preview for tiptap-embed ready!
To edit notification comments on pull requests, go to your Netlify project configuration. |
There was a problem hiding this comment.
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:
- Workflow Automation Refactoring (as described): Converts the publish workflow to a reusable pattern with separate stable and snapshot release jobs
- 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
isReadyflag, 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 |
| - name: Discard snapshot versioning changes | ||
| if: always() | ||
| continue-on-error: true | ||
| run: | | ||
| git reset --hard HEAD | ||
| git clean -fd |
There was a problem hiding this comment.
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.
| permissions: | ||
| id-token: write | ||
| contents: write | ||
| pull-requests: write |
There was a problem hiding this comment.
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.
@tiptap/extension-audio
@tiptap/core
@tiptap/extension-bold
@tiptap/extension-bubble-menu
@tiptap/extension-blockquote
@tiptap/extension-bullet-list
@tiptap/extension-code
@tiptap/extension-code-block
@tiptap/extension-collaboration
@tiptap/extension-code-block-lowlight
@tiptap/extension-collaboration-caret
@tiptap/extension-color
@tiptap/extension-details
@tiptap/extension-document
@tiptap/extension-drag-handle
@tiptap/extension-drag-handle-react
@tiptap/extension-drag-handle-vue-2
@tiptap/extension-drag-handle-vue-3
@tiptap/extension-emoji
@tiptap/extension-file-handler
@tiptap/extension-floating-menu
@tiptap/extension-font-family
@tiptap/extension-heading
@tiptap/extension-hard-break
@tiptap/extension-image
@tiptap/extension-horizontal-rule
@tiptap/extension-highlight
@tiptap/extension-italic
@tiptap/extension-invisible-characters
@tiptap/extension-link
@tiptap/extension-list
@tiptap/extension-mathematics
@tiptap/extension-mention
@tiptap/extension-ordered-list
@tiptap/extension-node-range
@tiptap/extension-paragraph
@tiptap/extension-subscript
@tiptap/extension-strike
@tiptap/extension-superscript
@tiptap/extension-table-of-contents
@tiptap/extension-table
@tiptap/extension-text
@tiptap/extension-text-style
@tiptap/extension-text-align
@tiptap/extension-twitch
@tiptap/extension-underline
@tiptap/extension-typography
@tiptap/extensions
@tiptap/extension-unique-id
@tiptap/extension-youtube
@tiptap/html
@tiptap/markdown
@tiptap/pm
@tiptap/react
@tiptap/starter-kit
@tiptap/static-renderer
@tiptap/suggestion
@tiptap/vue-2
@tiptap/vue-3
@tiptap/extension-character-count
@tiptap/extension-dropcursor
@tiptap/extension-focus
@tiptap/extension-gapcursor
@tiptap/extension-history
@tiptap/extension-list-item
@tiptap/extension-list-keymap
@tiptap/extension-placeholder
@tiptap/extension-table-cell
@tiptap/extension-table-header
@tiptap/extension-task-item
@tiptap/extension-table-row
@tiptap/extension-task-list
commit: |
|
Will come back to this later today. |
Changes Overview
Refactored release automation so publishing is centralized in a single trusted reusable workflow and split by job type:
.github/workflows/publish.ymlinto a reusableworkflow_callworkflow.stableandsnapshot) with input validation.stable-releaseusingchangesets/action@v1(existing stable flow)snapshot-releaseusing directchangeset version/build/publishwithout committing version bumps.github/workflows/release.ymlformainandrelease/*.github/workflows/release-snapshot.ymlforsnapshot/*with branch tag extraction/validationImplementation Approach
Used
publish.ymlas 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
needs,if, outputs, inputs).release.yml->publish.ymlwithrelease_type: stablerelease-snapshot.yml->publish.ymlwithrelease_type: snapshotand extractedsnapshot_tagNo live GitHub Actions run was executed in this branch context.
Verification Steps
.github/workflows/release.ymland confirm triggers are:mainrelease/*.github/workflows/release-snapshot.ymland confirm trigger is:snapshot/*release-snapshot.ymlextracts and validates tag fromsnapshot/<tag>..github/workflows/publish.ymland confirm:on: workflow_callvalidate-inputsjob gates release modestable-releasejob useschangesets/action@v1snapshot-releasejob uses:pnpm changeset version --snapshot <tag>pnpm buildpnpm changeset publish --tag <tag> --no-git-tagsnapshot/test-tagand verify snapshot publish path + Slack message.release/test(ormainin controlled context) and verify stable path remains unchanged.Additional Notes
publish.ymlwhile separating behavior by job.continue-on-error) to avoid suppressing release notifications.Checklist
Related Issues
N/A