Replies: 4 comments
|
I agree on all points. There is a lot of legacy lingering about. Thanks. |
|
So based on the discussion above that I presented we now have a choice: One version number for the whole app, or separate numbers for each library plus one number for the app? Option A: One number for everythingEvery part of GenPRES: - the app, all libraries, the Docker image all share the same version number, updated together at release time.
Option B: Keep libraries separate, add one app-level numberThe libraries keep their own version numbers as they do now. A new, single number is added just for the app as a whole that is the one used in the changelog, the Docker image, and anywhere where an audit matters. The library numbers become internal detail nobody outside the team needs to look at.
In my naive opinion, Option A makes sense, unless you have concrete plans to publish the libraries independently soon? @halcwb ^ |
|
@7sharp9 Correct to go with option A. Option B was sort of legacy as in the past I tried to develop the core libraries more independently. For now, that is really not necessary. |
|
Based on option A here's a fleshed out plan, this needs diffing against what easyshipit does too to ensure we don't make a rounder wheel. Versioning & CI hardeningCI: commit message enforcement
Decision needed: starting version number
Version scheme unification (single version for app + libraries)
Docker image versioning
Documentation
Git tags
Release automation
Process
|
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Here are some thoughts and points around versioning and change info, there is probably other aspects of this that I have missed but feel free to add these here so we can manage how you want this to evolve to match the changing direction due to productisation, auditing, etc
1. Reconcile the two version schemes.
If someone looks at the GenFORM library, it says version 1.2.4. If they look at the application changelog, it says 0.1.2-alpha. If they look at the Docker image, it could say anything something else. If auditing is a priority then knowing exactly what versions running will be really important. Its also a gap in the technical documentation if new features require and modification or new sections.
2. Add a root-level version file.
This is the fix that makes the version machine-readable in one place. Instead of the version living only in a changelog document , it lives in a project file that build tools, Docker, and CI can all read automatically. You'd never again have to manually keep a Docker image tag, a changelog entry, and a library file in sync - they'd all derive from the same source of truth. I use a simple version for this in Myriad and my audio plugin work, admittedly I don't have many modules so its a lot simpler in mt case.
3. Higher cadence for releases to ensure .
The [Unreleased] section has been accumulating since March 2026. It contains a full rewrite of the dose-check compliance logic, a security hardening pass, and a Fable 5 upgrade.
4. Add a PR title check. There is already a well-written convention for commit messages for AI/agents (commit-message.instructions.md). The problem is its not enforced anywhere. A contributor (human or AI) could merge a PR with a message like "fix stuff" and it would violate the standard that you are enforcing via the agentic path. A single automated check on the PR title could turn a written rule into a real technical gate for everyone committing. It also makes changelog generation easier later, because you can trust the history is structured text, or at least you know the exact structure this text will form for future automation via parsing etc.
5. Address the build in terms of client/server split. Only build the necessary parts for client OR server rather than everything, this will allow a separate server/client solution once the relevant parts are complete.
6. Automate the release as a build target.
Currently, building a release means:
Each of those steps is an opportunity to forget something or make a typo. Wrapping this in a FAKE target means you type one command and all of it this happens consistently. More importantly all these steps get done in one operation and nothing should get out of sync, this would make auditing an easier operation.
Some of these will need discussion, esp points 1/2. Due to process and historical evolution of the repo etc. Point 4.
Add a PR title checkis quick and easy and starts to enforce the shape of the commit/PR entries.All reactions