Skip to content

Latest commit

 

History

History
374 lines (333 loc) · 36.2 KB

File metadata and controls

374 lines (333 loc) · 36.2 KB

Changelog

All notable changes to this project are documented in this file.

Format follows Keep a Changelog, and this project uses semantic versioning.

[Unreleased]

Fixed

  • Market AO Data refresh now records live price rows with the application's fetch time before caching/storing them, so refreshed prices no longer stay red just because AO Data returned an old order timestamp.

[0.1.26] - 2026-05-18

Added

  • Release documentation now includes a module-by-module change summary since v0.1.25, covering Meter, Loot, Market, Scanner, protocol parsing, and QA/release gates.
  • Market regressions now lock enchanted refined material price lookup for recipes such as Master's Great Frost Staff T6.2, including AO Data variants like T6_METALBAR_LEVEL2@2 and T6_PLANKS_LEVEL2@2.

Changed

  • Market craft-plan updates now batch large additions and defer expensive preview rebuilds, making large recipe families such as multi-tier enchanted armor lists responsive instead of rebuilding after every row.
  • AO Data price refreshes now request only concrete recipe item ids, fetch price batches in the background with a GUI-polled worker queue, use cached/stale prices immediately when available, and fail fast on 429 rate limits without leaving the Market tab stuck in a queued loading state.
  • Market price refresh now expands recipe item ids to their required AO Data alias variants during fetch, so enchanted refined materials whose live rows are keyed as *_LEVELN@N can be priced even when the recipe component id is *_LEVELN.
  • Market rows with missing fresh component prices are no longer ranked as profitable craft candidates, making the craft table safer when AO Data has partial or stale coverage.
  • Market Inputs now separate full upfront shopping quantities from net/economic material cost after expected returns, keeping shopping conservative while profit math reflects returned materials.
  • Meter/Loot party detection now handles active-party joins, current-party GUID mappings, and Protocol18 dictionary/list key shapes more defensively.
  • Meter history comparison UI was compacted so selected-history comparisons no longer cover the session-gains panel.
  • Scanner sync now rebuilds the bundled Albion Data Client binary when repository updates change the scanner source.

Fixed

  • Market live price refresh no longer uses Qt worker-thread signals for AO Data calls, avoiding a crash path where the app could close during price fetching.
  • Meter no longer treats access-rights payloads as party rosters, preventing unrelated nearby/access-list names from entering party-scoped combat stats.
  • Meter session gains now reports personal silver (self/You) instead of summing silver picked up by the whole party.
  • Meter party filtering now keeps solo runs scoped to self and keeps party rows limited to confirmed party/local context instead of arbitrary nearby players.
  • Loot tracking no longer accepts arbitrary nearby loot/silver events before self or party context is known.
  • Loot inventory move filtering and trash icon handling were hardened so generated loot rows avoid known non-item noise.
  • Protocol18 operation-response decoding now tolerates list-like dictionary keys without terminating the live snapshot stream.
  • Linux Qt GUI smoke tests install the required Qt runtime libraries in CI.

[0.1.25] - 2026-04-15

Added

  • Native Loot tab for party-scoped item loot review, including live log status, import/export actions, compact feed rows, top looters/items/source summaries, category filters, and source-color badges for player corpses versus mob/container/system sources.
  • Loot tracker now understands the current party-member loot pickup variant and inventory move flows, so replay/live logs can include party looters instead of only the local player when the packet stream contains the required party context.
  • Loot text export now persists source_kind, allowing future imports to distinguish player corpses, mobs, loot chests, system/container events, and unknown sources.
  • Market catalog now exposes crystallized recipe variants and marks them in craft search/setup with a dedicated badge.

Changed

  • Loot logger focuses the UI on item pickups; silver pickup tracking is no longer presented as a primary live view.
  • Loot summaries now prefer human-readable item names and avoid duplicated technical IDs when the label and ID are identical.
  • Looted-from-player summaries were cleaned up to avoid repeating the same explanatory sublabel on every row.
  • Loot tab density and right-side summary cards were tightened to fit more rows at the supported desktop window size.
  • Crystallized market inputs are treated as non-returnable one-time components, keeping RRR logic limited to returnable crafting materials.
  • Qt loot state no longer imports PySide6.QtGui during test collection, fixing Ubuntu CI environments without libEGL.so.1.

Fixed

  • Loot source classification no longer puts imported Loot Chest rows under player-corpse summaries when newer logs contain source_kind=system.
  • Shoes and other armor item IDs are categorized before resource-token matching, preventing armor rows from appearing as resources.

[0.1.24] - 2026-04-02

Changed

  • Market shopping lists now compute minimal upfront material requirements per craft batch instead of raw totals, so returnable materials no longer overbuy large stacks while non-returnable components still stay one-to-one.
  • Market result rows now include journal economics directly in row-level revenue, cost, tax, and profit allocation, keeping item rows aligned with the top-level selected totals and breakdown values.

[0.1.23] - 2026-04-01

Changed

  • Windows installs now reconcile late Npcap Runtime setup after the app is already installed: Start/runtime status explains that live capture is ready, offers a one-click Switch shortcuts to live action, and exposes the exact ...exe live command without requiring reinstall.

[0.1.22] - 2026-04-01

Changed

  • Windows bootstrap shortcuts now prefer live automatically when Npcap Runtime is installed and the bundled Windows capture backend is available, so clean-machine installs no longer default to core after a successful live-capable setup.

[0.1.21] - 2026-04-01

Changed

  • Market selected-material cost now uses exact expected economic quantities instead of reusing shopping safety rounding, which keeps top KPIs aligned with per-result cost allocation while Inputs still shows full upfront purchase counts.
  • Market regressions now explicitly lock mixed-component weapon crafts so Inputs keeps full upfront shopping counts for returnable mats even when the recipe also contains non-returnable artifacts.
  • Market journals, non-returnables, mixed recipes, and top-level profit math are now covered by deterministic engine/state/profit regressions, which locks the current Inputs/Outputs/Results behavior before further planner changes.
  • CLI, Qt runner, and scanner diagnostics now resolve the app version from one shared helper, reducing mismatches between --version, in-app update checks, diagnostics bundles, and local-dev fallback reporting.
  • Market setup now stays in a fixed desktop two-pane layout (setup panel + crafts table) at supported window widths, reducing layout drift and keeping the crafts table from collapsing under the setup panel.
  • Market crafts/inputs/outputs/results toolbars now stay on a single desktop row at supported widths, which keeps search, filters, and CSV actions from wrapping into uneven stacks.
  • Start, Scanner, Settings, and Help now share the same desktop-only shell framing and two-column card density, which removes the previous one-column collapse and keeps utility-tab actions visible at supported sizes.
  • Meter now uses the same desktop shell contract: controls stay in one row group, the scoreboard header fills the panel width cleanly, and the history/session sidebars remain aligned instead of drifting at supported sizes.
  • Header update/support actions were compacted so the update CTA no longer looks truncated at supported desktop widths while PayPal/Coffee buttons stay readable without forcing stacked layouts.
  • Local release-readiness checks now validate the manifest artifact matrix for Windows/Linux/macOS from the checked-in contract file, so missing or misclassified release assets fail before tagging without relying on GitHub reachability.
  • Live meter sanity is now regression-locked across the current replay pack (pcap49-pcap53), covering bootstrap visibility, local-context party filtering, stable history labels, and fame/silver totals.
  • Windows release tooling now supports a bundled live-capture sidecar asset (AlbionCommandDesk-WindowsCapture-vX.Y.Z.zip) so installers can stage a prebuilt Windows capture backend instead of requiring local SDK/build-tool setup.
  • Release QA now validates the Windows capture-bundle path in bootstrap smoke and keeps the release manifest/update-flow contract aware of the new capture-backend asset kind.

[0.1.20] - 2026-03-28

Changed

  • Release maintenance now has a one-shot local gate runner (tools/qa/run_release_readiness.py) that executes the documented pytest/update/smoke checks before tagging a new version.
  • Release docs now call out the new one-shot readiness command, post-release diagnostics-bundle verification, and the fact that the Windows bootstrap installer still requires Python preinstalled even though Git is not required.
  • Battle sessions no longer finalize from a stale combat-state stop marker while fresh damage/heal events are still arriving, which reduces mid-fight resets during target swaps and noisy combat-state transitions.
  • Market journal mapping now falls back for royal plate items that are missing explicit journal metadata, and planner regressions now lock royal sigils/tokens as non-returnable inputs.
  • Market result-row profit/margin math now uses the same documented basis as top-level KPIs: net output value is compared against allocated input cost, with fee/tax remaining explicit columns.
  • AO Data market refreshes now default to smaller batches, split oversized 429-limited requests into predictable sub-batches, and expose clearer queued/loading/cooldown states while falling back to cache or bundled prices.
  • Market workspace now remembers the selected preset between runs, stores the last export directory in app settings, and exposes shopping/selling/results CSV copy/export actions directly in the UI.
  • Meter pipeline now applies recent-local party filtering upstream for both combat events and combat-state markers, which drops stale/off-map party IDs once local party members have been observed while keeping bootstrap permissive on first contact.
  • Battle summaries now pin per-session player labels as events arrive, so old rows do not get relabeled as later mob names when Albion reuses entity IDs.
  • App settings now merge safely across update, market, scanner, and logging preferences; a new Settings tab centralizes update checks, scanner repo paths, game-data setup, capture runtime, Git status, and default log-level controls.
  • A new Help tab now exposes app version, latest release/changelog links, troubleshooting entry points, and direct dependency guidance for Npcap, Git, scanner repo, and game-data setup.
  • Scanner and Help tabs can now export a diagnostics bundle containing summary metadata, scanner logs, market diagnostics, and current settings for support/debug handoff.
  • Meter history list now preserves scroll position across history model refreshes, keeps Copy visible per row, and clips/wraps long history summaries inside the panel.
  • Live meter display now prefers self IDs and recently local party entity IDs once party member IDs are resolved, reducing false-positive party rows from stale/non-local name matches.
  • Name registry now tracks recent local entity observations from live/replay packets for safer UI-side party filtering.
  • Meter controls and scoreboard now degrade more predictably at smaller window widths: stacked meter layout engages earlier, controls reflow into a compact grid, and scoreboard columns remain reachable via horizontal overflow instead of silent clipping.
  • Fame and silver totals are regression-locked against albion_combat_53_gold_fame.pcap, and the session-gains card now collapses to a single-column stat grid at narrow widths instead of overflowing.
  • Meter history can now be exported as TXT/CSV/JSON, and selected archived fights expose an in-app KPI comparison against a neighboring session for quick review outside the live scoreboard.
  • Meter sidebar now includes a passive session-activity trail for map transitions and recent fame/silver reward gains, giving users a safe post-analysis breadcrumb without adding any overlay/radar behavior.
  • Start tab was rebuilt into a tighter 2x2 health grid (capture, Git, game data, updates), while the header now exposes a shorter version-only update pill and falls back to a compact Update ... action in narrower widths.
  • Market setup/inputs/outputs/results tables now keep all columns reachable at the enforced minimum window size via horizontal scrolling, and their search/sort/export controls use a consistent wrapped toolbar layout instead of clipping at smaller widths.
  • Meter history exports were removed from the live UI; history stays copy-first and no longer attempts QWidget-based export actions from the Qt Quick surface.
  • Scanner repo actions now block cleanly while the Albion Data Client process is running, which removes start/stop/sync race conditions and noisy sync logs.
  • Start, Meter, Settings, and Help received another desktop-only layout pass to reduce duplicated content, stabilize card widths, and keep the main shell in multi-column mode.
  • Market input/output rows now keep clipboard copy on double-click while also toggling a green completion marker directly from the item cell.
  • Market shopping quantities now use full upfront material requirements for returnable crafting resources instead of subtracting expected RRR before purchase, which prevents underbuying on multi-craft batches such as Boltcasters.

[0.1.19] - 2026-02-26

Changed

  • Meter history now collapses duplicate rows for the same player label when Albion assigns multiple source IDs across map/cluster transitions.
  • History summaries keep raw totals_by_id data for diagnostics, while UI-facing entries aggregate by player name to avoid duplicate names in one fight.

[0.1.18] - 2026-02-25

Changed

  • First-run Qt startup no longer blocks with a game-folder picker when local game databases are missing.
  • Start tab now includes a dedicated Game data status card with manual setup and refresh actions.
  • Added explicit game database health reporting (indexed items/items/map index) and wiring into scanner/home UI state.
  • Startup checklist now includes game-data readiness as a separate step before scanner live-mode workflows.

[0.1.17] - 2026-02-25

Changed

  • Installer defaults were switched to capture on Windows/Linux/macOS bootstrap scripts, with automatic fallback to core when capture prerequisites are missing.
  • Windows bootstrap EXE now runs install.ps1 without forcing -Profile core, so release installs follow the same default capture-first path.
  • Bootstrap auto-run now starts core mode consistently after install and prints explicit live command guidance when capture extras/runtime are ready.
  • Bootstrap smoke CI now validates the default installer flow (no forced core profile) on required clean-machine jobs.
  • Install/release/troubleshooting docs were updated to reflect capture-first install behavior and fallback expectations.

[0.1.16] - 2026-02-20

Added

  • Scanner tab now shows Git prerequisite diagnostics with direct install guidance/action when git is missing.
  • Meter tab now surfaces capture-runtime readiness (missing/blocked) so live mode requirements are visible without switching tabs.

Changed

  • Clarified Windows runtime messaging: end users need Npcap Runtime for live; Npcap SDK is only for optional capture-profile builds.
  • Windows bootstrap EXE now calls installer with explicit -Profile core and passes release-version diagnostics.
  • CLI/app version resolution now comes from installed package metadata instead of hardcoded values.
  • Fixed toast rendering regression (theme binding + anchor target), removing black/empty notification artifacts.

Added

  • Phase 0 execution tickets for UX/minimal-release work in docs/UX_MINIMAL_RELEASE_PLAN.md.
  • Active Phase 0 milestone queue in docs/DELIVERY_BACKLOG.md.
  • core GUI runtime command in albion_dps/cli.py for non-capture startup.
  • Install profile contract in pyproject.toml (core default, capture optional).
  • QML design token source in albion_dps/qt/ui/Theme.qml.
  • Shared tab styling component in albion_dps/qt/ui/ShellTabButton.qml.
  • Shared card container component in albion_dps/qt/ui/CardPanel.qml.
  • Shared inset/table container component in albion_dps/qt/ui/TableSurface.qml.
  • Grouped regression runner for Phase 3 QA in tools/qa/run_regression_suite.py.
  • QA regression runbook in docs/qa/QA_REGRESSION_PASS.md.
  • Clean-machine CI matrix verifier in tools/qa/verify_clean_machine_matrix.py.
  • QA clean-machine runbook in docs/qa/QA_CLEAN_MACHINE.md.
  • Release/update flow verifier in tools/qa/verify_release_update_flow.py.
  • Release/update QA runbook in docs/qa/QA_RELEASE_UPDATE.md.
  • Manifest contract regression test in tests/test_release_manifest_contract.py.
  • Qt update-banner state tests in tests/test_qt_update_banner.py.
  • PH2 semantic visual token families in albion_dps/qt/ui/Theme.qml (brand/surface/border/text/state/control/button/table/layout/elevation).
  • Reusable button primitive in albion_dps/qt/ui/AppButton.qml with semantic variants and state handling.
  • Reusable form control primitives: AppTextField.qml, AppComboBox.qml, AppSpinBox.qml, and AppCheckBox.qml.
  • Level-driven panel primitives in CardPanel.qml and TableSurface.qml for cleaner card hierarchy.
  • Expanded table typography/separator tokens in Theme.qml for Meter/Market/History readability.
  • Shell header action tokens in Theme.qml for unified action-bar dimensions and banner styling.
  • Semantic data-color helpers in Main.qml for signed values, validation, and price-source freshness.
  • Empty/loading placeholder states across Meter/History/Scanner/Market views.
  • Tokenized motion timings in Theme.qml for consistent micro-interactions.
  • Accessibility focus token (focusRingWidth) and higher-contrast secondary text tokens in Theme.qml.
  • PH2 visual baseline asset set in assets/ux-baseline/ (ph2-meter.png, ph2-scanner.png, ph2-market.png).
  • Bootstrap installers now support explicit non-interactive CI mode flags (-NonInteractive, --non-interactive) and release-version artifact diagnostics.
  • Shared install smoke check now accepts install profile + expected artifact context.
  • Hardened Npcap runtime detector states (available, missing, blocked, unknown) with action URL metadata.
  • Scanner tab now shows capture-runtime diagnostics and provides runtime action buttons (Install runtime / Open runtime page) plus manual runtime refresh.
  • Live startup policy module (albion_dps/capture/startup_policy.py) with deterministic live->core fallback decisions and recovery messaging.
  • Regression tests for capture fallback transitions and messaging in tests/test_capture_startup_policy.py.
  • Manifest strategy validator in tools/release/manifest/build_manifest.py to enforce preferred per-OS asset ordering and metadata contract checks.
  • Update-banner repeat suppression tests in tests/test_qt_update_banner.py and installer-link verification in tools/qa/verify_release_update_flow.py.
  • Clean-machine matrix evidence test coverage in tests/test_verify_clean_machine_matrix.py.
  • Release rollback runbook in docs/release/RELEASE_RUNBOOK.md.
  • Last-known-good manifest pointer file tools/release/manifest/last_known_good.json.
  • Pointer maintenance and rollback helpers: tools/release/manifest/set_last_known_good.ps1, tools/release/manifest/rollback_manifest.ps1.
  • Windows release bootstrap EXE builder: tools/release/windows/build_bootstrap_setup.ps1.
  • Windows release bootstrap builder docs: tools/release/windows/README.md.

