reasonix 0.12.6 → 0.12.13

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -72,6 +72,28 @@ command list.
72
72
 
73
73
  ---
74
74
 
75
+ ## Web dashboard *(new in 0.12)*
76
+
77
+ Type `/dashboard` inside any session and Reasonix prints a localhost
78
+ URL with a one-time token. Open it for a 13-tab control surface that
79
+ mirrors the running TUI — chat (with live streaming), the editor (file
80
+ tree + CodeMirror, syntax highlighting + autocomplete + side-by-side
81
+ diff for pending edits), Usage / Sessions / Plans / Tools /
82
+ Permissions / System / MCP / Skills / Memory / Hooks / Settings.
83
+
84
+ ```
85
+ reasonix code › /dashboard
86
+ ▸ http://127.0.0.1:54219/?token=… (open in browser)
87
+ ```
88
+
89
+ 127.0.0.1 only, ephemeral token expires when the session ends, every
90
+ mutation is CSRF-checked. The TUI keeps working — modals (shell
91
+ confirms, plan reviews, edit gates) mirror to whichever surface you
92
+ look at first. No build step, no Electron, no separate process to
93
+ keep alive.
94
+
95
+ ---
96
+
75
97
  ## Why Reasonix? (vs Cursor / Claude Code / Cline / Aider)
76
98
 
77
99
  Three things you'd come to Reasonix for, that nothing else combines:
@@ -316,8 +338,9 @@ reasonix code › /commit "fix: findByEmail case-insensitive"
316
338
  session file.
317
339
  - `/effort high` — step down from the default `max` agent-class
318
340
  reasoning_effort for cheaper/faster turns on simple tasks.
319
- - `npx reasonix code --preset max` — v4-pro + 3-way self-consistency
320
- branching for gnarly refactors.
341
+ - `npx reasonix code --preset pro` — v4-pro for the whole session,
342
+ no auto-downgrade to flash. Pair with `--branch 3` if you want
343
+ 3-way self-consistency on gnarly refactors.
321
344
  - `npx reasonix code src/` — narrower sandbox (only `src/` is
322
345
  writable).
323
346
  - `npx reasonix code --no-session` — ephemeral; nothing saved.
@@ -348,8 +371,8 @@ in the file. No prompts, no completions, no tool arguments.
348
371
  ### Staying current
349
372
 
350
373
  The panel header shows the running version next to `Reasonix` (e.g.
351
- `Reasonix v0.5.21 · deepseek-v4-pro · harvest · max …`, the trailing
352
- `max` is the reasoning-effort badge — `/effort high` to step down).
374
+ `Reasonix 0.12.6 · v4-flash · AUTO · max …`, the trailing `max` is
375
+ the reasoning-effort badge — `/effort high` to step down).
353
376
  A quiet 24-hour background check against
354
377
  the npm registry surfaces a yellow `update: X.Y.Z` on the right side
355
378
  of the same row when a newer version has been published. No blocking,
@@ -535,7 +558,7 @@ your own MCP servers. Sessions persist per name under
535
558
 
536
559
  ```bash
537
560
  npx reasonix # uses saved config + wizard-selected MCP
538
- npx reasonix --preset smart # reasoner + R1 harvest for this run
561
+ npx reasonix --preset pro # pin v4-pro for the whole run (no auto-downgrade)
539
562
  npx reasonix --session design # named session — resume later with --session design
540
563
  ```
541
564
 
@@ -570,7 +593,7 @@ rendering, retries.
570
593
 
571
594
  | command | what it does |
572
595
  |---|---|
573
- | `/preset <fast\|smart\|max>` | one-tap bundle (model + harvest + branch) |
596
+ | `/preset <auto\|flash\|pro>` | model commitment `auto` = flash with escalation, `flash` = locked flash, `pro` = locked pro |
574
597
  | `/model <id>` | switch DeepSeek model (`deepseek-v4-flash`, `deepseek-v4-pro`, plus `deepseek-chat` / `deepseek-reasoner` compat aliases) |
575
598
  | `/models` | list live models from DeepSeek `/models` endpoint |
576
599
  | `/harvest [on\|off]` | toggle R1 plan-state extraction |
@@ -750,7 +773,7 @@ npx reasonix sessions # list saved sessions
750
773
  Common flags:
751
774
 
752
775
  ```bash
753
- --preset <fast|smart|max> # bundle (model + harvest + branch)
776
+ --preset <auto|flash|pro> # model commitment (auto / locked-flash / locked-pro)
754
777
  --model <id> # explicit model id
755
778
  --harvest / --no-harvest # R1 plan-state extraction
756
779
  --branch <N> # self-consistency budget
package/README.zh-CN.md CHANGED
@@ -69,6 +69,25 @@ Windows Terminal)。任何时候按 `Esc` 中断;`/help` 查看完整命令
69
69
 
70
70
  ---
71
71
 
72
+ ## Web 控制台 *(0.12 新功能)*
73
+
74
+ 会话内输入 `/dashboard`,Reasonix 会打印一个带一次性 token 的本地 URL。
75
+ 浏览器打开后是一个 13 个面板的控制面 —— 与正在运行的 TUI 实时双向同步:
76
+ 聊天(流式输出)、编辑器(文件树 + CodeMirror,语法高亮 + 自动补全 + 待
77
+ 审编辑的左右对比 diff)、Usage / Sessions / Plans / Tools / Permissions /
78
+ System / MCP / Skills / Memory / Hooks / Settings。
79
+
80
+ ```
81
+ reasonix code › /dashboard
82
+ ▸ http://127.0.0.1:54219/?token=… (open in browser)
83
+ ```
84
+
85
+ 仅监听 127.0.0.1,会话结束 token 立即失效,所有改动都走 CSRF 校验。
86
+ TUI 继续可用 —— 弹窗(shell 确认、plan 审阅、edit 闸门)会同步到先看到
87
+ 它的那一边,另一边自动消失。没有打包步骤,没有 Electron,没有额外进程。
88
+
89
+ ---
90
+
72
91
  ## 为什么选 Reasonix?(vs Cursor / Claude Code / Cline / Aider)
73
92
 
74
93
  三件事,别家不会同时都给你:
@@ -284,8 +303,8 @@ reasonix code › /commit "fix: findByEmail case-insensitive"
284
303
  - `/undo` —— 回滚上一批已应用的编辑。
285
304
  - `/new` —— 在同一目录开新会话,但不丢失旧会话文件。
286
305
  - `/effort high` —— 从默认 `max` agent 推理强度降一档,简单任务更省更快。
287
- - `npx reasonix code --preset max` —— v4-pro + 三路 self-consistency 分支,
288
- 适合疑难重构。
306
+ - `npx reasonix code --preset pro` —— 整轮锁定 v4-pro,不再自动降级到
307
+ flash。如果想要 self-consistency 分支,加 `--branch 3` 跑三路投票。
289
308
  - `npx reasonix code src/` —— 更窄的沙箱(只有 `src/` 可写)。
290
309
  - `npx reasonix code --no-session` —— 临时会话,什么都不存。
291
310
 
@@ -314,8 +333,8 @@ completion、没有工具参数。`reasonix stats <transcript>` 仍兼容老用
314
333
  ### 保持最新
315
334
 
316
335
  面板顶栏在 `Reasonix` 旁边显示当前版本(如
317
- `Reasonix v0.5.21 · deepseek-v4-pro · harvest · max …`,最后那个 `max`
318
- 推理强度徽章 —— `/effort high` 可降一档)。后台每 24 小时静默查询一次 npm
336
+ `Reasonix 0.12.6 · v4-flash · AUTO · max …`,最后那个 `max` 是推理强度
337
+ 徽章 —— `/effort high` 可降一档)。后台每 24 小时静默查询一次 npm
319
338
  registry,发现新版会在同一行右侧显示黄色 `update: X.Y.Z`。不阻塞、不烦人,
320
339
  每天最多查一次,离线 / 防火墙下静默失败。
321
340
 
@@ -479,7 +498,7 @@ schema 设计、架构讨论,或者驱动你自己的 MCP 服务器。会话
479
498
 
480
499
  ```bash
481
500
  npx reasonix # 用已保存配置 + 向导选过的 MCP
482
- npx reasonix --preset smart # 这次跑用 reasoner + R1 harvest
501
+ npx reasonix --preset pro # 整轮锁定 v4-pro(不自动降级)
483
502
  npx reasonix --session design # 命名会话 — 之后 --session design 续聊
484
503
  ```
485
504
 
@@ -513,7 +532,7 @@ MCP 工具走和原生工具一样的 Cache-First + 修复 + 上下文安全管
513
532
 
514
533
  | 命令 | 作用 |
515
534
  |---|---|
516
- | `/preset <fast\|smart\|max>` | 一键预设(model + harvest + branch) |
535
+ | `/preset <auto\|flash\|pro>` | 模型策略 —— `auto` = flash 自动升级、`flash` = 锁 flash、`pro` = 锁 pro |
517
536
  | `/model <id>` | 切换 DeepSeek 模型(`deepseek-v4-flash`、`deepseek-v4-pro`,加上 `deepseek-chat` / `deepseek-reasoner` 兼容别名) |
518
537
  | `/models` | 列出 DeepSeek `/models` 端点的可用模型 |
519
538
  | `/harvest [on\|off]` | 切换 R1 plan-state 提取 |
@@ -679,7 +698,7 @@ npx reasonix sessions # 列已保存会话
679
698
  常用 flag:
680
699
 
681
700
  ```bash
682
- --preset <fast|smart|max> # 预设组合(model + harvest + branch
701
+ --preset <auto|flash|pro> # 模型策略(auto / flash / 锁 pro
683
702
  --model <id> # 显式指定模型 ID
684
703
  --harvest / --no-harvest # R1 plan-state 提取
685
704
  --branch <N> # self-consistency 预算
package/dashboard/app.css CHANGED
@@ -543,6 +543,34 @@ body {
543
543
  background: var(--bg-3);
544
544
  color: var(--fg-2);
545
545
  }
546
+ .pill-active {
547
+ background: rgba(103, 232, 249, 0.22);
548
+ color: var(--primary);
549
+ }
550
+
551
+ /* ---------- Key/value rows (compact metadata layout) ---------- */
552
+ .kv {
553
+ display: flex;
554
+ flex-direction: column;
555
+ gap: 6px;
556
+ font-size: 13px;
557
+ color: var(--fg-1);
558
+ font-family: var(--mono);
559
+ }
560
+ .kv > div {
561
+ display: flex;
562
+ flex-wrap: wrap;
563
+ align-items: baseline;
564
+ gap: 8px;
565
+ }
566
+ .kv-key {
567
+ display: inline-block;
568
+ min-width: 84px;
569
+ font-size: 11px;
570
+ letter-spacing: 0.06em;
571
+ text-transform: uppercase;
572
+ color: var(--fg-3);
573
+ }
546
574
 
547
575
  /* ---------- Tables ---------- */
548
576
 
@@ -1193,6 +1221,101 @@ textarea:focus {
1193
1221
  color: var(--fg-2);
1194
1222
  }
1195
1223
 
1224
+ /* Onboarding banner that nudges new users to the Semantic panel.
1225
+ * Only shown when the project has no built index AND the user hasn't
1226
+ * explicitly dismissed it (state in localStorage). The "Build it →"
1227
+ * action navigates the sidebar via the appBus so the rest of the
1228
+ * panel state isn't disturbed. */
1229
+ .chat-banner {
1230
+ display: flex;
1231
+ align-items: center;
1232
+ gap: 12px;
1233
+ margin-bottom: 14px;
1234
+ padding: 10px 14px;
1235
+ background: var(--bg-1);
1236
+ border: 1px solid var(--border);
1237
+ border-left: 3px solid var(--accent);
1238
+ border-radius: var(--radius-md);
1239
+ font-size: 13px;
1240
+ }
1241
+ .chat-banner-icon {
1242
+ font-family: var(--mono);
1243
+ color: var(--accent);
1244
+ font-size: 18px;
1245
+ }
1246
+ .chat-banner-text {
1247
+ flex: 1;
1248
+ display: flex;
1249
+ flex-direction: column;
1250
+ gap: 2px;
1251
+ font-size: 13px;
1252
+ }
1253
+ .chat-banner-text strong {
1254
+ color: var(--fg-0);
1255
+ font-weight: 600;
1256
+ }
1257
+ .chat-banner-text .muted {
1258
+ font-size: 12px;
1259
+ line-height: 1.45;
1260
+ }
1261
+ .chat-banner-close {
1262
+ background: transparent;
1263
+ border: none;
1264
+ color: var(--fg-3);
1265
+ font-size: 20px;
1266
+ line-height: 1;
1267
+ padding: 0 6px;
1268
+ cursor: pointer;
1269
+ border-radius: var(--radius-sm);
1270
+ }
1271
+ .chat-banner-close:hover {
1272
+ background: var(--bg-3);
1273
+ color: var(--fg-0);
1274
+ }
1275
+
1276
+ /* In-flight row sits just above ChatStatusBar — the user's eyes are
1277
+ * already at the input; this puts the spinner + elapsed + token
1278
+ * stream in the same visual neighborhood instead of pushing them up
1279
+ * to the top of the panel. Border on the bottom only so it shares the
1280
+ * statusbar's top divider. */
1281
+ .chat-inflight {
1282
+ display: flex;
1283
+ flex-wrap: wrap;
1284
+ align-items: center;
1285
+ gap: 8px;
1286
+ padding: 7px 8px;
1287
+ margin-top: 6px;
1288
+ background: var(--bg-1);
1289
+ border: 1px solid var(--border);
1290
+ border-radius: var(--radius-sm);
1291
+ font-family: var(--mono);
1292
+ font-size: 12px;
1293
+ color: var(--fg-1);
1294
+ flex-shrink: 0;
1295
+ }
1296
+ .chat-inflight-phase {
1297
+ color: var(--accent);
1298
+ font-weight: 600;
1299
+ }
1300
+ .chat-inflight-sep {
1301
+ color: var(--fg-3);
1302
+ }
1303
+ .chat-inflight-abort {
1304
+ margin-left: auto;
1305
+ background: transparent;
1306
+ border: 1px solid var(--border);
1307
+ color: var(--fg-2);
1308
+ padding: 3px 10px;
1309
+ border-radius: var(--radius-sm);
1310
+ font-family: inherit;
1311
+ font-size: 11px;
1312
+ cursor: pointer;
1313
+ }
1314
+ .chat-inflight-abort:hover {
1315
+ border-color: var(--err);
1316
+ color: var(--err);
1317
+ }
1318
+
1196
1319
  /* ---------- Chat status bar ----------
1197
1320
  *
1198
1321
  * Compact metric strip below the input area. Mirrors the TUI's