#### Brief overview of PR changes/additions
Convert raw millisecond integer literals at time-duration call sites to
`std::chrono` literals, and add `#include <chrono>` to each touched
translation unit. Examples:
- `QTimer::singleShot(0, ...)` → `QTimer::singleShot(0ms, ...)`
- `mpTimerReplay->setInterval(1000)` → `setInterval(1s)`
- `mPendingTimer.start(60000)` → `start(1min)`
- `QObject::startTimer(50)` → `startTimer(50ms)`
- `QTest::qWait(100)` → `QTest::qWait(100ms)`
- `QThread::msleep(10)` → `QThread::sleep(10ms)`
This is a semantics-preserving refactor - every duration is kept exactly
equal to before (e.g. `1000` ms becomes `1s`, `60000` ms becomes
`1min`). No behavioural change.
#### Motivation for adding to Mudlet
Chrono literals make time durations self-documenting and type-safe. `1s`
/ `100ms` read unambiguously where a bare `1000` / `100` forces the
reader to remember each API's unit, and the compiler now rejects unit
mismatches. Only genuine duration arguments were converted - loop
counts, scroll-line counts, sizes, ports and the like were deliberately
left as plain integers.
All targeted APIs provide `std::chrono` overloads in the minimum
supported Qt (6.8.2): `QTimer::singleShot`/`start`/`setInterval` (5.8),
`QObject::startTimer` (5.9), `QThread::sleep(std::chrono::nanoseconds)`
(6.6) and `QTest::qWait(std::chrono::milliseconds)` (6.7).
#### Other info (issues closed, discussion etc)
Test case: the full application builds cleanly and the entire functional
`ctest` suite passes. The only failing test is the known, pre-existing
`PasswordMigrationTest` LSan exit-leak (GTK3/fontconfig noise), which is
unrelated to this change.
Assisted-by: Claude:claude-opus-4-8
#### Brief overview of PR changes/additions
- TelnetServerStub now binds an OS-assigned (ephemeral) port; its log
reports the actual bound port
- All 11 functional tests that hardcoded listen ports (three shared port
4000, two pairs shared 4003/4004) now read the real port back via
serverPort()
#### Motivation for adding to Mudlet
Concurrent test runs (parallel CI jobs, multiple checkouts on one
machine) collided on the fixed ports, causing flaky bind failures and
tests connecting to the wrong run's server.
#### Other info (issues closed, discussion etc)
Follows the pattern GMCPCharLoginTest already used. Verified by running
two copies of TelnetTextDisplayedTest simultaneously - both passed on
distinct ports (37503/42303), impossible before.
**Test case:** Run the functional suite twice in parallel (two build
dirs or ctest -j2 repeated); no "address already in use" failures.
Assisted-by: Claude:claude-opus-4-8
#### Brief overview of PR changes/additions
- A plain left-click into the main console (e.g. to give it focus) no
longer leaves a stray one-character selection behind.
- Root cause: `TTextEdit::mouseMoveEvent` began a selection on *any*
move while tracking, even when the pointer was still on the same
character cell as the press — so the sub-pixel jitter of an ordinary
click highlighted one character, and `mouseReleaseEvent` never cleared
it.
- Fix: a plain left-drag now only starts a selection once the pointer
reaches a *different* character cell than the press point. Multi-click
(word/line) and Ctrl selections are established in `mousePressEvent` and
are untouched.
- Adds a functional regression test (`MainConsoleSelectionTest`): a
click with no drag leaves no selection, and a genuine drag still
selects.
#### Motivation for adding to Mudlet
That stray one-character selection hijacked copying from the command
line — `TCommandLine` prioritises any console selection over the input
box on Ctrl+C, so <kbd>Ctrl</kbd>+<kbd>A</kbd> then
<kbd>Ctrl</kbd>+<kbd>C</kbd> in the input would copy the single
highlighted character instead of the typed command.
#### Other info (issues closed, discussion etc)
Fixes#3922
#### Test case
1. Type some text into the command-line input box.
2. Left-click once somewhere in the main window text area to focus it
(don't drag).
3. <kbd>Ctrl</kbd>+<kbd>A</kbd> in the input box, then
<kbd>Ctrl</kbd>+<kbd>C</kbd>.
4. Paste — you should get the full command-line text, **not** a single
character from the main window.
5. Confirm a real drag-selection in the main window still works and
still wins Ctrl+C as before.
Automated: `ctest -R MainConsoleSelectionTest` — RED before the fix
(fails at the no-drag assertion), GREEN after. `TOscTest` (console
hyperlink-click handling) still passes, confirming no regression to
click handling.
---------
Signed-off-by: Ethan Hussong <ethan@ethanhussong.com>