Skip to content

doc: add Brazilian Portuguese man page translation - #768

Merged
mrjimenez merged 5 commits into
masterfrom
pt-br
May 29, 2026
Merged

doc: add Brazilian Portuguese man page translation#768
mrjimenez merged 5 commits into
masterfrom
pt-br

Conversation

@mrjimenez

@mrjimenez mrjimenez commented May 29, 2026

Copy link
Copy Markdown
Contributor

Summary

  • Add *.mo to .gitignore to exclude msgfmt-generated binary artifacts from the repository
  • Add Brazilian Portuguese (pt_BR) translation for all aMule man pages as a new docs/man/po/manpages-pt_BR.po file
  • Register pt_BR in po4a.config so translated man pages are generated by po4a
  • Fix missing italic modifier (I<...>) in French and Brazilian Portuguese man page translations (found while validating with po4a)

Test plan

  • Run po4a --target-lang pt_BR po4a.config — all 10 *.pt_BR.1 files generated successfully (6 in docs/man/, 4 in src/utils/)
  • Run po4a --target-lang fr po4a.config — passes cleanly after fix (6 in docs/man/, 4 in src/utils/)
  • Confirm .mo files are ignored by git

@mrjimenez
mrjimenez merged commit 229e268 into master May 29, 2026
14 checks passed
@mrjimenez
mrjimenez deleted the pt-br branch May 29, 2026 19:25
got3nks added a commit to got3nks/amule that referenced this pull request Jun 4, 2026
…ndex

Adds 55+ merged PRs to the 3.0.0 changelog since the last update
(amule-project#747, 2026-05-27). Narrative additions cover:

- Packaging: expanded the top list to include the macOS per-arch .app
  bundles and the Windows NSIS installer alongside the existing
  AppImage / Flatpak / .dmg / .zip entries. New bullets for amule-project#785
  (alc/alcc/cas/wxcas everywhere + Windows amuleweb), amule-project#794 (.dmg
  amuleweb path), amule-project#789 (<OS>-<arch> artifact naming), amule-project#780 / amule-project#796
  (Windows DPI + comctl32 manifest), amule-project#784 (FHS share/amule paths).

- Bug Fixes & Stability: post-amule-project#744 fixes including EC notification
  leak (amule-project#797), big-library scaling (amule-project#736, amule-project#840 superseding amule-project#728),
  amulegui ghost entries (amule-project#810, amule-project#819, amule-project#841, amule-project#824, amule-project#830, amule-project#760),
  PartFile early hash (amule-project#762), server protocol fixes (amule-project#835, amule-project#788,
  amule-project#721, amule-project#787), crypto stream UB (amule-project#779), UAF prevention (amule-project#756),
  Kad rotation (amule-project#795, amule-project#799/amule-project#805), GTK warning silencing (amule-project#833,
  amule-project#826/amule-project#836), and the clang-tidy worklist (amule-project#770, amule-project#772-amule-project#774).

- Translations: late-cycle wave covering French/Turkish manpages
  (amule-project#753/amule-project#754/amule-project#776), Galician (amule-project#763), Slovenian (amule-project#771), pt-BR
  (amule-project#768/amule-project#775/amule-project#812), French (amule-project#811), plus man-page tooling for
  date+version drift (amule-project#802).

- Contributors: added ngosang for UX feedback on the late-3.0
  cycle (amule-project#817/amule-project#818/amule-project#821/amule-project#828/amule-project#844) and ongoing work on the
  user-facing manual at amule-org.github.io.

- Merged PRs flat index: extended with amule-project#746-amule-project#845 + amule-project#841.
got3nks added a commit to got3nks/amule that referenced this pull request Jun 4, 2026
…ndex

Adds 55+ merged PRs to the 3.0.0 changelog since the last update
(amule-project#747, 2026-05-27). Narrative additions cover:

- Packaging: expanded the top list to include the macOS per-arch .app
  bundles and the Windows NSIS installer alongside the existing
  AppImage / Flatpak / .dmg / .zip entries. New bullets for amule-project#785
  (alc/alcc/cas/wxcas everywhere + Windows amuleweb), amule-project#794 (.dmg
  amuleweb path), amule-project#789 (<OS>-<arch> artifact naming), amule-project#780 / amule-project#796
  (Windows DPI + comctl32 manifest), amule-project#784 (FHS share/amule paths).

- Bug Fixes & Stability: post-amule-project#744 fixes including EC notification
  leak (amule-project#797), big-library scaling (amule-project#736, amule-project#840 superseding amule-project#728),
  amulegui ghost entries (amule-project#810, amule-project#819, amule-project#841, amule-project#824, amule-project#830, amule-project#760),
  PartFile early hash (amule-project#762), server protocol fixes (amule-project#835, amule-project#788,
  amule-project#721, amule-project#787), crypto stream UB (amule-project#779), UAF prevention (amule-project#756),
  Kad rotation (amule-project#795, amule-project#799/amule-project#805), GTK warning silencing (amule-project#833,
  amule-project#826/amule-project#836), and the clang-tidy worklist (amule-project#770, amule-project#772-amule-project#774).

- Translations: late-cycle wave covering French/Turkish manpages
  (amule-project#753/amule-project#754/amule-project#776), Galician (amule-project#763), Slovenian (amule-project#771), pt-BR
  (amule-project#768/amule-project#775/amule-project#812), French (amule-project#811), plus man-page tooling for
  date+version drift (amule-project#802).

- Contributors: added ngosang for UX feedback on the late-3.0
  cycle (amule-project#817/amule-project#818/amule-project#821/amule-project#828/amule-project#844) and ongoing work on the
  user-facing manual at amule-org.github.io.

- Merged PRs flat index: extended with amule-project#746-amule-project#845 + amule-project#841.
mrjimenez pushed a commit that referenced this pull request Jun 4, 2026
Adds 55+ merged PRs to the 3.0.0 changelog since the last update
(#747, 2026-05-27). Narrative additions cover:

- Packaging: expanded the top list to include the macOS per-arch .app
  bundles and the Windows NSIS installer alongside the existing
  AppImage / Flatpak / .dmg / .zip entries. New bullets for #785
  (alc/alcc/cas/wxcas everywhere + Windows amuleweb), #794 (.dmg
  amuleweb path), #789 (<OS>-<arch> artifact naming), #780 / #796
  (Windows DPI + comctl32 manifest), #784 (FHS share/amule paths).

- Bug Fixes & Stability: post-#744 fixes including EC notification
  leak (#797), big-library scaling (#736, #840 superseding #728),
  amulegui ghost entries (#810, #819, #841, #824, #830, #760),
  PartFile early hash (#762), server protocol fixes (#835, #788,
  #721, #787), crypto stream UB (#779), UAF prevention (#756),
  Kad rotation (#795, #799/#805), GTK warning silencing (#833,
  #826/#836), and the clang-tidy worklist (#770, #772-#774).

- Translations: late-cycle wave covering French/Turkish manpages
  (#753/#754/#776), Galician (#763), Slovenian (#771), pt-BR
  (#768/#775/#812), French (#811), plus man-page tooling for
  date+version drift (#802).

- Contributors: added ngosang for UX feedback on the late-3.0
  cycle (#817/#818/#821/#828/#844) and ongoing work on the
  user-facing manual at amule-org.github.io.

- Merged PRs flat index: extended with #746-#845 + #841.
mrjimenez pushed a commit to mrjimenez/amule that referenced this pull request Aug 4, 2026
…mule-project#768)

amuleGUI could sit with a frozen UI indefinitely, showing no error and
never reconnecting, whenever the transport stopped delivering without
closing: an SSH tunnel with no ServerAliveInterval, a NAT dropping an idle
mapping, a proxy that stops relaying. None of those close the socket -- it
stays ESTABLISHED with every queue empty -- so neither OnError nor OnLost
ever fires and nothing notices.

The failure was self-sealing, which is what made it permanent. Requests
pile up unanswered until m_req_count passes m_req_fifo_thr, at which point
OnPollTimer early-returns on every tick and the client stops sending too.
Recovery would need a reply, a reply needs a request, and none are going
out: the back-pressure brake becomes a deadlock the client cannot leave.
A field capture showed it stuck at 22 outstanding requests, unchanged and
silent in both directions, for over thirteen minutes.

Track when the last packet arrived and, once requests have been
outstanding for 30 s with nothing back, close and dispatch the loss. That
lands in the existing OnECConnection(false) -> BeginReconnect() path,
which already freezes the UI, reports the failure and redials. The
timestamp is steady_clock, so an NTP step or a sleep/wake cannot read as a
stalled link, and it is taken for every inbound packet including the
handshake so a fresh connection is never mistaken for a stale one.

CloseAndDispatchLost rather than a plain close: a self-close suppresses
the asio lost-event path, so without the explicit dispatch nothing would
tell the GUI -- the same trap its own comment documents.

Gated on the request fifo rather than on the full-threshold so it trips on
the real symptom (nothing answering) instead of waiting for the queue to
fill. 30 s cannot be reached by a merely busy daemon: a healthy link
answers in single-digit milliseconds and the poll cycle is ~3 s.

Adds no translatable string. The user-facing messaging already comes from
the path this drops into -- "Connection failure" and the reconnect
announcements are long since translated -- so the detail is an
untranslated debug line for developers instead.

Verified against a relay that stops forwarding while holding both sockets
open: detection at 30 s with 23 requests pending, then the normal
reconnect sequence, with every message coming from existing catalog
entries.
mrjimenez pushed a commit to mrjimenez/amule that referenced this pull request Aug 8, 2026
…den (amule-project#817)

Losing the EC link put a modal reconnect dialog on screen whether or not the window was there to be seen. Minimised to the taskbar or hidden to the tray it appeared over whatever the user was actually doing and took focus, to explain a frozen window they could not see.

The dialog earns its intrusion by explaining that frozen window, so it now waits until there is one. With the window out of sight the retry loop runs exactly as before -- every attempt logged, the countdown ticking, the same 5 s spacing -- and simply draws nothing. Reconnect while minimised and the dialog is never created: the link comes back, polling resumes, nobody is interrupted. Return to the window mid-reconnect and it appears, opening on whatever the loop is doing rather than on "attempt 1", Abort button and all.

"Out of sight" means two things and neither alone is enough: minimised to Dock or taskbar keeps IsShown() true with nothing on screen, while hidden to tray leaves the iconized bit clear with no frame at all. CMuleTrayIcon::DoShowHide already had that pair spelled out inline to label its Show/Hide entry; it moves to CamuleDlg::IsVisibleToUser() and both callers share the one definition. Restoring is likewise two paths, because tray-hide never fires wxIconizeEvent and iconize never fires EVT_SHOW, so OnMinimize and OnShow each carry the hook. Neither shows the dialog directly: that would run a nested modal loop whose abort path calls Quit(), and tearing the main window down from a nested loop is what amule-project#738 was about, so it goes through CallAfter.

The retry machinery needed no changes -- AttemptReconnect, ScheduleNextReconnect and OnReconnectTimer already guarded every dialog access. What did need splitting is the tail of BeginReconnect, which assumed it was resuming after ShowModal returned; that work moves to FinishReconnect() so it runs whether or not a dialog was ever shown.

The dialog was never gated on window state, so what changed recently is how often it is reached rather than when it may appear: amule-project#768 made a silent link trigger a reconnect instead of freezing, and amule-project#773's move to ~1 s polling keeps a request outstanding far more of the time, which is that watchdog's precondition.

Iconize is not observable on Wayland (xdg-shell has no such notification), so compositors that never report it keep the old behaviour for the minimise case; the tray paths are unaffected.
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.

1 participant