Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 0 additions & 4 deletions .github/changelog/add-content-mentions

This file was deleted.

4 changes: 0 additions & 4 deletions .github/changelog/add-custom-bluesky-text

This file was deleted.

4 changes: 0 additions & 4 deletions .github/changelog/add-filterable-appview-host

This file was deleted.

4 changes: 0 additions & 4 deletions .github/changelog/add-per-post-share-toggle

This file was deleted.

4 changes: 0 additions & 4 deletions .github/changelog/add-pre-publish-panel

This file was deleted.

4 changes: 0 additions & 4 deletions .github/changelog/add-publish-retry-backoff

This file was deleted.

4 changes: 0 additions & 4 deletions .github/changelog/add-reactions-block

This file was deleted.

4 changes: 0 additions & 4 deletions .github/changelog/add-surface-publish-errors

This file was deleted.

4 changes: 0 additions & 4 deletions .github/changelog/add-typed-atproto-preview

This file was deleted.

4 changes: 0 additions & 4 deletions .github/changelog/add-warn-no-post-types-selected

This file was deleted.

4 changes: 0 additions & 4 deletions .github/changelog/fix-comment-link-facets

This file was deleted.

4 changes: 0 additions & 4 deletions .github/changelog/fix-comment-quote-embed

This file was deleted.

4 changes: 0 additions & 4 deletions .github/changelog/fix-decouple-post-delete

This file was deleted.

4 changes: 0 additions & 4 deletions .github/changelog/fix-grapheme-truncation

This file was deleted.

4 changes: 0 additions & 4 deletions .github/changelog/fix-preview-cache-headers

This file was deleted.

4 changes: 0 additions & 4 deletions .github/changelog/fix-preview-front-end-extras

This file was deleted.

4 changes: 0 additions & 4 deletions .github/changelog/fix-publication-basic-theme-type

This file was deleted.

4 changes: 0 additions & 4 deletions .github/changelog/fix-publication-self-heal

This file was deleted.

4 changes: 0 additions & 4 deletions .github/changelog/fix-reaction-sync-cpt-resolution

This file was deleted.

4 changes: 0 additions & 4 deletions .github/changelog/fix-reaction-sync-oldest-first

This file was deleted.

4 changes: 0 additions & 4 deletions .github/changelog/fix-short-form-inline-links

This file was deleted.

4 changes: 0 additions & 4 deletions .github/changelog/fix-short-form-overflow

This file was deleted.

4 changes: 0 additions & 4 deletions .github/changelog/fix-standard-site-strong-ref-cids

This file was deleted.

4 changes: 0 additions & 4 deletions .github/changelog/fix-unschedule-all-cron-events

This file was deleted.

4 changes: 0 additions & 4 deletions .github/changelog/harden-atproto-http-redirects

This file was deleted.

4 changes: 0 additions & 4 deletions .github/changelog/raise-minimum-wordpress

This file was deleted.

4 changes: 0 additions & 4 deletions .github/changelog/update-standard-site-compatibility

This file was deleted.

35 changes: 35 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,40 @@ All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).

