alex
|
0b18d76cfd
|
feat: 實作 vault 指令群 status/unlock/lock/list/get/create/edit/delete/restore/purge/folders/sync/password/rescue(issue #17)
- 對接 alterminal/bear#41 的 /api/v1/vault JSON API(PAT Bearer)
- 客戶端端到端加密,格式與 Web Vault(P2)完全一致:
- 加密字串 2.<iv>.<ct>.<mac>(AES-256-CBC+HMAC-SHA-256、PKCS#7、encrypt-then-MAC)
- 主金鑰 PBKDF2-SHA512(迭代數取自 /vault/config 與 profile,不寫死;salt=email 小寫)
- BIP39 助記詞(12 字、128-bit、英文詞表)+救援路徑
- K_user 僅存記憶體:vault unlock 匯出 BEAR_VAULT_SESSION(base64),
同 Bitwarden CLI BW_SESSION 慣例;lock 提示 unset;不寫入任何檔案
- docs/commands.md 補 §3.11 規格;README 同步
- 測試:fake API 注入+Bear.Vault.Crypto 密文樣本交叉驗證(雙向);
BIP39 官方向量;46 個新測試,全套 196 passed
|
2026-09-10 23:27:47 +08:00 |
|
ceo
|
a880bcea4d
|
Merge pull request 'feat: 實作管理端指令群 jwks/accounts/audit-logs(issue #12)' (#16) from feat/admin-commands into main
|
2026-09-10 03:18:35 +08:00 |
|
queena
|
34c549e77a
|
Merge branch 'merge-fix' into feat/admin-commands
|
2026-09-10 03:16:22 +08:00 |
|
queena
|
4d353ef5f4
|
merge: 吸納 main 的個人自助指令群(PR #15),衝突以管理端+個人自助並存解算
|
2026-09-10 03:16:17 +08:00 |
|
queena
|
d70aa9e541
|
feat: 實作管理端指令群 jwks/accounts/audit-logs(issue #12)
- docs/commands.md 新增 §3.8 jwks、§3.9 accounts、§3.10 audit-logs 規格
- Api 新增 jwks/accounts/audit-logs 端點(共用 api_request)
- 新增 Jwks/Accounts/AuditLogs/Admin 模組;CLI 接線三個指令群
- 403 → 退出碼 8 提示需 admin;一次性密碼只在成功當下輸出
- 測試 100 例全綠(fake API 注入,比照 cli_test.exs);基於含 PR #15 的最新 main
|
2026-09-10 03:15:53 +08:00 |
|
queena
|
9784e18c24
|
merge: rebase 到最新 main(吸納 PR #15 個人自助指令群)後新增管理端指令群
- main 已合併 PR #15(profile/password/email/sessions/tokens/mfa 與 eqrcode 依賴)
- 保留 main 的 self_service 模組與 api.ex 個人自助端點,於其上重套管理端:
jwks/accounts/audit-logs 指令、API 端點、CLI 接線、docs §3.8–§3.10、README 表格
- mix precommit 全綠(150 tests:admin 100 + self-service 50)
|
2026-09-10 03:15:11 +08:00 |
|
queena
|
464db21745
|
feat: 實作管理端指令群 jwks/accounts/audit-logs(issue #12)
- docs/commands.md 新增 §3.8 jwks、§3.9 accounts、§3.10 audit-logs 規格
- Api 新增 jwks/accounts/audit-logs 端點(共用 api_request)
- 新增 Jwks/Accounts/AuditLogs/Admin 模組;CLI 接線三個指令群
- 403 → 退出碼 8 提示需 admin;一次性密碼只在成功當下輸出
- 測試 100 例全綠(fake API 注入,比照 cli_test.exs)
|
2026-09-10 03:07:40 +08:00 |
|
queena
|
e23be309f8
|
Merge pull request 'feat: 實作個人自助指令群(issue #11)' (#15) from feat/self-service-commands into main
|
2026-09-10 01:08:17 +08:00 |
|
iris
|
62fd6b730e
|
feat: 實作個人自助指令群 profile/password/email/sessions/tokens/mfa(issue #11)
- lib/bear_cli/self_service.ex:六個子群組(profile show/set、password change、
email change、sessions list/revoke/revoke-others、tokens list/create/revoke、
mfa status/setup/disable/recovery-codes),對接 alterminal/bear#38 的
/api/v1/profile* JSON API(PAT Bearer、任何有效帳號)
- 敏感輸入(密碼/驗證碼)互動提示讀取,非 TTY → 退出碼 2;
一次性明文(PAT 明文、recovery codes)僅於成功當下輸出
- mfa setup:otpauth URI 本地生成 ASCII QR(新增 eqrcode 依賴),
確認走 /mfa/setup/confirm(依 #38 實作)
- Api 模組新增 profile 系列端點與 429 分流;CLI 分派接上六個指令群組
- docs/commands.md §3.7 對齊 #38 實際 API(sessions 欄位、tokens create
無 --scope、mfa setup/confirm、email 需重帶 new_email);§7/§8/§9 與
README 同步更新
- 測試 50 例(fake API 注入):解析、輸出、退出碼、互動輸入、錯誤分流;
mix precommit 全綠(114 passed)
|
2026-09-09 22:50:53 +08:00 |
|
ceo
|
a220f8c5e6
|
Merge pull request 'feat: 實作 bear apps 指令群(issue #10)' (#14) from feat/apps-commands into main
|
2026-09-08 21:28:27 +08:00 |
|
alex
|
2192d067ce
|
feat: 實作 bear apps 指令群 list/show/create/update/rotate-secret/toggle(issue #10)
- Api:新增 /api/v1/apps 端點(apps_list/get/create/update/rotate_secret/toggle,
401/403/404/422/5xx/網路 分流)
- Apps:指令群實作——client_id → UUID 以 list 解析;一次性 client_secret
僅於 create/rotate-secret 成功當下輸出;--json 輸出符合 docs/commands.md §3.6;
visibility/status 過濾由 CLI 本地套用
- CLI:apps 子指令解析(重複選項收集為清單)、本地用法驗證(缺參數/列舉值/
PKCE 未綁 --jwk-id → 退出碼 2)、help 更新
- 測試:注入 fake API 的單元測試 29 例(解析、輸出、退出碼、UUID 解析、
401/403/404/422 分流、PKCE rotate)
- 文件:README.md 實作狀態、docs/commands.md §3.6/§9 更新
|
2026-09-08 20:58:54 +08:00 |
|
ceo
|
77c65ec299
|
Merge pull request 'docs: 規劃個人自助指令群介面規格(issue #11)' (#13) from docs/self-service-commands-spec into main
|
2026-09-08 20:25:28 +08:00 |
|
iris
|
8c1f580a20
|
docs: 規劃個人自助指令群介面規格(issue #11)
|
2026-09-08 20:21:55 +08:00 |
|
queena
|
34797dfe0d
|
Merge pull request 'feat: 實作 bear CLI 骨架與 PAT 模式共用基礎(issue #6)' (#8) from feat/cli-skeleton into main
|
2026-09-07 23:05:18 +08:00 |
|
alex
|
bd0b0da309
|
fix: 更新 mint 1.9.3 → 1.10.0(修 CVE-2026-82728/82729,審核意見)
|
2026-09-07 22:59:50 +08:00 |
|
alex
|
93176c0eb1
|
feat: 實作 bear CLI 骨架與 PAT 模式共用基礎(issue #6)
- 專案骨架:Elixir + Mix escript(單檔可執行 bear),HTTP 一律 Req
- 設定/憑證檔讀寫:0600、原子寫入(rename)、O_CREAT|O_EXCL 防 symlink
- PAT Bearer 呼叫 /userinfo;--json 輸出;規格化退出碼
- 補齊 main 規格承諾的 BEAR_TOKEN 環境變數(優先於憑證檔、不寫入)
- login 無效 PAT 退出碼 3(依 docs/commands.md §3.1);token --refresh 用法錯誤 2(§3.3)
- 35 個單元測試;mix precommit(compile --warnings-as-errors + format + test)全綠
- 沿用已關閉 PR #3 的實作(feat/pat-mode-mvp 分支),文件改依 main 現行版本更新
apps 管理指令待 #5 規格與 alterminal/bear#28 API 就緒後實作。
|
2026-09-07 22:59:05 +08:00 |
|
chenyunda218
|
c26420303e
|
Merge pull request 'docs: 規劃 bear apps 管理指令群介面規格(issue #5)' (#7) from docs/apps-management-spec into main
Reviewed-on: #7
|
2026-09-07 22:50:24 +08:00 |
|
ceo
|
ba869c3e11
|
docs: 規劃 bear apps 管理指令群介面規格(issue #5)
對應 alterminal/bear-cli#5 與伺服器端 alterminal/bear#28(App 管理 JSON API):
- 3.6 由 P3 暫緩清單擴充為完整指令群規格:list/show/create/
update/rotate-secret/toggle,含選項、行為、輸出範例、--json 格式。
- 認證一律 PAT Bearer;401 → 退出碼 3、403(非 admin)→ 新增退出碼 8。
- client_secret 僅 create/rotate-secret 一次性顯示,其餘回應永不包含。
- 第 4 節退出碼總表補 8;第 7 節開放問題改寫並新增 UUID vs client_id;
- 第 8 節對應關係列出全部 apps 端點,註明依賴 bear#28。
- README 指令總覽與 P3 里程碑同步更新。
|
2026-09-07 22:40:28 +08:00 |
|
alex
|
3f5965bf36
|
docs: CLI 設計加入個人存取權杖(PAT)登入(issue #1)
- bear login 新增 --token <PAT>:以個人存取權杖免瀏覽器登入
- 同步更新 whoami/token/logout/status 於 PAT 模式下的行為
- 憑證檔規格區分 Device Flow 與 PAT、退出碼、指令↔端點對應
- 新增 BEAR_TOKEN 環境變數(一次性/CI 用)與開放問題
|
2026-08-30 13:41:20 +08:00 |
|
alex
|
14edb84a59
|
docs: 新增 bear CLI 指令規劃(issue #19)
- 建立獨立倉庫 bear-cli,用於實現 bear 的終端機 CLI 客戶端
- README.md:專案簡介、指令總覽、全域選項、憑證與里程碑
- docs/commands.md:完整指令規格(login/whoami/token/logout/status/apps)
- 沿用 RFC 8628 Device Authorization Grant 方向(見 bear issue #17 設計文件)
- 定義全域選項、各指令行為、退出碼、設定/憑證檔與安全考量
- 依需求「先規劃指令、暫不實作」,程式碼留待 P2 起各自開 issue 再進行
|
2026-08-29 17:25:53 +08:00 |
|