@@ -283,8 +283,132 @@ terminal will change to include the name of your conda environment indicating th
283283 in a separate repository:
284284 [https://github.com/pyscript/docs](https://github.com/pyscript/docs)
285285
286- * The documentation' s ` README` file contains instructions for setting up a
287- development environment and contributing.
286+ * The project' s homepage ([pyscript.net](https://pyscript.net/)) contains links
287+ and signposts for help and documentation. This is also found in a separate
288+ repository:
289+ [https://github.com/pyscript/pyscript.net](https://github.com/pyscript/pyscript.net)
290+
291+ # # Release PyScript
292+
293+ This is the procedure for cutting a new release of PyScript. To follow it you
294+ need the correct permissions on GitHub (you' re a PyScript core maintainer /
295+ admin).
296+
297+ The steps below must be done in order. Each phase depends on the GitHub release
298+ created in the first phase already existing, so don' t skip ahead.
299+
300+ Throughout, the version number for a release uses
301+ [calver](https://calver.org/) in the form ` YYYY.M.N` (year, month, and the
302+ release number within that month). For example, the first release in June 2026
303+ is ` 2026.6.1` . Wherever you see ` 2026.6.1` in the examples below, substitute the
304+ actual calver of the release you are cutting.
305+
306+ # ## 1. Cut the GitHub release
307+
308+ * Navigate to the [GitHub page for PyScript releases](https://github.com/pyscript/pyscript/releases).
309+ * Click the " Draft a new release" button, which will [take you here](https://github.com/pyscript/pyscript/releases/new),
310+ where you can fill in the details of the new release of PyScript.
311+ - Create a new tag. This should be the calver for the new release.
312+ - Set the target to ` main` .
313+ - Set the release title to the calver for the new release (the same value
314+ as the new tag).
315+ - Write the release notes as a Markdown bulleted list of the changes, along
316+ with references to the related pull requests and the GitHub usernames of
317+ those who contributed.
318+ - Set the release label to " Latest" .
319+ * Once you' re happy with the draft release, click the "Publish release" button.
320+ At this point the [prepare-release.yml](https://github.com/pyscript/pyscript/blob/main/.github/workflows/prepare-release.yml)
321+ and then the [publish-release.yml](https://github.com/pyscript/pyscript/blob/main/.github/workflows/publish-release.yml)
322+ GitHub actions will run, to generate the assets needed for the release.
323+ You' ll be able to [observe this process here](https://github.com/pyscript/pyscript/actions).
324+
325+ ** Verify:** there should be two outcomes.
326+
327+ 1. A new latest release listed on GitHub, containing the description and
328+ related assets. For example: [https://github.com/pyscript/pyscript/releases/tag/2026.6.1](https://github.com/pyscript/pyscript/releases/tag/2026.6.1).
329+ 2. A page describing the release at ` pyscript.net/releases/< CALVER> ` . For
330+ example: [https://pyscript.net/releases/2026.6.1/](https://pyscript.net/releases/2026.6.1/).
331+
332+ You' re not done yet. Now the release exists in GitHub, further changes to
333+ related repositories need to be made.
334+
335+ ### 2. Update the docs
336+
337+ Each release of PyScript has its own version of the docs. The generation of the
338+ docs is handled automatically by GitHub actions. Inside the
339+ [documentation repository](https://github.com/pyscript/docs), the process is:
340+
341+ * Create a new branch whose name is that of the new calver release (but use `-`
342+ instead of `.` between the numbers, e.g. `2026-6-1`).
343+ * Update the [`version.json`](https://github.com/pyscript/docs/blob/main/version.json)
344+ file to the new calver.
345+ * Run `node version-update.js`. This will automatically update all the
346+ references to the old calver to the new calver. It also downloads the new
347+ version' s Python API and auto-builds the API docs.
348+ * If you have outstanding PRs for updates to the documentation, merge or resolve
349+ them into this branch at this moment in time.
350+ * Once you' re happy with the state of the documentation for this new version,
351+ create a PR for your branch in GitHub.
352+ * Once the PR is approved and merged, a GitHub action based on
353+ [`update_docs.yml`](https://github.com/pyscript/docs/blob/main/.github/workflows/update_docs.yml)
354+ will run to generate the new version of the documentation in the `gh-pages`
355+ branch.
356+
357+ **Verify:** once the `gh-pages` branch is updated, GitHub' s own automatic
358+ deployment action will kick in, making the new version of the documentation
359+ live. You' ll be able to [observe this process here](https://github.com/pyscript/docs/actions).
360+ Check the updated docs at
361+ [docs.pyscript.net](https://docs.pyscript.net) (and remember to clear your
362+ browser cache).
363+
364+ ### 3. Update the homepage
365+
366+ Update two files in the
367+ [homepage repository](https://github.com/pyscript/pyscript.net) to use the
368+ latest calver:
369+
370+ 1. In [`index.html`](https://github.com/pyscript/pyscript.net/blob/main/index.html),
371+ update ALL references to the old calver with the new version' s calver. This
372+ includes the ` < link> ` and ` < script> ` tags in the ` < head> ` of the document,
373+ along with the content of the ` < span class=" subhead" > ` tag in the ` < header> `
374+ tag in the ` < body> ` of the document.
375+ 2. Update the [` version.json` ](https://github.com/pyscript/pyscript.net/blob/main/version.json)
376+ file to a JSON string containing the new calver.
377+
378+ Bundle these changes into a single PRi (named in the same way as the PR for
379+ PyScript' s docs), to be reviewed and approved by someone
380+ else.
381+ [This pull request](https://github.com/pyscript/pyscript.net/pull/104/changes)
382+ is a good historical example of the changes described above.
383+
384+ **Verify**: Once your PR is reviewed and merged GitHub automatically deploys
385+ the changes.
386+ [Observe this process here](https://github.com/pyscript/pyscript.net/actions).
387+ Once deployed, check your changes at [pyscript.net](https://pyscript.net)
388+ (you may need to clear your browser cache).
389+
390+ ### 4. Update the README
391+
392+ Update the opening HTML example in
393+ [PyScript' s README](https://github.com/pyscript/pyscript/blob/main/README.md)
394+ to reference the new latest version.
395+
396+ # ## 5. Announce the release
397+
398+ ** Verify first:** visit the new release' s page on pyscript.net (for example,
399+ [https://pyscript.net/releases/2026.6.1/](https://pyscript.net/releases/2026.6.1/))
400+ and ensure the "Home", "Docs", "Code" and "Changes" links all point to the
401+ pages and assets you' ve just updated.
402+
403+ Now all the pieces are in place, visit the
404+ [` # announcements` ](https://discord.com/channels/972017612454232116/1028271951082442832)
405+ channel on the PyScript Discord server, and post a message along the lines of:
406+
407+ > @here we have a new release of PyScript! All the details can be found here:
408+ > https://pyscript.net/releases/2026.6.1/ As always, feedback welcome. 🎉
409+
410+ Remember to substitute the actual new calver, not the ` 2026.6.1` used in these
411+ examples.
288412
289413# # Contributing
290414
0 commit comments