diff --git a/CHANGELOG/0.2.9.md b/CHANGELOG/0.2.9.md new file mode 100644 index 0000000..f81745f --- /dev/null +++ b/CHANGELOG/0.2.9.md @@ -0,0 +1,34 @@ +# PMM v0.2.9 + +跨平台 C 语言包管理器(Windows / Linux / macOS)。 + +## 新增功能 +- **依赖解析**:`pdm-control` 支持 `Depends: pkg (>= 1.0), ...`,registry 包支持 `"depends": [...]`;安装时自动从镜像递归解析并安装依赖,支持版本约束(`==`/`>=`/`<=`/`>`/`<`),带循环/重复防护。 +- **并发分片下载 + 断点续传**:≥8MB 文件自动 4 路 Range 并行分片下载、逐片续传(`.part.N`)、拼接后校验;失败自动回退单流;Windows 单流 + `curl -C -` 续传。进度条含已用/剩余时间与实时速度。 +- `pmm search <关键词>`:在镜像注册表搜包(`packages.json` 索引)。 +- `pmm info <包名|文件.pdm>`:查看 registry 包信息 / 本地 .pdm 控制信息。 +- `pmm verify <文件>`:打印 SHA-256 / SHA-1。 +- `pmm cache clean`:清空下载缓存。 +- `pmm install --no-cache`:强制重新下载。 +- `pmm install `:从 URL 直接安装(按扩展名识别)。 +- `pmm install -dpkg x.deb`(Linux)/ `-msi x.msi`(Windows):本地按类型安装,且支持 URL 强制类型。 +- `pmm install --git repo@tag` / `-b branch`:安装指定 release tag / ref。 +- **打包 .rpm**(Linux):`pmm-.x86_64.rpm`,同时给出 .deb / zip / install.sh。 + +## 修复 +- `--git` 资产平台匹配:拒绝跨平台文件名(android/windows/darwin),下载后校验裸二进制是否为原生可执行,不行则回退 os 命名资产。 +- deb `Version` 必须以数字开头(非 tag 构建兜底 0.0.0-dev)。 +- `install_path` 前置声明;HTTP status 标记对 Linux 稳健。 + +## 官网 +- 四页化:首页 + 特性 / 安装 / 下载 / 服务状态。 +- 服务状态:多端点探测(注册表/下载/Web)+ 延迟 + Server 头 + 检测时间,自动刷新。 +- 源码浏览页 `source.php`(GitHub 风格,克隆本仓库读取 git 文件)。 +- 图标使用仓库根目录 `icon.png`(115×77)。 + +## 安装 +```bash +# Linux / macOS 一键 +curl -sSL https://pmm.parlz.com/install.sh | bash +# Windows:解压 pmm-0.2.9-windows-amd64.zip,把 pmm.exe 加入 PATH +``` diff --git a/web/assets/main.js b/web/assets/main.js index 7e13b27..945c8d2 100644 --- a/web/assets/main.js +++ b/web/assets/main.js @@ -20,9 +20,12 @@ /* ---------- Copy command buttons ---------- */ document.querySelectorAll(".copy-btn").forEach(function (btn) { btn.addEventListener("click", function () { - var code = document.querySelector('[data-pane="' + btn.getAttribute("data-copy") + '"] code'); - if (!code) return; - var txt = code.innerText; + var txt = btn.getAttribute("data-copy-text"); + if (!txt) { + var code = document.querySelector('[data-pane="' + btn.getAttribute("data-copy") + '"] code'); + if (!code) return; + txt = code.innerText; + } (navigator.clipboard && navigator.clipboard.writeText) ? navigator.clipboard.writeText(txt).then(ok, fail) : fallback(txt); diff --git a/web/assets/style.css b/web/assets/style.css index b4c6937..10c2ce3 100644 --- a/web/assets/style.css +++ b/web/assets/style.css @@ -211,3 +211,6 @@ code{font-family:"JetBrains Mono",ui-monospace,SFMono-Regular,Menlo,Consolas,"Co .mdbody li{margin:3px 0 3px 18px} .mdbody hr{border:0;border-top:1px solid var(--line);margin:14px 0} .mdbody code{background:var(--panel2);padding:1px 6px;border-radius:4px} +/* download copy-command card */ +.dl-cmd{margin-top:8px;border:1px solid var(--line);border-radius:8px;padding:10px 12px;background:#0a0e15} +.dl-cmd code{font-size:12.5px;white-space:pre-wrap;word-break:break-all;color:#d0d0d0} diff --git a/web/download.php b/web/download.php index 9f62ad8..f0bbbfd 100644 --- a/web/download.php +++ b/web/download.php @@ -18,9 +18,12 @@ pmm_page_open('DOWNLOAD', '下载 PMM'); Linuxpmm-.x86_64.rpm - - Linux/macOSinstall.sh · 一键安装 - +
+ Linux/macOS + 一键安装 · 复制命令 +
curl -sSL https://pmm.parlz.com/install.sh | bash
+ +
全部GitHub Releases / 源码 diff --git a/web/install.sh b/web/install.sh index fb8b68f..9bb8841 100644 --- a/web/install.sh +++ b/web/install.sh @@ -30,9 +30,11 @@ if [ "$arch" != "amd64" ]; then fi echo "pmm: 下载 v$VER ($os/$arch) ..." TMP="$(mktemp)" -if ! curl -fsSL --max-time 120 -o "$TMP" "$URL"; then +# --progress-bar shows a live download progress line (tty only) +if ! curl -fL --progress-bar --max-time 300 -o "$TMP" "$URL"; then rm -f "$TMP"; echo "pmm: 下载失败($URL)"; exit 1 fi +echo "" chmod +x "$TMP" # ---- 安装 ----