Skip to content

Releases

Outcasts Lorekeel v0.7.8

Choose a tag to compare

@github-actions github-actions released this 01 Nov 12:49

Illustration history

Illustrations used to be gone as soon as the next one was generated, unless you pressed Save. Now every illustration that is generated successfully is kept automatically, per scenario.

  • Where they go. generated_images inside the log folder (Settings → Log; by default the logs folder inside the app data). Each file is named after the scenario and the time it was generated.
  • Browsing. A new 2×2 grid icon in the illustration controls opens a page with the illustrations generated for the current scenario, newest first. Click a thumbnail to enlarge it. Back to the game or Esc returns to play; choosing another scenario in the header list also closes the page.
  • Deleting. Each illustration can be deleted from the page (with a confirmation). This deletes the file itself.
  • Illustrations that arrive after the scene has already moved on — and so are not shown — are kept in the history too, since they were still generated.
  • The existing Save illustration button is unchanged and still writes to the images folder.
  • If you change the log folder, older illustrations stay in the previous folder and no longer appear in the list. Moving a package to another folder disconnects it from its past illustrations, the same as with saves.

Reference images from the history

In the reference images dialog, the empty slot at the end now has a From the generated folder link below Use the current illustration. It opens a file dialog in generated_images, so you can put an earlier illustration into a reference slot. You can also browse to any other folder from there.

Open the archive in your browser

Packages → Site now has an Open in browser button next to Connect. It opens the archive at the URL in the field in your default browser, even before you connect.


挿絵の履歴

これまで挿絵は、「保存」を押さない限り次の生成で消えていました。これからは、生成に成功した挿絵がシナリオごとに自動で残ります。

  • 置き場所。 ログフォルダ (設定 > ログ。既定はアプリのデータの中の logs フォルダ) の generated_images です。ファイル名はシナリオと生成した時刻から付きます。
  • 一覧。 挿絵の操作列に 2×2 のアイコンを足しました。押すと、今のシナリオで生成した挿絵が新しい順に並ぶページが開きます。サムネイルを押すと大きく表示します。「ゲームに戻る」か Esc で戻ります。ヘッダの一覧で別のシナリオを選んだ時も閉じます。
  • 削除。 一覧から 1 枚ずつ削除できます (確認があります)。ファイルそのものを消します。
  • 場面が先へ進んだ後に届いて表示されなかった挿絵も、生成はされているので履歴に残ります。
  • これまでの「挿絵を保存」ボタンは変わらず、images フォルダに書きます。
  • ログフォルダを変えると、前のフォルダの挿絵は一覧に出なくなります (ファイルは残ります)。パッケージを別のフォルダへ移すと、セーブと同じく過去の挿絵とは結び付かなくなります。

履歴の挿絵を参照画像に

参照画像のダイアログで、末尾の空きの枠の「いまの挿絵を入れる」の下に 「生成済みフォルダから」 を足しました。generated_images を開いた状態でファイルの選択が出るので、前に生成した挿絵を参照の枠に入れられます。そこから別のフォルダへ移って選ぶこともできます。

書庫をブラウザで開く

パッケージ > 配布サイト の「接続」の右に 「ブラウザで開く」 を足しました。入力欄の URL の書庫を既定のブラウザで開きます。接続する前でも使えます。

Outcasts Lorekeel v0.7.7

Choose a tag to compare

@github-actions github-actions released this 19 Oct 04:01

Gemini works again

Since v0.7.4, every Gemini model failed at the very first turn with an HTTP 400 (Unknown name "type" … Proto field is not repeating). The cause was the speaker field added to the GM's output format in v0.7.4: Gemini's schema does not accept an optional field written as a type list, and the Gemini adapter did not know that shape. The schema is now sent in the form Gemini expects. Confirmed on gemini-4-argon.

  • Models that do not support explicit caching (such as gemini-4-argon) no longer retry creating the cache on every turn. The turn never failed because of it, but each one paid an extra round trip.

Read-aloud through an OpenAI-compatible server now actually works