Changed

  • albion_dps/qt/ui/AppButton.qml no longer mutates checked internally for checkable buttons, preserving single-active mode/sort bindings in Meter controls.
  • Market setup panel width was tightened (Theme.qml, MarketTab.qml, MarketSetupPanel.qml) and setup content now reserves right-side space for the vertical scrollbar.
  • Market Fees label/value in MarketSetupPanel.qml was shortened and constrained to avoid overflow in narrow setup widths.
  • Header action labels were polished (Check updates, PayPal, Buy me a Coffee) with updated button sizing for stable alignment.
  • tools/install/windows/install.ps1 now probes common Python install paths and attempts winget auto-install (--source winget) before failing.
  • Windows bootstrap EXE downloader now forces TLS 1.2+ and falls back to PowerShell download when WebClient fails SSL/TLS negotiation.
  • Windows bootstrap EXE now invokes tagged install.ps1 with only -ProjectRoot (backward-compatible with older tags that do not support -Profile/-ReleaseVersion).
  • Windows bootstrap EXE now also passes -SkipCaptureExtras so clean-machine installs do not require Visual C++ build tools / pcap build chain.
  • Windows bootstrap EXE now installs into %LOCALAPPDATA%\\AlbionCommandDesk (persistent runtime) and uses -SkipRun to avoid false-fail startup on machines without Npcap.
  • Release runbook/checklist now include the canonical Windows bootstrap EXE build step.
  • README + troubleshooting now document no-git Windows install via release EXE and Python fallback path.
  • Windows docs were aligned to the real bootstrap flow (install paths, launch commands, clean-machine QA steps, and legacy installer notes replaced).
  • Windows bootstrap EXE now creates Desktop and Start Menu shortcuts to launch core mode.
  • Fixed Windows bootstrap shortcut creation command escaping (PowerShell variable tokens are now preserved correctly, no .Save() parser error).
  • Progress log in docs/DELIVERY_BACKLOG.md now tracks Phase 0 kickoff state.
  • docs/UX_MINIMAL_RELEASE_PLAN.md marks UXR-001 as completed and documents delivery notes.
  • docs/ARCHITECTURE.md now defines the frozen Phase 0 Qt shell layout contract.
  • albion_dps/qt/ui/Main.qml now uses explicit shell zone IDs and fixed ordering for header actions.
  • albion_dps/qt/runner.py now supports core mode startup without capture backend.
  • Windows/Linux/macOS bootstrap installers now share core|capture profile selection.
  • Installer docs and root README now document profile-based install flow.
  • docs/TROUBLESHOOTING.md now includes profile-based recovery commands.
  • docs/release/RELEASE_CHECKLIST.md now locks Phase 0 packaging targets and blocker/warning release gates.
  • .github/workflows/bootstrap-smoke.yml now maps mandatory core checks and advisory capture checks per OS.
  • .github/workflows/release-manifest.yml now validates manifest assets against Phase 0 release strategy.
  • docs/release/RELEASE_MANIFEST_SPEC.md now documents manifest blocker/warning policy.
  • docs/release/RELEASE_CHECKLIST.md now defines deterministic cross-platform artifact naming and primary/secondary release matrix entries.
  • docs/release/RELEASE_MANIFEST_SPEC.md now defines preferred per-OS asset ordering and first-match client selection behavior.
  • tools/install/windows/install.ps1, tools/install/linux/install.sh, and tools/install/macos/install.sh now pass profile/artifact contract metadata into shared smoke checks.
  • Platform install READMEs now document non-interactive mode and release-version diagnostic usage.
  • albion_dps/qt/runner.py now handles blocked/unknown runtime states in live mode without hard crashes and logs explicit recovery actions.
  • albion_dps/qt/runner.py now falls back to core mode when capture prerequisites are missing/blocked or no interfaces are available, instead of aborting app startup.
  • tools/release/manifest/build_manifest.py now classifies AppImage/DMG archives, validates HTTPS URL + SHA256 digest + positive size, and sorts assets with preferred installer/archive first per OS.
  • albion_dps/update/checker.py now resolves the preferred per-OS download asset and exposes separate download_url and notes_url values.
  • Qt update banner now uses installer-first Install CTA + Notes action, and dismissed versions stay hidden until a newer version is available.
  • .github/workflows/bootstrap-smoke.yml now emits per-job clean-machine evidence bundles (bootstrap logs, smoke report JSON, update-flow log, UX baseline screenshots) and runs on release publication events.
  • tools/install/common/smoke_check.py now supports structured JSON report output for CI artifact capture.
  • tools/qa/verify_clean_machine_matrix.py now validates required evidence artifacts in addition to required job conclusions.
  • docs/release/RELEASE_CHECKLIST.md, docs/release/RELEASE_MANIFEST_SPEC.md, and README.md now include the LKG pointer + one-command rollback flow.
  • .github/workflows/release-manifest.yml now uses shared manifest strategy validation logic (no duplicated policy in workflow script).
  • tools/release/manifest/manifest.example.json now follows canonical artifact naming matrix (installer/AppImage/DMG + bootstrap scripts).
  • tests/test_release_manifest_contract.py now validates URL/checksum/size fields and enforces preferred first-asset ordering per OS.
  • docs/release/RELEASE_MANIFEST_SPEC.md now allows arch=universal for macOS universal artifacts.
  • docs/UX_MINIMAL_RELEASE_PLAN.md and docs/DELIVERY_BACKLOG.md now mark REL-002 as completed.
  • albion_dps/qt/ui/Main.qml now consumes shared theme tokens for app shell and baseline styles.
  • docs/UX_MINIMAL_RELEASE_PLAN.md and docs/DELIVERY_BACKLOG.md now start Phase 1 with UXR-010 completed.
  • docs/ARCHITECTURE.md now documents centralized QML theme tokens.
  • albion_dps/qt/ui/Main.qml now centers top navigation in a width-clamped shell nav zone.
  • albion_dps/qt/ui/Main.qml now reuses ShellTabButton for shell and market tab bars.
  • docs/UX_MINIMAL_RELEASE_PLAN.md and docs/DELIVERY_BACKLOG.md now mark UXR-011 as completed.
  • albion_dps/qt/ui/Main.qml now applies shared card/table primitives with unified table row/header token usage across Meter/Scanner/Market.
  • albion_dps/qt/ui/Theme.qml now includes explicit table/header/control surface tokens for the unified Phase 1 visual system.
  • docs/UX_MINIMAL_RELEASE_PLAN.md and docs/DELIVERY_BACKLOG.md now mark UXR-012 as completed.
  • docs/ARCHITECTURE.md now documents CardPanel/TableSurface shared UI primitives.
  • albion_dps/qt/ui/Main.qml now applies compact/narrow breakpoints for shell/header/nav and market panel widths to reduce overflow on small windows.
  • albion_dps/qt/ui/Theme.qml now exposes shared breakpoint tokens for responsive layout behavior.
  • docs/TROUBLESHOOTING.md now includes compact-layout guidance for small-window table workflows.
  • docs/UX_MINIMAL_RELEASE_PLAN.md and docs/DELIVERY_BACKLOG.md now mark UXR-013 as completed.
  • docs/UX_MINIMAL_RELEASE_PLAN.md and docs/DELIVERY_BACKLOG.md now mark QA-001 as completed.
  • docs/UX_MINIMAL_RELEASE_PLAN.md and docs/DELIVERY_BACKLOG.md now mark QA-002 as completed.
  • docs/release/RELEASE_CHECKLIST.md now includes the clean-machine matrix verification command.
  • docs/UX_MINIMAL_RELEASE_PLAN.md and docs/DELIVERY_BACKLOG.md now mark QA-003 as completed.
  • docs/release/RELEASE_CHECKLIST.md now includes release-manifest/update-banner validation commands.
  • docs/ARCHITECTURE.md now documents the PH2 visual direction and token taxonomy used by UI modernization tickets.
  • docs/UX_MINIMAL_RELEASE_PLAN.md and docs/DELIVERY_BACKLOG.md now mark PH2-UXR-020 as completed.
  • albion_dps/qt/ui/Main.qml now routes button controls through shared AppButton variants for consistent visual behavior.
  • docs/UX_MINIMAL_RELEASE_PLAN.md and docs/DELIVERY_BACKLOG.md now mark PH2-UXR-021 as completed.
  • albion_dps/qt/ui/Main.qml now routes form controls through shared App* input components for consistent field styling.
  • albion_dps/qt/ui/Theme.qml now includes dedicated input tokens for background and focus border handling.
  • docs/UX_MINIMAL_RELEASE_PLAN.md and docs/DELIVERY_BACKLOG.md now mark PH2-UXR-022 as completed.
  • albion_dps/qt/ui/Main.qml now removes repeated panel fill/stroke literals and relies on shared card/table level styling.
  • docs/ARCHITECTURE.md now documents level-based panel/table primitives in the Qt UI layer.
  • docs/UX_MINIMAL_RELEASE_PLAN.md and docs/DELIVERY_BACKLOG.md now mark PH2-UXR-023 as completed.
  • albion_dps/qt/ui/Main.qml now applies refreshed table header/text hierarchy and row hover polish in Meter/Market/History.
  • docs/UX_MINIMAL_RELEASE_PLAN.md and docs/DELIVERY_BACKLOG.md now mark PH2-UXR-024 as completed.
  • albion_dps/qt/ui/Main.qml now uses a polished action-bar rhythm for update/support controls with stable banner slot behavior.
  • docs/UX_MINIMAL_RELEASE_PLAN.md and docs/DELIVERY_BACKLOG.md now mark PH2-UXR-025 as completed.
  • albion_dps/qt/ui/Main.qml now maps market status/profit/margin colors through semantic theme states instead of hardcoded hex colors.
  • docs/UX_MINIMAL_RELEASE_PLAN.md and docs/DELIVERY_BACKLOG.md now mark PH2-UXR-026 as completed.
  • albion_dps/qt/ui/Main.qml now renders explicit empty/loading/error placeholders for key list/table areas.
  • docs/TROUBLESHOOTING.md now documents placeholder behavior and recovery checks.
  • docs/UX_MINIMAL_RELEASE_PLAN.md and docs/DELIVERY_BACKLOG.md now mark PH2-UXR-027 as completed.
  • albion_dps/qt/ui/Main.qml now applies subtle row/banner transitions, and shared controls now animate press/hover state changes.
  • docs/UX_MINIMAL_RELEASE_PLAN.md and docs/DELIVERY_BACKLOG.md now mark PH2-UXR-028 as completed.
  • Shared controls now enforce keyboard focus visibility with consistent focus-ring sizing.
  • docs/TROUBLESHOOTING.md now includes keyboard focus and contrast verification guidance.
  • docs/UX_MINIMAL_RELEASE_PLAN.md and docs/DELIVERY_BACKLOG.md now mark PH2-UXR-029 as completed.
  • README.md now references PH2 baseline screenshots and includes a dedicated visual regression section.
  • docs/release/RELEASE_CHECKLIST.md now includes mandatory PH2 screenshot baseline verification before release.
  • docs/UX_MINIMAL_RELEASE_PLAN.md and docs/DELIVERY_BACKLOG.md now mark PH2-UXR-030 as completed.

