Added a Bluesky share button to the published post modal - #30356
Conversation
|
| Command | Status | Duration | Result |
|---|---|---|---|
nx run @tryghost/admin:test:acceptance |
✅ Succeeded | 7m 23s | View ↗ |
nx run @tryghost/activitypub:test:acceptance |
✅ Succeeded | 49s | View ↗ |
nx run-many -t test:unit -p @tryghost/admin,@tr... |
✅ Succeeded | 7s | View ↗ |
nx run @tryghost/admin:build |
✅ Succeeded | 8s | View ↗ |
nx run ghost-monorepo:lint:boundaries |
✅ Succeeded | <1s | View ↗ |
nx run @tryghost/e2e:test:fixtures |
✅ Succeeded | 1s | View ↗ |
nx run-many -t lint -p @tryghost/admin,ghost-ad... |
✅ Succeeded | 3s | View ↗ |
nx run-many --target=build --projects=tag:publi... |
✅ Succeeded | <1s | View ↗ |
nx run ghost-admin:test |
✅ Succeeded | 1s | View ↗ |
💡 Verify your cache is correct by running tasks in a sandbox. Read docs ↗
☁️ Nx Cloud last updated this comment at 2026-09-01 04:08:19 UTC
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: Path: .coderabbit.yaml Review profile: QUIET Plan: Team Run ID: ⛔ Files ignored due to path filters (1)
📒 Files selected for processing (6)
Included review availability: Your plan provides up to 10 included reviews per hour; 8 remain after this review. 📜 Recent review details⏰ Context from checks skipped due to timeout. (2)
🧰 Additional context used📓 Path-based instructions (7)Review Admin UI for existing Shade reuse, correct component layer, semantic⚙️ CodeRabbit configuration file Files:
Review lens: "where does this data become trusted?"⚙️ CodeRabbit configuration file Files:
Prioritise concrete correctness, security, data-integrity, compatibility,⚙️ CodeRabbit configuration file Files:
do not import `@tryghost/shade/styles.css` from an📄 CodeRabbit inference engine (AGENTS.md) Files:
Type-safe boundaries: Fail only if the PR:📄 CodeRabbit inference engine (Custom checks) Files:
Build new features in React,📄 CodeRabbit inference engine (AGENTS.md) Files:
Always use `pnpm`, never npm or Yarn.📄 CodeRabbit inference engine (AGENTS.md) Files:
🧠 Learnings (1)📚 Learning: 2026-07-21T19:57:01.324ZApplied to files:
🔇 Additional comments (6)
WalkthroughThe share configurations now include Bluesky compose links built from the encoded post title and URL. The share modal recognizes the Suggested reviewers: Merge Risk: ⚪ Minimal · up to The change adds Bluesky sharing and adjusts mobile footer button layout without any identified merge-blocking risk; it is ready to merge after normal checks and review. 🚥 Pre-merge checks | ✅ 6✅ Passed checks (6 passed)
Full details: Type-Safe BoundariesExplanation PASS. The feature commits add static Bluesky URL construction, a string-literal service value, UI markup, CSS, and SVG data. They add no HTTP, SDK, environment, filesystem, queue, or event read. The new URL reuses Full details: New Files Are TypescriptExplanation PASS: The pull-request range adds only ✨ Finishing Touches📝 Generate docstrings
🧪 Generate unit tests (beta)
Comment |
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## main #30356 +/- ##
=======================================
Coverage 76.13% 76.13%
=======================================
Files 1679 1679
Lines 160277 160277
Branches 19669 19669
=======================================
Hits 122030 122030
Misses 37227 37227
Partials 1020 1020 ☔ View full report in Codecov by Harness. 🚀 New features to boost your workflow:
|
ref https://linear.app/ghost/issue/DES-1367/add-bluesky-share-button-to-published-post-popup Portal's native share already offers Bluesky, so the mark comes over with it. Portal's asset is a bad export though: its viewBox pads the artwork to the bottom, and its width and height attributes don't match that ratio. Sized by height alone it rendered short and sat high in its box, so this uses the official mark on a square viewBox instead, which makes it 16x16 like every other icon here without a CSS override. Bluesky goes last in the union and in the branch order to match the order the services render in.
ref https://linear.app/ghost/issue/DES-1367/add-bluesky-share-button-to-published-post-popup A customer asked for Bluesky in the prompt shown after publishing. The intent URL and its payload are the same ones Portal's native share uses, so a post shared from Admin and from the site compose the same post. Bluesky goes last so the four existing buttons keep the order publishers are used to.
ref https://linear.app/ghost/issue/DES-1367/add-bluesky-share-button-to-published-post-popup Below sm the dialog footer stacks, so the copy button spans the full width but the social buttons kept their fixed width and left a gap on the right that read as a missing button. They now grow to fill the row at that width and return to the fixed width at sm, on the same breakpoint the footer itself switches on.
ref https://linear.app/ghost/issue/DES-1367/add-bluesky-share-button-to-published-post-popup The React posts list already has this modal, but it is still behind a flag, so the Ember one is what publishers see after publishing today. Leaving it out would mean Bluesky comes and goes depending on which list the post was published from. The intent URL and its payload match the React modal and Portal's native share, so a post shared from any of them composes the same post. Bluesky goes last to keep the order of the four existing buttons. In dark mode it keeps its brand colour like Facebook and LinkedIn rather than joining the rule that recolours the monochrome X and Threads marks. A fifth button did not fit the existing layout. The row was a fixed four-column grid, so it now takes its track count from the number of buttons. The chips also ask for 56px but were held at 64px by the generic footer button min-width, which made the five of them wider than the 478px the modal has to spend and wrapped the copy link label onto a second line; clearing that min-width lets the declared width apply. Below 500px the grid dropped to two columns, which leaves a hole in the last row with an odd number of buttons. They now stay on one row and fill the width, the same as the React modal at that size.
927d676 to
cde4761
Compare
|
Note GitHub couldn't provide a complete incremental comparison for this pull request, so CodeRabbit is performing a full review instead. This review may take a little longer. |

ref https://linear.app/ghost/issue/DES-1367/add-bluesky-share-button-to-published-post-popup
Bluesky is already offered in Portal's native share, so this brings the admin modal
in line — same intent URL and payload, placed last so the existing buttons keep
their order.
Also fixes the social buttons leaving a gap on the right when the footer stacks on
mobile — they now fill the row at that width.