Repository navigation
v0.5.0
-
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 theUTC_Logthread 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 --helpdescriptions now read "draft assistant". A new rule
inAGENTS.mdand 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
CardPoolfromDraftCompleteDraftas 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 theCardPoolarrives after the draft already
completed, and replay and plain watch print a second "Draft complete" line
that counts the added cards. ACardPoolthat 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. Thetest-draftcommand 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_DraftorHOB_PickTwo_Draft, as the draft event when a log
has noEventJoinline. AnEventJoinfor the same set and format keeps
its dated event name.scripts/verify_real_logs.pyprints 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 withoutDraftCompleteDraft. (#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_progressblock 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 --plainnames 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 andwatch --plainscored 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 usesQuickDraft,
Premier usesPremierDraft, Traditional triesTradDraftthen
PremierDraft, and Pick-Two triesPickTwoDraftthenPremierDraft. 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 asTrad, and
add*to a fallback, such asPremier*, so Quick Draft cards now read
Quickinstead ofProfile. 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 successfulEventPlayerDraftMakePick
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 fromDraftCompleteDraft,
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.logwith 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/logsif 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 anddraftomen-tuishare
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 copiesPlayer.log
lines. (#791) -
The draft audit log now records multi-card picks.
choice_maderecords
store aselected_grp_idslist in place ofchosen_grp_id, and the audit
schema moves to version 2.recommendation_followedis 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.mddescribes 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.mdadds a table
for the manual install and update check on a Windows 11 device. (#330) -
docs/microsoft-store.mdnow 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.exerelease 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_idslist,
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.DraftStategainsselected_card_count
beside the logicalchosen_pick_count. Backtest reports skip multi-card
picks with the reasonmulti-card pick. Quick Draft output is unchanged.
(#769) -
PickMadeEventnow carriesselected_grp_ids, a non-empty tuple of Arena
grpIds, in place ofchosen_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 theQuickDraft_,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 rotatedUTC_Logfiles,
parse like the plain lines. Quick and Mocked Draft parsing is unchanged. (#261) -
Ruff now lints Python code with the
F,E4,E7andE9rules. A
pre-commit hook runsruff checkon staged files, and the noxcisession
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-setnow 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 anduv.lock. The
macOS jobs installccache, and the Windows job uses Nuitka'sclcache.
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)