Skip to content

Outcasts Fuseforks v0.3.7

Choose a tag to compare

@github-actions github-actions released this 26 Sep 18:38

Command approval mode: let run go without stopping for approval, from the status bar

New: command approval mode

Until now, a servant calling run with a command that was not on its allowed list was refused, and the request waited for you in "Command approval". That keeps the list closed, but it breaks the tempo: the servant stops, you approve, you ask again. This version adds a button to the status bar that cycles through three modes with each click:

Status bar What happens to a command that is not on the allowed list
Command: approval (default) As before: not run; queued in "Command approval"
Command: auto-approve Runs, and the exact call is added to the allowed list. It stays recorded, so the same call keeps working after you switch back, and you can review it later in "Command approval" or run.json
Command: auto-allow Runs, and nothing is recorded. Switching back refuses it again
  • Denied commands never run in any mode. What changes is only the treatment of commands that are neither allowed nor denied.
  • The mode only matters for servants that have run ticked. A servant without run still has no way to run commands.
  • The button glows while it is not the default — amber for auto-approve, red for auto-allow (which leaves no record).
  • Every call that ran without approval leaves one run bypass: line in fuseforks.log.

The status bar now reads in words

  • "Plan: review" / "Plan: no review" for the plan-review switch (it used to show an icon only while off).
  • "Stats" next to the stats icon.
  • The bar is slightly taller and the text slightly larger.

Both switches are remembered on this device

The plan-review switch and the command approval mode are now remembered on this device, and the next launch starts the same way. In v0.3.6 and earlier, the plan-review switch always turned off on restart. Neither setting is saved in the village, so handing a village to someone else does not switch off their reviews or approvals.

Blackboard

  • Filter by owner — show only one servant's notes (or those whose owner is unknown). The columns keep their shape; only the notes inside shrink. The filter is not saved, so a restart never opens on a partial board. While filtered, the "Done" column's clear button removes only the visible notes (the header eraser still clears the whole board).
  • Collapse all / expand all for the visible notes.

Fixes

  • run through PowerShell could silently do nothing. pwsh -Command & '…\lake.exe' build returned exit code 0 with no output, because the child process did not receive PATHEXT, so PowerShell could not tell that an .exe is runnable. It is now passed (failures.md #138).
  • The refusal for an argument containing spaces now says what to do. An argument like "lake build" cannot be allowed by an exact pattern (patterns are matched word by word); the message now says to allow it with a trailing * or to split the argument into words, instead of implying that adding it verbatim would work (failures.md #137).
  • The note under the Jev checkbox no longer names rag as pruned (it never was).

Things to know

  • "Auto-allow" means any command that is not denied can run. A deny list cannot list every dangerous command — if python or bash is reachable, arbitrary code is reachable. Use the auto modes for villages and work folders you trust, and switch back when you are done. The glow on the status bar is there so you notice when it is left on.
  • Auto-approve grows the allowed list. Every new exact call is appended to run.json. Review it from time to time and remove what you would not approve by hand.
  • A call whose argument contains spaces is run but not recorded under auto-approve (for example bash -c "…"). Writing it would produce a pattern that never matches, or one that widens to "any further arguments".
  • Switching the mode changes the description of run that the servants see, so the first round after a switch re-writes the input cache once.
  • The mode applies to the whole village (every servant with run).

コマンドの承認モード — ステータスバーから、run を承認待ちで止めずに走らせる

新機能: コマンドの承認モード

これまで、サーヴァントが許可リストに無いコマンドを run で呼ぶと断られ、「コマンド承認」で人の判断を待っていました。リストは閉じたまま保てますが、テンポが悪くなります — サーヴァントが止まり、承認して、もう一度頼む。この版から、ステータスバーに押すたびに 3 つのモードを巡るボタンが付きます。

帯の表示 許可リストに無いコマンドの扱い
コマンド:承認あり(既定) これまでどおり。実行せず「コマンド承認」に積む
コマンド:自動承認 実行し、その呼び出しの完全一致を許可リストへ書き足す。記録が残るので、戻しても同じ呼び出しは通り続け、あとで「コマンド承認」や run.json から見直せる
コマンド:自動許可 実行するだけで、何も記録しない。戻せば元どおり断られる
  • 禁止(deny)したコマンドは、どのモードでも実行しません。 変わるのは、許可にも禁止にも無いコマンドの扱いだけです
  • 効くのは run にチェックを入れたサーヴァントだけです。 run を持たない個体は、どのモードでもコマンドを実行できません
  • 既定以外の間はボタンが発光します — 自動承認は注意色、自動許可は赤(記録が残らないので)
  • 承認を経ずに走った呼び出しは、fuseforks.log に run bypass: の 1 行で残ります

ステータスバーを字で読めるように

  • 計画の確認のスイッチは 「計画:確認する」/「計画:確認なし」(これまではオフの間アイコンだけでした)
  • 統計のアイコンの右に 「統計」
  • 帯を少し高く、字を少し大きくしました

2 つのスイッチを端末に記憶

計画の確認のスイッチとコマンドの承認モードは、この端末に記憶され、次の起動でも同じ状態で始まります。v0.3.6 までは、計画の確認のスイッチは再起動で必ずオフに戻っていました。どちらも村には保存しないので、村を人に配っても、相手の確認や承認が外れることはありません。

黒板

  • 持ち主で絞り込み — 1 体のサーヴァントの付箋だけ(または持ち主不明の付箋だけ)を出します。列の形は変わらず、列の中の付箋だけが減ります。絞り込みは保存しないので、再起動で黒板の一部だけが見える状態から始まることはありません。絞り込み中は「完了」列の一括削除も見えている付箋だけが対象です(見出しの消しゴムは黒板全体)
  • 見えている付箋を すべて畳む / すべて開く

修正

  • PowerShell 経由の run が、何もせずに終わることがありました。 pwsh -Command & '…\lake.exe' build が終了コード 0・出力なしで返っていました。子プロセスに PATHEXT を渡しておらず、PowerShell が .exe を実行できるものと判定できなかったためです。渡すようにしました(failures.md #138)
  • 空白を含む引数の拒否文が、直し方を言うようになりました。 "lake build" のような引数は、許可リストの完全一致では書けません(パターンは 1 語ずつ照合します)。以前の文面は「そのまま追加すれば通る」と読める書き方でした。末尾 * で許可するか、引数を語ごとに割るよう案内します(failures.md #137)
  • Jev のチェックの下の注記から rag を外しました(rag は元から圧縮していません)

利用者が負う条件

  • 「自動許可」は、禁止していないコマンドなら何でも走ります。 禁止リストで危険なコマンドを列挙し尽くすことはできません — python や bash に届けば、任意のコードに届きます。信頼できる村と作業フォルダで使い、終わったら戻してください。帯が発光するのは、入れっぱなしに気づけるようにするためです
  • 自動承認は許可リストを育てます。 新しい呼び出しのたびに完全一致の行が run.json に足されます。ときどき見直し、手では承認しないものを消してください
  • 引数に空白を含む呼び出しは、自動承認でも記録せずに実行します(bash -c "…" など)。書くと二度と一致しない行か、「以降の引数は自由」へ広がる行になるためです
  • モードを切り替えると、サーヴァントが読む run の説明文が変わるので、切り替えた直後の 1 周は入力キャッシュが書き直しになります
  • モードは村全体(run を持つ全サーヴァント)に効きます