Workflow status is tracked in GitHub: https://github.com/emulebb/emulebb/issues/91. This local document is retained as an engineering spec/evidence record.
REF-025 - Remove legacy feature set — IRC, SMTP, Scheduler, first-start wizard, splash screen, legacy update checker¶
Historical reference only:
stale-v0.72a-experimental-cleanandanalysis\stale-v0.72a-experimental-cleanare retired reference sources, not active branch targets or current baselines. Use them only as provenance or idea-extraction sources; landed status is determined againstmain. See Historical References.
Summary¶
A large set of legacy features were removed wholesale in the experimental branch. None of these features are part of the core eMule transfer protocol and all have been effectively dead for years (IRC server infrastructure long gone, SMTP notification flows broken, legacy update checker pointing to dead URLs, scheduler UI redundant with OS task scheduler and REST automation). Removing them reduces binary size, eliminates dead code paths, and makes the codebase significantly easier to audit.
Current support decision: IRC, the legacy Scheduler, SMTP/email notifications, the first-run connection wizard, and the splash screen are frozen surfaces. They receive no support, no new tests, and no release-gated evidence. The preferred resolution is deletion, not compatibility shims or renewed maintenance. The broader frozen-surface policy is recorded in FROZEN-SURFACES.
MiniMule is no longer part of this frozen/removal bucket: the old IE-hosted MiniMule was deleted, and the current native MiniMule is an eMuleBB-owned surface.
Revalidation — 2026-04-13¶
Current main still compiles and/or constructs the full legacy feature set listed here:
emule.vcxprojstill includesIrcMain.cpp,PPgIRC.cpp,PPgScheduler.cpp,Scheduler.cpp,SendMail.cpp,SplashScreen.cpp,TLSthreading.cpp, andWizard.cppEmule.cpp:706still constructsCSchedulerEmuleDlg.cpp:674and2626still invokeFirstTimeWizard()EmuleDlg.cpp:397and2883still keep the splash-screen pathEmuleDlg.cppand resources still keep the scheduler UI surface
Important boundary for the clean backlog:
WebServer.cpp/WebSocket.cpp/PPgWebServer.cppare also still live in currentmain, but the clean backlog currently keeps that surface forFEAT-013,FEAT-014, andREF-028instead of scheduling it for deletion here- legacy WebServer HTML templates are frozen separately from the supported REST listener; do not add template support or template tests while this removal item is pending
Mainline Progress¶
Current main has started trimming the first-start wizard surface, so this item
is no longer purely hypothetical.
On 2026-04-19, commit 3105ee3 (chore: remove Connection options wizard entry)
removed the Connection-page entry point into the legacy wizard UI. That is only
a partial cleanup slice:
Wizard.cpp/Wizard.hstill build inemule.vcxprojEmuleDlg.cppstill callsFirstTimeWizard()- the broader IRC / SMTP / Scheduler / splash / update-checker surfaces remain live
On 2026-04-19, commit 867d303 (REF-025: remove MiniMule feature) landed the
historical IE-hosted MiniMule cleanup slice:
MiniMule.cpp/MiniMule.handIESecurity.cpp/IESecurity.hwere removed- the old IE-hosted MiniMule preference surface was removed
- MiniMule HTML/image resources were removed from
emule.rc/emule.vcxproj
On 2026-05-09, commit 11e5966 (REF-037 remove stale MiniMule resource
surface) removed stale MiniMule dialog/resource IDs from the old resource
surface and the stale missing eMule Light.tmpl project entry as part of the
0.7.3 RC1 legacy disposition gate.
On 2026-05-28, commit 0b0cf5b3 (REF-025: reorganize Tools menu groups)
moved the expanded main-shell Tools entry points for Scheduler and the
first-start wizard under a low-priority Links/legacy group while preserving the
compact tray menu ordering. This did not delete those frozen surfaces; it made
their current exposure clearer until the removal slices land.
On 2026-05-28, commit 32358a1a (REF-025: demote legacy Hotmenu entries)
kept the Alt+U Hotmenu flat but moved IRC, Scheduler, and the first-run wizard
to the bottom legacy block. This did not remove those commands; it lowered
their visual priority while keeping the quick navigation and tray menus
available.
On 2026-05-28, commit efc3b54d (REF-025: flatten Tools menus and redraw
icons) enforced the max-one-submenu-level rule for the expanded Tools popup
and compact tray Tools path. It flattened the speed quick actions, display
controls, view presets, files/categories, and links/scheduler legacy commands
into direct command lists, and replaced the new Tools icons with transparent
classic Windows/eMule-style ICOs. This did not remove Scheduler or first-run
wizard entry points; it kept them visible only as frozen legacy commands until
the deletion slices land.
On 2026-05-28, commit b504a1a in emulebb-build changed the packaged
Register-ArrStack.ps1 helper to register one selected Arr target per run with
-Target Radarr or -Target Sonarr.
On 2026-05-28, commit d0fa354f (REF-025: promote controller integration
actions) promoted Prowlarr/Radarr/Sonarr setup actions to a first-level
Controllers and Integrations Tools group in the expanded and tray Tools
menus, split Radarr and Sonarr into separate menu entries, and used
eMuleBB-owned classic ICO artwork instead of upstream controller logos. This
was a menu-structure cleanup only; it did not delete frozen surfaces.
On 2026-05-28, commit 66c0ee94 (REF-025: hide frozen scheduler and wizard
menus) removed Scheduler toggle/schedule entries and the first-run wizard from
the expanded Tools popup, compact tray Tools path, and floating Hotmenu. This
still did not delete the underlying frozen Scheduler or wizard code; it only
removed the remaining menu exposure.
Current main still owns a native MiniMuleDlg, the General-options
MiniMule preference, tray MiniMule behavior, and translated
IDS_ENABLEMINIMULE labels. Those are eMuleBB-owned native UI behavior and are
not part of this removal item.
Status is therefore In Progress, not Done.
Features to Remove¶
IRC Client (IrcMain, IrcWnd, IrcSocket, IrcChannelListCtrl/TabCtrl, IrcNickListCtrl, PPgIRC)¶
The IRC feature was always optional and the IRC server it was designed for (eMule's own channel) is long gone. The implementation adds ~8 files, ~3,000 lines, and 66 string resources. PPgIRC.cpp/h preferences page also removed.
Files to remove:
- srchybrid/IrcMain.cpp/h
- srchybrid/IrcWnd.cpp/h
- srchybrid/IrcSocket.cpp/h
- srchybrid/IrcChannelListCtrl.cpp/h
- srchybrid/IrcChannelTabCtrl.cpp/h
- srchybrid/IrcNickListCtrl.cpp/h
- srchybrid/PPgIRC.cpp/h
- IRC preferences members from Preferences.cpp/h
- IDS_IRC_* resource strings from emule.rc and Resource.h
- IRC icon resources (res/IRC.ico, res/IRCClipboard.ico)
SMTP / Email Notifications (SMTPdialog, SendMail)¶
SMTP notification on download completion. Rarely used, adds an outbound email
attack surface, and should not be revived as the app event notification story.
Future event delivery belongs to an explicit webhook/controller item, not to
legacy direct SMTP. PPgNotify references to SMTP removed.
Files to remove:
- srchybrid/SMTPdialog.cpp/h
- srchybrid/SendMail.cpp
- SMTP preferences members from Preferences.cpp/h
Legacy Scheduler (Scheduler, PPgScheduler)¶
Upload/download scheduler with time-based rules. Functionality is covered by OS task scheduler, external controller automation, and REST APIs that can drive the same app actions deliberately. Preferences page and resource strings removed.
Files to remove:
- srchybrid/Scheduler.cpp/h
- srchybrid/PPgScheduler.cpp/h
- Scheduler resource strings and icon (res/Scheduler.ico)
Historical MiniMule (MiniMule, IE/HTML host)¶
IE-embedded mini client window. IE is removed from Win11; broken on modern systems.
Landed on current main: yes, in commit 867d303.
Current product boundary: the native MiniMuleDlg surface is eMuleBB-owned
and is not frozen by this item.
Files to remove:
- srchybrid/MiniMule.cpp/h
- srchybrid/IESecurity.cpp/h
- res/MiniMule.htm, res/MiniMuleBack.gif
- old IE-hosted MiniMule preferences and resources only; keep the current native
MiniMuleDlg, MiniMule preference, and IDS_ENABLEMINIMULE labels
First-Start Wizard (Wizard, PShtWiz1)¶
The first-start connection wizard. Replaced by sensible defaults (FEAT-016). No longer necessary.
Files to remove:
- srchybrid/Wizard.cpp/h
- srchybrid/PShtWiz1.cpp
- Wizard resource strings and icon (res/Wizard.ico)
Splash Screen (SplashScreen)¶
Startup splash screen. Modern apps skip splash screens.
Files to remove:
- srchybrid/SplashScreen.cpp/h
- Splash screen preferences member
Legacy Update Checker¶
WinINet-based update checker pointing to defunct eMule update infrastructure.
This means the old stock/community update path only. Current main has a
separate eMuleBB GitHub Releases startup check, controlled by the current
update-check preferences and user-facing copy. Do not remove or classify that
GitHub Releases check as part of this legacy-removal item.
Files to remove:
- Update checker code from Emule.cpp / EmuleDlg.cpp
- stale version-check counter state removed; active update delay/notification preferences kept and normalized behind accessor-backed state
TLSthreading (TLSthreading)¶
Thread-local storage helper that was part of the web server stack (now removed). No remaining consumers.
Revalidated current-main note: TLSthreading.cpp/h is still compiled in current
main via emule.vcxproj, so the "now removed" state applies only to the experimental
branch, not to the live mainline.
Files to remove:
- srchybrid/TLSthreading.cpp/h
Dependency Notes¶
- IRC removal prerequisite for REF-003: Once IRC is removed, REF-003 (rename IRC strings) becomes Wont-Fix by deletion.
- SMTP/Scheduler removal prerequisite for BUG-001: Several load-only prefs (from BUG-001) are IRC/SMTP/Scheduler related — after feature removal those prefs are deleted rather than saved.
- Wizard removal enables cleaner Preferences.cpp:
PShtWiz1.cppandWizard.cppboth wire intoCPreferencesSheet— removing them simplifies dialog initialization.
Experimental Reference Commits¶
All work was done in stale-v0.72a-experimental-clean:
- a639213 — remove IRC implementation and UI wiring
- b981984 — remove IRC preferences and resources
- fa39611 — remove SMTP notifications and settings UI
- a9fdd41 — remove legacy scheduler
- 22f3081 — remove legacy update checker code
- 917fb40 — remove minimule and IE host path
- 83ff501 — remove first-start wizard
- c4cef47 — retire archive recovery feature (see BUG-002/BUG-013)
- 3e7dc0f — retire thumbnail preview capability in the stale branch; current main keeps PreviewDlg/3DPreviewControl and replaces DirectShow frame grabbing with FFmpeg peer-preview frames
Scope Warning¶
These are coordinated removals — each feature touches Preferences.cpp, Resource.h, emule.rc, and emule.vcxproj. Plan as a single pass to avoid half-removed state that breaks the build.
Acceptance Criteria¶
- [ ] No IRC implementation files in
srchybrid/ - [ ] No
IDS_IRC_*resource strings - [ ] No SMTP dialog or SendMail references
- [ ] No Scheduler files
- [ ] Scheduler removal leaves no hidden time-rule engine, preferences page, or resource strings; equivalent automation is documented as REST/controller driven.
- [ ] Email notifier removal leaves no SMTP credentials, direct mail sender, or notification preference surface.
- [ ] No SplashScreen files
- [ ] No first-start Wizard files
- [ ] No update-checker code paths
- [ ] Build passes cleanly; no dangling references in
emule.vcxprojoremule.rc - [ ] Removed preferences members cleaned from
Preferences.hand load/save paths