[0.1.15] - 2026-02-19

Added

  • Windows bootstrap setup builder workflow and docs (tools/release/windows/build_bootstrap_setup.ps1, tools/release/windows/README.md).
  • Release runbook/checklist steps for bootstrap EXE build and clean-machine verification.

Changed

  • Windows bootstrap EXE now:
    • forces TLS 1.2+ with fallback download path,
    • uses backward-compatible installer invocation for older tags,
    • forces core install path (-SkipCaptureExtras),
    • installs to persistent %LOCALAPPDATA%\AlbionCommandDesk,
    • skips auto-run and prints explicit core/live launch commands.
  • Windows install script now auto-detects more Python locations and attempts winget install (--source winget) when Python is missing.
  • README/troubleshooting/QA/install docs aligned with the persistent bootstrap install flow and current release model.

[0.1.14] - 2026-02-13

Added

  • docs/DELIVERY_BACKLOG.md as the canonical ticket queue with execution order.
  • Changelog policy: each completed ticket must update this file.
  • Release update contract spec: docs/release/RELEASE_MANIFEST_SPEC.md.
  • Example release manifest payload: tools/release/manifest/manifest.example.json.
  • Windows bootstrap installer script: tools/install/windows/install.ps1.
  • Windows installer script documentation: tools/install/windows/README.md.
  • Linux bootstrap installer script: tools/install/linux/install.sh.
  • Linux installer script documentation: tools/install/linux/README.md.
  • macOS bootstrap installer script: tools/install/macos/install.sh.
  • macOS installer script documentation: tools/install/macos/README.md.
  • Shared install smoke check runner: tools/install/common/smoke_check.py.
  • Manifest-based update checker module: albion_dps/update/checker.py.
  • Persistent app settings store: albion_dps/settings.py.
  • Release manifest builder script: tools/release/manifest/build_manifest.py.
  • Release manifest CI workflow: .github/workflows/release-manifest.yml.
  • Release process checklist: docs/release/RELEASE_CHECKLIST.md.
  • Manifest publish helper script (Windows): tools/release/manifest/publish_manifest.ps1.
  • Clean-machine bootstrap validation workflow: .github/workflows/bootstrap-smoke.yml.
  • Windows Npcap runtime detection module: albion_dps/capture/npcap_runtime.py.
  • Branding generation script from source art: tools/branding/render_brand_from_logo.ps1.
  • Tests for Npcap runtime detection: tests/test_npcap_runtime.py.

Changed

  • README.md docs section now links to the delivery backlog and changelog.
  • README.md now includes a Release Metadata section for update/install integration.
  • README.md now includes recommended Windows bootstrap install command.
  • README.md now includes recommended Linux bootstrap install command.
  • README.md now includes recommended macOS bootstrap install command.
  • Windows/Linux/macOS bootstrap scripts now run a common post-install smoke check.
  • Qt UI now shows a non-blocking update banner when a newer release is detected.
  • Qt header now includes Auto update toggle and Check now manual trigger.
  • Update-check preference is persisted between runs.
  • docs/TROUBLESHOOTING.md now includes update-settings and config path details.
  • docs/release/RELEASE_MANIFEST_SPEC.md now includes publication workflow and build command.
  • README.md now includes an install support matrix for Windows/Linux/macOS bootstrap scripts.
  • docs/TROUBLESHOOTING.md now includes a dedicated installer/update error map.
  • docs/ARCHITECTURE.md now includes install/update delivery components.
  • README.md docs section now links docs/release/RELEASE_CHECKLIST.md.
  • README.md release-metadata section now references manifest publish helper and bootstrap smoke CI.
  • publish_manifest.ps1 now omits --min-supported-version when not provided (no manual workaround needed).
  • bootstrap-smoke.yml now runs install.ps1 directly on Windows, uses a workspace-local venv path, and installs full Qt runtime libs on Linux.
  • tools/install/windows/install.ps1 now resolves alternative python*.exe names in venvs and retries creation with --copies when needed.
  • tools/install/windows/install.ps1 now validates VenvPath defensively and logs the resolved venv path for CI diagnostics.
  • tools/install/windows/install.ps1 now handles missing venv Python without calling Test-Path on $null.
  • tools/install/windows/install.ps1 now falls back to virtualenv when python -m venv produces no usable interpreter on Windows CI.
  • tools/install/windows/install.ps1 now treats launcher commands as string arrays (not character arrays), fixing broken interpreter invocation in CI.
  • tools/install/windows/install.ps1 now prints launcher commands and exit codes to simplify bootstrap CI diagnostics.
  • tools/install/windows/install.ps1 now passes launcher command arguments correctly (-m venv, -m pip, etc.) after renaming the internal args parameter.
  • tools/install/windows/install.ps1 now supports -SkipCaptureExtras for environments without Npcap headers.
  • bootstrap-smoke.yml now uses -SkipCaptureExtras on Windows to validate installer flow without external SDK downloads.
  • run_qt now validates Windows Npcap runtime before live start, logs detected install location, and shows download link when missing.
  • Brand assets and app icon now derive from source logo art using the current Albion Command Desk branding set.
  • README hero graphic now uses assets/Logo.png.
  • tools/branding/render_brand_from_logo.ps1 now requires explicit -Source input path.
  • Update checker default endpoint now points to release asset releases/latest/download/manifest.json.
  • Qt runner now prioritizes command_desk_icon.ico on Windows and logs icon source path at startup.

[0.1.0] - 2026-02-11

Added

  • Initial public release of Albion Command Desk (Qt UI).
  • DPS/HPS meter with live capture and replay support.
  • Party-aware combat filtering and battle history.
  • Scanner helper integration and market workspace.