Remove legacy feature set — IRC, SMTP, Scheduler, first-start wizard, splash screen, 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, update checker pointing to dead URLs, scheduler UI redundant with OS task scheduler). 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
MiniMule-specific cleanup slice:
MiniMule.cpp/MiniMule.handIESecurity.cpp/IESecurity.hwere removed- the General-options checkbox, tray special-case behavior, and persisted
MiniMulepreference were 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 the remaining dead MiniMule dialog/resource IDs, translated
IDS_ENABLEMINIMULE rows, and the stale missing eMule Light.tmpl project
entry as part of the Beta 0.7.3 legacy disposition gate.
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. 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 covered by OS task scheduler. 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
- MiniMule preferences and resource strings
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.
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
- [ ] 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