Skip to content

cleanup: retire autotools, debian/, and dead platform/subtool trees - #466

Merged
mrjimenez merged 9 commits into
amule-project:masterfrom
got3nks:cleanup-retire-dead-trees
Apr 24, 2026
Merged

cleanup: retire autotools, debian/, and dead platform/subtool trees#466
mrjimenez merged 9 commits into
amule-project:masterfrom
got3nks:cleanup-retire-dead-trees

Conversation

@got3nks

@got3nks got3nks commented Apr 24, 2026

Copy link
Copy Markdown
Contributor

Summary

Pure deletion PR that removes build systems and subprojects that no longer compile, run, or get shipped. 466 files, −48,835 lines, no added behaviour. The CMake build continues to be the only supported path and is now also the only build system in the tree.

Split into 9 atomic commits so each leaves cmake --build build green and the whole series is bisectable:

# Commit What goes LOC
1 relocate amule.icns out of the Xcode project subdir prep — moves the one asset still used by CMake out of platforms/MacOSX/aMule-Xcode/ +2 −2
2 drop Visual Studio 2010/2013 project trees platforms/Windows/MSVC10/, platforms/Windows/MSVC12/ — VS2010 EOL'd 2020, VS2013 EOL'd 2024, both marked UNMAINTAINED, no CMake reference −14,080
3 drop unmaintained macOS projects + Carbon-era scripts platforms/MacOSX/{aMule-Xcode, cocoa-mule}/, src/utils/scripts/MacOSX/ — Xcode 3 project targeting 10.4/10.6 with -framework Carbon, Carbon-port wx 2.8 scripts, unmaintained Cocoa GUI experiment −2,590
4 drop dead subtools (xas, amps, plasmamule) XChat 2 is dead since 2010, Ampache frontend was orphaned from the build, KDE 4 Plasma applet requires Qt 4 (EOL'd 2016). Also strips matching BUILD_XAS / BUILD_PLASMAMULE options and the -DBUILD_PLASMAMULE=0 line from CI −7,260
5 drop stale root-level files amule_build_install.sh (2004 helper), BUILDING_MACOSX.txt, aMule.spec / aMule-CVS.spec (autotools-based RPM), root amule.xpm / amulegui.xpm (CMake installs from src/aMule.xpm instead), README.Debian-Packages −480
6 trim docs/ and rewrite INSTALL for CMake delete Releases.dia + README.{Asio,Mac,Windows}.txt; rewrite INSTALL around CMake (it still said "wx >= 2.8.0 recommended 2.8.9" and only documented ./configure --enable-* flags) −560
7 retire autotools 26 Makefile.am, configure.ac, autogen.sh, acinclude.m4, m4/, automake/, docs/man/po4a.config, the build_autotools_ubuntu CI job, autotools_config_flags env var −9,325
8 retire debian/ tree 154 files; rules invoked the autotools build that no longer exists, packaging is carried by Debian maintainers in the BTS −14,470
9 drop legacy aMule.app / aMuleGUI.app template fossils 20 files from the 2011 Xcode era: Info.plist hard-coded to version 2.4.0, 32-bit libupnp dylibs that won't load on Apple Silicon, MainMenu NIB never read by wx, PPC/i386 Carbon ed2kHelperScript.app. None referenced by CMake; the live bundles under build/src/ are synthesised by MACOSX_BUNDLE_* target properties. −68

Why

  • Autotools duplicates CMake, only CMake is used in CI for all three supported platforms (Ubuntu, macOS, Windows MinGW64), and the autotools path still referenced removed features.
  • MSVC10/12 + Xcode project + Cocoa experiment + repo-root aMule.app/aMuleGUI.app fossils haven't built since the wx 3.0 migration; upstream has no plan to restore them, they all carry explicit UNMAINTAINED notices.
  • xas / amps / plasmamule target long-EOL'd host apps/toolkits (XChat 2, Ampache PHP frontend, KDE 4).
  • debian/ in an upstream tree is usually stale — Debian's real packaging metadata is owned in the BTS by the Debian aMule maintainer.
  • Stale root files mostly documented autotools ./configure --enable-* flags that no longer exist, or targeted macOS 10.6.

Impact on downstream packagers

  • Distros that currently invoke ./configure must switch to:

    cmake -B build -DBUILD_MONOLITHIC=YES -DBUILD_REMOTEGUI=YES
    cmake --build build -j"$(nproc)"
    cmake --install build                # prefix defaults to /usr/local

    The rewritten docs/INSTALL lists the CMake equivalents of the old --enable-* flags.

  • Debian's source package will want to maintain its own debian/ overlay (it already does; the one in this tree was drifting).

  • RPM-based distros that relied on aMule.spec / aMule-CVS.spec need their own spec (Fedora carries one in dist-git).

Verified

Risk

Zero runtime change. Every deletion is either (a) a file not referenced by the active CMake build at all, or (b) an asset moved, with the referencing CMake paths updated in the same commit. No C/C++ sources touched.

got3nks added 9 commits April 24, 2026 10:01
Prep for deleting platforms/MacOSX/aMule-Xcode/ in a follow-up commit.
The .icns is the only asset in that tree still referenced by the
active CMake build (src/CMakeLists.txt AMULE_ICNS / AMULEGUI_ICNS);
move it to platforms/MacOSX/amule.icns so the Xcode directory becomes
pure dead code.

No behaviour change.
platforms/Windows/MSVC10/ and platforms/Windows/MSVC12/ carry ~90
.vcxproj/.sln files for Visual Studio 2010 and 2013. Both are flagged
UNMAINTAINED in their own 00WARNING.txt and are not referenced from
any CMakeLists.txt, Makefile.am or CI job. VS 2010 reached EOL in 2020
and VS 2013 in 2024. Every supported Windows build path now goes
through the MSYS2 MINGW64 / CLANGARM64 + CMake + Ninja pipeline
documented in .github/workflows/ccpp.yml.

Pure deletion, 90 files, 14080 lines.
- platforms/MacOSX/aMule-Xcode/: Xcode 3 project (objectVersion=46),
  MACOSX_DEPLOYMENT_TARGET=10.4/10.6, -framework Carbon. Flagged
  UNMAINTAINED in 00WARNING.txt. Not referenced by CMake.
- platforms/MacOSX/cocoa-mule/: unmaintained native-Cocoa GUI
  experiment. Also flagged UNMAINTAINED. Not referenced by CMake.
- src/utils/scripts/MacOSX/: defs-*.sh + full_build.sh +
  application_packager.sh. Hard-codes SDKNUMBER=10.6, -arch i386 -arch
  ppc, AUTOPORT=carbon, --with-carbon (wx 2.8 Carbon port, dropped in
  wx 3). Not invoked by any current workflow.

The only asset still used from aMule-Xcode was amule.icns, which was
relocated to platforms/MacOSX/amule.icns in the previous commit.
- src/utils/xas/: plugin for XChat 2, whose last release was 2010.
  XChat's open-source successor (HexChat) was also EOL'd in 2024.
- src/utils/amps/: Ampache PHP frontend. Orphaned from the build — no
  add_subdirectory() in any CMakeLists.txt, only referenced from
  autotools' EXTRA__DIST__SUBDIRS. No callers in the rest of the tree.
- src/utils/plasmamule/: KDE 4 Plasma applet + engine. KDE 4 itself
  was EOL'd in 2016. Required Qt4, also long-EOL.

Also strips the matching CMake plumbing:
- cmake/options.cmake: BUILD_PLASMAMULE / BUILD_XAS options + the
  BUILD_AMULE_DEVELOPER force-on block that turned them on.
- CMakeLists.txt: find_package(Qt4) gate + xas status line.
- src/utils/CMakeLists.txt: the BUILD_{PLASMAMULE,XAS} ADD_SUBDIRECTORY
  branches.
- .github/workflows/ccpp.yml: -DBUILD_PLASMAMULE=0 in cmake_common_config_flags
  and the matching comment (no longer needed now that the option is gone).

Autotools references (Makefile.am / configure.ac) are left alone — they
will go with the autotools retirement commit later in this series.
- amule_build_install.sh: 2004-era helper script that fetched and
  built every aMule dependency from source. Superseded by distro
  package managers (and Homebrew on macOS, MSYS2 on Windows). Not
  referenced by any build system.
- BUILDING_MACOSX.txt: instructions that pointed at the Xcode project
  (deleted in a previous commit) and a macOS 10.6 SDK target.
- aMule.spec, aMule-CVS.spec: RPM spec files tied to the autotools
  build (--enable-* flags). Distro maintainers carry their own spec
  files.
- amule.xpm, amulegui.xpm: legacy X11 pixmaps. The only install rules
  that shipped them were dist_icon_DATA in Makefile.am; CMake installs
  from src/aMule.xpm instead, so the root copies were duplicates.
- README.Debian-Packages: documented the autotools --enable-* flags
  that produced each Debian binary package. Debian maintainers carry
  their own packaging in the BTS.
- Delete docs/Releases.dia (orphaned Dia diagram).
- Delete docs/README.Asio.txt, docs/README.Mac.txt,
  docs/README.Windows.txt. None are installed by CMake; all reference
  the Xcode / MSVC / autotools paths that are being removed in this
  PR series.
- Rewrite docs/INSTALL around the CMake build (it said wx >= 2.8.0
  recommended 2.8.9, and only documented ./configure --enable-*
  flags). The new version matches MIN_WX_VERSION=3.2.0 in
  CMakeLists.txt and lists the BUILD_* / ENABLE_* options actually
  exposed by the current cmake/options.cmake.

  The authoritative platform recipes still live in
  .github/workflows/ccpp.yml; INSTALL points there so the two can't
  drift.
CMake is the only supported build system. Deletes the entire autotools
surface, which has been redundant since the CMake build reached
feature parity and is now the reference path in CI for all three
supported platforms.

Files removed:
- configure.ac, autogen.sh, acinclude.m4
- 26 Makefile.am files across the tree
- m4/ (all .m4 macros)
- automake/ (custom autotools helpers)
- docs/man/po4a.config (only used by docs/man/Makefile.am)

CI changes (.github/workflows/ccpp.yml):
- Drop the build_autotools_ubuntu job.
- Drop autotools_config_flags env var.
- CMake-only jobs on Ubuntu, macOS and Windows MinGW64 remain.

Downstream packaging impact:
- Distro packagers that still invoke ./configure need to switch to
  cmake -B build && cmake --build build && cmake --install build.
  docs/INSTALL (rewritten in the previous commit) documents the flag
  equivalents.
- The debian/ tree in this repo still had autotools-based rules; it
  is removed in the following commit.
Upstream aMule no longer ships Debian packaging. The Debian project
carries its own debian/ in their packaging repo (tracked on the
Debian BTS), and the tree in this repo had drifted — the rules file
invoked the autotools build that was removed in the previous commit,
and the per-package .install / .dirs / .menu / .manpages metadata
referenced --enable-* flags that no longer exist.

154 files, ~1.5 MB removed. The Debian CI badges in README.md keep
working because they point at buildd.debian.org, not this tree.

Distro maintainers who want upstream-tracked packaging metadata
should open an issue; the project can consider vendoring RPM or
Debian spec files again once there is a concrete packager willing to
own them.
Twenty stale files committed back in the 2011 Xcode/wx-2.8 era:

- Contents/Info.plist: hard-coded to version 2.4.0 and copyright 2011.
  CMake now synthesises a fresh Info.plist at build time from the
  MACOSX_BUNDLE_* target properties in src/CMakeLists.txt, so nothing
  reads the repo copy.
- Contents/PkgInfo: legacy 8-byte APPL+signature file. Optional on
  modern macOS and we don't install it anyway.
- Icon (zero-byte): custom-icon sidecar that only works paired with a
  com.apple.FinderInfo extended attribute, which git does not
  preserve. Empty file, no xattr -> inert.
- Contents/Frameworks/libupnp.3.dylib + libixml.2.dylib +
  libthreadutil.2.dylib: 2011-vintage libupnp binaries, almost
  certainly 32-bit i386/PPC. Won't load on Apple Silicon. Modern
  builds link against Homebrew libupnp at build time.
- Contents/Resources/English.lproj/MainMenu.nib/*: Interface Builder
  NIB for a Cocoa menu bar. wx 3 builds its menu bar programmatically
  via wxMenuBar; the NIB is never loaded (Info.plist's NSMainNibFile
  points at a non-existent name, which AppKit silently ignores).
- aMule.app/Contents/MacOS/ed2kHelperScript.app: 32-bit PowerPC/i386
  Carbon AppleScript helper for ed2k:// URL clicks. Broken on modern
  macOS. The monolithic amule registers the URL scheme at runtime via
  LSSetDefaultHandlerForURLScheme, so no helper needed.

No build system references any of these files. The authoritative .app
bundles continue to be built fresh under build/src/ by the CMake
MACOSX_BUNDLE machinery.
@mrjimenez
mrjimenez merged commit 8901bc1 into amule-project:master Apr 24, 2026
4 checks passed
@Vollstrecker

Copy link
Copy Markdown
Collaborator

Sorry for being late in this, but the po4a stuff wasn't autotools related. I didn't check if it's still a (maintained) thing, but I think it's a handy concept enabling translator that are familiar with the normal .po files to also use their tools for the manpages.

@got3nks

got3nks commented Apr 27, 2026

Copy link
Copy Markdown
Contributor Author

@Vollstrecker — opened #485 to restore docs/man/po4a.config and wire it under CMake. As you said, po4a was never autotools-related (the autotools tree only EXTRA_DIST'd the config; no rule invoked it), so the restoration is purely a translator-tooling fix:

  • docs/man/po4a.config restored verbatim, minus the xas line since xas was deleted in this PR.
  • find_program(po4a) in docs/man/CMakeLists.txt. When found, an optional po4a-update custom target wraps po4a po4a.config. When absent, the target simply isn't generated — no configure error, no CI impact.
  • Brief note in docs/INSTALL pointing at cmake --build build --target po4a-update.

That keeps the same workflow translators had under autotools (regen by hand, commit the artifacts) while leaving the build itself po4a-free.

mrjimenez pushed a commit that referenced this pull request Apr 27, 2026
PR #466 retired the autotools surface and, alongside it, deleted
docs/man/po4a.config (only used by docs/man/Makefile.am). The .po /
.pot files in docs/man/po/ and the committed *.LANG.1 manpages were
kept, but the driver that lets translators refresh them was lost.

po4a was never wired into the default build (autotools or otherwise);
the autotools tree only EXTRA_DIST'd po4a.config. Translators ran
'po4a po4a.config' out-of-band and committed the regenerated
*.LANG.1 files. This change restores that workflow without making
po4a a build dependency.

- docs/man/po4a.config: restored verbatim from the pre-PR-466 tree,
  with the xas entry dropped (xas itself was removed in #466).
- docs/man/CMakeLists.txt: find_program(po4a). When found, add an
  optional 'po4a-update' custom target that invokes
  'po4a po4a.config' from docs/man/. When po4a is absent, the
  target simply isn't generated -- no configure error, no impact
  on CI.
- docs/INSTALL: short maintainer note pointing at
  'cmake --build build --target po4a-update'.

Verified on macOS (po4a 0.74 from Homebrew): configure discovers
po4a, 'cmake --build build --target po4a-update' runs the same
'po4a po4a.config' invocation translators would run by hand, and
regenerates the *.LANG.1 / *.po / .pot files in place when their
content has drifted from the English masters.
got3nks added a commit to got3nks/amule that referenced this pull request Apr 27, 2026
cmake/bfd.cmake sets BFD_LIBRARY (with underscore + _LIBRARY suffix)
but src/CMakeLists.txt has been reading the bare LIBBFD at four
target_link_libraries sites (amulecmd, amuled, amule monolithic,
amulegui). LIBBFD is undefined here, so it expands to empty -- those
four target_link_libraries calls have been silently linking nothing
for years. The variable-name mismatch predates the cmake-only
migration in amule-project#466.

Why amule still linked at all on most distros: until recently libbfd
either shipped as a shared library that auto-resolved its own deps
via DT_NEEDED, or its transitive deps (libiberty, libintl) were
short enough that the linker auto-pulled them via implicit search.

Why this surfaces now (amule-project#487 follow-up): OpenSuse Tumbleweed ships
libbfd only as a static archive, with no bfd.pc, and modern ld
--as-needed defaults. The archive's transitive deps
(zstd/sframe/iberty) aren't on the link line at all because
target_link_libraries has been adding nothing. With the variable
name corrected, cmake/bfd.cmake's probe-loop output finally reaches
the link line, and the loop's job of discovering the correct
combination becomes load-bearing.
got3nks added a commit to got3nks/amule that referenced this pull request Apr 27, 2026
Modern cmake (4.x, the default on Tumbleweed/Arch/Homebrew/MSYS2)
prints a deprecation warning for any project declaring
cmake_minimum_required < 3.10:

    Compatibility with CMake < 3.10 will be removed from a future
    version of CMake. Update the VERSION argument <min> value.

3.10 is the floor that silences the warning, and it's also already
documented as the minimum in docs/INSTALL (rewritten in amule-project#466), so
this just closes the gap between the docs and the actual policy.

Use the modern <min>...<max> form so cmake enables policies up to
3.31 (more predictable behaviour on recent toolchains) without
raising the floor for distro packagers on older systems --
3.10 was released Nov 2017 and is available everywhere.

Two files affected: the root CMakeLists.txt, and the standalone
abstracts/CMakeLists.txt sub-script (run via cmake -P, hence its
own cmake_minimum_required).
got3nks added a commit to got3nks/amule that referenced this pull request Apr 27, 2026
cmake/bfd.cmake sets BFD_LIBRARY (with underscore + _LIBRARY suffix)
but src/CMakeLists.txt has been reading the bare ${LIBBFD} at four
target_link_libraries sites (amulecmd, amuled, amule monolithic,
amulegui). ${LIBBFD} is undefined here, so it expands to empty --
those four target_link_libraries calls have been silently linking
nothing. The variable-name mismatch predates the cmake-only
migration in amule-project#466.

The build worked anyway on most distros because libbfd's transitive
deps were either short enough that the linker auto-pulled them via
implicit search, or libbfd was a shared library whose own DT_NEEDED
entries dragged its deps in. On OpenSuse Tumbleweed (amule-project#487 follow-up
report) libbfd ships only as a static archive without bfd.pc, so
the explicit transitive deps cmake/bfd.cmake collects must actually
reach the link line for the build to succeed.
got3nks added a commit to got3nks/amule that referenced this pull request Apr 27, 2026
cmake/bfd.cmake sets BFD_LIBRARY (with underscore + _LIBRARY suffix)
but src/CMakeLists.txt has been reading the bare ${LIBBFD} at four
target_link_libraries sites (amulecmd, amuled, amule monolithic,
amulegui). ${LIBBFD} is undefined here, so it expands to empty --
those four target_link_libraries calls have been silently linking
nothing. The variable-name mismatch predates the cmake-only
migration in amule-project#466.

The build worked anyway on most distros because libbfd's transitive
deps were either short enough that the linker auto-pulled them via
implicit search, or libbfd was a shared library whose own DT_NEEDED
entries dragged its deps in. On OpenSuse Tumbleweed (amule-project#487 follow-up
report) libbfd ships only as a static archive without bfd.pc, so
the explicit transitive deps cmake/bfd.cmake collects must actually
reach the link line for the build to succeed.
mrjimenez pushed a commit that referenced this pull request Apr 27, 2026
cmake/bfd.cmake sets BFD_LIBRARY (with underscore + _LIBRARY suffix)
but src/CMakeLists.txt has been reading the bare ${LIBBFD} at four
target_link_libraries sites (amulecmd, amuled, amule monolithic,
amulegui). ${LIBBFD} is undefined here, so it expands to empty --
those four target_link_libraries calls have been silently linking
nothing. The variable-name mismatch predates the cmake-only
migration in #466.

The build worked anyway on most distros because libbfd's transitive
deps were either short enough that the linker auto-pulled them via
implicit search, or libbfd was a shared library whose own DT_NEEDED
entries dragged its deps in. On OpenSuse Tumbleweed (#487 follow-up
report) libbfd ships only as a static archive without bfd.pc, so
the explicit transitive deps cmake/bfd.cmake collects must actually
reach the link line for the build to succeed.
mrjimenez pushed a commit that referenced this pull request Apr 27, 2026
Modern cmake (4.x, the default on Tumbleweed/Arch/Homebrew/MSYS2)
prints a deprecation warning for any project declaring
cmake_minimum_required < 3.10:

    Compatibility with CMake < 3.10 will be removed from a future
    version of CMake. Update the VERSION argument <min> value.

3.10 is the floor that silences the warning. It's already
documented as the minimum in docs/INSTALL (rewritten in #466), so
this just closes the gap between the docs and the actual policy.

Use the modern <min>...<max> form so cmake enables policies up to
3.31 (more predictable behaviour on recent toolchains) without
raising the floor for distro packagers on older systems --
3.10 was released Nov 2017 and is available everywhere.

Two files affected: the root CMakeLists.txt, and the standalone
abstracts/CMakeLists.txt sub-script (run via cmake -P, hence its
own cmake_minimum_required).

Depends on the previous commit's CMAKE_BINARY_DIR fix for
version.rc -- the policies enabled by <max>=3.31 stop the
silent CMAKE_CURRENT_BINARY_DIR fallback that masked the wrong
${CMAKE_SOURCE_DIR}/version.rc references.
@got3nks
got3nks deleted the cleanup-retire-dead-trees branch May 3, 2026 15:19
got3nks added a commit to got3nks/amule that referenced this pull request Jul 13, 2026
…mule-project#466)

The Shared Files view could only show static counters (transferred,
requests, accepts, complete sources) — unlike Downloads, there was no way
to tell an actively-seeded file from an idle one. Surface per-file upload
activity over EC so clients (the REST API now, the desktop GUI later) can
add the corresponding columns.

Core (CKnownFile):
  * GetUploadDatarate() / GetTransferringClientCount() — live, summed from
    m_ClientUploadList: current upload speed and peers uploading now.
  * m_lastUploadDatetime — stamped in CFileStatistic::AddTransferred (the
    single point where sent bytes are attributed to a file), the upload-side
    analogue of the download's m_lastDateChanged.
  * m_dateShared — stamped once when a file completes (CompleteFileEnded) or
    is first hashed into the share (CKnownFileList::Append, afterHashing).
  Both persist in known.met as new FT_ tags (FT_LASTUPLOADED / FT_SHAREDSINCE);
  absent on a pre-feature known.met => 0 (unknown). Uploading never rewrites
  the shared file, so the timestamp can't ride the .met date the way downloads
  do — it needs its own tag. The unknown-tag preserve-and-rewrite path keeps
  this forward/backward compatible.

EC / dirty-marking:
  * New tags EC_TAG_KNOWNFILE_UPLOAD_SPEED / _UPLOADING_COUNT / _LAST_UPLOAD
    (live, emitted before the UPDATE early-return) and _SHARED_SINCE (full
    detail).
  * SetUploadState marks the file EC-dirty on US_UPLOADING transitions so a
    file that stops uploading but stays queued drops its speed to 0 —
    completed/shared files have no per-tick Process() sweep like downloads.

REST + SSE (amuleapi):
  * /shared list + detail gain upload_speed_bps, uploading, last_upload,
    shared_since; the SSE shared_added/shared_updated payload and EqualShared
    comparator carry them so live changes emit events.

Tests: RefresherTest decodes the new tags; curl 04 asserts the fields.
Docs: docs/api/REFERENCE.md.
got3nks added a commit to got3nks/amule that referenced this pull request Jul 13, 2026
…mule-project#466) (amule-project#473)

The Shared Files view could only show static counters (transferred,
requests, accepts, complete sources) — unlike Downloads, there was no way
to tell an actively-seeded file from an idle one. Surface per-file upload
activity over EC so clients (the REST API now, the desktop GUI later) can
add the corresponding columns.

Core (CKnownFile):
  * GetUploadDatarate() / GetTransferringClientCount() — live, summed from
    m_ClientUploadList: current upload speed and peers uploading now.
  * m_lastUploadDatetime — stamped in CFileStatistic::AddTransferred (the
    single point where sent bytes are attributed to a file), the upload-side
    analogue of the download's m_lastDateChanged.
  * m_dateShared — stamped once when a file completes (CompleteFileEnded) or
    is first hashed into the share (CKnownFileList::Append, afterHashing).
  Both persist in known.met as new FT_ tags (FT_LASTUPLOADED / FT_SHAREDSINCE);
  absent on a pre-feature known.met => 0 (unknown). Uploading never rewrites
  the shared file, so the timestamp can't ride the .met date the way downloads
  do — it needs its own tag. The unknown-tag preserve-and-rewrite path keeps
  this forward/backward compatible.

EC / dirty-marking:
  * New tags EC_TAG_KNOWNFILE_UPLOAD_SPEED / _UPLOADING_COUNT / _LAST_UPLOAD
    (live, emitted before the UPDATE early-return) and _SHARED_SINCE (full
    detail).
  * SetUploadState marks the file EC-dirty on US_UPLOADING transitions so a
    file that stops uploading but stays queued drops its speed to 0 —
    completed/shared files have no per-tick Process() sweep like downloads.

REST + SSE (amuleapi):
  * /shared list + detail gain upload_speed_bps, uploading, last_upload,
    shared_since; the SSE shared_added/shared_updated payload and EqualShared
    comparator carry them so live changes emit events.

Tests: RefresherTest decodes the new tags; curl 04 asserts the fields.
Docs: docs/api/REFERENCE.md.
ngosang added a commit to ngosang/amule that referenced this pull request Jul 30, 2026
…oject#466) (amule-project#730)

The Shared Files view only had static counters, so an actively seeded file
looked the same as an idle one. Surface the four fields 5722207 added to
GET /shared (list and detail alike).

Table (shared.js):
  * New columns: "Up speed" (upload_speed_bps) and "Uploading" (uploading),
    both live off the existing SSE shared channel, plus "Last upload" and
    "Shared since" hidden by default -- the timestamps are wide and rarely
    watched, one click away in the column picker.
  * The totals line now sums the upload speed, mirroring the downloads view.

Detail panel (shared-detail.js): the same four values as rows in the
Sharing section, with tooltips. The existing queued-clients row is left
alone so "uploading" and "queued" read as two neighbouring rows.

format.js: fmtTs, until now local to download-detail.js, becomes the
exported formatTimestamp and is reused by both panels. Unknown timestamps
(0 -- never uploaded, or a known.met entry written before the feature)
render as a dash.

i18n: new keys in en.json and es.json.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants