{"payload":{"feedbackUrl":"https://github.com/orgs/community/discussions/53140","repo":{"id":647195011,"defaultBranch":"trunk","name":"playground-tools","ownerLogin":"WordPress","currentUserCanPush":false,"isFork":false,"isEmpty":false,"createdAt":"2023-05-30T09:02:59.000Z","ownerAvatar":"https://avatars.githubusercontent.com/u/276006?v=4","public":true,"private":false,"isOrgOwned":true},"refInfo":{"name":"","listCacheKey":"v0:1716421688.0","currentOid":""},"activityList":{"items":[{"before":"f6a15e458ef21ffae81b5702fde63288771fda49","after":"0902bf3a238c8969f12110875c4598239612cc7e","ref":"refs/heads/trunk","pushedAt":"2024-05-23T00:06:50.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"adamziel","name":"Adam Zieliński","path":"/adamziel","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/205419?s=80&v=4"},"commit":{"message":"Playground Block: Version bump 0.2.8","shortMessageHtmlLink":"Playground Block: Version bump 0.2.8"}},{"before":"be916cee7117246f470fdb16037035df424cdce0","after":"f6a15e458ef21ffae81b5702fde63288771fda49","ref":"refs/heads/trunk","pushedAt":"2024-05-23T00:03:44.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"adamziel","name":"Adam Zieliński","path":"/adamziel","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/205419?s=80&v=4"},"commit":{"message":"Playground block: Enable managing file name and URL separately","shortMessageHtmlLink":"Playground block: Enable managing file name and URL separately"}},{"before":"5ec134386d9f22519e325cd11e7aa712a6ac05a1","after":"be916cee7117246f470fdb16037035df424cdce0","ref":"refs/heads/trunk","pushedAt":"2024-05-22T23:59:50.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"adamziel","name":"Adam Zieliński","path":"/adamziel","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/205419?s=80&v=4"},"commit":{"message":"Playground Block: Version bump 0.2.7","shortMessageHtmlLink":"Playground Block: Version bump 0.2.7"}},{"before":"6e50907b5b3bfec7f235cae1fc0299c948ccb1de","after":"5ec134386d9f22519e325cd11e7aa712a6ac05a1","ref":"refs/heads/trunk","pushedAt":"2024-05-22T23:56:27.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"adamziel","name":"Adam Zieliński","path":"/adamziel","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/205419?s=80&v=4"},"commit":{"message":"Linters: Ignore wordpress-es-modules-plugin","shortMessageHtmlLink":"Linters: Ignore wordpress-es-modules-plugin"}},{"before":"ad82663ad974e13eac13ea61741a1272049bcf20","after":"6e50907b5b3bfec7f235cae1fc0299c948ccb1de","ref":"refs/heads/trunk","pushedAt":"2024-05-22T23:55:29.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"adamziel","name":"Adam Zieliński","path":"/adamziel","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/205419?s=80&v=4"},"commit":{"message":"Playground block: Credentialless fetch, communicate fetch errors more clearly","shortMessageHtmlLink":"Playground block: Credentialless fetch, communicate fetch errors more…"}},{"before":"64adfd520664e200b108740d3ac2118a80db1907","after":"ad82663ad974e13eac13ea61741a1272049bcf20","ref":"refs/heads/trunk","pushedAt":"2024-05-22T23:48:08.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"adamziel","name":"Adam Zieliński","path":"/adamziel","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/205419?s=80&v=4"},"commit":{"message":"Playground block: Support remote files (#282)\n\nEnables providing remote URLs as filenames in the Playground Block's\r\ncode editor:\r\n\r\n![CleanShot 2024-05-22 at 18 19\r\n40@2x](https://github.com/WordPress/playground-tools/assets/205419/a357b230-90ff-47e1-a78a-04971f4ab4e0)\r\n\r\nWith this change, you can write an interactive WordPress tutorial using\r\nsource code hosted on GitHub. It's easier to manage, preview, clone, and\r\nfork. While the remote URL is a source of truth for the block, it still\r\nstores a copy of the code in block attributes.\r\n\r\n## Testing Instructions\r\n\r\n1. Insert the Playground block.\r\n2. Create a new file, paste this URL as its name:\r\nhttps://raw.githubusercontent.com/WordPress/block-development-examples/trunk/plugins/data-basics-59c8f8/_playground/blueprint.json\r\n3. Confirm a new file was created with the \"link\" icon at the top.\r\n4. Try changing its content, saving the post, and refreshing the page.\r\nIt should have no effect.\r\n5. Confirm regular files still work as they used to.\r\n\r\ncc @juanmaguitar @ryanwelcher","shortMessageHtmlLink":"Playground block: Support remote files (#282)"}},{"before":"462c30c101572fe0d0e902b9a270b56064c4a75c","after":null,"ref":"refs/heads/github-files","pushedAt":"2024-05-22T23:48:08.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"adamziel","name":"Adam Zieliński","path":"/adamziel","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/205419?s=80&v=4"}},{"before":"f6415ea30a77c30f0ff58945b37104aaed33bfc7","after":"462c30c101572fe0d0e902b9a270b56064c4a75c","ref":"refs/heads/github-files","pushedAt":"2024-05-22T23:45:37.000Z","pushType":"push","commitsCount":19,"pusher":{"login":"adamziel","name":"Adam Zieliński","path":"/adamziel","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/205419?s=80&v=4"},"commit":{"message":"Merge branch 'trunk' into github-files","shortMessageHtmlLink":"Merge branch 'trunk' into github-files"}},{"before":"4742c9ae83eff8ddc3485f4b2d53c4309b895c2e","after":null,"ref":"refs/heads/jsx-support","pushedAt":"2024-05-22T23:44:16.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"adamziel","name":"Adam Zieliński","path":"/adamziel","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/205419?s=80&v=4"}},{"before":"0e905cddd7261eb185bee398e375a6a8b382b566","after":"64adfd520664e200b108740d3ac2118a80db1907","ref":"refs/heads/trunk","pushedAt":"2024-05-22T23:44:15.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"adamziel","name":"Adam Zieliński","path":"/adamziel","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/205419?s=80&v=4"},"commit":{"message":"Playground Block: Support JSX source transpilation (#280)\n\nAdds a \"Transpile JSX\" attribute to the Playground block that enables\r\nblock-building examples using JSX syntax. This enables reusing existing\r\nJSX code examples in interactive tutorials on building WordPress blocks.\r\n\r\nOn the technical end, this PR uses `esbuild-wasm` to run the\r\ntranspilation in the browser.\r\n\r\n## Testing instructions\r\n\r\n1. Insert the Playground block\r\n2. Recreate this code example in the code editor:\r\nhttps://github.com/WordPress/gutenberg-examples/tree/trunk/blocks-jsx/01-basic-esnext\r\n3. Apply the Blueprint below\r\n4. Confirm the block displays a page with a \"Hello world example\" block\r\n\r\n```json\r\n{\r\n \"landingPage\": \"/?page_id=1\",\r\n \"phpExtensionBundles\": [\r\n \"kitchen-sink\"\r\n ],\r\n \"preferredVersions\": {\r\n \"php\": \"7.4\",\r\n \"wp\": \"5.9\"\r\n },\r\n \"login\": true,\r\n \"steps\": [\r\n {\r\n \"step\": \"unzip\",\r\n \"extractToPath\": \"/tmp\",\r\n \"zipFile\": {\r\n \"resource\": \"url\",\r\n \"url\": \"https://github-proxy.com/proxy/?repo=wordpress/playground-tools&pr=133&directory=packages/wordpress-es-modules-plugin/src\"\r\n }\r\n },\r\n {\r\n \"step\": \"mv\",\r\n \"fromPath\": \"/tmp/packages/wordpress-es-modules-plugin/src\",\r\n \"toPath\": \"/wordpress/wp-content/plugins/esm\"\r\n },\r\n {\r\n \"step\": \"activatePlugin\",\r\n \"pluginPath\": \"esm/index.php\"\r\n },\r\n {\r\n \"step\": \"resetData\"\r\n },\r\n {\r\n \"step\": \"runPHP\",\r\n \"code\": \" 'page',\\n\\t'post_status' => 'publish',\\n\\t'post_title' => 'Hello World example',\\n\\t'post_content' => '
Hello World, step 1 (from the frontend).
'\\n] );\\n\"\r\n }\r\n ]\r\n}\r\n```","shortMessageHtmlLink":"Playground Block: Support JSX source transpilation (#280)"}},{"before":"01af3f316f8cbecf39b050bb77c69634adfd4eac","after":"4742c9ae83eff8ddc3485f4b2d53c4309b895c2e","ref":"refs/heads/jsx-support","pushedAt":"2024-05-22T23:43:19.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"adamziel","name":"Adam Zieliński","path":"/adamziel","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/205419?s=80&v=4"},"commit":{"message":"Serve esbuild.wasm from a local directory, not from unpkg","shortMessageHtmlLink":"Serve esbuild.wasm from a local directory, not from unpkg"}},{"before":"fc70cd432c6aea7f0c5002b0bb95caa35cf0ae33","after":null,"ref":"refs/heads/wordpress-es-modules-plugin","pushedAt":"2024-05-22T23:34:22.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"adamziel","name":"Adam Zieliński","path":"/adamziel","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/205419?s=80&v=4"}},{"before":"0d60ffef67084e70664b0e1ffce57a9b0b137e2c","after":"0e905cddd7261eb185bee398e375a6a8b382b566","ref":"refs/heads/trunk","pushedAt":"2024-05-22T23:34:21.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"adamziel","name":"Adam Zieliński","path":"/adamziel","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/205419?s=80&v=4"},"commit":{"message":"Add WordPress Plugin: Playground ES Modules Support (#133)\n\nAdds a WordPress plugin to expose WordPress scripts like\r\n`@wordpress/block-editor` as ES modules.\r\n\r\nThis enables block development without transpilation and, thus, unlocks\r\nembedding a block code editor on learn.wordpress.org. With this plugin\r\nin place, we can:\r\n\r\n1. Put a code editor on a website\r\n2. Prepopulate it with an ES6 block using imports\r\n3. Enable the user to update the code in the editor\r\n4. Render the block in a WordPress Playground instance with this plugin\r\ninstalled\r\n\r\nNotably, this is a proof-of-concept, only intended for use in WordPress\r\nPlayground.\r\n\r\n ## Implementation details\r\n\r\nES Modules are shipped as JS files generated from core scripts. This\r\nplugin:\r\n\r\n* Adds a wp-admin page that enqueues a set of core scripts\r\n* In JS, it terates over the exports provided by those scripts\r\n* Rewrites those exports as ES modules (`export const autop =\r\nwindow.wp.autop` etc.)\r\n* Sends a REST API request to a Playground instance which creates those\r\nfiles in the filesystem.\r\n\r\nIn addition, it also:\r\n\r\n* Registers `@wordpress` script handles in WordPress, e.g.\r\n`wp_register_script( \"@wordpress/block-editor\", ...,\r\n['wp-block-editor])`\r\n* Registers a `esmodules-import-map` script and adds it as a dependency\r\nto all the core scripts\r\n\r\nThis enables the developer to register a script as follows:\r\n\r\n```php\r\nadd_action('init', function () {\r\n wp_register_script('my-es-module', plugins_url('test-es-module.js', __FILE__), [\r\n '@wordpress/block-library',\r\n '@wordpress/element',\r\n ]);\r\n wp_enqueue_script('my-es-module');\r\n});\r\n```\r\n\r\n```js\r\nimport { createElement } from '@wordpress/element';\r\nimport { registerCoreBlocks } from '@wordpress/block-library';\r\n\r\nconsole.log('Here are some imports from ES modules:', {\r\n\tregisterCoreBlocks,\r\n\tcreateElement,\r\n});\r\n```\r\n\r\n## Testing Instructions\r\n\r\n1. Go to `/wp-admin`\r\n2. Confirm you can see the following message logged in devtools:\r\n\r\n\"CleanShot\r\n\r\ncc @dmsnell @youknowriad @luisherranz @gziolo","shortMessageHtmlLink":"Add WordPress Plugin: Playground ES Modules Support (#133)"}},{"before":"a0cb3d58789df2fbaf6340de17a9d6e05c1111ed","after":"fc70cd432c6aea7f0c5002b0bb95caa35cf0ae33","ref":"refs/heads/wordpress-es-modules-plugin","pushedAt":"2024-05-22T23:32:23.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"adamziel","name":"Adam Zieliński","path":"/adamziel","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/205419?s=80&v=4"},"commit":{"message":"Restore trunk version of wp-now docs","shortMessageHtmlLink":"Restore trunk version of wp-now docs"}},{"before":"84b1f95514ba196c83a3779d2666ffccc960cd16","after":"a0cb3d58789df2fbaf6340de17a9d6e05c1111ed","ref":"refs/heads/wordpress-es-modules-plugin","pushedAt":"2024-05-22T23:30:25.000Z","pushType":"push","commitsCount":118,"pusher":{"login":"adamziel","name":"Adam Zieliński","path":"/adamziel","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/205419?s=80&v=4"},"commit":{"message":"Merge branch 'trunk' into wordpress-es-modules-plugin","shortMessageHtmlLink":"Merge branch 'trunk' into wordpress-es-modules-plugin"}},{"before":"c270ca6f44cdfa200e0e7ab10336bfb370921b0f","after":"01af3f316f8cbecf39b050bb77c69634adfd4eac","ref":"refs/heads/jsx-support","pushedAt":"2024-05-22T23:25:43.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"adamziel","name":"Adam Zieliński","path":"/adamziel","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/205419?s=80&v=4"},"commit":{"message":"Communicate transpilation failures to the user","shortMessageHtmlLink":"Communicate transpilation failures to the user"}},{"before":"ed92a4ead02cd486a172c29f02257ded07a0c13d","after":"0d60ffef67084e70664b0e1ffce57a9b0b137e2c","ref":"refs/heads/trunk","pushedAt":"2024-05-22T23:15:05.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"adamziel","name":"Adam Zieliński","path":"/adamziel","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/205419?s=80&v=4"},"commit":{"message":"Playground block release: Adjust svn add command","shortMessageHtmlLink":"Playground block release: Adjust svn add command"}},{"before":"2fc6cc7ac284a7e4d9e268f0fb45df6a65f54e6d","after":"ed92a4ead02cd486a172c29f02257ded07a0c13d","ref":"refs/heads/trunk","pushedAt":"2024-05-22T23:00:47.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"adamziel","name":"Adam Zieliński","path":"/adamziel","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/205419?s=80&v=4"},"commit":{"message":"Playground block: Release workflow – install nx globally","shortMessageHtmlLink":"Playground block: Release workflow – install nx globally"}},{"before":"a302d8058d73246dab3f3b1ce6bd5d6742cee96a","after":null,"ref":"refs/heads/contain-keyboard-shortcuts","pushedAt":"2024-05-22T22:57:15.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"adamziel","name":"Adam Zieliński","path":"/adamziel","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/205419?s=80&v=4"}},{"before":"69a9cad3c1457b8e71b7ef948732addc23549661","after":"2fc6cc7ac284a7e4d9e268f0fb45df6a65f54e6d","ref":"refs/heads/trunk","pushedAt":"2024-05-22T22:57:14.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"adamziel","name":"Adam Zieliński","path":"/adamziel","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/205419?s=80&v=4"},"commit":{"message":"Playground block: Prevent the CodeMirror keyboard shortcuts from leaking to the block editor (#281)\n\nPrevents keyboard events from leaking from the code editor to the block\r\neditor. It solves the problem of, e.g., undoing block changes when\r\npressing `cmd+z` with the intention of undoing code changes.\r\n\r\n## Testing Instructions\r\n\r\n1. Add a few paragraph blocks\r\n2. Add the Playground block\r\n3. Enable the code editor\r\n4. Start typing\r\n5. Press cmd+s, the code should be re-run\r\n6. Press cmd+z a few times, it should only undo the changes inside the\r\ncode editor but not in the block editor","shortMessageHtmlLink":"Playground block: Prevent the CodeMirror keyboard shortcuts from leak…"}},{"before":"2e19ee723d7d16aaeb59ce423aa89f4dbb49c109","after":"69a9cad3c1457b8e71b7ef948732addc23549661","ref":"refs/heads/trunk","pushedAt":"2024-05-22T22:57:09.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"adamziel","name":"Adam Zieliński","path":"/adamziel","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/205419?s=80&v=4"},"commit":{"message":"Playground Block: Version bump 0.2.6","shortMessageHtmlLink":"Playground Block: Version bump 0.2.6"}},{"before":"43751d0e77579927d236381ae3d25fab3d5281e2","after":"2e19ee723d7d16aaeb59ce423aa89f4dbb49c109","ref":"refs/heads/trunk","pushedAt":"2024-05-22T22:54:37.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"adamziel","name":"Adam Zieliński","path":"/adamziel","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/205419?s=80&v=4"},"commit":{"message":"Playground Block: Adjust how ENV variables are set in GitHub action","shortMessageHtmlLink":"Playground Block: Adjust how ENV variables are set in GitHub action"}},{"before":"a3a9572a1ef0ac9d6b7993f222a30f8c9e0c445a","after":"a302d8058d73246dab3f3b1ce6bd5d6742cee96a","ref":"refs/heads/contain-keyboard-shortcuts","pushedAt":"2024-05-22T22:51:28.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"adamziel","name":"Adam Zieliński","path":"/adamziel","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/205419?s=80&v=4"},"commit":{"message":"Remove dev artifacts","shortMessageHtmlLink":"Remove dev artifacts"}},{"before":"e7276a1e3cbca513a92dbdadbdb35d859beaa9cf","after":"43751d0e77579927d236381ae3d25fab3d5281e2","ref":"refs/heads/trunk","pushedAt":"2024-05-22T22:49:28.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"adamziel","name":"Adam Zieliński","path":"/adamziel","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/205419?s=80&v=4"},"commit":{"message":"Playground block: Release workflow","shortMessageHtmlLink":"Playground block: Release workflow"}},{"before":null,"after":"f6415ea30a77c30f0ff58945b37104aaed33bfc7","ref":"refs/heads/github-files","pushedAt":"2024-05-22T22:18:48.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"adamziel","name":"Adam Zieliński","path":"/adamziel","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/205419?s=80&v=4"},"commit":{"message":"Playground block: Support remote files","shortMessageHtmlLink":"Playground block: Support remote files"}},{"before":null,"after":"a3a9572a1ef0ac9d6b7993f222a30f8c9e0c445a","ref":"refs/heads/contain-keyboard-shortcuts","pushedAt":"2024-05-22T21:28:50.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"adamziel","name":"Adam Zieliński","path":"/adamziel","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/205419?s=80&v=4"},"commit":{"message":"Playground block: Prevent the CodeMirror keyboard shortcuts from leaking to the block editor","shortMessageHtmlLink":"Playground block: Prevent the CodeMirror keyboard shortcuts from leak…"}},{"before":"f9c030146c0fff333005ab7c492a524133358b2f","after":"84b1f95514ba196c83a3779d2666ffccc960cd16","ref":"refs/heads/wordpress-es-modules-plugin","pushedAt":"2024-05-22T21:07:49.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"adamziel","name":"Adam Zieliński","path":"/adamziel","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/205419?s=80&v=4"},"commit":{"message":"Add permission_callback and fix a hardcoded path","shortMessageHtmlLink":"Add permission_callback and fix a hardcoded path"}},{"before":"7cd61b019920f5cc8ba2d0ff97c022fe535d9739","after":"c270ca6f44cdfa200e0e7ab10336bfb370921b0f","ref":"refs/heads/jsx-support","pushedAt":"2024-05-22T21:06:00.000Z","pushType":"push","commitsCount":2,"pusher":{"login":"adamziel","name":"Adam Zieliński","path":"/adamziel","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/205419?s=80&v=4"},"commit":{"message":"Import map all JSON files","shortMessageHtmlLink":"Import map all JSON files"}},{"before":"0aa5bc3d6dfffcff55df01a6be09b595a0fa529b","after":"f9c030146c0fff333005ab7c492a524133358b2f","ref":"refs/heads/wordpress-es-modules-plugin","pushedAt":"2024-05-22T20:13:51.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"adamziel","name":"Adam Zieliński","path":"/adamziel","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/205419?s=80&v=4"},"commit":{"message":"Filter the import map, remove reliance on specific plugin directory name","shortMessageHtmlLink":"Filter the import map, remove reliance on specific plugin directory name"}},{"before":"79672b1aa5bd7a7da8c1224fab2126186769ec62","after":"7cd61b019920f5cc8ba2d0ff97c022fe535d9739","ref":"refs/heads/jsx-support","pushedAt":"2024-05-22T20:09:37.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"adamziel","name":"Adam Zieliński","path":"/adamziel","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/205419?s=80&v=4"},"commit":{"message":"Transpile block.json to JS","shortMessageHtmlLink":"Transpile block.json to JS"}}],"hasNextPage":true,"hasPreviousPage":false,"activityType":"all","actor":null,"timePeriod":"all","sort":"DESC","perPage":30,"cursor":"djE6ks8AAAAEUXiA8wA","startCursor":null,"endCursor":null}},"title":"Activity · WordPress/playground-tools"}