## [2.0.0] - 2026-07-08
### Added
- Add an ATmosphere Reactions block that shows the Bluesky likes and reposts that your posts have received, as a facepile of avatars with a count. [#148]
- Add filters so links to Bluesky can point at an alternative AT Protocol appview, including ones hosted on a subdomain or subpath. [#159]
- Before publishing, the editor now shows whether a post will be shared to Bluesky, how it will appear, and how its text measures against Bluesky’s character limit. [#139]
- Failed attempts to share a post to Bluesky are now retried automatically for about twenty minutes, so a brief network or server hiccup no longer means the post silently never appears. [#182]
- Mention a Bluesky account with @handle.tld in your post: the mention now links to their profile on your site, and they are notified on Bluesky even on longer posts. [#165]
- Preview AT Protocol output by record type, including an all-record view for comparing records in the current page context. [#170]
- The editor's Bluesky panel now has a custom text field: write your own message for Bluesky and it is posted with a link back to your post, instead of the automatically composed text. [#152]
- The editor's Bluesky panel now has a switch to turn sharing on or off for an individual post; switching it off after a post was shared removes it from Bluesky. [#139]
- The editor now shows a notice when sharing a post to Bluesky fails, including whether it will be retried automatically or needs the post to be updated again. [#183]
- The settings page now warns you when auto-publishing is on but no post types are selected, so nothing would be published. [#174]

### Changed
- ATmosphere now requires WordPress 6.5 or later. [#148]
- Standard.site records and OAuth permissions are now more compatible with current long-form publishing tools and discovery. [#167]

### Fixed
- Bluesky replies that quote another post now keep a link to the quoted post when imported as comments, instead of dropping it. [#157]
- Deleting a post now reliably removes it from Bluesky even when it has a large number of replies to clean up. [#138]
- Disconnecting or deactivating now reliably removes all pending background tasks, so a task queued under a previous connection can no longer run against a newly connected account. [#182]
- Emoji now count as a single character against Bluesky's 300-character limit, the same way Bluesky's own composer counts them. Posts with emoji are no longer trimmed earlier than necessary, and the editor's character count matches what you would see on Bluesky. [#156]
- Hardened the security of connections to your Bluesky account. [#171]
- Import Bluesky likes, reposts, and replies on all your published content types. Previously these interactions were only brought back for standard posts, so likes and replies on pages and other content published to Bluesky were quietly missed. [#185]
- Kept standard.site document references in Bluesky posts pointing at the current document record and made discovery URLs resolve more consistently.
- Links in Bluesky replies now keep their full web address when imported as comments, instead of showing a shortened, unclickable preview. [#134]
- Links inside short posts shared to Bluesky now stay clickable, instead of being flattened to plain text with the link dropped. [#146]
- Long posts without a title are now shared to Bluesky as a summary with a link back to the original, instead of being cut off mid-sentence with no way to reach the full post. [#145]
- Reliably import nested Bluesky replies. Reactions are now processed oldest-first within each sync, so a reply threads under its parent comment in the same run instead of being dropped when a whole thread arrives between syncs. [#186]
- Send private, no-cache headers on the record preview so a caching layer cannot store a logged-in preview and show it to other visitors. [#187]
- Shared posts on Bluesky now keep your site's publication details up to date automatically when you publish, so Standard.site readers always see current information. [#167]
- The AT Protocol record preview no longer shows sharing buttons or other theme and plugin extras that are not part of the published record. [#170]
- Your site's theme colours now display correctly in enhanced link cards on Bluesky and other apps, instead of being dropped because the publication record failed validation. [#154]

## [1.2.0] - 2026-06-15
### Security
- Hardened error logging so details from cryptographic failures are never written to the log. [#128]
Expand Down Expand Up @@ -113,6 +147,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- Remove a comment reply from Bluesky if the comment was deleted or unapproved while it was being published, instead of leaving an orphan reply behind. [#32]
- Short posts under the long-form teaser-thread strategy no longer ship a redundant "continue reading" reply when the entire body already fits in a single Bluesky post. The link-back is preserved as a card on the same post. [#51]

[2.0.0]: https://github.com/Automattic/wordpress-atmosphere/compare/1.2.0...2.0.0
[1.2.0]: https://github.com/Automattic/wordpress-atmosphere/compare/1.1.1...1.2.0
[1.1.1]: https://github.com/Automattic/wordpress-atmosphere/compare/1.1.0...1.1.1
[1.1.0]: https://github.com/Automattic/wordpress-atmosphere/compare/1.0.0...1.1.0
Expand Down
4 changes: 2 additions & 2 deletions atmosphere.php
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
* Plugin Name: ATmosphere
* Plugin URI: https://github.com/pfefferle/atmosphere
* Description: Publish WordPress posts to AT Protocol (Bluesky + standard.site) via native OAuth.
* Version: 1.2.0
* Version: 2.0.0
* Author: Automattic
* Author URI: https://automattic.com
* License: GPL-2.0-or-later
Expand All @@ -19,7 +19,7 @@

\defined( 'ABSPATH' ) || exit;

\define( 'ATMOSPHERE_VERSION', '1.2.0' );
\define( 'ATMOSPHERE_VERSION', '2.0.0' );
Comment thread
pfefferle marked this conversation as resolved.
\define( 'ATMOSPHERE_PLUGIN_DIR', \plugin_dir_path( __FILE__ ) );
\define( 'ATMOSPHERE_PLUGIN_URL', \plugin_dir_url( __FILE__ ) );
\define( 'ATMOSPHERE_PLUGIN_FILE', __FILE__ );
Expand Down
2 changes: 1 addition & 1 deletion includes/class-atmosphere.php
Original file line number Diff line number Diff line change
Expand Up @@ -2015,7 +2015,7 @@ private static function maybe_schedule_publish_retry( string $hook, int $post_id
* so the delay schedule and the attempt cap cannot contradict
* each other).
*
* @since unreleased
* @since 2.0.0
*
* @param int[] $delays Retry delays in seconds. Default 60, 300, 900.
*/
Expand Down
8 changes: 4 additions & 4 deletions includes/class-blocks.php
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ class Blocks {
/**
* Wire block registration on `init`.
*
* @since unreleased
* @since 2.0.0
*
* @return void
*/
Expand All @@ -32,7 +32,7 @@ public static function register(): void {
* already renders the same Bluesky reactions (stored as WordPress
* comments in the shared shape), so registering ours too would double up.
*
* @since unreleased
* @since 2.0.0
*
* @return void
*/
Expand All @@ -46,7 +46,7 @@ public static function register_blocks(): void {
* already renders these reactions. Return true to force the block on
* regardless, or false to suppress it.
*
* @since unreleased
* @since 2.0.0
*
* @param bool $register Whether to register the reactions block.
*/
Expand All @@ -65,7 +65,7 @@ public static function register_blocks(): void {
* overlay/frame/close wiring binds to the modal store created by
* `src/shared/modal`.
*
* @since unreleased
* @since 2.0.0
*
* @param array $args {
* Optional. Modal arguments.
Expand Down
6 changes: 3 additions & 3 deletions includes/class-mention.php
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@
/**
* Display-side mention linkifier.
*
* @since unreleased
* @since 2.0.0
*/
class Mention {

Expand Down Expand Up @@ -111,7 +111,7 @@ public static function the_content( string $content ): string {
* mention. Returns empty sets for empty or pathologically large content,
* mirroring {@see self::the_content()}, which linkifies neither.
*
* @since unreleased
* @since 2.0.0
*
* @param string $content Rendered HTML.
* @return array{linkable:array<string,string>,protected:array<string,true>}
Expand Down Expand Up @@ -339,7 +339,7 @@ static function ( array $m ): string {
* text — e.g. to gate on a cached existence check or an
* allowlist of known accounts.
*
* @since unreleased
* @since 2.0.0
*
* @param bool $should_link Whether to link the handle. Default true.
* @param string $handle The bare handle (no leading `@`).
Expand Down
6 changes: 3 additions & 3 deletions includes/functions.php
Original file line number Diff line number Diff line change
Expand Up @@ -72,7 +72,7 @@ function appview_url( string $path, array $context = array() ): string {
* the Bluesky appview. To rewrite the path itself (e.g. a custom route),
* use the {@see 'atmosphere_appview_url'} filter instead.
*
* @since unreleased
* @since 2.0.0
*
* @param string $host Default appview host ('bsky.app').
* @param string $path Path being built, e.g. 'profile/<did>'.
Expand All @@ -90,7 +90,7 @@ function appview_url( string $path, array $context = array() ): string {
* route — by rebuilding it from the parts in $context. Return a complete
* URL; it is escaped by the caller, not here.
*
* @since unreleased
* @since 2.0.0
*
* @param string $url Assembled URL, e.g. 'https://bsky.app/profile/<did>'.
* @param string $path Path that was appended, e.g. 'profile/<did>'.
Expand Down Expand Up @@ -670,7 +670,7 @@ function debug_log( string $message ): void {
* status (including a 3xx the server would have redirected) is treated
* as a failure. Centralizes that check for the OAuth and API callers.
*
* @since unreleased
* @since 2.0.0
*
* @param mixed $status HTTP status code (int, or '' when the request failed).
* @return bool True for 200-299, false otherwise.
Expand Down
2 changes: 1 addition & 1 deletion includes/transformer/class-base.php
Original file line number Diff line number Diff line change
Expand Up @@ -220,7 +220,7 @@ protected function is_post_redacted( \WP_Post $post ): bool {
* inside) work from this HTML; callers that only need plain text go through
* {@see self::render_post_content_plain()}, which strips tags from it.
*
* @since unreleased
* @since 2.0.0
*
* @param \WP_Post $post Post object.
* @return string
Expand Down
2 changes: 1 addition & 1 deletion includes/transformer/class-comment.php
Original file line number Diff line number Diff line change
Expand Up @@ -109,7 +109,7 @@ public function transform(): array {
* A site that trusts its (already moderated) commenters and wants their
* mentions to notify can return true to opt back in.
*
* @since unreleased
* @since 2.0.0
*
* @param bool $resolve Whether to resolve comment mentions. Default false.
* @param \WP_Comment $comment The comment being transformed.
Expand Down
6 changes: 3 additions & 3 deletions includes/transformer/class-document.php
Original file line number Diff line number Diff line change
Expand Up @@ -167,7 +167,7 @@ public function transform(): array {
* Return an array with a non-empty string `$type` field to add
* the `links` field. Return null or an empty array to omit it.
*
* @since unreleased
* @since 2.0.0
*
* @param array|null $links Links union object, or null to omit.
* @param \WP_Post $post WordPress post.
Expand All @@ -187,7 +187,7 @@ public function transform(): array {
* Return a com.atproto.label.defs#selfLabels object to add
* content-warning labels. Return null or an empty array to omit it.
*
* @since unreleased
* @since 2.0.0
*
* @param array|null $labels Self-labels object, or null to omit.
* @param \WP_Post $post WordPress post.
Expand All @@ -208,7 +208,7 @@ public function transform(): array {
* sanitized and capped to the lexicon's 100-grapheme limit.
* Return null or an empty array to omit the field.
*
* @since unreleased
* @since 2.0.0
*
* @param array|null $contributors Contributor list, or null to omit.
* @param \WP_Post $post WordPress post.
Expand Down
Loading