Two version identifiers exist:
Auto-generated from the git commit SHA:
server/update_version.shThis 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.
Generated by the JS build script:
webui/js/source/build.shThe version is embedded in the concatenated ponymail.js output.
When to regenerate: After committing changes to any file in
webui/js/source/.
A static string (PONYMAIL_FOAL_VERSION = "0.1.0") in server/main.py.
Updated manually for milestone releases.
A static string (const PONYMAIL_VERSION = "1.0.1";) in webui/js/source/aavariables.js.
Updated manually for milestone releases.
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>| 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
The project does not currently use git tags for releases (#297).
When formal releases are established, the expected process would be:
- Update
PONYMAIL_FOAL_VERSIONinserver/main.pyandPONYMAIL_VERSIONinwebui/js/source/aavariables.js - Regenerate
server_version.pyandponymail.js - Tag the commit:
git tag v{version} - Create a GitHub release with changelog
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.