Skip to content

Latest commit

 

History

History
133 lines (89 loc) · 3.49 KB

releases.md

File metadata and controls

133 lines (89 loc) · 3.49 KB

Versioning & Release Process

Current State

Pony Mail Foal does not yet have formal tagged releases. The project runs from master

How Versions Are Tracked

Two version identifiers exist:

Server Version (server_version.py)

Auto-generated from the git commit SHA:

server/update_version.sh

This writes server_version.py with a short hash like PONYMAIL_SERVER_VERSION = "a3f8c2d".

When to regenerate: After committing changes to server/endpoints/, server/plugins/, or server/main.py.

WebUI Version (in ponymail.js)

Generated by the JS build script:

webui/js/source/build.sh

The version is embedded in the concatenated ponymail.js output.

When to regenerate: After committing changes to any file in webui/js/source/.

Foal Version

A static string (PONYMAIL_FOAL_VERSION = "0.1.0") in server/main.py. Updated manually for milestone releases.

Foal Javascript Version

A static string (const PONYMAIL_VERSION = "1.0.1";) in webui/js/source/aavariables.js. Updated manually for milestone releases.


Identifying the Running Version

The /api/preferences.json endpoint returns version information for authenticated users:

{
  "versions": {
    "foal": "0.1.0",
    "server": "a3f8c2d"
  }
}

Admin users additionally see elasticsearch_engine and elasticsearch_library versions.

The ponymail.js file contains additional version information:

const PONYMAIL_REVISION = '9f32148';

const PONYMAIL_VERSION = "1.0.1";

The html files also include the PONYMAIL_REVISION value in links to css and js files:

<link href="css/scaffolding.css?revision=9f32148" rel="stylesheet" media="all">

<script src="js/ponymail.js?revision=9f32148"></script>

Release History

Version Date Notes
0.1.0 (Foal) ongoing Next-generation Python rewrite, no formal release
1.0.1 (legacy) — Last planned version of old Lua-based Pony Mail

The original Lua-based Pony Mail had releases at 0.9.x beta level. Foal superseded it


Future: Git Tags and Releases

The project does not currently use git tags for releases (#297).

When formal releases are established, the expected process would be:

  1. Update PONYMAIL_FOAL_VERSION in server/main.py and PONYMAIL_VERSION in webui/js/source/aavariables.js
  2. Regenerate server_version.py and ponymail.js
  3. Tag the commit: git tag v{version}
  4. Create a GitHub release with changelog

Deployment (ASF Production)

The ASF infrastructure team deploys from a specific commit on master. There is no automated CI/CD pipeline to production — deployment is manual, coordinated with INFRA.