我在幹什麼

Tauri

最近又有新的需求,決定拿 tauri 糊。serialport 用著沒啥問題。

tauri 有個 tauri::ipc::Channel 可以直接作為 #[tauri::command] 的引數,前端那裡放個 event handler 就行。至於單次的串列埠讀寫/polling之間,照例還是 Mutex,方便解耦 & 在讀寫前後寫點處理資料的程式碼。

Carbon Design System

前端準備還是用點其他的框架(指非 Svelte)。嘗試了 Carbon Design System 的 Vue 庫 @carbon/vue3,“文件”僅有個故事書,怎麼寫都渲染不出來,感覺是漏了 CSS 什麼的。這個設計系統是以前用 Svelte 時為數不多的選擇——其他要麼需要 install package per component 如 Svelte Material UI,要麼是 atomic 的需要 Tailwind(如圖)。

而且 Carbon 不愧是老牌 IBM 廠設計的,配合著自家的 IBM Plex Sans (SC) / Mono,給人樸實、硬朗的感覺,非常清爽。雖然看著可能沒有什麼細節上的動效,但是總比隔壁天天在 YT 上拿渲染出來的概念動畫發 Shorts 務實——後者的實際體驗完全不是那麼一回事。

群友閱讀本文的預印本後,說:

y****

隔壁是誰

前端之貓

M$

y****

可惜現在 LLM 只會用 tailwind,沒救了

從新版 office 圖示來看,這家公司已經徹底沒救了

IBM 可能還在用自己的大型機,所以沒有被 MACos 腐蝕腦子

mingw

我覺得新圖示挺好的

y****

自覺退群吧

Vibe Coding

一個需求是做一個嵌在軟體裡面的 manual。讓我回想起我小時候用的軟體都有 chm 什麼的。下面是其中一天的歪卜摳頂的對話記錄:

GitHub Copilot Conversation Log

Development session: Manual documentation and UI refinements

Messages

17

AI Responses

9

OverflowCat
@workspace
- 給 PROJECT 寫文件 - 現在 我有一個比較特殊的需求:客戶需要一個比較傳統的 software manual。 - 下面,請你在 status bar 的末端加一個撳鈕,開啟一個全屏的manual介面。其中複用現有的元件來介紹功能。

Model type

GitHub Copilot

Workspace

Collecting workspace information

Model type

GitHub Copilot

Workspace

我會幫你在狀態列末端新增一個按鈕,開啟全屏的軟體手冊介面。讓我建立相關的元件和修改:

Full Response

首先,建立手冊元件:

Generated Code

然後修改狀態列,新增手冊按鈕:

Generated Code

最後新增一些樣式最佳化:

Generated Code

這個方案提供了:

  1. 完整的使用手冊介面:使用 Carbon Design System 的 Modal 和 Tabs 元件

  2. 四個主要章節

    • 概述:軟體介紹、功能、系統要求
    • 主介面:詳細介紹各個介面區域
    • 標定模式:說明兩種模式和偏差計算
    • 操作流程:分步驟的操作指南和故障排除
  3. 複用現有元件

    • CalibrationModeSelector 用於演示標定模式
    • DataDisplay 用於展示資料佈局
    • 狀態列元素用於說明底部資訊欄
  4. 狀態列按鈕:在 StatusBar 末端新增使用手冊按鈕,點選開啟全屏手冊

  5. 友好的排版:清晰的標題層級、充足的間距、合理的配色

這樣客戶可以隨時開啟手冊檢視軟體的詳細使用說明!

OverflowCat
你這邊不對—— 1. please 說明 開始/停止 和其他按鈕的 disabled 的狀態變化 2. 缺少開啟原廠軟體的按鈕介紹(雖然目前還沒實現)

Model type

GitHub Copilot

GitHub Copilot

我來修正這兩個問題:

Full Response
Using "Replace String in File"
Generated Code

現在修改了手冊中控制欄的說明,包括:

  1. 詳細說明了按鈕的 disabled 狀態變化

    • 串列埠輸入框:監測停止時可編輯,執行時禁用
    • 開始/停止按鈕:始終可用,會根據狀態切換文字和顏色
    • 切換原廠軟體:僅在停止時可用
    • 退出按鈕:僅在停止時可用,執行時禁用
  2. 新增了按鈕的介紹

    • 說明其功能是啟動裝置原廠配套軟體
    • 解釋點選後會隱藏當前視窗
    • 說明原廠軟體關閉後會自動返回
  3. 在演示區域也新增了該按鈕,使用 Settings 圖示來展示

這樣使用者就能清楚地瞭解每個控制元件在不同狀態下的行為了!

Made changes.

OverflowCat
這個縮放會讓 Manual 的 Modal 佈局錯誤(超出螢幕),但是我又不能 刪掉這個

Model type

GitHub Copilot

GitHub Copilot

我理解了,全域性的 zoom: 1.2 會影響 Modal 的佈局。我們可以在 Manual 的 Modal 上重置 zoom。讓我修改 CSS:

Full Response
Using "Replace String in File"
Generated Code

讓我檢視一下 App.css 檔案的完整內容:

Read [](file:///c%3A/.../PROJECT/src/App.css#130-130), lines 130 to 170

我看到問題了,有一個 // ...existing code... 的註釋造成了錯誤。讓我修復它:

Using "Replace String in File"

Made changes.

OverflowCat
請改成符合顏色的,不要禁用的

Model type

GitHub Copilot

GitHub Copilot

我來修改 Manual 中的演示按鈕,讓它們顯示正確的顏色狀態而不是都禁用:

Full Response
Using "Replace String in File"
Generated Code

完成!我已經將演示按鈕從 disabled 改為使用 pointerEvents: "none",這樣:

  1. "開始監測" 按鈕顯示為藍色主按鈕(kind="primary"
  2. "停止監測" 按鈕顯示為紅色危險按鈕(kind="danger"
  3. "切換原廠軟體" 按鈕顯示為灰色第三級按鈕(kind="tertiary"
  4. "退出" 按鈕顯示為紅色第三級按鈕(kind="danger--tertiary"

所有按鈕都保持了正確的顏色,但透過 pointerEvents: "none" 阻止點選,這樣在手冊中就能看到它們正常的視覺效果了!

Made changes.

OverflowCat
改成 html 列表的,你這是 markdown

Model type

GitHub Copilot

GitHub Copilot

我來把 Markdown 格式的列表改成 HTML 列表:

Full Response
Using "Replace String in File"
Generated Code

完成!我已經將 Markdown 風格的列表(使用 - 以及 <br />&nbsp;)改成了正確的 HTML 巢狀列表結構:

  • 使用 <ul><li> 標籤
  • 主要專案作為一級列表
  • 詳細說明作為巢狀的二級列表
  • 新增了適當的間距樣式

這樣語義更清晰,樣式也更容易控制!

Made changes.

OverflowCat
請把四個 tab 拆成4個 components檔案

Model type

GitHub Copilot

GitHub Copilot

我來把四個 Tab 拆分成獨立的元件檔案:

Full Response
Created [](file:///c%3A/.../PROJECT/src/components/manual/OverviewTab.tsx)
Created [](file:///c%3A/.../PROJECT/src/components/manual/InterfaceTab.tsx)
Created [](file:///c%3A/.../PROJECT/src/components/manual/CalibrationTab.tsx)
Created [](file:///c%3A/.../PROJECT/src/components/manual/WorkflowTab.tsx)

現在更新 Manual.tsx 來使用這些新元件:

Using "Replace String in File"
Generated Code

現在替換 TabPanels 的內容:

Using "Replace String in File"
Generated Code

現在替換 TabPanels 的內容:

Made changes.

OverflowCat
@agent
Try Again

Model type

GitHub Copilot

GitHub Copilot

讓我重新替換 Manual.tsx 中的 TabPanels 部分:

Full Response
Using "Replace String in File"
Generated Code

Made changes.

OverflowCat
@agent
Try Again

Model type

GitHub Copilot

GitHub Copilot

讓我檢視檔案內容並進行修改:

Full Response
Read [](file:///c%3A/.../PROJECT/src/Manual.tsx#115-115), lines 115 to 250
Using "Replace String in File"
Generated Code

讓我檢視檔案中還剩下什麼內容需要替換:

Read [](file:///c%3A/.../PROJECT/src/Manual.tsx#125-125), lines 125 to 400

我看到問題了,還有重複的內容。讓我刪除這些重複的部分:

Using "Replace String in File"
Generated Code

完成!我已經成功將四個 Tab 拆分成獨立的元件檔案:

  1. OverviewTab.tsx - 概述標籤,包含軟體簡介、主要功能和系統要求
  2. InterfaceTab.tsx - 主介面標籤,展示控制欄、資料展示區和狀態列
  3. CalibrationTab.tsx - 標定模式標籤,說明兩種標定模式和偏差計算
  4. WorkflowTab.tsx - 操作流程標籤,提供分步驟操作指南和故障排除

現在 Manual.tsx 變得更加簡潔,只負責組織這些Tab元件的結構,而每個Tab的具體內容都在獨立的元件檔案中,便於維護和複用!

Made changes.

釋出

由於不會在 Windows on ARM 上交叉編譯 x64 的 Rust 程式,所以我最後掏出了我的舊的華為筆記本。

區域網開了一個 http-server,在 client 機器上下載執行的時候非常麻煩,首先是 Edge 會千方百計地阻止你下載這個程式;其次還會有司馬的Screen™彈窗。最後將軟體刻進光碟,和機器一同寄給客戶。

我在看什麼