HSHOT SPOTSSTEEL DOMINIONHOT SPOTS / CAMPAIGN CONTROL

Release notes

Short summaries of changes in this installation, newest first.

v268 · Guided campaign notification setup

The GM explicitly selects Discord channel or Email for each campaign. Selecting Discord reveals guided webhook creation, channel selection, secret entry and connection-test instructions. Incomplete Discord setup cannot be saved. Email goes to the GM and participating players; saving Email clears the campaign webhook. Existing v267 routes are preserved until edited.

v267 · Campaign Discord and fallback email notifications

Campaign GMs can configure a Discord text-channel webhook for contract and mission milestones, or use email fallback for the GM and participating players. Status settings, connection tests and delivery retries use Ajax. Notifications queue with committed actions and preserve existing authorization, CSRF, audits and replay protection. Delivery history exposes failures and uncertainty without automatically replaying messages. Private planning and financial details are excluded. Run Database updates after uploading.

v266 · Plan contract operations after selection

Poll options support a planned operational start date. Future starts survive publication rather than being replaced with the current campaign month. Opposition-change validation uses that term and identifies its covered dates. Late publication shifts both dates together; existing publication-relative options retain their behavior.

v265 · Use current year for unscheduled dates

Optional unscheduled date fields suggest the current campaign year instead of the campaign starting year. The month remains unselected; saved historical dates are unchanged.

v264 · Generate contract names in place

The contract-name dice button now uses the asynchronous generation endpoint, preserving the rest of the form. AI name and employer generation continue to fill editable fields directly. Local requests enforce CSRF, verified GM access and draft status without AI configuration or usage charges.

v263 · Align merchant unit buttons

Merchant unit actions use equal-width columns and consistent control heights. Choose variant no longer inherits the general details divider or top padding.

v262 · Require matching TIC range modifiers

Automatic TICs require identical PB, S, M, L and X modifiers. Different weapon types may group when these modifiers match. Existing arm, facing, damage and DropShip array constraints remain enforced.

v261 · Download unit sheets as PNG

Classic and Alpha Strike previews now offer Download PNG beside print preview. Images use double-resolution rendering and include shared artwork; multiple pages are combined vertically. Override retains its existing PNG and SVG downloads. Export runs locally in the browser from the authorized rendered sheet.

v260 · Spread Classic pips and refine Alpha Strike presentation

Classic armor and structure use adaptive rows across each location instead of compact five-pip clusters. The on-screen Classic preview is wider; printing keeps its page dimensions. Alpha Strike chassis headings are uppercase, armor circles have distinct spacing and the shared logo fits inside the footer. The duplicate Classic crew-damage table is removed. This is a presentation refinement. Existing conversion limitations remain documented.

v259 · Correct Classic sheets and compact Alpha Strike cards

Classic template font sizes, outline fills and visibility use explicit SVG attributes. The alternate warrior panel is hidden, critical slots are numbered and the renderer asset version is refreshed. Ordinary Alpha Strike cards gain a compact bordered layout with role, PV corner, heat scale, labeled critical effects and shared vector BattleTech branding. Firestarter Classic and Alpha Strike layouts were inspected in the isolated browser. Numeric and authorization regressions pass; Classic BV and specialized parity remain incomplete. Override cards retain their existing renderer.

v258 · PHP and JavaScript unit-sheet previews

Classic and Alpha Strike previews now render exact authorized MTF/BLK designs in PHP and JavaScript using shared blank layouts. Stock and private custom units share the same path; Java and per-unit image bundles are no longer needed on the server. Ordinary infantry and basic battle armor gain source-derived sheets, squad damage, heat damage and capability indicators. Twenty unit comparisons and 1,065 unlinked weapon definitions pass reference checks. This is a preview release: Classic BV outside validated infantry, specialized systems, linked equipment and advanced conversion parity remain incomplete. Unsupported paths report errors and Help explains the limitations.

v257 · Classic, Alpha Strike and Override unit buttons

Units share three accessible icon buttons for Classic BattleTech sheets, Alpha Strike cards and Override sheets, plus a compact MUL button. Previews and print views open separately. MegaMek/MegaMekLab renders the complete 9,097-design stock catalog, retaining every Classic page and large aerospace card face. Exact source checksums prevent variant substitution. Optional private Java rendering supports custom MTF/BLK uploads with repeated access checks, source validation, concurrent-job locking and time limits. Existing reviewed OpFor document URLs remain usable.

v256 · Exclude salvage opt-outs from draft rolls

New salvage drafts roll only for companies ranking currently available salvage. Companies opting out still confirm readiness but do not roll or pick; a sole interested company needs no roll. Readiness distinguishes Ready — Not interested from ranked choices. Earlier resolved drafts preserve their saved dice, picks and purchases; surplus historical roll entries are identified as saved history. Readiness, tie-break and snake-order regression checks pass. Settlement, authorization, company salvage rights and purchase accounting are unchanged.

v255 · Unit roles throughout unit views

Unit roles appear on merchant cards and review, company equipment, OpFor unit views and budget/crew screens, roster selections, salvage, model assignments, reports and relevant unit choices. Saved roles are respected; older records use exact imported variant metadata when available. Missing roles display Not recorded rather than guessing from another variant. New generated designs retain their role, and AJAX rerolls and variant changes refresh the replacement role. Costs, permissions and accounting remain unchanged.

v254 · Update unit controls without page reloads

Merchant unit and chassis locks, individual and bulk rerolls, and variant changes update the page content in place, preserving scroll position and other unsaved visible fields. Generated OpFor locks, rerolls and variant changes use the same partial refresh. Existing authorization, CSRF, revision checks, audit and saved-unit rules remain in the normal server action pipeline. Progress prevents overlapping changes. Validation errors identify the submitted saved record and stay beside its controls. Interrupted requests are never automatically replayed; reload before retrying. Purchases and no-JavaScript submissions keep their existing behavior.