MTGProxyPrinter

Timeline
Login

Timeline

Many hyperlinks are disabled.
Use anonymous login to enable hyperlinks.

50 most recent check-ins

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. leaf 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. leaf 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