modernmidi-api

Timepod update metadata

These static files are served from https://api.modernmidi.io.

Version endpoints

Keep these paths and plain-text formats. Existing desktop releases use const [major, minor] = text.split('.').map(Number), so appending a patch component preserves the values older clients read. Do not add a v prefix, JSON, labels, or release notes to either version file.

Older desktop clients still cannot detect patch-only updates: they continue to compare only major and minor. Updated clients read all three app components and accept old two-component app responses as patch zero. Firmware stays at two components.

Release notes

/release-notes.json contains both release histories:

{
  "app": [
    { "version": "1.1.1", "notes": ["Description of a shipped app change."] }
  ],
  "firmware": [
    { "version": "1.11", "notes": ["Description of a shipped firmware change."] }
  ]
}

Each history is an array of releases with a version string and an array of nonempty plain-text notes. An empty history is allowed. Use three components for new app entries and two for firmware; historical app entries such as 1.1 are also accepted. Keep entries newest first. The desktop also sorts them numerically and renders notes as text, without HTML or Markdown interpretation.

The initial JSON preserves the notes previously bundled in the desktop app. It does not invent notes for firmware releases whose notes were not in that app.

Publishing a release

  1. Make the corresponding app installer or firmware binary available first.
  2. Add the release notes and update the corresponding version file together. For app releases, match the desktop’s package.json version.
  3. Deploy these files through the existing static-site deployment.
  4. Check both version endpoints and /release-notes.json over HTTPS. Ensure the JSON is served as application/json and all three responses retain the CORS access used by the desktop (Access-Control-Allow-Origin: *). Allow for CDN propagation before announcing the release.

Publish the new JSON file before distributing a desktop build that depends on it. If it is missing or unavailable, the new desktop shows a retry message for notes; its version checks continue independently. No new version endpoint or server-side application is needed.