Skip to content

v0.5.0

Choose a tag to compare

@github-actions github-actions released this 01 Oct 12:11
· 160 commits to master since this release
0497559
  • Player-facing text now calls set profiles "ratings". The desktop status
    banner and Settings, the TUI, plain watch and the README use the new word.
    Code, URLs, manifest keys, cache paths and CLI commands keep "profile".
    (#820)

  • Add Reality Fracture (FRA) card data and early Premier, Traditional and
    Pick-Two profiles. Scryfall has no Arena ids for FRA yet, so this one-time
    export takes the 280 FRA Arena ids from 17Lands ratings and matches them to
    Scryfall prints by name. The 10 Special Guests cards are left out, as in
    other sets, and so are basic lands, because 17Lands does not rate them. The
    daily refresh keeps this file until it is invalid, so a later re-export
    with Scryfall's own ids is a manual step.

  • The README, PRD, website and Store listing now describe Quick, Premier,
    Traditional and Pick-Two drafts instead of Quick Draft only. The README has a
    format table and names the limits of human drafts, including that Traditional
    drafting has no real Arena log sample yet. The log-format document covers
    format detection from event metadata, the 1-based human-draft coordinates,
    picks with one or two cards and the UTC_Log thread prefix. Pick scoring and
    audit documents explain the ratings fallback table and how a Pick-Two pick
    counts against the recommendation. The package, Windows app and
    draftomen-tui --help descriptions now read "draft assistant". A new rule
    in AGENTS.md and the README forbids committing or publishing raw Arena
    logs, anonymised third-party samples or player-identifying data. (#264)

  • A human draft whose log skips a pick submission now saves Arena's full
    CardPool from DraftCompleteDraft as its pool, so a Pick-Two draft with
    one missing request keeps all 42 cards instead of 40. The missing pick stays
    empty. The pool updates when the CardPool arrives after the draft already
    completed, and replay and plain watch print a second "Draft complete" line
    that counts the added cards. A CardPool that lacks a recorded card leaves
    the saved pool unchanged and logs a warning. (#800)

  • Mocked Draft can run a Pick-Two draft with a 4-seat pod and two cards per
    pick, chosen separately from Manual and Auto. The Mocked Draft dialog has a
    Format selector, and a manual Pick-Two pick stages the first card before
    the second press submits both. Quick Draft keeps its 8-seat
    pod and one card per pick. The test-draft command takes --format quick
    or --format pick_two, and a Pick-Two trace line lists both cards. Premier
    and Traditional are not offered, because bots would only relabel a Quick
    Draft. (#658)

  • Premier, Traditional and Pick-Two drafts are supported end to end, checked
    on real Arena logs in plain watch, the TUI and the desktop app. The parser
    now reads the "Entering table draft queue" scene line, for example
    MSH_Premier_Draft or HOB_PickTwo_Draft, as the draft event when a log
    has no EventJoin line. An EventJoin for the same set and format keeps
    its dated event name. scripts/verify_real_logs.py prints the format,
    packs, logical picks, cards, gaps and completion of each local private log
    without card IDs or UUIDs. (#779)

  • Add hand-written synthetic fixtures for a complete Premier, Traditional and
    Pick-Two draft, each running from ingestion to plain watch and replay
    output. Pick-Two ends with 21 logical picks and 42 cards, the one-card
    formats with 42 picks and 42 cards. Tests derive the variants from these
    fixtures: thread prefix, missing first notify, missing submission, failed
    pick response, repeated notify, truncated last line, and completion with
    and without DraftCompleteDraft. (#778)

  • The desktop live view names the detected draft format and shows pack and
    pick progress from the draft rules, for example "Pack 1 of 3 · Pick 4 of 7 ·
    take 2 cards" in Pick-Two. The recent picks gallery lists every card of a
    logical pick. The pre-draft view and the waiting status no longer mention
    Quick Draft: they read "Ready for your next draft" and "Waiting for a
    draft.", and name the format once it is known. (#777)

  • The desktop GUI adapter state gains a draft_progress block with the draft
    format name, pack and pick coordinates, and the pack count, picks per pack
    and cards per pick from the active rules. An unknown format publishes a
    neutral block with every value empty. The pool gains
    recent_logical_picks, which groups recent picks by logical pick so a
    Pick-Two pick lists both cards. Existing state keys are unchanged. (#776)

  • The TUI names the detected draft format in the waiting title, the detected
    title, and the status bar, and opens with a neutral "Waiting for a draft"
    state. The pack title shows progress from the draft rules, for example "Pack
    1 of 3, Pick 4 of 7, take 2 cards" in Pick-Two. The pool summary shows the
    last pick with every card, and Pick-Two pool counts read "8 cards from 4
    picks". Quick Draft counts stay unchanged. (#775)

  • watch --plain names the draft format in each pick status line and shows
    pack and pick progress from the draft rules, for example "Pack 1 of 3, Pick
    4 of 7, take 2 cards" in Pick-Two. A Pick-Two pick prints both cards on one
    "Chosen cards" line. Watch opens with a neutral "Waiting for a draft." line,
    and a Quick Draft start adds a format summary line. (#774)

  • Backtest uses the draft rules for logical pick counts and scores Pick-Two
    selections against the top recommendation. Reports show both selected cards,
    and scoring keeps the saved pool before each pick. Quick Draft output stays
    unchanged. (#773)

  • Replay names the draft format and uses its rules for pick counts. Pick-Two
    selections keep both cards at one coordinate. Audit records include the
    format and count how many of the top two cards in the active ranking were
    selected. Quick replay intentionally gains a format header. (#772)

  • Live draft progress and pool ledger totals follow the active draft rules.
    Pick-Two records 21 logical picks and 42 cards, and pending recovery keeps
    its format, coordinates and selected cards. Mocked Draft keeps its 13 or 15
    picks per pack. (#771)

  • Live Premier, Traditional and Pick-Two drafts load card data on the first
    offered pack, so recommendations and watch --plain scored rows appear
    without a restart. The load permits networking as Quick Draft detection
    does, then later packs and retries use local data only. (#801)

  • The live session now loads set profiles and ratings for the detected draft
    format instead of always asking for QuickDraft. Quick uses QuickDraft,
    Premier uses PremierDraft, Traditional tries TradDraft then
    PremierDraft, and Pick-Two tries PickTwoDraft then PremierDraft. The
    local cache and the hosted refresh both follow that order, and an exact
    profile replaces a fallback one when it appears. Snapshots expose the
    detected format, and the contextual evidence status reports a fallback.
    Rating labels name the format that supplied the rating, such as Trad, and
    add * to a fallback, such as Premier*, so Quick Draft cards now read
    Quick instead of Profile. An augmented model is used only when it was
    trained on the draft's own format or on PremierDraft; otherwise Augmented
    Intelligence reports it as unavailable for that format. (#770)

  • The log parser now reads human-draft picks and completion for Premier,
    Traditional and Pick-Two drafts. Each successful EventPlayerDraftMakePick
    request becomes one pick with 0-based pack and pick numbers, holding one card
    or two for Pick-Two. A rejected pick is dropped, and a repeated request or
    response counts once. A pick with no logged response is still recorded. The
    draft completes once, from the last pick response or from DraftCompleteDraft,
    with the picks the parser recorded. A missing pick stays a gap. The card pool
    Arena reports is only compared with those picks, and a mismatch writes a
    warning to the log. Human-draft packs now carry the pool picked so far, so
    the pool store accepts them. Malformed or unknown human-draft lines are
    ignored. (#259)

  • Live Draft keeps the two-column layout on laptop screens such as 1352x799.
    The card details column shrinks from 550 px to 350 px before the view
    switches to stacked tabs, and the card preview gives up height before the
    pool summary, so the whole mana curve stays visible. Windows narrower than
    about 1240 px or shorter than about 770 px still use stacked tabs. (#242)

  • Errors the live session shows, such as a failed ratings or card data
    download, a failed deck build or a failed backtest, are now written to
    ~/.draftomen/logs/draftomen.log with their code, id and message. Each error
    is logged once when it first appears. Recoverable errors log at WARNING and
    others at ERROR. (#796)

  • Settings has a Troubleshooting card with an "Open logs folder" button. It
    creates ~/.draftomen/logs if it is missing and opens it in the file
    manager. If the folder cannot be opened, Settings shows the folder path in
    an error message. The README now has a Troubleshooting section that lists
    the files to attach to a bug report and where they live on macOS and
    Windows. (#792)

  • Draft Omen now writes a rotating application log to
    ~/.draftomen/logs/draftomen.log. The desktop app and draftomen-tui share
    the file. Each run starts with a line holding the app version, the OS and
    the Python version. The log records unhandled exceptions from the main
    thread and worker threads with their tracebacks, Qt warnings, and the errors
    the desktop app also prints to stderr. The file rotates at 1 MB and keeps
    three older files. If the logs folder cannot be created, the app still
    starts and prints the reason to stderr. The log never copies Player.log
    lines. (#791)

  • The draft audit log now records multi-card picks. choice_made records
    store a selected_grp_ids list in place of chosen_grp_id, and the audit
    schema moves to version 2. recommendation_followed is true when the
    recommended card is one of the selected cards. Existing schema 1 logs stay
    readable without being rewritten, and a rescan does not duplicate their
    choices. docs/draft-audit-log.md describes the schema 2 record. (#783)

  • Windows releases now ship only through the Microsoft Store. Stable GitHub
    Releases and the rolling development prerelease no longer publish the
    unsigned Windows .exe, and their checksum files list only the macOS DMGs.
    The Windows job still builds and smoke-tests the executable and the MSIX,
    and uploads both as Actions artifacts for testing and Store submission. The
    README, release guide, desktop bundle guide and release skills now point
    Windows users to the Store listing. docs/microsoft-store.md adds a table
    for the manual install and update check on a Windows 11 device. (#330)

  • docs/microsoft-store.md now explains how to publish each release to the
    Microsoft Store by hand in Partner Center. Store updates stay manual because
    the Store Developer CLI needs a Microsoft Entra tenant, and Microsoft's
    tenant sign-up does not finish without a payment card. (#329)

  • The website's Windows button now opens the Microsoft Store listing in place
    of the unsigned .exe release asset, and the install note says Windows
    installs come from the Store. The home page shows one button per platform:
    macOS for Apple Silicon and Windows for the Store. The Intel macOS build
    moves to a text link below the buttons. The release output check fails if
    the Windows button points anywhere else or if any page links to a .exe.
    (#761)

  • Draft Omen 0.4.2 is live in the Microsoft Store:
    https://apps.microsoft.com/detail/9NPCD3VLZQMX. docs/microsoft-store.md
    records the published package, its checksum and the certification history.
    (#328)

  • Draft state files now store each pick's cards as a selected_grp_ids list,
    so a Pick-Two pick keeps both cards at one pack/pick coordinate and adds both
    to the pool once. The state schema moves to version 2. Version 1 files load
    through a migration and are saved as version 2 on the next change. Replaying
    the same pick is a no-op, and a different selection at the same coordinate
    raises the existing conflict error. DraftState gains selected_card_count
    beside the logical chosen_pick_count. Backtest reports skip multi-card
    picks with the reason multi-card pick. Quick Draft output is unchanged.
    (#769)

  • PickMadeEvent now carries selected_grp_ids, a non-empty tuple of Arena
    grpIds, in place of chosen_grp_id, so one event can describe a Pick-Two
    pick. The Quick Draft parser and the Mocked Draft adapter emit a one-card
    tuple. The pool state still stores one card per pick and raises an error for
    a pick with more cards. Quick Draft replay, audit and backtest output is
    unchanged. (#768)

  • The log parser now reads human drafts. A new draftomen/draft_format.py
    defines the pack rules for Quick, Premier, Traditional and Pick-Two drafts and
    maps the QuickDraft_, PremierDraft_, TradDraft_, PickTwoDraft_ and
    PickTwoTradDraft_ event prefixes to them, longest prefix first. Draft.Notify
    lines become pack-offered events with 0-based coordinates, and a notify that
    Arena logs twice yields one event. A draft that starts at pack 1 pick 2 works.
    Unknown event prefixes and malformed notify lines are ignored. Lines that
    start with a [<thread>] prefix, as in Arena's rotated UTC_Log files,
    parse like the plain lines. Quick and Mocked Draft parsing is unchanged. (#261)

  • Ruff now lints Python code with the F, E4, E7 and E9 rules. A
    pre-commit hook runs ruff check on staged files, and the nox ci session
    runs it on the whole repository. The 36 existing findings are fixed. Three
    tests that had lost their final assertions check their results again. (#750)

  • draftomen-tui build-augmented-set now reports progress while it checks the
    rows of the draft and game dumps. It prints a line at most every 10% of the
    file read or every 5 seconds, with the rows checked so far, and a final line
    with the total rows. A dump reused from the input cache shows the same
    lines. (#753)

  • Manual native bundle builds now keep Nuitka's cache between runs, keyed by
    runner OS, architecture, Python version, Nuitka version and uv.lock. The
    macOS jobs install ccache, and the Windows job uses Nuitka's clcache.
    Tag release builds skip the cache and always compile from scratch. (#736)

  • The MSIX package now holds a Nuitka standalone build, with DraftOmen.exe
    next to its DLLs, instead of the onefile executable. Antivirus engines,
    including the Microsoft Store malware scan, flagged the onefile build.
    (#764)