Background
PR #3044 (just merged, closes #1836) added an aliasing fallback in `AppletPanel::dropEvent` so composite tiles whose internal `ContainerWidget.m_id` differs from their owning `AppletEntry.id` (the TXDSP case: `tx_dsp` vs `TXDSP`) still reorder correctly via drag.
The aliasing works automatically — but the contract is implicit. The drag MIME is set in `ContainerWidget::onTitleBarDragStart` (`src/gui/containers/ContainerWidget.cpp:150`) from `m_id`, while the receiving lookup in `AppletPanel.cpp` has the fallback. A future composite-tile author has to know to look at the receiving side to understand why their `m_id != AppletEntry.id` case works.
Proposed fix
Add a brief comment at the MIME-set line in `ContainerWidget::onTitleBarDragStart` cross-referencing the alias fallback in `AppletPanel::dropEvent`. Something like:
```cpp
// Note: the MIME id here is the container's m_id. For composite tiles
// whose AppletEntry.id differs from m_id (e.g. TXDSP wraps a tx_dsp
// container), AppletPanel::dropEvent has an aliasing fallback that
// catches the mismatch by looking up the container instead. See #1836.
mime->setData("application/x-aethersdr-applet", m_id.toUtf8());
```
Effort
~1 minute. Single-line comment addition. No behavioral change.
Eligibility
`aetherclaude-eligible` candidate — pure documentation.
Spotted by
Bot review on PR #3044 — observation #1: "drift risk — worth a one-liner in ContainerWidget::onTitleBarDragStart referencing this fallback so the contract is discoverable from both ends."
Background
PR #3044 (just merged, closes #1836) added an aliasing fallback in `AppletPanel::dropEvent` so composite tiles whose internal `ContainerWidget.m_id` differs from their owning `AppletEntry.id` (the TXDSP case: `tx_dsp` vs `TXDSP`) still reorder correctly via drag.
The aliasing works automatically — but the contract is implicit. The drag MIME is set in `ContainerWidget::onTitleBarDragStart` (`src/gui/containers/ContainerWidget.cpp:150`) from `m_id`, while the receiving lookup in `AppletPanel.cpp` has the fallback. A future composite-tile author has to know to look at the receiving side to understand why their `m_id != AppletEntry.id` case works.
Proposed fix
Add a brief comment at the MIME-set line in `ContainerWidget::onTitleBarDragStart` cross-referencing the alias fallback in `AppletPanel::dropEvent`. Something like:
```cpp
// Note: the MIME id here is the container's m_id. For composite tiles
// whose AppletEntry.id differs from m_id (e.g. TXDSP wraps a tx_dsp
// container), AppletPanel::dropEvent has an aliasing fallback that
// catches the mismatch by looking up the container instead. See #1836.
mime->setData("application/x-aethersdr-applet", m_id.toUtf8());
```
Effort
~1 minute. Single-line comment addition. No behavioral change.
Eligibility
`aetherclaude-eligible` candidate — pure documentation.
Spotted by
Bot review on PR #3044 — observation #1: "drift risk — worth a one-liner in ContainerWidget::onTitleBarDragStart referencing this fallback so the contract is discoverable from both ends."