portal 下載小幫手:按鈕旁加「下載被瀏覽器擋住」自救說明(Windows 封測硬斷點) #78

Open
opened 2026-07-31 12:11:13 +00:00 by Leo · 3 comments
Owner

一句話

Portal 的「下載同步小幫手」按鈕旁,缺「下載被瀏覽器擋住怎麼辦」的自救說明——
Windows 用戶在還沒拿到檔案的那一步就卡死,這是封測的硬斷點。

現況實測(2026-07-31)

檔案:console-ui/public/portal/index.htmlmain 分支,1763 行)

⚠️ 先提醒:matrix/arcrun 工作目錄常停在舊分支(實測時是 fix/kbdb-search-deprecated-t24),
該分支這支檔案只有 1356 行、沒有下載小幫手的程式碼。查之前先 git checkout main
或用 git show main:<path>,否則會誤判「功能不存在」。

portal 已經有的(執行關,做得很好):

// 758-761 行
function daemonHint(os) {
  if (os === 'win') return '(封測版未簽章,Windows 第一次會跳藍色視窗擋下來——點「更多資訊」→「仍要執行」就好)';
  return '(封測版未簽章,第一次請右鍵→打開)';
}

portal 缺的(下載關):

$ grep -c "無法安全地下載\|下載被\|擋住下載" portal/index.html
0

兩關是不同的關

關卡 何時發生 portal 現況
下載關 Chrome 說「無法安全地下載」,檔案根本沒進電腦 完全沒講
② 執行關 檔案已下載,打開時跳 SmartScreen 藍色視窗 已有 daemonHint

現在的 daemonHint 是在假設「用戶已經拿到檔案」。但 Windows 用戶常在第 ① 關就斷了
根本走不到第 ②。

為什麼急

Windows 用戶連安裝檔都拿不到=封測硬斷點(rag-beta CP 關 8)。
leo 原話:「Windows 的 Chrome 會直接擋住不讓下載,所以要趕快通過微軟的上架。」
Store 上架審核要幾小時~3 個工作天,這期間 portal 這段自救說明是唯一能救 Windows 用戶的東西

另外:封測說明原本的解法是「若瀏覽器不給下載,跟我說,我發 Line 給你下載連結
leo 當人肉中繼。已把該句改成指向自救說明(docs/封測說明/封測說明.md),
但 portal 這一站補上,用戶才能在被擋的當下就地解決。

要放的位置

console-ui/public/portal/index.html915-925 行,下載按鈕 #sc-daemon
daemonHint 那一段的正下方(一次性卡片與設定頁常駐入口兩處都要,它們共用同一組渲染)。

平時不要佔版面:預設收合成一行小字,點開才展開(<details>)。
理由:對 Mac 用戶與沒被擋的人是雜訊;只有被擋的人會去點它。

文案草稿(可直接用,照 leo 小白原則:短、講「按什麼」、不解釋原理)

<details style="margin-top:8px">
  <summary style="cursor:pointer;font-size:12.5px;color:rgba(var(--ink-rgb),.55)">
    下載被瀏覽器擋住?
  </summary>
  <div style="margin-top:6px;font-size:12.5px;line-height:1.75">
    <b>Windows</b>:下載列右邊點 <b></b> → 選 <b>保留</b>(英文是 Keep)。<br>
    <b>Mac</b>:跳「無法驗證開發者」→ 先按 <b>完成</b>,
    再到<b>系統設定 → 隱私權與安全性</b><b>強制打開</b><br>
    <a href="https://rag.arcrun.dev/support" target="_blank" rel="noopener">完整說明 →</a>
  </div>
</details>

https://rag.arcrun.dev/support 已上線(2026-07-31 部署,實測回 200 且畫面有內容),
可以直接連。

驗收(畫面內容,不是 HTTP 200)

curl -s <portal 網址>/portal/ | grep -c "下載被瀏覽器擋住"   # 應 ≥1
curl -s <portal 網址>/portal/ | grep -c "保留"               # 應 ≥1(Windows 那句)

⚠️ HTTP 200 不算驗過——200 只證明伺服器活著,不證明用戶看到對的東西。
且要驗下載按鈕真的出現的那個畫面(一次性卡片/設定頁常駐入口兩處)。

相關

  • 頂層 CP:system-dev/docs/3-specs/critical-paths/rag-beta.md 關 8(任務 8.6b)
  • 上游交辦:Gitea Leo/arcrun-rag#8(Microsoft Store 上架)
  • 同批已做:rag.arcrun.dev/privacy/support 已上線;
    install.arcrun.dev 安裝器最後一畫面已加同款 <details> 自救說明
## 一句話 Portal 的「下載同步小幫手」按鈕旁,**缺「下載被瀏覽器擋住怎麼辦」的自救說明**—— Windows 用戶在**還沒拿到檔案**的那一步就卡死,這是封測的硬斷點。 ## 現況實測(2026-07-31) 檔案:`console-ui/public/portal/index.html`(**main 分支**,1763 行) ⚠️ 先提醒:`matrix/arcrun` 工作目錄常停在舊分支(實測時是 `fix/kbdb-search-deprecated-t24`), 該分支這支檔案只有 1356 行、**沒有**下載小幫手的程式碼。查之前先 `git checkout main` 或用 `git show main:<path>`,否則會誤判「功能不存在」。 **portal 已經有的**(執行關,做得很好): ```js // 758-761 行 function daemonHint(os) { if (os === 'win') return '(封測版未簽章,Windows 第一次會跳藍色視窗擋下來——點「更多資訊」→「仍要執行」就好)'; return '(封測版未簽章,第一次請右鍵→打開)'; } ``` **portal 缺的**(下載關): ``` $ grep -c "無法安全地下載\|下載被\|擋住下載" portal/index.html 0 ``` ⇒ **兩關是不同的關**: | 關卡 | 何時發生 | portal 現況 | |---|---|---| | ① **下載關** | Chrome 說「無法安全地下載」,**檔案根本沒進電腦** | ❌ **完全沒講** | | ② 執行關 | 檔案已下載,打開時跳 SmartScreen 藍色視窗 | ✅ 已有 `daemonHint` | 現在的 `daemonHint` 是在假設「用戶已經拿到檔案」。**但 Windows 用戶常在第 ① 關就斷了**, 根本走不到第 ②。 ## 為什麼急 **Windows 用戶連安裝檔都拿不到=封測硬斷點**(rag-beta CP 關 8)。 leo 原話:「**Windows 的 Chrome 會直接擋住不讓下載**,所以要趕快通過微軟的上架。」 Store 上架審核要幾小時~3 個工作天,**這期間 portal 這段自救說明是唯一能救 Windows 用戶的東西**。 另外:封測說明原本的解法是「若瀏覽器不給下載,跟我說,**我發 Line 給你下載連結**」 =**leo 當人肉中繼**。已把該句改成指向自救說明(`docs/封測說明/封測說明.md`), 但 portal 這一站補上,用戶才能在**被擋的當下**就地解決。 ## 要放的位置 `console-ui/public/portal/index.html` 約 **915-925 行**,下載按鈕 `#sc-daemon` 與 `daemonHint` 那一段的**正下方**(一次性卡片與設定頁常駐入口**兩處**都要,它們共用同一組渲染)。 **平時不要佔版面**:預設收合成一行小字,點開才展開(`<details>`)。 理由:對 Mac 用戶與沒被擋的人是雜訊;只有被擋的人會去點它。 ## 文案草稿(可直接用,照 leo 小白原則:短、講「按什麼」、不解釋原理) ```html <details style="margin-top:8px"> <summary style="cursor:pointer;font-size:12.5px;color:rgba(var(--ink-rgb),.55)"> 下載被瀏覽器擋住? </summary> <div style="margin-top:6px;font-size:12.5px;line-height:1.75"> <b>Windows</b>:下載列右邊點 <b>⋮</b> → 選 <b>保留</b>(英文是 Keep)。<br> <b>Mac</b>:跳「無法驗證開發者」→ 先按 <b>完成</b>, 再到<b>系統設定 → 隱私權與安全性</b>找 <b>強制打開</b>。<br> <a href="https://rag.arcrun.dev/support" target="_blank" rel="noopener">完整說明 →</a> </div> </details> ``` > `https://rag.arcrun.dev/support` 已上線(2026-07-31 部署,實測回 200 且畫面有內容), > 可以直接連。 ## 驗收(畫面內容,不是 HTTP 200) ```bash curl -s <portal 網址>/portal/ | grep -c "下載被瀏覽器擋住" # 應 ≥1 curl -s <portal 網址>/portal/ | grep -c "保留" # 應 ≥1(Windows 那句) ``` ⚠️ **HTTP 200 不算驗過**——200 只證明伺服器活著,不證明用戶看到對的東西。 且要驗**下載按鈕真的出現的那個畫面**(一次性卡片/設定頁常駐入口兩處)。 ## 相關 - 頂層 CP:`system-dev/docs/3-specs/critical-paths/rag-beta.md` 關 8(任務 8.6b) - 上游交辦:Gitea `Leo/arcrun-rag#8`(Microsoft Store 上架) - 同批已做:`rag.arcrun.dev/privacy`+`/support` 已上線; `install.arcrun.dev` 安裝器最後一畫面已加同款 `<details>` 自救說明
Author
Owner

⚠️ 重要更正:線上跑的 portal 不是 main,是舊版——動工前必讀

原 issue 說「真身在 main(1763 行)」。實抓線上資產後發現這句不完整
照原文改 main改了但用戶看不到

實測(2026-07-31)

portal 不是由 worker 服務,2026-07-21 cypher-ui-split 後已搬到 Cloudflare Pages
cypher-executor/src/index.ts 第 32-35 行註解寫明)。所以打 worker 的 /portal 一律 404:

https://arcrun-cypher-executor.youlin-hsieh-dev.workers.dev/portal  → 404
https://arcrun-console-ui.pages.dev/portal/                          → 200 ✅

線上那份的實際內容

https://arcrun-console-ui.pages.dev/portal/  → 200,1356 行
  同步小幫手        → 0     (main 有 5)
  DAEMON_BASE_DEFAULT → 0   (main 有 3)
  你的知識庫網址     → 0     (main 有 2)
  daemonHint        → 0     (main 有 2)

與舊分支 fix/kbdb-search-deprecated-t24 的版本 diff 只有 1 行
(且那行是 build 期注入的 ARCRUN_API_BASE,非人為改動)⇒
線上 Pages 跑的就是 t142 之前的舊版

這代表什麼

main(1763 行) 線上 Pages(1356 行)
下載小幫手 UI 整段都沒有
daemonHint()(執行關) 沒有
t142 子庫卡數/三元組 沒有

原 issue 描述的「portal 已有 daemonHint 只缺下載關」只對 main 成立。
線上用戶連下載小幫手的 UI 都看不到
——落後至少從 07-29 的 t142 起算。

所以這個 issue 要做的事變成兩件(有先後)

  1. 先查清 Pages 為什麼沒跟上 main(部署管線斷了?還是刻意釘版?)
    —— 沒解決這件,改 main 等於白改。
  2. 再做原本的事:下載按鈕旁加「下載被瀏覽器擋住」自救說明(位置與文案見原文)。

驗收也要跟著改

不能只驗 repo,要驗線上實際資產

curl -s https://arcrun-console-ui.pages.dev/portal/ | grep -c "下載小幫手時被瀏覽器擋住"   # 應 ≥1
curl -s https://arcrun-console-ui.pages.dev/portal/ | grep -c "同步小幫手"                 # 應 ≥1(先決條件)

第二行現在是 0——它變成 ≥1 之前,第一行不可能通過

註:arcrun-console-ui.pages.dev 是我實測找到的線上位址;若各用戶實例另有自己的
Pages 網域,驗收請對該實例的實際網址跑同樣兩行。

## ⚠️ 重要更正:**線上跑的 portal 不是 `main`,是舊版**——動工前必讀 原 issue 說「真身在 `main`(1763 行)」。**實抓線上資產後發現這句不完整**, 照原文改 `main` 會**改了但用戶看不到**。 ### 實測(2026-07-31) portal **不是由 worker 服務**,2026-07-21 `cypher-ui-split` 後已搬到 **Cloudflare Pages** (`cypher-executor/src/index.ts` 第 32-35 行註解寫明)。所以打 worker 的 `/portal` 一律 404: ``` https://arcrun-cypher-executor.youlin-hsieh-dev.workers.dev/portal → 404 https://arcrun-console-ui.pages.dev/portal/ → 200 ✅ ``` **線上那份的實際內容**: ``` https://arcrun-console-ui.pages.dev/portal/ → 200,1356 行 同步小幫手 → 0 (main 有 5) DAEMON_BASE_DEFAULT → 0 (main 有 3) 你的知識庫網址 → 0 (main 有 2) daemonHint → 0 (main 有 2) ``` 與舊分支 `fix/kbdb-search-deprecated-t24` 的版本 **diff 只有 1 行** (且那行是 build 期注入的 `ARCRUN_API_BASE`,非人為改動)⇒ **線上 Pages 跑的就是 t142 之前的舊版**。 ### 這代表什麼 | | main(1763 行) | **線上 Pages(1356 行)** | |---|---|---| | 下載小幫手 UI | ✅ 有 | ❌ **整段都沒有** | | `daemonHint()`(執行關) | ✅ 有 | ❌ 沒有 | | t142 子庫卡數/三元組 | ✅ 有 | ❌ 沒有 | ⇒ **原 issue 描述的「portal 已有 daemonHint 只缺下載關」只對 `main` 成立。 線上用戶連下載小幫手的 UI 都看不到**——落後至少從 07-29 的 t142 起算。 ### 所以這個 issue 要做的事變成兩件(有先後) 1. **先查清 Pages 為什麼沒跟上 `main`**(部署管線斷了?還是刻意釘版?) —— 沒解決這件,改 `main` 等於白改。 2. 再做原本的事:下載按鈕旁加「下載被瀏覽器擋住」自救說明(位置與文案見原文)。 ### 驗收也要跟著改 **不能只驗 repo,要驗線上實際資產**: ```bash curl -s https://arcrun-console-ui.pages.dev/portal/ | grep -c "下載小幫手時被瀏覽器擋住" # 應 ≥1 curl -s https://arcrun-console-ui.pages.dev/portal/ | grep -c "同步小幫手" # 應 ≥1(先決條件) ``` 第二行現在是 **0**——**它變成 ≥1 之前,第一行不可能通過**。 > 註:`arcrun-console-ui.pages.dev` 是我實測找到的線上位址;若各用戶實例另有自己的 > Pages 網域,驗收請對**該實例的實際網址**跑同樣兩行。
Author
Owner

再更正(撤回上一則留言的結論)——原始診斷才是對的

上一則留言說「線上 portal 落後兩週、連下載小幫手 UI 都沒有」。那則是錯的,我測錯網址了
在此撤回。以下是實抓封測者真正會走的網址後的結果。

封測者進 portal 的正確網址

用戶自己實例的 UI workerhttps://arcrun-rag-ui.<他的 subdomain>.workers.dev/portal/

實測 https://arcrun-rag-ui.youlin-hsieh-dev.workers.dev/portal/200

我上一則測的三個全部與封測者無關

我測的 結果 真相
portal.arcrun.devconsole.arcrun.dev 522 我方沒在用的舊網域(不是壞了,是根本沒接)
arcrun-console-ui.pages.dev 200/1356 行 leo21c 的舊 console 建置,不是封測者的 portal
各實例 *.workers.dev 我猜的名字 404 名字猜錯(是 arcrun-rag-ui 不是 arcrun-console-ui

線上真 portal 的實際狀態(1771 行)

行數:1771(main 的 public/portal/index.html 是 1763)
同步小幫手         → 5   ✅ 有
DAEMON_BASE_DEFAULT → 3   ✅ 有
daemonHint         → 2   ✅ 有

且它比 main 還新——含 main 沒有的 t161(leo 07-31 實撞「session 過期畫面不說原因」)修正。
沒有「線上落後」的問題,部署管線是好的。 上一則要求「先查 Pages 為何沒跟上 main」
作廢,不用做

所以本 issue 回到最初的診斷(那個是對的)

線上真 portal 實測:

(封測版未簽章,Windows 第一次會跳藍色視窗擋下來——點「更多資訊」→「仍要執行」就好)   ✅ 執行關已有
(封測版未簽章,第一次請右鍵→打開)                                                    ✅ Mac 執行關已有

無法安全地下載      → 0    ❌ 下載關完全沒講
下載被瀏覽器擋住    → 0    ❌
保留(英文是 Keep) → 0    ❌

兩關只擋了第二關(原 issue 正文的診斷成立):
下載關(Chrome 擋下載,檔案沒進電腦)=缺這個,本 issue 要補的就是它
② 執行關(SmartScreen 藍窗)=已有 daemonHint()

驗收(改對網址)

U="https://arcrun-rag-ui.<sub>.workers.dev/portal/"
curl -s "$U" | grep -c "下載被瀏覽器擋住"   # 目標 ≥1(現在 0)
curl -s "$U" | grep -c "同步小幫手"         # 現在已是 5,非先決條件

不要*.arcrun.devarcrun-console-ui.pages.dev 驗——那些不是封測者走的路徑。

註:用戶實例部署在他自己的 CF 帳號*.workers.dev產品設計(每人一份),
不是「網域沒設好」。

## ✅ 再更正(撤回上一則留言的結論)——**原始診斷才是對的** 上一則留言說「線上 portal 落後兩週、連下載小幫手 UI 都沒有」。**那則是錯的,我測錯網址了**, 在此撤回。以下是實抓**封測者真正會走的網址**後的結果。 ### 封測者進 portal 的正確網址 **用戶自己實例的 UI worker**:`https://arcrun-rag-ui.<他的 subdomain>.workers.dev/portal/` 實測 `https://arcrun-rag-ui.youlin-hsieh-dev.workers.dev/portal/` → **200** 我上一則測的三個**全部與封測者無關**: | 我測的 | 結果 | 真相 | |---|---|---| | `portal.arcrun.dev`/`console.arcrun.dev` | 522 | **我方沒在用的舊網域**(不是壞了,是根本沒接) | | `arcrun-console-ui.pages.dev` | 200/1356 行 | **leo21c 的舊 console 建置**,不是封測者的 portal | | 各實例 `*.workers.dev` 我猜的名字 | 404 | 名字猜錯(是 `arcrun-rag-ui` 不是 `arcrun-console-ui`) | ### 線上真 portal 的實際狀態(1771 行) ``` 行數:1771(main 的 public/portal/index.html 是 1763) 同步小幫手 → 5 ✅ 有 DAEMON_BASE_DEFAULT → 3 ✅ 有 daemonHint → 2 ✅ 有 ``` 且它**比 main 還新**——含 `main` 沒有的 t161(leo 07-31 實撞「session 過期畫面不說原因」)修正。 ⇒ **沒有「線上落後」的問題,部署管線是好的。** 上一則要求「先查 Pages 為何沒跟上 main」 **作廢,不用做**。 ### 所以本 issue 回到最初的診斷(那個是對的) 線上真 portal 實測: ``` (封測版未簽章,Windows 第一次會跳藍色視窗擋下來——點「更多資訊」→「仍要執行」就好) ✅ 執行關已有 (封測版未簽章,第一次請右鍵→打開) ✅ Mac 執行關已有 無法安全地下載 → 0 ❌ 下載關完全沒講 下載被瀏覽器擋住 → 0 ❌ 保留(英文是 Keep) → 0 ❌ ``` ⇒ **兩關只擋了第二關**(原 issue 正文的診斷成立): ① **下載關**(Chrome 擋下載,檔案沒進電腦)=**缺這個,本 issue 要補的就是它** ② 執行關(SmartScreen 藍窗)=已有 `daemonHint()` ### 驗收(改對網址) ```bash U="https://arcrun-rag-ui.<sub>.workers.dev/portal/" curl -s "$U" | grep -c "下載被瀏覽器擋住" # 目標 ≥1(現在 0) curl -s "$U" | grep -c "同步小幫手" # 現在已是 5,非先決條件 ``` **不要**用 `*.arcrun.dev` 或 `arcrun-console-ui.pages.dev` 驗——那些不是封測者走的路徑。 > 註:用戶實例部署在**他自己的 CF 帳號**,`*.workers.dev` 是**產品設計**(每人一份), > 不是「網域沒設好」。
Author
Owner

🔴 為什麼這個 issue 是三站裡最急的一站

leo 親自確認的封測者旅程:rag.arcrun.dev →(點進)install.arcrun.dev → 自己的 portal
(leo 的是 https://arcrun-rag-ui.youlin-hsieh-dev.workers.dev)。

三站實測(2026-07-31):

有下載小幫手的按鈕 有 Chrome 下載關自救說明嗎
rag.arcrun.dev(第一站) 沒有(只導向 install,grep 小幫手=0) 有(07-31 已加)
install.arcrun.dev 首頁沒有(裝完的完成流程才出現 沒有(已寫好、待部署)
用戶 portal(本 issue) 真正的下載點 沒有

現況=說明放在「沒有下載按鈕」的那一頁;有下載按鈕的兩處都沒有說明。

所以本 issue 優先序最高,兩個理由:

  1. portal 才是真正按下下載的地方——前兩站的說明都只是「先有心理準備」,
    使用者實際被 Chrome 擋住的那一刻,人在 portal
  2. portal 是 leo 與封測者每天會回去的頁面(不像 install 只在安裝時走一次)。

補充:本 issue 要補的是「下載關」,不是「執行關」

線上 portal(arcrun-rag-ui.<sub>.workers.dev/portal/,1771 行)實測:

✅ 執行關已有:(封測版未簽章,Windows 第一次會跳藍色視窗擋下來——點「更多資訊」→「仍要執行」就好)
✅ 執行關已有:(封測版未簽章,第一次請右鍵→打開)

❌ 下載關全 0:無法安全地下載=0 / 下載被瀏覽器擋住=0 / 保留(英文是 Keep)=0

兩關是不同時刻

  • 下載關=Chrome 說「無法安全地下載」,檔案根本沒進電腦缺這個
  • ② 執行關=檔案已在電腦、打開時跳 SmartScreen ← 已有 daemonHint()

daemonHint() 的前提是「用戶已經拿到檔案」,但多數 Windows 用戶在①就斷了,走不到②

## 🔴 為什麼這個 issue 是三站裡**最急**的一站 leo 親自確認的封測者旅程:**`rag.arcrun.dev` →(點進)`install.arcrun.dev` → 自己的 portal** (leo 的是 `https://arcrun-rag-ui.youlin-hsieh-dev.workers.dev`)。 三站實測(2026-07-31): | 站 | 有下載小幫手的**按鈕**嗎 | 有 Chrome **下載關**自救說明嗎 | |---|---|---| | `rag.arcrun.dev`(第一站) | ❌ 沒有(只導向 install,`grep 小幫手`=0) | ✅ 有(07-31 已加) | | `install.arcrun.dev` | ❌ 首頁沒有(**裝完的完成流程才出現**) | ❌ 沒有(已寫好、待部署) | | **用戶 portal(本 issue)** | ✅ **真正的下載點** | ❌ **沒有** | ⇒ **現況=說明放在「沒有下載按鈕」的那一頁;有下載按鈕的兩處都沒有說明。** **所以本 issue 優先序最高**,兩個理由: 1. **portal 才是真正按下下載的地方**——前兩站的說明都只是「先有心理準備」, 使用者**實際被 Chrome 擋住的那一刻,人在 portal**。 2. portal 是 leo 與封測者**每天會回去**的頁面(不像 install 只在安裝時走一次)。 ### 補充:本 issue 要補的是「下載關」,不是「執行關」 線上 portal(`arcrun-rag-ui.<sub>.workers.dev/portal/`,1771 行)實測: ``` ✅ 執行關已有:(封測版未簽章,Windows 第一次會跳藍色視窗擋下來——點「更多資訊」→「仍要執行」就好) ✅ 執行關已有:(封測版未簽章,第一次請右鍵→打開) ❌ 下載關全 0:無法安全地下載=0 / 下載被瀏覽器擋住=0 / 保留(英文是 Keep)=0 ``` **兩關是不同時刻**: - ① **下載關**=Chrome 說「無法安全地下載」,**檔案根本沒進電腦** ← **缺這個** - ② 執行關=檔案已在電腦、打開時跳 SmartScreen ← 已有 `daemonHint()` `daemonHint()` 的前提是「用戶已經拿到檔案」,但**多數 Windows 用戶在①就斷了,走不到②**。
Leo added the
s
todo
p
high
labels 2026-08-09 13:13:08 +00:00
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: Leo/Arcrun#78