Skip to content

Releases: aegif/NemakiWare

NemakiWare 3.3.1

Choose a tag to compare

@yumioka yumioka released this 18 Aug 01:22
e17fa59

3.3.1 (2026-08-18)

3.3.0 の残件パッチリリースです。破壊的変更はありません
詳細な変更履歴は RELEASE_NOTES.md を、
計画と実装の記録は v3.3.1-plan.md を参照してください。

修正

  • Swagger UI の「Try it out」が動くようになりました — openapi.json に servers が無く全オペレーションが 404 になっていた問題 (および修正一巡目のパス二重化 401) を修正。UI からの GET/POST 実行 → 200 を E2E テストで固定しています。
  • Setup ウィザードの補助エンドポイントにも CouchDB 3.3 検査/setup/auth/apply/setup/admin/change-password が 3.3 未満の CouchDB に書き込めた問題を修正。
  • admin パスワード変更の部分成功が見えるようになりました — 応答に DB ごとの結果 (全件) と「旧パスワードのまま残った DB」を名指しする warning が入ります。
  • QA fixture (patch.testuser.enabled=true) の seed 失敗の焼き付きを修正 — 一時障害で「適用済み」と誤記録され再試行されない問題。
  • レンディション変換の一時ファイルを POSIX 600 で作成 (共有 /tmp での情報漏えい対策)。
  • フォルダ移動のロック取得を lock-before-try 形に整理 (静的解析への追随、実害なし)。

内部改善

  • 起動プローブの状態と CouchDB 版数を単一スナップショットとして公開し、setup 完了ゲートも単一読みに変更
  • CodeQL アラート 25 件を全件 triage (修正 2 件・理由付き dismiss 23 件)
  • 開発用依存の脆弱性解消 (npm audit は dev 依存込みで 0 件)
  • Playwright CI を 4 シャード化 — 従来は単一ジョブが 3 時間上限に到達して失敗していたところ、最遅シャード 42 分で完走 (実走で露出した既存テスト欠陥 4 件も源で修正)
  • SOAP の手動スモークを 3 サービスの実往復で実施し、WS クライアント binding が製品コードで未使用であることを記録

コンテナイメージ

  • ghcr.io/aegif/nemakiware-core:3.3.1
  • ghcr.io/aegif/nemakiware-solr:3.3.1

(amd64。Trivy スキャンと boot smoke を通過したものが公開されます)

NemakiWare 3.3.0

Choose a tag to compare

@yumioka yumioka released this 17 Aug 04:29
7148f9d

3.3.0 (2026-08-17)

詳細な変更履歴は RELEASE_NOTES.md を、
アップグレード手順は v3.3.0-upgrade-runbook.md を参照してください。

⚠️ 破壊的変更

  1. CouchDB 3.3 以上が必須になりました — 3.3 未満 (またはバージョン不明) では起動しません。Setup ウィザード経由でも同じ検査が働きます。
  2. REST API に CSRF 検証/core/rest/**/core/api/v1/** の POST / PUT / DELETE / PATCH には X-Requested-With: XMLHttpRequest か Bearer / AUTH_TOKEN / X-API-Key が必要です。Basic auth はバイパスしません。
  3. CORS の既定が「許可しない」になりましたapi.cors.allowedOrigins 未設定時は CORS ヘッダを返しません。別オリジンのブラウザアプリがある場合のみ設定してください。
  4. /rest/repo/{repo}/archive/indexlimit 未指定が全件 → 100 件になりました。

⚠️ アップグレード要件

  • 全 CMIS + RAG 再索引が必須です (10 万文書規模で 10 時間級)。
  • 既存の Solr データボリュームを引き継ぐ場合、schema.xml に 3 フィールドの手動追加が必要です (runbook O0.5)。
  • アップグレード前に CouchDB 全 DB と Solr データボリュームのバックアップを取ってください。

主な変更

  • Apache Solr 9 → 10、OpenCMIS 2.0.0-RC2 (Jakarta EE)、Spring 7 / Tomcat 11 / Java 21
  • ACL-epoch fencing (ACL とインデックスの恒久収束機構) が常時有効に
  • 出荷既定の総点検: 公開イメージからクラウド同期・SSO・LDAP の開発向け既定と QA fixture を除去、無認証の診断エンドポイントを削除
  • CXF 4.2.3 / JAXB 重複解消 / npm audit --omit=dev 0 件
  • 書き込み性能の改善 (CouchDB 往復の削減シリーズ) と再索引の二重索引解消

イメージ

ghcr.io/aegif/nemakiware-core:3.3.0
ghcr.io/aegif/nemakiware-solr:3.3.0

(linux/amd64。公開イメージは Trivy スキャンと prod compose での boot スモークを通過したものです)

🤖 Generated with Claude Code

NemakiWare 3.2.2

Choose a tag to compare

@yumioka yumioka released this 04 Jul 12:19

Codex security-review remediation + E2E flaky-test stabilization, off 3.2.1.

Security

  • [Medium] PlantUML/DOT rendition hardened. Diagram content is rendered server-side to SVG; PlantUML's default LEGACY profile allows !include/!includeurl (local-file read + SSRF). The renderer now forces the SANDBOX profile (no local file access, no network) plus source-size (512 KB), render-time (15 s) and output-size (20 MB) limits.
  • [Medium] Archive import ACL bypass closed. ZIP/ACP import persisted archive-supplied ACEs via an internal update that bypassed the CAN_APPLY_ACL_OBJECT check, so a create-child-only importer could set arbitrary ACLs. Archive ACLs are now applied only for administrators / system restores; a non-admin import keeps the object's inherited ACL and returns a warning. Same guard added to the filesystem-import path.
  • [Low] HTTPS connect-only DNS-rebinding residual re-affirmed (data-exchange SSRF already closed by TLS certificate verification; a full connect-time IP-pin transport is deferred).

Test stabilization (no product-code change)

Hardened 7 pre-existing flaky Playwright specs (group-hierarchy circular-reference, custom-property-input, config-viewer, property-editor, archive-restore-consistency, document-viewer-auth, verify-cmis-404) — pagination-aware assertions, API-based setup, robust login/waits.

Known limitation (deferred): a reliably 0-hard-failure full Playwright run was not achieved; the suite has a small, run-varying intermittent-flaky tail (environment/timing and client-side SPA races, not data accumulation). Converging is deferred to a separate test-infrastructure effort. The accepted 3.2.1 release shipped with the same tail.

Upgrade safety

No CouchDB view / patch / persisted-schema / Mango-index change — the 2.4-era CouchDB data carry-over path is untouched.

Verification

TCK 38/38 (clean DB), relevant Java unit 130/130, UI vitest 191/191, security regression 74/74 + live PoC. Full Playwright chromium 926–933 passed / 99 skipped. Every spec touched by the 3.2.2 changes is green.

Full detail: RELEASE_NOTES.md and CLAUDE.md.

NemakiWare 3.2.1

Choose a tag to compare

@yumioka yumioka released this 03 Jul 02:40

Security-audit remediation + cross-repository tenant isolation + dependency CVEs, plus two post-audit admin-usability additions.

Security — authentication / authorization

  • [High] allowedAuthMethods policy bypass closed on all three remaining password entry points (api/v1 login, MCP Basic/login tool, legacy admin re-auth); a disabled/cloud-only account gets the same generic 401 as a wrong password.
  • Cross-repository tenant isolation: connector-delegation governance and import-profile admin operations are now confined to the authenticated repository (fail-closed); per-repository admins authenticate against their own repository.
  • RAG vector-search repository scoping: all RAG Solr queries scope to repository_id; RAG reader-ACL tokens are now repository-scoped (see Migration).
  • Constant-time session-token comparison on the main path.

Dependencies

  • commons-compress 1.24.0 → 1.27.1 (CVE-2024-25710, CVE-2024-26308); Lucene aligned to 9.12.3 across all modules. npm production deps: 0 vulnerabilities.

Admin usability (post-audit)

  • Runtime-configurable cloud / SSO auth: Google / Microsoft client IDs and Keycloak/OIDC/SAML can be set from the admin menu and persist — the admin-UI value now overrides the deploy-time -D/env bootstrap (a blank value reverts to the deploy default). Previously these fields were locked as "system property".
  • Markdown preview embedded-image resolution: relative image references (images/foo.png, ../assets/a.png) resolve against the document's CMIS folder and stream into a blob URL; unresolved images fall back to alt text + a broken-image indicator. External/data/blob URLs pass through unchanged. HTML files remain a read-only source view (not rendered).

Migration

  • RAG index rebuild required only if RAG semantic search is used — the reader-ACL token format is repository-scoped and intentionally not backward-compatible (fail-closed before rebuild; no cross-repository leak). Affects only the derived RAG Solr index; CouchDB content is untouched.

Upgrade safety

No CouchDB view / patch / persisted-schema / Mango-index change — the 2.4-era CouchDB data carry-over path is untouched.

Verification

TCK 38/38 (clean DB), relevant Java unit 60/60, UI unit (vitest) 191/191, Playwright chromium 911 passed / 102 skipped. Remaining Playwright failures are documented/environmental pre-existing flakies outside the changed code paths.

Full detail: see RELEASE_NOTES.md and CLAUDE.md.

3.1.0

Choose a tag to compare

@yumioka yumioka released this 16 Mar 08:03

NemakiWare 3.1.0 Release Notes

Release Date: 2026-03-16

NemakiWare 3.1.0 は、2.4.0 以降の最大のメジャーアップデートです。技術スタックの全面刷新、エンタープライズ認証の強化、モダンUI への移行、そして大規模なパフォーマンス・セキュリティ改善を含みます。


ハイライト

プラットフォーム刷新

  • Java 21 (Virtual Threads 対応) へ移行
  • Jakarta EE 11 (javax → jakarta 名前空間) へ完全移行
  • Spring Framework 7 へアップグレード
  • Tomcat 11 (Jakarta Servlet 6.1) を採用
  • Apache Chemistry OpenCMIS 1.1.0-nemakiware (Jakarta EE 対応自己ビルド版)

モダン UI

  • React 19 + TypeScript + Vite 7 + Ant Design 5 による SPA を新規構築
  • 旧 Ruby on Rails クライアント (NemakiShare) を廃止
  • 日本語・英語の 多言語対応 (i18n)
  • レスポンシブデザイン

エンタープライズ認証

  • SAML 2.0 認証 (POST binding ACS、SLO LogoutRequest、署名検証)
  • OIDC 認証 (Google / Microsoft)
  • WebAuthn パスキー認証
  • Setup Wizard による初期設定 GUI

クラウド統合

  • Google Workspace / Microsoft Entra ID ディレクトリ同期
  • Google Drive / OneDrive Cloud Drive 連携

新機能

CMIS 準拠強化

  • ContentChanges API 実装 (変更ログトークンベースの増分同期)
  • BulkUpdateProperties メソッド実装
  • CMIS 1.1 Browser Binding / Atom Binding / Web Services Binding 対応
  • セカンダリタイプ完全対応
  • タイプ定義の CRUD (作成・更新・削除) 対応

コンテンツ管理

  • インポート / エクスポート 機能改善 (同名上書き、リレーションシップ対応、ACL 付きエクスポート、ID 読替)
  • アーカイブ管理 強化 (全文検索、一括操作、アーカイブからのダウンロード)
  • Webhook 機能 (CMIS 権限チェック、CHILD_BATCH 配送、配信ログ永続化)
  • サーバーサイドページネーション による大量文書対応

AI・検索

  • RAG セマンティック検索 (TEI / Amazon Bedrock 埋め込み対応)
  • MCP (Model Context Protocol) サーバー (AI エージェント統合)
  • Solr 多言語検索 (text_ja + text_en デュアルインデックス)

Virtual Threads

  • Tomcat の全 HTTP リクエストを Virtual Thread で処理
  • アプリケーション内 ThreadFactory も Virtual Thread に統一
  • 同時接続数の大幅改善

パフォーマンス改善

  • deleteTree 並列化による大量ファイル削除の高速化
  • getChildByName O(1) CouchDB ビュー最適化
  • getLatestChange() 全件ロード → limit=1 最適化 (OOM 解消)
  • グループ更新の差分計算方式への変更 (全グループ走査の排除)
  • ZIP インポートのストリーミング処理化
  • N+1 クエリ 5 箇所の解消

セキュリティ修正

  • SAML 署名ラッピング攻撃対策 (Reference URI DOM 解決 + duplicate-ID 防御)
  • SAML DEFLATE DoS 防止 (10MB 上限)
  • XXE 防御の強化
  • エクスポート時の ACL リーク防止 (CAN_GET_ACL 権限チェック)
  • Webhook REST API の CMIS 権限チェック移行
  • ACP インポートのサイズ上限適用
  • クラウド専用ユーザーのパスワード / パスキー制限
  • PDF.js CVE-2024-4367 対応 (react-pdf 10.0.1)
  • npm 脆弱性 0 件達成 (dompurify 3.3.2、immutable 3.8.3)
  • Dependabot アラート全件対応

破壊的変更

動作環境

  • Java 21 必須 (Java 8/11/17 はサポート対象外)
  • Tomcat 11 必須 (Tomcat 7/8/9 はサポート対象外)
  • CouchDB 3.x 必須

廃止

  • NemakiShare (Ruby on Rails クライアント) を廃止 → React SPA に移行
  • レガシーモジュール (setup, action, util 等) の削除
  • javax 名前空間のクラス群 → jakarta に完全移行
  • SLF4J 1.7 → 2.0 に統一

API

  • CMIS Atom / Browser Binding のエンドポイントパスに変更はありません
  • REST API の権限モデルが一部変更されています (Webhook API: admin 限定 → CMIS 権限チェック)

アップグレードガイド

2.4.0 からのアップグレード

  1. Java 21 をインストール
  2. Tomcat 11 に切り替え
  3. CouchDB 3.x にアップグレード (必要に応じて)
  4. core.war を Tomcat の webapps/ にデプロイ
  5. Setup Wizard (初回起動時に表示) で初期設定を実施
  6. Solr コアの再構築 (スキーマ変更あり)

注意: 2.4.0 の CouchDB データは基本的に互換性がありますが、ビュー構造の変更があるため、初回起動時に自動マイグレーションが実行されます。


既知の問題

  • Maven 依存: netty 4.1.97 (odata-server-core 経由、CVE-2025-24970/58056) — 直接利用なし、影響軽微
  • Maven 依存: logback 1.4.14 (CVE-2025-11226/CVE-2026-1225) — アップストリーム更新待ち
  • FilingTestGroup (Multifiling/Unfiling) は NemakiWare が非対応のためスキップ

テスト状況

  • CMIS TCK: 38/38 PASS
  • QA 統合テスト: 94/94 PASS
  • Playwright E2E テスト: 827+ passed / 0 failed
  • ユニットテスト: 全件 PASS

謝辞

このリリースは多くの貢献と長期にわたる開発の成果です。CMIS コミュニティおよびすべてのコントリビューターに感謝いたします。



NemakiWare 3.1.0 Release Notes (English)

Release Date: 2026-03-16

NemakiWare 3.1.0 is the largest major update since 2.4.0. It includes a complete technology stack modernization, enterprise authentication enhancements, a modern UI rebuild, and extensive performance and security improvements.


Highlights

Platform Modernization

  • Migrated to Java 21 with Virtual Threads support
  • Full migration to Jakarta EE 11 (javax → jakarta namespace)
  • Upgraded to Spring Framework 7
  • Adopted Tomcat 11 (Jakarta Servlet 6.1)
  • Apache Chemistry OpenCMIS 1.1.0-nemakiware (custom Jakarta EE build)

Modern UI

  • Brand new SPA built with React 19 + TypeScript + Vite 7 + Ant Design 5
  • Retired the legacy Ruby on Rails client (NemakiShare)
  • Internationalization (Japanese / English)
  • Responsive design

Enterprise Authentication

  • SAML 2.0 authentication (POST binding ACS, SLO LogoutRequest, signature verification)
  • OIDC authentication (Google / Microsoft)
  • WebAuthn passkey authentication
  • Setup Wizard for guided initial configuration

Cloud Integration

  • Google Workspace / Microsoft Entra ID directory sync
  • Google Drive / OneDrive Cloud Drive integration

New Features

CMIS Compliance

  • ContentChanges API implementation (incremental sync via change log tokens)
  • BulkUpdateProperties method implementation
  • CMIS 1.1 Browser Binding / Atom Binding / Web Services Binding support
  • Full secondary types support
  • Type definition CRUD (create, update, delete)

Content Management

  • Import / Export improvements (overwrite by name, relationship support, ACL-aware export, ID remapping)
  • Archive management enhancements (full-text search, bulk operations, archive download)
  • Webhooks (CMIS permission checks, CHILD_BATCH delivery, persistent delivery logs)
  • Server-side pagination for handling large document sets

AI & Search

  • RAG semantic search (TEI / Amazon Bedrock embeddings)
  • MCP (Model Context Protocol) server for AI agent integration
  • Solr multi-language search (text_ja + text_en dual indexing)

Virtual Threads

  • All HTTP requests processed on Virtual Threads via Tomcat
  • Application-level ThreadFactory unified to Virtual Threads
  • Significant improvement in concurrent connection handling

Performance Improvements

  • Parallelized deleteTree for faster bulk deletion
  • O(1) CouchDB view optimization for getChildByName
  • getLatestChange() optimized from full-load to limit=1 (OOM fix)
  • Group update changed to diff-based approach (eliminated full-group scan)
  • Streaming ZIP import processing
  • Resolved 5 N+1 query issues

Security Fixes

  • SAML signature wrapping attack mitigation (Reference URI DOM resolution + duplicate-ID defense)
  • SAML DEFLATE DoS prevention (10MB limit)
  • Enhanced XXE defense
  • Export ACL leak prevention (CAN_GET_ACL permission check)
  • Webhook REST API migrated to CMIS permission checks
  • ACP import size limit enforcement
  • Cloud-only user password/passkey restrictions
  • PDF.js CVE-2024-4367 addressed (react-pdf 10.0.1)
  • Zero npm vulnerabilities (dompurify 3.3.2, immutable 3.8.3)
  • All Dependabot alerts resolved

Breaking Changes

System Requirements

  • Java 21 required (Java 8/11/17 no longer supported)
  • Tomcat 11 required (Tomcat 7/8/9 no longer supported)
  • CouchDB 3.x required

Deprecations

  • NemakiShare (Ruby on Rails client) retired → replaced by React SPA
  • Legacy modules removed (setup, action, util, etc.)
  • javax namespace classes → fully migrated to jakarta
  • SLF4J 1.7 → unified to 2.0

API

  • CMIS Atom/Browser Binding endpoint paths remain unchanged
  • Some REST API permission models have changed (Webhook API: admin-only → CMIS permission checks)

Upgrade Guide

Upgrading from 2.4.0

  1. Install Java 21
  2. Switch to Tomcat 11
  3. Upgrade to CouchDB 3.x (if not already)
  4. Deploy core.war to Tomcat's webapps/
  5. Complete initial configuration via the Setup Wizard (shown on first launch)
  6. Rebuild Solr cores (schema changes required)

Note: CouchDB data from 2.4.0 is generally compatible, but view structure changes will trigger automatic migration on first startup.


Known Issues

  • Maven dependency: netty 4.1.97 (via odata-server-core, CVE-2025-24970/58056) — not directly used, minimal impact
  • Maven dependency: logback 1.4.14 (CVE-2025-11226/CVE-2026-1225) — awaiting upstream update
  • FilingTestGroup (Multifiling/Unfiling) skipped as NemakiWare does not support these capabilities

Test Status

  • CMIS TCK: 38/38 PASS
  • QA Integration Tests: 94/94 PASS
  • Playwright E2E Tests: 827+ passed / 0 failed
  • Unit Tests: All PASS

Acknowledgments

This release is the culmination of extensive development and many contributions. We thank the CMIS community and all contributors for their support.

2.4.0

Choose a tag to compare

@MoritakaSoma MoritakaSoma released this 04 Aug 02:44

Release Note ( English )

Installer file : NemakiWareInstaller-2.4.0.jar (Windows/Mac/Linux etc) .
How to Install and execute, See wiki page


リリースノート ( 日本語 )

おもな変更点は以下の通りです。

  • バンドルTomcatのバージョンを9.0.37に変更
  • Solr Index同期問題の修正
  • リレーションシップの不具合の修正

インストーラはこのポストに添付されている以下のファイルです: NemakiWareInstaller-2.4.0.jar (Windows/Mac/Linux)
インストールと実行の仕方は NemakiWare Wikiのインストール方法 を参照してください。

2.3.6 以前からバージョンアップされる場合

CouchDBに新しいビューを追加しないとフォルダが作成できません。2.3.6以前からバージョンアップされる場合は、お手数ですが 2.3.8 のリリースノートを参照下さい。

2.3.16

2.3.16 Pre-release
Pre-release

Choose a tag to compare

@linzhixing linzhixing released this 26 Aug 08:39

Release Note ( English )

Installer file : NemakiWareInstaller-2.3.16.jar (Windows/Mac/Linux etc) .
How to Install and execute, See wiki page


リリースノート ( 日本語 )

おもな変更点は以下の通りです。

  • deleteTreeメソッドのスレッドリークを解消
    (フォルダ以外はマルチスレッドで全階層まとめて削除、その後フォルダは下の階層から順にシングルスレッドで削除)

インストーラはこのポストに添付されている以下のファイルです: NemakiWareInstaller-2.3.16.jar (Windows/Mac/Linux)
インストールと実行の仕方は NemakiWare Wikiのインストール方法 を参照してください。

2.3.6 以前からバージョンアップされる場合

CouchDBに新しいビューを追加しないとフォルダが作成できません。2.3.6以前からバージョンアップされる場合は、お手数ですが 2.3.8 のリリースノートを参照下さい。

2.3.15

Choose a tag to compare

@linzhixing linzhixing released this 21 Jun 04:18

Release Note ( English )

Installer file : NemakiWareInstaller-2.3.15.jar (Windows/Mac/Linux etc) .
How to Install and execute, See wiki page


リリースノート ( 日本語 )

おもな変更点は以下の通りです。

  • フォルダ内要素の取得(getChildrenメソッド)をキャッシュ化
  • 各CMISメソッドに対して、オブジェクト単位でReadWriteロックを実装

インストーラはこのポストに添付されている以下のファイルです: NemakiWareInstaller-2.3.15.jar (Windows/Mac/Linux)
インストールと実行の仕方は NemakiWare Wikiのインストール方法 を参照してください。

2.3.6 以前からバージョンアップされる場合

CouchDBに新しいビューを追加しないとフォルダが作成できません。2.3.6以前からバージョンアップされる場合は、お手数ですが 2.3.8 のリリースノートを参照下さい。

2.3.13

Choose a tag to compare

@linzhixing linzhixing released this 02 Jun 06:52

Release Note ( English )

Installer file : NemakiWareInstaller-2.3.13.jar (Windows/Mac/Linux etc) .
How to Install and execute, See wiki page


リリースノート ( 日本語 )

おもな変更点は以下の通りです。

  • フォルダ内要素の取得(getChildrenメソッド)をキャッシュ化
  • 各CMISメソッドに対して、オブジェクト単位でReadWriteロックを実装

インストーラはこのポストに添付されている以下のファイルです: NemakiWareInstaller-2.3.13.jar (Windows/Mac/Linux)
インストールと実行の仕方は NemakiWare Wikiのインストール方法 を参照してください。

2.3.6 以前からバージョンアップされる場合

CouchDBに新しいビューを追加しないとフォルダが作成できません。2.3.6以前からバージョンアップされる場合は、お手数ですが 2.3.8 のリリースノートを参照下さい。

2.3.11

Choose a tag to compare

@sixpetals sixpetals released this 24 Mar 09:59

Release Note ( English )

Installer file : NemakiWareInstaller-2.3.11.jar (Windows/Mac/Linux etc) .
How to Install and execute, See wiki page


リリースノート ( 日本語 )

おもな変更点は以下の通りです。

  • リポジトリのルートディレクトリにログインせずに入ったとき、Login画面にリダイレクトされない問題を改善

インストーラはこのポストに添付されている以下のファイルです: NemakiWareInstaller-2.3.11.jar (Windows/Mac/Linux)
インストールと実行の仕方は NemakiWare Wikiのインストール方法 を参照してください。

2.3.6 以前からバージョンアップされる場合

CouchDBに新しいビューを追加しないとフォルダが作成できません。2.3.6以前からバージョンアップされる場合は、お手数ですが 2.3.8 のリリースノートを参照下さい。