Skip to content

chore(release): prepare v1.0.0 — release notes + mandatory sanitisation prerequisite (LOT-020 #02 #03) - #32

Merged
davidp57 merged 1 commit into
developfrom
release/1.0.0
Jul 26, 2026
Merged

chore(release): prepare v1.0.0 — release notes + mandatory sanitisation prerequisite (LOT-020 #02 #03)#32
davidp57 merged 1 commit into
developfrom
release/1.0.0

Conversation

@davidp57

@davidp57 davidp57 commented Jul 26, 2026

Copy link
Copy Markdown
Member

Prepares the first public release of dcs-bridge. Ticket 02 of LOT-020, plus ticket 03
which it uncovered.

Merging this does not publish anything — David pushes published-v1.0.0 afterwards,
which is what triggers release.yml.

Why 1.0.0 and not a PATCH bump

No release has ever been published, so dcs-serve.exe only exists on machines that build
it. VMCT's kit job downloads dcs-bridge-*.zip from this repo to bundle the bridge into
veaf-map-capture-kit-<version>.zip; until a release exists, the kit ships without it and
helpers cannot capture anything. David chose 1.0.0 for the first public release.

RELEASE_NOTES.md — authored from scratch

The file had never been committed, yet release.yml passes
body_path: RELEASE_NOTES.md to softprops/action-gh-release. The publish step would
have failed. Found while doing ticket 01.

Two editorial choices worth stating, since they are judgement calls:

  • It describes the product, not a diff. [Unreleased] held every change since the
    project began; a "what's new" list is meaningless when there is no previous version to
    compare against.
  • The audience is a server operator or mission maker, not a developer of this project.
    Internal work (PEP 621 migration, backlog restructure, CI plumbing) is filtered out.

It does include an "Upgrading from a source checkout" section, because people running
from git are broken by three pre-1.0.0 changes: X-API-Key replaced by
Authorization: Bearer, the WebSocket now taking a single-use ticket instead of a key,
and the reworked MCP tool set. Without a previous release, that information has nowhere
else to live.

Ticket 03 — a prerequisite that was missing entirely

While checking that every requirement claimed in the release notes was real, I found one
that was not documented at all.

src/lua/dcs-bridge.lua:45 does local socket = require("socket"). Stock DCS strips
require in MissionScripting.lua before any mission script runs. So a helper following
docs/guide/prerequisites.* on an untouched DCS install gets a bridge that dies on its
first line and never connects — and the docs covered only how to inject the script,
never the sanitisation.

Given that ticket 02 exists so that helpers can run the map-capture kit, publishing with
this undocumented would have made it the first failure everybody hit.

New ## Lift the script sanitisation (mandatory) section in both languages, placed
before the injection methods because it applies to all of them — VMCT automates
injection, not the sandbox, which the previous structure implied. The existing methods are
regrouped under ## Injecting the script.

The procedure is not written from memory. It follows the instruction in
DCS-SimpleTextToSpeech.lua, a community script VEAF already ships inside
veaf-mission-creation-tools: DCS closed, remove everything below
local function sanitizeModule(name), and reapply after every DCS update. That last
detail is the one that silently breaks a working setup, so it gets its own admonition.
A warning admonition covers what lifting the sandbox actually allows. Style matches the
admonitions already in docs/guide/configuration.*.

Verification

  • ruff clean, mypy clean on 22 files, 270 tests pass.
  • mkdocs build renders both new sections with no warnings of their own. Note the build
    emits one pre-existing warning (adr/0005 links into the excluded .backlog/
    dotfolder, from docs(adr): ADR-0005 capability-aware bridge + LOT-018 implementation epic #20); the docs workflow uses mike deploy without --strict, so it is
    not a gate. Left alone as out of scope — flagged below.
  • Version consistency: pyproject.toml 1.0.0, CHANGELOG [1.0.0] — 2026-07-26, tag to
    push published-v1.0.0.

After merge — David's step

git checkout develop && git pull
git tag published-v1.0.0 && git push origin published-v1.0.0

Irreversible: it publishes the release. The workflow now runs ticket 01's smoke tests on
the built executables before the publish step, so a broken build fails the release
rather than shipping an exe that does nothing.

Noticed, deliberately not fixed here

  • CHANGELOG.md has three ### Added subsections under [1.0.0] (pre-existing).
    Consolidating them means re-classifying ~30 entries — editorial churn that would bury
    this diff, and it does not affect the published release body.
  • mkdocs.yml:5 repo_url and README.md:52 point at VEAF/dcs-bridge instead of
    VEAF/VEAF-dcs-bridge, so a README documentation link 404s. Separate concern.

🤖 Generated with Claude Code

Summary by Sourcery

Prepare the first public release of dcs-bridge as v1.0.0, documenting mandatory DCS script sanitisation and aligning backlog and changelog with the release.

New Features:

  • Add RELEASE_NOTES.md describing the dcs-bridge v1.0.0 release, contents of the download, usage highlights, requirements, upgrade notes from source checkouts, and known limitations.

Enhancements:

  • Document the mandatory MissionScripting.lua sanitisation step in the English and French prerequisites guides, ensuring operators can successfully connect the bridge on a stock DCS installation.
  • Update pyproject.toml, CHANGELOG, and backlog PRD/tickets to reflect the v1.0.0 version, release metadata, and completion status of LOT-020 tickets including the sanitisation prerequisite.

…ation prerequisite (LOT-020 #2 #3)

First public release of dcs-bridge. No release has ever been published, so
`dcs-serve.exe` was only available on machines that built it — which blocks VMCT's
map-capture kit, whose `kit` job downloads `dcs-bridge-*.zip` from this repo.

Release preparation, following .claude/commands/release-notes.md:

- `RELEASE_NOTES.md` — authored from scratch; the file had never been committed even
  though `release.yml` passes `body_path: RELEASE_NOTES.md`, so the publish step would
  have failed. Written for a server operator or mission maker rather than a project
  developer, and curated: `[Unreleased]` held every change since the project began, so
  it describes the product instead of a diff nobody can compare against. Includes a
  migration note for pre-release source checkouts (Bearer replacing `X-API-Key`,
  WebSocket tickets, the reworked MCP tool set).
- `pyproject.toml` → `1.0.0`, and the CHANGELOG `[Unreleased]` header becomes
  `[1.0.0] — 2026-07-26`.

Documentation gap found while writing the release notes (ticket 03):

The prerequisites documented only how to *inject* `dcs-bridge.lua`, never that DCS
script sanitisation has to be lifted. But the script obtains its socket with
`require("socket")`, and stock DCS strips `require` before any mission script runs — so
a helper following the documentation on an untouched install gets a bridge that dies on
its first line and never connects. That would have been the first failure every user of
the map-capture kit hit.

The new `## Lift the script sanitisation (mandatory)` section (EN + FR) sits before the
injection methods, since it applies to all of them — VMCT automates injection, not the
sandbox. The procedure is not written from memory: it follows the instruction in
`DCS-SimpleTextToSpeech.lua`, a community script VEAF already ships, including the
easily-missed detail that a DCS update silently reverts the change.

Also gitignore `site/`, the MkDocs build output.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@sourcery-ai

sourcery-ai Bot commented Jul 26, 2026

Copy link
Copy Markdown

🧙 Sourcery has finished reviewing your pull request!


Tips and commands

Interacting with Sourcery

  • Trigger a new review: Comment @sourcery-ai review on the pull request.
  • Continue discussions: Reply directly to Sourcery's review comments.
  • Generate a GitHub issue from a review comment: Ask Sourcery to create an
    issue from a review comment by replying to it. You can also reply to a
    review comment with @sourcery-ai issue to create an issue from it.
  • Generate a pull request title: Write @sourcery-ai anywhere in the pull
    request title to generate a title at any time. You can also comment
    @sourcery-ai title on the pull request to (re-)generate the title at any time.
  • Generate a pull request summary: Write @sourcery-ai summary anywhere in
    the pull request body to generate a PR summary at any time exactly where you
    want it. You can also comment @sourcery-ai summary on the pull request to
    (re-)generate the summary at any time.
  • Generate reviewer's guide: Comment @sourcery-ai guide on the pull
    request to (re-)generate the reviewer's guide at any time.
  • Resolve all Sourcery comments: Comment @sourcery-ai resolve on the
    pull request to resolve all Sourcery comments. Useful if you've already
    addressed all the comments and don't want to see them anymore.
  • Dismiss all Sourcery reviews: Comment @sourcery-ai dismiss on the pull
    request to dismiss all existing Sourcery reviews. Especially useful if you
    want to start fresh with a new review - don't forget to comment
    @sourcery-ai review to trigger a new review!

Customizing Your Experience

Access your dashboard to:

  • Enable or disable review features such as the Sourcery-generated pull request
    summary, the reviewer's guide, and others.
  • Change the review language.
  • Add, remove or edit custom review instructions.
  • Adjust other review settings.

Getting Help

@sourcery-ai sourcery-ai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hey - I've reviewed your changes and they look great!


Sourcery is free for open source - if you like our reviews please consider sharing them ✨
Help me be more useful! Please click 👍 or 👎 on each comment and I'll use the feedback to improve your reviews.

@davidp57
davidp57 merged commit 61492f7 into develop Jul 26, 2026
2 checks passed
@davidp57
davidp57 deleted the release/1.0.0 branch July 26, 2026 18:25
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant