- Connect aMoveToCommandZone to cmMoveToCommandZone; the menu item was
added, shown, and shortcut-bound but never wired, so it did nothing
- Extract evaluateModifyCounter() and route cmdIncCounter/cmdSetCounter
through it, replacing isCommandZoneCounterBlocked; reject inc/set on
an inactive tax counter so a hidden counter cannot accumulate value
- Reject reserved tax counter names in cmdCreateCounter to prevent a
client from spoofing a system tax counter via a user-created counter
- Route AbstractCounter::valueChanged through the virtual setValue() so
CommanderTaxCounter clamps and refreshes its tooltip on value changes
- Deduplicate actPlayAndIncreaseTax/actPlayAndIncreasePartnerTax into a
single playAndIncreaseTax(counterId) helper
- Move MINIMUM_STACKING_HEIGHT from CommandZone to the PlayerGraphicsItem
layout code, its only consumer
- Remove unused AbstractCounter forward declaration from player_logic.h
- Add EvaluateModifyCounter tests and PartnerTax cases for
evaluateSetCounterActive
- Pin the FirstUserId floor in new_counter_id_test using ids 3 and 5 so
a naive "highest id + 1" regression fails the test
- Sync command zone visibility in the PlayerGraphicsItem constructor in case processPlayerInfo runs before the signal is connected.
- Emit CommandZone::effectiveHeightChanged() when a minimized zone's height changes so the stack zone repositions.
- Make AbstractCounter::setActive() the sole owner of counter visibility; document the contract.
- Drop the redundant setVisible() from CommandZone::rearrangeTaxCounters(); it now only lays out by isActive().
- Format tax log lines with a single atomic 4-arg arg() instead of mixing string and int overloads.
- Initialize commandZoneGraphicsItem to nullptr so the pervasive null
checks have defined behavior before initializeZones() runs
- Remove unused getTaxCounterWidgets()
- Enforce the "reset tax to 0 before deactivating" invariant server-side
in cmdSetCounterActive, not just in the UI
- Hide tax increment/decrement menu actions at their bounds (0 and
MAX_COUNTER_VALUE) to avoid sending no-op commands
- Drop redundant/inconsistent toggle labels from CommandZoneMenu::
retranslateUi(); updateTaxCounterActionStates() owns them
- Add default=-1 to Event_SetCounterActive.counter_id for parity with
Command_SetCounterActive
- Add missing isCommandZoneCounterBlocked check to cmdSetCounterActive
- Revert accidental deck view layout change from b4057a86
- Fix duplicate @param in playSelectedCardsImpl doc
- Add null check for PlayerLogic in CommandZoneMenu constructor
- Add index bounds check in CommandZone handleDropEvent
- Add index bounds check in StackZone handleDropEvent
- Add ownership comment for tax counter widget creation
- Add command zone to zoneGraphicsItems map
- Conditionally show command zone menu item based on server support
- Remove layer-violating includes from player_logic.cpp
- Fix tax counter increment (1 per cast, not 2)
- Add getTaxCounterIfActive() helper to PlayerGraphicsItem
1. CommandZoneMenu: Changed to take PlayerGraphicsItem* instead of
PlayerLogic*, accessing logic via player->getLogic()
2. Removed getCounterWidget() from PlayerLogic;
method already exists correctly in PlayerGraphicsItem
3. PlayerMenu: CommandZoneMenu, fixed signal
connection to use player->getLogic() for commandZoneSupportChanged
4. AbstractCounter: Connects to CounterState::activeChanged signal,
removing direct graphics calls from PlayerEventHandler
5. CommandZone: Explicit tax counter registration via registerTaxCounter()
with auto-cleanup, replacing childItems()/dynamic_cast iteration
Also fixed PlayerActions to query CounterState instead of AbstractCounter
for proper layer separation.
- Add CommandZone and CommandZoneLogic for commander
- Add CommanderTaxCounter
- Add counter active state protocol (show/hide tax counters)
- Add "Enable Command Zone" option in game creation dialogs
- Add context menu actions for command zone operations
Took 9 minutes
Took 11 minutes
* [UserList] Bulk load to prevent hang on connect, fix multi-monitor positioning
Took 48 minutes
* Extract slot to method
Took 10 minutes
---------
Co-authored-by: Lukas Brübach <Bruebach.Lukas@bdosecurity.de>
* [DeckEditor] Use CommanderSpellbook.com to estimate bracket if format is 'commander'
Took 2 minutes
Took 16 minutes
* Convert json data holder to structs, rename variables, extract widget
- Extract bracket estimation UI from DeckEditorDeckDockWidget into a
new CommanderBracketWidget
- Move CommanderSpellbook integration settings from CardsDisplaySettings
to DeckEditorSettings (matching the settings refactor on master)
- Rename CommanderSpellbook integration variables to drop the redundant
'DeckEditor' prefix
Took 4 minutes
# Commit time for manual adjustment:
# Took 6 minutes
# Commit time for manual adjustment:
# Took 8 minutes
---------
Co-authored-by: Lukas Brübach <Bruebach.Lukas@bdosecurity.de>
* [Settings] Shuffle some settings around
Took 21 minutes
Took 1 hour 25 minutes
* [Settings] Camel case everything
* Revert debug schema change
* Add new classes
* Fix card counters writing to global
* Fix CI tests
* Fix Windows CI
* interface() is a protected keyword for MSVC
Took 5 minutes
Took 5 seconds
* [Settings] Keep menu settings on the appearance settings page
Leave the 'Menu settings' group box on the appearance settings page for
now; relocating it to the user interface settings page will be done in a
separate PR.
Took 6 minutes
---------
Co-authored-by: Lukas Brübach <Bruebach.Lukas@bdosecurity.de>
* [Settings] Implement search
Took 38 minutes
Took 8 seconds
Took 9 minutes
Took 5 seconds
Took 44 seconds
Took 25 seconds
* Comments
Took 23 minutes
Took 15 seconds
* Comments
Took 1 hour 14 minutes
* Minor fixes to search
Took 13 minutes
---------
Co-authored-by: Lukas Brübach <Bruebach.Lukas@bdosecurity.de>
* [Chat] Don't tag cards that have no match in the database (#2217)
Took 6 minutes
Took 4 minutes
* Highlight not found but attempted tag
Took 6 minutes
* Change color to not be server message color
Took 3 minutes
---------
Co-authored-by: Lukas Brübach <Bruebach.Lukas@bdosecurity.de>
* [CI] Remove Qt5
Took 10 minutes
Took 9 minutes
* Revert CI failure and fix up comments
Took 4 minutes
---------
Co-authored-by: Lukas Brübach <Bruebach.Lukas@bdosecurity.de>
* [Application] Add single instance guard and mime types.
Took 2 hours 39 minutes
Took 18 minutes
Took 5 minutes
Took 12 seconds
Took 11 seconds
* Rework
Took 30 minutes
Took 50 seconds
* Only enforce single instance if launched with arguments.
Took 5 minutes
* Prototype intents
Took 53 minutes
Took 6 seconds
* Connect/disconnect and join game/room intents.
Took 3 hours 14 minutes
Took 2 seconds
Took 15 seconds
* Fix include.
Took 1 minute
Took 23 seconds
Took 2 seconds
* Mac handling.
Took 10 minutes
Took 12 seconds
Took 3 minutes
* Lint.
Took 3 minutes
* Rebase.
Took 3 minutes
Took 17 seconds
* Implement UrlSchemeEventFilter
Took 10 minutes
Took 7 seconds
* Qt Moc
Took 3 minutes
* Modern PList.
Took 21 minutes
Took 1 minute
* Debug output.
Took 6 minutes
Took 19 minutes
* Watch file:// prefix.
Took 15 minutes
Took 7 seconds
* Better handler.
Took 6 minutes
* Don't store reference in member
Took 5 minutes
* Move impl to cpp, fix lifetime issues.
Took 11 minutes
Took 2 minutes
* Better single-instance handoff, url intent harded
copy game link context-menu
Polish for installers
Took 35 minutes
Took 8 seconds
---------
Co-authored-by: Lukas Brübach <Bruebach.Lukas@bdosecurity.de>
* [ConnectDialog] Focus login field after selecting a server (#3346)
Took 12 minutes
* [UpdateDialog] Center update message boxes over the main window (#3538)
---------
Co-authored-by: Lukas Brübach <Bruebach.Lukas@bdosecurity.de>
* [Card Database] Improve loading times through binary cache
Took 10 minutes
Took 9 minutes
Took 16 seconds
* [Card Database] Remove lib qt include
Took 18 minutes
Took 14 seconds
* Downgrade to 6.3 datastream
Took 5 minutes
* go up to 6.4 datastream
Took 1 minute
* Address comments
* Small bug fixes
Took 20 minutes
Took 10 seconds
* More fixes.
Took 4 minutes
Took 4 seconds
* Even more fixes.
Took 11 minutes
Took 4 seconds
* More fixes.
Took 6 minutes
Took 26 seconds
Took 8 minutes
* Namespace instead of class
Took 6 minutes
---------
Co-authored-by: Lukas Brübach <Bruebach.Lukas@bdosecurity.de>
* [Networking] Doxygen
* Lint cause my autolinter is broken lol
* Update.
* Update Doxyfile
Co-authored-by: tooomm <tooomm@users.noreply.github.com>
* Alphabetical ordering
Co-authored-by: tooomm <tooomm@users.noreply.github.com>
* Add new card art rule comment
* move filter program into doxygen folder
* [Networking] Doxygen
Took 49 seconds
* [Networking] Doxygen
Took 2 hours 0 minutes
Took 58 minutes
Took 8 seconds
Took 29 seconds
Took 4 minutes
Took 1 minute
Took 4 minutes
* [Networking] Fix Doxyfile
Took 2 hours 0 minutes
Took 58 minutes
Took 8 seconds
Took 29 seconds
Took 4 minutes
Took 1 minute
Took 6 minutes
* [Networking] Fix Doxyfile
Took 2 hours 0 minutes
Took 58 minutes
Took 8 seconds
Took 29 seconds
Took 4 minutes
Took 1 minute
Took 3 minutes
* [Networking] Fix Doxyfile again
Took 2 hours 0 minutes
Took 58 minutes
Took 8 seconds
Took 29 seconds
Took 4 minutes
Took 1 minute
Took 2 minutes
---------
Co-authored-by: Lukas Brübach <lukas.bruebach@bdosecurity.de>
Co-authored-by: tooomm <tooomm@users.noreply.github.com>
Co-authored-by: Lukas Brübach <Bruebach.Lukas@bdosecurity.de>
* [Settings] Split cache_settings into multiple files
Took 9 minutes
Took 4 minutes
* [Settings] Fwd declare settings classes in cache_settings
Took 15 minutes
* Fix oracle includes.
Took 8 minutes
* Address comments, fix windows CI
Took 8 minutes
* fix copy constructor visibility
Took 3 minutes
* lint
Took 2 minutes
* Fix native format tests.
Took 5 minutes
* Remove test header guard
Took 4 seconds
* Remove tests invalid in CI environ
Took 24 seconds
* Adjust to rebase.
Took 11 minutes
* Change settings file name.
Took 8 minutes
---------
Co-authored-by: Lukas Brübach <lukas.bruebach@bdosecurity.de>
Co-authored-by: Lukas Brübach <Bruebach.Lukas@bdosecurity.de>
* [PaletteEditor] Ensure directory is writeable, don't fall back to alternate palette.
Took 17 minutes
* [ThemeManager] Extract system theme dir path resolution to helper, use it in default palette fetching
Took 8 minutes
* [ThemeManager] Expose styling again
Took 3 minutes
* [ThemeManager] Capture app palette before theme is applied for reverting
* [ThemeManager] Simply delete custom palette instead of reverting to default
* [ThemeManager] Generate and apply immediately on change.
* [PaletteEditor] Block grid signals during initial loading.
Took 5 minutes
* Address comments
Took 8 minutes
* Seed accent from scheme on reset and revert
Took 2 minutes
---------
Co-authored-by: Lukas Brübach <Bruebach.Lukas@bdosecurity.de>
* [Game] Refactor subtype tally code to be more generic
* remove default case
* consolidate empty check
* fix include guard
* backwards compatibility with qt5