eMule Active Backlog — Issue Index¶
This directory is the active local backlog/spec and revalidation layer for this
repo. Use ../INDEX.md for long-form background and reference
reading.
GitHub-primary backlog workflow uses emulebb/emulebb issues
(https://github.com/emulebb/emulebb/issues) and the public eMuleBB Roadmap
org Project #2 (https://github.com/orgs/emulebb/projects/2) as current
status, priority, release placement, discussion, ownership, and PR linkage
authority for migrated items. Local item docs marked workflow: github are
engineering spec/evidence records, not workflow status authority.
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.
Current Snapshot¶
Source of truth: EMULE_WORKSPACE_ROOT\workspaces\workspace\app\emulebb-main (main branch)
Current non-done count: 77
Latest release-doc refresh: 2026-05-23
Non-done by status: 61 OPEN, 6 IN_PROGRESS, 10 DEFERRED, 0 BLOCKED.
Backlog counts: item tables below are authoritative.
RC 0.7.3 relevance: Most non-done items below are future or deferred work;
current RC gate and proof status is controlled by RELEASE-0.7.3.
Broadband release status: emulebb-v0.7.3-rc.1 is the first public
release-candidate target.
RC-release backlog view: RELEASE-0.7.3
RC-release checklist: RELEASE-0.7.3-CHECKLIST
RC-release runbook: RELEASE-0.7.3-RUNBOOK
Release test strategy: RELEASE-TEST-STRATEGY
Release test campaigns: RELEASE-TEST-CAMPAIGNS
Frozen surfaces: FROZEN-SURFACES
RC controller surface matrix: CONTROLLER-SURFACE-MATRIX
Future release roadmap: FUTURE-ROADMAP
GitHub-primary backlog workflow: GitHub issues in emulebb/emulebb plus
the eMuleBB Roadmap Project #2 are authoritative for migrated backlog items.
Backlog process runbook: BACKLOG-PROCESS
RC-release execution plan: RELEASE-0.7.3-EXECUTION-PLAN
p2p-overlord product-family plan: P2P-OVERLORD-PRODUCT-FAMILY-INTEGRATION
Historical beta evidence: docs/history/release-0.7.3/
Historical reviews: docs/history/reviews/
Closed item records: docs/history/items/
Current release trail:
- RELEASE-0.7.3
- RELEASE-0.7.3-CHECKLIST
- RELEASE-0.7.3-RUNBOOK
- RELEASE-TEST-STRATEGY
- RELEASE-TEST-CAMPAIGNS
- CONTROLLER-SURFACE-MATRIX
- RELEASE-0.7.3 execution plan
Operating Rules¶
Priority scale: Critical > Major > Minor > Trivial
Status values: OPEN / IN_PROGRESS / BLOCKED / DEFERRED / PASSED / DONE /
WONT_DO
Directory role: docs/active/ owns current local specs, release control,
active item evidence, and the current release execution plan. Closed item
records and dated review provenance live under docs/history/. For
GitHub-primary items marked workflow: github, current workflow state lives in
GitHub.
Important: Items marked OPEN, IN_PROGRESS, BLOCKED, or DEFERRED link to
active item records. Items marked DONE, PASSED, or WONT_DO link to archived
item records under docs/history/items/. IN_PROGRESS work may already be
implemented on dedicated bug/feature branches but is not considered landed
until merged to main. Experimental-only work (see individual docs) is not in
main unless the item status below says otherwise.
Revalidation rule: Before implementing any item, re-check it against current main
and current dependency pins.
Regression rule: New feature/fix work from this backlog should include targeted
regression checks. When behavior changes, compare main against
baseline/community-0.72a as the seam-enabled parity and regression baseline
where that comparison is meaningful.
RC 0.7.3 source rule: the public RC tag is cut from the selected
reviewed main commit after refreshed proof passes and operator approval.
The release stabilization branch is release/0.7.3 once the operator starts
the RC branch.
Baseline stack rule:
- variant key
communitymaps to worktreeapp\emulebb-community-baselineon branchbaseline/community-0.72a; it is the seam-enabled parity and regression baseline, test-only - variant key
tracing-harnessmaps to worktreeapp\emulebb-community-tracing-harnesson branchtracing-harness/community-0.72a; it is the behavior-changing variant-client parity harness, not the default baseline
Bugs¶
| ID | Priority | Status | Title |
|---|---|---|---|
| BUG-001 | Major | DONE | 17+ load-only hidden prefs not written back to preferences.ini |
| BUG-002 | Minor | WONT_DO | ASSERT(0) FIXME in ArchiveRecovery.cpp — silent fail in release (kept as-is by product decision) |
| BUG-003 | Minor | DONE | Historical large-file FIXME markers overstated the remaining live issue |
| BUG-004 | Minor | DONE | IPFilter overlapping IP ranges not handled — acknowledged correctness gap |
| BUG-005 | Minor | WONT_DO | Kad buddy connections broken when RequireCrypt is enabled |
| BUG-006 | Minor | WONT_DO | Weak RNG for crypto challenge — rand() seeded with time(NULL) (accepted risk by product decision) |
| BUG-007 | Minor | DONE | Ring.h — three UB + correctness bugs in CRing\<T> (CODEREV_003, 004, 011) |
| BUG-008 | Minor | WONT_DO | CaptchaGenerator — rand() & 8 bimodal jitter (low release value; leave to REF-027 if reopened) |
| BUG-009 | Minor | DONE | PartFile — non-atomic part.met replacement (_tremove + _trename crash window) |
| BUG-010 | Minor | DONE | PartFile — part.met write on low disk space risks truncation/corruption |
| BUG-011 | Minor | DONE | Race — shareddir_list iterated without lock in SendSharedDirectories |
| BUG-012 | Minor | DONE | CPartFile destructor calls FlushBuffer after write thread has already exited |
| BUG-013 | Minor | WONT_DO | ArchiveRecovery.cpp — three unchecked malloc() calls crash on OOM (kept as-is by product decision) |
| BUG-014 | Minor | DONE | ZIPFile.cpp — WriteFile return value silently discarded on two paths |
| BUG-015 | Minor | DONE | GetTickCount() 49-day overflow in ban expiry and download timeout checks |
| BUG-016 | Minor | DONE | UDP obfuscation applied when crypt layer is disabled — IsCryptLayerEnabled() guard missing |
| BUG-017 | Minor | DONE | UDP throttler deadlock — sendLocker held when signaling QueueForSendingControlPacket |
| BUG-018 | Minor | DONE | Part-file hash layout drift — hash tree can mutate during concurrent hashing |
| BUG-019 | Minor | DONE | AICH sync thread concurrency — UI deadlocks, starvation, incomplete/duplicate nodes |
| BUG-020 | Minor | DONE | Client socket teardown ordering — cross-link not cleared before Safe_Delete |
| BUG-021 | Minor | DONE | Upload queue lock inversion + socket I/O result mishandling + inflate buffer aliasing |
| BUG-022 | Major | DONE | Long-path delete-to-recycle-bin still breaks in ShellDeleteFile |
| BUG-023 | Minor | DONE | Shared-file ED2K published column shows a false No after publish-state reset |
| BUG-024 | Minor | DONE | statUTC(HANDLE) returns corrupted st_size by using nFileIndexLow |
| BUG-025 | Minor | DONE | KnownFile hashing open failures log stale or wrong error text on Win32 open failure |
| BUG-026 | Major | DONE | Search tab teardown frees live result/tab payload objects before the UI detaches them |
| BUG-027 | Major | DONE | IP filter update can delete the live ipfilter.dat before replacement promotion succeeds |
| BUG-028 | Minor | WONT_DO | MP3 ID3 metadata extraction is ANSI-only; non-ACP filenames can silently lose tags |
| BUG-029 | Major | DONE | Long-path tail hardening across config, media, shell, and GeoLocation surfaces |
| BUG-030 | Minor | DONE | Obfuscated server logins can advertise redundant callback crypto flags and require extra attempts |
| BUG-031 | Minor | DONE | Shared-file hashing fails too eagerly on transient sharing and lock violations |
| BUG-032 | Minor | DONE | AICH hashset save can fail spuriously after hashing because known2.met lock wait times out |
| BUG-033 | Minor | WONT_DO | WebSocket and MiniUPnP shutdown still use forced thread termination |
| BUG-034 | Minor | IN_PROGRESS | Release paths silently swallow unexpected exceptions via catch (...) plus ASSERT(0) |
| BUG-035 | Minor | IN_PROGRESS | Historical control-flow still uses bare ASSERT(0) without recovery or logging |
| BUG-036 | Major | DONE | known.met and cancelled.met still save in place and can truncate on failure |
| BUG-037 | Major | DONE | Same-hash KnownFile replacement can unshare or mis-track equivalent files |
| BUG-038 | Minor | DONE | Shared Files sort can retain stale rows after backing data changes |
| BUG-039 | Minor | DONE | Client list lacked a reusable safe pointer membership check |
| BUG-040 | Major | DONE | Downloading Clients list could dereference stale client rows |
| BUG-041 | Major | DONE | Known Clients list could dereference stale client rows |
| BUG-042 | Major | DONE | Upload list could dereference stale upload rows |
| BUG-043 | Major | DONE | Queue list could dereference stale queue rows |
| BUG-044 | Major | DONE | Download source rows could outlive their backing source objects |
| BUG-045 | Minor | DONE | Server list could dereference stale server rows |
| BUG-046 | Major | DONE | Kad contact list could dereference stale contact rows |
| BUG-047 | Major | DONE | Kad search list could dereference stale search rows |
| BUG-048 | Minor | DONE | IRC nick rows were not cleared before nick objects were deleted |
| BUG-049 | Minor | DONE | IRC channel tabs were not detached before channel objects were deleted |
| BUG-050 | Minor | DONE | Chat tabs were not detached before chat items were deleted |
| BUG-051 | Minor | DONE | IRC channel rows were not cleared before channel entries were deleted |
| BUG-052 | Minor | DONE | Kad search constructor accidentally added placeholder rows |
| BUG-053 | Major | DONE | part.met backup could be refreshed from the newly written metadata |
| BUG-054 | Major | DONE | ESC in shared-file delete confirmation could still delete files |
| BUG-055 | Major | DONE | AICH recovery accepted invalid part bounds |
| BUG-056 | Major | DONE | Download Clients list could dereference stale rows during display callbacks |
| BUG-057 | Minor | DONE | Close All Search Results could leave Kad keyword searches running |
| BUG-058 | Minor | DONE | Tree option value labels could contain the parser separator |
| BUG-059 | Trivial | DONE | Download Remaining column alignment was inconsistent |
| BUG-060 | Major | DONE | REST API should stay available when web templates are absent |
| BUG-061 | Major | DONE | Legacy web interface template was missing from the shipped tree |
| BUG-062 | Minor | DONE | Obfuscated server timeout did not retry plain connection promptly |
| BUG-063 | Major | DONE | ESC in shared-directory delete confirmation could still delete directories |
| BUG-064 | Minor | DONE | Client list secondary display path needed stale-row guarding |
| BUG-065 | Minor | DONE | Queue list secondary display path needed stale-row guarding |
| BUG-066 | Minor | DONE | Upload list secondary display path needed stale-row guarding |
| BUG-067 | Minor | DONE | REST log route lacked the expected get alias seam |
| BUG-068 | Minor | DONE | Download progress-bar drawing can leak GDI state into neighboring list cells |
| BUG-069 | Major | DONE | WebServer static resource requests can escape the web root and allocate whole files |
| BUG-070 | Minor | DONE | Ignored helper-thread launch failures can hang shutdown waits |
| BUG-071 | Major | DONE | server.met persistence still uses destructive backup and promotion moves |
| BUG-072 | Minor | DONE | Kad preferences and routing snapshots still save in place |
| BUG-073 | Major | DONE | WebServer session and bad-login state is mutated from request threads without synchronization |
| BUG-074 | Minor | WONT_DO | Archive preview scanner uses volatile cancellation and synchronous UI handoff (deprecated/frozen) |
| BUG-075 | Major | PASSED | REST and WebServer typed error consistency |
| BUG-076 | Major | PASSED | WebServer malformed request hardening for REST and legacy HTML |
| BUG-077 | Minor | PASSED | WebServer concurrent REST and legacy HTML soak coverage |
| BUG-078 | Critical | DONE | qBit compatibility auth can fail open when session RNG is unavailable |
| BUG-079 | Critical | DONE | WebSocket shutdown can close the termination event while accepted clients still wait on it |
| BUG-080 | Major | DONE | WebSocket shutdown can forcibly terminate the listener thread |
| BUG-081 | Major | DONE | HTTPS WebSocket handshake and read loops can spin on WANT_READ/WANT_WRITE |
| BUG-082 | Major | DONE | GeoLocation and IPFilter background refresh flags can race and remain stuck |
| BUG-083 | Major | DONE | Client UDP malformed-packet logging can read past a one-byte packet |
| BUG-084 | Minor | DONE | Web admin high-level actions leak the process token handle |
| BUG-085 | Major | DONE | Kad/client UDP encryption preference gating needs beta compatibility proof |
| BUG-086 | Critical | DONE | HTTPS WebSocket casts SOCKET storage to mbedtls_net_context |
| BUG-087 | Critical | DONE | HTTPS WebSocket queued writes can stall after TLS WANT_READ |
| BUG-088 | Major | DONE | WebSocket timeout shutdown leaves global state unsafe for restart |
| BUG-089 | Major | DONE | UDP control sender can deadlock on exception while holding sendLocker |
| BUG-090 | Major | DONE | Background refresh completion can wedge when UI PostMessage fails |
| BUG-091 | Major | DONE | DirectDownload ignores close-time write failures |
| BUG-092 | Critical | DONE | Background refresh workers can write through freed owner memory after shutdown |
| BUG-093 | Critical | DONE | Failed refresh completion can synchronously block worker on UI thread |
| BUG-094 | Major | DONE | ResumeThread failure leaks suspended refresh thread objects |
| BUG-095 | Major | DONE | WebSocket accepted-client tracking is not exception-safe after thread start |
| BUG-096 | Major | DONE | DirectDownload lacks bounded timeout and cancellation contract |
| BUG-097 | Critical | DONE | Startup-cache save worker can outlive shared-file list owner |
| BUG-098 | Minor | WONT_DO | Archive recovery worker uses raw part-file owner across async work (deprecated/frozen) |
| BUG-099 | Major | DONE | WebSocket listener startup is not exception-safe after global state initialization |
| BUG-100 | Major | DONE | DirectDownload has bounded timeouts but no hard owner cancellation contract |
| BUG-101 | Major | DONE | Shared Files 50k recursive tree stress profile does not reach main window |
| BUG-102 | Major | DONE | aMuTorrent browser smoke ignores generated harness port |
| BUG-111 | Critical | DONE | Release and help URLs still point outside the emulebb namespace |
| BUG-112 | Critical | WONT_DO | WebServer/qBit session tokens need CSPRNG-backed generation |
| BUG-114 | Minor | DONE | Prevent Standby can leave Windows sleep prevention asserted after disable |
| BUG-115 | Minor | DONE | Tray left-click skips MiniMule and restores maximized windows as normal |
| BUG-117 | Minor | DEFERRED | Audit Year-2038-sensitive persisted and runtime timestamps |
| BUG-118 | Minor | DONE | CTag UInt64 values can serialize without guaranteed 64-bit promotion |
| BUG-119 | Minor | DONE | Audit part-file gap and progress arithmetic against eMuleAI hardening |
| BUG-120 | Minor | DONE | Audit obfuscated server retry behavior against eMuleAI repeat-login fix |
| BUG-121 | Major | DONE | CorruptionBlackBox split reallocation can invalidate active CArray records |
| BUG-122 | Minor | DONE | CRing raw-owned buffer was accidentally copyable |
| BUG-123 | Major | DONE | Failed reask source delete needed explicit download-owner detachment |
| BUG-124 | Major | OPEN | Log panes can nearly freeze the UI under high-volume output |
BUG-103 through BUG-110 were superseded internal post-tag evidence labels,
not active item docs.
Refactors¶
| ID | Priority | Status | Title |
|---|---|---|---|
| REF-001 | Major | WONT_DO | Keep the existing CZIPFile implementation |
| REF-002 | Major | DONE | Remove Source Exchange v1 branches |
| REF-003 | Trivial | DEFERRED | Rename stale IRC string resources left over from IRC module removal |
| REF-004 | Minor | DONE | Audit and disposition 17 load-only preference keys |
| REF-005 | Trivial | DONE | Remove dead DebugSourceExchange commented-out calls |
| REF-006 | Trivial | DONE | GetCategory should be const in DownloadListCtrl |
| REF-007 | Trivial | DONE | WebM vs MKV disambiguation in MIME detection |
| REF-015 | Minor | WONT_DO | Keep miniupnpc as the active UPnP backend |
| REF-016 | Trivial | WONT_DO | Keep ResizableLib out-of-tree instead of inlining it |
| REF-017 | Minor | DONE | Revalidate and close the dead-code sweep backlog item |
| REF-018 | Minor | DONE | Remove defunct PeerCache surface and legacy INI fallback reads |
| REF-019 | Minor | DONE | Replace ASSERT(0) + "must be a bug" with OnError() in EncryptedStreamSocket |
| REF-020 | Minor | DONE | Replace dynamic loading of always-present Win10 APIs with static linking |
| REF-021 | Minor | DEFERRED | Remove blanket warning suppressions and replace deprecated Winsock APIs |
| REF-022 | Trivial | OPEN | Replace custom type aliases in types.h with |
| REF-023 | Minor | DONE | Replace unsafe sprintf/_stprintf/wsprintf with safe equivalents |
| REF-024 | Trivial | OPEN | Convert #define constants in Opcodes.h to constexpr in namespace |
| REF-025 | Minor | IN_PROGRESS | Remove legacy feature set — IRC, SMTP, Scheduler, first-start wizard, splash screen, update checker |
| REF-026 | Minor | DONE | Manifest — keep Win10/11+ compatibility GUID only and move Common Controls into manifests |
| REF-027 | Minor | OPEN | CaptchaGenerator — replace CxImage with ATL CImage / native GDI |
| REF-028 | Minor | DEFERRED | Audit current MbedTLS 4.1 integration |
| REF-029 | Major | OPEN | Move async socket readiness to WSAPoll backends |
| REF-030 | Minor | DONE | Replace window-message async hostname resolver with worker-thread model |
| REF-031 | Minor | DONE | Review upload queue scoring against community and stale baselines |
| REF-032 | Minor | IN_PROGRESS | Use MFC-native property sheets and dynamic layout instead of CTreePropSheet / ResizableLib |
| REF-033 | Trivial | OPEN | Remove remaining IE/MSHTML drag-drop, HTML Help, and legacy IE web-client baggage |
| REF-034 | Minor | DEFERRED | Resolve Crypto++ 8.4 vs 8.9 dependency truth |
| REF-035 | Minor | OPEN | Adopt WIL for narrow Windows and COM RAII cleanup |
| REF-036 | Minor | OPEN | Adopt GSL contracts for buffer and pointer boundary hardening |
| REF-037 | Major | DONE | Beta 0.7.3 legacy and frozen feature disposition ledger |
| REF-038 | Minor | DONE | Harden optional MediaInfo DLL loading and metadata extraction seams |
| REF-039 | Minor | DONE | Classify MediaInfo loader failures and bound metadata extraction counts |
| REF-040 | Minor | DONE | Harden external UnRAR DLL loading |
| REF-041 | Minor | DONE | Move remaining active app DLL probes to LoadLibraryEx |
| REF-042 | Minor | OPEN | Consolidate WinInet download helpers and review URL shortcut intake |
| REF-043 | Minor | OPEN | Drop the legacy HTML Web Interface and keep REST as the supported controller surface |
| REF-044 | Minor | OPEN | Remove remaining import-parts residue and keep legacy import flows retired |
| REF-045 | Minor | OPEN | Evaluate SQLite-backed storage for local metadata structures |
| REF-046 | Minor | OPEN | Evaluate JSON or TOML for operator-editable configuration |
Abandoned Boost/POCO Ideas (historical only)¶
These items were closed from the abandoned IDEA-BOOST exploration by operator decision on 2026-05-21. They remain listed here as historical context only; do not promote this lane without a new approved active item.
| ID | Priority | Status | Title |
|---|---|---|---|
| REF-008 | Major | WONT_DO | Replace CAsyncSocketEx custom WinSock wrapper — Boost.Asio or Windows IOCP |
| REF-009 | Major | WONT_DO | Replace CCriticalSection + CWinThread + Win32 events — std::mutex/thread or Boost |
| REF-010 | Major | WONT_DO | Replace raw owned pointers with std::unique_ptr / std::shared_ptr |
| REF-011 | Minor | WONT_DO | Replace GetTickCount / SetTimer with type-safe monotonic clock — std::chrono or Boost |
| REF-012 | Minor | WONT_DO | Replace CFile + CString path concatenation — std::filesystem or boost::filesystem |
| REF-013 | Minor | WONT_DO | Replace CString + unsafe sprintf with safe string formatting — std or Boost |
| REF-014 | Minor | WONT_DO | Replace custom CRing |
Features¶
| ID | Priority | Status | Title |
|---|---|---|---|
| FEAT-001 | Minor | DEFERRED | Kad FastKad — add diversity-aware bootstrap ranking and aggressive stale decay |
| FEAT-002 | Major | OPEN | Kad SafeKad — evolve from coarse same-IP gate into layered trust model (CGNAT fix) |
| FEAT-003 | Minor | OPEN | Kad — Add response usefulness scoring and subnet-diversity search fanout |
| FEAT-004 | Minor | OPEN | Kad — Generalise KadPublishGuard abuse budget beyond PUBLISH_SOURCE |
| FEAT-005 | Minor | OPEN | Kad — Restore network-change grace handling around routing persistence and probing |
| FEAT-006 | Minor | OPEN | Kad — Add explicit trust, budget, and bootstrap observability counters |
| FEAT-007 | Minor | OPEN | Windows Property Store integration for non-media file metadata |
| FEAT-008 | Trivial | OPEN | Oracle protocol guard seams — integrate stale branch test scaffolding |
| FEAT-009 | Trivial | OPEN | Mirror audit guard seam — WIP work from stale branch parent commit |
| FEAT-010 | Minor | DONE | Long path support phase 2 — shell/UI, shared-directory recursion, exact-name paths, and path-helper audit |
| FEAT-011 | Minor | OPEN | CShield — integrate ED2K anti-leecher engine (44 bad-client categories) |
| FEAT-012 | Minor | DONE | PR_TCPERRORFLOODER — TCP listen-socket flood defense |
| FEAT-013 | Major | DONE | REST API — add authenticated in-process JSON endpoints to WebServer |
| FEAT-014 | Minor | OPEN | REST API follow-up — OpenAPI docs and optional external gateway |
| FEAT-015 | Major | DONE | Broadband upload slot controller — budget-based cap + slow-slot reclamation |
| FEAT-016 | Major | DONE | Modern limits — update stale hard-coded defaults for broadband/modern hardware |
| FEAT-017 | Major | OPEN | DPI awareness — Per-Monitor V2 manifest + hardcoded pixel audit |
| FEAT-018 | Minor | OPEN | µTP (Micro Transport Protocol) transport layer — CUtpSocket / libutp |
| FEAT-019 | Minor | OPEN | Dark mode UI — system-aware Windows 10 dark theme integration |
| FEAT-020 | Trivial | DONE | DB-IP city geolocation — location label and flag per peer |
| FEAT-021 | Minor | OPEN | SourceSaver — persist download source lists between sessions |
| FEAT-022 | Minor | DONE | Startup config directory override — -c flag for alternate preferences path |
| FEAT-023 | Minor | DONE | Broadband queue scoring and ratio/cooldown UI extras |
| FEAT-024 | Minor | DONE | Share-ignore policy with additive shareignore.dat |
| FEAT-025 | Minor | DONE | Normalize download filenames on intake and completion |
| FEAT-026 | Minor | DONE | Shared startup cache with known.met lookup index and sharedcache.dat |
| FEAT-027 | Minor | DONE | Startup sequencing fix, startup profiling, and shared-view startup churn cleanup |
| FEAT-028 | Minor | DONE | Virtualize and harden shared files list |
| FEAT-029 | Minor | DONE | Search result ceilings — configurable ed2k expansion plus moderate Kad totals/lifetimes |
| FEAT-030 | Minor | DONE | Bind policy completion — global BindAddr everywhere else, separate WebBindAddr for WebServer |
| FEAT-031 | Minor | OPEN | Auto-browse peers that expose remote shared-file inventories |
| FEAT-032 | Minor | DEFERRED | NAT mapping modernization — lease controls, status visibility, and PCP/NAT-PMP |
| FEAT-033 | Minor | DONE | Disk-space floor hardening and legacy import-flow retirement |
| FEAT-034 | Minor | IN_PROGRESS | Shared-files reload should stop blocking the UI on large trees |
| FEAT-035 | Major | OPEN | IPv6 dual-stack compatibility for current eD2K/Kad networking |
| FEAT-036 | Major | OPEN | NAT traversal and extended source exchange for LowID-to-LowID connectivity |
| FEAT-037 | Minor | DEFERRED | Release-oriented sharing controls — PowerShare, Release Bonus, and Share Only The Need |
| FEAT-038 | Minor | DONE | Shared-files watcher and live recursive share sync |
| FEAT-039 | Minor | OPEN | Download checker — duplicate and near-duplicate intake guard |
| FEAT-040 | Major | OPEN | Headless core with modern web/mobile controller and multi-user permissions |
| FEAT-041 | Minor | OPEN | Download Inspector automation for stale downloads and majority-name rename |
| FEAT-042 | Minor | DONE | Automatic IP filter update scheduling |
| FEAT-043 | Minor | OPEN | Known Clients history and incremental list refresh performance |
| FEAT-044 | Minor | OPEN | IP filter input policy - PeerGuardian lists, whitelist, and private-IP exemption |
| FEAT-045 | Major | PASSED | REST transfer detail endpoint for controller parity |
| FEAT-046 | Major | PASSED | REST server and Kad bootstrap/import APIs |
| FEAT-047 | Minor | PASSED | REST search API completeness pass |
| FEAT-048 | Minor | PASSED | REST upload queue control completeness |
| FEAT-049 | Minor | PASSED | Curated REST preference expansion |
| FEAT-050 | Minor | PASSED | Launch external program on completed download |
| FEAT-051 | Minor | DONE | Pro-user context menus and always-on advanced controls |
| FEAT-052 | Minor | DONE | Main-shell keyboard shortcuts and mnemonic audit |
| FEAT-053 | Minor | DONE | Classic tray balloon notification mode |
| FEAT-054 | Minor | DONE | Normalize download message filename display |
| FEAT-055 | Minor | DONE | Beta 0.7.3 improvement triage lane |
| FEAT-056 | Minor | DEFERRED | Post-0.7.3 release proof automation and operator evidence UX |
| FEAT-058 | Minor | DONE | Beta 0.7.3 closeout UX polish and audit report |
| FEAT-059 | Minor | DONE | Move tray icon visibility preference next to minimize-to-tray |
| FEAT-060 | Minor | DONE | Preference inventory, mapping, clamp, and persistence audit |
| FEAT-061 | Minor | DONE | Strong preference schema validation |
| FEAT-062 | Minor | DONE | Category management dialog polish and robustness |
| FEAT-063 | Minor | DONE | Web Interface preferences layout polish |
| FEAT-064 | Minor | OPEN | Curated post-0.7.3 future release roadmap |
| FEAT-065 | Minor | DONE | Polish the native MiniMule tray popup |
| FEAT-066 | Minor | DONE | Replace MiniMule chrome with table and speed chart |
| FEAT-068 | Minor | OPEN | Bound REST large-list memory and latency for very large profiles |
| FEAT-069 | Minor | OPEN | Shared-file include and exclude pattern rules |
| FEAT-070 | Minor | OPEN | Add targeted client UserHash and upload-lifecycle diagnostics |
| FEAT-071 | Minor | DONE | Filename mojibake repair for search results and download intake |
| FEAT-072 | Minor | OPEN | Reduce startup cache UI-thread blocking on large shared libraries |
| FEAT-073 | Minor | OPEN | Incorporate p2p-overlord into the eMuleBB product family |
| FEAT-074 | Minor | DONE | Add main-window visual evidence for connected LowID state |
| FEAT-075 | Minor | OPEN | Keep startup progress responsive during daily config backup |
| FEAT-076 | Minor | OPEN | Parallelize shared-file hashing across physical volumes and SSDs |
| FEAT-077 | Minor | OPEN | Auto-managed upload friend-slot candidates without mutating manual friends |
| FEAT-078 | Minor | OPEN | Persist auto-browse inventories in a local queryable database |
| FEAT-079 | Minor | OPEN | Save known and cancelled metadata from immutable background snapshots |
| FEAT-080 | Minor | OPEN | Refresh protected-volume disk-space snapshots in the background |
| FEAT-081 | Trivial | DEFERRED | Add a bounded source-hostname resolver pool only if profiling shows backlog |
| FEAT-082 | Minor | OPEN | Virtualize high-volume downloads, search results, and client-history lists |
| FEAT-083 | Minor | WONT_DO | Connection Checker based on public reachability polling |
| FEAT-084 | Minor | WONT_DO | Migration Wizard for legacy profile import |
| FEAT-085 | Minor | OPEN | Establish a shared campaign core for eMuleBB product-family test orchestration |
| FEAT-086 | Minor | OPEN | Parse eMuleAI extension hints without advertising protocol support |
| FEAT-087 | Minor | OPEN | Add inline transfer speed sparklines |
| FEAT-088 | Minor | OPEN | Keep completed upload rows visible briefly |
| FEAT-089 | Minor | OPEN | Add guided Prowlarr indexer setup for eMuleBB |
Build / CI / Tooling¶
| ID | Priority | Status | Title |
|---|---|---|---|
| CI-001 | Major | WONT_DO | CMake adoption exploration — replace emule.vcxproj with CMakeLists.txt + Ninja |
| CI-002 | Minor | OPEN | clang-format — enforce consistent code formatting |
| CI-003 | Minor | DONE | MSVC compiler hardening — SDL, guard:cf, /WX (Phase A done: SDL+CFG in commit 5557216) |
| CI-004 | Minor | OPEN | clang-tidy — integrate static analysis into build and CI |
| CI-005 | Minor | OPEN | cppcheck — integrate complementary bug-class analysis |
| CI-006 | Minor | OPEN | MSVC AddressSanitizer — enable for debug builds to catch memory errors |
| CI-007 | Minor | OPEN | Kad — Expand integration and fuzz test coverage beyond helper-unit tests |
| CI-008 | Minor | DONE | Expand regression coverage for part files, long paths, and WebServer/REST |
| CI-009 | Minor | DONE | Share-ignore regression coverage and Release test-build stabilization |
| CI-010 | Minor | IN_PROGRESS | Reduce remaining app-local warning debt after external noise cleanup |
| CI-011 | Major | DONE | Broadband release live E2E coverage umbrella |
| CI-012 | Major | DONE | Stabilize Shared Files dynamic folder lifecycle E2E |
| CI-013 | Major | DONE | Download and search UI live scenarios |
| CI-014 | Major | PASSED | REST contract manifest and live completeness gate |
| CI-015 | Major | PASSED | REST malformed and concurrent request matrix |
| CI-016 | Minor | PASSED | REST-only main vs community regression lane |
| CI-017 | Minor | DONE | Normalize active workspace line-ending policy to LF by default |
| CI-018 | Major | DONE | Shared Files 50k-file tree refresh stress gate |
| CI-019 | Major | DONE | HTTPS and REST socket adversity stress gate |
| CI-020 | Major | DONE | REST and legacy WebServer error-path coverage gate |
| CI-021 | Major | DONE | WebSocket and legacy socket leak-churn gate |
| CI-022 | Major | DONE | Beta 0.7.3 community parity changed-surface ledger |
| CI-023 | Major | DONE | Beta 0.7.3 post-1.0 hardening regression replay gate |
| CI-024 | Major | DONE | Beta 0.7.3 controller integration full replay gate |
| CI-025 | Major | DONE | Beta 0.7.3 REST and adapter contract drift gate |
| CI-026 | Major | DONE | Beta 0.7.3 shared files, startup cache, and long-path parity gate |
| CI-027 | Major | DONE | Beta 0.7.3 download and persistence replay gate |
| CI-028 | Major | DONE | Beta 0.7.3 search, server, and Kad parity replay gate |
| CI-029 | Major | DONE | Beta 0.7.3 network socket, UDP, WebSocket, HTTPS, and UPnP adversity gate |
| CI-030 | Major | DONE | Beta 0.7.3 UI, preferences, tray, and language resource parity smoke gate |
| CI-031 | Major | DONE | Beta 0.7.3 packaging, architecture, and release asset parity gate |
| CI-032 | Major | DONE | Beta 0.7.3 post-tag focused coverage gaps |
| CI-033 | Major | DONE | Beta 0.7.3 internal pre-release proof |
| CI-034 | Major | DONE | Package-release provenance and dirty-input guard |
| CI-035 | Major | OPEN | Final current-head RC proof and fresh package hashes |
| CI-036 | Major | DONE | Release certification test matrix |
| CI-037 | Major | PASSED | Expanded live UI and E2E weak-path stress gate |
| CI-038 | Major | DONE | UI resource-depth and language smoke gate |
| CI-039 | Minor | DONE | Consolidate Markdown backlog process and validation |
| CI-040 | Minor | DONE | Standardize current Markdown naming and structure checks |
| CI-041 | Minor | DONE | Publish Markdown documentation with MkDocs Material |
| CI-042 | Minor | DONE | Keep only the latest nightly GitHub prerelease per build stream |
| CI-043 | Minor | DONE | Add aMuTorrent automatic upstream nightly sync and release workflow |
| CI-044 | Major | OPEN | Add containerized full-suite profiles for controller and P2P client testing |
| CI-045 | Major | OPEN | Add workspace-level bind interface selection for predictable live tests |
Controller Integrations¶
| ID | Priority | Status | Title |
|---|---|---|---|
| AMUT-001 | Major | PASSED | aMuTorrent eMuleBB browser smoke coverage |
| AMUT-002 | Major | PASSED | aMuTorrent transfer detail hydration |
| ARR-001 | Major | PASSED | Full Arr release E2E validation |
Release Focus¶
RC 0.7.3 hardening is controlled by RELEASE-0.7.3.
Use that page for release status, source decision, and the open RC task table.
The current implementation sequence lives in the single
RC 0.7.3 execution plan.
Superseded release gate evidence and old cluster plans live under
docs\history\release-0.7.3.
Reference Material¶
Current issue status is tracked here. Other docs/ areas contain reference,
history, architecture notes, audits, ideas, and active execution plans according
to DOCS-POLICY.