Releases: MirabelleBenou/dcs-mission-plan
Release list
V1.1.0
Added Field Manual
Full Changelog : https://github.com/MirabelleBenou/dcs-mission-plan/blob/main/CHANGELOG.md
Mission Plan V1.0.0
Changelog
All notable changes to the DCS Mission Plan suite.
The suite bundles several independently-versioned tools, so entries are grouped per tool. Versions map to GitHub tags/releases. Format loosely follows Keep a Changelog.
Mission Plan — landing
- Operational "situation board" landing page that embeds the live tools (HQ, Briefing Generator, Recon Station) in isolated frames and stages the upcoming ones as Coming soon.
- 4 themes (Cold War NATO / Soviet, Modern NATO / Eastern Bloc) and FR/EN carried across the whole suite from the board.
- Online and offline — published as a hosted page and as a single offline HTML file.
- Tablet & mobile first-class target (touch, drag, rotation-safe).
- Wing configuration shared automatically across embedded tools.
HQ — v0.1.0 (beta)
Initial release. Command post for the suite.
Added
- Wing hub — single source for wing branding, squadrons and callsigns; consumed automatically by Briefing Generator and Recon Station.
- Experimental
.mizengine — read a mission, export a mission snapshot (JSON), and apply surgical patches: scalar deltas (radio, group frequency, livery) and structural replacements (routes & payloads). - 4 themes, FR/EN.
Notes
- Advanced flight-package / Commander UI is in development (dev-gated).
- In-game
.mizvalidation in DCS is pending — hence the beta label.
Briefing Generator
v2.2.0
Added
- Bilingual UI — full FR/EN internationalization.
- Radio plan, METAR assistant, import METAR from a
.miz, structured airfields. - Per-page PNG export and PDF size optimization.
Changed
- Wing branding is now consumed from HQ (the dedicated wing tab became read-only).
v2.0.0
Added
- Initial offline briefing generator: multi-section editor (cover, SITAC, charts, annexes, phases).
- 4 graphic themes, native PDF export, multi-wing management via JSON.
Recon Station — v1.0.0
Added
- Turn a screenshot into a reconnaissance analysis photo; native Canvas 2D engine (preview = export); lossless full-resolution PNG.
- Sensor looks — EO, IR white-hot, IR black-hot, SAR (stylizations, not radiometric data).
- Image effects — greyscale, contrast, vignette, grain, scanlines.
- Annotations — numbered movable markers, magnifier/loupe, shapes (ellipse, rectangle, polygon, arrow, bracket), labels (stamp, cursive, plain).
- Editable info block (9 fields) and classification banner (4 levels).
- Wing logos — manual upload or shared from HQ; colour / grey / white modes.
- 4 themes, FR/EN.
v2.1.1 - PNG compression fix
[2.1.1] — 2026-05-19
Fixed
- Charts and Annexes images were not compressed on upload (regression introduced in v2.1.0).
Both new sections — Charts and Annexes — bypassed the canvas-based compression pipeline and stored raw uploaded files (including 4–5 MB PNGs with alpha channel) directly into the briefing state. Briefings with a couple of high-resolution screenshots could easily exceed 10 MB once exported to PDF, which made them unshareable via Discord.
Thechangelisteners inrenderChartsandrenderAnnexesnow callcompressImageFile(f)like the other sections (Cover, SITAC, Phases, Radio Plan), producing JPEG q82 at most 1600 px wide on a white background.
Added
- Silent auto-recompression of legacy briefings.
A new functionrecompressOversizedImagesInState(state)walks the briefing state at load time and recompresses any embedded image whose base64 payload exceeds 800 KB. It runs in two places:- On JSON import (
loadJsonFile) — awaited, followed by an immediate state persist and a discreet toast notification. - On app startup (
init) — non-blocking; the UI renders immediately and the optimization happens in the background, then persists and refreshes the preview when done.
Image paths visited are explicit (no magic walk):cover.mapImage,sitac.mapImage,phases[*].mapImage,phases[*].images[*].data,charts[*].img,annexes[*].img,radioPlan.aircraftPlans[*].image.
- On JSON import (
- New constant
IMG_RECOMPRESS_THRESHOLD = 800 * 1024(configurable viabuild_html.py).
v2.1.0 - Export PNG + various updates/changes/fixes
[2.1.0] — 2026-05-16
Added
- PNG kneeboard export — Export individual pages or all pages as a ZIP archive. Each PNG is rendered at strict A4 dimensions (794×1123 px) for use as in-game kneeboards in DCS World.
- Unified export modal with PDF/PNG choice and page selector — pick exactly which pages you want.
- Progress feedback during PNG export — the modal stays open with a dynamic "Generating X/N…" button while pages are rendered. No more wondering whether the app is frozen.
- Charts section with an unlimited dynamic list of airport charts (replaces the previous limit of 2 hardcoded charts). Add, reorder, and remove charts freely.
- Free-form Annexes section — a new editor section for arbitrary annexes with title + image + optional caption. Useful for additional briefings, intel images, navigation notes, or any custom content.
- Automatic migration of legacy briefings: old
annexes.chart1*/chart2*fields are seamlessly converted to the newstate.charts[]array on first load. No data loss. - Dedicated mobile tabs 🗺 Charts and 📎 Annexes for tablet portrait use.
Changed
- Source filenames cleaned up: no more version numbers in filenames. The build now uses stable names:
build_html.py,build_css.py,assets.json. Versioning is tracked by Git tags and theAPP_VERSIONconstant inbuild_html.py. - Relative paths via
__file__: build scripts now useos.path.join(HERE, ...)instead of hardcoded absolute paths. You can now runpython3 build_html.pyon any machine — the script reads its dependencies from its own directory. - Simplified toolbar: the eye/preview toggle button (
btn-mode) was removed. It was redundant with the mobile tab bar on tablets and unused on desktop. - Larger chart and annex images on page:
max-heightincreased from 190mm to 200mm. Charts now make better use of the available A4 page space, especially for portrait-format images. - Editor section numbering: 08 Charts / 09 Annexes / 10 Wing Configuration (was previously 08 Annexes / 09 Wing).
Fixed
UX & responsive
btn-moderegression — the click handler binding was lost in a previous refactor, breaking the toolbar's preview toggle.- Toolbar overflow on landscape tablets (Xiaomi Pad 6 and similar 1100-1366px viewports).
- Kraft background clipped in tablet portrait preview.
- Roster page not refreshing after mission edits (added 11 missing
renderRoster()calls on mission CRUD events). - PNG export modal text mismatched the actual export dimensions ("900×1200" → "794×1123 A4").
PNG export
- PNG dimensions incorrect on high-DPI devices — html2canvas was applying
window.devicePixelRatio(×2.5 on Xiaomi Pad 6) by default. Now usesscale: 1explicitly for guaranteed 794×1123 pixel output. - Squadron and header logos distorted in PNG output — html2canvas does not handle
<img>+object-fit: containcorrectly. Logos now use<div>+background-image: url(...)withbackground-size: contain, which is reliably rendered. - Empty rectangle instead of squadron name on PNG mission pages — html2canvas does not handle
display: inline-flex+overflow: hiddencorrectly. The.squadron-chipelement now usesdisplay: flex; width: fit-contentinstead.
Intermittent rendering
- "Disappearing page" bug — a hard-to-reproduce issue where a page would occasionally fail to render in preview. Mitigated with a preventive multi-layer CSS fix:
font-display: swapon all@font-facedeclarations (eliminates 3-second font black-out),overscroll-behavior: containon scrollable containers (isolates scroll, prevents cascade reflows),contain: layouton.ed-section(isolates layout computation), removal of deprecated-webkit-overflow-scrolling: touch.
v2.1.0 regressions caught before release
- Annexes section invisible on portrait tablets — missing
data-active-tab="annexes"mapping in the responsive CSS. Now correctly maps to its editor section. - Chart images overflowing the page —
max-height: 230mmwas too aggressive on A4 paper (297mm tall). Adjusted to 200mm with a safety margin.
Migration from 2.0.0
No action required. Briefings saved in localStorage are migrated automatically on the next load. The legacy annexes.chart1*/chart2* fields are converted into the new state.charts[] array, and the new empty state.annexes[] array is initialized for free-form annexes.
If you exported a briefing as JSON in 2.0.0, you can re-import it in 2.1.0 without any modification.
Technical notes
- HTML file size: ~825 KB (vs ~487 KB in 2.0.0). The increase is due to embedded html2canvas and JSZip libraries used for PNG export.
- The build pipeline now generates an intermediate
briefing.cssfile alongside the scripts (was previously hidden under a temporary name). This file is not committed. - All scripts now work from any directory thanks to
__file__-relative paths.
v2.0.0 — First public release
Changelog
All notable changes to this project are documented in this file.
The format is based on Keep a Changelog,
and this project adheres to Semantic Versioning.
[2.0.0] — 2026-05-08
First public release.
Added
- Multi-wing configuration — the application now supports any virtual wing, not just a specific one
- Generic default wing (
MY WING) embedded by default, with a genericWGcockade logo - 4 graphical themes with runtime selector in toolbar:
cw-nato— Cold War NATO (default, kraft beige + olive)cw-soviet— Cold War Soviet (ocre warm + Soviet star seal)modern-nato— Modern NATO (bone white + digital seals)modern-east— Modern Eastern Bloc (greyed paper + dark blue accents)
- Theme persistence in localStorage (key
theme_v1), independent from wing config and briefing state - Roboto Mono typography for modern themes (replaces Special Elite typewriter)
- Soviet star seal with custom rendering for the Soviet theme
- Digital square seals with classification IDs for modern themes
- User Guide (FR) — full HTML/PDF user documentation with 17 screenshots
- Version display in toolbar (currently
v2.0.0)
Changed
- Default wing is now a generic placeholder (
MY WINGwith one example squadronSQN-01flying F-16C Viper) - The 4th VEAW wing is now distributed only as an example file (
wing_config_4th_veaw.json), no longer embedded as default - HTML file size reduced from ~800 KB to ~480 KB by removing legacy embedded wing-specific assets
- Print CSS harmonized with screen CSS to ensure perfect parity between preview mode and exported PDF
- Image annexes max-height tuned (190mm for full pages, 88mm for stacked pairs) to prevent footer overlap
Fixed
- Image annexes overlapping the footer on print PDF
- Discrepancy between preview mode and PDF export (images smaller in PDF than in preview)
- Regex bug in
exportWingConfig(\\sinstead of\s) - Tab-bar gradient (mobile/tablet view) now follows the active theme
Project history (pre-2.0.0)
The application was developed iteratively through 9 internal phases before this first public release:
- Phases 1–7B — Multi-wing refactoring (initially hardcoded for a single wing)
- Phase 8 — Generic default wing for public distribution
- Phase X — Graphical themes (this release)
- Phase 9 (planned) — Full UI internationalization (FR/EN toggle)
Future planned enhancements are tracked in the Roadmap section of the README.