This codebase is a monorepo where we have all the "apps" we need to deploy:
ElectronJS Desktop application: This is the Local-First Desktop application. This is the main entry point for writers and communities to start collaborating inside the Hypermedia protocol
NextJS Site: This is the code for all Hypermedia sites. is built using Docker and can be self-hosted
Hypermedia daemon: This is the brain of any Hypermedia node. Is "the local backend" for both sites and Desktop application. It has some differences depending on when is running (desktop or site) but mostly is the same "app".
We use Github Actions to generate all the Apps and we use git tags to trigger all the needed actions.
Version names
The scheme we use to name our versions is a combination between date and sequential numbers:
<YEAR>.<MONTH>.<SEQUENCE>
for example, the latest version as of now is 2023.11.5
Releasing a new version
Every Friday night (Californa time) we "cut" a release branch and we name it with the next version name. This will trigger a new Release Candidate. This is to make sure new work pushed to the main branch is not poluting the next release. Our Release date is on Wednesday, so we have from Friday night to Tuesday night to test the new Release Candidate.
The name for a release candidate follows this name scheme:
<YEAR>.<MONTH>.<SEQUENCE>-rc<RC_SEQUENCE>
Release notes
As of now, all the Release notes are made manually by anyone on the team. Currently the one that is doing this work most of the time is Eric with some support from Horacio. We are looking to automate this in the future, but always keeping the "human touch", avoiding the "list of commits" scenario.
New Release Candidates can appear
If there's a bug in the current Release Candidate, we do fix it in the main branch and "cherry-pick" the fix into the release branch. after the release branch is updated, then we push a new tag pushing a new RC_SEQUENCE.