把 OAR 安裝成 App
OAR 網頁介面是 Progressive Web App(PWA)。安裝後,它有自己的圖示和視窗,啟動時不會顯示瀏覽器的網址列和分頁。它和瀏覽器顯示的是同一個網頁介面,由你的中繼提供:裝置上不需要另外安裝任何東西,所有 session 也都保存在中繼上。
所需條件 #
安裝 App 和推播通知都需要安全環境:中繼必須透過 HTTPS 或 localhost 連線。在你的網路上以一般 http 位址連線的中繼不符合條件,這也是通常要為手機設定 tunnel 的原因:見 Cloudflare Tunnel、SSH tunnel 或反向 proxy。之後瀏覽器是否提供安裝、以什麼方式提供,則由瀏覽器自己的規則決定。
安裝 #
先在裝置的瀏覽器中開啟中繼並登入(見首次執行)。接著:
| 裝置與瀏覽器 | 方法 |
|---|---|
| Android 上的 Chrome | 開啟瀏覽器選單(⋮),選擇 Install app(安裝 App)或 Add to Home screen(加入主畫面)。如果 Chrome 表示 App 已經安裝,請從啟動器開啟它,或先解除安裝舊的版本。 |
| iPhone 和 iPad 上的 Safari | 在 Safari 中開啟中繼,點一下 Share(分享),然後選擇 Add to Home Screen。 |
| 桌面瀏覽器 | 開啟瀏覽器選單,選擇 Install app(或 Add to Home screen,如果瀏覽器是這樣稱呼的話)。 |
OAR 也有自己的 ⬇ 按鈕,位於對話清單標題列的右側,在 + New Chat(新對話)和 Status(狀態)旁邊(在窄螢幕上,請用 ☰ 開啟清單):
- 當瀏覽器已提供它的安裝提示時,按鈕的工具提示是 Install app to home screen(將 App 安裝到主畫面)。按下按鈕會開啟該提示。你接受後,OAR 會顯示 Install accepted. The app will appear on your home screen. 這則訊息,瀏覽器回報安裝完成後,則會顯示 App installed. 這則訊息。
- 當瀏覽器沒有提供安裝提示時,工具提示是 Show install instructions(顯示安裝說明),按下按鈕會顯示一則訊息,列出你所用平台(iPhone 和 iPad、Android 或其他裝置)的步驟,內容與上方表格相同。
在已安裝的 App 中,這個按鈕會隱藏;在不提供安裝的分享對話中也是。
名稱與圖示 #
已安裝的 App 以 Settings → General → Relay name(設定 → 一般 → 中繼名稱)命名,見 Settings(設定)。名稱最多 60 個字元;名稱空白時,App 會叫做 OAR。圖示下方的標籤是名稱的第一個詞;如果那個詞比較長,則是名稱的前 12 個字元。配對的中繼也是用這個名稱稱呼這個中繼。
名稱儲存在中繼上,並透過 App 的 manifest 提供給每個瀏覽器和位址,所以區域網路位址和 tunnel 位址的名稱一致。App 屬於安裝時所用的位址:在反向 proxy 後面、使用路徑前綴(remote,見 config.json)的中繼,是一個獨立的 App。新安裝會使用安裝當下的名稱。在 Android 上已經安裝的 App,會透過 Chrome 一般的 manifest 更新取得新名稱:會出現一次顯示新名稱的確認提示,之後啟動器上的標籤就會改變。其他系統如何處理變更後的名稱,則由它們自己決定。
圖示會跟著 Theme(主題)變化:Day mode(日間模式)使用淺色圖示和白色的啟動背景,Night mode(夜間模式)使用深色圖示和深色的啟動背景。變更主題後,已安裝 App 自己的啟動畫面會在系統重新整理該 App 時更新,在 Android 上可能需要一天。
若要在同一台裝置上區分多個中繼,請分別從各自的位址安裝,並為每個中繼設定不同的 Relay name:每個位址都是一個獨立的 App,有自己的圖示和標籤。
在 App 中登入 #
中繼會用 cookie 讓瀏覽器保持登入(見首次執行)。當已安裝的 App 沒有有效的登入時,會顯示登入框 Enter your access token to connect(輸入你的存取 token 以連線)。把 token 貼到 Access token(存取 token)欄位,然後按 Connect(連線)。如果需要再次取得 token,oar url 會印出目前的 token。執行 oar setup --new- 之後,每台裝置(包括已安裝的 App)都必須重新登入。
App 的行為 #
返回鍵與返回手勢 #
系統的返回鍵或返回手勢絕不會一按就關閉已安裝的 App。返回會關閉開啟中的檔案檢視器(0.9.9 新增)或 subagent 檢視器,不會關閉其他東西。沒有這類東西可關閉時,App 會顯示 Press back again to close the app;在這期間沒有碰觸 App 的情況下再按一次,就會關閉 App。返回不會關閉對話框、選單或對話清單。檔案檢視器的部分說明於手機與已安裝 App 上的返回,subagent 檢視器則說明於 Subagent 檢視器。
在你第一次碰觸之前,瀏覽器會讓返回離開 App,網頁無法改變這一點。在瀏覽器分頁中,返回鍵仍由瀏覽器處理。
全螢幕 #
App 會在自己的獨立視窗中開啟。在窄螢幕上,如果系統允許,它還會在你第一次碰觸時向系統要求全螢幕。在 App 中,OAR 自己的 ⬇ 安裝按鈕和全螢幕按鈕都會隱藏。頁面會使用整個螢幕(包括瀏海區域),並讓標題列保持在頂端安全區域之下。
從背景回來 #
短暫切換 App 不會有任何影響:App 進入背景後,會與中繼保持連線 45 秒。之後它會關閉連線。你回來時,它會立即重新連線,並重新讀取對話清單和目前的對話、模型清單、session worker 的狀態,以及尚未處理的提問和計畫看板,所以你不在時發生的事會自動出現,不需要你做任何操作。裝置恢復連線或從睡眠中喚醒時也一樣。無法連到中繼時,對話清單標題列左側的狀態點會變成灰色,工具提示顯示 Web relay unreachable(無法連到網頁中繼);App 會持續嘗試連線。
App 在前景時會通知中繼,而只有在沒有任何裝置把 App 放在前景時,中繼才會傳送推播通知。
更新 #
網頁介面由中繼提供,所以在中繼主機上更新 OAR 也會一併更新介面。已安裝的 App 會保留一份外殼的副本,但只要能連到中繼,就會優先從中繼載入頁面和它的腳本。它啟動時如果發現較新的版本,會直接切換過去,不會詢問你;如果切換失敗一次,它會移除儲存的外殼並重新載入。你不需要重新安裝。
限制 #
- 離線時,App 可以開啟儲存的外殼,但所有需要中繼的功能都無法使用:對話、檔案瀏覽器、傳送訊息。App 對中繼發出的請求永遠不會被儲存。
- 安裝需要所需條件中說明的安全環境。