diff --git a/.release-please-manifest.json b/.release-please-manifest.json index 2b3dbde4..c05fc59d 100644 --- a/.release-please-manifest.json +++ b/.release-please-manifest.json @@ -1,3 +1,3 @@ { - ".": "0.18.3" + ".": "0.18.4" } diff --git a/CHANGELOG.md b/CHANGELOG.md index 4c358d6a..a0f711e5 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,29 @@ # Changelog +## [0.18.4](https://github.com/WordPress/presence-api/compare/v0.18.3...v0.18.4) (2026-10-26) + + +### Bug Fixes + +* clear the cleanup cron event on plugin uninstall ([#872](https://github.com/WordPress/presence-api/issues/872)) ([974fe7f](https://github.com/WordPress/presence-api/commit/974fe7fb86a9d85c2d671c8555da2a7288a0d2ad)) +* preserve post locks on logout from another session ([#893](https://github.com/WordPress/presence-api/issues/893)) ([093202f](https://github.com/WordPress/presence-api/commit/093202f7eeb15382fc1f17b0be75d2074fe3aa53)) +* **privacy:** exclude reserved rows from personal data export ([#896](https://github.com/WordPress/presence-api/issues/896)) ([50e1dff](https://github.com/WordPress/presence-api/commit/50e1dff4dfa819fc72f4bfc66b7f27586e3a9c92)) +* store no session hash on a post room's one editor row per person ([#884](https://github.com/WordPress/presence-api/issues/884)) ([83857a2](https://github.com/WordPress/presence-api/commit/83857a2346b07d460f0d85883d9cdd593b953371)) +* write wp presence set as WP-CLI's --user, and three smaller corrections ([#887](https://github.com/WordPress/presence-api/issues/887)) ([2e26f44](https://github.com/WordPress/presence-api/commit/2e26f440e171b3c11a4c7d65943eb13b1b3c9f1e)) + + +### Dependencies + +* **deps-dev:** bump @playwright/test from 1.63.0 to 1.64.1 ([#877](https://github.com/WordPress/presence-api/issues/877)) ([2302652](https://github.com/WordPress/presence-api/commit/2302652322defaabe58aaf987576b19eca24910e)) +* **deps-dev:** bump @wordpress/scripts from 36.0.0 to 36.1.0 ([#875](https://github.com/WordPress/presence-api/issues/875)) ([2605afc](https://github.com/WordPress/presence-api/commit/2605afc3991678e5d2e9327d02fda4df51f8e811)) +* **deps-dev:** bump html-validate from 11.16.1 to 11.16.2 ([#876](https://github.com/WordPress/presence-api/issues/876)) ([9527cd6](https://github.com/WordPress/presence-api/commit/9527cd6bc5a64e6b97e3776d0cda9ab1956cba02)) +* **deps-dev:** bump vite from 8.3.1 to 8.3.4 ([#879](https://github.com/WordPress/presence-api/issues/879)) ([035335f](https://github.com/WordPress/presence-api/commit/035335fa7a28c8148cd5162f79a66e6bdbed391a)) +* **deps-dev:** bump vitest from 5.0.3 to 5.0.4 ([#878](https://github.com/WordPress/presence-api/issues/878)) ([436b7f5](https://github.com/WordPress/presence-api/commit/436b7f5b1229dce6afa5674c1149cc635c305ac3)) +* **deps-dev:** update phpstan/phpstan requirement from 2.3.0 to 2.3.1 ([#874](https://github.com/WordPress/presence-api/issues/874)) ([541085c](https://github.com/WordPress/presence-api/commit/541085cfc66d889983e886276a610a6d12a743bf)) +* **deps:** bump astral-sh/setup-uv from 10.2.0 to 10.3.0 ([#881](https://github.com/WordPress/presence-api/issues/881)) ([296c4fc](https://github.com/WordPress/presence-api/commit/296c4fcca4251af91e2603b15afe84cf64ab47ea)) +* **deps:** bump shivammathur/setup-php from 2.37.2 to 2.40.0 ([#883](https://github.com/WordPress/presence-api/issues/883)) ([281e85b](https://github.com/WordPress/presence-api/commit/281e85b4e551257bdccd6994945715fa4d7e79b2)) +* **deps:** bump the codeql-action group with 3 updates ([#880](https://github.com/WordPress/presence-api/issues/880)) ([7222885](https://github.com/WordPress/presence-api/commit/722288589dd1c2be4d0ab706b025d563dc7fe404)) + ## [0.18.3](https://github.com/WordPress/presence-api/compare/v0.18.2...v0.18.3) (2026-10-20) diff --git a/plugins/presence-api/.wordpress-org/blueprints/blueprint.json b/plugins/presence-api/.wordpress-org/blueprints/blueprint.json index 66de282b..e44b35cd 100644 --- a/plugins/presence-api/.wordpress-org/blueprints/blueprint.json +++ b/plugins/presence-api/.wordpress-org/blueprints/blueprint.json @@ -31,7 +31,7 @@ "pluginData": { "resource": "git:directory", "url": "https://github.com/WordPress/presence-api", - "ref": "v0.18.3", + "ref": "v0.18.4", "path": "plugins/presence-debugger" }, "options": { @@ -43,7 +43,7 @@ "path": "/wordpress/wp-content/plugins/presence-api/demo-seeder.php", "data": { "resource": "url", - "url": "https://raw.githubusercontent.com/WordPress/presence-api/v0.18.3/tests/e2e/demo-seeder.php" + "url": "https://raw.githubusercontent.com/WordPress/presence-api/v0.18.4/tests/e2e/demo-seeder.php" } }, { @@ -51,7 +51,7 @@ "path": "/wordpress/wp-content/mu-plugins/screen-stale-demo-helper.php", "data": { "resource": "url", - "url": "https://raw.githubusercontent.com/WordPress/presence-api/v0.18.3/tests/e2e/screen-stale-demo-helper.php" + "url": "https://raw.githubusercontent.com/WordPress/presence-api/v0.18.4/tests/e2e/screen-stale-demo-helper.php" } }, { diff --git a/plugins/presence-api/languages/presence-api.pot b/plugins/presence-api/languages/presence-api.pot index f4a98e43..aa91ae55 100644 --- a/plugins/presence-api/languages/presence-api.pot +++ b/plugins/presence-api/languages/presence-api.pot @@ -2,14 +2,14 @@ # This file is distributed under the GPL-2.0-or-later. msgid "" msgstr "" -"Project-Id-Version: Presence API 0.18.3\n" +"Project-Id-Version: Presence API 0.18.4\n" "Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/presence-api\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"POT-Creation-Date: 2026-10-20T17:17:04+00:00\n" +"POT-Creation-Date: 2026-10-26T17:44:47+00:00\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "X-Generator: WP-CLI 2.12.0\n" "X-Domain: presence-api\n" @@ -17,8 +17,8 @@ msgstr "" #. Plugin Name of the plugin #: presence-api.php #: includes/privacy.php:57 -#: includes/privacy.php:111 -#: includes/privacy.php:222 +#: includes/privacy.php:114 +#: includes/privacy.php:225 msgid "Presence API" msgstr "" @@ -103,108 +103,100 @@ msgid_plural "%d more" msgstr[0] "" msgstr[1] "" -#: includes/cli/class-wp-presence-cli-command.php:54 -#: includes/presence.php:697 +#: includes/cli/class-wp-presence-cli-command.php:52 +#: includes/presence.php:701 #: includes/rest-api/endpoints/class-wp-rest-presence-controller.php:482 msgid "Presence is not recorded on this site." msgstr "" -#: includes/cli/class-wp-presence-cli-command.php:58 -msgid "User not found." -msgstr "" - -#: includes/cli/class-wp-presence-cli-command.php:67 +#: includes/cli/class-wp-presence-cli-command.php:61 msgid "Invalid JSON in --data." msgstr "" #. translators: 1: Room identifier, 2: Client identifier. -#: includes/cli/class-wp-presence-cli-command.php:76 +#: includes/cli/class-wp-presence-cli-command.php:70 #, php-format msgid "Presence set in room \"%1$s\" for client \"%2$s\"." msgstr "" -#: includes/cli/class-wp-presence-cli-command.php:78 +#: includes/cli/class-wp-presence-cli-command.php:72 msgid "Failed to set presence." msgstr "" -#: includes/cli/class-wp-presence-cli-command.php:114 -msgid "Please specify a room. Usage: wp presence list " -msgstr "" - #. translators: %s: Room identifier. -#: includes/cli/class-wp-presence-cli-command.php:126 +#: includes/cli/class-wp-presence-cli-command.php:116 #, php-format msgid "No presence entries in room \"%s\"." msgstr "" #. translators: %d: Total number of presence entries. -#: includes/cli/class-wp-presence-cli-command.php:179 +#: includes/cli/class-wp-presence-cli-command.php:169 #, php-format msgid "Total entries: %d" msgstr "" #. translators: %d: Total number of distinct users. -#: includes/cli/class-wp-presence-cli-command.php:181 +#: includes/cli/class-wp-presence-cli-command.php:171 #, php-format msgid "Total users: %d" msgstr "" -#: includes/cli/class-wp-presence-cli-command.php:184 -#: includes/cli/class-wp-presence-cli-command.php:284 +#: includes/cli/class-wp-presence-cli-command.php:174 +#: includes/cli/class-wp-presence-cli-command.php:274 msgid "No presence data." msgstr "" -#: includes/cli/class-wp-presence-cli-command.php:241 -#: includes/cli/class-wp-presence-cli-command.php:345 +#: includes/cli/class-wp-presence-cli-command.php:231 +#: includes/cli/class-wp-presence-cli-command.php:335 msgid "This is not a multisite installation." msgstr "" -#: includes/cli/class-wp-presence-cli-command.php:247 +#: includes/cli/class-wp-presence-cli-command.php:237 #: includes/rest-api/endpoints/class-wp-rest-presence-network-controller.php:127 msgid "Sorry, you are not allowed to view network presence." msgstr "" -#: includes/cli/class-wp-presence-cli-command.php:253 +#: includes/cli/class-wp-presence-cli-command.php:243 #: includes/rest-api/endpoints/class-wp-rest-presence-network-controller.php:206 msgid "Invalid site ID." msgstr "" -#: includes/cli/class-wp-presence-cli-command.php:274 +#: includes/cli/class-wp-presence-cli-command.php:264 msgid "Presence is not aggregated across this network, so who is online cannot be reported." msgstr "" #. translators: %d: Number of sites with someone online. -#: includes/cli/class-wp-presence-cli-command.php:279 +#: includes/cli/class-wp-presence-cli-command.php:269 #, php-format msgid "Sites online: %d" msgstr "" #. translators: %d: Number of users online, summed per site. -#: includes/cli/class-wp-presence-cli-command.php:281 +#: includes/cli/class-wp-presence-cli-command.php:271 #, php-format msgid "Users online: %d" msgstr "" -#: includes/cli/class-wp-presence-cli-command.php:359 +#: includes/cli/class-wp-presence-cli-command.php:349 msgid "Specify on or off." msgstr "" -#: includes/cli/class-wp-presence-cli-command.php:375 +#: includes/cli/class-wp-presence-cli-command.php:365 msgid "Presence recording is on." msgstr "" -#: includes/cli/class-wp-presence-cli-command.php:379 +#: includes/cli/class-wp-presence-cli-command.php:369 msgid "Presence recording is off. Existing entries expire on their own." msgstr "" #. translators: %d: Number of deleted entries. -#: includes/cli/class-wp-presence-cli-command.php:405 -#: includes/cli/class-wp-presence-cli-command.php:418 +#: includes/cli/class-wp-presence-cli-command.php:395 +#: includes/cli/class-wp-presence-cli-command.php:408 #, php-format msgid "%d entries deleted." msgstr "" -#: includes/cli/class-wp-presence-cli-command.php:410 +#: includes/cli/class-wp-presence-cli-command.php:400 msgid "This will delete all presence data. Continue?" msgstr "" @@ -337,29 +329,29 @@ msgid "+%s" msgstr "" #. translators: %s: The `$args` keys, such as user_id, date_gmt, expires_in. -#: includes/presence.php:144 +#: includes/presence.php:148 #, php-format msgid "Pass the optional arguments in an $args array: %s." msgstr "" -#: includes/presence.php:701 +#: includes/presence.php:705 #: includes/rest-api/endpoints/class-wp-rest-presence-controller.php:490 msgid "Presence is not available on this site yet." msgstr "" -#: includes/presence.php:705 +#: includes/presence.php:709 msgid "The date_gmt argument is not a valid date." msgstr "" -#: includes/presence.php:709 +#: includes/presence.php:713 msgid "The expires_in argument must be at least one second." msgstr "" -#: includes/presence.php:754 +#: includes/presence.php:758 msgid "Presence could not be written." msgstr "" -#: includes/presence.php:2188 +#: includes/presence.php:2225 msgid "Agent" msgstr "" @@ -381,49 +373,49 @@ msgstr "" msgid "Recording can be switched off for the whole site under Settings > General, or in code with the wp_presence_recording_enabled filter. Remove the paragraph above if you switch it off." msgstr "" -#: includes/privacy.php:154 +#: includes/privacy.php:157 msgid "Screen" msgstr "" -#: includes/privacy.php:160 +#: includes/privacy.php:163 msgid "Post being edited" msgstr "" -#: includes/privacy.php:167 +#: includes/privacy.php:170 msgid "Browser" msgstr "" -#: includes/privacy.php:173 +#: includes/privacy.php:176 msgid "Last active" msgstr "" -#: includes/privacy.php:180 -#: includes/privacy.php:198 +#: includes/privacy.php:183 +#: includes/privacy.php:201 #: includes/settings.php:33 #: includes/settings.php:92 #: includes/site-health.php:53 msgid "Presence" msgstr "" -#: includes/privacy.php:181 +#: includes/privacy.php:184 msgid "No presence is recorded for this account." msgstr "" -#: includes/privacy.php:186 +#: includes/privacy.php:189 msgid "Retention" msgstr "" #. translators: %s: Number of seconds presence data is retained. -#: includes/privacy.php:189 +#: includes/privacy.php:192 #, php-format msgid "Presence is deleted at most %s seconds after the last activity. Nothing is kept beyond that, so there is no history to export." msgstr "" -#: includes/privacy.php:199 +#: includes/privacy.php:202 msgid "Which screen you are viewing and which post you are editing, while you are signed in." msgstr "" -#: includes/privacy.php:261 +#: includes/privacy.php:264 msgid "Presence could not be deleted." msgstr "" @@ -475,61 +467,61 @@ msgstr "" msgid "Sorry, you are not allowed to view presence rooms." msgstr "" -#: includes/rest-api/endpoints/class-wp-rest-presence-controller.php:815 +#: includes/rest-api/endpoints/class-wp-rest-presence-controller.php:814 msgid "Sorry, you are not allowed to update this screen revision." msgstr "" -#: includes/rest-api/endpoints/class-wp-rest-presence-controller.php:838 +#: includes/rest-api/endpoints/class-wp-rest-presence-controller.php:837 msgid "Invalid or empty screen key provided." msgstr "" -#: includes/rest-api/endpoints/class-wp-rest-presence-controller.php:870 +#: includes/rest-api/endpoints/class-wp-rest-presence-controller.php:869 msgid "The presence room identifier." msgstr "" -#: includes/rest-api/endpoints/class-wp-rest-presence-controller.php:876 +#: includes/rest-api/endpoints/class-wp-rest-presence-controller.php:875 msgid "The client identifier within the room." msgstr "" -#: includes/rest-api/endpoints/class-wp-rest-presence-controller.php:882 +#: includes/rest-api/endpoints/class-wp-rest-presence-controller.php:881 msgid "The WordPress user ID associated with this presence entry." msgstr "" -#: includes/rest-api/endpoints/class-wp-rest-presence-controller.php:888 +#: includes/rest-api/endpoints/class-wp-rest-presence-controller.php:887 msgid "Which browser the entry was written from, the same for every tab of one login and different per room; empty when written without a login session." msgstr "" -#: includes/rest-api/endpoints/class-wp-rest-presence-controller.php:894 +#: includes/rest-api/endpoints/class-wp-rest-presence-controller.php:893 #: includes/rest-api/endpoints/class-wp-rest-presence-network-controller.php:356 msgid "The display name of the user." msgstr "" -#: includes/rest-api/endpoints/class-wp-rest-presence-controller.php:900 +#: includes/rest-api/endpoints/class-wp-rest-presence-controller.php:899 #: includes/rest-api/endpoints/class-wp-rest-presence-network-controller.php:360 msgid "The avatar URL of the user." msgstr "" -#: includes/rest-api/endpoints/class-wp-rest-presence-controller.php:907 +#: includes/rest-api/endpoints/class-wp-rest-presence-controller.php:906 msgid "Presence state data. The plugin writes the keys listed below from Heartbeat; other plugins may store additional keys. In the admin/online room, it is empty unless the current user can view that user's location." msgstr "" -#: includes/rest-api/endpoints/class-wp-rest-presence-controller.php:913 +#: includes/rest-api/endpoints/class-wp-rest-presence-controller.php:912 msgid "Current WordPress screen ID (for example dashboard or post)." msgstr "" -#: includes/rest-api/endpoints/class-wp-rest-presence-controller.php:918 +#: includes/rest-api/endpoints/class-wp-rest-presence-controller.php:917 msgid "Related post ID when the user is on a post or a front-end permalink." msgstr "" -#: includes/rest-api/endpoints/class-wp-rest-presence-controller.php:923 +#: includes/rest-api/endpoints/class-wp-rest-presence-controller.php:922 msgid "Status of the related post when it is known (draft, publish, and so on)." msgstr "" -#: includes/rest-api/endpoints/class-wp-rest-presence-controller.php:928 +#: includes/rest-api/endpoints/class-wp-rest-presence-controller.php:927 msgid "Document title carried for a front-end URL so it can appear in the admin bar." msgstr "" -#: includes/rest-api/endpoints/class-wp-rest-presence-controller.php:935 +#: includes/rest-api/endpoints/class-wp-rest-presence-controller.php:934 msgid "The date the presence was last updated, in GMT." msgstr "" @@ -566,7 +558,7 @@ msgid "The WordPress user ID." msgstr "" #. translators: %s: human-readable time difference like "2 minutes". -#: includes/screen-revisions.php:854 +#: includes/screen-revisions.php:855 #, php-format msgid "%s ago" msgstr "" @@ -603,13 +595,13 @@ msgstr "" #. translators: %d: Presence timeout in seconds. #: includes/site-health.php:65 #, php-format -msgid "Heartbeat is turned off, so Who’s Online misses anyone who has not loaded a page in the last %d seconds." +msgid "Heartbeat is turned off, so presence misses anyone who has not loaded a page in the last %d seconds." msgstr "" #. translators: %d: Longest Heartbeat interval presence tolerates, in seconds. #: includes/site-health.php:77 #, php-format -msgid "Heartbeat runs less often than every %d seconds, so Who’s Online drops people who stay on one screen." +msgid "Heartbeat runs less often than every %d seconds, so presence drops people who stay on one screen." msgstr "" #: includes/site-health.php:80 diff --git a/plugins/presence-api/presence-api.php b/plugins/presence-api/presence-api.php index 176b19c7..154f0d82 100644 --- a/plugins/presence-api/presence-api.php +++ b/plugins/presence-api/presence-api.php @@ -2,7 +2,7 @@ /** * Plugin Name: Presence API * Description: System-wide presence and awareness for WordPress. - * Version: 0.18.3 + * Version: 0.18.4 * Requires at least: 7.0 * Requires PHP: 7.4 * Author: WordPress Core Team @@ -45,7 +45,7 @@ function () { return; } -define( 'WP_PRESENCE_VERSION', '0.18.3' ); +define( 'WP_PRESENCE_VERSION', '0.18.4' ); define( 'WP_PRESENCE_DB_VERSION', 4 ); define( 'WP_PRESENCE_NETWORK_SUMMARY_DB_VERSION', 1 ); define( 'WP_PRESENCE_PLUGIN_DIR', plugin_dir_path( __FILE__ ) ); diff --git a/plugins/presence-api/readme.txt b/plugins/presence-api/readme.txt index b0dd31bb..eb8a76d0 100644 --- a/plugins/presence-api/readme.txt +++ b/plugins/presence-api/readme.txt @@ -1,9 +1,9 @@ === Presence API === -Contributors: joefusco, intenzi, ashishjii, iamchitti, iqbal1hossain, wp24horas, aldorza, bejignesh, stfulldev, obenland, moriikuri, ishitaj34, theaminuldev, muneebashraf, mindctrl, zahidui, mitgiselle, jaredrethman, jooahmed, noruzzaman, huzaifaalmesbah, rejaulalomkhan, bosskhj +Contributors: joefusco, intenzi, ashishjii, iamchitti, iqbal1hossain, wp24horas, aldorza, bejignesh, stfulldev, obenland, moriikuri, ishitaj34, theaminuldev, muneebashraf, mindctrl, zahidui, mitgiselle, jaredrethman, jooahmed, noruzzaman, huzaifaalmesbah, rejaulalomkhan, bosskhj, hmbashar, devmuhib Tags: presence, awareness, heartbeat, real-time Requires at least: 7.0 Tested up to: 7.1 -Stable tag: 0.18.3 +Stable tag: 0.18.4 Requires PHP: 7.4 License: GPLv2 or later License URI: https://www.gnu.org/licenses/gpl-2.0.html @@ -79,6 +79,13 @@ For code, the `wp_presence_recording_enabled` and `wp_presence_network_recording Only the most recent releases are listed here. For the full history, see https://github.com/WordPress/presence-api/blob/main/CHANGELOG.md += 0.18.4 = +* Clear the cleanup cron event on plugin uninstall ([#872](https://github.com/WordPress/presence-api/issues/872)). +* Preserve post locks on logout from another session ([#893](https://github.com/WordPress/presence-api/issues/893)). +* Exclude reserved rows from personal data export ([#896](https://github.com/WordPress/presence-api/issues/896)). +* Store no session hash on a post room's one editor row per person ([#884](https://github.com/WordPress/presence-api/issues/884)). +* Write wp presence set as WP-CLI's --user, and three smaller corrections ([#887](https://github.com/WordPress/presence-api/issues/887)). + = 0.18.3 = * Guard the functions in the six files core would ship in separate tickets ([#861](https://github.com/WordPress/presence-api/issues/861)). * Leave a presence table from an older schema alone until it is upgraded ([#866](https://github.com/WordPress/presence-api/issues/866)). @@ -99,9 +106,3 @@ Only the most recent releases are listed here. For the full history, see https:/ * Return WP_Error with specific refusal codes when presence write fails ([#792](https://github.com/WordPress/presence-api/issues/792)). * Tell a second browser from a second tab with a per-room session hash ([#815](https://github.com/WordPress/presence-api/issues/815)). * Cap the heartbeat ping's title and screen before storing them ([#816](https://github.com/WordPress/presence-api/issues/816)). - -= 0.17.0 = -* Let a network switch off the network admin screens ([#788](https://github.com/WordPress/presence-api/issues/788)). -* Let a site switch off the Active Posts dashboard widget ([#774](https://github.com/WordPress/presence-api/issues/774)). -* Show who else is editing a synced pattern on its block ([#779](https://github.com/WordPress/presence-api/issues/779)). -* Take an $args array in the presence functions ([#789](https://github.com/WordPress/presence-api/issues/789)).