chore(release): prepare v1.0.0 — release notes + mandatory sanitisation prerequisite (LOT-020 #02 #03) - #32
Merged
Merged
Conversation
…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 has finished reviewing your pull request! Tips and commandsInteracting with Sourcery
Customizing Your ExperienceAccess your dashboard to:
Getting Help
|
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
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.0afterwards,which is what triggers
release.yml.Why 1.0.0 and not a PATCH bump
No release has ever been published, so
dcs-serve.exeonly exists on machines that buildit. VMCT's
kitjob downloadsdcs-bridge-*.zipfrom this repo to bundle the bridge intoveaf-map-capture-kit-<version>.zip; until a release exists, the kit ships without it andhelpers cannot capture anything. David chose
1.0.0for the first public release.RELEASE_NOTES.md— authored from scratchThe file had never been committed, yet
release.ymlpassesbody_path: RELEASE_NOTES.mdtosoftprops/action-gh-release. The publish step wouldhave failed. Found while doing ticket 01.
Two editorial choices worth stating, since they are judgement calls:
[Unreleased]held every change since theproject began; a "what's new" list is meaningless when there is no previous version to
compare against.
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-Keyreplaced byAuthorization: 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:45doeslocal socket = require("socket"). Stock DCS stripsrequireinMissionScripting.luabefore any mission script runs. So a helper followingdocs/guide/prerequisites.*on an untouched DCS install gets a bridge that dies on itsfirst 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, placedbefore 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 insideveaf-mission-creation-tools: DCS closed, remove everything belowlocal function sanitizeModule(name), and reapply after every DCS update. That lastdetail is the one that silently breaks a working setup, so it gets its own admonition.
A
warningadmonition covers what lifting the sandbox actually allows. Style matches theadmonitions already in
docs/guide/configuration.*.Verification
ruffclean,mypyclean on 22 files, 270 tests pass.mkdocs buildrenders both new sections with no warnings of their own. Note the buildemits one pre-existing warning (
adr/0005links into the excluded.backlog/dotfolder, from docs(adr): ADR-0005 capability-aware bridge + LOT-018 implementation epic #20); the docs workflow uses
mike deploywithout--strict, so it isnot a gate. Left alone as out of scope — flagged below.
pyproject.toml1.0.0, CHANGELOG[1.0.0] — 2026-07-26, tag topush
published-v1.0.0.After merge — David's step
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.mdhas three### Addedsubsections 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:5repo_urlandREADME.md:52point atVEAF/dcs-bridgeinstead ofVEAF/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:
Enhancements: