# Pake 打包复用需求（macOS 固定配置）

本文档用于记录固定的打包需求与参数模板，避免每次重复说明。  
适用范围：使用 `pake-cli` 在 **macOS** 上打包任意网页为桌面应用。

---

## 1. 目标行为

### 1.1 窗口与交互

- 初始窗口尺寸固定为 **1400 × 1000**。
- 禁止用户调整窗口大小（`resizable=false`），从而使最大化按钮不可用（灰色即可）。
- 禁止全屏（包括任何手势/双击触发的全屏）。
- 不要求隐藏最小化/最大化按钮，只需 **不可用/灰色** 即可。
- 点击窗口关闭按钮的行为为 **隐藏/最小化到 Dock**，不退出进程；真正退出通过 macOS Dock 菜单完成。
- 窗口为无边框/沉浸式标题栏。

### 1.2 顶部拖拽条（强制兜底）

为了保证在所有网页上都能移动窗口，需要 **强制存在** 一条透明、很小的顶部拖拽区域：

- 高度约 **20px**，宽度 100%，透明。
- 位于页面最顶层（超高 `z-index`），不影响网页交互。
- 任何情况下如果被网页覆盖/删除，都要自动恢复。

> 现状：Pake 默认已插入 `#pake-top-dom` 并绑定拖拽。  
> 兜底增强（后续小补丁）：使用 `MutationObserver` 监控 DOM，若 `#pake-top-dom` 不存在则立即重建。

### 1.3 导航策略

- 启用内部跳转体验：所有链接在 Pake 窗口内打开，不调用外部浏览器。  
  对应 CLI 参数：`--force-internal-navigation`。

### 1.4 代理

- 统一走本地代理端口：`127.0.0.1:7897`  
  默认使用 SOCKS5：`socks5://127.0.0.1:7897`
- 该代理用于所有网络请求（HTTP/HTTPS 由代理本身处理）。

---

## 2. 构建参数模板

### 2.1 基础命令（占位）

```bash
pake "<TARGET_URL>" \
  --name "<APP_NAME>" \
  --icon "<ICON_PATH_OR_URL>" \
  --width 1400 \
  --height 1000 \
  --hide-title-bar \
  --force-internal-navigation \
  --proxy-url "socks5://127.0.0.1:7897" \
  --hide-on-close
```

### 2.2 说明

- `<TARGET_URL>`：目标网页地址（后续提供）。
- `<APP_NAME>`：应用名（macOS 允许空格/大小写）。
- `<ICON_PATH_OR_URL>`：自定义图标路径或 URL（推荐 `.icns`）。
- `--hide-title-bar`：无边框/沉浸式标题栏（macOS）。
- `--force-internal-navigation`：强制所有链接内部导航。
- `--proxy-url`：全局 SOCKS5 代理。
- `--hide-on-close`：关闭按钮=隐藏窗口（macOS 默认 true，但显式写入避免回归）。

---

## 3. 需要确保的“极小补丁点”（后续执行）

目前 CLI/模板默认值与目标行为有少量差距，需要做 **小范围** 调整：

1. **窗口不可缩放 / 禁止最大化**
   - 目标：`resizable=false`。
   - 现状：CLI 未暴露 `--resizable` 开关，默认 `true`。
   - 补丁方向：  
     - 方案 A（推荐）：CLI 新增 `--no-resizable`，并写入配置；  
     - 方案 B：直接把 `DEFAULT_PAKE_OPTIONS.resizable` 改为 `false`（只影响默认）。

2. **严格禁止全屏**
   - 目标：任何交互都不能进入全屏。
   - 现状：注入脚本对 `#pake-top-dom` 绑定了 `dblclick` 切换全屏。
   - 补丁方向：  
     - 移除/屏蔽该 `dblclick` 逻辑；  
     - 或提供配置开关（默认关闭）。

3. **顶部拖拽条强制兜底**
   - 目标：`#pake-top-dom` 永久存在并可拖拽。
   - 现状：已注入，但部分网站可能通过重排/覆盖导致失效。
   - 补丁方向：  
     - `MutationObserver` 检测缺失/被替换 → 自动重建；  
     - 保持高度 20px、透明、拖拽生效。

> 以上补丁均为单文件/小改动，不涉及架构调整。

---

## 4. 备注

- 当前设备环境：Mac M4 + macOS 26.1，满足 Pake/Tauri 现代 macOS 代理与构建要求。
- 如需调试构建，可临时加 `--debug`，不影响上述行为约束。



  node dist/cli.js "https://www.perplexity.ai/" \
    --name "Perplexity" \
    --icon "/Users/jik/Desktop/perplexity.icns" \
    --width 1400 \
    --height 1000 \
    --hide-title-bar \
    --force-internal-navigation \
    --proxy-url "socks5://127.0.0.1:7897" \
    --hide-on-close \
    --no-resizable \
    --disable-fullscreen
