Skip to content

更新紀錄 ​

本頁在建置時由 git 歷史產生:列出主分支上採用慣例前綴(feat、fix、perf、docs 等)的 commit 標題,依月份分組;合併 commit 與沒有前綴的 commit 不列入。完整歷史見 GitHub。

2026-10 ​

新功能 ​

  • site: 宣傳頁與 README 加上實際操作短片
  • docs: 文件站加上 SEO,正式網址 docs.skylab-tw.com
  • site: 介紹頁拆成獨立官網 skylab-tw.com,加上聯繫方式與 SEO
  • users: 使用者群組(班級),老師開班時可直接匯入一班學生
  • frontend: 全站讀取改接 TanStack Query
  • frontend: 導入 TanStack Query、React Compiler 與 TanStack Virtual
  • admin: 使用者管理的批量操作加入刪除
  • resources: 我的資源加入勾選批量操作,可一次刪除多台機器
  • auth: 註冊政策新增「Google 首次登入自動建帳」獨立開關
  • docs: 手冊截圖改為每個小節一張,同畫面步驟合併並標上步驟編號
  • docs: 使用手冊步驟截圖工具(mock API、固定時鐘、元素框選、webp 輸出與自動插圖)
  • placement: CPU 超賣倍率預設改為 5 倍
  • template: 範本可在同叢集內跨節點 clone
  • docs: add VitePress documentation site deployed to Cloudflare Pages
  • teaching: 課程環境對外網址改為前綴+16 碼亂碼,移除主機名樣板
  • password: Windows 機器密碼提示只列出尚缺的字元種類
  • setup: 安裝精靈 IP 網段步驟加上主系統 IP
  • ip-management: 子網設定加上主系統 IP 欄位
  • teacher-judge: enforce one active script set per week
  • template: 範本改為平台範本,PVE 端不再轉換 (#398)
  • template: 範本改為平台範本,PVE 端不再轉換
  • quota: exempt administrators from all resource quotas
  • frontend: remove student checkpoint completion from teacher home (#395)
  • student-course: weekly progress card, tick-only report and teacher reply
  • ai-judge-ui: week-based workspace and class-wide teacher review
  • teacher-judge: weekly assignments, class progress and teacher replies
  • teacher-judge: bind AI checks to weeks, one per week
  • mining: show incident owner and link VMID to resource detail
  • frontend: remove student checkpoint completion from teacher home
  • navigation: toggle admin and personal home workspaces
  • ai-nav: fill request schedule from the intake duration answer
  • assistant: add dismissible page help hint
  • teacher-judge: 持久化整班與目標執行紀錄
  • frontend: page-specific guides for the remaining 29 routes
  • teacher-judge: 腳本執行加入耗時量測並改用共享 SSH 併發池
  • auth: add email verification and independent registration approval (#380)
  • ai: add latency observability and Qwen3.8 thinking contract (#379)
  • auth: add email verification and independent registration approval
  • ai: add Qwen3.8-27B thinking contract via chat_template kwargs
  • monitoring: add AI latency observability
  • class-workspace: 學生名單批量移除、加搜尋,欄位排版改看容器寬度
  • class-management: 班級管理批量封存並回收
  • request-review: 申請審核批量拒絕
  • admin: 使用者管理批量停用/啟用,清單排版改看容器寬度
  • resource-mgmt: 批量操作改成表格上方工具列,加搜尋與狀態切換
  • ui: 共用清單工具列與批量勾選元件
  • login: 授權桌面 App 登入的同意頁重新排版
  • ui: 沒資料時只留空狀態的新增鈕,頁首鈕等有資料才出現
  • guide: 資源詳情導覽模擬頁照正式分頁重畫
  • boot-options: 開機順序可拖移排序,儲存鈕靠右、列改白底
  • switch: 共用開關 Switch,取代防火牆規則與節點的啟用切換
  • firewall: 選中機器時只顯示跟它相關的連線
  • modal: closeButton 版加 dividers={false} 拿掉分隔線
  • error-state: 連不上後端改用斷線插圖頁 ConnectionLostState
  • ai: sync System AI, Teacher Judge, and AI API hardening (#371)
  • ai-monitoring: add AI usage CSV export with streaming and redaction
  • system-ai: introduce model-owned request contracts via llm-model-profiles.yaml
  • system-ai: extend role guardrails and tool contracts
  • console: VNC 主控台加入 PVE 同款剪貼簿面板,貼上文字送進機器剪貼簿
  • system-ai: enforce role contracts and guardrails
  • security: 自訂的機器登入密碼只存雜湊,範本密碼開關改為自動偵測
  • ai: AI 助手完整頁面導覽與 prompt injection 基本防護
  • vm: Linux VM 登入帳號(cloud-init ciuser)命名政策
  • gateway: 平台入口可選擇經 Cloudflare 代理(橘色雲)
  • domain: 移除網域管理的「對外網址」分頁
  • ai-api: add bulk rejection review flow
  • db: 資料庫正規化到 3NF
  • gateway: 平台入口儲存時自動把網域的 DNS 指到 Gateway
  • gateway: HTTPS 憑證改由管理員自備,系統不再以 certbot 簽發
  • ai-assistant: 浮動按鈕與對話改用章魚學士
  • octo-pet: 新增章魚學士像素寵物元件
  • firewall: 拓撲依班級/類型分組、可收合與篩選,並整理工具列與群組卡樣式
  • spec-change: 延長到期日同時延長核准使用時段,自己申請的機器也能延期
  • desktop: align platform and locale support
  • desktop: notify users about new releases
  • desktop: support current resource lifecycle
  • auth: 帳號密碼加上複雜度規則
  • backup: 快照不能用的機器改用備份當還原點 (#342)
  • backup: 快照不能用的機器改用備份當還原點
  • gateway: 平台入口——主系統也經 Gateway 的 nginx 對外,並納入初始化精靈

修正 ​

  • tests: AI proxy 佇列測試不再依賴 1 秒的真實等待時限
  • docs: 截圖工具的網域列比對改為完整跳脫正規表達式
  • frontend: 修正文字溢出欄位的版面(自動掃描找到)
  • frontend: 修正手冊截圖檢查時發現的介面問題
  • frontend: 修正 TanStack Query 改版留下的回歸
  • frontend: AI API 申請核准後新金鑰沒出現在金鑰列表
  • security: 解壓炸彈守門改量實際解壓量、teacher_judge 網路探測只准本機
  • docs: 手冊截圖的假 token 改為一週後到期,shot 加 newFrame 並以各自視窗大小裁切
  • docs: 文件產生器的表格儲存格跳脫改為單次表驅動替換,補上反斜線
  • placement: 排程改看已分配規格、快速練習先檢查叢集容量、自訂 VM 可跨節點
  • quick-practice: 對外發布失敗不再回收整組,修復期限從機器建好起算
  • console: VNC 畫面改以 NoVncScreen 直接包 noVNC,鍵盤不再因滑鼠動作失焦
  • teaching: 班級容量預檢改看已分配規格,修正誤放行與誤擋
  • quick-practice: 移除 apply_for_machines 已刪除的 scope 參數
  • frontend: keep AI judge chat beside the checklist on desktop
  • gateway: http.conf 依最長網域宣告 server_names_hash_bucket_size
  • firewall: 放行主系統 IP → 機器的 SSH,讓導師檢查連得進去
  • alembic: merge platip01 and tjactive01 heads
  • improve course review UX and desktop sign-in reliability
  • teacher-judge: preserve execution evidence on failures
  • frontend: 預設 AI 導師檢查第一週
  • teacher-judge: preserve power-state failures
  • template: 複製不帶走範本母機的保護,平台擋母機開機
  • teacher-judge: 驗證指令選項中的檔案路徑並要求絕對路徑
  • template: 轉範本要等 PVE task 結束,失敗不可標成 ready
  • console: 主控台接管瀏覽器快捷鍵,noVNC 開啟後即可打字
  • terminal: 終端機最底下一行被遮住
  • sidebar: 管理員設定裡的首頁改名「管理首頁」,避免出現兩個「首頁」
  • teacher-judge: 修正核對工具流程與空回覆,整併契約文件 (#394)
  • ai: 補齊 gpt-oss-120B 模型請求契約
  • teacher-judge: handle empty refine responses
  • chat: grow chat composers with their content and keep IME Enter
  • teacher-judge: clarify typed proposal validation
  • ai-nav: bound duration regex to avoid polynomial backtracking
  • alembic: support SQL_ASCII target backfill
  • teacher-judge: require absolute paths for checks
  • monitoring: label API requests by raw path so workload is not always "other"
  • clear 47 CodeQL code quality findings
  • frontend: 資源詳情導覽示範頁不再寫死假帳密
  • ai: 桌面關鍵字不再推定 Windows,規劃請求總長受限
  • ai: 導覽 AI 配置失敗改用規則配置,不再虛構 GPU/機型
  • frontend: 移除 AI 監控 CSV 匯出
  • guide: persist viewed walkthroughs on user accounts
  • frontend: 教師儀表板統計卡依內容區寬度排成 2×2 (#383)
  • teacher-judge: 已知執行位置不再被判為老師缺口,路徑衝突導向可修復的契約錯誤
  • ai: AI_API_API_KEY 未設定的判斷不再綁 prepare-ai-stack.sh
  • api: async route 裡的同步 DB 查詢移出 event loop
  • lifecycle: 範本更新失敗可重試、封存一律回收、批次建機心跳與自動續跑、時段結束才釋放配額等
  • monitoring: 警示依叢集區分、容量檢查涵蓋非整點重疊、LoadAvg 以實體核計、改密碼限流
  • SSH 指令總時限與輸出上限、Teacher Judge 排隊誤判、LDAP 連線關閉、桌面端設定與離線提示
  • vllm-service: 模型崩潰自動重啟、LiteLLM 設定檔改為僅擁有者可讀
  • deploy: Grafana 關閉帳密登入、AI API 預設金鑰只停用並警示、Python ≥3.11、閘道只支援 Debian 13
  • network: 挖礦存證快照保護、改網段遇預留擋下、LXC 先防火牆後開機、多 port 全有全無等
  • frontend: 資源管理勾選隨刷新清理、各頁舊回應覆蓋、到期日顯示日曆日並註明截止時間
  • frontend: 教室連線自動重連、不限核心不被降成 1 核、建班預設值、檢查表未儲存保護
  • batch-provision: 回收卡死的工作時有建好的機器仍標 completed
  • ops: opencode 的 checkout SHA 不存在、migration 檢查等錯 DB、改金鑰只改第一行
  • desktop-client: 登入過期無限循環、含空白路徑無法安裝通道、開不了自訂後端
  • vllm-service: 重啟誤判 port 佔用、就緒探測走代理、範本 .env 載入失敗
  • ai: 巢狀控制 token 清不乾淨、表單欄位未清理就進 prompt、用量寫入失敗拖垮請求
  • api: 停用 2FA 可暴力猜碼、/ws/jobs 訊息洪水觸發查詢、匯入名單卡住 event loop 等
  • teaching: 課程內容缺修課檢查、排程設 0 被當預設、重試把已建好的機器標失敗等
  • network: WireGuard ACL 信任 guest 回報 IP、NAT 搶 port 500、同步刪掉離線節點 storage
  • vm: 核准重排把 clone 中的申請改回 idle、回收 VMID 沿用舊時段、重置與還原並行
  • frontend: 沒有申請單的機器從資源列表消失、重複送出申請等
  • backend: 推播重用已刪訂閱、離線節點假 0% 樣本、AI 排隊 gauge 卡住
  • teacher-judge: 單一學生 NaN 毀掉整批結果、匯出控制字元 500、檢閱互相覆蓋
  • infra: SSH 防護規則被繞過、連線失敗洩漏、HA 切換、CA 落地競態等
  • backend: 放置權重設 0 被當預設、使用者 PATCH null 變 500、全形 2FA 碼 500
  • frontend: 系統與 AI 頁面的舊回應覆蓋、配額表單被洗掉、模型用量遺失
  • course-operations: 全班開關機拋錯、新環境選取被蓋掉、上一頁重複建班等
  • frontend: 子網警示橫幅換頁後不出現、AI-PVE 對話會載入外站圖片
  • frontend: 審核清單舊回應覆蓋、首頁座位不亮、複製台數小數被拒
  • class-workspace: 課堂監看全班開關機按下沒反應
  • i18n: 共用錯誤句統一成跟整頁錯誤畫面同一套用字與標點
  • resources: 機器清單整頁出錯時不再重複顯示配額卡的錯誤
  • home: 學生首頁「查看所有課程」沒課程時不顯示,移到標題列右側
  • ci: make public model smoke warning-only (#375)
  • ci: make public model smoke warning-only
  • resource-detail: 快照/備份表格不斷行,規格申請原因以字數提示當 placeholder
  • audit-log: 操作紀錄的動作改顯示文字,操作者 email 與徽章不再被拆字
  • runtime: harden AI and realtime request lifecycles
  • proxmox: 放大 PVE 連線池並縮短連線逾時、連線失敗換新 socket 重試
  • codeql: 修正 #371 帶進的 6 項 CodeQL Code Quality 發現
  • i18n: 表格操作欄標題統一為「操作」
  • firewall: 沒有機器時不畫網際網路節點與小地圖
  • teacher-judge: unify AI導師檢查 naming
  • error-state: CrashState 只留「重新整理頁面」一顆按鈕
  • teacher-judge: restore legacy proposal compatibility
  • teacher-judge: harden long-run session stability and deadline recovery
  • login-password: Windows 機器的登入密碼必須符合 Windows 複雜度,避免 cloudbase-init 設密碼被拒而登不進去
  • teacher-judge: preserve execution paths through finalization
  • teacher-judge: enforce typed check plan writes
  • teacher-judge: require executable locations
  • ai: VLLM_API_KEY 留空時不送 Authorization 標頭
  • system-ai: enforce vLLM request contracts
  • ai: harden guardrails and bound PVE chat context
  • system-ai: align contextual help guardrail probes with production
  • request-form: 範本或 AI 帶入的規格值對齊步進,記憶體不是 512 MB 倍數時表單不再送不出去
  • request-form: 移除密碼欄位「平台不會保存這組密碼」的小字提示
  • security: Linux 上 SHA-512 crypt 改呼叫系統 libcrypt,壓測 p95 回到門檻內
  • ai: 改用碼位表清理控制字元,解掉 CodeQL overly-large-range
  • proxmox: 入口節點斷線時讓快取的 client 重新探測,LXC 範本清單改長快取
  • ai-api: harden public relay and credential lifecycle (#364)
  • alembic: merge AI API migration heads
  • account: use existing audit action for email changes
  • account: verify email changes and accept uploaded avatar URLs
  • ai-api: harden lifecycle, relay contracts, and endpoint defaults
  • ai-monitoring: 以 /model/info 把 LiteLLM 部署健康對回公開模型名稱
  • alembic: pentryprx01 改接在 aiapi01 之後,解掉雙 head
  • proxmox: 輪詢 PVE 任務狀態時容忍暫時連不到 API
  • ai-proxy: bound relay admission and retry lifecycle
  • ai-api: harden control-plane requests and quotas
  • docker: prestart 改直接用映像內 venv,不再於執行期跑 uv run
  • ai-proxy: admission queue 逾時改用 call_later,Python 3.11 不再吞掉取消
  • forms: 數字框改離開欄位才定稿,申請表單 CPU/記憶體補數字框
  • spec-change: 規格調整送單即檢查剩餘配額,規格頁上限跟配額同步
  • requests: 申請表單的硬體上限跟剩餘配額同步
  • provisioning: 機器開機後開放 SSH 密碼與 root 登入
  • ai-proxy: admission queue 改為直接交棒,Python 3.12+ 不再被新請求插隊
  • firewall: 群組 id 改百分號編碼避免箭頭失效,搜尋中不給切收合
  • ai-api: keep smoke credentials off stdout
  • ai-api: rotate and clean up deployment smoke credentials
  • ai-api: align key durations and deployment smoke auth
  • ai-api: bound relay concurrency and align CI
  • desktop: serialize tunnel lifecycle and stabilize status polling
  • gateway: migrate WireGuard policy to SkyLab and deduplicate rules
  • gateway: reload active WireGuard firewall on install
  • desktop: avoid orphan tunnel startup race
  • gateway: replace stale WireGuard UFW route
  • wireguard: validate ACLs against configured subnet (#350)
  • wireguard: validate ACLs against configured subnet
  • ai-proxy: 串流回應標明不緩衝,確保 SSE 逐段送出
  • wireguard: use configured resource subnet
  • desktop: refresh expired authentication sessions
  • wireguard: revalidate active peer ACLs
  • resources: enforce expired usage windows across access paths
  • desktop: allow WireGuard connection without VM targets (#345)
  • auth: 忘記密碼限流常數改名,消除 CodeQL 明文日誌誤報
  • backup: bkup01 migration 改接在 pentry01 之後
  • backup: LXC 還原時明確帶上非特權設定
  • snapshot: 機器當下不能用快照時隱藏並停用快照功能

效能 ​

  • firewall: 即時 IP 查詢限時並改背景更新,拓撲與資源清單不再被 guest agent 拖住

文件 ​

  • 全部文件依程式現況重新整理,移除過時、重複與已無用的內容
  • website: 手冊截圖說明改用 playwright-core 安裝瀏覽器並補上注意事項
  • manual: 使用手冊 36 頁加上步驟截圖(中英各 304 張)
  • move all documentation into website/ and add the per-feature user manual
  • tidy the repository for the public open-source launch
  • 修正翻譯時發現的過時內容(範本可見範圍、排程任務數、範例模型、WireGuard 範例值)
  • 文件改為英文主版+中文並列,授權改為 AGPL-3.0 並加入第三方授權聲明與關於頁

維護 ​

  • docs: 文件站改由 Cloudflare Pages Git integration 部署
  • backend: 正式映像改用 Python 3.15,migration 檢查改用 Postgres 18
  • deps: 前後端、桌面端、文件站與 Docker 映像全面升級
  • frontend: 表格改用 TanStack Table v9
  • deps: bump aiohttp
  • deps: bump the actions group across 1 directory with 2 updates
  • frontend: Docker 建置改用根目錄 workspace 鎖檔並凍結版本
  • backend: 移除覆蓋率測試檔中不增加覆蓋的 707 個多餘測試
  • deps: bump the actions group with 2 updates (#397)
  • teacher-judge: stabilize deadline recovery test (#405)
  • verify student overview and weekly task content stay consistent
  • remove obsolete weekly task source fallback assertions
  • template: 轉成範本統一用 TemplateFormDialog
  • teacher-judge: stub the script lookup in the class script-run route test
  • ai-judge-ui: name the assistant AI導師檢查 and the tab 任務設定
  • course: narrow the weekly task file column
  • course: remove per-week machine selection from weekly tasks
  • teacher-judge: avoid assuming shared worker distribution
  • backend: fix CI flake in deadline test and CodeQL substring alert
  • backend: raise line coverage to 100%
  • backend: coverage excludes, dead-code markers and batch summary guard
  • auth: fix email verification CI test setup
  • frontend: 日期時間比對不受 ICU 空白字元差異影響
  • admin: 編輯使用者對話框的兩步驟驗證區塊改白底
  • login: 登入頁「桌面 App」提示改白底細框
  • account: 「關於」分頁左右對調,開源元件表在左
  • account: 「關於 SkyLab」卡片內容重排,窄螢幕改上下排
  • auth: 「正在驗證登入狀態」不包白底卡片
  • routes: declare database fixtures for remaining cases
  • runtime: align DB guard and AI worker contracts
  • tests: stop tracking local AI service probes
  • ai: add website service verification probe
  • ai-api: remove bulk-reject flow
  • vm-request: Windows 申請單測試改用符合 Windows 複雜度的密碼
  • quality: 清除 GitHub Code quality 在 PR #364/#365 新程式碼上的 30 項發現
  • backend-tests: prestart 改以 uv run 啟動,讓 runner 上的 venv 進 PATH
  • deps: 前後端、桌面端與 Docker 映像全面升級(含跨大版)
  • ai-api: 聊天分頁的模型列拿掉 support_agent 圖示
  • ai-judge: 檢查表助理對話比照首頁 AI 對話
  • dashboard: 首頁 AI 對話頭像改成章魚學士,拿掉助手標頭的 support_agent 圖示
  • sidebar: 品牌標誌改用章魚學士 OctoMark,不再用 favicon 點陣圖
  • frontend: favicon 換成章魚學士,補 SVG、16/32px PNG 與 apple-touch-icon
  • sidebar: 「Storage」中日文介面改成「儲存空間」/「ストレージ」
  • settings: 節點管理頁併入 PVE 連線頁並改名「PVE 管理」
  • settings: 配額頁併入治理頁並改名「資源政策」
  • connection-dialog: 兩台機器互通的方向改成「單向/雙向」
  • sidebar: 液態玻璃在窄螢幕的側欄抽屜改成重霧,底下頁面的字不再透上來
  • ai-service: add deployment smoke coverage
  • desktop: handle unpatched build audit advisory
  • desktop: require signed release installers
  • desktop: remove obsolete renderer integration
  • desktop: prepare v0.2.0-beta.4
  • desktop: enforce lint audit and build checks
  • desktop: resolve remaining npm advisory
  • quality: 清除 GitHub Code quality 全部 48 項發現並升級 urllib3
  • deps: bump the npm_and_yarn group across 1 directory with 3 updates
  • deps: bump pyjwt (#341)
  • 測試不受本機 .env 的 Turnstile 金鑰與資料庫 PVE 連線影響

2026-09 ​

新功能 ​

  • auth: 登入與註冊加入 Cloudflare Turnstile 機器人驗證
  • home: 首頁機器卡標題改顯示課程環境名稱
  • ai: 手動金鑰+Harmony解析+遠端apikeys
  • auth: auto-register education Google users
  • ci: 手動觸發的課程活動建班 workflow
  • frontend: 整組開關機改為分批送出,班級監看加上整班電源按鈕
  • teaching: 班級擁有者可領一套與學生相同的機器
  • gateway: 閘道 VM 新增「安裝服務」一鍵安裝
  • auth: 服務檢查失敗時學生與老師也能帶著警告繼續
  • auth: 每次登入後的服務檢查畫面
  • onboarding: 首次登入引導加入姓名與頭像設定
  • setup: 初始化精靈建立的管理員也要走首次登入引導
  • ip-management: 實驗室 IP 網段支援選填 VLAN
  • monitoring: 監控模組接上 AI 模組(LiteLLM/vLLM 健康、指標與 Grafana 儀表板)
  • ai-gateway: LiteLLM 改接 Compose 內網並自動建 DB/核發 service key
  • monitoring: SkyLab 管理員免密碼登入 Grafana(nginx auth_request + auth.proxy)
  • monitoring: 資源監控頁在監控 stack 啟用時顯示「在 Grafana 查看詳細」
  • ai-monitoring: add AI call observability
  • monitoring: Grafana 與平台健康檢查涵蓋 Gateway 主機
  • ai-api: 新增金鑰詳情與聊天工作區
  • ai-assistant: 助手浮在對話框之上,對話框在面板開著時改到左側置中
  • gateway: Gateway 改用 nginx 取代 HAProxy 與 Traefik
  • request-form: 載入狀態加轉圈提示,移除類型建議框
  • onboarding: 首次登入引導精靈(語言/外觀/兩步驟驗證)
  • resources: 機器開機中停用控制台
  • credentials: 重設 VM 登入密碼後自動重新開機套用
  • monitoring: 平台健康監控、排程心跳、系統告警與選用監控 stack
  • frontend: 資源詳情頁判斷 API 404,顯示「找不到這個資源」而非一般錯誤
  • backend: 補 404/500 全域 exception handler,未知路徑與未捕捉例外回統一多語訊息
  • auth: 強制兩步驟驗證改為逐帳號設定,移除登入安全頁
  • nginx: 反向代理加 50x 靜態錯誤頁,前端容器掛掉時不再出現預設白頁
  • frontend: 新增 404 頁(紙飛機航線動畫),錯誤文案統一並加根層 ErrorBoundary
  • auth: 兩步驟驗證(TOTP/Google Authenticator)+管理員重設與強制政策
  • landing: 收尾改成 outro 段,雲海合攏後浮出 CTA
  • landing: 段落道具與資料連動
  • storage: Storage 清單加狀態篩選與搜尋
  • class-workspace: 週次發布改用草稿|發布切換,重抓資料不蓋掉未儲存的修改
  • segmented-control: 支援單段停用,修正選中段 hover 字色
  • setup: 精靈卡片右上角加深/淺色主題切換鈕
  • setup: 精靈開頭改為歡迎畫面選語言,頁首精簡為「初始設定」
  • setup: 首次安裝初始化精靈(管理員 → PVE 連線 → IP 網段 → 完成)
  • provisioning: run VM request clones on the arq worker
  • compose: 加入 PgBouncer 連線池,backend/worker 改經 transaction pooling 連 DB
  • ai-judge: add empty-state hero UI for chat and check panel
  • teacher-judge: P3-a attachment convergence source id and history dedup
  • teacher-judge: show detection targets and execution contract in rubric table
  • sidebar: 管理員設定改麵包屑返回,導覽加捲動邊緣淡出
  • jobs: 背景任務彈窗改為任務/提醒分頁,通知設定收進齒輪
  • ui: 新增 PasswordInput 共用元件(顯示/隱藏密碼)
  • ui: 新增 FileDropzone 共用上傳元件,檔案上傳改用拖放區塊
  • teacher-judge: persist script-set failures to chat history
  • provisioning: one login-password rule for every creation path
  • teacher-judge: group teacher review overview by student
  • teacher-judge: support typed multi-machine check plans
  • ai-api: rebuild the quick-start dialog around what students need
  • ai-api: redesign keys and requests as tables, move docs into a quick-start dialog
  • sidebar: open teaching group to students and add quick-create entry
  • resource: add structured guest_os identity with lazy detection
  • teacher-judge: 腳本顯示名改用機器名稱並補回 legacy 後綴對映
  • teacher-judge: 導師核查新增一次執行並移除執行結果頁
  • teacher-judge: 批次執行結果改用逐機器表格與顯示名對照
  • landing: 未登入首頁改為導入頁並加入 gsap 依賴
  • landing: 導入頁滾動敘事與 HUD 介紹卡
  • landing: 等距校園夜景場景與八段運鏡腳本
  • resources: 舊班級機器關聯回老師拓撲的顯示名
  • teacher-judge: 支援多機器腳本集與批次執行
  • resource-detail: 無密碼記錄的機器於憑證卡顯示提示列,指出重設密碼的補救路徑
  • teacher-judge: 新增導師核查與學生回饋
  • teacher-judge: 傳遞課堂機器環境上下文
  • teacher-judge: add logical node targeting
  • class-workspace: 環境的唯讀拓撲改用與編輯器相同的防火牆畫布
  • course-env: 畫布加上可隱藏的上網線,移除提示句
  • course-env: 點線改用防火牆的 ConnectionDetailPanel,畫布提示預設可上網
  • class-workspace: 唯讀拓撲節點改用防火牆的 vmNode 外觀
  • course-env: 拓撲畫布外觀對齊防火牆頁,移除配額預估與互通警告
  • course-env: 編輯器改用防火牆拓撲的連線設計與設定
  • course-env: 對外服務改為 port_forward,移除 firewall_only
  • nat: 對外 port 自動配號池與入口主機設定
  • course-env: 機器互通改為顯式 peer_policy,沒畫線即隔離
  • teacher-judge: 執行結果檢查表格化並格式化指令 log 輸出
  • teacher-dashboard: add populated demo preview
  • teaching-classes: machine_nodes 回傳 template_name 供對照系統範本
  • resources: 課程機器顯示老師取的名字,不再顯示產生的主機名
  • provisioning: 建立時記錄登入密碼,快速練習主機名帶出機器名
  • course-environments: 基本資訊發布後可改,並新增說明文件
  • course-environments: 套用方式發布後仍可調整,並移除下架
  • ai-api: add integration docs and detailed key usage
  • course-environments: autosave drafts and publish without manual saving
  • firewall: 連線對話框機器下拉標註來源種類
  • resources: 資源詳情概覽也顯示對外網址
  • resource-mgmt: 資源管理列表也在 IP 底下列出對外網址
  • resources: 我的資源與進階設定看得到反向代理的對外網址
  • firewall: 拓撲上網線可隱藏,預設隱藏
  • resources: 機器來源徽章,我的資源與防火牆同一套標示
  • resources: 資源列表整列點擊進詳情頁
  • teacher-judge: 導師可讀 workflow 投影與 session 自動化防護
  • firewall: 老師可把機器開放給班級,學生從自己的機器發起連線
  • firewall: 防火牆納入師生關係,老師看得到並能管班級學生的機器
  • login: 登入頁回歸三色暈染主題與毛玻璃卡
  • firewall: 連線對話框改為意圖優先,方向由意圖決定
  • teacher-judge: 提案改以 server 端工具呼叫為唯一來源
  • courses: add simulated learning walkthrough
  • guide: expand contextual walkthroughs
  • teacher-judge: 提案 add 候選改為伺服器端解析 item id 與快照修復
  • teacher-judge: 附件評分表改為逐項隔離核查
  • teacher-judge: 收斂需求對話與檢查結果
  • firewall: 連線自動走最短側邊,不再固定右出左進
  • monitoring: 節點用量改整卡收合,移除異常優先的部分列表
  • firewall: 拓撲圖標示連線用途與方向
  • teacher-judge: 強化需求推導與檢查步驟驗證
  • monitoring: 節點用量表異常優先,正常節點收合
  • ai-api: 我的用量加逐日 Tokens 折線圖(稽核 #7)
  • users: 帳號來源標記,LDAP 帳號鎖住本地密碼欄位(稽核 #9)
  • scheduler: PUT /proxmox-config 改部分更新,排程頁拆卡標註生效時機(稽核 #16)
  • firewall: 拓撲頁規則面板升級為可管理工作區(稽核 #8 殘餘)
  • settings: 配額/排程/治理三頁點明分工並互連(稽核 #17)
  • monitoring: 監控頁減塊——警告與挖礦收進分頁、Top 5 縮欄(稽核 #24)
  • review: 主 badge 收斂成審核結果,套用進度降為灰字(稽核 #4)
  • forms: 頁內插入表單統一改 Modal(稽核 #11 #15 #22)
  • settings: 系統管理頁補欄位說明與術語統一(稽核 #12 #20 #21 #23)
  • quota-bar: 配額用量條加標題與說明,載入失敗不再無聲消失(稽核 #3)
  • review: 審核頁分頁角標顯示各狀態筆數,副標去掉已移出的請求類型
  • dashboard: 首頁待辦補挖礦事件來源(稽核 #1)
  • admin: 使用者管理與 IP 管理加前端分頁(稽核 #9 #10)
  • review: 審核頁移除統計卡與刪除申請,待審數改分頁角標(稽核 #27)
  • sidebar: 系統管理移至底部「管理員設定」入口,進入後切換專屬核心側欄
  • settings: 設定頁儲存列加 dirty 追蹤,未儲存跳離前攔截確認(稽核 R1)
  • ai-navigation: 以任務狀態追蹤申請機器流程,不再以頁面位置推算進度
  • teacher-judge: 支援腳本取證與導師審核模式
  • course-env: 教學環境規格解鎖,以範本規格為基準
  • template: 規格基準回填,克隆限師管並納入配額執法
  • ai-api: 我的用量統一整合兩種計算路由與細項紀錄,金鑰棄用與申請狀態上色
  • teacher-judge: 聊天主動核查提案流程,移除 workflow tool 死碼
  • gateway: replace FRP UI with WireGuard status
  • monitoring: reorganize AI usage dashboard
  • courses: add weekly student learning workspace
  • ai-api: 申請分頁改為 API Keys 右側「+ 新增金鑰」彈窗
  • assistant: AI 助手面板玻璃化,覆蓋層開啟時鎖住背景捲動
  • course-env: 學習環境編輯頁 stepper 改圓圈連線樣式並鎖定視口高度
  • requests: 我的申請列表併入帳號與 GPU 欄,表單體驗調整
  • teacher-judge: consolidate save and script creation flow
  • teacher-judge: simplify check creation flow
  • admin: 優化首頁與 AI 維運助手互動
  • admin: 管理者首頁改分層總覽,AI 回覆表格改用 UI 元件
  • teacher-judge: relax style gates and enforce rubric coverage in script generation
  • teacher-judge: enforce automatic check support before script generation
  • resource-detail: 對外服務卡片改以這台機器的網域為主
  • audit: 稽核日誌篩選改為即時查詢
  • resources: 主機開機自動啟動改由系統隨開關機自動對齊,不開放使用者設定
  • notifications: Web Push 背景推播,分頁關掉也能收到任務完成與提醒
  • teacher-judge: add script generation workflow states
  • ai-pve: add guest diagnostic summary tool
  • course-template: 課程環境可宣告「外網 → 機器」,每位學生各配一個網址
  • review: 審核頁排程人話化、長文字收合,分頁改用 SegmentedControl
  • course-template: 規格改滑桿,並補上克隆磁碟下限與儲存區容量把關
  • ui: 新增共用 SegmentedControl,AI 監控與 API 審核頁改用
  • monitoring: 強化管理監控與 PVE 快速檢視
  • ai-pve: 收斂 PVE 對話範圍與異常判定
  • sidebar: 側欄項目釘選功能
  • system: 系統設定的七個分頁升格為系統管理底下的獨立頁面,移除系統設定
  • ai: 優化 PVE 工具收集並加入教師對話摘要
  • jobs: 網頁端桌面通知:登入後詢問瀏覽器通知權限,背景時任務終態與新提醒發系統通知
  • resources: 規格調整改用拉桿
  • resources: 我的資源總覽分頁改版
  • resources: 進階設定改版:對外服務、防火牆、生命週期、開機、憑證、共享、標籤、轉範本
  • ai: 重整 AI API 金鑰管理頁面
  • ai: enhance monitoring dashboard and metrics API
  • spec-change: 核准後改由申請人套用,執行中的 VM 關機改規格再開機
  • resource: 整組操作放在群組列,環境內機器可看單台資訊
  • resource: 環境內機器與單機的操作對齊,規格鎖定改為真的擋
  • teacher-judge: 重整檢查工作區版面
  • teacher-judge: 腳本總覽新增重新命名功能
  • class: 讓班級狀態自己前進,並收斂分類與資訊欄位
  • guide: move user guide trigger into page header as icon button
  • teacher-judge: 自動核准腳本並加入修正重試流程
  • ai: update capabilities and improve layout for AiFloatingChat component
  • ai: explain the screen the user is on, and index what the platform can do
  • review: rebuild the batch page as class review, unstick the request page
  • teacher-judge: add chat attachments and creation modes
  • teacher-judge: streamline check creation and data upload flow
  • teacher-judge: improve rubric detectability workflow
  • frontend: 表單送出檢查改為聚焦未填欄位並標紅,不再反灰送出鈕
  • teacher-judge: 將評估摘要與來源整合至聊天室
  • publish WireGuard desktop client beta
  • teaching: 整班鎖定同一叢集,叢集內把學生分散到不同 server
  • teacher-judge: expand objective checks and rubric editor
  • teaching: 學生依叢集容量分配,單一學生的機器不跨叢集
  • frontend: 我的申請與申請表單 UX 改善
  • teaching: 課堂機器必須放在同一個叢集
  • placement: 群組 affinity 與 GPU 額度納入排程約束
  • 導入 i18next 多語系架構,前後端全面翻譯為英文/日文
  • course: let students mark assignment items complete
  • templates: 老師建範本、學生在「我的申請 › 範本開通」克隆
  • firewall: 拓樸圖拉線直接開啟新增連線對話框
  • admin-home: let the conversation take over the page while you ask
  • ai-assistant: gather requirements in conversation before planning
  • ai-assistant: fold the recommender into the assistant, drop its own UI
  • teacher-judge: extract AI check page and hide sidebar
  • ai-assistant: one assistant that navigates, plans a spec and fills the form
  • ai-navigation: step-by-step flows, conversation memory, real routes
  • desktop: replace FRP tunnel with WireGuard
  • wireguard: add desktop tunnel control plane
  • GPU 選項依範本叢集過濾、自動開機攔截 vGPU 啟動失敗
  • frontend: 資源管理表格比照我的資源改造
  • frontend: 我的資源表格欄寬固定與群組列整列開合
  • ai-pve: apply postgres identity prompt migration

修正 ​

  • firewall: 鎖定快速練習拓撲
  • firewall: 顯示課程拓撲連線
  • db: 認證後立即歸還 DB 連線,整班登入不再耗盡連線池
  • notifications: avoid repeated session expiry alerts
  • auth: 登入節流改依帳號計次,整班共用出口 IP 不再集體 429
  • scheduling: 排程不再把被關掉的申請單機器自動開回來
  • teaching: 無埠協定的課程連線不再送 dport 給 PVE
  • cleanup: LDAP TLS 最低版本設為 1.2,launcher 測試改綁 IPv6 loopback
  • cleanup: 全分支複審追加修正
  • ci: 建班腳本改用 LXC 映像當課程環境來源
  • cleanup: 遮蔽 regex 改為線性時間、修正過期的測試 monkeypatch 目標
  • cleanup: 移除 all 中已刪除的 CourseEnvironmentAudience、拿掉會逾時的動態 import 測試
  • ai-gateway: --start 不再預檢上游 /v1/models
  • ai-gateway: --init-env 換掉與 vLLM/master key 重複的舊 AI_API_API_KEY
  • ai-gateway: --init-env 寫入前檢查權限並顯示真正的失敗原因
  • 修正今天 DB 重構 review 找到的問題
  • db: 刪除流程不再回滾 IP 釋放;移除快速練習開放對象與死稽核值;補 updated_at onupdate
  • db: JSON 欄位改用 json 而非 jsonb,移除 preset CHECK
  • db: 狀態/列舉字串欄位補 CHECK 約束
  • db: 課程環境 node_key 補複合外鍵,週次指定機器需存在於班級
  • placement: 共享儲存以叢集為單位計算容量
  • db: resources 記錄所屬 PVE 連線,VMID 配發與查找不再猜
  • db: 補齊 user 外鍵 ondelete、範本 pve_vmid 改 partial unique、補缺漏索引
  • vllm: configure Nemotron Mamba cache dtype
  • monitoring: 監控 stack 支援 rootless Docker 的 socket/data-root 路徑
  • home: 首頁機器卡補上開機中(starting)狀態
  • gateway: 「重新同步」一併重建 nginx 的 Port 轉發設定
  • teacher-judge: 學生頁不再顯示腳本驗證的技術錯誤,放寬 evidence/raw 型別
  • guide: 導覽鈕只掛在頁首標題旁,手機寬度恢復顯示
  • onboarding: 引導精靈只在後端明確回 onboarding_completed=false 時顯示
  • error-state: 三頁載入失敗改用共用 ErrorState,Gateway 補上重試
  • proxmox: PVE CA bundle 的 HTTPS 請求改用非 X509 strict context
  • users: 使用者對話框改 portal 到 body,補 dialog 無障礙屬性
  • ai-api-keys: 篩選鈕與取消鈕改用 btn-secondary
  • a11y: 班級工作頁與 AI 檢查頁的內容區改用 div
  • course-topology: 唯讀拓撲推開太近的機器,連線標籤不再被蓋住
  • queue: address review findings on the arq migration
  • background: move heavy work to arq, leader-gate every lifespan loop, harden Redis client
  • 2026-09-22 全系統稽核修復(安全、流程邏輯、部署)
  • firewall: 額外封鎖網段的 out-DROP 排到 gateway:default 之前才會生效
  • teacher-judge: persist reviews for failed targets
  • ai-pve: vendor template UI helpers into tracked frontend service
  • teacher-judge: improve command failure evidence and raw log
  • teacher-judge: finalizer repairs legacy check plan before accepting prose
  • ai-help: 帳號設定與閘道的情境說明跟上新介面
  • class-workspace: 週次列改單欄時 grid-area 全部歸位
  • provisioning: keep and apply the login password of LXC clones created stopped
  • ai-api: show the currently configured base URL on credentials
  • resources: let the backend decide whether a request can be cancelled
  • quick-practice: finish reclaiming sessions that were ended early
  • audit: add missing course and quick-practice audit actions
  • teacher-judge: render optional cwd as Python None in compiled scripts
  • ai-navigation: drop the remaining quantifiers from the explicit-request regex
  • ai-navigation: remove polynomial-time regexes from phrase matching
  • ai-api: fix code viewport height to 15 lines
  • ai-api: refine code examples and stabilize dialog height
  • ai-navigation: align teaching workflows and shorten guidance
  • course-templates: align the documents field, name untitled drafts, trim list subtext
  • ai-help: add contextual help surface for /quick-create
  • migrations: 收斂雙 head 並確保 vm_requests.password 可空
  • resource: harden teaching display names and sync test mocks with Resource fields
  • resource: tolerate missing guest_os in resource public building
  • provisioning: prevent VMID and IP allocation collisions
  • resources: 群組列徽章 tooltip 帶入班級/環境名稱,修正空插值
  • machine-kind: 非本人機器之 tooltip 改為擁有者敘述,新增 otherOwnerHint 三語系鍵
  • resources: 老師擁有自己班上的班級機不再誤標成學生機器
  • db: vm_requests.password 回到 NOT NULL;一次性清理課程機器上舊的 firewall_only 規則
  • class-workspace: 環境預覽被 flex 壓成 0 高;資訊列改為每人/全班資源
  • lxc: sync platform SSH key on LXC start/reset/schedule paths
  • template: LXC 克隆後以 pct exec 注入平台公鑰至 authorized_keys
  • quick-practice: 套用方式成為唯一的可見度閘門
  • teacher-judge: 重試去重,避免重複錯誤與工具結果行
  • teacher-judge: 淘汰 success_criteria 欄位並調整潤飾與缺口提示詞
  • teacher-judge: refine 全部提案不可套用時不顯示面板,保留 chat 回覆
  • teacher-judge: align run_command exception repair contract
  • teacher-judge: 強化腳本品質與 coverage 修復流程
  • firewall: 上網線只藏機器連出去的出站線,對外開放照畫
  • resource-mgmt: 資源管理頁移除機器來源徽章
  • ai-help: sync monitoring labels with dashboard
  • teacher-judge: edit patch 補上執行資訊時清除過時 missing_information
  • teacher-judge: 收斂對話焦點規模並修復逾時 coercion 與參數缺口提示
  • teacher-judge: 修復 json_object 封鎖提案工具呼叫並補上失敗總結
  • ai-api: 金鑰卡片移除 Prefix 顯示,Base URL 改顯示 SkyLab 網域
  • contextual-help: 同步 AI API 我的用量元素與現行統一用量 UI
  • teacher-judge: 統一自動判定與缺少資訊回覆
  • firewall: 同一對節點之間的線各走一側,入站與出站不再疊成一條
  • firewall: 線上標籤改貼近所屬節點,不再互相重疊
  • tests: 修復 merge upstream/main 後的三處 CI 失敗
  • monitoring: 離線節點不可展開,趨勢無資料時不畫空圖
  • course-env: 儲存驗證失敗補 inline 錯誤訊息與 aria-errormessage(稽核 #26)
  • reverse-proxy: 「網址清單」正名「對外網址」並補一行用途說明(稽核 #13)
  • ai-api: 「刷新」改名「重新產生金鑰」並套 danger 樣式(稽核 #6)
  • tables: 表格補 min-width 讓橫向卷動生效,欄位不再互擠(稽核 R3)
  • network: separate publish targets from outbound firewall blocks
  • teacher-judge: 待更新項目不再外溢到未編輯檢查項目
  • frontend: .env.example 的 VITE_API_URL 預設留空
  • resource: 關機機器的 IP 回退到 ip_allocation 分配紀錄
  • jobs: 任務取消通知改用 info 藍樣式
  • review: 審核頁切換列時詳情欄捲回頂端
  • teacher-judge: refine generic command detection rules
  • admin: 對話輸入框收成單行
  • admin: 對話不再重複開場白,上排兩張卡等高
  • admin: 對話框改隨內容長,兩張卡的標題節奏對齊
  • teacher-judge: sync automation review state with rubric
  • audit: 日期篩選不可查今天以後的日期
  • teacher-judge: retry script generation and AI review call failures
  • audit: 日期篩選拿掉選擇器的 min/max 限制
  • audit: 日期篩選起始不可晚於結束日期
  • jobs: 幾秒內完成的任務也會通知;WS 重連改用最新 token;不安全來源給明確提示
  • audit: 補回已下線的 AuditAction 歷史值並同步 auditaction enum
  • resource-detail: 進階設定的 modal 改 portal 到 body,覆蓋整個頁面
  • network: IP 快取寫入失敗後 rollback,避免拓撲 PendingRollbackError
  • class-workspace: 上課環境的拓撲對齊課程環境的新樣貌
  • scheduler: 移除三個沒人讀的放置欄位,補齊五個讀得到卻改不了的
  • governance: 治理頁補上課程學習環境區塊,兩個欄位不再改不到
  • unify desktop sign-in and connection flow
  • refine desktop login connection action
  • restyle desktop connection button
  • use colorful SkyLab Connect app icon
  • make desktop download public and apply SkyLab branding
  • course-template: 側欄固定與畫布同高才會出現捲軸;映像清單改為各自載入
  • course-template: 還原角色欄位,側欄改為常駐可見的捲軸
  • course-template: 側欄移除角色欄位並收緊間距,正常情況不再需要捲動
  • course-template: 對外網址不可重複,側欄過長時就地捲動
  • course-template: 對外服務改為摘要列表 + 彈出設定
  • course-template: 對外服務的說明改寫得更明確
  • network: 反向代理改走統一發布路徑,補 NAT 清理與連線重疊檢查
  • ui: 側欄彈窗改 portal 到 body,防火牆規則面板改浮動卡片
  • course-template: 側欄標題不再重複顯示機器名稱
  • course-template: 側欄標題字級與斷字,移除方向說明
  • ai: 強化 PVE 對話歷史與 SSH 確認安全性
  • ai: 完成後端 AI P1 穩定性優化
  • security: 挖礦偵測 RRD 時間框隨視窗選擇,覆蓋率改由取樣間隔推估
  • governance: 閒置偵測依視窗選 RRD 時間框、重開機重算,新增閒置通知延遲設定
  • teacher-judge: simplify script rename workflow
  • ai: 修正 AI 導覽元素違反的兩條既有規則
  • network: 開機時一併回復被改弱的入站策略;AI 助手按鈕稍微透明
  • network: 拓樸規則改為同步,並將多機環境模板更名為學習環境
  • ui: 修正不存在的 --color-bg 變數導致輸入框變透明
  • ui: 修好三個壞掉的圖示,收斂金鑰篩選,AI 審核歸入審核群組
  • class: 修正每週內容跑版,收斂上課環境與班級總覽的版面
  • class: 修正排程星期、課次內容流失與精靈週次停留在草稿
  • placement: 讓 LXC 克隆的節點約束誠實,群組 affinity 改為叢集層級
  • db: 合併 tjsub02 與 tplcat02 兩個 migration head,縮短 tplcat02 revision id
  • navigation: remove stale courses route
  • requests: 範本回到申請表單的資源設定,範本要求 GPU 時才顯示並強制選擇
  • ai-navigation: drop the unused session id CodeQL flagged
  • resources: 刪機先標記申請單已消耗,排程器不再復活機器
  • ai-chat: parse GFM tables, and make long node listings readable
  • ai-assistant: make every step button do something, and loosen the layout
  • ai-assistant: keep the flow going after planning, and land the GPU choice
  • gateway: harden WireGuard backup collection
  • course: show published weekly PDFs without checks
  • desktop: restore About route and fallback
  • db: remove duplicate Python entrypoint revision
  • frontend: 未定義的 --shadow-xl 改為 --shadow-lg
  • frontend: 補回可點列失去的 hover 回饋
  • frontend: 新增 --color-primary-on-surface 修正品牌色文字深色模式對比
  • db: make dbc02 replayable, and add a safe SECRET_KEY rotation path

效能 ​

  • frontend: 首次載入瘦身,入口 883→404 KB、語系 1038→346 KB
  • jobs: 近期任務快照在 2.5 秒內共用
  • scheduling: 活單檢查沿用叢集清單狀態,節點沒變不寫 DB
  • db: 任務與告警清單常用的 created_at 加索引
  • resources: 資源清單與拓撲的 IP/DB 查詢改批次,IP 快取改獨立交易寫回
  • frontend: 分頁隱藏時暫停輪詢,建立中申請與子網狀態降低頻率
  • frontend: 自動刷新防重入、任務 WS 正常時停掉 REST 輪詢
  • resources: 關機警告改用批次 /resources/my/session-status
  • proxmox: PVE 設定與叢集清單改用行程內短暫快取
  • firewall: 拓撲圖只抓一次叢集清單並平行查詢各機器
  • compose,nginx: 補 restart 策略、拿掉 backend --reload、nginx upstream keepalive + gzip、靜態資源長快取、Postgres 記憶體參數
  • teaching: 班級列表改批次查詢,300 次查詢降到 4 次
  • gpu: GPU 管理頁的 Proxmox 查詢改為併發並加短期快取
  • teacher-judge: pipeline A/B/C low-risk optimizations
  • availability: 可用性月曆 lite 模式快取配置結果,面板改為背景更新

文件 ​

  • 清理過時與已完成的文件
  • style-guide: Dialog 補上 portal、陰影與無障礙規則
  • development: activate the venv before starting the backend
  • teacher-judge: 補上班級詳情回應完整形式(多台機器+連結圖譜)
  • teacher-judge: template_key/command_key 連結深度分析筆記
  • frontend: 新增樣式規範需求填寫範本,供前端登記各節要求與變數變更
  • 前端一致性與可用性稽核(28 項回饋逐條查證)
  • style: move frontend style guide into docs with dated filename
  • placement: 補上重構清場紀錄與最終測試數字(v1.3)
  • placement: 更新排程改善計畫的實作紀錄至 v1.2
  • repo: deployment/development/progress.md 移入 docs/
  • frontend: STYLE_GUIDE 補上表格的三條規則

維護 ​

  • monitoring: 系統健康狀態小卡等寬等高、依寬度自動排欄,任務表名稱與排程主次對調
  • frontend: 拿掉 index.html 的液態玻璃 HTML 註解,說明留在 _themes.scss 不外露
  • ai-judge: 檢查表助理空對話的輸入框移到面板底部,拿掉底部提示與輸入框陰影
  • ai-assistant: AI 助手開場貼近輸入框,能力說明改成圓點清單
  • ai-api: API 聊天的對話與輸入框撐滿聊天區,不再收成置中窄欄
  • quick-practice: 快速練習頁拿掉頁首副標題
  • class-workspace: 班級啟用後分頁改用分段切換,課堂監看工具列對齊
  • frontend: 空狀態有下一步時都帶動作鈕,全站對齊
  • home: 首頁與快速練習頁空狀態改用共用 EmptyState,研究環境入口直接開申請表單
  • ai-api: API 聊天分頁樣式對齊其他分頁與共用元件
  • 測試檔改用描述性名稱並移除審查內部編號
  • cleanup: 收尾跨組修改並修正整理後失敗的測試(階段四)
  • cleanup: 跨單位修改、合併後續與 vllm-service 舊 Gateway 移除(階段三)
  • cleanup: 全專案整理與 bug/安全修復(階段二:各單位修復與整理)
  • db: ai_template_call_logs 併入 ai_api_usage
  • db: proxmox_config 移除舊版單連線欄位
  • db: JSON 文件欄位統一為 jsonb
  • db: audit_logs.action 由 PG enum 改為 VARCHAR
  • db: vmid / resource_vmid 雙欄收斂,修正刪除防線與稽核清除範圍
  • db: 移除死表與死欄位
  • sidebar: AI 使用監控移到「監控與日誌」並改名 AI 用量監控
  • monitoring: 憑證名稱斷言改用 token 比對避開 CodeQL 誤報
  • monitoring: 監控 stack 拿掉 Uptime Kuma 與 Prometheus 告警規則
  • 修正兩支跟不上實作的既有失敗測試
  • ai-judge: 旋轉圖示斷言改對 MIcon 的 micon-spin
  • icons: AI 機器人圖示統一為 support_agent
  • home: 學生首頁卡片重新設計
  • dashboard: 管理員首頁資料不完整提示併入頁首更新時間
  • nginx: 50x 頁標題改紅色,與心跳線同色系
  • icons: MIcon 新增 spin prop,處理中圖示統一轉圈
  • layout: 路由載入層移除底色,避免在漸層背景上露出色塊
  • 清除 CodeQL Standard findings(未用匯入/全域變數、空 except、無效敘述等)
  • nginx: 50x 頁心跳線與告警燈改用淡紅色
  • nginx: 50x 頁改成伺服器塔+心跳監測線場景
  • nginx: 50x 錯誤頁比照 404 加動畫(雲朵浮沉、淡雲漂移、閃電閃爍)
  • frontend: 錯誤文案收斂為統一句,新增共用 ErrorState 元件
  • loading: 3D 方塊收尾改淡出,移除底色遮罩
  • governance: 精簡治理設定的說明文字
  • quotas: 配額覆寫表改用共用表格與按鈕 mixin,對話框對齊 Dialog 規範
  • settings: PVE 連線與節點改成清單列,對話框對齊 Dialog 規範
  • ip: 備註欄移到表格最後一欄
  • gateway: SSH 連線設定的動作鈕移到卡片標題列
  • domain: Cloudflare 連線狀態併入分頁列右側
  • gpu: 移除映射鈕改用危險款圖示鈕 mixin,補上 aria-label
  • ai-judge: 檢查清單改用共用空狀態與釘選鈕,被擋住的製作鈕改為說明原因
  • jobs: 任務詳情改成標籤在上、值在下的欄位格線
  • 全專案清理重複程式碼、死碼與多餘註解
  • perf: make the double-click dedup test robust on small CI runners
  • perf: move the fan-out stress tests onto the queue path; local runner honours Retry
  • remove dead routes, unused services and the unwired TOTP module
  • services: finish moving background work off the API process and untangle cross-service helpers
  • compose: nginx 對外 port 改為可設定的 NGINX_HOST_PORT,預設 8082
  • deploy: 更正 runs-on 註解,runner 名稱不是 label 需另行加 skylab-main label
  • 對齊 2026-09-22 稽核修復後的行為,修 CI 兩支失敗與一支時序 flaky
  • deploy: 部署改為只允許手動觸發,runner 改指定 skylab-main
  • stop tracking docs/chen_yang, keep local files
  • network: remove legacy FRP tunnel stack
  • firewall: 移除「開放給班級」,老師一律改用「僅開放防火牆」
  • teacher-judge: retire script generation and review path
  • teacher-judge: hide executor transport from LLM prompts
  • reverse-proxy: 對外網址列動作改圖示鈕,刪除確認改用 useConfirm
  • ip: IP 管理表格固定欄寬,子網設定表單對齊 Dialog 規範
  • domain: 網域管理分頁改 SegmentedControl,表單與列動作改用 mixin
  • users: 使用者管理刪除確認改 useConfirm,表單與列動作改用 mixin
  • requests: 申請表單改用 PasswordInput,兩欄高度改由格線分配
  • review: 批次審核詳情自成捲動區,審核列固定在外;窄螢幕直向堆疊
  • templates: 範本表單改 FileDropzone 多檔上傳,刪除確認改用 useConfirm
  • account: 帳號設定收成「個人資料/外觀」兩頁,密碼與危險區域併入個資
  • ai-api: AI API 與審核頁改用共用按鈕、表單與分段控制
  • ai: 助手頭像統一為 support_agent,首頁助手標頭透出玻璃
  • gateway: 移除日誌與設定檔的手動刷新鈕,日誌改自動更新
  • dashboard: 管理員首頁移除「重新檢查」鈕,待辦改自動更新
  • i18n: 清單串接改用 joinList,依語系給分隔符
  • ui: 可點卡片 hover 移除藍框,保留淡入淡出
  • ui: 玻璃卡內的內容區塊一律白底細框
  • teacher-judge: complete P1 dead-code cleanup
  • remove docs/chen_yang from repo tracking, keep local copy
  • course: remove the unused Course Lab one-click deployment
  • remove AI_PVE_template from repo tracking, keep local copy
  • ui: 移除頁首副標與清單說明行,刪除相關設定互連列
  • i18n: unify "learning environment" wording as "teaching environment"
  • remove ai-navigation-demo prototype
  • quick-practice: rename "quick create" labels to "quick practice"
  • db: merge alembic heads osid01 + tjmm01 into mrg03 (no-op)
  • templates: 機器範本頁整修——移除重新整理鈕、徽章與動作鈕收斂 mixin、列選單 portal 化修正裁切
  • styles: badge 變體命名歸位規範五款(badge_ok/badge_err/badge_error 改 badge_success/badge_danger)
  • styles: 新增 btn-icon-secondary mixin,資源列表動作鈕統一白底描邊並補 aria-label
  • resource-detail: 迷你拓撲圖例與畫布底色對齊防火牆頁(flow token、文案、chip 樣式)
  • ui: 提示列 icon 對齊文字首行光學置中(hintLine、infoBox)
  • resource-detail: 規格分頁套用變更按鈕改靠卡片右側
  • resource-detail: 憑證卡整理——按鈕改 btn-secondary 靠右、間距 token 化、兩欄卡片等高、移除公鑰冗餘說明
  • firewall: 拓撲來源徽章置中騎卡片上緣,節點加高上內距,底色改以透明度調淡
  • guide: 移除冗餘 fallback 色碼,樣式規範補導覽 z-index 保留區段
  • styles: form-control 水平內距抽出 $form-control-padding-x 共用變數
  • firewall: 對外暴露數與方向標示同步亮藍,老師開放框色改用所有權群色
  • firewall: 圖例與提示字級改用 token,導覽示範連接點移除寫死色碼
  • styles: 表單控制項與連結 chip 收斂共用 mixin(form-control、btn-ghost)
  • machine-kind: 變體展開為 mine/other 兩類,移除元件內自訂屬性 --kind
  • machine-kind: 移除 size prop 並同步更新五處呼叫端
  • machine-kind: 徽章尺寸統一採用 badge-base mixin,內距對齊狀態標籤並移除 sm 變體
  • ui: 稽核批次——dialog 關閉鈕收斂 btn-dialog-close、MIcon outlined 預設
  • toast: sonner 樣式統一——按鈕吃 btn mixin、色票對齊主題
  • machine-kind: 徽章顏色收斂為「我的/別人的」兩群
  • course-env: 移除編輯器裡沒人用的 createPortal import
  • connection-dialog: 「怎麼開放」改為分段切換,拿掉說明
  • connection-dialog: 表單收斂——port 欄位定寬、方向只講單向/雙向、拿掉多餘說明
  • class-workspace: 環境預覽畫布高度調為 360–520px
  • class-workspace: 環境預覽畫布加高(420–600px)
  • course-env: 畫布註解對齊移除小地圖後的實際內容
  • course-env: 編輯器收斂——儲存橫幅只在失敗時出現,移除側欄對外服務、小地圖與互通下拉
  • connection-dialog: 送出改為可注入,支援課程環境模板模式
  • teacher-judge: 直接保存腳本結果並移除執行期 AI 判讀
  • teacher-judge: split backend test suites and simplify AiJudge execution UI
  • provisioning: 統一機器登入密碼的產生與保存
  • student-ui: 首頁與課程頁抽成 HomeOverview 與 CourseCard,加入最近使用的機器
  • batch-review: 移除班級審核的四張統計卡
  • resources: 機器來源獨立成欄,兩張資源表對齊同一組比例
  • student-ui: 首頁改名與版面統一,導覽入口改回小圖示
  • course-environments: 移除建立新版本
  • form: textarea 全站固定高,resize 預設收斂到 _reset
  • firewall: 連線對話框移除「你要做什麼?」標題,卡片自明
  • firewall: 對外開放連線改亮藍,與內部互通的灰拉開
  • ai-api-review: 審核狀態切換器加各狀態筆數 badge
  • resource-detail: 操作紀錄筆數改掛分頁切換器 badge
  • ui: 移除複述標題的頁面副標與卡片說明
  • resources: 移除機器標籤功能
  • monitoring: focus usage dashboard on API key traffic
  • jobs: 背景任務頁整修與標籤永不換行
  • monitoring: 節點趨勢固定最近 1 天,時間範圍切換器移除
  • resource-detail: 頁首返回鍵對齊、分頁改 SegmentedControl 與卡片標頭精簡
  • review: 班級審核與 GPU 管理統計卡收斂
  • ai-api: 分頁對齊金鑰管理的 SegmentedControl、統計卡收斂
  • styles: 新增六款按鈕 mixin,全站按鈕複製體收斂
  • dashboard: AI 助手標頭精簡為輸入框上方識別列
  • monitoring: 時間切換器移入節點用量卡、運行狀態卡對齊量測卡
  • teaching: 課程營運 stepper 箭頭分段、彈窗對齊規範與樣式清理
  • teacher-judge: 提案階段 success_criteria 改為選填並補齊 timeout 預設值
  • teacher-judge: 補齊 ai 判定模式重送候選的 success_criteria
  • teacher-judge: 移除檢查項目 description 欄位並強化提案工具解析
  • monitoring: simplify AI usage overview
  • firewall: 抽出連線對話框的 payload 與送出邏輯並補上測試
  • monitoring: 警告列圖示與文字間距拉開至 12px
  • monitoring: 警告列圖示改對齊第一行中線
  • monitoring: 警告列圖示改垂直置中
  • monitoring: 移除頁籤面板內重複的卡片標題
  • monitoring: 頁籤貼齊卡片左緣,卡片左上角改直角密合
  • monitoring: 警告/挖礦頁籤改資料夾式,選中頁與面板同一塊面
  • monitoring: 警告/挖礦切換改底線頁籤,緊貼所屬面板
  • monitoring: 離線列補展開箭頭佔位,節點名稱欄對齊
  • jobs: 任務篩選改用共用 SegmentedControl(稽核 #25)
  • class-mgmt: 班級工具列左右對調,狀態篩選在左、搜尋在右
  • class-mgmt: 班級狀態篩選改用共用 SegmentedControl
  • i18n: 抽 utils/formatDate 收斂全站寫死 zh-TW 的日期格式化
  • teacher-judge: 收斂評分表為單一 AI Chat 流程
  • teacher-judge: 術語統一,評分表全面改為檢查表
  • ai-api: 申請紀錄已通過狀態改回一般樣式,不上綠色
  • template-ui: 設定選項文案改為標題加說明
  • i18n: 三語系鍵同步本輪 UI 調整
  • dashboard: 首頁卡片改用 style guide 玻璃卡
  • ai-monitoring: 詳細區工具列切換器移到搜尋框左側,失敗列取消紅底
  • ai-keys: 金鑰管理改為純表格列表
  • resource-mgmt: 批次與單台刪除改走共用 useConfirm
  • resources: 我的資源名稱欄寬收斂、確認流程整合
  • confirm: 確認彈窗全站統一 useConfirm,玻璃卡為基準
  • admin: 待辦列改單行、兩層並排
  • admin: 待辦改按急迫度分層,消掉告警與異常的重複
  • admin: 首頁與 AI 對話改用系統既有的卡片與對話語彙
  • admin: 首頁移除主控台與資源水位,版面收緊成兩區
  • ai: 「拓撲圖」已出現在前端語系檔,從 contextual help 的歸納豁免清單移除
  • resource-detail: 移除進階設定的「對外服務」卡片
  • network: 三份連線/發布/規則表單統一為一份 ConnectionDialog
  • models: 移除零使用的分組狀態介面
  • ui: AI 助手去除裝飾圖示,個人頁面版面細修
  • course-ops: 課程操作訊息改走 toast,學習環境列表與拓撲對齊全站樣式
  • ai-keys: 金鑰管理改左右分欄,狀態切換改用 SegmentedControl
  • 同步 bun.lock 並補上 vLLM 預設模型名稱
  • colors: 移除 --color-warning,警示色統一走 --color-danger
  • colors: 寫死色碼收斂回主題變數
  • ai-chat: AI 助手浮動按鈕改為純圖示
  • loading: 學生端載入狀態統一為共用 LoadingState
  • reverse-proxy: 拿掉分頁副標與「反向代理怎麼運作」說明,改成清單卡片排版
  • resources: 進階設定拿掉備註只留標籤,轉成範本移到資源列表的更多選單
  • settings: 配額管理併入系統設定分頁
  • quality: 清除 Code quality 第二輪的 Python 發現與 5 項 AI 建議
  • quality: 清除 CodeQL code-quality 掃描的全部 79 項發現
  • template: 發布改成主要按鈕,移除沒有範本時的提示
  • template: 收斂多機環境編輯器的區塊與比例
  • class: 拓撲卡去掉重複說明,畫布還給主體高度
  • class: 統一課程環境選擇器,收斂環境模板頁的密度
  • style: 一鍵建立的表單改用全站共用的欄位樣式
  • class: 概覽收成三塊,兩個殼的視覺語彙對齊
  • teacher-judge: simplify check session workflow
  • teacher-judge: align script overview wording
  • teacher-judge: align check terminology and validation
  • frontend: 表頭改對齊圖示左緣,不再縮進到文字起點
  • frontend: 表格名稱欄表頭文字對齊列內主文字
  • placement: 修正重構後殘留的未使用匯入與匯入順序
  • placement: 清掉重構後的孤兒函式,鎖住群組凍結行為
  • deps: 更新 desktop-client 套件並修正 element-plus 2.14 的 row 型別
  • deps: 更新前端套件並改用 import.meta.dirname
  • deps: 更新後端套件並相容 FastAPI 0.141 的 lazy include_router
  • placement: 預覽與核准統一為同一套決策,移除未接線的 local search
  • placement: 清除死碼與假策略切換,補上 GPU 退回把關
  • 升級 github/codeql-action 至 v4
  • users: email 重複的兩個斷言改為 zh-TW 預設訊息
  • deps-dev: bump ip-address in /desktop-client (#249)
  • db: tplgpu02 改接在上游 wgpeer01 之後,migration 鏈恢復單一 head
  • ai-pve: put the send button beside the input, shrink the chrome
  • ai-pve: tighten the ask box, drop the log heading, shorten the log
  • admin-home: fix the type scale and the stretched hero
  • ai-pve: drop the sidebar entry, render the replies as markdown
  • ai-navigation: fold "確認並送出" into opening the form
  • ai-assistant: open the form first, then let the AI fill it in
  • frontend: remove legacy course learning pages
  • frontend: 清除 StudentHomePage 搬移後的孤兒舊檔並修 shadow token
  • frontend: 清除 npm 殘留鎖檔、openapi 快照與孤兒 hook
  • repo: 移除已完成遷移的 frontend_old
  • repo: 根 package.json 名稱由模板預設改為 skylab
  • repo: test_vllm_service_api.py 歸位到 vllm-service/
  • repo: 舊版 README 截圖 img/ 併入 docs/
  • repo: gitignore 補上 .venv 與 ai-template-recommendation
  • frontend: 移除 PageHeader 的 titleExtra 與殘留樣式
  • frontend: 移除頁首與標題重複的小標
  • frontend: 表格系統一致性改版與頁面標題對齊 (#243)
  • frontend: 頁面 h1 與 sidebar 名稱對齊
  • frontend: 申請表單送出中的沙漏加轉圈動畫
  • frontend: 我的申請表格改版與全站展開區白底統一
  • frontend: 全站列表表格名稱欄移除圖示、gap 統一 16px
  • frontend: 使用導覽壓暗聚焦區以外的畫面
  • frontend: 表格列 hover 改為「可點才變色」
  • frontend: 學生首頁其他使用情境改版
  • frontend: AI 檢查頁排版精簡與配色 token 對齊
  • frontend: 班級管理頁首返回鍵樣式與文案統一
  • frontend: 班級管理狀態標籤改為全站通用的填色式
  • frontend: badge_muted 統一寫法並改用狀態灰
  • frontend: 學生首頁快速練習區塊移出資源卡片區
  • frontend: 移除班級空狀態按鈕與建班頁 backLink/eyebrow
  • frontend: 表格列 hover 改用專屬 --color-row-hover 與表頭區隔
  • frontend: 學生首頁 needCard 改為彈性寬度
  • frontend: 學生 dashboard 拆分首頁與課程總覽頁
  • frontend: dashboard 依身分拆分子資料夾
  • api: remove dead and duplicated routes, wire up token revocation
  • db: retire dead schema objects and realign the migration chain

2026-08 ​

新功能 ​

  • frontend: 表單送出時未填欄位改為紅框並定位游標
  • environment lifecycle, reference protection and practice controls
  • ai: teach the planner what a template is and where it comes from
  • requests: a template is a source, not a fixed spec
  • templates: let teachers open a template for student self-service
  • course-env: scope quick-practice environments to an audience
  • frontend: sidebar 手機/桌面切換斷點改為 1024px
  • ai-pve: consolidate chat and add PostgreSQL prompt guidance
  • unify teaching workflows and desktop connect experience
  • frontend: 對話框統一離場動畫
  • complete multi-machine environment lifecycle
  • ai-pve: support three template targets
  • teacher-judge: refine rubric naming and session actions
  • teacher-judge: merge rubric editor into AI check workspace
  • frontend: streamline student course machine access
  • resources: allow after-class machine practice
  • course: create student course shells for classes
  • teacher-judge: refine upload and rubric workspace flow
  • teacher-judge: refine rubric detection workflow
  • 申請列表補上「機器已建立但維運失敗」的狀態與引導
  • LoadingState 換用 3D 方塊堆疊動畫
  • 路由載入動畫改為覆蓋整個 main 的遮罩
  • 新增共用 PageHeader 元件,全站頁面標題列統一改用
  • 提醒整合進 Sidebar 背景任務中心,通知來源單一入口
  • /ws/jobs 快照附帶學生提醒,供前端即時接收
  • launch and manage multi-machine practice environments
  • preview grouped machine environments
  • 申請表單 LXC 映像友善命名與 -GPU 標記,新增 VM/LXC 自動判斷建議
  • 反向代理規則表單抽成共用 Modal,資源詳情進階設定可直接管理網址
  • teacher-judge: unify rubric polish workflow
  • placement 模板節點約束——申請只落在拿得到模板的節點
  • teacher-judge: refine session rubric ownership and AI workspace
  • frontend: wire student home to live course data
  • course: connect student courses to teaching classes
  • teaching: add live classroom resource usage
  • docs: add multi-machine practice environment design proposal
  • 範本政策(密碼/GPU)、icon 與使用手冊附件、克隆體驗改版
  • frontend: add classroom resource heatmap
  • navigation: route users to role-specific teaching entry points
  • teaching: add guided class setup workflow
  • dashboard: add teacher and admin home workflows
  • student: focus courses on tasks and scheduled machines
  • guide: add contextual student walkthroughs
  • student: add course-focused dashboard flow
  • course: expose approved AI tasks to students
  • teaching: complete class resource governance flow
  • GPU 申請支援 vGPU mdev profile 與 SR-IOV 容量計算
  • 配額上限支援 0=無限制(不執法)
  • 申請表單依範本規格帶入預設值與磁碟下限
  • Windows 範本支援 cloud-init 重設與帳號欄位調整
  • 克隆機隨機登入密碼與轉範本前 cloud-init 重設
  • frontend: 審核頁加「已過期」分頁
  • frontend: 申請列表與審核頁顯示已過期狀態
  • scheduler: 把申請逾時過期掛進 run_scheduler tick
  • vm-request: 加逾時申請自動過期的協調 service
  • vm-request: 加逾時申請查詢與過期標記的 repository 函式
  • vm-request: 新增 expired 狀態與 vm_request_expired 稽核動作
  • frontend: IP 管理移至系統管理並補回子網設定表單
  • 支援多組獨立 PVE 連線(多 node/多叢集)

修正 ​

  • review pass over the template and audience work
  • frontend: 頁面留白歸零斷點跟進 1024px
  • ai-pve: resume confirmations and align request timeout
  • ai-pve: support optional targets and hot reload
  • ci: merge remaining alembic heads
  • teacher-judge: avoid polynomial regex backtracking
  • remove duplicate quick practice unique constraint
  • teacher-judge: update pin icon and rename refactor action
  • 補上 placement 測試對 allowed_template_nodes_for_request 的 mock
  • migration 改用 DROP INDEX IF EXISTS,乾淨資料庫不再因索引不存在而失敗
  • 範本克隆 vGPU 規格預設帶入最小可建立規格,無可用時顯示記憶體不足
  • 管理功能路由與側欄項目僅 admin 可見,學生無法直達管理頁
  • LXC 克隆啟動後套用使用者自訂密碼,Course Lab 沿用範本內建帳密
  • VMID 僅對管理員/老師顯示,學生介面隱藏
  • icon 本地預覽改為檔名顯示,斷開 file→objectURL→src 資料流
  • icon URL sanitizer 的 blob 分支改嚴格 regex 驗證
  • 範本 icon XSS 防護(CodeQL js/xss-through-dom)
  • 修復上游 CI——migration 樹收斂與 ReDoS
  • 修正上游合併後遺症
  • teaching: preserve structured capacity issues
  • security: sanitize capacity preview errors
  • security: prevent class exception detail exposure
  • 稽核操作者歸屬、AI 上游錯誤回 502 與側欄無障礙名稱
  • init 快照撞 qmstart config lock 時重試
  • 重建 teaching/access.py 修復資源詳情 500
  • frontend: createSessionId fallback 改用 crypto.getRandomValues
  • models: proxmox_nodes.connection_id 外鍵補上名稱與 ondelete=CASCADE
  • jobs: 過期申請不再靜默顯示成等待中

效能 ​

  • frontend: buffer classroom heatmap updates

文件 ​

  • document multi-machine environment status
  • ux: add student flow audit and demo
  • 補 VM 申請逾時自動過期的實作計畫
  • 補 VM 申請逾時自動過期的設計
  • 補 IP 管理子網設定表單的設計與實作計畫

維護 ​

  • templates: templates can no longer require a GPU
  • templates: trim non-essential fields from the VM-to-template form
  • course-env: drop the unused multi-machine environment code
  • frontend: course-operations 依頁面拆分子資料夾
  • frontend: 主題色修正與按鈕漸變預設
  • course-operations: 班級管理列表改版與資料夾清理
  • 空狀態極簡化——移除說明文字、垂直置中並放大
  • AiPve/TeacherDashboard/CourseCms 改用共用頁首與空/載入狀態
  • 各頁面表格抽共用、色彩全面 token 化與 overlay 歸位
  • 共用元件色彩 token 化與濾鏡/層級歸位
  • course-operations 家族全面歸隊全站設計系統
  • 樣式基礎建設——五色制 token、共用 mixin 與規範修訂
  • 側欄首頁一律顯示「首頁」,不再依角色改名
  • 移除 RoleDashboardPage,首頁改由路由層依角色分派
  • 頁面容器統一改為滿寬,STYLE_GUIDE 新增頁面版面規範
  • Admin/Teacher 首頁 SCSS 由單行壓縮展開為多行格式
  • 移除舊版 DashboardPage,StudentHomeNewPage 改名 StudentHomePage
  • 舊前端文案「Root 密碼」統一改為「密碼」
  • migration 移除 teacher_judge_sessions.selected_file 殘留 unique 索引,對齊 model 定義
  • ui: 抽取共用 LoadingState 元件並整理介面文案
  • frontend: remove demo-only data and flows
  • frontend: stabilize local demo tooling
  • frontend: 全站空狀態統一改用共用 EmptyState 元件
  • 移除 script deploy 功能與 AI 範本 capability catalog,整理頁面結構

2026-07 ​

新功能 ​

  • update practice template design documentation with new usage rules and service whitelist
  • update course label to indicate informal status in sidebar navigation
  • add practice template design documentation for n8n and Database environments
  • add migration scripts for reconciling and restoring resource-execution markers
  • update teaching panel label to indicate informal status
  • simplify template visibility logic and remove group ID handling from templates
  • add position coordinates to course environment nodes and update related services
  • update default values for course environment edges and enhance validation
  • add course environment management and class capacity reservation services
  • teaching-classes: add batch-job index for teaching class machine nodes
  • classroom: enhance presence and session management
  • teaching-classes: implement teaching class orchestration features
  • implement course template management with local storage integration
  • add course template management and editor pages
  • vllm: add LiteLLM migration scaffolding
  • Integrate start and end date props in AvailabilityPanel and update related logic
  • Add credential reminders for VM and LXC configurations in request forms
  • Extend availability period to 90 days across VM request schemas and services
  • Enhance AI recommendation system with form context and scheduling options

修正 ​

  • restore template and course environment saves
  • 補回側邊欄權限群組過濾

維護 ​

  • replace groups with formal classroom workflows
  • update terminology from "環境模板" to "課程環境" across multiple components
  • enhance class management and template editor UI for better usability
  • update course template management and editor pages for improved clarity and functionality
  • Remove auto advice feature and related styles from RequestFormPage

2026-06 ​

新功能 ​

  • frontend_new: access token 到期前自動以 refresh token 續期
  • add AI template recommendation service with chat, recommend, and usage tracking methods
  • enhance VM request and resource schemas with new status handling
  • 新增VLLM設定的monkeypatch函數以支援測試
  • 更新模型匯入,新增教師評分檔案相關類型
  • 擴展VM請求狀態,新增provisioning和running狀態,更新相關類型和元件
  • 更新AI評分管理功能,新增評分表、收集腳本與腳本執行的管理介面
  • add teacher judge file upload and analysis types, endpoints, and tests

修正 ​

  • frontend-old: polyfill crypto.randomUUID for HTTP non-secure context
  • nginx: /old/ 將 set 移到 rewrite 之前避免 uninitialized variable 500
  • frontend-old: 修正部署在 /old/ subpath 下載入失敗
  • nginx: 將 proxy_pass 改為 runtime DNS 模式避免 startup emerg
  • ci: 修正 deploy-pve-test 觸發條件與 runner 標籤對應實際環境
  • restore _migrate_request_to_desired_node re-export in coordinator
  • resolve all 179 CodeQL code-quality findings (maintainability + reliability)
  • ci: 修正 PR #166 四項失敗檢查
  • security: 修正 GitHub Security 全部開放警示
  • resolve ruff import sorting errors
  • 刪除執行中資源前確實停機,並禁止取消已開通的 VM 請求
  • 修復安全性與併發問題(12 處)並補上回歸測試
  • 更新biome自動修正工作流程以正確處理鎖定檔和推送邏輯
  • 更新依賴安裝步驟以移除鎖定檔,確保在Linux環境中正確解析

維護 ​

  • polyfills: if 條件壓回單行配合 Biome formatter
  • deps: bump the uv group across 2 directories with 2 updates
  • 更新所有相依套件到最新版
  • AvailabilityPanel: update date range selection logic and remove time pickers
  • clean up import statements in capability_catalog, recommendation_service, vm, and test_template_intent_flags
  • deps: bump the npm_and_yarn group across 2 directories with 1 update

2026-05 ​

新功能 ​

  • normalize VMRequest status and update frontend assets
  • 支援孤兒 VM 清理、SSH PTY 互動式部署及前端多項改善
  • create migration to enforce unique index on ai_api_credentials.api_key_prefix
  • drop legacy NAT unique constraint and update VMID handling in models
  • remove obsolete cleanup relations migration file
  • enhance Proxmox and VM request models with new configurations and properties
  • Refactor VM ID handling and improve logging in provisioning and tunnel proxy services
  • Enhance ProxmoxStorage and ScriptDeployLog models with foreign key constraints
  • Add resource_vmid field to multiple models and update related logic
  • Normalize resource relationships and enhance database constraints
  • frontend_new: add AI management page
  • frontend_new: add batch review page
  • frontend_new: add AI monitoring page
  • frontend_new: add jobs overview page
  • frontend_new: add IP management page
  • frontend_new: add GPU management page
  • dashboard: redesign quick start with course cards and template gallery
  • add persistent dismiss to session warning dialog
  • make expiry_warning_hours admin-configurable
  • add batch_job_id to resources and fix group VM behavior
  • desktop+backend: expiry warnings on desktop client + personal status mapping
  • add current request strategy documentation for VM/LXC applications
  • add window availability request handling and response models for VM/LXC applications
  • add comprehensive analysis of existing AI features and user experience in Campus Cloud
  • enhance quick template request handling and logging improvements
  • implement quick template request mode for VM/LXC applications
  • web: warn students 24h before VM expiry

修正 ​

  • 修正 Windows 本機開發 WebSocket WinError 121 問題
  • 後端重啟時清理殘留的 running 部署任務
  • address copilot review feedback
  • frontend: satisfy biome checks
  • backend: unwrap AI monitoring user rows
  • address Copilot review feedback
  • desktop: fix LogController missing replies and add persistent warning dismiss
  • biome format and declare vm_requests window indexes in model
  • add resource_extend_session to AuditAction enum
  • 有排程的批量建立資源預設不自動開機
  • improve code readability by formatting multiline statements in ApplicationRequestPage and vite.config

維護 ​

  • 連同 package-lock.json 一起刪除,避免 bun 從舊 lockfile migrate
  • deps: bump the npm_and_yarn group across 3 directories with 2 updates
  • deps: bump idna in the uv group across 1 directory
  • frontend_new: wire admin pages into sidebar
  • frontend_new: refine shared UI helpers

2026-04 ​

新功能 ​

  • frontend: add quick-start helpers and refine create flows
  • 新增工作類型 "deletion" 至 JobKind
  • VM 刪除背景化 + 排程超時警示
  • rewrite desktop client as Electron + Vue 3 and wire download flow
  • script-deploy: 持久化部署 log 並提供 admin 檢視頁
  • add batch VM operations (start, stop, shutdown, reboot, reset, delete)
  • enhance VM migration job handling and user deletion
  • implement persona presets and resource baselines for improved recommendation accuracy
  • enhance ConnectionDialog to include admin role checks for gateway configuration
  • add cancel functionality for VM requests
  • add query keys for API requests and implement resource payloads
  • Implement network services for Gateway VM management
  • Add pre-launch checklist and completeness assessment for VM placement system
  • Enhance VM request review and migration job management
  • enhance storage management and placement logic for VM requests
  • enhance VM request review functionality with new context and migration fields
  • enhance VM request handling with overlapping window checks and improved placement logic
  • restrict VM request and application access to student users only
  • enhance availability request logic and improve slot selection handling
  • implement VM request provisioning updates and enhance request review process
  • normalize placement strategy to priority dominant share across configurations and update related components
  • add VM request availability feature with frontend and backend integration
  • redesign admin/proxmox as 3-tab layout with node/storage management
  • add node/storage CRUD and sync-now endpoints to proxmox-config API
  • update proxmox_node repo with merge-based upsert and update_node
  • update proxmox schemas with NodeUpdate, StoragePublic/Update, SyncNowResult
  • add ProxmoxStorage repository
  • add ProxmoxStorage model and migration
  • add priority field to ProxmoxNode model and migration
  • add Redis-based rate limiting for AI API requests
  • Enhance resource management by adding support for LXC and VM types, improving analytics, and refining UI elements
  • Add VM quantity support and expand template functionality in simulator
  • implement AI API key authentication dependency and add test database fixtures

修正 ​

  • ci: ruff organize imports on test_recurrence
  • address copilot review feedback
  • ci: biome organize-imports + format on groups detail
  • ci: align FK ondelete + drop duplicate BatchJob TS types
  • ci: merge alembic heads + biome formatting
  • frontend: align job/resource types after ntubclass merge
  • frontend: adjust OpenAPI TOKEN typing for audit log export
  • rewrite admin migration jobs route with UTF-8 encoding
  • network: allocate static IP for service-template LXC deploys
  • vm-request: auto-run service template install script on approval
  • pass count to delete confirmation title i18n interpolation
  • add node.id None guard in check_nodes; use saved_storages count in sync-now
  • use getNodes (GET) instead of checkNodes (POST) in useQuery
  • move HTTPException to top-level import in proxmox_config routes
  • update upsert_nodes docstring to include is_online and last_checked
  • add session.flush() in upsert_storages consistent with proxmox_node pattern
  • add range validation ge=1, le=10 to ProxmoxNode.priority

文件 ​

  • Add backend future directions and maintenance guidelines

維護 ​

  • deps: bump follow-redirects
  • deps: bump pytest in the uv group across 1 directory
  • enhance AI API approvals page with improved layout and data table integration
  • update user roles in API routes and components for better access control
  • update signup flow and layout components
  • deps: bump the npm_and_yarn group across 2 directories with 1 update
  • deps: bump cryptography in the uv group across 1 directory
  • deps-dev: bump the npm_and_yarn group across 3 directories with 1 update

2026-03 ​

新功能 ​

  • Add monthly analytics page and resource allocation logic documentation
  • Initialize PVE Resource Simulator with FastAPI and frontend
  • enhance recommendation and resource options services with async improvements and new disk size rules
  • implement AI API request and credential management
  • remove deprecated template recommendation configuration file
  • enhance AiChatPanel with improved message handling, UI adjustments, and plan integration
  • add PVE advisor module with recommendation service and AI integration
  • add application request page and routing
  • enhance AiChatPanel with quick prompts and input hint; update CreateVMRequest for hostname normalization
  • add AI chat panel and integrate AI recommendation features
  • Implement AI template recommendation service
  • implement chat prompt building functions for AI infrastructure consultation
  • add Proxmox templates service and resource options service
  • Implement AI-based PVE Placement Advisor service
  • Implement AI Log Analytics service with analysis and explanation features
  • add resource management and recommendation services
  • add ChatBox and MessageBubble components for enhanced chat functionality
  • add WebGL support to terminal and VNC proxies, increase scrollback buffer
  • add resource management services including resource listing, control, deletion, and configuration updates

修正 ​

  • update greeting instructions and refine dual-mode rule for clarity

2026-02 ​

新功能 ​

  • implement encryption and decryption for VM request passwords
  • implement My Resources feature to list user-owned resources
  • add CreateVMRequest component for resource application

修正 ​

  • remove Applications item from admin sidebar menu
  • update hostname field validation to use regex for better accuracy
  • update revision ID in migration and enhance VM request validation

以 AGPL-3.0 授權釋出。