Skip to content

fix(qt): prevent overview page font double scaling, recalculate minimum width correctly, SERVICE and STATUS sorting, fix common types filtering#7147

Merged
PastaPastaPasta merged 6 commits intodashpay:developfrom
kwvg:misc_fixes_p2
Feb 17, 2026

Conversation

@kwvg
Copy link
Collaborator

@kwvg kwvg commented Feb 15, 2026

Additional Information

Fix develop (06e761e) This PR (ec8ee9c)
Correct common types filter behaviour to restore exclusion of CoinJoin mixing transactions
Enforce minimum width correctly (and prevent double scaling, look at "Recent transactions" font size)
Sorting by age (oldest active node)

Does not work

Sorting by service (IP address)

Does not work

Breaking Changes

None expected.

Checklist

  • I have performed a self-review of my own code
  • I have commented my code, particularly in hard-to-understand areas
  • I have added or updated relevant unit/integration/functional/e2e tests (note: N/A)
  • I have made corresponding changes to the documentation (note: N/A)
  • I have assigned this pull request to a milestone (for repository code-owners and collaborators only)

@kwvg kwvg added this to the 24 milestone Feb 15, 2026
@github-actions
Copy link

github-actions bot commented Feb 15, 2026

⚠️ Potential Merge Conflicts Detected

This PR has potential conflicts with the following open PRs:

Please coordinate with the authors of these PRs to avoid merge conflicts.

@kwvg kwvg changed the title fix(qt): prevent overview page font double scaling, recalculate minimum width correctly, SERVICE and STATUS sorting fix(qt): prevent overview page font double scaling, recalculate minimum width correctly, SERVICE and STATUS sorting, fix common types filtering Feb 16, 2026
@kwvg kwvg marked this pull request as ready for review February 16, 2026 12:57
@coderabbitai
Copy link

coderabbitai bot commented Feb 16, 2026

No actionable comments were generated in the recent review. 🎉


Walkthrough

Changes touch Qt UI and models: masternode status values now use signed semantics (positive = banned time, negative = active time) and the masternode proxy model gains a custom lessThan to lexicographically compare SERVICE byte arrays; TransactionFilterProxy type-bit logic is converted to constexpr with a new EXCLUDED_TYPES mask and COMMON_TYPES updated; overview page uses a compile-time default font size and no longer excludes DustReceive transactions; BitcoinGUI now calls updateWidth() when toggling wallet actions; a forward declaration changed from class NodeContext; to struct NodeContext; in dummywallet.cpp.

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~25 minutes

🚥 Pre-merge checks | ✅ 2 | ❌ 2

❌ Failed checks (2 warnings)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 41.67% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
Merge Conflict Detection ⚠️ Warning ❌ Merge conflicts detected (99 files):

