Files
るみなー先生 08b86f3683 feat: update project version and description; add runtime state management and server routes
- Bump version to 0.6.0 and enhance project description in pyproject.toml.
- Introduce runtime state management with RuntimeCandidateState and RuntimeCandidateStateStore classes to handle candidate updates and state retrieval.
- Implement server routes for updating and reading runtime candidate states, handling various request scenarios and errors.
- Add tests for runtime layout and prompt random choice functionality, ensuring robust validation and state management.
- Enhance frontend with runtime candidate editor, including UI updates and synchronization with server state.
2026-08-19 20:39:39 +09:00

108 lines
3.4 KiB
Markdown

## v0.6.0
候補をQueue投入後も編集できるRuntime版と、候補制御記号を追加しました。
## 追加
- `Runtime Prompt Random Choice`
- `Runtime Prompt Random Choice Ex`
- 全選択ノードで、先頭 `#` の候補をコメントとして除外
- Runtime版限定で、先頭 `!` の候補を次回再選択時に強制選択
- 同じ階層に複数ある場合は最初の1件を使用
- `!()` は空文字を強制選択
- Runtime入力欄の `EDITING / SYNCING / LIVE / SYNC ERROR` 表示
- Runtime ExのSoft Incomplete / Hard Error表示
## 変更
- Runtimeの候補編集は現在の`change_every`保持期間へ割り込まず、次回再選択時に反映
- Runtimeのtextareaがノードの高さ変更へ追従するように修正
- 全ノードの追加メニューをトップ階層の `Prompt Random Choice` カテゴリへ統一
- Exは最終葉候補の均等確率を維持しながら、葉数を使って1経路だけを選択
- `selected_text_safe`でWindows予約名を回避し、長さを制限
## 互換性に関する注意
- 従来版でも先頭 `#` は通常候補ではなくコメントになります
- Exの `A{B|C}{D|E}` のような隣接子グループは、直積を防ぐため展開前にエラーになります
- Exの波括弧不一致は明示的な構文エラーになります
- 独立したランダム軸は別のExノードへ分け、String Joinで結合してください
---
## v0.5.0
`Safe Random Seed` を追加しました。
## 追加
- `Safe Random Seed`
- KSampler向けに、0以上のランダムseedだけを出力する小型ノード
- Python側の `secrets` を使って発番
- 実行後、ノードタイトルを `Seed: 4897362896` のように更新
- 同じノードの出力を複数箇所へ接続した場合は、同じseed値を配布
## 変更
- タイトル表示用JavaScriptで、`Prompt Random Choice Ex` の短縮文字数設定が反映されるように修正
---
## v0.4.0
`Prompt Random Choice Ex` を追加しました。
## 追加
- `Prompt Random Choice Ex`
- `Prompt Random Choice` と同じフラット候補リストに対応
- `{}` による入れ子の候補展開に対応
- すべての葉候補へ展開してから、最後に1回だけランダム選択
- 展開結果を親要素へ `, ` で接続
- 展開済み候補リストを `options_text` 単位でキャッシュ
- `selected_text` / `selected_text_safe` を出力
- `(){...}` のような空親グループに対応
- 親要素 `()` は出力されません
- 子要素だけが候補になります
## 例
```text
town|zoo{animals{birds|penguins}|aquarium,{fish|jellyfish}}
```
これは、内部的には次の候補へ展開されます。
```text
town
zoo, animals, birds
zoo, animals, penguins
zoo, aquarium, fish
zoo, aquarium, jellyfish
```
この5候補から1つが選ばれます。
<br/>
親要素 `()` の例
```text
(){
white day
wedding ceremony
birthday party
}
```
内部的には次の候補へ展開されます。
```text
white day
wedding ceremony
birthday party
```
## 備考
- `Prompt Random Choice Ex` は、すべての葉候補へ展開してから最後に1回だけランダム選択します
- 展開済み候補リストは `options_text` 単位でキャッシュします
- 通常の `Prompt Random Choice` は、フラットな候補選択用としてそのまま残しています