Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
236 check-ins using file build_MTGProxyPrinter_packages.bat version 5d769b4af5
|
2026-07-16
| ||
| 17:26 | Database schema: Fix MTGSet set_preference_score trigger after column rename in [ce19f079ebd8f62c] Leaf check-in: 159f2687bf user: thomas tags: set_preference_score | |
|
2026-07-15
| ||
| 17:52 | Extend MTGSet for fields for release date, is_hidden field, preference score field and the optional parent set code. check-in: 287219c47a user: thomas tags: set_preference_score | |
|
2026-07-14
| ||
| 21:27 | Fixed a few linter warnings check-in: a90b7a607f user: thomas tags: set_preference_score | |
| 21:08 | Fixed accidental copy&paste issue check-in: 12500b0fb6 user: thomas tags: set_preference_score | |
| 18:20 | Tests: Fixed most linter warnings in tests/model/test_carddb.py check-in: 1f9417632b user: thomas tags: set_preference_score | |
| 18:19 | CardDatabase: Rename MTGSet preference weight column to avoid a name collision check-in: ce19f079eb user: thomas tags: set_preference_score | |
| 18:00 | MTGSetTreeModel: Improve createIndex() annotation. check-in: 96607cd33e user: thomas tags: set_preference_score | |
| 18:00 | CardDatabase: Fix or suppress all linter warnings check-in: 7f2b90e6e2 user: thomas tags: set_preference_score | |
| 16:00 | Add WIP Qt model class MTGSetTreeModel. It can hold a tree of MTG sets, and is intended to hold regular sets as root nodes and associated child sets, like the token set or promo cards set, as child nodes. Model depth is at most 2 layers, as child sets cannot have further children. Editing via setData() is not yet implemented. check-in: fad4cc5442 user: thomas tags: set_preference_score | |
| 15:03 | PrintingPreferencePage: Add stub _get_new_set_weights() check-in: 11032f4fd5 user: thomas tags: set_preference_score | |
| 14:48 | CardDatabase: Add parent/child relation to the CardDatabase MTGSet table schema check-in: 1571843dd1 user: thomas tags: set_preference_score | |
|
2026-07-13
| ||
| 13:24 | PrintingPreferenceUpdater: Add ability to update MTGSet preference weights check-in: 4122225f36 user: thomas tags: set_preference_score | |
|
2026-07-12
| ||
| 14:16 | CardDatabase: Add MTGSet.printing_preference_weight column. Add Trigger to automatically adjust Printing.preference_score. This will be used for setting a per-set preference score. The set hiding logic will be amended with new syntax <set_code>:<weight> to support setting the score via user interface. check-in: fd2101dfa3 user: thomas tags: set_preference_score | |
|
2026-07-08
| ||
| 20:02 | SetIconImportTask: Strip the cache key from file names. It refreshes daily, enforcing daily re-downloads. Just perform the update based on the base file name alone. Leaf check-in: f7388ec8fd user: thomas tags: trunk | |
| 19:09 | FileDownloadTask: Made task cancelable. check-in: 18f4a5f87b user: thomas tags: trunk | |
| 18:57 | VerticalAddCardWidget: Set top and bottom layout margins to zero. This visually aligns the top and bottom with the left and right columns. Bottom icons are no longer on different heights check-in: 4c846ca6e2 user: thomas tags: trunk | |
| 16:47 | Add "Delete cards" action to the PageCardTableView context menu. Users expect it to be there, so it was finally added. check-in: 669f345562 user: thomas tags: trunk | |
|
2026-07-05
| ||
| 16:59 | Changelog: Fixed release dates check-in: 627f5996f8 user: thomas tags: trunk | |
| 16:57 | Changelog: Add missing entry for 0.35.2 check-in: b3b326a0a7 user: thomas tags: trunk | |
| 16:51 | Case insensitive card name search, plus a few other minor improvements check-in: 5d451e2bc2 user: thomas tags: trunk | |
| 16:50 | Implement case-insensitive card search by leveraging the filtering capabilities provided by Qt. Removed the manual filtering capabilities of the CardDatabase. Closed-Leaf check-in: 9642b89db7 user: thomas tags: refactor_card_database_schema | |
| 15:43 | Fixed SegmentationFault in the test suite Closed-Leaf check-in: 4b2e711489 user: thomas tags: case_insensitive_card_search | |
| 15:34 | Fixed failing tests for the AddCardWidget check-in: 2ee7f68083 user: thomas tags: case_insensitive_card_search | |
|
2026-06-13
| ||
| 17:57 | Update changelog to reflect the new case-insensitive behavior check-in: fd1b1afa62 user: thomas tags: case_insensitive_card_search | |
| 17:57 | CardDatabase: Removed obsolete filter parameter for get_card_names() and find_sets_matching(). check-in: c7117923ab user: thomas tags: case_insensitive_card_search | |
| 17:15 | Also use Qt-based filtering for MTG sets for consistency. check-in: 47162fca1d user: thomas tags: case_insensitive_card_search | |
| 00:01 | AddCardWidget: Implement card name filtering using a QSortFilterProxyModel, instead of a database query per key stroke. Filtering is now performed by Qt code. It is case insensitive, and a bit more lax than before, because it now matches if the search term is contained in any name, instead of a prefix match. check-in: e09e9802a8 user: thomas tags: case_insensitive_card_search | |
|
2026-06-03
| ||
| 15:35 | ImageDatabase: Update to schema version 4: Create directories for custom image overrides. check-in: 61eaabaa96 user: thomas tags: trunk | |
| 13:08 | Fixed an outdated docstring check-in: 4de5b4785e user: thomas tags: refactor_card_database_schema | |
|
2026-05-29
| ||
| 14:10 | Import fixes from trunk check-in: 7b26d09e30 user: thomas tags: refactor_card_database_schema | |
| 14:03 | 4 Python 3.11 compatibility fixes check-in: f9d25acf1e user: thomas tags: trunk | |
| 12:15 | Fix linter warnings check-in: 0a774b76ac user: thomas tags: trunk | |
|
2026-05-28
| ||
| 13:44 | Fixed PrintingFilterUpdater trying to insert None values into a NOT NULL column. check-in: c3d88208b5 user: thomas tags: trunk | |
|
2026-05-20
| ||
| 11:15 | CardDatabase: Add required database indices to speed up card name translation check-in: 7fb5adf562 user: thomas tags: trunk | |
| 11:14 | Fix linter warnings check-in: 8e75d00248 user: thomas tags: trunk | |
|
2026-05-15
| ||
| 12:38 | Fix issues introduced by the last merge. Actually use the preference score in CardDatabase queries. Completes [710580ea6bda1973]. check-in: 8878dea68f user: thomas tags: trunk | |
| 12:37 | CardDatabase: Implement choosing printings by their preference score by updating the relevant database queries to sort by the score. check-in: 0011d36715 user: thomas tags: refactor_card_database_schema | |
| 12:07 | PrintingFilterPage: Fix highlighting changed settings. check-in: 88aca07cf4 user: thomas tags: refactor_card_database_schema | |
| 12:06 | Update shellscript shebangs to not hard-code the bash installation bath check-in: db71f3d6a0 user: thomas tags: refactor_card_database_schema | |
|
2026-05-13
| ||
| 14:07 | Merge fork check-in: e4b1272e50 user: thomas tags: trunk | |
| 13:29 | Fixed typo on the GeneralSettingsPage check-in: f12e062f44 user: thomas tags: trunk | |
| 12:02 | Settings: Add disambiguations to all translatable strings. check-in: b9274b280c user: thomas tags: refactor_card_database_schema | |
| 11:44 | Rename HidePrintingsPage to PrintingPreferencesPage. check-in: e39e8b1dfd user: thomas tags: refactor_card_database_schema | |
| 11:36 | PrintingFilterUpdater: Populate PrintingFilter.printing_preference_weight with the default values stored in settings.CARD_FILTER_DEFAULT_WEIGHTS dict. check-in: 389377a5dd user: thomas tags: refactor_card_database_schema | |
| 09:17 | Merge with trunk check-in: f20330ecc7 user: thomas tags: refactor_card_database_schema | |
|
2026-05-12
| ||
| 21:30 | Corrected some style warnings check-in: 70c21880bf user: thomas tags: trunk | |
| 17:31 | Optimize CardDataImport worker, saving ~3% execution time. check-in: 5249cc3982 user: thomas tags: trunk | |
| 14:59 | Use a list[str] for applying printing filters, instead of a dict[str, bool]. This shaves off a significant amount of time in _insert_or_update_card_filters() Closed-Leaf check-in: fde7f1946f user: thomas tags: optimize_card_data_import | |
| 14:29 | Optimize _get_card_filter_data() by re-using the same dict instance. Runtime under profiling: 35s → 21s check-in: b4eed8aca1 user: thomas tags: optimize_card_data_import | |
| 14:27 | Rework the database schema for efficiency and new features. Fixes [a71e49c25c756573] check-in: 410721173c user: thomas tags: trunk | |
| 13:41 | Fix importing reversible cards check-in: ea09b5bc19 user: thomas tags: refactor_card_database_schema | |
| 13:41 | Add line-profiler as a development environment dependency. check-in: d468e3e9bb user: thomas tags: refactor_card_database_schema | |
| 13:40 | scripts/benchmark_card_data_import.py: Fix the benchmark script. Prevent it from fetching the set symbols from the Scryfall API. check-in: dc52873de4 user: thomas tags: refactor_card_database_schema | |
| 12:27 | Fixed inaccurate type annotations check-in: 59d9fea55b user: thomas tags: refactor_card_database_schema | |
|
2026-05-11
| ||
| 22:15 | Fixed a bunch of failing tests check-in: 9d7db22697 user: thomas tags: refactor_card_database_schema | |
| 21:43 | HTTPFile: Use relative imports. check-in: e4e0a8f665 user: thomas tags: trunk | |
| 21:42 | Cleanup unused stuff check-in: f55ee74310 user: thomas tags: trunk | |
| 12:57 | Prevent the test suite from importing the MTG set symbols. Mock mtg_proxy_printer.async_tasks.card_info_downloader.SetIconImportTask.run() to avoid network access check-in: eb8abe2f15 user: thomas tags: refactor_card_database_schema | |
| 12:47 | Prevent AttributeError in the card_db fixture check-in: 05cb46f35d user: thomas tags: refactor_card_database_schema | |
| 12:12 | Tests: Clean up unused parameters and type hinting warnings check-in: 50ea001781 user: thomas tags: refactor_card_database_schema | |
| 11:35 | Fixed the tests check-in: a019a130cc user: thomas tags: refactor_card_database_schema | |
| 11:20 | Add card filters for full-art cards, textless cards, and low-resolution cards check-in: 146ec3af7a user: thomas tags: refactor_card_database_schema | |
| 11:09 | CardDataType: Update literals check-in: 60ee61ae93 user: thomas tags: refactor_card_database_schema | |
| 09:20 | Add tests verifying PrintingPreferenceUpdater only updating relevant printings. check-in: e00d33b9c2 user: thomas tags: refactor_card_database_schema | |
|
2026-05-10
| ||
| 18:29 | Add Universes Beyond card filter. Implements [4a93c27272f949ba]. check-in: fc240607d4 user: thomas tags: refactor_card_database_schema | |
| 17:00 | Add changelog entry check-in: 517222420e user: thomas tags: refactor_card_database_schema | |
| 16:12 | Update the Print hiding UI to use a table model, and integrate the printing preference weights. Completes [e405fc5c924cf576] check-in: 4571d20b4e user: thomas tags: refactor_card_database_schema | |
| 15:59 | Add PrintingPreferenceUpdater(AsyncTask) class for updating the printing preferences in the card database. This runs as an AsyncTask to be able to be scheduled while a card data update runs Closed-Leaf check-in: 4aca6e50f6 user: thomas tags: refactor_print_hiding_ui | |
| 14:57 | Database schema: Add trigger to automatically update Printing.preference_score whenever a PrintingFilter.printing_preference_weight is updated check-in: ddc6aadb12 user: thomas tags: refactor_print_hiding_ui | |
|
2026-05-09
| ||
| 21:13 | PrintingFilterModel: Implement reading the filter weights from the card database. This needs unit tests. check-in: 70cb43f8b3 user: thomas tags: refactor_print_hiding_ui | |
| 20:49 | Place the main thread's CardDatabase instance into a global CardDatabase attribute as a singleton. This allows easier access from UI classes created by Qt code. check-in: 7399528a00 user: thomas tags: refactor_print_hiding_ui | |
| 20:40 | PrintingFilterModel: Save a reference to the CardDatabase instance Closed-Leaf check-in: 4f518c4d7e user: thomas tags: carddb_singleton | |
| 20:29 | Removed a lot of instances where the CardDatabase is passed down, in favor of using the global Singleton check-in: 8c2594cebf user: thomas tags: carddb_singleton | |
| 00:31 | Introduce class attribute CardDatabase.main_instance, which holds the singleton primary card database instance used by the main thread logic. It allows access without needing to pass it around everywhere check-in: d9f5299512 user: thomas tags: carddb_singleton | |
| 00:22 | PrintingFilterModel: Disable printing weights for the "funny" card filter. There are no "funny" and "non-funny" printings of the same card, so it doesn't make sense as a weight. check-in: 9be6313dae user: thomas tags: refactor_print_hiding_ui | |
|
2026-05-08
| ||
| 23:32 | PrintingFilterModel: When setting the preference weights from the UI, also set the DisplayRole check-in: 658923fa2b user: thomas tags: refactor_print_hiding_ui | |
| 23:28 | HidePrintingsPage: Adjust the description text. Add some paddings to the table header cells check-in: f0f2f2dafc user: thomas tags: refactor_print_hiding_ui | |
| 22:37 | PrintingFilterModel: Set appropriate table headers and update the filter UI strings, removing "Hide" in display texts. check-in: ec2a3e5a37 user: thomas tags: refactor_print_hiding_ui | |
| 22:36 | PrintingFilterPage: Show the table header and allow edit triggers for the printing filter table view check-in: 2ef568f6d7 user: thomas tags: refactor_print_hiding_ui | |
| 20:15 | PrintingFilterModel: Add display text "Hidden"/"Visible" to the is_hidden column cells. check-in: 8243ad3ee6 user: thomas tags: refactor_print_hiding_ui | |
| 16:24 | Fix most of the issues with the PrintingFilterModel. Content is rendered again. check-in: 19765b9e5d user: thomas tags: refactor_print_hiding_ui | |
| 13:09 | WIP Rework of the PrintingFilterModel into a 4 column model supporting both print hiding and print score values check-in: c44d9c5956 user: thomas tags: refactor_print_hiding_ui | |
|
2026-05-05
| ||
| 12:51 | PrintingFilterModel: Adjust the "banned due to racism" Scryfall query to match the new one. check-in: 23fe950125 user: thomas tags: refactor_print_hiding_ui | |
| 12:38 | Merge with refactor_card_database_schema. check-in: 6dd32819a2 user: thomas tags: refactor_print_hiding_ui | |
| 12:20 | Implement [2e40cfd0ff8baee0], showing MTG set symbols in the UI where appropriate. Fetch the icons from the Scryfall CDN during card data imports. check-in: 1302b184ad user: thomas tags: refactor_card_database_schema | |
| 10:12 | Rewritten set symbol downloads to support icon updates. Store the icon file name and cache key in the database, and compare them during the update to find updated symbols. Closed-Leaf check-in: 398679c6f4 user: thomas tags: show_set_icons | |
| 08:29 | Add changelog entry check-in: b14864488b user: thomas tags: show_set_icons | |
| 08:28 | Document: Show the MTG set symbols in the Set column check-in: 4b291a92f0 user: thomas tags: show_set_icons | |
| 08:28 | Keep the MTG set symbol aspect ratio check-in: c58e7163d6 user: thomas tags: show_set_icons | |
|
2026-05-04
| ||
| 17:23 | Add changelog entry Closed-Leaf check-in: 92c93df50f user: thomas tags: bogus | |
| 17:23 | Document: Show the MTG set symbols in the Set column check-in: 8dca7dd2c4 user: thomas tags: bogus | |
| 17:21 | Keep the MTG set symbol aspect ratio check-in: a0d86c9476 user: thomas tags: bogus | |
| 17:07 | Implement showing MTG set symbols in the UI where appropriate. Fetch the icons from the Scryfall CDN during card data imports. Implements [2e40cfd0ff8baee0]. check-in: ae0bbaa8c8 user: thomas tags: bogus | |
| 17:04 | SetEditorDelegate: Show set symbols in the set choice dropdown editor check-in: 682ccfd6bb user: thomas tags: show_set_icons | |
| 16:56 | CardListModel: Show the set symbol in the Set column check-in: d6e5097a08 user: thomas tags: show_set_icons | |
| 16:45 | Fix CardDatabase.find_sets_matching() with back face names check-in: f6114901fa user: thomas tags: show_set_icons | |
| 16:28 | Database schema: Store set icon SVGs as blobs. The Qt API expects them as bytes, so never decode to utf-8, and always keep them as bytes/BLOB. check-in: c867bd68fa user: thomas tags: show_set_icons | |
| 15:16 | Fix SetIconImportTask integration. It now properly fetches missing set icons. check-in: 526afe852b user: thomas tags: show_set_icons | |
| 14:05 | Run the SetIconImportTask as part of the card database update check-in: 4ef3837f98 user: thomas tags: show_set_icons | |
| 13:35 | SetIconImportTask: Extend logic with progress reporting check-in: 99a6753255 user: thomas tags: show_set_icons | |
| 13:28 | Implement class SetIconImportTask(DownloaderBase), implementing the task for fetching the MTG set SVG icons from the Scryfall CDN. check-in: 32435ebeba user: thomas tags: show_set_icons | |
| 11:40 | Implement an SVG icon engine, and use it to render the MTG set symbol as a QIcon check-in: 1a3a07d274 user: thomas tags: show_set_icons | |
| 11:05 | Update some outdated copyright headers check-in: fbac4160a1 user: thomas tags: refactor_card_database_schema | |
| 11:05 | CardDatabase: Fix match statement in get_oracle_id(). check-in: d661cf243a user: thomas tags: refactor_card_database_schema | |
| 08:26 | Merge fork on trunk check-in: 3b08fdfa49 user: thomas tags: trunk | |
|
2026-04-30
| ||
| 12:08 | Fix packaging environments: Fix environment name mismatch. Add the Windows build cleanup script to the allowed external commands check-in: 483891acf5 user: thomas tags: trunk | |
|
2026-04-14
| ||
| 20:34 | MeteredSeekableHTTPFile: Refactorings. Fix parameter defaults not matching the base API. Refactored _urlopen() to not access the file attribute directly, getting rid of the file attribute being Optional[]. Replaced deprecated calls to file.info(). check-in: 0c1fd638ce user: thomas tags: trunk | |
|
2026-04-11
| ||
| 12:33 | DatabaseImportTask: Insert or update the Card.english_name column during data imports check-in: 6e3b5afb58 user: thomas tags: refactor_card_database_schema | |
| 00:01 | CardDatabase migrations: Fix migration script to v35. Card.english_name computation was broken, causing exceptions check-in: a635ee0e24 user: thomas tags: refactor_card_database_schema | |
|
2026-04-10
| ||
| 12:48 | Database schema: Sync documentation and implementation. Add Card.english_name column, which holds the canonical English card name. This helps card translations, because some non-English cards use the English name as a fallback, and those need to be filtered out. check-in: 5b452a1f54 user: thomas tags: refactor_card_database_schema | |
| 12:42 | CardDatabase: Extend translate_cards() to also accept a list of target languages, and do an element-wise translation if such a list is passed in. check-in: 9ed61bcf64 user: thomas tags: refactor_card_database_schema | |
|
2026-03-31
| ||
| 11:48 | WIP started rewriting the CSV deck list parsers to use a multi-step process. Implemented is conversion into CardIdentificationData instances. This will be used to batch individual operations to reduce number of card database calls. check-in: f5b3b7ca34 user: thomas tags: refactor_card_database_schema | |
|
2026-03-30
| ||
| 22:32 | CacheCleanupWizard: Refactor CardFilterPage.initializePage() and add_row() to batch the card translations into the preferred language. All translations are now performed in a single query, using the new batch-processing capability of the CardDatabase.translate_card_names() method. This brings down the translation runtime from ~8s to 0.3s for a moderate number of cards on the system. check-in: 642f1d9740 user: thomas tags: refactor_card_database_schema | |
| 19:30 | Fix card database migrations. Recreate the FilterAppliesTo table to update the foreign key references. Otherwise using a migrated database crashes during use. check-in: e7250081d4 user: thomas tags: refactor_card_database_schema | |
| 19:29 | Improve a comment check-in: 1a355223c8 user: thomas tags: refactor_card_database_schema | |
|
2026-03-29
| ||
| 19:24 | CardDatabase: Refactored translate_card_name() to work with lists. Renamed to translate_card_names() to indicate the change. check-in: addc87915b user: thomas tags: refactor_card_database_schema | |
| 18:34 | CardDatabase: Refactored translate_card_name() SQL code. All parameters except for the target language are now passed via a table expression at the top. The source_context now carries a row number column that is passed through. Runtime increases to ~110ms-150ms/translation. This design allows easy extension to pull the data from a temporary table and perform multiple translations in one step. check-in: 0b269e0168 user: thomas tags: refactor_card_database_schema | |
| 12:59 | CardDatabase: Further optimizations for card name translations. By JOINing only the required parts, the runtime is down to ~70ms/translation. This is still potentially 7+ seconds for a Commander deck, but better than the previous 100+ seconds. check-in: be1c58afe6 user: thomas tags: refactor_card_database_schema | |
| 11:58 | Optimize card name translation, reducing runtime by 90%, from ~1500ms/translation to ~150ms/translation. In a query SELECT a FROM foo GROUP BY a LIMIT 1, the group by clause has no effect. Dropping it allows for a more efficient query plan without sacrificing correctness. check-in: be62b00e75 user: thomas tags: refactor_card_database_schema | |
| 11:55 | Fixed ImageKey quality formatting and parameter use check-in: b384ccb8a0 user: thomas tags: refactor_card_database_schema | |
| 11:54 | Tests: Fixed SQL error in _assert_printing_face_contains() check-in: 89a4804064 user: thomas tags: refactor_card_database_schema | |
| 11:33 | CardDatabase: Fixed use of outdated % wildcards. Add tests for previously untested find_sets_matching(). check-in: 41260e50e4 user: thomas tags: refactor_card_database_schema | |
| 10:14 | Fix missing ; in the database schema check-in: 4fb95f447a user: thomas tags: refactor_card_database_schema | |
| 10:12 | Add a database index speeding up card lookup by name. Switch from ASCII-case-insensitive LIKE matching to GLOB. This updates the wildcard character to *. Case sensitive LIKE is deprecated, but sensitivity allows using the same index for both GLOB matches and equality (=) matches. check-in: ce0f9979c8 user: thomas tags: refactor_card_database_schema | |
|
2026-03-28
| ||
| 21:12 | CardDatabase: Refactor SQL generation in get_cards_from_data() check-in: cdd682128e user: thomas tags: refactor_card_database_schema | |
| 21:07 | CardDatabase: Deprecate a method used to partition the image database content. check-in: ef61dec8b8 user: thomas tags: refactor_card_database_schema | |
| 21:04 | Fixed failing tests check-in: c72ae9d1bc user: thomas tags: refactor_card_database_schema | |
| 20:28 | Database schema: Fixed inconsistencies in the migration from v34. Also reformat table definitions for better readability. check-in: ee70bc8254 user: thomas tags: refactor_card_database_schema | |
| 19:20 | ProgressBarManager: Connect request_register_subtask() to add_task() via a blocking connection. This ensures that the UI logic actually runs, even if the thread calling hogs 100% of the CPU time on GIL-enabled interpreters check-in: 6c615877dc user: thomas tags: refactor_card_database_schema | |
| 13:42 | Fixed database migration to v35. The migration no longer drops all data. Refactored MigrationScript, adding optional boolean parameter disable_foreign_keys. Migrations that need disabled checks now use this, instead of putting the 3 required PRAGMA statements into the statement list. check-in: 7ec210f394 user: thomas tags: refactor_card_database_schema | |
| 12:58 | Merged in refactor_card_database_schema branch. This feature branch will be the base for incorporating the printing preference configuration. The list holding the printing filter booleans can also hold the preference values as an additional column. check-in: bc8f4c5367 user: thomas tags: refactor_print_hiding_ui | |
| 12:50 | Synced with trunk check-in: 52c39d5018 user: thomas tags: refactor_print_hiding_ui | |
| 10:35 | Implement the static part of migrations for version 34 to 35. This still needs additional semantic work, like fetching the set scryfall id from the API. check-in: b8bea7ed27 user: thomas tags: refactor_card_database_schema | |
| 10:33 | Database schema: Declare MigratedPrintings.performed_at as an INTEGER_TIMESTAMP. check-in: 942eb56ce8 user: thomas tags: refactor_card_database_schema | |
|
2026-03-27
| ||
| 19:53 | Database schema: Replace boolean PrintingFace.currently_downloaded with download_status. By not restricting to a pure boolean, the column can hold additional data, like the image resolution, or if there is a custom card override in place. check-in: 3adb7e9e52 user: thomas tags: refactor_card_database_schema | |
| 13:22 | Fixed test isolation. Shared Card instances contaminated other tests, because they got mutated. check-in: 9afe7276b2 user: thomas tags: refactor_card_database_schema | |
| 12:56 | Fixed test test_get_replacement_card_for_unknown_printing by removing now-invalid test cases check-in: bc460cc147 user: thomas tags: refactor_card_database_schema | |
| 12:50 | Fixed broken test test_get_cards_from_data_order_by_print_count_enabled check-in: 976650cdab user: thomas tags: refactor_card_database_schema | |
| 11:49 | Tests: Add tests for the DatabaseImportTask, directly testing the correctness of the RemovedPrinting data. check-in: a826ab6a90 user: thomas tags: refactor_card_database_schema | |
| 11:48 | CardDataType: Specify fixed sets of choices for some keys in the API card data by listing them using typing.Literal[]. check-in: adde1bd191 user: thomas tags: refactor_card_database_schema | |
| 10:07 | Tests: Fixed test_is_removed_printing() for new semantics, which no longer treat hidden printings as "removed". This was still a remnant from times where hidden cards were skipped completely during import. check-in: cd6f41e364 user: thomas tags: refactor_card_database_schema | |
| 09:58 | Fixed the related cards search to find both sides of double-faced results. check-in: d844626800 user: thomas tags: refactor_card_database_schema | |
|
2026-03-26
| ||
| 23:01 | CardDatabase: Add method get_oracle_id(self, scryfall_id: UUID) -> UUID | None. Returns the oracle_id for the given scryfall id. Looks up from RemovedPrintings first, then from Printing. ScryfallCSVParser: Use CardDatabase.get_oracle_id() to look up hidden printings. This fixes failing tests for this parser. check-in: b46ce0c0c5 user: thomas tags: refactor_card_database_schema | |
| 22:30 | CSV deck list parsers: Refactored ScryfallCSVParser.parse_cards_from_line(), de-duplicating card translation code. Declare the available columns via TypedDict classes, which allows checking column access via the type checker. check-in: e27a9be586 user: thomas tags: refactor_card_database_schema | |
|
2026-03-25
| ||
| 14:37 | Remove bool() calls where booleans are now automatically converted from int via the registered sqlite converter for BOOLEAN_INTEGER columns. check-in: 87d375965c user: thomas tags: refactor_card_database_schema | |
|
2026-03-24
| ||
| 22:50 | CardDatabase: Fix is_valid_and_unique_card() and add note that this isn't covered by unit tests check-in: 38da84de54 user: thomas tags: refactor_card_database_schema | |
| 22:33 | CardDatabase: Port get_all_cards_from_image_cache() check-in: 6f1fef792c user: thomas tags: refactor_card_database_schema | |
| 22:17 | Revert fiddling with the row_factory within application code. Put a work-around in helpers.py that avoids using sqlite3.Row in the DatabaseImportWorker. Many simple fixes across the test suite. Most tests pass again. check-in: 2afff5dc1b user: thomas tags: refactor_card_database_schema | |
| 10:11 | DatabaseImportWorker: Reset the row_factory of passed_in databases, because the code is incompatible with Row as the factory. Pattern matching code relies on the db returning tuples. check-in: c5c98531f5 user: thomas tags: refactor_card_database_schema | |
| 07:06 | Re-activate test_updates_changed_value_on_re_import test cases disabled during a debugger session. check-in: 6968dc325c user: thomas tags: refactor_card_database_schema | |
|
2026-03-23
| ||
| 21:45 | Tests: Adjust test for is_removed_printing(). New semantics no longer consider a hidden printing to be "removed". check-in: a6ed184920 user: thomas tags: refactor_card_database_schema | |
| 21:36 | CardDatabase: Remove deprecation note and outdated comments in is_dfc(). The method is used by the document loader before Card instances are constructed. check-in: 651875afc6 user: thomas tags: refactor_card_database_schema | |
| 21:20 | Fixed several additional broken locations. Failing tests are down to 30 check-in: f16b5956fa user: thomas tags: refactor_card_database_schema | |
| 21:04 | Database schema: Add the usage_count column to the printing views check-in: 3b0b955bf6 user: thomas tags: refactor_card_database_schema | |
| 20:38 | CardDatabase: Port translate_card_name() check-in: 33d9e4daa3 user: thomas tags: refactor_card_database_schema | |
| 20:14 | CardDatabase: Port guess_language_from_name() and actually fix _read_optional_scalar_from_db() check-in: 8ac00aaace user: thomas tags: refactor_card_database_schema | |
| 20:04 | CardDatabase: Fix _read_optional_scalar_from_db(), which stopped working with sqlite3.Row row factory. check-in: cb6654f650 user: thomas tags: refactor_card_database_schema | |
| 19:45 | CardDatabase: Ported _translate_card() check-in: e8d9728208 user: thomas tags: refactor_card_database_schema | |
| 19:17 | CardDatabase.find_sets_matching: Also read the set icons of found sets check-in: e41e68b11b user: thomas tags: refactor_card_database_schema | |
| 19:15 | CardDatabase: Use sqlite3.Row as the row factory. This allows indexing via column names and avoids brittle tuple unpacking. check-in: f8c0006a83 user: thomas tags: refactor_card_database_schema | |
| 17:05 | PrintCountUpdater: Fixed _update_image_usage() check-in: fab6b8078c user: thomas tags: refactor_card_database_schema | |
| 13:40 | CardInfoDownloader: Micro-optimization: using () instead of tuple() saves 10 ns per invocation, as determined using timeit. With 500k cards, this saves whopping 5ms. check-in: 904d1eb292 user: thomas tags: refactor_card_database_schema | |
| 13:27 | DatabaseImportWorker: Implement updating Card.is_card column, in case the is_card property needs amendments over time check-in: cfefdd14e3 user: thomas tags: refactor_card_database_schema | |
| 13:26 | CardDatabase: Fix get_basic_land_oracle_ids() to properly handle non-cards named like basic lands, like Art-Series cards for basic land artworks. check-in: 190343352a user: thomas tags: refactor_card_database_schema | |
| 12:45 | Add JSON sample for a basic land art series card check-in: 8077181119 user: thomas tags: refactor_card_database_schema | |
| 08:28 | Removed now-unused SetWackinessScore enum check-in: 85725b85fa user: thomas tags: refactor_card_database_schema | |
| 08:02 | DatabaseImportWorker: Unify SQL statement indention style check-in: 309745b488 user: thomas tags: refactor_card_database_schema | |
| 00:04 | DatabaseImportTask: Shave off ~1s execution time during an import by not explicitly verifying that Scryfall only returns syntactically valid UUIDs in UUID fields. check-in: 8cb6a177ad user: thomas tags: refactor_card_database_schema | |
|
2026-03-22
| ||
| 23:17 | scripts/benchmark_card_data_import.py: Update profiled functions check-in: c0e1b8f407 user: thomas tags: refactor_card_database_schema | |
| 22:50 | DatabaseImportWorker: All remaining tests pass. Importing from a card data stream works again. check-in: e164871b4f user: thomas tags: refactor_card_database_schema | |
| 21:42 | Fixed tests for RelatedCards. Removed test_set_wackiness_score, because the tested column was removed. Updated list of database tables checked in assert_model_is_empty(). check-in: 962044f76d user: thomas tags: refactor_card_database_schema | |
| 21:36 | PrintingFilterUpdater: Fixed flip in boolean condition leading to premature aborting the set filter update. This now works correctly. check-in: 5b789f0589 user: thomas tags: refactor_card_database_schema | |
| 20:50 | Database schema: Fixed wrong reference in table FilterAppliesTo. check-in: 6f835fdef2 user: thomas tags: refactor_card_database_schema | |
| 20:37 | DatabaseImportTask: Refactored _get_card_faces(). Now returns a single card face for cards with only one side, even if it has multiple faces. check-in: 0ce3e59d12 user: thomas tags: refactor_card_database_schema | |
| 20:34 | tests/test_printing_filter_updater.py: Ported tests check-in: 19e60d7a91 user: thomas tags: refactor_card_database_schema | |
| 20:33 | tests/helpers.py: Removed asserts checking that the card data import does not emit Qt error signals. check-in: ceb1370a2d user: thomas tags: refactor_card_database_schema | |
| 19:53 | Tests: Adjust face data name extraction to use "Front // Back" for all non-DFC cards with multiple faces. check-in: e60428c082 user: thomas tags: refactor_card_database_schema | |
| 17:47 | Port _assert_visible_printings_contains. First tests start to pass check-in: 587b464867 user: thomas tags: refactor_card_database_schema | |
| 17:33 | Fixed timezone conversion issues in SQL (unixepoch() needs the 'utc' time zone specified to match the Python datetime semantics) and many failures in assert statements check-in: b7c78832cf user: thomas tags: refactor_card_database_schema | |
| 15:33 | Continue porting the tests check-in: d2828ec3b2 user: thomas tags: refactor_card_database_schema | |
| 14:06 | test_card_info_downloader: Removed validation methods for removed database tables check-in: a8605d92c1 user: thomas tags: refactor_card_database_schema | |
| 13:48 | PrintingFilterUpdater: Fixed remaining runtime errors. With this, the importer no longer crashes immediately. check-in: aa77c6faa8 user: thomas tags: refactor_card_database_schema | |
| 13:41 | DatabaseImportTask: Completed port of _insert_or_update_printing_faces(). Removed _clean_unused_data(). check-in: 6780db68d3 user: thomas tags: refactor_card_database_schema | |
| 12:15 | DatabaseImportTask: Partial port of _insert_printing_faces(). Renamed to _insert_or_update_printing_faces(). Removed obsolete _insert_face_name(). check-in: eb9ca469c4 user: thomas tags: refactor_card_database_schema | |
| 08:50 | Rewrite _read_optional_scalar_from_db() to use a match statement. Also now raise a RuntimeError, if the non-NULL query result is not a scalar value. check-in: 2ed5f7ec41 user: thomas tags: refactor_card_database_schema | |
| 08:36 | DatabaseImportTask:._insert_or_update_printing: Also set Printing.is_dfc, instead of using the default value. is_dfc can be trivially computed from the JSON data. check-in: be0fb492a3 user: thomas tags: refactor_card_database_schema | |
|
2026-03-21
| ||
| 22:15 | DatabaseImportTask: Port _update_card_filters(), and rename to _insert_or_update_card_filters. check-in: 5f1daabb75 user: thomas tags: refactor_card_database_schema | |
| 22:00 | Database schema: Re-ordered CREATE statements to match the v34 order, reducing the diff size with trunk. check-in: dbd631b4e3 user: thomas tags: refactor_card_database_schema | |
| 21:48 | PrintingFilterUpdater: Ported the rest of the logic. check-in: 1aae95d90b user: thomas tags: refactor_card_database_schema | |
| 20:19 | PrintingFilterUpdater: Renamed an internal variable check-in: d79a5a6819 user: thomas tags: refactor_card_database_schema | |
| 19:29 | PrintingFilterUpdater: Replace QCoreApplication.translate() with self.tr(). check-in: e3aaa67056 user: thomas tags: refactor_card_database_schema | |
| 19:26 | Database schema: Add missing default value for MTGSet.set_filter_active check-in: 686adb21c6 user: thomas tags: refactor_card_database_schema | |
| 19:18 | DatabaseImportTask: Fixed SQL syntax error in _insert_card() check-in: 82e33ceaff user: thomas tags: refactor_card_database_schema | |
| 19:10 | DatabaseImportTask: Port and refactor _handle_printing(). Replaced _is_printing_present() content with a single query check-in: 957dfb501e user: thomas tags: refactor_card_database_schema | |
| 14:57 | DatabaseImportWorker: Add helper method _read_optional_scalar_from_db, copied from CardDatabase. Use it to fetch scalar query results. check-in: 7cd4e37dc2 user: thomas tags: refactor_card_database_schema | |
| 14:48 | DatabaseImportWorker: Update _insert_set(). check-in: 0bb0957e3b user: thomas tags: refactor_card_database_schema | |
| 14:38 | DatabaseImportWorker: Handle Card.is_card column in _insert_card(). check-in: 3ba9ecc5d9 user: thomas tags: refactor_card_database_schema | |
| 14:24 | DatabaseImportWorker: Removed obsolete _insert_language() check-in: 2f24030990 user: thomas tags: refactor_card_database_schema | |
| 13:59 | Reinstate the RemovedPrintings table. Its purpose is storing valid printings that are unacceptable for semantic reasons and can't be imported. This is distinct from MigratedPrintings, which tracks printings removed or merged by Scryfall check-in: 23cae27ab4 user: thomas tags: refactor_card_database_schema | |
| 13:22 | tests.helpers: Replace functools.lru_cache with cache, and qtbot.assertNotEmitted with qtbot.assert_not_emitted check-in: ff2d96e16f user: thomas tags: refactor_card_database_schema | |
| 13:19 | DB schema: Fix logic and syntax errors. check-in: 5f6a9aaf19 user: thomas tags: refactor_card_database_schema | |
| 12:47 | CardDatabase: Adjust already ported methods for the switch from is_hidden to is_visible. check-in: e13bf8c540 user: thomas tags: refactor_card_database_schema | |
| 12:47 | v35 migration script: Add the Printing.is_dfc column. Re-formats. check-in: 161227a3c7 user: thomas tags: refactor_card_database_schema | |
| 12:06 | DB schema: Fixed Printing.is_visible default value, which should be TRUE. Updated view EvaluatePrintingFilters to also consider MTGSet.set_filter_active. check-in: 685795574d user: thomas tags: refactor_card_database_schema | |
| 10:42 | Add card database model, to be opened with Navicat Data Modeler. Temporarily add a WIP database migration script. Once the schema v35 is finalized and the migrations completed, the steps will be moved into the carddb_migrations module. check-in: d0ddaf42b9 user: thomas tags: refactor_card_database_schema | |
| 09:56 | DB schema: Rename is_hidden to is_visible. Add Printing.is_dfc boolean cache column. Add views EvaluatePrintingFilters, AllPrintings, VisiblePrintings check-in: ff5f4b5c95 user: thomas tags: refactor_card_database_schema | |
|
2026-03-20
| ||
| 23:27 | CardDatabase: Port get_basic_land_oracle_ids check-in: d26af3c8be user: thomas tags: refactor_card_database_schema | |
| 23:27 | Schema: Re-add forgotten collector_number column to Printing. check-in: 8488e57d38 user: thomas tags: refactor_card_database_schema | |
| 18:10 | CardDatabase: Ported two methods to schema 35 check-in: 663c1a001b user: thomas tags: refactor_card_database_schema | |
| 17:23 | DB schema: Rename DisplayFilters to PrintingFilters, and PrintingDisplayFilter to FilterAppliesTo. Add MTGSet.set_filter_active column check-in: ee12dfffb8 user: thomas tags: refactor_card_database_schema | |
| 14:53 | Update schema to support printing migrations via the Scryfall Migrations API. check-in: 09ee0ee0f4 user: thomas tags: refactor_card_database_schema | |
|
2026-03-19
| ||
| 20:28 | Fixed obviously broken things in the database schema that slipped through. check-in: cc5456a3bd user: thomas tags: refactor_card_database_schema | |
| 20:09 | Packaging: Exclude ijson.dump from built Windows packages. The module includes a CLI module that isn't needed when used purely as a library check-in: 1b10896536 user: thomas tags: trunk | |
| 19:49 | WIP rework of the card database schema. Reduced complexity. Removed some not well working parts, like he wackiness score, which will be replaced by another concept. Currently missing all views and indices. Indices will come back after evaluating performance issues. check-in: 590dbd5446 user: thomas tags: refactor_card_database_schema | |
|
2026-03-14
| ||
| 22:35 | Import changes from trunk Leaf check-in: 7b6d8909d4 user: thomas tags: pyside6_deploy_support | |
| 15:19 | Fixed SegmentationFault in PageRenderer during unit tests using PySide6 >= 6.10.1 check-in: b1c4d3f48d user: thomas tags: trunk | |
| 14:56 | Updated the build system, integrating both cx_Freeze and tox config into pyproject.toml. Fixed project dependencies. Added tox environments verifying compatibility across dependency versions. check-in: 63142ede17 user: thomas tags: trunk | |
| 14:00 | Dependencies: Do not include the hard cap <= 6.10.0 on PySide6 Closed-Leaf check-in: 202c0f19a6 user: thomas tags: repository_cleanup | |
| 13:48 | Fix dependencies: Tests reveal minimum required versions for Pint and PyHamcrest do not match the recorded values, so adjust the dependencies accordingly. check-in: b6780b446f user: thomas tags: repository_cleanup | |
| 12:57 | tox: Ensure that the generate_development_environment does not hold the tests label, so that it is not executed as a unit tests environment check-in: 62a82b7383 user: thomas tags: repository_cleanup | |
| 12:04 | Fix create_development_environment.bat. Because Windows doesn't allow in-place environment replacement, use a temporary bootstrap environment to create the full one with tox. check-in: 64c3828459 user: thomas tags: repository_cleanup | |
| 09:23 | tox: Also do a version sweep for cx_Freeze, ensuring all versions marked as supported generate working builds. check-in: 2f5d87bc87 user: thomas tags: repository_cleanup | |
| 02:09 | tox: Add environment test_cx_freeze_build to the default environment list check-in: 8e58cf6b61 user: thomas tags: repository_cleanup | |
| 02:04 | Remove the now-unused scripts/rebuild_requirements.py script. check-in: 84680b5225 user: thomas tags: repository_cleanup | |
| 02:03 | tox: Integrate project development venv generation. This replaces most of the logic in the create_development_environment scripts with a tox environment run. check-in: 541711060f user: thomas tags: repository_cleanup | |
| 01:35 | pyproject.toml: Use dependency groups instead of installable "extras" to manage packaging and testing dependencies. Since modern tox can read those, this also drops the requirement for requirements.txt generation, thus also drop use of pip-tools. check-in: 7cf6a4c6ff user: thomas tags: repository_cleanup | |
|
2026-03-13
| ||
| 18:57 | tox: Use label "tests" instead of "test". Update the runner scripts to use the label instead of the default environment list check-in: effaffcce9 user: thomas tags: repository_cleanup | |
| 18:52 | Drop support for ijson 3.2.0. Add tox environments testing oldest supported versions for everyting not thoroughly tested. This ensures that minimum version requirements aren't accidentally violated and can be updated when newer functionality is used in the code. check-in: c836b8b1a1 user: thomas tags: repository_cleanup | |
| 13:35 | tox: Add description to the test_cx_freeze_build environment check-in: ddfdbed3d4 user: thomas tags: repository_cleanup | |
| 13:30 | tox: Fixed Qt factors. Names may not contain dots, so use underscores to separate major and minor Qt versions. check-in: a38fc6e90d user: thomas tags: repository_cleanup | |
| 13:10 | tox: Generate some linear dependency version sweeps. The environments get generated, but aren't yet functional. check-in: 1f26e8413f user: thomas tags: repository_cleanup | |
| 10:10 | Import test fix from trunk check-in: b684e08245 user: thomas tags: repository_cleanup | |
| 08:28 | Pass required environment variables to test environments, to prevent crashes in Qt. check-in: c3360f612d user: thomas tags: repository_cleanup | |
| 08:16 | Set minimum required tox version to 4.41, which added package = "deps-only". All prior versions cannot parse the current tox configuration. check-in: 963aff93ff user: thomas tags: repository_cleanup | |
|
2026-03-12
| ||
| 20:01 | Port the cx_Freeze build test tox environment check-in: cf08f4a7cf user: thomas tags: repository_cleanup | |
| 19:16 | Rename packaging environment, update the packaging scripts to use the new names check-in: 57c5fe4e2a user: thomas tags: repository_cleanup | |