💎 Features
- feat(ai): AI agent using Mastra (#10327) @miya
- Introduces an AI agent built on the Mastra framework.
- Mastra を基盤とした AI エージェントを導入。
- feat(ai): Support multiple AI providers and cross-provider model selection (#11394) @miya
- Admins can now configure OpenAI, Anthropic, Google, and Azure OpenAI simultaneously with per-provider enable/disable, and users can pick models across providers in chat.
- 管理者が OpenAI / Anthropic / Google / Azure OpenAI を同時に設定・有効/無効切替でき、ユーザーはチャットでプロバイダー横断のモデル選択が可能に。
- feat(ai): Show official AI provider & model names in the UI (#11432) @miya
- AI provider and model names in the chat and admin UI now show official display names (e.g. "OpenAI", "GPT-4o") instead of internal IDs.
- AI のプロバイダー名・モデル名を、内部 ID ではなく公式の表示名(例: OpenAI、GPT-4o)で表示するよう改善。
- feat: GROWI Vault (#11092) @yuki-takei
- Adds GROWI Vault, a read-only Git interface that exposes each user's authorized wiki pages as a git-clonable repository.
- 各ユーザーが閲覧権限を持つ Wiki ページを Git リポジトリとして clone できる、読み取り専用の新機能「GROWI Vault」を追加。
- feat: Agentic search engine for suggest-path (#11293) @tomoyuki-t-weseek
- Replaces the suggest-path recommendation engine with a Mastra-based agentic search that iterates queries against page content, and retires the old features/openai integration entirely.
- パス提案(suggest-path)機能を、検索を繰り返しながら精度を高める Mastra ベースの agentic 検索エンジンに刷新し、旧 features/openai 連携を全廃。
- feat: Page Markdown endpoint (.md URL / Accept: text/markdown) with navigation footer (#11439) @yuki-takei
- Adds an HTTP endpoint returning each page's content as Markdown (via .md URL or Accept: text/markdown) with a navigation footer, so AI agents can fetch page content in one GET without running JavaScript.
- 各ページの内容を Markdown 形式で返す HTTP エンドポイント(.md URL / Accept: text/markdown)を追加。AI エージェントが JavaScript を実行せずに 1 回の GET でページ本文と近傍ナビゲーションを取得できるように。
- feat(activity): Capture attachment snapshots for ADD/DOWNLOAD actions (#11433) @yuki-takei
- Extends audit-log snapshot capture to attachment ADD and DOWNLOAD actions, so admins can track who added or downloaded which attachment on which page.
- 監査ログのスナップショット記録を添付ファイルの追加・ダウンロード操作にも拡張し、いつ誰がどの添付を追加・ダウンロードしたかを追跡可能に。
- feat(activity-log): Activity Log with action-keyed snapshot union (incl. activities Prisma migration) (#11393) @yuki-takei
- Makes attachment deletions (direct and cascade) traceable in the audit log by freezing file details into a snapshot at delete time, alongside a migration of the activities model to Prisma.
- 添付ファイルの削除(直接削除・カスケード削除)を監査ログで追跡可能にし、削除直前の情報をスナップショットとして保存。あわせて activities モデルを Prisma に移行。
- feat(news): Switch news delivery settings from admin page (#11091) @ryotaro-nagahara
- Lets admins toggle news delivery on/off from the GROWI admin page via a DB-backed setting, replacing the previous environment-variable-only control.
- ニュース配信の ON/OFF を管理画面から切替可能にし、従来の環境変数のみによる制御を廃止。
🚀 Improvement
- imprv: Lazy-load passport strategy SDKs and ldapjs (#11480) @yuki-takei
- Lazy-loads authentication strategy SDKs (openid-client, ldapjs, passport-saml, etc.) so disabled auth strategies no longer load their dependencies at boot, reducing memory footprint.
- 認証ストラテジーの SDK 群(openid-client、ldapjs、passport-saml など)を遅延読み込みにし、無効な認証方式の依存が起動時に読み込まれないようにしてメモリ使用量を削減。
- imprv: Lazy-load mail transports to keep nodemailer/aws-sdk out of boot (#11479) @yuki-takei
- Lazy-loads mail transport libraries (nodemailer, aws-sdk) so they no longer load at boot when mail is not configured, further reducing startup memory usage.
- メール送信用ライブラリ(nodemailer、aws-sdk)を遅延読み込みにし、メール未設定時は起動時にロードされないようにしてメモリ使用量をさらに削減。
- imprv: Warm up Prisma connection at boot (#11481) @yuki-takei
- Connects the Prisma client at boot instead of on the first query, so connection failures and the engine's memory cost surface immediately rather than on the first user request.
- Prisma クライアントの接続を起動時に確立するよう変更し、接続失敗やメモリコストが最初のリクエストではなく起動時点で判明するように改善。
- imprv(activity-log): Activity Log snapshot detail viewer (formatted attachment-removal view + raw fallback) (#11440) @yuki-takei
- Adds an admin UI to view the audit-log snapshot details captured for attachment deletions, with a formatted view for attachments and a raw fallback for other actions.
- 監査ログの管理画面に、添付削除操作で記録されたスナップショット詳細を表示する機能を追加。添付には整形表示、その他の操作には raw 表示で対応。
- imprv(activity-log): Activity Log recording gate (lazy fail-safe) — skip persisting out-of-gate updates (#11421) @yuki-takei
- Skips persisting audit-log rows for operations determined not to require logging, reducing write load in multi-tenant deployments like GROWI.cloud.
- 記録対象外と判定された操作の監査ログ行を書き込まないようにし、GROWI.cloud のようなマルチテナント環境での書き込み負荷を削減。
🐛 Bug Fixes
- fix: Build safeRedirect target from app:siteUrl behind a reverse proxy (#11248) (#11489) @yuki-takei
- リバースプロキシ配下で safeRedirect のリダイレクト先を app:siteUrl から構築するよう修正。
- fix(drawio): Preserve and render all pages of a multi-page diagram (#11524) @yuki-takei
- drawio の複数ページ図で、全ページを保持・描画するよう修正。
- fix(import): Derive export archive list from server state via SWR (#11511) @yuki-takei
- インポート機能のエクスポートアーカイブ一覧を SWR 経由でサーバー状態から取得するよう修正。
- fix(import): Surface import-settings build errors to the admin UI (#11520) @yuki-takei
- インポート設定のビルドエラーを管理画面に表示するよう修正。
🧰 Maintenance
- support(search): Drop Elasticsearch 7 support (#11490) @yuki-takei
- Drops Elasticsearch 7 support entirely; GROWI now supports only ES8 and ES9.
- Elasticsearch 7 のサポートを完全に廃止し、ES8/ES9 のみをサポート対象に。
- support: Opt-in jemalloc allocator (JEMALLOC_ENABLED) to release glibc's retained native memory (#11411) @yuki-takei
- Adds an opt-in JEMALLOC_ENABLED flag that switches the memory allocator to jemalloc, cutting retained native memory by about 70% in load testing.
- オプトインの JEMALLOC_ENABLED フラグを追加し、メモリアロケータを jemalloc に切替可能に。負荷試験でネイティブメモリの保持量を約 70% 削減。
- support: Migrate to ESM (#11309) @yuki-takei
- Migrates the GROWI monorepo to native ESM, removing CJS server output and legacy transpilePackages workarounds, and enforces a no-extension import convention via CI.
- GROWI モノレポをネイティブ ESM へ全面移行し、サーバーの CJS 出力や旧 transpilePackages 対応を撤廃。拡張子なし import 規約を CI で恒久的に強制。
- support: Reduce memory consumption for the GROWI server (#11208) @yuki-takei
- Ships three confirmed memory fixes (MongoDB connection pool limits, a trimmed OpenTelemetry instrumentation set, and a defensive timer), reducing retained RSS growth by about 84% in testing.
- MongoDB 接続プール上限・OpenTelemetry 計装の絞り込み・タイマーの防御的処理という 3 つの確認済み修正により、メモリ保持量の増加を試験環境で約 84% 削減。
- ci(deps): bump body-parser from 1.20.3 to 1.20.6 (#11504) @dependabot[bot]