Commit graph

6798 commits

Author SHA1 Message Date
Christian Daniel Jensen
2b35b0a6ab Keep Essence selection and mode inside one fixed-width popup to prevent toolbar clipping 2026-11-03 12:40:20 -07:00
Christian Daniel Jensen
08e0eb3dab Keep Essence selection and mode inside one fixed-width popup to prevent toolbar clipping 2026-11-03 12:40:16 -07:00
Christian Daniel Jensen
c4b513bb24 Fix mutable QString reference required by CardFilter in Essence UI 2026-11-03 12:24:45 -07:00
Christian Daniel Jensen
39003f2208 Ensure Essence dropdown selected-code summary is visible with text-only button style 2026-11-03 12:16:11 -07:00
Christian Daniel Jensen
ec94000c5a Document compact shared Essence multi-select dropdown for deck storage and database 2026-11-03 12:15:32 -07:00
Christian Daniel Jensen
abe4dc2b8f Use shared multi-select Essence dropdown in Visual Database filters 2026-11-03 12:14:26 -07:00
Christian Daniel Jensen
39eb983fe9 Use shared multi-select Essence dropdown in Visual Database filters 2026-11-03 12:14:24 -07:00
Christian Daniel Jensen
fa86dbc09b Replace Visual Deck Storage WUBRG filter with compact Essence dropdown 2026-11-03 12:13:38 -07:00
Christian Daniel Jensen
8514122641 Replace Visual Deck Storage WUBRG filter with compact Essence dropdown 2026-11-03 12:13:34 -07:00
Christian Daniel Jensen
7864af9592 Replace Visual Deck Storage WUBRG filter with compact Essence dropdown 2026-11-03 12:13:29 -07:00
Christian Daniel Jensen
22714efc13 Add reusable compact multi-select Essence popup filter 2026-11-03 12:12:50 -07:00
Christian Daniel Jensen
4e21602fce Add reusable compact multi-select Essence popup filter 2026-11-03 12:12:47 -07:00
Christian Daniel Jensen
2ab6bccb48 Set canonical Front Support Command battlefield palette 2026-11-03 09:15:22 -07:00
Christian Daniel Jensen
b0ac4af99a Set canonical Front Support Command battlefield palette 2026-11-03 09:15:19 -07:00
Christian Daniel Jensen
0bef2bbb8e Remove legacy MTG mana resource requirements; bundle only 15 Essence SVGs 2026-11-03 09:08:55 -07:00
BruebachL
c72192fd81
[Format] Small fixup (#7768)
Some checks are pending
CodeQL / Analyze (cpp) (push) Waiting to run
CodeQL / Analyze (actions) (push) Waiting to run
Build Desktop / Configure (push) Waiting to run
Build Desktop / vcpkg baseline (push) Waiting to run
Build Desktop / Debian 13 (push) Blocked by required conditions
Build Desktop / Debian 12 (push) Blocked by required conditions
Build Desktop / Fedora 44 (push) Blocked by required conditions
Build Desktop / Fedora 43 (push) Blocked by required conditions
Build Desktop / Servatrice_Debian 12 (push) Blocked by required conditions
Build Desktop / Ubuntu 24.04 (push) Blocked by required conditions
Build Desktop / Ubuntu 26.04 (push) Blocked by required conditions
Build Desktop / Arch (push) Blocked by required conditions
Build Desktop / Ubuntu 26.04 cover (push) Blocked by required conditions
Build Desktop / macOS 13 Intel (push) Blocked by required conditions
Build Desktop / macOS 14 (push) Blocked by required conditions
Build Desktop / macOS 15 (push) Blocked by required conditions
Build Desktop / macOS 26 Debug (push) Blocked by required conditions
Build Desktop / Windows 10 (push) Blocked by required conditions
Build Desktop / Prune caches (push) Waiting to run
Build Docker / Servatrice (arm) (push) Waiting to run
Build Docker / Servatrice (x86) (push) Waiting to run
Build Docker / Publish multi-platform Servatrice image (push) Blocked by required conditions
* [Format] Small fixup.

* [CardDB] Stop leaking the loader's mutexes.

Both mutexes were heap-allocated through default member initializers and
never freed, so every CardDatabase destruction leaked 16 bytes. LeakSanitizer
flags this while discovering tests that create the database in main.

Hold them by value instead, as the loader is a QObject and therefore neither
copyable nor movable.

---------

Co-authored-by: Lukas Brübach <Bruebach.Lukas@bdosecurity.de>
2026-11-03 15:59:32 +01:00
Christian Daniel Jensen
343c96294c card branding 2026-11-03 03:49:01 -07:00
Christian Daniel Jensen
482d2dae28
Merge branch 'Cockatrice:master' into master 2026-11-03 03:39:31 -07:00
Christian Daniel Jensen
afa4542b04 Use Continuumatrice application name in connection status and title 2026-11-03 03:38:51 -07:00
Christian Daniel Jensen
a950a1cf7f Replace legacy WUBRG visual deck filter with all fifteen Essence symbols 2026-11-03 03:38:48 -07:00
Bryce!
9588e1960d
Preserve saved deck formats through database reload and view refresh (#7745) 2026-11-03 11:10:50 +01:00
Bryce!
fd2a99e897
Respect nonempty Qt hints and explain discovery failures [skip ci] (#7733) 2026-11-03 10:41:47 +01:00
Bryce!
dc4aa19d23
Import Moxfield signature spells into the deck [skip ci] (#7751)
Co-authored-by: Codex <codex@openai.com>
2026-11-03 10:40:28 +01:00
Bryce!
ada8f399f1
Log server identification and connection lifecycle (#7731)
* Log remote server identification and connection lifecycle [skip ci]

* Update libcockatrice_network/libcockatrice/network/client/remote/remote_client.cpp

Co-authored-by: RickyRister <42636155+RickyRister@users.noreply.github.com>

---------

Co-authored-by: BruebachL <44814898+BruebachL@users.noreply.github.com>
Co-authored-by: RickyRister <42636155+RickyRister@users.noreply.github.com>
2026-11-03 10:38:54 +01:00
Jurriaan
bc09ec6afe
[Client] Make DeckStateManager::decrementCard remove tokens from the token zone if the token is not in the given zone (#7588)
* Fixed decrementCard for tokens not using the token zone

* Removed dead function actDecrementCard

Updated documentation

* Fixed no-op, added documentation

* Removed stray blank line

* Allow finding card nodes even if no database entry exists for the given card

* Added DeckStateManager tests

* Added tokens on mainboard test

* Added if checks and sorted sources

Added if checks

* Library include fix

* Renamed zone to targetZone

* Revert "Allow finding card nodes even if no database entry exists for the given card"

This reverts commit 88578cd0d9.

* Combined loader_local_matching_test and deck_state_manager_test settings sources

* Added settings sandbox, refactor

* Format

* Renamed return variable

* Flattened if statement

* Style fix
2026-11-03 10:37:17 +01:00
Jurriaan
bfb53c5def
[Client] Visual Deck Editor: Added more mouse click modifiers to add/decrement cards to specific zones (#7589)
* Make visual database mouse click modifiers properly add/decrement different card zones

* Use event->modifiers(), refactor

* Removed QApplication include

* Added visual database display documentation page

* Minor fixes

* Added documentation for the mouse interaction of the table view
2026-11-03 10:35:58 +01:00
PILIX123
381dd21e8c
[Client] Add option to load decks from ManaBox (#7642)
* [Client] Add option to load decks from ManaBox

* [Client] Fix PR comments

* [Client] Fix UI and transaltion requests

* [Client] Fix for UI and parser not doing what expected when loading maybe board

* Add ManaBox support to docs

As pointed out in review comments

* [Client] Fix final PR comments

---------

Co-authored-by: tooomm <tooomm@users.noreply.github.com>
2026-11-03 10:33:21 +01:00
transifex-integration[bot]
c5b776ca46
Translate oracle/oracle_en@source.ts in de (#7767)
100% translated source file: 'oracle/oracle_en@source.ts'
on 'de'.

Co-authored-by: transifex-integration[bot] <43880903+transifex-integration[bot]@users.noreply.github.com>
2026-11-03 10:31:12 +01:00
BruebachL
dd7ee3541c
[PictureLoader] Keep the download log from going quadratic (#7766)
* [PictureLoader] Keep the download log from going quadratic

A fast scrollbar sweep over the visual card database requests a picture for
every cell it paints, so one gesture can ask for thousands of downloads. The
status bar built a seven-widget log entry for each of them and answered every
completion with findChildren() over the whole, unbounded log, rebuilding
url.toString() per child: O(n) per completion, O(n^2) per burst.

Profiling a sweep on master put 47% of all cycles on the GUI thread, with
qt_qFindChildren_helper at 12.4% of the process (a quarter of that thread) and
QWidgetPrivate::reparentFocusChildren at 4.1%. LagMonitor reported stalls of
3-18 s, growing with the backlog.

Keep at most MAX_LOG_ENTRIES entries and index them by URL, so a completion
and the 1 Hz cleanup only visit the matching entries. The progress bar follows
the entries that remain: dropping a finished entry moves both counters back,
dropping a pending one only its maximum. The log is a diagnostic view, not a
queue - the downloads themselves are unaffected.

* fixup! [PictureLoader] Keep the download log from going quadratic

Make the URL index a QMultiHash and say why: a deferred retry re-queues the same URL while its first log entry is still pending, so one URL can back several live entries.

---------

Co-authored-by: Lukas Brübach <Bruebach.Lukas@bdosecurity.de>
2026-11-03 10:17:53 +01:00
BruebachL
44d5138181
[VisualDatabase] Keep the card grid scrolling on macOS (#7764)
Some checks are pending
CodeQL / Analyze (cpp) (push) Waiting to run
CodeQL / Analyze (actions) (push) Waiting to run
Build Desktop / Configure (push) Waiting to run
Build Desktop / vcpkg baseline (push) Waiting to run
Build Desktop / Debian 13 (push) Blocked by required conditions
Build Desktop / Debian 12 (push) Blocked by required conditions
Build Desktop / Fedora 44 (push) Blocked by required conditions
Build Desktop / Fedora 43 (push) Blocked by required conditions
Build Desktop / Servatrice_Debian 12 (push) Blocked by required conditions
Build Desktop / Ubuntu 24.04 (push) Blocked by required conditions
Build Desktop / Ubuntu 26.04 (push) Blocked by required conditions
Build Desktop / Arch (push) Blocked by required conditions
Build Desktop / Ubuntu 26.04 cover (push) Blocked by required conditions
Build Desktop / macOS 13 Intel (push) Blocked by required conditions
Build Desktop / macOS 14 (push) Blocked by required conditions
Build Desktop / macOS 15 (push) Blocked by required conditions
Build Desktop / macOS 26 Debug (push) Blocked by required conditions
Build Desktop / Windows 10 (push) Blocked by required conditions
Build Desktop / Prune caches (push) Waiting to run
Build Docker / Servatrice (arm) (push) Waiting to run
Build Docker / Servatrice (x86) (push) Waiting to run
Build Docker / Publish multi-platform Servatrice image (push) Blocked by required conditions
* [VisualDatabase] Keep the card grid scrolling on macOS

The view ignored the wheel whenever the vertical scroll bar was not
visible. On macOS, scroll bars are transient: once the fade-out finishes,
QScrollbarStyleAnimation hides the scroll bar widget, so isVisible() then
reports false even though the grid has more rows to scroll. Scrolling was
dead until something else brought the bar back.

Gate on the scroll bar's range instead: it says whether there is anything
to scroll, while visibility is only about presentation. An event with no
range to scroll is still ignored, so an enclosing scroll area can take it.

* Update card_database_visual_view.cpp

---------

Co-authored-by: Lukas Brübach <Bruebach.Lukas@bdosecurity.de>
2026-11-02 18:18:19 +01:00
Christian Daniel Jensen
ba7da5ef8f Fix Essence test linker error by including generated version_string.cpp 2026-11-02 06:01:10 -07:00
Christian Daniel Jensen
fd352db2f5 Display Essence-based curve analytics without MTG color assumptions 2026-11-02 05:58:37 -07:00
Christian Daniel Jensen
a896c0392c Display Essence-based curve analytics without MTG color assumptions 2026-11-02 05:58:34 -07:00
Christian Daniel Jensen
a1ce48651f Display Essence-based curve analytics without MTG color assumptions 2026-11-02 05:58:31 -07:00
Christian Daniel Jensen
c3d0ccee60 Display Essence-based curve analytics without MTG color assumptions 2026-11-02 05:58:28 -07:00
Christian Daniel Jensen
781f37b2a4 Preserve readable colors for non-Essence categories in shared chart components 2026-11-02 05:57:57 -07:00
Christian Daniel Jensen
f0adc0eaa6 Avoid Qt-version-specific qMakePair helper in Essence chart ordering 2026-11-02 05:56:44 -07:00
Christian Daniel Jensen
ff660daa71 Parse generic numeric quantities in braces without adding unsupported Essence types 2026-11-02 05:56:24 -07:00
Christian Daniel Jensen
4632b1e017 Document canonical Essence types, XML4 properties, icon overrides and tests 2026-11-02 05:56:07 -07:00
Christian Daniel Jensen
13c22a9610 Make card database Essence filters honor all 15 symbols and N colorless 2026-11-02 05:55:40 -07:00
Christian Daniel Jensen
0b5569398f Register Essence parsing tests and shared symbol headers in CMake 2026-11-02 05:54:55 -07:00
Christian Daniel Jensen
2879e3b9cb Register Essence parsing tests and shared symbol headers in CMake 2026-11-02 05:54:52 -07:00
Christian Daniel Jensen
cc47009198 Add regression tests for all fifteen Essence symbols and native XML properties 2026-11-02 05:54:41 -07:00
Christian Daniel Jensen
9dc118137d Update Essence statistics, filters and distribution panels for all fifteen symbols 2026-11-02 05:53:49 -07:00
Christian Daniel Jensen
5eefdf608f Update Essence statistics, filters and distribution panels for all fifteen symbols 2026-11-02 05:53:46 -07:00
Christian Daniel Jensen
68636bca7e Update Essence statistics, filters and distribution panels for all fifteen symbols 2026-11-02 05:53:42 -07:00
Christian Daniel Jensen
3f7a1003d1 Update Essence statistics, filters and distribution panels for all fifteen symbols 2026-11-02 05:53:40 -07:00
Christian Daniel Jensen
7fe590d54d Update Essence statistics, filters and distribution panels for all fifteen symbols 2026-11-02 05:53:38 -07:00
Christian Daniel Jensen
bd197ecf56 Update Essence statistics, filters and distribution panels for all fifteen symbols 2026-11-02 05:53:35 -07:00
Christian Daniel Jensen
faa459ac24 Use chart-only Essence palettes and canonical Essence ordering 2026-11-02 05:53:19 -07:00