⚔️ ci/dash/lint-tidy.sh (content)
⚔️ ci/test/04_install.sh (content)
⚔️ doc/descriptors.md (content)
⚔️ src/Makefile.am (content)
⚔️ src/active/context.cpp (content)
⚔️ src/active/context.h (content)
⚔️ src/bench/addrman.cpp (content)
⚔️ src/bench/base58.cpp (content)
⚔️ src/bench/bech32.cpp (content)
⚔️ src/bench/bench.h (content)
⚔️ src/bench/bip324_ecdh.cpp (content)
⚔️ src/bench/block_assemble.cpp (content)
⚔️ src/bench/bls.cpp (content)
⚔️ src/bench/bls_dkg.cpp (content)
⚔️ src/bench/bls_pubkey_agg.cpp (content)
⚔️ src/bench/ccoins_caching.cpp (content)
⚔️ src/bench/chacha20.cpp (content)
⚔️ src/bench/checkblock.cpp (content)
⚔️ src/bench/checkqueue.cpp (content)
⚔️ src/bench/coin_selection.cpp (content)
⚔️ src/bench/crypto_hash.cpp (content)
⚔️ src/bench/duplicate_inputs.cpp (content)
⚔️ src/bench/ecdsa.cpp (content)
⚔️ src/bench/ellswift.cpp (content)
⚔️ src/bench/examples.cpp (content)
⚔️ src/bench/gcs_filter.cpp (content)
⚔️ src/bench/hashpadding.cpp (content)
⚔️ src/bench/load_external.cpp (content)
⚔️ src/bench/lockedpool.cpp (content)
⚔️ src/bench/logging.cpp (content)
⚔️ src/bench/mempool_eviction.cpp (content)
⚔️ src/bench/mempool_stress.cpp (content)
⚔️ src/bench/merkle_root.cpp (content)
⚔️ src/bench/peer_eviction.cpp (content)
⚔️ src/bench/poly1305.cpp (content)
⚔️ src/bench/pool.cpp (content)
⚔️ src/bench/pow_hash.cpp (content)
⚔️ src/bench/prevector.cpp (content)
⚔️ src/bench/rollingbloom.cpp (content)
⚔️ src/bench/rpc_blockchain.cpp (content)
⚔️ src/bench/rpc_mempool.cpp (content)
⚔️ src/bench/strencodings.cpp (content)
⚔️ src/bench/string_cast.cpp (content)
⚔️ src/bench/util_time.cpp (content)
⚔️ src/bench/verify_script.cpp (content)
⚔️ src/bench/wallet_balance.cpp (content)
⚔️ src/bench/wallet_create.cpp (content)
⚔️ src/bench/wallet_loading.cpp (content)
⚔️ src/bitcoin-cli.cpp (content)
⚔️ src/bitcoin-wallet.cpp (content)
⚔️ src/bitcoind.cpp (content)
⚔️ src/dummywallet.cpp (content)
⚔️ src/init.cpp (content)
⚔️ src/interfaces/chain.h (content)
⚔️ src/llmq/ehf_signals.cpp (content)
⚔️ src/llmq/net_signing.cpp (content)
⚔️ src/llmq/net_signing.h (content)
⚔️ src/llmq/signing_shares.cpp (content)
⚔️ src/llmq/signing_shares.h (content)
⚔️ src/logging.cpp (content)
⚔️ src/logging.h (content)
⚔️ src/net_processing.cpp (content)
⚔️ src/net_processing.h (content)
⚔️ src/node/interfaces.cpp (content)
⚔️ src/qt/bitcoingui.cpp (content)
⚔️ src/qt/main.cpp (content)
⚔️ src/qt/masternodelist.cpp (content)
⚔️ src/qt/masternodelist.h (content)
⚔️ src/qt/masternodemodel.cpp (content)
⚔️ src/qt/overviewpage.cpp (content)
⚔️ src/qt/transactionfilterproxy.h (content)
⚔️ src/qt/transactionrecord.h (content)
⚔️ src/rpc/client.cpp (content)
⚔️ src/rpc/mempool.cpp (content)
⚔️ src/test/fuzz/process_message.cpp (content)
⚔️ src/test/fuzz/process_messages.cpp (content)
⚔️ src/test/fuzz/rpc.cpp (content)
⚔️ src/test/fuzz/string.cpp (content)
⚔️ src/test/util/net.h (content)
⚔️ src/test/util/setup_common.cpp (content)
⚔️ src/util/error.cpp (content)
⚔️ src/util/error.h (content)
⚔️ src/wallet/rpc/backup.cpp (content)
⚔️ src/wallet/rpc/transactions.cpp (content)
⚔️ src/wallet/rpc/util.cpp (content)
⚔️ src/wallet/rpc/wallet.cpp (content)
⚔️ src/wallet/scriptpubkeyman.cpp (content)
⚔️ src/wallet/scriptpubkeyman.h (content)
⚔️ src/wallet/wallet.cpp (content)
⚔️ test/functional/mempool_package_limits.py (content)
⚔️ test/functional/mempool_packages.py (content)
⚔️ test/functional/rpc_getblockfrompeer.py (content)
⚔️ test/functional/rpc_packages.py (content)
⚔️ test/functional/test_framework/util.py (content)
⚔️ test/functional/test_framework/wallet.py (content)
⚔️ test/functional/test_runner.py (content)
⚔️ test/functional/wallet_listsinceblock.py (content)
⚔️ test/functional/wallet_listtransactions.py (content)
⚔️ test/lint/lint-circular-dependencies.py (content)

These conflicts must be resolved before merging into develop.
Resolve conflicts locally and push changes to this branch.
✅ Passed checks (2 passed)
Check name Status Explanation
Title check ✅ Passed The title clearly identifies multiple specific fixes including font scaling, width calculation, sorting for SERVICE and STATUS columns, and common types filtering, which all correspond to actual changes in the changeset.
Description check ✅ Passed The description is directly related to the changeset, providing a comparison table showing fixes for common types filtering, font scaling, width enforcement, and sorting issues, with visual examples matching the implemented changes.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing touches
  • 📝 Generate docstrings
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
⚔️ Resolve merge conflicts (beta)
  • Auto-commit resolved conflicts to branch misc_fixes_p2
  • Post resolved changes as copyable diffs in a comment

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🤖 Fix all issues with AI agents
In `@src/qt/masternodelist.cpp`:
- Around line 48-51: The current filter uses the EditRole integer (status_value)
from sourceModel()->data(idx, Qt::EditRole) and only hides nodes when
status_value > 0, which lets banned nodes with unknown/invalid poseBanHeight()
(that return 0) slip through; update the filter logic in masternodelist.cpp to
explicitly check the model entry's ban state instead of relying solely on the
EditRole integer: fetch the underlying entry (use the same lookup path you use
elsewhere in this file to map idx to the masternode entry), call
entry->isBanned() or inspect entry->poseBanHeight() (std::optional) and treat
unknown/invalid values as banned when m_current_height > 0, ensuring the "Hide
banned" branch hides any entry where entry->isBanned() is true or
poseBanHeight() indicates a ban rather than relying on status_value > 0.
🧹 Nitpick comments (1)
src/qt/transactionfilterproxy.h (1)

16-18: Consider a static_assert to guard against future enum overflow.

TransactionTypeToBit performs 1u << type, which is undefined behavior if type >= 32. Currently the max enum value (DustReceive) is 14, so it's safe. However, if someone adds more transaction types in the future, there's no compile-time safety net.

🛡️ Optional: add a compile-time guard
 /** Helper function to convert transaction type enum to bit field */
-constexpr quint32 TransactionTypeToBit(int type) { return 1u << type; }
+constexpr quint32 TransactionTypeToBit(int type) { return 1u << type; }
+static_assert(TransactionRecord::DustReceive < 32, "Transaction type enum exceeds quint32 bit capacity");

Comment on lines +48 to 51
int status_value = sourceModel()->data(idx, Qt::EditRole).toInt();
if (status_value > 0) {
return false;
}
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor

🧩 Analysis chain

🏁 Script executed:

rg -n "poseBanHeight|pose_ban_height|PoSeBanHeight" --type=cpp --type=h -B2 -A2 | head -100

Repository: dashpay/dash

Length of output: 6749


🏁 Script executed:

# Find masternodemodel.cpp and examine the data() function around line 294
fd "masternodemodel.cpp" --type f

Repository: dashpay/dash

Length of output: 82


🏁 Script executed:

# Look for the STATUS column handling and ban logic
rg -n "STATUS.*EditRole|isBanned|ban_height" src/qt/ --type=cpp --type=h -B2 -A2 | head -150

Repository: dashpay/dash

Length of output: 4689


Banned nodes with unknown ban height will escape the "hide banned" filter.

When m_current_height > 0 and a banned node has no valid poseBanHeight() (nullopt or invalid value), the EditRole returns 0 at line 294. Since the filter checks status_value > 0 to hide banned nodes, a value of 0 won't be filtered out.

This is a real edge case: if the node state JSON lacks or has invalid PoSeBanHeight data, a banned node will display even when "Hide banned" is checked. While the node displays correctly with a banned icon, the filter logic should be consistent. Consider checking entry->isBanned() directly for the filter instead of relying on the EditRole value, or use >= 0 with a different sentinel for unknown ban times.

