All notable changes to this project are documented in this file.
Format follows Keep a Changelog, and this project uses semantic versioning.
- 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.
- 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 likeT6_METALBAR_LEVEL2@2andT6_PLANKS_LEVEL2@2.
- 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
429rate 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@Ncan 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.
- 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.
- 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.
- 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.QtGuiduring test collection, fixing Ubuntu CI environments withoutlibEGL.so.1.
- Loot source classification no longer puts imported
Loot Chestrows under player-corpse summaries when newer logs containsource_kind=system. - Shoes and other armor item IDs are categorized before resource-token matching, preventing armor rows from appearing as resources.
- 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.
- Windows installs now reconcile late
Npcap Runtimesetup after the app is already installed: Start/runtime status explains that live capture is ready, offers a one-clickSwitch shortcuts to liveaction, and exposes the exact...exe livecommand without requiring reinstall.
- Windows bootstrap shortcuts now prefer
liveautomatically whenNpcap Runtimeis installed and the bundled Windows capture backend is available, so clean-machine installs no longer default tocoreafter a successful live-capable setup.
- 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-backendasset kind.
- 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
Copyvisible 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.
- 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_iddata for diagnostics, while UI-facing entries aggregate by player name to avoid duplicate names in one fight.
- 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.
- Installer defaults were switched to
captureon Windows/Linux/macOS bootstrap scripts, with automatic fallback tocorewhen capture prerequisites are missing. - Windows bootstrap EXE now runs
install.ps1without forcing-Profile core, so release installs follow the same default capture-first path. - Bootstrap auto-run now starts
coremode consistently after install and prints explicitlivecommand 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.
- Scanner tab now shows Git prerequisite diagnostics with direct install guidance/action when
gitis missing. - Meter tab now surfaces capture-runtime readiness (missing/blocked) so live mode requirements are visible without switching tabs.
- 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 coreand 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.
- 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. coreGUI runtime command inalbion_dps/cli.pyfor non-capture startup.- Install profile contract in
pyproject.toml(coredefault,captureoptional). - 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.qmlwith semantic variants and state handling. - Reusable form control primitives:
AppTextField.qml,AppComboBox.qml,AppSpinBox.qml, andAppCheckBox.qml. - Level-driven panel primitives in
CardPanel.qmlandTableSurface.qmlfor cleaner card hierarchy. - Expanded table typography/separator tokens in
Theme.qmlfor Meter/Market/History readability. - Shell header action tokens in
Theme.qmlfor unified action-bar dimensions and banner styling. - Semantic data-color helpers in
Main.qmlfor signed values, validation, and price-source freshness. - Empty/loading placeholder states across Meter/History/Scanner/Market views.
- Tokenized motion timings in
Theme.qmlfor consistent micro-interactions. - Accessibility focus token (
focusRingWidth) and higher-contrast secondary text tokens inTheme.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.pyto enforce preferred per-OS asset ordering and metadata contract checks. - Update-banner repeat suppression tests in
tests/test_qt_update_banner.pyand installer-link verification intools/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.
albion_dps/qt/ui/AppButton.qmlno longer mutatescheckedinternally 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 Feeslabel/value inMarketSetupPanel.qmlwas 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.ps1now probes common Python install paths and attemptswingetauto-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.ps1with only-ProjectRoot(backward-compatible with older tags that do not support-Profile/-ReleaseVersion). - Windows bootstrap EXE now also passes
-SkipCaptureExtrasso 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-SkipRunto 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
coremode. - Fixed Windows bootstrap shortcut creation command escaping (PowerShell variable tokens are now preserved correctly, no
.Save()parser error). - Progress log in
docs/DELIVERY_BACKLOG.mdnow tracks Phase 0 kickoff state. docs/UX_MINIMAL_RELEASE_PLAN.mdmarksUXR-001as completed and documents delivery notes.docs/ARCHITECTURE.mdnow defines the frozen Phase 0 Qt shell layout contract.albion_dps/qt/ui/Main.qmlnow uses explicit shell zone IDs and fixed ordering for header actions.albion_dps/qt/runner.pynow supportscoremode startup without capture backend.- Windows/Linux/macOS bootstrap installers now share
core|captureprofile selection. - Installer docs and root README now document profile-based install flow.
docs/TROUBLESHOOTING.mdnow includes profile-based recovery commands.docs/release/RELEASE_CHECKLIST.mdnow locks Phase 0 packaging targets and blocker/warning release gates..github/workflows/bootstrap-smoke.ymlnow maps mandatory core checks and advisory capture checks per OS..github/workflows/release-manifest.ymlnow validates manifest assets against Phase 0 release strategy.docs/release/RELEASE_MANIFEST_SPEC.mdnow documents manifest blocker/warning policy.docs/release/RELEASE_CHECKLIST.mdnow defines deterministic cross-platform artifact naming and primary/secondary release matrix entries.docs/release/RELEASE_MANIFEST_SPEC.mdnow defines preferred per-OS asset ordering and first-match client selection behavior.tools/install/windows/install.ps1,tools/install/linux/install.sh, andtools/install/macos/install.shnow 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.pynow handles blocked/unknown runtime states inlivemode without hard crashes and logs explicit recovery actions.albion_dps/qt/runner.pynow falls back tocoremode when capture prerequisites are missing/blocked or no interfaces are available, instead of aborting app startup.tools/release/manifest/build_manifest.pynow 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.pynow resolves the preferred per-OS download asset and exposes separatedownload_urlandnotes_urlvalues.- Qt update banner now uses installer-first
InstallCTA +Notesaction, and dismissed versions stay hidden until a newer version is available. .github/workflows/bootstrap-smoke.ymlnow 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.pynow supports structured JSON report output for CI artifact capture.tools/qa/verify_clean_machine_matrix.pynow validates required evidence artifacts in addition to required job conclusions.docs/release/RELEASE_CHECKLIST.md,docs/release/RELEASE_MANIFEST_SPEC.md, andREADME.mdnow include the LKG pointer + one-command rollback flow..github/workflows/release-manifest.ymlnow uses shared manifest strategy validation logic (no duplicated policy in workflow script).tools/release/manifest/manifest.example.jsonnow follows canonical artifact naming matrix (installer/AppImage/DMG + bootstrap scripts).tests/test_release_manifest_contract.pynow validates URL/checksum/size fields and enforces preferred first-asset ordering per OS.docs/release/RELEASE_MANIFEST_SPEC.mdnow allowsarch=universalfor macOS universal artifacts.docs/UX_MINIMAL_RELEASE_PLAN.mdanddocs/DELIVERY_BACKLOG.mdnow markREL-002as completed.albion_dps/qt/ui/Main.qmlnow consumes shared theme tokens for app shell and baseline styles.docs/UX_MINIMAL_RELEASE_PLAN.mdanddocs/DELIVERY_BACKLOG.mdnow start Phase 1 withUXR-010completed.docs/ARCHITECTURE.mdnow documents centralized QML theme tokens.albion_dps/qt/ui/Main.qmlnow centers top navigation in a width-clamped shell nav zone.albion_dps/qt/ui/Main.qmlnow reusesShellTabButtonfor shell and market tab bars.docs/UX_MINIMAL_RELEASE_PLAN.mdanddocs/DELIVERY_BACKLOG.mdnow markUXR-011as completed.albion_dps/qt/ui/Main.qmlnow applies shared card/table primitives with unified table row/header token usage across Meter/Scanner/Market.albion_dps/qt/ui/Theme.qmlnow includes explicit table/header/control surface tokens for the unified Phase 1 visual system.docs/UX_MINIMAL_RELEASE_PLAN.mdanddocs/DELIVERY_BACKLOG.mdnow markUXR-012as completed.docs/ARCHITECTURE.mdnow documentsCardPanel/TableSurfaceshared UI primitives.albion_dps/qt/ui/Main.qmlnow applies compact/narrow breakpoints for shell/header/nav and market panel widths to reduce overflow on small windows.albion_dps/qt/ui/Theme.qmlnow exposes shared breakpoint tokens for responsive layout behavior.docs/TROUBLESHOOTING.mdnow includes compact-layout guidance for small-window table workflows.docs/UX_MINIMAL_RELEASE_PLAN.mdanddocs/DELIVERY_BACKLOG.mdnow markUXR-013as completed.docs/UX_MINIMAL_RELEASE_PLAN.mdanddocs/DELIVERY_BACKLOG.mdnow markQA-001as completed.docs/UX_MINIMAL_RELEASE_PLAN.mdanddocs/DELIVERY_BACKLOG.mdnow markQA-002as completed.docs/release/RELEASE_CHECKLIST.mdnow includes the clean-machine matrix verification command.docs/UX_MINIMAL_RELEASE_PLAN.mdanddocs/DELIVERY_BACKLOG.mdnow markQA-003as completed.docs/release/RELEASE_CHECKLIST.mdnow includes release-manifest/update-banner validation commands.docs/ARCHITECTURE.mdnow documents the PH2 visual direction and token taxonomy used by UI modernization tickets.docs/UX_MINIMAL_RELEASE_PLAN.mdanddocs/DELIVERY_BACKLOG.mdnow markPH2-UXR-020as completed.albion_dps/qt/ui/Main.qmlnow routes button controls through sharedAppButtonvariants for consistent visual behavior.docs/UX_MINIMAL_RELEASE_PLAN.mdanddocs/DELIVERY_BACKLOG.mdnow markPH2-UXR-021as completed.albion_dps/qt/ui/Main.qmlnow routes form controls through shared App* input components for consistent field styling.albion_dps/qt/ui/Theme.qmlnow includes dedicated input tokens for background and focus border handling.docs/UX_MINIMAL_RELEASE_PLAN.mdanddocs/DELIVERY_BACKLOG.mdnow markPH2-UXR-022as completed.albion_dps/qt/ui/Main.qmlnow removes repeated panel fill/stroke literals and relies on shared card/table level styling.docs/ARCHITECTURE.mdnow documents level-based panel/table primitives in the Qt UI layer.docs/UX_MINIMAL_RELEASE_PLAN.mdanddocs/DELIVERY_BACKLOG.mdnow markPH2-UXR-023as completed.albion_dps/qt/ui/Main.qmlnow applies refreshed table header/text hierarchy and row hover polish in Meter/Market/History.docs/UX_MINIMAL_RELEASE_PLAN.mdanddocs/DELIVERY_BACKLOG.mdnow markPH2-UXR-024as completed.albion_dps/qt/ui/Main.qmlnow uses a polished action-bar rhythm for update/support controls with stable banner slot behavior.docs/UX_MINIMAL_RELEASE_PLAN.mdanddocs/DELIVERY_BACKLOG.mdnow markPH2-UXR-025as completed.albion_dps/qt/ui/Main.qmlnow maps market status/profit/margin colors through semantic theme states instead of hardcoded hex colors.docs/UX_MINIMAL_RELEASE_PLAN.mdanddocs/DELIVERY_BACKLOG.mdnow markPH2-UXR-026as completed.albion_dps/qt/ui/Main.qmlnow renders explicit empty/loading/error placeholders for key list/table areas.docs/TROUBLESHOOTING.mdnow documents placeholder behavior and recovery checks.docs/UX_MINIMAL_RELEASE_PLAN.mdanddocs/DELIVERY_BACKLOG.mdnow markPH2-UXR-027as completed.albion_dps/qt/ui/Main.qmlnow applies subtle row/banner transitions, and shared controls now animate press/hover state changes.docs/UX_MINIMAL_RELEASE_PLAN.mdanddocs/DELIVERY_BACKLOG.mdnow markPH2-UXR-028as completed.- Shared controls now enforce keyboard focus visibility with consistent focus-ring sizing.
docs/TROUBLESHOOTING.mdnow includes keyboard focus and contrast verification guidance.docs/UX_MINIMAL_RELEASE_PLAN.mdanddocs/DELIVERY_BACKLOG.mdnow markPH2-UXR-029as completed.README.mdnow references PH2 baseline screenshots and includes a dedicated visual regression section.docs/release/RELEASE_CHECKLIST.mdnow includes mandatory PH2 screenshot baseline verification before release.docs/UX_MINIMAL_RELEASE_PLAN.mdanddocs/DELIVERY_BACKLOG.mdnow markPH2-UXR-030as completed.
- 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.
- 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/livelaunch commands.
- Windows install script now auto-detects more Python locations and attempts
wingetinstall (--source winget) when Python is missing. - README/troubleshooting/QA/install docs aligned with the persistent bootstrap install flow and current release model.
docs/DELIVERY_BACKLOG.mdas 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.
README.mddocs section now links to the delivery backlog and changelog.README.mdnow includes a Release Metadata section for update/install integration.README.mdnow includes recommended Windows bootstrap install command.README.mdnow includes recommended Linux bootstrap install command.README.mdnow 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 updatetoggle andCheck nowmanual trigger. - Update-check preference is persisted between runs.
docs/TROUBLESHOOTING.mdnow includes update-settings and config path details.docs/release/RELEASE_MANIFEST_SPEC.mdnow includes publication workflow and build command.README.mdnow includes an install support matrix for Windows/Linux/macOS bootstrap scripts.docs/TROUBLESHOOTING.mdnow includes a dedicated installer/update error map.docs/ARCHITECTURE.mdnow includes install/update delivery components.README.mddocs section now linksdocs/release/RELEASE_CHECKLIST.md.README.mdrelease-metadata section now references manifest publish helper and bootstrap smoke CI.publish_manifest.ps1now omits--min-supported-versionwhen not provided (no manual workaround needed).bootstrap-smoke.ymlnow runsinstall.ps1directly on Windows, uses a workspace-local venv path, and installs full Qt runtime libs on Linux.tools/install/windows/install.ps1now resolves alternativepython*.exenames in venvs and retries creation with--copieswhen needed.tools/install/windows/install.ps1now validatesVenvPathdefensively and logs the resolved venv path for CI diagnostics.tools/install/windows/install.ps1now handles missing venv Python without callingTest-Pathon$null.tools/install/windows/install.ps1now falls back tovirtualenvwhenpython -m venvproduces no usable interpreter on Windows CI.tools/install/windows/install.ps1now treats launcher commands as string arrays (not character arrays), fixing broken interpreter invocation in CI.tools/install/windows/install.ps1now prints launcher commands and exit codes to simplify bootstrap CI diagnostics.tools/install/windows/install.ps1now passes launcher command arguments correctly (-m venv,-m pip, etc.) after renaming the internal args parameter.tools/install/windows/install.ps1now supports-SkipCaptureExtrasfor environments without Npcap headers.bootstrap-smoke.ymlnow uses-SkipCaptureExtrason Windows to validate installer flow without external SDK downloads.run_qtnow validates Windows Npcap runtime beforelivestart, 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.ps1now requires explicit-Sourceinput path.- Update checker default endpoint now points to release asset
releases/latest/download/manifest.json. - Qt runner now prioritizes
command_desk_icon.icoon Windows and logs icon source path at startup.
- 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.