PR #122 hid a set of widgets on amulegui's Preferences dialog because they were never packed into CEC_Prefs_Packet — editing them changed amulegui's local remote.conf, which amuled never reads, so the controls were dead in both loopback and remote sessions. Hiding was the right short-term move (no silent no-ops) but the long-term fix is to extend CEC_Prefs_Packet (and matching EC_TAG_PREFS_* codes) so each setting round-trips to the daemon over EC.
The hidden controls, grouped by category, with the label as it appears in the dialog:
Network bind address
IDC_ADDRESS — "Bind local address to IP (empty for any):" — interface bind for amuled's listening sockets
UPnP
IDC_UPNP_ENABLED — "Enable UPnP for router port forwarding"
IDC_UPNPTCPPORT — "UPnP TCP Port (Optional):" — external TCP port override
IDC_UPNP_WEBSERVER_ENABLED — "Enable UPnP port forwarding of the web server port"
IDC_WEBUPNPTCPPORT — UPnP external webserver port
IDC_UPNP_EC_ENABLED — "Enable UPnP port forwarding on the EC port"
Online Signature
IDC_OSDIR — "Save online signature file in:" — output directory
IDC_SELOSDIR — Browse button paired with IDC_OSDIR
IDC_OSUPDATE — "Update Frequency (Secs):"
External Connections (EC server config)
IDC_EXT_CONN_ACCEPT — "Accept external connections"
IDC_EXT_CONN_IP — EC bind address
IDC_EXT_CONN_TCP_PORT — EC TCP port
IDC_EXT_CONN_PASSWD — EC password
These four are self-modifying — changing them from amulegui can lock the session out. Probably best handled with a confirm dialog + reconnect prompt, or kept read-only on the remote side.
Filtering / security
IDC_PARANOID — "Paranoid handling of non-matching IPs"
IDC_IPFILTERSYS — "Use system-wide ipfilter.dat if available"
Behavior
IDC_STARTNEXTFILE_ALPHA — "In alphabetic order" (within "Start next paused download" group)
Runtime vs. startup-only
Not all of these are meaningfully settable while amuled is running. A few only take effect at process start, because they decide what sockets to bind:
IDC_ADDRESS, IDC_EXT_CONN_ACCEPT, IDC_EXT_CONN_IP, IDC_EXT_CONN_TCP_PORT — listener bind happens at amuled startup. Wiring them over EC still has value (so amulegui can read and edit amule.conf for the next run), but the UX should make clear the change takes effect on daemon restart.
IDC_IPFILTERSYS — filter file is loaded at startup; runtime change would need to re-trigger an ipfilter reload.
- UPnP toggles,
IDC_EXT_CONN_PASSWD, IDC_OSDIR/IDC_OSUPDATE, IDC_PARANOID, IDC_STARTNEXTFILE_ALPHA — can take effect at runtime.
Per-setting work
- Allocate an
EC_TAG_PREFS_* code in src/libs/ec/cpp/ECCodes.h (and the .abstract + Java mirrors).
- Pack it from amuled in
CEC_Prefs_Packet (src/ECSpecialMuleTags.cpp).
- Apply it on receipt in
CPreferencesRem / amule-remote-gui.cpp.
- Drop the entry from the
amuledOnlyPrefs[] array in PrefsUnifiedDlg.cpp so the widget shows again.
- For startup-only settings, surface "takes effect on amuled restart" in the UI.
- Bump
EC_CURRENT_PROTOCOL_VERSION once per release that adds tags, with the usual handshake-fallback note.
EC changes here are net-new APIs, so per the 3.0.0 release plan this is 3.1.0 scope, not 3.0.x.
Out of scope
- Proxy settings (
ID_PROXY_*) — left visible on purpose, consumed by amulegui's own HTTP client for the GeoIP database fetch.
- The orphan labels (
IDC_*TEXT, IDC_EXT_CONN_PARAMS_BOX) hidden alongside their controls — they re-appear automatically once each parent setting is wired.
PR #122 hid a set of widgets on amulegui's Preferences dialog because they were never packed into
CEC_Prefs_Packet— editing them changed amulegui's localremote.conf, whichamulednever reads, so the controls were dead in both loopback and remote sessions. Hiding was the right short-term move (no silent no-ops) but the long-term fix is to extendCEC_Prefs_Packet(and matchingEC_TAG_PREFS_*codes) so each setting round-trips to the daemon over EC.The hidden controls, grouped by category, with the label as it appears in the dialog:
Network bind address
IDC_ADDRESS— "Bind local address to IP (empty for any):" — interface bind for amuled's listening socketsUPnP
IDC_UPNP_ENABLED— "Enable UPnP for router port forwarding"IDC_UPNPTCPPORT— "UPnP TCP Port (Optional):" — external TCP port overrideIDC_UPNP_WEBSERVER_ENABLED— "Enable UPnP port forwarding of the web server port"IDC_WEBUPNPTCPPORT— UPnP external webserver portIDC_UPNP_EC_ENABLED— "Enable UPnP port forwarding on the EC port"Online Signature
IDC_OSDIR— "Save online signature file in:" — output directoryIDC_SELOSDIR— Browse button paired withIDC_OSDIRIDC_OSUPDATE— "Update Frequency (Secs):"External Connections (EC server config)
IDC_EXT_CONN_ACCEPT— "Accept external connections"IDC_EXT_CONN_IP— EC bind addressIDC_EXT_CONN_TCP_PORT— EC TCP portIDC_EXT_CONN_PASSWD— EC passwordThese four are self-modifying — changing them from amulegui can lock the session out. Probably best handled with a confirm dialog + reconnect prompt, or kept read-only on the remote side.
Filtering / security
IDC_PARANOID— "Paranoid handling of non-matching IPs"IDC_IPFILTERSYS— "Use system-wide ipfilter.dat if available"Behavior
IDC_STARTNEXTFILE_ALPHA— "In alphabetic order" (within "Start next paused download" group)Runtime vs. startup-only
Not all of these are meaningfully settable while amuled is running. A few only take effect at process start, because they decide what sockets to bind:
IDC_ADDRESS,IDC_EXT_CONN_ACCEPT,IDC_EXT_CONN_IP,IDC_EXT_CONN_TCP_PORT— listener bind happens at amuled startup. Wiring them over EC still has value (so amulegui can read and editamule.conffor the next run), but the UX should make clear the change takes effect on daemon restart.IDC_IPFILTERSYS— filter file is loaded at startup; runtime change would need to re-trigger an ipfilter reload.IDC_EXT_CONN_PASSWD,IDC_OSDIR/IDC_OSUPDATE,IDC_PARANOID,IDC_STARTNEXTFILE_ALPHA— can take effect at runtime.Per-setting work
EC_TAG_PREFS_*code insrc/libs/ec/cpp/ECCodes.h(and the.abstract+ Java mirrors).CEC_Prefs_Packet(src/ECSpecialMuleTags.cpp).CPreferencesRem/amule-remote-gui.cpp.amuledOnlyPrefs[]array inPrefsUnifiedDlg.cppso the widget shows again.EC_CURRENT_PROTOCOL_VERSIONonce per release that adds tags, with the usual handshake-fallback note.EC changes here are net-new APIs, so per the 3.0.0 release plan this is 3.1.0 scope, not 3.0.x.
Out of scope
ID_PROXY_*) — left visible on purpose, consumed by amulegui's own HTTP client for the GeoIP database fetch.IDC_*TEXT,IDC_EXT_CONN_PARAMS_BOX) hidden alongside their controls — they re-appear automatically once each parent setting is wired.