Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 3 additions & 1 deletion AUTHORS.md
Original file line number Diff line number Diff line change
Expand Up @@ -18,10 +18,12 @@ first contribution:
| [@Moferanoluwa](https://github.com/Moferanoluwa) | added `--version` and made both report flavours record which build wrote them (#61); corrected the `--proxies` documentation that #48 had made stale (#63); brought `docs/ARCHITECTURE.md` in line with the shared download engine (#68); put CI on a 3.10/3.11/3.12 matrix with a `ruff` baseline (#69); made documentation-only pull requests verify their `moon_cli.py` examples against the real parser (#70); annotated the exception handlers in `moon_engine.py` and narrowed the report-save swallow (#71) |
| [@RubenSanosh](https://github.com/RubenSanosh) | froze the elapsed-time clock when a run finishes, so the GUI stops counting after the last file lands (#73) |
| [@darlenepolek](https://github.com/darlenepolek) | derived the CI byte-compile list from `git ls-files` so it can no longer drift, and made the lint workflow watch its own file (#77) |
| [@XEDAB](https://github.com/XEDAB) | made a discarded partial download say so, instead of silently restarting a multi-gigabyte transfer when the server ignores a resume request (#98) |
| [@XEDAB](https://github.com/XEDAB) | made a discarded partial download say so, instead of silently restarting a multi-gigabyte transfer when the server ignores a resume request (#98); gave `download_file` a way to reach the live log, so mid-transfer failures stop being invisible until the run ends — and fixed an `UnboundLocalError` reachable whenever a connection timed out before the first byte (#120) |
| [@tomatotomata](https://github.com/tomatotomata) | corrected the headless CLI example in `README.md`, which documented positional URLs and a `-o` flag the parser never accepted (#53) |
| [@kocaemre](https://github.com/kocaemre) | taught the documentation guard to check single-dash flags, so it now catches the line it was written for (#104) |
| [@Vam-si-krish](https://github.com/Vam-si-krish) | made an unsupported host fail on sight instead of being retried like a network error, and collapsed the host names to one definition shared by both front-ends (#108) |
| [@felix-windsor](https://github.com/felix-windsor) | stopped two links with the same filename from sharing one `.tmp` and corrupting each other, by reserving destination names at registration (#119) |
| [@AashishGupta2007](https://github.com/AashishGupta2007) | narrowed and documented the eight exception handlers in the Chrome-lifecycle slice of `moon_extract.py` (#118) |

Dependabot handles the dependency and action bumps.

Expand Down
15 changes: 15 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,21 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
change from here on, and the two copies can no longer drift apart

### Fixed
- **Two links resolving to the same filename shared one `.tmp` and corrupted each other.** The
destination was derived from the filename alone, so two transfers opened the same partial
file and raced to rename it — visible on Windows as `WinError 32`, silent on POSIX, where
`os.replace` does not refuse and the interleaved survivor was reported `ok`. Names are now
reserved case-insensitively when each record is registered, before either transfer is
scheduled, and the rename is reported in both front-ends (#119, @felix-windsor)
- **Mid-transfer failures never reached the screen.** A dead proxy, a dropped connection or a
refused resume wrote a note that only appeared in `moontech_*.log` after the run, so a run
sat at `0 KB/s` with no explanation. `download_file` now takes an optional `on_event`
callback; the engine passes its log, the CLI prints, and the report keeps everything it had.
Also fixes an `UnboundLocalError` when a connection failed before the first byte arrived
(#120, @XEDAB)
- The eight `except Exception:` handlers in the Chrome-lifecycle slice of `moon_extract.py`
are narrowed or explained; the CDP attach now catches `PlaywrightError` and the Chrome
process teardown `(subprocess.TimeoutExpired, OSError)` (#118, @AashishGupta2007)
- **Datanodes extraction hung on every link and failed silently.** The host now serves step 2
as a chain — *Free Download / Standard Speed* reveals *Start Download / Your file is ready*,
and only the second starts the transfer — while the trigger handler latched after one click.
Expand Down