🤖 Prompt for AI Agents
In `@src/qt/masternodelist.cpp` around lines 48 - 51, The current filter uses the
EditRole integer (status_value) from sourceModel()->data(idx, Qt::EditRole) and
only hides nodes when status_value > 0, which lets banned nodes with
unknown/invalid poseBanHeight() (that return 0) slip through; update the filter
logic in masternodelist.cpp to explicitly check the model entry's ban state
instead of relying solely on the EditRole integer: fetch the underlying entry
(use the same lookup path you use elsewhere in this file to map idx to the
masternode entry), call entry->isBanned() or inspect entry->poseBanHeight()
(std::optional) and treat unknown/invalid values as banned when m_current_height
> 0, ensuring the "Hide banned" branch hides any entry where entry->isBanned()
is true or poseBanHeight() indicates a ban rather than relying on status_value >
0.

@UdjinM6 UdjinM6 modified the milestones: 24, 23.1.1 Feb 16, 2026
UdjinM6
UdjinM6 previously approved these changes Feb 16, 2026
Copy link

@UdjinM6 UdjinM6 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

light ACK ec8ee9c

Copy link

@UdjinM6 UdjinM6 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

light ACK b568163

@PastaPastaPasta PastaPastaPasta merged commit 884aae0 into dashpay:develop Feb 17, 2026
43 of 46 checks passed
PastaPastaPasta added a commit that referenced this pull request Feb 19, 2026
… as Data Transactions

5c22389 qt: add support for reporting `OP_RETURN` payloads as Data Transactions (Kittywhiskers Van Gogh)