The OpenAI compatible engine in Settings → Sound (for Irodori-TTS-Server and similar) was previously unusable in practice: most such servers send no CORS headers, so the app's web view could not reach them, and the synthesis library gave up after a fixed 30 seconds. Synthesis now runs inside the app itself, so neither limit applies. The other three engines (built-in, VOICEVOX, AivisSpeech) are unchanged.

  • Wait per sentence. New setting under the engine (default 120 s; 60 / 180 / 300 / 600 s). A sentence that exceeds it is skipped and the failure is shown as a toast.
  • Test warms up the server. The first request can take minutes while the server loads its model, so the Test button waits up to 600 s. Use it once before playing, or set IRODORI_PRELOAD=true on the server.
  • Voice ID. Leaving it empty sends none (Irodori's reference-free voice). With no reference the tone may shift from sentence to sentence; put a reference audio file in the server's voices/ folder and enter its file name (without the extension) to keep one voice. Per-character voices work the same way.
  • Clearer failures. The Test button now tells you whether the server returned an HTTP error (with its message), timed out, could not be reached, or returned something that is not audio.
  • A small spinner in the read-aloud controls shows while the server is synthesizing, and the volume slider now applies to this engine.

Gemini が再び使えます

v0.7.4 から、Gemini のどのモデルもターン開始直後に HTTP 400 (Unknown name "type" … Proto field is not repeating) で止まっていました。原因は v0.7.4 で GM の出力形式に加えた話者の欄です。Gemini のスキーマは「省略できる欄」を型の一覧で書いた形を受け付けず、Gemini 向けの変換がその形を知りませんでした。Gemini が受け付ける形で送るようにしました。gemini-4-argon で確認しています。

  • 明示キャッシュを持たないモデル (gemini-4-argon など) で、キャッシュの作成を毎ターン試し直さなくなりました。ターンが失敗することはありませんでしたが、毎回 1 往復ぶん余計に待っていました。

OpenAI 互換サーバーでの読み上げが実際に使えるようになりました

設定 > サウンド の「OpenAI 互換 (Irodori 等)」エンジンは、これまで実質的に使えませんでした。この種のサーバーの多くは CORS ヘッダを返さないためアプリの画面から届かず、届いても合成ライブラリが 30 秒固定で諦めていました。合成をアプリ本体の側で行うようにしたので、どちらの制限も掛かりません。他の 3 エンジン (ブラウザ内蔵・VOICEVOX・AivisSpeech) は変わりません。

  • 1 文の待ち時間。 エンジンの下に設定を足しました (既定 120 秒、60 / 180 / 300 / 600 秒)。超えた文は読まれず、失敗がトーストで出ます。
  • 試聴がサーバーを温めます。 初回はサーバーがモデルを読み込むので数分かかることがあり、試聴ボタンは最長 600 秒待ちます。遊ぶ前に一度押しておくか、サーバー側で IRODORI_PRELOAD=true にしてください。
  • 話者 ID。 空のままだと none (Irodori の参照なしの声) を送ります。参照が無いと文ごとに声の調子が変わることがあるので、声を固定するにはサーバーの voices/ フォルダに参照音声を置き、そのファイル名 (拡張子なし) を入れてください。キャラクターごとの声も同じです。
  • 失敗が分かるように。 試聴の失敗は、サーバーが HTTP エラーを返した (本文つき)・時間切れ・接続できない・音声でないものが返った、を区別して出します。
  • 読み上げの操作列に、サーバーが合成している間だけ小さな回転マークが出ます。音量スライダーもこのエンジンに効くようになりました。

Outcasts Lorekeel v0.7.6

Choose a tag to compare

@github-actions github-actions released this 16 Oct 15:44

The protagonist's lines get their own speech bubble

When the GM writes a line spoken by your character, it now appears as a speech bubble with the protagonist's face icon and name (the first two letters of the name if the package has no icon; You if the protagonist has no name). The protagonist's lines are not read aloud, and their bubble has no replay button.

Before, these lines went one of two ways. Written under the protagonist's name, they were rejected and the GM had to rewrite the turn, which took extra time. Written under a variant of the name, they showed up as an extra's line in the prose, with no icon.

  • Name variants. Besides the protagonist's name, names written at the very start of the protagonist's profile also count: the name before the parentheses, its parts, and the reading inside them. For example, a profile that begins 日暮 悠二(ひぐらし ゆうじ) makes 悠二, 日暮 and ひぐらし the protagonist too. Nothing after the parentheses is used.
  • Solo play only. At a multiplayer table, lines for characters that a person controls (including the protagonist) are still rejected and rewritten.
  • The GM is still told not to write the protagonist's lines. This only changes how they look when it does.

主人公の台詞は主人公の吹き出しで

GM が書いた主人公の台詞は、主人公の顔アイコンと名前の吹き出しで出るようになりました(パッケージにアイコンが無ければ名前の先頭 2 文字、主人公に名前が無ければ あなた)。主人公の台詞は読み上げず、吹き出しに読み上げボタンも付きません。

以前は 2 通りの扱いでした。主人公の名前で書かれた台詞は却下され、GM がそのターンを書き直すので時間がかかっていました。名前の揺れで書かれた台詞は、モブの台詞として地の文に出て、アイコンが付きませんでした。

  • 名前の揺れ。 主人公の名前に加えて、主人公のプロフィールの書き出しにある名前も主人公として扱います。括弧の前の名前、その部分、括弧の中の読みです。たとえばプロフィールが 日暮 悠二(ひぐらし ゆうじ) で始まっていれば、悠二・日暮・ひぐらし も主人公になります。括弧より後ろは使いません。
  • 一人で遊ぶときだけ。 卓(多人数)では、人が操作している人物(主人公を含む)の台詞は今までどおり却下され、書き直されます。
  • GM には今までどおり「主人公の台詞は書かない」と伝えています。変わるのは、書いたときの見え方だけです。

Outcasts Lorekeel v0.7.5

Choose a tag to compare

@github-actions github-actions released this 16 Oct 03:57

Narration voice

  • Skip moves to the next line. The skip button in the voice controls now stops only the line being read and continues from the next one. Before, it stopped the rest of the turn. To stop everything, turn narration voice off.
  • Replay a line. With narration voice enabled, hover over a speech bubble to show a speaker button next to it. Press it to hear that line again. It works even when Lines only is selected or the character is set to None.
  • A "None" voice. In Character voices, a character can be set to None (don't read). Their lines are not read; narration and other characters still are. For the OpenAI-compatible engine, where you type the voice ID, use the None checkbox instead.

Extras speak as part of the narration

Lines from people who are not characters in the scenario (a shopkeeper, a guard, someone in the crowd) are now shown as part of the prose, in the form Shopkeeper「…」, instead of as a speech bubble. They have no replay button, and with Lines only they are not read aloud. With Everything, they are read in the narrator's voice, name included. Characters' lines are unchanged.

ComfyUI: keep up to three workflows

Settings → Images, with ComfyUI selected, now has three workflow slots above the workflow editor. Each slot can have a name. Generation uses the slot you select. Your current workflow moves into the first slot, so nothing is lost.


読み上げ

  • スキップで次のセリフへ。 読み上げの操作にあるスキップは、いま読んでいるセリフだけを止めて、次のセリフから続けるようになりました。以前はそのターンの残りを全部止めていました。全部止めたいときは、読み上げを OFF にしてください。
  • セリフを読み直す。 読み上げ機能を有効にしていると、吹き出しにマウスを乗せたときに横にスピーカーのボタンが出ます。押すとそのセリフをもう一度読み上げます。台詞だけ を選んでいるときや、声を「なし」にした人物のセリフでも読みます。
  • 声の「なし」。 キャラクターの声 で、登場人物の声を なし (読まない) にできます。その人物の台詞は読まず、地の文とほかの人物は読みます。声の ID を自分で入力する OpenAI 互換エンジンでは、なし のチェックで切り替えます。

モブの台詞は地の文に

シナリオの登場人物にいない人物(店員、衛兵、群衆の誰かなど)の台詞は、吹き出しではなく 店員「…」 の形で地の文の中に出るようになりました。読み上げボタンは付かず、台詞だけ では読み上げません。すべて では語り手の声で、名前ごと読みます。登場人物の台詞は今までどおりです。

ComfyUI のワークフローを 3 つまで保管

設定 → 画像生成 で ComfyUI を選ぶと、ワークフローのエディタの上に 3 つの枠が出ます。枠には名前を付けられます。生成に使うのは選んでいる枠です。今のワークフローは 1 つ目の枠に入るので、消えません。

Outcasts Lorekeel v0.7.4

Choose a tag to compare

@github-actions github-actions released this 14 Oct 17:43

Dialogue in speech bubbles

The GM now writes narration and character lines separately. Each line appears as a speech bubble with the character's face icon and name, with the narration as prose in between.

  • Lorekeel checks who is speaking. A line from a character who is not in the scene, or a line written for your own character, is sent back to the GM to rewrite. The GM can no longer put words in your mouth or let someone who has left keep talking. A rewrite can make a turn take a little longer.
  • Unnamed extras (a shopkeeper, a guard) can still speak. Their bubbles have no icon.
  • If a model returns plain text instead, a line written entirely as a known character's name followed by 「…」 is still shown as a bubble.
  • Saves are unaffected. The previous narration shown when you continue a saved game is still plain text.

Character voices

  • With narration voice enabled, a new person icon in the voice controls at the bottom right of the conversation pane opens Character voices. Choose and test a voice for each character, and their lines are read in that voice. Characters you leave unset and unnamed extras use the narrator's voice. Choices are saved per engine and per package.
  • Settings → Sound → What to read: Everything (prose and lines), the default, or Lines only.

Fix: the GM's turn summaries were being thrown away

Every turn the GM writes a one-line summary of what happened, which Lorekeel uses as the GM's memory of earlier turns. A bug discarded it and stored the first 80 characters of the narration instead (in dialogue-heavy scenes, a fragment of a line). The GM's own summaries are now kept, and Synopsis → Recent events shows them. Turns played before this release keep their old entries.


台詞が吹き出しで出るようになりました

GM が地の文と台詞を分けて書くようになりました。台詞は登場人物の顔アイコンと名前つきの吹き出しで、その間に地の文が並びます。

  • 誰が話しているかを Lorekeel が確かめます。その場にいない人物の台詞や、あなたの演じる主人公の台詞が書かれた場合は、GM に書き直させます。GM があなたのキャラに勝手に喋らせたり、立ち去った人物が喋り続けたりすることはなくなります。書き直しが入ると、ターンに少し時間がかかることがあります。
  • 名前のない人物(店員、衛兵など)は今までどおり話せます。吹き出しにはアイコンが付きません。
  • モデルが段に分けず文字列で返した場合も、1 行まるごと「登場人物の名前「…」」の形になっている行は吹き出しで表示します。
  • セーブには影響ありません。続きから再開したときの「前回までの語り」は今までどおり文字列で表示します。

キャラクターの声

  • 読み上げ機能を有効にしていると、会話ペイン右下の読み上げの操作に人物のアイコンが加わります。押すと キャラクターの声 が開き、登場人物ごとに声を選んで試聴できます。選んだ人物の台詞はその声で読み上げます。選ばなかった人物と名前のない人物は語り手の声で読みます。選んだ声はエンジンとパッケージごとに保存されます。
  • 設定 → サウンド → 読み上げる範囲 で、すべて (地の文と台詞)(既定)か 台詞だけ を選べます。

修正: GM の経緯の要約が捨てられていた

GM は毎ターン、何が起きたかを 1 行の要約に書いています。Lorekeel はこれを、それまでのターンの記憶として GM に渡します。ところがバグでこの要約が捨てられ、代わりに語りの冒頭 80 字(台詞の多い場面では台詞の切れ端)が保存されていました。GM 自身の要約が残るようになり、あらすじ → 最近の出来事 にも表示されます。このリリースより前に遊んだターンの記録は、以前のままです。

Outcasts Lorekeel v0.7.3

Choose a tag to compare

@github-actions github-actions released this 14 Oct 13:03

Fix: OpenAI gpt-6 models stopped with a 400 error

With a gpt-6 model such as gpt-6-luna, the first turn failed with Unsupported parameter: 'max_tokens' is not supported with this model. Use 'max_completion_tokens' instead. Lorekeel only recognised the newer OpenAI models by the gpt-5 prefix, so gpt-6 was sent the old parameter. It now recognises gpt-5 and every later generation (gpt-6, gpt-7, …), so they get the parameters OpenAI expects. Older models (gpt-4o and earlier) and gpt-oss models on compatible servers are unchanged.

  • No settings need to change. Keep your AI model as it is and start a new game or continue your save.
  • For gpt-5 and gpt-6 models, Settings → AI Model → Thinking depth has no effect on the GM's turns. OpenAI does not allow thinking while the GM submits its structured reply, so Lorekeel turns thinking off for those turns. This is the same as with gpt-5 before this release.

修正: OpenAI の gpt-6 系モデルが 400 エラーで止まる

gpt-6-luna などの gpt-6 系モデルを選ぶと、最初のターンで Unsupported parameter: 'max_tokens' is not supported with this model. Use 'max_completion_tokens' instead. と表示されて止まっていました。Lorekeel が新しい OpenAI モデルを「gpt-5 で始まる名前」でしか見分けていなかったため、gpt-6 系に古いパラメータを送っていたのが原因です。gpt-5 以降の世代(gpt-6・gpt-7 …)をすべて見分けるようにしたので、OpenAI が求めるパラメータで送られます。gpt-4o 以前のモデルと、互換サーバの gpt-oss 系モデルの扱いは変わりません。

  • 設定を変える必要はありません。AI モデルはそのままで、新しいゲームを始めるかセーブから続けてください。
  • gpt-5 系と gpt-6 系では、設定 → AIモデル → 思考の深さ は GM のターンには効きません。GM が構造化された返答を出すあいだは思考を使えないという OpenAI 側の制約があり、Lorekeel はそのターンの思考をオフにして送っています。これまでの gpt-5 系と同じ扱いです。

Outcasts Lorekeel v0.7.2

Choose a tag to compare

@github-actions github-actions released this 09 Oct 05:04

Image generation with xAI (grok-imagine)

xAI (grok-imagine) is now available as an image-generation provider, alongside OpenAI, Gemini, ComfyUI and Meta. In Settings → Images, choose xAI and enter your xAI API key; the server URL and model (grok-imagine-image-2.0) are filled in for you. If you already use Grok as your AI model, the same xAI key works.

  • The shape setting (square / landscape / portrait) works as usual, including when reference images are attached.
  • The detail setting has three levels for xAI. At the time of writing, xAI charges $0.04 per image for Standard, $0.06 for High and $0.08 for Highest. Standard is the default.
  • Reference images (settings sheets) work with xAI too, up to three as with the other providers.
  • Images are received as JPEG and saved as .jpg.
  • The xAI key is stored in the OS credential store like the other keys. PRIVACY.md now lists xAI among the image providers.

xAI(grok-imagine)で画像生成ができるようになりました

画像生成のプロバイダに xAI(grok-imagine) を加えました(OpenAI・Gemini・ComfyUI・Meta に続く 5 つ目)。設定 → 画像生成 で xAI を選び、xAI の API キーを入れてください。サーバー URL とモデル(grok-imagine-image-2.0)は最初から入っています。AI モデルに Grok を使っている場合は、同じ xAI のキーで使えます。

  • 形(正方形 / 横長 / 縦長)はこれまでどおり効きます。参照画像を付けたときも同じです。
  • xAI では解像度を 3 段から選べます。執筆時点の xAI の料金は、1 枚あたり標準 $0.04・高 $0.06・最高 $0.08 です。既定は標準です。
  • 参照画像(設定画集)も xAI で使えます。他のプロバイダと同じく 3 枚までです。
  • 画像は JPEG で受け取り、保存すると .jpg になります。
  • xAI のキーも他のキーと同じく OS の資格情報ストアに保存されます。PRIVACY_jp.md の画像生成の送信先に xAI を加えました。

Outcasts Lorekeel v0.7.1

Choose a tag to compare

@github-actions github-actions released this 05 Oct 09:14

Image generation with Meta (muse-image)

Meta (muse-image) is now available as an image-generation provider, alongside OpenAI, Gemini and ComfyUI. In Settings → Image generation, choose Meta and enter your Meta API key; the server URL and model (muse-image-1.0) are filled in for you.

  • The shape setting (square / landscape / portrait) works as usual. Images come back at a fixed size of about 2.5 megapixels, so the detail setting is greyed out for Meta. It is also greyed out for ComfyUI, where it never had any effect (the workflow decides the size).
  • Images are received as WebP (about 700 KB instead of about 4 MB as PNG) and saved as .webp.
  • Reference images (settings sheets) work with Meta too.
  • The Meta key is stored in the OS credential store like the other keys. PRIVACY.md now lists Meta among the image providers.

Clearer errors with Claude and Gemini

  • When a reply hits the output limit, Lorekeel now says so ("raise LLM_MAX_TOKENS") with Claude and Gemini as well. Before, it showed a confusing "no structured output" error. This matters most with models that always think, such as Claude Opus 5.5, where thinking uses up part of the limit.
  • A reply that was cut off in the middle of a tool call is no longer accepted as a turn. Before, it could be applied with half-written narration and missing state changes.
  • When Claude declines a request (a safety refusal), Lorekeel now shows the reason instead of an empty reply or a parse error.

AI editing with Claude

  • When AI editing reached its round limit, the final summary round could come back empty with Claude. It now gets a proper summary.
  • If the AI call fails partway through an edit, the changes already applied are kept and the reason is shown, instead of the whole edit being lost.

Meta(muse-image)で画像生成ができるようになりました

画像生成のプロバイダに Meta(muse-image) を加えました(OpenAI・Gemini・ComfyUI に続く 4 つ目)。設定 → 画像生成 で Meta を選び、Meta の API キーを入れてください。サーバー URL とモデル(muse-image-1.0)は最初から入っています。

  • 形(正方形 / 横長 / 縦長)はこれまでどおり効きます。画像の大きさは約 250 万画素で固定なので、Meta では解像度の選択を無効表示にしています。ComfyUI でも解像度はもともと効いていなかった(大きさはワークフローで決まる)ので、同じく無効表示にしました。
  • 画像は WebP で受け取ります(PNG だと約 4MB のところ約 700KB)。保存すると .webp になります。
  • 参照画像(設定画集)も Meta で使えます。
  • Meta のキーも他のキーと同じく OS の資格情報ストアに保存されます。PRIVACY_jp.md の画像生成の送信先に Meta を加えました。

Claude と Gemini のエラーが分かりやすくなりました

  • 応答が出力上限に達したとき、Claude と Gemini でも「LLM_MAX_TOKENS を上げてください」と表示するようになりました。これまでは「構造化出力が得られなかった」という分かりにくいエラーになっていました。Claude Opus 5.5 のように常に思考するモデルでは、思考も上限を使うので起きやすくなります。
  • ツール呼び出しの途中で切れた応答を、ターンとして受け付けないようにしました。これまでは、途中で切れた語りのまま、状態の変化が抜け落ちて反映されることがありました。
  • Claude が安全のためにリクエストを断ったとき、空の応答や解析エラーではなく、理由を表示するようにしました。

Claude での AI 編集

  • AI 編集が周回の上限に達したとき、Claude では最後のまとめが空で返ることがありました。きちんと報告が返るようにしました。
  • 編集の途中で AI の呼び出しが失敗しても、それまでに適用した変更は残し、理由を表示するようにしました(これまでは編集ごと失われていました)。

Outcasts Lorekeel v0.7.0

Choose a tag to compare

@github-actions github-actions released this 29 Sep 21:37

API keys now live in your OS credential store

API keys are no longer kept in plain-text files. They are saved in Windows Credential Manager / macOS Keychain / Linux Secret Service (under the name jp.lorekeel.app). This covers every key Lorekeel keeps: the GM model, the synopsis and AI-editing models, image generation (OpenAI / Gemini), the Jev token, and each registered model.

  • Nothing to do on your side. On first launch, Lorekeel moves the keys it finds in .env and in your registered models into the credential store, checks each one was stored correctly, and only then removes the plain-text copy.
  • Settings → AI Model now shows where your keys are stored, and has a Delete all saved API keys button.
  • If the credential store is unavailable (for example on Linux without a Secret Service), keys are kept in .env as before and the settings screen says so.
  • If you go back to 0.6.x after this, the older version will not find your keys (it only reads the plain-text files), so you would need to enter them again.

What Lorekeel stores, what it sends and where, and how to delete it is now written down in PRIVACY.md (日本語). Lorekeel collects no telemetry.

Claude Opus 5.5 works

With Claude Opus 5.5 (and Sonnet 5.5 / Fable 5.1), every turn failed with tool_choice: type "tool" and "any" are not supported for this model. These models no longer accept a forced tool choice. Lorekeel now notices this once per session and switches to asking the model to use the tool, so play continues normally.

Tip: Opus 5.5 always thinks, and thinking counts against the output limit. If narration gets cut off with an "output limit" error, raise the model's output limit to about 16000 in Settings → AI Model.


API キーを OS の資格情報ストアに保存するようになりました

API キーを平文のファイルに置かなくなりました。Windows の資格情報マネージャー / macOS のキーチェーン / Linux の Secret Service に、jp.lorekeel.app という名前で保存します。対象は Lorekeel が扱うすべてのキーです(GM のモデル・あらすじ要約用と AI 編集用のモデル・画像生成の OpenAI / Gemini・Jev のトークン・登録モデルごとのキー)。

  • 操作は不要です。 初回の起動時に、.env と登録モデルにあるキーを資格情報ストアへ移し、正しく保存されたことを確かめてから平文の側を消します。
  • 設定 → AIモデル に、キーの保存先の表示と 保存した API キーをすべて削除 ボタンを付けました。
  • 資格情報ストアが使えない環境(Secret Service の無い Linux など)では、これまでどおり .env に保存し、設定画面にそう表示します。
  • この版から 0.6.x に戻すと、古い版は平文のファイルしか読まないのでキーが見つかりません。その場合はキーを入れ直してください。

何を保存し、何をどこへ送り、どう消せるかを PRIVACY_jp.md(English)にまとめました。Lorekeel はテレメトリを収集しません。

Claude Opus 5.5 で動くようになりました

Claude Opus 5.5(と Sonnet 5.5 / Fable 5.1)では、ターンのたびに tool_choice: type "tool" and "any" are not supported for this model. で失敗していました。これらのモデルはツールの強制指定を受け付けません。Lorekeel はセッション中に一度これを検知すると、ツールを使うよう指示する形に切り替えて、そのまま遊べるようにしました。

ヒント: Opus 5.5 は常に思考し、思考も出力の上限を消費します。語りが途中で切れて「出力上限」のエラーになる場合は、設定 → AIモデル で出力上限を 16000 程度に上げてください。

Outcasts Lorekeel v0.6.9

Choose a tag to compare

@github-actions github-actions released this 23 Sep 13:44

Progress and State are one page again

The right pane's Progress and State tabs are merged back into one page, so you no longer have to switch back and forth during play. From top to bottom:

  1. Turn
  2. Location — with a View map link that opens the Map tab
  3. Goals — three per page, with dots below to switch pages. When you reach a goal, the page jumps to it.
  4. Inventory
  5. Flags — click the heading to collapse them (remembered). Reset seed sits just below.
  6. Who's here — pinned to the bottom; only the part above it scrolls.

Because one tab is gone, the shortcuts moved up: Map is Ctrl+2, Synopsis Ctrl+3, Facts Ctrl+4 (Progress stays Ctrl+1).

Dice results no longer show before you roll

With the dice reveal on, the outcome could already be read before you clicked the face-down dice: a flag set on success, an item you gained, a reached ending, or the "outcome of the check" line in the synopsis tab's recent events. The right pane (flags, inventory, goals, who's here, map) and the synopsis tab now keep the previous turn's board until every die is revealed, then update at once. Turns without dice, and play with the reveal effect off, update immediately as before.

Context usage indicator

Where the send mark sits, an empty input box now shows how much of the model's context window the last request used (e.g. 14.1K / 1.0M · 1.3%). While you type, the send mark comes back in its place. It appears only when the registered model has a context length — fill it in under Settings → AI model, or fill it with "Import prices".

For authors

  • move_character — send a character to another location without a flag: { op: move_character, entity: rei, to: tavern }. The character is there only while the player is at that location, does not follow the player, and disappears from where they were before (even if that location lists them in present). To have them rejoin, use set_presence { present: true }. It is an author-only op (the GM cannot propose it), ignores exits and conditions, and is cleared when a campaign moves to its next chapter. A typo in to, or an entity that is not a character, is now reported as a warning when the package loads.
  • Consistency check with Jev (developer mode) — while developer mode is on, the GM's narration can be checked against the board every turn, and the chat log shows a ⚠ for things like someone speaking who isn't here, handing over an item you don't have, or contradicting a character's profile. It only warns and never blocks a turn. It uses TypeSafe's Jev, which needs its own account: enter the account ID and API token under Settings → Developer. Each check sends Jev that turn's narration, the preceding narration, character profiles and inventories; results are logged to logs/consistency.jsonl (without the narration text). It never runs unless developer mode is on and both keys are saved.

「進行」と「状態」を 1 枚に戻しました

右ペインの 進行 と 状態 のタブを 1 枚にまとめ、プレイ中に行き来しなくて済むようにしました。上から順に次のとおりです。

  1. ターン
  2. 現在地 — マップを見る を押すとマップのタブが開きます
  3. 目標 — 3 件ずつ表示し、下の ● でページを切り替えます。目標に到達すると、そのページへ移ります。
  4. 所持品
  5. フラグ — 見出しを押すと畳めます(開閉は覚えます)。すぐ下にシードリセットがあります。
  6. この場にいる — 下に固定し、その上だけがスクロールします。

タブが 1 枚減ったので、ショートカットが繰り上がりました。マップは Ctrl+2、あらすじは Ctrl+3、既成事実は Ctrl+4 です(進行は Ctrl+1 のまま)。

サイコロを開く前に結果が分からないように

サイコロの開帳(伏せカード)を使っていると、クリックする前に結果が読めてしまうことがありました。成功で立つフラグ、手に入った道具、到達したエンディング、あらすじタブの「最近の出来事」に付く「判定の結末」から分かってしまっていました。右ペイン(フラグ・所持品・目標・この場にいる・マップ)とあらすじタブは、サイコロを全部開くまで前のターンの盤面のままになり、開き終えた時点で一度に更新します。判定の無いターンと、開帳の演出を切っている場合は、これまでどおりすぐに更新します。

コンテキストの使用率を表示

入力欄が空のとき、送信マークの位置に、直前のリクエストがモデルのコンテキストをどれだけ使ったかを表示します(例: 14.1K / 1.0M · 1.3%)。文字を入力すると送信マークに戻ります。登録モデルにコンテキスト長が入っているときだけ表示されます。設定 → AIモデル で入力するか、「単価を取り込む」で埋めてください。

作者向け

  • move_character — フラグを使わずに、キャラを別の場所へ行かせられます: { op: move_character, entity: rei, to: tavern }。そのキャラは、プレイヤーがその場所に居るときだけそこに居て、ついてきません。元の場所からは居なくなります(その場所の present に名前があっても)。合流させるには set_presence { present: true } を使います。作者専用の op で(GM は提案できません)、出口や条件は見ず、キャンペーンで次の章へ進むと消えます。to の書き間違いや、entity がキャラでない場合は、パッケージの読み込み時に警告が出ます。
  • Jev による一貫性チェック(開発者モード) — 開発者モードが ON のとき、GM の語りを毎ターン盤面と照らし合わせ、この場にいない人物の発話・持っていない物の受け渡し・設定との食い違いなどを会話ログに ⚠ で知らせます。知らせるだけで、ターンは止めません。TypeSafe の Jev を使うので、別途アカウントが要ります。設定 → 開発者 でアカウント ID と API トークンを入力してください。検査のたびに、そのターンの語り・直前までの語り・登場人物の設定・所持品が Jev に送られます。結果は logs/consistency.jsonl に記録されます(語りの本文は書きません)。開発者モードが ON で、鍵が 2 つとも保存されているとき以外は動きません。