| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
feat: import motrix-turbo snapshot | 2 个月前 | |
chore: upgrade dependencies and improve regression tests (#2336) * chore: upgrade dependencies and improve regression tests * test(e2e): align fixtures and stabilize real interactions | 13 天前 | |
chore: upgrade dependencies and improve regression tests (#2336) * chore: upgrade dependencies and improve regression tests * test(e2e): align fixtures and stabilize real interactions | 13 天前 | |
ci(release): publish validated flatpak application bundles (#2172) * ci(release): publish validated flatpak application bundles * docs(flatpak): make bundle upgrades explicit | 1 个月前 | |
fix(security): harden supply-chain trust boundaries (#1846) | 2 个月前 | |
feat(build): optimize Electron package size (#1838) * feat(build): define Electron package contracts * feat(build): add atomic Electron app stager * feat(build): filter Electron native payloads * feat(build): package Electron from staged app * fix(build): prevent Electron dependency recollection * feat(build): verify Electron package payloads * ci(build): enforce staged Electron packages * test(build): add packaged Electron runtime smoke * chore(build): complete package optimization verification * fix(build): decouple postinstall from staged app * fix(build): expose package verification failures * fix(build): normalize ASAR paths on Windows | 2 个月前 | |
feat(plugin): add durable hook runtime (#2038) * feat(plugin): add durable hook runtime Add typed pre/post hook execution, durable post delivery, crash-safe finalization, and the cross-platform finalize-fs helper. Wire desktop, server, packaging, recovery, SDK compatibility fixtures, and public documentation. * fix(packaging): restore cross-platform package checks * fix(finalize-fs): use native Windows mutation APIs * fix(finalize-fs): open removable Windows directories writable * fix(finalize-fs): share held Windows directories * fix(finalize-fs): unlink held Windows artifacts safely * fix(finalize): make Windows tree sync durable | 1 个月前 | |
feat: import motrix-turbo snapshot | 2 个月前 | |
fix: unblock task creation, resume retried downloads, explain long paths (#2194) * fix(plugin): keep a failing hook from blocking task creation A pre-resolve beforeCreate hook fails its chain closed, so any plugin in that band can veto every new task. motrix.scraper-hook 1.0.0 sat there with `*://*/*` host permissions and an HTTP budget (5 s HEAD + 10 s GET) larger than the 10 s series deadline, so a slow page aborted the chain and no download could be added (#2189). - Wire the existing CircuitBreaker into the production orchestrator. It was never passed in, so a persistently failing plugin was neither skipped nor disabled. The orchestrator now builds one when a caller supplies none. - Report a deadline overrun as `plugin.hook.timeout`. The caller's budget and the bridge's defensive timer fired in the same tick, so the budget always won and surfaced a bare `plugin hook aborted`. The bridge now reads the abort reason and arms its own timer with a grace margin. Reasons posted into the VM stay a closed set. - Retire motrix.scraper-hook from the bundled builtin set. Page scraping is an optional convenience and must not be able to hold up a download. It is dropped from the lockfile, notices and flatpak digests. Its seed overlay is retired by the registry's orphan gate. - Prune retired seeds in `fetch-builtins.mjs` skip mode too, so an offline or CI packaging run cannot keep shipping a retired builtin. - Host-lane e2e coverage that used scraper-hook as a vehicle now runs against motrix.url-resolver. * fix(task): explain over-long windows paths and plugin aborts An over-long Windows destination made aria2 fail its file open with ERROR_PATH_NOT_FOUND. That was flattened into the generic write error, "check folder permissions and disk space", which cannot fix it. The reported path was 262 characters, past the 259 usable under MAX_PATH (#2183). - Add DL_PATH_TOO_LONG. classifyTerminalError measures the path named in aria2's file-open message and reports its length against the limit. - Check planned destinations before a task is created, including every path a .torrent declares. The task fails before a byte moves instead of after the transfer. Magnets fall back to the terminal classifier. Only the whole-path limit is checked; the per-component NAME_MAX budget was already enforced. - Map plugin-chain aborts and path overruns in the add-task form to localized messages that name the plugin or the lengths, instead of showing the raw engine text (#2189). * fix(session): ask the engine for checkpoints before retrying With sqlite3 persistence (the default) aria2_motrix keeps checkpoints in aria2.db and never writes <file>.aria2. The recovery planner only looked for the control file on disk. Every interrupted HTTP download with a non-empty partial file therefore came back as checkpoint-missing, and both the retry and the startup resume refused it (#2187). Where a checkpoint lives is the engine's business, so Motrix now asks the engine instead of guessing a store: - EngineAdapter.getCheckpointStatus(outputPath) calls the fork's aria2.getCheckpointStatus RPC, which answers from the store the engine actually reads. - If the engine predates the method, the adapter returns null. createEngineCheckpointProbe then falls back to the control file, which is what official aria2 and older fork builds can resume from. - DirectRecoveryPlanner takes the probe. SessionManager restore and re-add build it from the adapter they already hold, so no persistence mode or database path is plumbed through the shells. * fix(engine): upgrade aria2 for path-addressed checkpoints Bump the bundled engine to 1.37.0-motrix.15 (motrixapp/aria2#19). That release: - keeps an errored download's checkpoint when removeDownloadResult drops its task row, and addresses the checkpoint by output path, so a retry under a new gid resumes; - adds aria2.getCheckpointStatus, which the recovery planner now queries; - declares aria2c long-path aware on Windows (#2183). Together with the planner change this completes #2187. Session identity recovery allowlists aria2 schema versions and returned null for v3, which silently skipped the pre-spawn repair of magnet payload identities. Accept v3. Because v3 no longer cascades task into task_progress, drop a retired metadata ancestor's checkpoint explicitly, as v1/v2 did through the cascade. Add a real-engine integration test covering the whole #2187 flow: download, network drop, error, removeDownloadResult, getCheckpointStatus reports present, the planner picks checkpoint, and a re-add under a new gid resumes from the saved offset with a matching sha256. It fails against 1.37.0-motrix.14. Lockfile regenerated with `fetch-engine.mjs --write-lock`. The flatpak source pin, notices and their tests follow the new tag. | 30 天前 | |
feat(appearance): add glass icons and adaptive sidebar colors (#2206) | 28 天前 | |
feat: import motrix-turbo snapshot | 2 个月前 | |
feat: import motrix-turbo snapshot | 2 个月前 | |
feat(plugins): add signed security policy enforcement (#2326) | 14 天前 | |
feat: import motrix-turbo snapshot | 2 个月前 | |
feat: import motrix-turbo snapshot | 2 个月前 | |
feat(engine): add dns resolution mode with auto fallback (#1870) * feat(engine): add dns resolution mode with auto fallback Adds EngineSettings.dnsMode ('auto' | 'system' | 'engine', default 'auto'). 'auto' starts on the engine's async resolver and, when a task errors with a c-ares transport failure ("Could not contact DNS servers" and friends), hot-flips aria2 to the system resolver via changeGlobalOption, re-adds the failed task once, and notifies the user. Deterministic resolver answers (NXDOMAIN, no data) never trigger the fallback, and the consumer guards against startup occurrence redelivery and retry storms. The mode is exposed in the Downloads settings dialog (en-US/zh-CN/zh-TW) and hot-applies on change without an engine restart. * refactor(settings): move dns resolution mode to network card Users look for DNS next to proxy and NAT, not inside the Downloads engine-tuning form. The control now lives in the Network dialog as its own DNS section (keys under settings.network.dns.*); the submitted patch shape ({ engine: { dnsMode } }) and all backend behavior are unchanged. * fix(i18n): simplify user-facing english dns copy Drop resolver jargon from the DNS lookup labels and the fallback notification; option names read as Auto / System DNS / Built-in DNS. * style(settings): unify network selects at w-35, shorten auto label Both the DNS and NAT protocol selects now share one w-35 trigger width, and the Auto option drops the '(recommended)' suffix in all three locales — the row description already carries the recommendation. * style(scripts): use template literal in check-schema-parity Pre-existing on main (unchanged since the snapshot import); surfaced by this PR's CI biome run over scripts/. Behavior-identical rewrite. * style(renderer): satisfy biome formatter in network dialog test The shortened option regex brought the wrapped call under the line width, so the formatter now requires the single-line form. * ci: single-source lint scope through pnpm run lint The workflow, the local commit gate, and the lint script previously each defined their own biome scope; a file passing the documented gate (src/ only) could still fail CI (src/ + scripts/ + native-host tooling). All three now run the same command, with biome.json as the only scope definition. CI also prints the resolved biome version before linting because identical inputs have produced different lint verdicts between runs, and the fingerprint is the fastest way to tell toolchain drift from a real finding. * test(ci): lock lint contract to pnpm run lint The workflow contract previously pinned the explicit path list; it now pins the single-source form: the Lint step must run 'pnpm run lint', package.json's lint script must be repo-wide 'biome check .', and the biome version fingerprint step must exist. | 2 个月前 | |
fix(release): harden platform inspection and seed smoke (#1866) | 2 个月前 | |
feat(deploy): publish installable Motrix Server containers (#1845) * feat(build): define container release metadata * ci: publish signed multi-arch server images * test(build): verify published container artifacts * fix(server): preserve generated operator token * feat(deploy): make Compose registry-first * docs(deploy): add bilingual NAS installation guide * fix(deploy): publish Docker Hub images under motrixapp | 2 个月前 | |
feat(deploy): publish installable Motrix Server containers (#1845) * feat(build): define container release metadata * ci: publish signed multi-arch server images * test(build): verify published container artifacts * fix(server): preserve generated operator token * feat(deploy): make Compose registry-first * docs(deploy): add bilingual NAS installation guide * fix(deploy): publish Docker Hub images under motrixapp | 2 个月前 | |
feat(downloads): add task re-download (#2363) * feat(downloads): add task re-download and alt-click option editing (#2324) - Support re-downloading completed tasks in task inspector and context menu (#2324) - Prompt overwrite confirmation dialog if destination file still exists - Open task modal with prefilled options when Alt+clicking re-download or retry - Detect missing credential parameters and fallback to task modal with notification - Implement Queries.CheckTaskFileExists query and handlers for main and server IPC - Add full unit test coverage and i18n support across 26 locales * fix(downloads): keep re-downloads resilient to plugin failures Build the plugin worker before starting Electron and preserve worker activation errors. Isolate optional hook failures so filename templating cannot prevent download finalization, while required resolvers and post-processors still abort. Restore the saved download directory when engine options are unavailable and cover re-download and worker failure regressions. | 9 天前 | |
chore(deps): refresh npm packages and security locks (#2287) | 23 天前 | |
fix(ci): reconcile toolchain pins and package size budget (#2341) | 13 天前 | |
feat(build): optimize Electron package size (#1838) * feat(build): define Electron package contracts * feat(build): add atomic Electron app stager * feat(build): filter Electron native payloads * feat(build): package Electron from staged app * fix(build): prevent Electron dependency recollection * feat(build): verify Electron package payloads * ci(build): enforce staged Electron packages * test(build): add packaged Electron runtime smoke * chore(build): complete package optimization verification * fix(build): decouple postinstall from staged app * fix(build): expose package verification failures * fix(build): normalize ASAR paths on Windows | 2 个月前 | |
feat: label file list columns, record directories main-side, and cut package size (#2188) Two related groups of work. Downloads and task handling: - The file list gains an opt-out column header row (name, type, size, and a caller-supplied trailing label) plus a per-row file-type cell. - The recent-save-directory write moves out of the renderer into CreateTask and the torrent batch handler, so whichever side accepts a submission owns its own history. - The tray's lowest speed unit loses its decimals; higher units keep them. - Chinese "time remaining" wording, default sorting shown in the column headers, and the shared icon-xs button size in the add-task filters. Dependencies and toolchain: - npm bumps, Electron 44.3.0 -> 44.4.3, pnpm 12.4.2 -> 12.5.1. Both versions are mirrored across release, signing and Flatpak infrastructure, so every copy is re-pinned, including the per-target Electron zip digests and the Flatpak offline bootstrap. - packageManager regains the corepack integrity hash a bare "pnpm@12.5.1" had dropped; the sha512 was cross-checked against the registry dist.integrity. Package size, prompted by the bump breaching the Server budget: - Server artifactBytes 88.25 -> 41.30 MiB, Electron payloadBytes 27.49 -> 19.03 MiB (CI-measured). - THIRD_PARTY_LICENSES.txt is one whole-project artifact whose Electron block alone is 19.18 MiB. External components now declare a distributions list and the generator builds one bundle per distribution. Validation still covers every declared component regardless of distribution; only rendering narrows. - Both stagers copied most packages whole. The prune of build-time-only files now lives in scripts/staged-package-pruning.mjs and both call it. Attribution files are excluded from the rule and keep shipping. - quickjs-emscripten is an umbrella over all four WASM builds while the sandbox uses only the synchronous release variant; depending on the core package plus that one variant takes QuickJS from six packages and 8.7 MiB to three and 1.6 MiB. - Budgets are re-derived from the measurements: Server 89 -> 46 MiB, dependencyBytes 52 -> 25 MiB, packageInstances 135 -> 131, Electron payloadBytes 64 -> 24 MiB, landing near 80-90% utilisation. Build Snap fails on main for the same reason it fails here -- snapcraft cannot generate snap/meta/gui/motrix.desktop -- so it is pre-existing and unrelated. | 30 天前 | |
chore(engine): bundle verified aria2 motrix.18 release (#2399) | 3 天前 | |
chore(release): prepare 2.0.0-beta.30 (#2048) | 1 个月前 | |
feat: import motrix-turbo snapshot | 2 个月前 | |
feat(plugin): add durable hook runtime (#2038) * feat(plugin): add durable hook runtime Add typed pre/post hook execution, durable post delivery, crash-safe finalization, and the cross-platform finalize-fs helper. Wire desktop, server, packaging, recovery, SDK compatibility fixtures, and public documentation. * fix(packaging): restore cross-platform package checks * fix(finalize-fs): use native Windows mutation APIs * fix(finalize-fs): open removable Windows directories writable * fix(finalize-fs): share held Windows directories * fix(finalize-fs): unlink held Windows artifacts safely * fix(finalize): make Windows tree sync durable | 1 个月前 | |
fix: unblock task creation, resume retried downloads, explain long paths (#2194) * fix(plugin): keep a failing hook from blocking task creation A pre-resolve beforeCreate hook fails its chain closed, so any plugin in that band can veto every new task. motrix.scraper-hook 1.0.0 sat there with `*://*/*` host permissions and an HTTP budget (5 s HEAD + 10 s GET) larger than the 10 s series deadline, so a slow page aborted the chain and no download could be added (#2189). - Wire the existing CircuitBreaker into the production orchestrator. It was never passed in, so a persistently failing plugin was neither skipped nor disabled. The orchestrator now builds one when a caller supplies none. - Report a deadline overrun as `plugin.hook.timeout`. The caller's budget and the bridge's defensive timer fired in the same tick, so the budget always won and surfaced a bare `plugin hook aborted`. The bridge now reads the abort reason and arms its own timer with a grace margin. Reasons posted into the VM stay a closed set. - Retire motrix.scraper-hook from the bundled builtin set. Page scraping is an optional convenience and must not be able to hold up a download. It is dropped from the lockfile, notices and flatpak digests. Its seed overlay is retired by the registry's orphan gate. - Prune retired seeds in `fetch-builtins.mjs` skip mode too, so an offline or CI packaging run cannot keep shipping a retired builtin. - Host-lane e2e coverage that used scraper-hook as a vehicle now runs against motrix.url-resolver. * fix(task): explain over-long windows paths and plugin aborts An over-long Windows destination made aria2 fail its file open with ERROR_PATH_NOT_FOUND. That was flattened into the generic write error, "check folder permissions and disk space", which cannot fix it. The reported path was 262 characters, past the 259 usable under MAX_PATH (#2183). - Add DL_PATH_TOO_LONG. classifyTerminalError measures the path named in aria2's file-open message and reports its length against the limit. - Check planned destinations before a task is created, including every path a .torrent declares. The task fails before a byte moves instead of after the transfer. Magnets fall back to the terminal classifier. Only the whole-path limit is checked; the per-component NAME_MAX budget was already enforced. - Map plugin-chain aborts and path overruns in the add-task form to localized messages that name the plugin or the lengths, instead of showing the raw engine text (#2189). * fix(session): ask the engine for checkpoints before retrying With sqlite3 persistence (the default) aria2_motrix keeps checkpoints in aria2.db and never writes <file>.aria2. The recovery planner only looked for the control file on disk. Every interrupted HTTP download with a non-empty partial file therefore came back as checkpoint-missing, and both the retry and the startup resume refused it (#2187). Where a checkpoint lives is the engine's business, so Motrix now asks the engine instead of guessing a store: - EngineAdapter.getCheckpointStatus(outputPath) calls the fork's aria2.getCheckpointStatus RPC, which answers from the store the engine actually reads. - If the engine predates the method, the adapter returns null. createEngineCheckpointProbe then falls back to the control file, which is what official aria2 and older fork builds can resume from. - DirectRecoveryPlanner takes the probe. SessionManager restore and re-add build it from the adapter they already hold, so no persistence mode or database path is plumbed through the shells. * fix(engine): upgrade aria2 for path-addressed checkpoints Bump the bundled engine to 1.37.0-motrix.15 (motrixapp/aria2#19). That release: - keeps an errored download's checkpoint when removeDownloadResult drops its task row, and addresses the checkpoint by output path, so a retry under a new gid resumes; - adds aria2.getCheckpointStatus, which the recovery planner now queries; - declares aria2c long-path aware on Windows (#2183). Together with the planner change this completes #2187. Session identity recovery allowlists aria2 schema versions and returned null for v3, which silently skipped the pre-spawn repair of magnet payload identities. Accept v3. Because v3 no longer cascades task into task_progress, drop a retired metadata ancestor's checkpoint explicitly, as v1/v2 did through the cascade. Add a real-engine integration test covering the whole #2187 flow: download, network drop, error, removeDownloadResult, getCheckpointStatus reports present, the planner picks checkpoint, and a re-add under a new gid resumes from the saved offset with a matching sha256. It fails against 1.37.0-motrix.14. Lockfile regenerated with `fetch-engine.mjs --write-lock`. The flatpak source pin, notices and their tests follow the new tag. | 30 天前 | |
refactor(runtime): isolate host-specific services (#1841) * fix(bridge): inject host runtime identity The shared MDXP initializer previously reported Electron even when the Node server shell constructed it. Require each composition root to provide its runtime so clients receive the actual host identity. * refactor(shared): move aria2 paths to host shells The shared leaf exposed Node path and platform types for a deployment-specific resource layout. Keep only the pure binary-name rule in shared and enforce the Node-free boundary mechanically. * refactor(plugin): inject app runtime snapshot Plugin app metadata belongs to the Electron and Server adapters. Make the core capability a pure snapshot holder so it no longer derives platform, architecture, or locale from process globals. * refactor(plugin): inject ffmpeg runtime inputs Make the core detector consume host-supplied platform and environment candidates. Electron and Server shells now own process inspection while preserving candidate order. * refactor(plugin): inject development path Keep MOTRIX_PLUGIN_DEV_PATH lookup in Electron and Server composition roots. PluginRegistry now receives the optional development directory as an explicit input. * refactor(plugin): inject idle lifecycle tuning Parse MOTRIX_PLUGIN_IDLE_DISPOSE_MS at each host boundary and pass the normalized value into PluginHost. Core lifecycle behavior keeps its five-minute default without inspecting process state. * refactor(plugin): inject secret store seed Move MOTRIX_SECRETS_SEED lookup into Electron and Server capability factories. The shared core storage implementation now consumes only its explicit seed or lockbox input. * test(architecture): isolate staging contracts Extend the boundary gate so production source cannot reference runtime dependency declarations, generated stage manifests, or target staging roots. | 2 个月前 | |
fix(linux): modernize AppImage distribution (#1933) Use electron-builder's static AppImage runtime to remove the FUSE2 dependency. Embed architecture- and channel-specific native update information, generate zsync sidecars after rebuilding the embedded updater blockmap, and enforce the artifact contracts in CI and release publication. | 1 个月前 | |
chore(release): prepare 2.0.0-beta.30 (#2048) | 1 个月前 | |
feat: label file list columns, record directories main-side, and cut package size (#2188) Two related groups of work. Downloads and task handling: - The file list gains an opt-out column header row (name, type, size, and a caller-supplied trailing label) plus a per-row file-type cell. - The recent-save-directory write moves out of the renderer into CreateTask and the torrent batch handler, so whichever side accepts a submission owns its own history. - The tray's lowest speed unit loses its decimals; higher units keep them. - Chinese "time remaining" wording, default sorting shown in the column headers, and the shared icon-xs button size in the add-task filters. Dependencies and toolchain: - npm bumps, Electron 44.3.0 -> 44.4.3, pnpm 12.4.2 -> 12.5.1. Both versions are mirrored across release, signing and Flatpak infrastructure, so every copy is re-pinned, including the per-target Electron zip digests and the Flatpak offline bootstrap. - packageManager regains the corepack integrity hash a bare "pnpm@12.5.1" had dropped; the sha512 was cross-checked against the registry dist.integrity. Package size, prompted by the bump breaching the Server budget: - Server artifactBytes 88.25 -> 41.30 MiB, Electron payloadBytes 27.49 -> 19.03 MiB (CI-measured). - THIRD_PARTY_LICENSES.txt is one whole-project artifact whose Electron block alone is 19.18 MiB. External components now declare a distributions list and the generator builds one bundle per distribution. Validation still covers every declared component regardless of distribution; only rendering narrows. - Both stagers copied most packages whole. The prune of build-time-only files now lives in scripts/staged-package-pruning.mjs and both call it. Attribution files are excluded from the rule and keep shipping. - quickjs-emscripten is an umbrella over all four WASM builds while the sandbox uses only the synchronous release variant; depending on the core package plus that one variant takes QuickJS from six packages and 8.7 MiB to three and 1.6 MiB. - Budgets are re-derived from the measurements: Server 89 -> 46 MiB, dependencyBytes 52 -> 25 MiB, packageInstances 135 -> 131, Electron payloadBytes 64 -> 24 MiB, landing near 80-90% utilisation. Build Snap fails on main for the same reason it fails here -- snapcraft cannot generate snap/meta/gui/motrix.desktop -- so it is pre-existing and unrelated. | 30 天前 | |
perf(build): optimize bundles and desktop deferred loading (#2316) | 19 天前 | |
perf(build): optimize bundles and desktop deferred loading (#2316) | 19 天前 | |
feat(build): stage standalone Server runtime (#1839) * feat(build): define Server runtime contracts * feat(build): stage standalone Server runtime * feat(build): verify staged Server artifacts * test(server): smoke staged runtime * feat(docker): consume staged Server runtime * ci(server): enforce staged runtime pipeline * test(server): record runtime size baseline * chore(release): close Server staging plan | 2 个月前 | |
feat: import motrix-turbo snapshot | 2 个月前 | |
feat(build): optimize Electron package size (#1838) * feat(build): define Electron package contracts * feat(build): add atomic Electron app stager * feat(build): filter Electron native payloads * feat(build): package Electron from staged app * fix(build): prevent Electron dependency recollection * feat(build): verify Electron package payloads * ci(build): enforce staged Electron packages * test(build): add packaged Electron runtime smoke * chore(build): complete package optimization verification * fix(build): decouple postinstall from staged app * fix(build): expose package verification failures * fix(build): normalize ASAR paths on Windows | 2 个月前 | |
fix(finalize): publish completed files safely on NFS (#2179) | 1 个月前 | |
chore: upgrade dependencies and improve regression tests (#2336) * chore: upgrade dependencies and improve regression tests * test(e2e): align fixtures and stabilize real interactions | 13 天前 | |
feat(docs): add obsidian create command | 1 个月前 | |
feat(docs): add obsidian create command | 1 个月前 | |
feat(build): optimize Electron package size (#1838) * feat(build): define Electron package contracts * feat(build): add atomic Electron app stager * feat(build): filter Electron native payloads * feat(build): package Electron from staged app * fix(build): prevent Electron dependency recollection * feat(build): verify Electron package payloads * ci(build): enforce staged Electron packages * test(build): add packaged Electron runtime smoke * chore(build): complete package optimization verification * fix(build): decouple postinstall from staged app * fix(build): expose package verification failures * fix(build): normalize ASAR paths on Windows | 2 个月前 | |
chore(release): prepare 2.0.0-beta.38 (#2133) * chore(release): prepare 2.0.0-beta.38 with refreshed dependencies * fix(build): support pnpm 12 native setup across release targets | 1 个月前 | |
ci(release): publish validated flatpak application bundles (#2172) * ci(release): publish validated flatpak application bundles * docs(flatpak): make bundle upgrades explicit | 1 个月前 | |
feat: import motrix-turbo snapshot | 2 个月前 | |
feat: import motrix-turbo snapshot | 2 个月前 | |
feat: import motrix-turbo snapshot | 2 个月前 | |
feat: import motrix-turbo snapshot | 2 个月前 | |
feat: import motrix-turbo snapshot | 2 个月前 | |
fix(ci): reconcile toolchain pins and package size budget (#2341) | 13 天前 | |
fix(snap): honor scoped edge channel credentials (#1996) | 1 个月前 | |
fix(installer): preserve optional artwork in release builds (#2067) | 1 个月前 | |
chore(test): consolidate playwright artifacts (#2173) | 1 个月前 | |
feat(bridge): support remote extensions over MBP1 (#2033) * feat(bridge): support remote extensions over MBP1 * test(bridge): pin remote Extension compatibility | 1 个月前 | |
feat(activity): add live charts and history navigation (#2387) | 5 天前 | |
feat(plugin): add durable hook runtime (#2038) * feat(plugin): add durable hook runtime Add typed pre/post hook execution, durable post delivery, crash-safe finalization, and the cross-platform finalize-fs helper. Wire desktop, server, packaging, recovery, SDK compatibility fixtures, and public documentation. * fix(packaging): restore cross-platform package checks * fix(finalize-fs): use native Windows mutation APIs * fix(finalize-fs): open removable Windows directories writable * fix(finalize-fs): share held Windows directories * fix(finalize-fs): unlink held Windows artifacts safely * fix(finalize): make Windows tree sync durable | 1 个月前 | |
feat: label file list columns, record directories main-side, and cut package size (#2188) Two related groups of work. Downloads and task handling: - The file list gains an opt-out column header row (name, type, size, and a caller-supplied trailing label) plus a per-row file-type cell. - The recent-save-directory write moves out of the renderer into CreateTask and the torrent batch handler, so whichever side accepts a submission owns its own history. - The tray's lowest speed unit loses its decimals; higher units keep them. - Chinese "time remaining" wording, default sorting shown in the column headers, and the shared icon-xs button size in the add-task filters. Dependencies and toolchain: - npm bumps, Electron 44.3.0 -> 44.4.3, pnpm 12.4.2 -> 12.5.1. Both versions are mirrored across release, signing and Flatpak infrastructure, so every copy is re-pinned, including the per-target Electron zip digests and the Flatpak offline bootstrap. - packageManager regains the corepack integrity hash a bare "pnpm@12.5.1" had dropped; the sha512 was cross-checked against the registry dist.integrity. Package size, prompted by the bump breaching the Server budget: - Server artifactBytes 88.25 -> 41.30 MiB, Electron payloadBytes 27.49 -> 19.03 MiB (CI-measured). - THIRD_PARTY_LICENSES.txt is one whole-project artifact whose Electron block alone is 19.18 MiB. External components now declare a distributions list and the generator builds one bundle per distribution. Validation still covers every declared component regardless of distribution; only rendering narrows. - Both stagers copied most packages whole. The prune of build-time-only files now lives in scripts/staged-package-pruning.mjs and both call it. Attribution files are excluded from the rule and keep shipping. - quickjs-emscripten is an umbrella over all four WASM builds while the sandbox uses only the synchronous release variant; depending on the core package plus that one variant takes QuickJS from six packages and 8.7 MiB to three and 1.6 MiB. - Budgets are re-derived from the measurements: Server 89 -> 46 MiB, dependencyBytes 52 -> 25 MiB, packageInstances 135 -> 131, Electron payloadBytes 64 -> 24 MiB, landing near 80-90% utilisation. Build Snap fails on main for the same reason it fails here -- snapcraft cannot generate snap/meta/gui/motrix.desktop -- so it is pre-existing and unrelated. | 30 天前 | |
fix(macos): sign safari helpers before the main executable (#2273) | 24 天前 | |
feat(plugins): add signed security policy enforcement (#2326) | 14 天前 | |
feat(build): optimize Electron package size (#1838) * feat(build): define Electron package contracts * feat(build): add atomic Electron app stager * feat(build): filter Electron native payloads * feat(build): package Electron from staged app * fix(build): prevent Electron dependency recollection * feat(build): verify Electron package payloads * ci(build): enforce staged Electron packages * test(build): add packaged Electron runtime smoke * chore(build): complete package optimization verification * fix(build): decouple postinstall from staged app * fix(build): expose package verification failures * fix(build): normalize ASAR paths on Windows | 2 个月前 | |
feat(packaging): add native arch linux release packages (#2099) Build pacman assets for x64 and arm64, include them in release manifests, verify final archives, and exercise x64 installation in Arch containers. Document installation and update behavior in English and Chinese. | 1 个月前 | |
feat(server): make Docker deployments persistent and operable (#1840) | 2 个月前 | |
feat(trackers): make selection and task updates recoverable (#2269) | 24 天前 | |
fix(linux): restore aria2 CA trust store support (#1913) | 2 个月前 | |
feat(deploy): publish installable Motrix Server containers (#1845) * feat(build): define container release metadata * ci: publish signed multi-arch server images * test(build): verify published container artifacts * fix(server): preserve generated operator token * feat(deploy): make Compose registry-first * docs(deploy): add bilingual NAS installation guide * fix(deploy): publish Docker Hub images under motrixapp | 2 个月前 | |
feat: label file list columns, record directories main-side, and cut package size (#2188) Two related groups of work. Downloads and task handling: - The file list gains an opt-out column header row (name, type, size, and a caller-supplied trailing label) plus a per-row file-type cell. - The recent-save-directory write moves out of the renderer into CreateTask and the torrent batch handler, so whichever side accepts a submission owns its own history. - The tray's lowest speed unit loses its decimals; higher units keep them. - Chinese "time remaining" wording, default sorting shown in the column headers, and the shared icon-xs button size in the add-task filters. Dependencies and toolchain: - npm bumps, Electron 44.3.0 -> 44.4.3, pnpm 12.4.2 -> 12.5.1. Both versions are mirrored across release, signing and Flatpak infrastructure, so every copy is re-pinned, including the per-target Electron zip digests and the Flatpak offline bootstrap. - packageManager regains the corepack integrity hash a bare "pnpm@12.5.1" had dropped; the sha512 was cross-checked against the registry dist.integrity. Package size, prompted by the bump breaching the Server budget: - Server artifactBytes 88.25 -> 41.30 MiB, Electron payloadBytes 27.49 -> 19.03 MiB (CI-measured). - THIRD_PARTY_LICENSES.txt is one whole-project artifact whose Electron block alone is 19.18 MiB. External components now declare a distributions list and the generator builds one bundle per distribution. Validation still covers every declared component regardless of distribution; only rendering narrows. - Both stagers copied most packages whole. The prune of build-time-only files now lives in scripts/staged-package-pruning.mjs and both call it. Attribution files are excluded from the rule and keep shipping. - quickjs-emscripten is an umbrella over all four WASM builds while the sandbox uses only the synchronous release variant; depending on the core package plus that one variant takes QuickJS from six packages and 8.7 MiB to three and 1.6 MiB. - Budgets are re-derived from the measurements: Server 89 -> 46 MiB, dependencyBytes 52 -> 25 MiB, packageInstances 135 -> 131, Electron payloadBytes 64 -> 24 MiB, landing near 80-90% utilisation. Build Snap fails on main for the same reason it fails here -- snapcraft cannot generate snap/meta/gui/motrix.desktop -- so it is pre-existing and unrelated. | 30 天前 | |
feat: label file list columns, record directories main-side, and cut package size (#2188) Two related groups of work. Downloads and task handling: - The file list gains an opt-out column header row (name, type, size, and a caller-supplied trailing label) plus a per-row file-type cell. - The recent-save-directory write moves out of the renderer into CreateTask and the torrent batch handler, so whichever side accepts a submission owns its own history. - The tray's lowest speed unit loses its decimals; higher units keep them. - Chinese "time remaining" wording, default sorting shown in the column headers, and the shared icon-xs button size in the add-task filters. Dependencies and toolchain: - npm bumps, Electron 44.3.0 -> 44.4.3, pnpm 12.4.2 -> 12.5.1. Both versions are mirrored across release, signing and Flatpak infrastructure, so every copy is re-pinned, including the per-target Electron zip digests and the Flatpak offline bootstrap. - packageManager regains the corepack integrity hash a bare "pnpm@12.5.1" had dropped; the sha512 was cross-checked against the registry dist.integrity. Package size, prompted by the bump breaching the Server budget: - Server artifactBytes 88.25 -> 41.30 MiB, Electron payloadBytes 27.49 -> 19.03 MiB (CI-measured). - THIRD_PARTY_LICENSES.txt is one whole-project artifact whose Electron block alone is 19.18 MiB. External components now declare a distributions list and the generator builds one bundle per distribution. Validation still covers every declared component regardless of distribution; only rendering narrows. - Both stagers copied most packages whole. The prune of build-time-only files now lives in scripts/staged-package-pruning.mjs and both call it. Attribution files are excluded from the rule and keep shipping. - quickjs-emscripten is an umbrella over all four WASM builds while the sandbox uses only the synchronous release variant; depending on the core package plus that one variant takes QuickJS from six packages and 8.7 MiB to three and 1.6 MiB. - Budgets are re-derived from the measurements: Server 89 -> 46 MiB, dependencyBytes 52 -> 25 MiB, packageInstances 135 -> 131, Electron payloadBytes 64 -> 24 MiB, landing near 80-90% utilisation. Build Snap fails on main for the same reason it fails here -- snapcraft cannot generate snap/meta/gui/motrix.desktop -- so it is pre-existing and unrelated. | 30 天前 | |
feat: label file list columns, record directories main-side, and cut package size (#2188) Two related groups of work. Downloads and task handling: - The file list gains an opt-out column header row (name, type, size, and a caller-supplied trailing label) plus a per-row file-type cell. - The recent-save-directory write moves out of the renderer into CreateTask and the torrent batch handler, so whichever side accepts a submission owns its own history. - The tray's lowest speed unit loses its decimals; higher units keep them. - Chinese "time remaining" wording, default sorting shown in the column headers, and the shared icon-xs button size in the add-task filters. Dependencies and toolchain: - npm bumps, Electron 44.3.0 -> 44.4.3, pnpm 12.4.2 -> 12.5.1. Both versions are mirrored across release, signing and Flatpak infrastructure, so every copy is re-pinned, including the per-target Electron zip digests and the Flatpak offline bootstrap. - packageManager regains the corepack integrity hash a bare "pnpm@12.5.1" had dropped; the sha512 was cross-checked against the registry dist.integrity. Package size, prompted by the bump breaching the Server budget: - Server artifactBytes 88.25 -> 41.30 MiB, Electron payloadBytes 27.49 -> 19.03 MiB (CI-measured). - THIRD_PARTY_LICENSES.txt is one whole-project artifact whose Electron block alone is 19.18 MiB. External components now declare a distributions list and the generator builds one bundle per distribution. Validation still covers every declared component regardless of distribution; only rendering narrows. - Both stagers copied most packages whole. The prune of build-time-only files now lives in scripts/staged-package-pruning.mjs and both call it. Attribution files are excluded from the rule and keep shipping. - quickjs-emscripten is an umbrella over all four WASM builds while the sandbox uses only the synchronous release variant; depending on the core package plus that one variant takes QuickJS from six packages and 8.7 MiB to three and 1.6 MiB. - Budgets are re-derived from the measurements: Server 89 -> 46 MiB, dependencyBytes 52 -> 25 MiB, packageInstances 135 -> 131, Electron payloadBytes 64 -> 24 MiB, landing near 80-90% utilisation. Build Snap fails on main for the same reason it fails here -- snapcraft cannot generate snap/meta/gui/motrix.desktop -- so it is pre-existing and unrelated. | 30 天前 | |
feat: import motrix-turbo snapshot | 2 个月前 | |
chore: upgrade dependencies and improve regression tests (#2336) * chore: upgrade dependencies and improve regression tests * test(e2e): align fixtures and stabilize real interactions | 13 天前 | |
fix(linux): modernize AppImage distribution (#1933) Use electron-builder's static AppImage runtime to remove the FUSE2 dependency. Embed architecture- and channel-specific native update information, generate zsync sidecars after rebuilding the embedded updater blockmap, and enforce the artifact contracts in CI and release publication. | 1 个月前 | |
fix(release): publish server images on native runners (#1864) | 2 个月前 | |
feat(safari): ship signed desktop bootstrap and upgrade registration (#2271) | 24 天前 | |
chore(engine): bundle verified aria2 motrix.18 release (#2399) | 3 天前 | |
feat(packaging): add native arch linux release packages (#2099) Build pacman assets for x64 and arm64, include them in release manifests, verify final archives, and exercise x64 installation in Arch containers. Document installation and update behavior in English and Chinese. | 1 个月前 | |
feat(bridge): support remote extensions over MBP1 (#2033) * feat(bridge): support remote extensions over MBP1 * test(bridge): pin remote Extension compatibility | 1 个月前 | |
feat(bridge): support remote extensions over MBP1 (#2033) * feat(bridge): support remote extensions over MBP1 * test(bridge): pin remote Extension compatibility | 1 个月前 | |
fix(build): include the Motrix license in Server artifacts (#1983) | 1 个月前 | |
fix(release): prepare beta.9 recovery (#1857) | 2 个月前 | |
feat: import motrix-turbo snapshot | 2 个月前 | |
feat(packaging): add native arch linux release packages (#2099) Build pacman assets for x64 and arm64, include them in release manifests, verify final archives, and exercise x64 installation in Arch containers. Document installation and update behavior in English and Chinese. | 1 个月前 | |
feat: import motrix-turbo snapshot | 2 个月前 | |
perf(build): optimize bundles and desktop deferred loading (#2316) | 19 天前 |
| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
| 2 个月前 | ||
| 13 天前 | ||
| 13 天前 | ||
| 1 个月前 | ||
| 2 个月前 | ||
| 2 个月前 | ||
| 1 个月前 | ||
| 2 个月前 | ||
| 30 天前 | ||
| 28 天前 | ||
| 2 个月前 | ||
| 2 个月前 | ||
| 14 天前 | ||
| 2 个月前 | ||
| 2 个月前 | ||
| 2 个月前 | ||
| 2 个月前 | ||
| 2 个月前 | ||
| 2 个月前 | ||
| 9 天前 | ||
| 23 天前 | ||
| 13 天前 | ||
| 2 个月前 | ||
| 30 天前 | ||
| 3 天前 | ||
| 1 个月前 | ||
| 2 个月前 | ||
| 1 个月前 | ||
| 30 天前 | ||
| 2 个月前 | ||
| 1 个月前 | ||
| 1 个月前 | ||
| 30 天前 | ||
| 19 天前 | ||
| 19 天前 | ||
| 2 个月前 | ||
| 2 个月前 | ||
| 2 个月前 | ||
| 1 个月前 | ||
| 13 天前 | ||
| 1 个月前 | ||
| 1 个月前 | ||
| 2 个月前 | ||
| 1 个月前 | ||
| 1 个月前 | ||
| 2 个月前 | ||
| 2 个月前 | ||
| 2 个月前 | ||
| 2 个月前 | ||
| 2 个月前 | ||
| 13 天前 | ||
| 1 个月前 | ||
| 1 个月前 | ||
| 1 个月前 | ||
| 1 个月前 | ||
| 5 天前 | ||
| 1 个月前 | ||
| 30 天前 | ||
| 24 天前 | ||
| 14 天前 | ||
| 2 个月前 | ||
| 1 个月前 | ||
| 2 个月前 | ||
| 24 天前 | ||
| 2 个月前 | ||
| 2 个月前 | ||
| 30 天前 | ||
| 30 天前 | ||
| 30 天前 | ||
| 2 个月前 | ||
| 13 天前 | ||
| 1 个月前 | ||
| 2 个月前 | ||
| 24 天前 | ||
| 3 天前 | ||
| 1 个月前 | ||
| 1 个月前 | ||
| 1 个月前 | ||
| 1 个月前 | ||
| 2 个月前 | ||
| 2 个月前 | ||
| 1 个月前 | ||
| 2 个月前 | ||
| 19 天前 |