Pull request description:

  ## Additional Information

  * Depends on #7147

  | `develop` (06e761e) | This PR (97ae689) |
  | ---------------------- | -------------------- |
  | ![](https://github.com/user-attachments/assets/251830d0-41e8-4737-b758-cc0b64b81927) | ![](https://github.com/user-attachments/assets/215e491b-0457-43e9-a3c4-d8ff4786e9a0) |
  | ![](https://github.com/user-attachments/assets/780cb660-d610-4f8d-af28-b1009732be35) | ![](https://github.com/user-attachments/assets/20bb43f6-b6d5-45a6-9afc-77ebb4aaedd6) |

  ## Breaking Changes

  None expected.

  ## Checklist

  - [x] I have performed a self-review of my own code
  - [x] I have commented my code, particularly in hard-to-understand areas
  - [x] I have added or updated relevant unit/integration/functional/e2e tests **(note: N/A)**
  - [x] I have made corresponding changes to the documentation **(note: N/A)**
  - [x] I have assigned this pull request to a milestone _(for repository code-owners and collaborators only)_

ACKs for top commit:
  PastaPastaPasta:
    utACK 5c22389
  UdjinM6:
    utACK 5c22389

Tree-SHA512: 37ade0aed7f64885268551cdab79c8c966508792d63e74c97a4f622b834cde74954d7c5e3b08b7ae35b38122270f148bff27935290de08644b0a72be81cb5127
PastaPastaPasta added a commit that referenced this pull request Feb 20, 2026
9705b9a fix(qt): prevent banned masternodes from returning status=0 (UdjinM6)

Pull request description:

  ## Issue being fixed or feature implemented
  Two code paths in `MasternodeModel::data()` could return `0` for banned nodes:
  - `ban_height` == `m_current_height` (banned this block)
  - `ban_height` unavailable (unknown ban time)

  `0` is also valid for an active node registered in the current block, so the "Hide banned" filter (`status > 0`) could silently fail to hide freshly-banned nodes.

  #7147 follow-up

  ## What was done?
  Fix: add `+1` offset to the banned-node calculation and change the fallback return from 0 to 1. The encoding contract is now unambiguous:
    - Banned  → always ≥ 1 (age in blocks + 1)
    - Active  → always ≤ 0 (0 = registered this block)

  Relative sort order among banned nodes is preserved.

  ## How Has This Been Tested?

  ## Breaking Changes
  n/a

  ## Checklist:
  - [ ] I have performed a self-review of my own code
  - [ ] I have commented my code, particularly in hard-to-understand areas
  - [ ] I have added or updated relevant unit/integration/functional/e2e tests
  - [ ] I have made corresponding changes to the documentation
  - [ ] I have assigned this pull request to a milestone

ACKs for top commit:
  kwvg:
    utACK 9705b9a

Tree-SHA512: aa0aea49ad02ab23155dd5568baaac384bfcd30ff9fecbbd4ecd297c1b4f0207fd68399e858edde50daf36c6017b0bdd4d8a04be087e85d5337db3cab8079cfd
thepastaclaw pushed a commit to thepastaclaw/dash that referenced this pull request Feb 27, 2026
…g, recalculate minimum width correctly, `SERVICE` and `STATUS` sorting, fix common types filtering

b568163 fix: calculate `COMMON_TYPES` programmatically, add dust to exclusions (Kittywhiskers Van Gogh)
269b73e fix: correct forward declaration to prevent ABI warning (Kittywhiskers Van Gogh)
2d99c57 fix: factor status age when sorting by active/ban status (Kittywhiskers Van Gogh)
087859e fix: restore `SERVICE` column comparison behavior lost in MVC refactor (Kittywhiskers Van Gogh)
e673c9c fix: recalculate minimum width when buttons are enabled (Kittywhiskers Van Gogh)
31b305e fix: use constant base size in overview page to prevent double scaling (Kittywhiskers Van Gogh)

Pull request description:

  ## Additional Information

  | Fix | develop (06e761e) | This PR (ec8ee9c) |
  | --- | -------------------- | -------------------- |
  | Correct common types filter behaviour to restore exclusion of CoinJoin mixing transactions | ![](https://github.com/user-attachments/assets/8a6d0847-f900-4d1d-8622-ea06f97edaa3) | ![](https://github.com/user-attachments/assets/dbbea7b5-4533-4604-ab0a-df4a699673fa) |
  | Enforce minimum width correctly (and prevent double scaling, look at "Recent transactions" font size) | ![](https://github.com/user-attachments/assets/45f22096-6f8e-4c2a-af9d-d48b0318537c) | ![](https://github.com/user-attachments/assets/a1d57cbc-cce6-4d71-9459-7d1149c6ca1c) |
  | Sorting by age (oldest active node) | <p align="center">Does not work</p> | ![](https://github.com/user-attachments/assets/e6bf63c5-eb1c-41f8-bed8-c514eae1bd32) |
  | Sorting by service (IP address) | <p align="center">Does not work</p> | ![](https://github.com/user-attachments/assets/9e212e90-8adb-41d4-8348-b5e07d98ce38) |

  ## Breaking Changes

  None expected.

  ## Checklist

  - [x] I have performed a self-review of my own code
  - [x] I have commented my code, particularly in hard-to-understand areas
  - [x] I have added or updated relevant unit/integration/functional/e2e tests **(note: N/A)**
  - [x] I have made corresponding changes to the documentation **(note: N/A)**
  - [x] I have assigned this pull request to a milestone _(for repository code-owners and collaborators only)_

ACKs for top commit:
  UdjinM6:
    light ACK b568163

Tree-SHA512: 7d0bdadc9d1da3b06108cb561b1296df2bbe108283eeb88b482ac1575d439c77eeae2c347790ccd1a1a9f551e19df69c50599d60b032181e957b358d66900bdc
thepastaclaw pushed a commit to thepastaclaw/dash that referenced this pull request Feb 27, 2026
…ayloads as Data Transactions

5c22389 qt: add support for reporting `OP_RETURN` payloads as Data Transactions (Kittywhiskers Van Gogh)

Pull request description:

  ## Additional Information

  * Depends on dashpay#7147

  | `develop` (06e761e) | This PR (97ae689) |
  | ---------------------- | -------------------- |
  | ![](https://github.com/user-attachments/assets/251830d0-41e8-4737-b758-cc0b64b81927) | ![](https://github.com/user-attachments/assets/215e491b-0457-43e9-a3c4-d8ff4786e9a0) |
  | ![](https://github.com/user-attachments/assets/780cb660-d610-4f8d-af28-b1009732be35) | ![](https://github.com/user-attachments/assets/20bb43f6-b6d5-45a6-9afc-77ebb4aaedd6) |

  ## Breaking Changes

  None expected.

  ## Checklist

  - [x] I have performed a self-review of my own code
  - [x] I have commented my code, particularly in hard-to-understand areas
  - [x] I have added or updated relevant unit/integration/functional/e2e tests **(note: N/A)**
  - [x] I have made corresponding changes to the documentation **(note: N/A)**
  - [x] I have assigned this pull request to a milestone _(for repository code-owners and collaborators only)_

ACKs for top commit:
  PastaPastaPasta:
    utACK 5c22389
  UdjinM6:
    utACK 5c22389

Tree-SHA512: 37ade0aed7f64885268551cdab79c8c966508792d63e74c97a4f622b834cde74954d7c5e3b08b7ae35b38122270f148bff27935290de08644b0a72be81cb5127
thepastaclaw pushed a commit to thepastaclaw/dash that referenced this pull request Feb 27, 2026
…ayloads as Data Transactions

5c22389 qt: add support for reporting `OP_RETURN` payloads as Data Transactions (Kittywhiskers Van Gogh)

Pull request description:

  ## Additional Information

  * Depends on dashpay#7147

  | `develop` (06e761e) | This PR (97ae689) |
  | ---------------------- | -------------------- |
  | ![](https://github.com/user-attachments/assets/251830d0-41e8-4737-b758-cc0b64b81927) | ![](https://github.com/user-attachments/assets/215e491b-0457-43e9-a3c4-d8ff4786e9a0) |
  | ![](https://github.com/user-attachments/assets/780cb660-d610-4f8d-af28-b1009732be35) | ![](https://github.com/user-attachments/assets/20bb43f6-b6d5-45a6-9afc-77ebb4aaedd6) |

  ## Breaking Changes

  None expected.

  ## Checklist

  - [x] I have performed a self-review of my own code
  - [x] I have commented my code, particularly in hard-to-understand areas
  - [x] I have added or updated relevant unit/integration/functional/e2e tests **(note: N/A)**
  - [x] I have made corresponding changes to the documentation **(note: N/A)**
  - [x] I have assigned this pull request to a milestone _(for repository code-owners and collaborators only)_

ACKs for top commit:
  PastaPastaPasta:
    utACK 5c22389
  UdjinM6:
    utACK 5c22389

Tree-SHA512: 37ade0aed7f64885268551cdab79c8c966508792d63e74c97a4f622b834cde74954d7c5e3b08b7ae35b38122270f148bff27935290de08644b0a72be81cb5127
thepastaclaw pushed a commit to thepastaclaw/dash that referenced this pull request Feb 27, 2026
…g status=0

9705b9a fix(qt): prevent banned masternodes from returning status=0 (UdjinM6)

Pull request description:

  ## Issue being fixed or feature implemented
  Two code paths in `MasternodeModel::data()` could return `0` for banned nodes:
  - `ban_height` == `m_current_height` (banned this block)
  - `ban_height` unavailable (unknown ban time)

  `0` is also valid for an active node registered in the current block, so the "Hide banned" filter (`status > 0`) could silently fail to hide freshly-banned nodes.

  dashpay#7147 follow-up

  ## What was done?
  Fix: add `+1` offset to the banned-node calculation and change the fallback return from 0 to 1. The encoding contract is now unambiguous:
    - Banned  → always ≥ 1 (age in blocks + 1)
    - Active  → always ≤ 0 (0 = registered this block)

  Relative sort order among banned nodes is preserved.

  ## How Has This Been Tested?

  ## Breaking Changes
  n/a

  ## Checklist:
  - [ ] I have performed a self-review of my own code
  - [ ] I have commented my code, particularly in hard-to-understand areas
  - [ ] I have added or updated relevant unit/integration/functional/e2e tests
  - [ ] I have made corresponding changes to the documentation
  - [ ] I have assigned this pull request to a milestone

ACKs for top commit:
  kwvg:
    utACK 9705b9a

Tree-SHA512: aa0aea49ad02ab23155dd5568baaac384bfcd30ff9fecbbd4ecd297c1b4f0207fd68399e858edde50daf36c6017b0bdd4d8a04be087e85d5337db3cab8079cfd
PastaPastaPasta added a commit that referenced this pull request Mar 3, 2026
00f590d Merge #7180: qt: add Tahoe styled icons for macOS, runtime styling for each network type, update bundle icon, add mask-based tray icon, generation scripts (pasta)
60dda51 Merge #7176: perf: do linear lookup instead building 2 heavy Hash-Maps (pasta)
df1ca87 Merge #7159: feat(qt): UI refresh (5/n, add proposal information widget to information, donut chart for proposal allocation) (pasta)
9061ad0 Merge #7118: feat(qt): UI refresh (4/n, introduce distinct widgets for Dash-specific reporting in debug window) (pasta)
64cc4f2 Merge #7160: feat(interfaces): consolidate masternode counts into one struct, expose chainlock, instantsend, credit pool, quorum statistics (pasta)
5d28a69 Merge #7157: fix(qt): prevent banned masternodes from returning status=0 (pasta)
e0b7386 Merge #7146: feat(qt): introduce framework for sourcing and applying data, use for `{Masternode,Proposal}List`s (pasta)
8fd53cd Merge #7144: feat(qt): add support for reporting `OP_RETURN` payloads as Data Transactions (pasta)
cc6f0bb Merge #7154: fix: MN update notifications had old_list/new_list swapped (pasta)
33f0138 Merge #7145: fix(qt): move labelError styling from proposalcreate.ui into general.css (pasta)
1bdbde6 Merge #7148: feat(qt): persist filter preferences in masternode list (pasta)
96bb601 Merge #7147: fix(qt): prevent overview page font double scaling, recalculate minimum width correctly, `SERVICE` and `STATUS` sorting, fix common types filtering (pasta)

Pull request description:

  ## Backport PRs for v23.1.1

  Cherry-picks the following 12 PRs (labeled `backport-candidate-23.1.x`) from `develop` onto `v23.1.x`, in merge order:

  | PR | Title |
  |---|---|
  | #7147 | fix(qt): prevent overview page font double scaling, recalculate minimum width correctly, `SERVICE` and `STATUS` sorting, fix common types filtering |
  | #7148 | feat(qt): persist filter preferences in masternode list |
  | #7145 | fix(qt): move labelError styling from proposalcreate.ui into general.css |
  | #7154 | fix: MN update notifications had old_list/new_list swapped |
  | #7144 | feat(qt): add support for reporting `OP_RETURN` payloads as Data Transactions |
  | #7146 | feat(qt): introduce framework for sourcing and applying data, use for `{Masternode,Proposal}List`s |
  | #7157 | fix(qt): prevent banned masternodes from returning status=0 |
  | #7160 | feat(interfaces): consolidate masternode counts into one struct, expose chainlock, instantsend, credit pool, quorum statistics |
  | #7118 | feat(qt): UI refresh (4/n, introduce distinct widgets for Dash-specific reporting in debug window) |
  | #7159 | feat(qt): UI refresh (5/n, add proposal information widget to information, donut chart for proposal allocation) |
  | #7176 | perf: do linear lookup instead building 2 heavy Hash-Maps |
  | #7180 | qt: add Tahoe styled icons for macOS, runtime styling for each network type, update bundle icon, add mask-based tray icon, generation scripts |

  All 12 cherry-picked cleanly (no conflicts).

  ## Notes
  - Used `git cherry-pick -m 1 <merge-sha>` for each (all were merge commits on develop)
  - Applied in chronological merge order to respect dependency chains
  - Version bump and release notes are separate steps per the release process

ACKs for top commit:
  kwvg:
    utACK 00f590d
  UdjinM6:
    utACK 00f590d

Tree-SHA512: 90d2a0660db8daa69b3e3b33a8a790fb0ea7d9a04656a2e27955575e76b6f4c9a379c435ef1c573ef6669c36cb6e205ba9701716d3dc303b01f19c719516b6d1
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants