Skip to content

Releases: TeamKun/TeamKUNPluginManager

【v3】v3.0.0-pre8

29 Dec 18:01
9f32404
Compare
Choose a tag to compare
【v3】v3.0.0-pre8 Pre-release
Pre-release

KPMv3 pre-8

  • feat: KPM の自己アップグレーダを実装しました。
  • fix: キャッシュが正常にクリアされない問題を解決しました。
    KPM は、再起動時に自動でキャッシュをクリアするようになります。
  • fix: 自動クロール時に、プラグインメタデータの削除がうまくいかない問題を修正しました。
  • fix: 再起動時に、自動クロールがされてしまう問題を修正しました。

KPM アップグレーダについて

KPM では、現在姉妹プロジェクトによるアップグレードを提供してます。
ですが、トークンや設定ファイルの移行が難しいこと等を考慮し、 KPM の自動アップグレードを開発することになりました。
このアップグレーダは、 /kpm upgrade-kpm コマンドから利用可能です。

注意

このアップデートから、 KPM のアーティファクトの大きさが実質的に 2 倍になります。
これはアップグレーダを別プラグインとして分け、その中に KPM デーモンを内包しているためです。

【v3】v3.0.0-pre7

25 Dec 13:05
0dbdb22
Compare
Choose a tag to compare
【v3】v3.0.0-pre7 Pre-release
Pre-release

KPMv3 pre-7

  • chore: ライセンスの年表記を、 2021 から 2022 にしました。
  • feat: アンインストール時に一時的にプラグインを無効にし、あとから復旧させる機能を実装しました。
  • feat: プラグイン情報コマンドを強化しました。
  • feat: RawURLResolver (生 URL を解決するリゾルバ) を実装しました。
    この機能は、以前のプレリリースでデグレードしていました。
  • feat: GitHub における、複数プラグイン(バージョン)の自動選択機能を強化しました。
  • feat: InstallArgument が、 ResolveResult を受け付けるようになりました。
  • feat: プラグインアップグレード機能を実装しました。(/kpm update)
  • feat: コネクションリーク・ディテクタ を実装しました。
  • feat: KPM 情報ファイルの upgrade を考慮するようにしました。
  • feat: トークン設定時やサーバ起動時に、そのトークンが有効かどうかチェックするようにしました。
  • feat: v 接頭辞が許可されるようになりました。
  • refactor: NotfoundResolver => FallbackResolver
  • fix: onEnable() の実行中のエラーをハンドリングしました。

追加されたフック

  • RecipesUnregisteringHook
    レシピをサーバから削除するときに呼び出されます。

追加された KPM 情報ファイル エントリ

  • recipes
    プラグインが登録したレシピを識別するために使用します。

【v3】v3.0.0-pre6

28 Oct 14:04
3d6688f
Compare
Choose a tag to compare
【v3】v3.0.0-pre6 Pre-release
Pre-release

KPMv3 pre-6 [BREAKING CHANGE]

  • feat: Token生成用のインストーラを作成しました。
  • feat: KPM情報ファイルのベースを作成しました。
  • feat: KPMフックのベースを作成しました。
  • fix: 新インストーラにおいて、 プライベートリポジトリで正しく動作しなかった問題を修正しました。
  • fix: 新インストーラにおいて、インストールが例外で終了したときにリソースが開放されない問題を修正しました。
  • refactor: フロントエンド, バックエンドで分離し、マルチモジュール化しました。
  • refactor: すべてのメンバ変数参照に this. 修飾子を付加しました。
  • refactor !: ベースパッケージ名を変更しました。

KPM情報ファイル

KPM情報ファイルは、プラグインのKPM用付加情報を表すファイルです。
現在は以下の機能を実装しています:

  • 対応してるKPMのバージョン指定
    KPMフック(後述)のバージョン等の互換性維持のための必須パラメタです。
  • KPMフックを受け取るクラスの指定

作成の理由

KPMで多々あった課題として、プラグインの依存関係をうまく解決できないという問題がありました。
以前までは、エイリアス機能を作成し、特定の依存関係の名前に対して別のURLを外部から指定することで解決していました。
ですが、この方法ではいずれエイリアスのDBがパンクしたり、より柔軟な対応が出来ません。
そのためプラグイン自体に依存関係解決の指示を埋め込むことが予定されました。

使用法

  1. kpm.yml というファイルを作成します。
    Mavenの場合:src/main/resources/kpm.yml に作成してください。
    その他:ビルド成果物のディレクトリ構成が プラグイン名.jar/kpm.yml となるように作成してください。
  2. KPM情報ファイルをスキームの通りに記述します。
  3. プラグインを配置してサーバ再起動するか、KPMでインストールします。

KPMフック

KPMを用いたプラグインの操作時に、KPMがオプションで任意コードを実行する機能です。
現在は以下の機能を実装しています:

  • KPMを用いたインストール完了時のフック
  • KPMを用いたアンインストール前のフック
  • KPMを用いたアンインストール完了時のフック

使用法

  1. KPMフックを受け取る受信クラスを作成します。
  • 受信クラスのアクセスレベルはpublicである必要があります(MUSTST)。
  • 受信クラスはKPMHookRecipientを継承する必要があります(MUST)。
  • 受信クラスにはpublicで、単一のKPMDaemonのみを受け取るコンストラクタが必要です(MUST)。
    例:
package net.kunmc.lab.exampleplugin;

import net.kunmc.lab.kpm.KPMDaemon;
import net.kunmc.lab.kpm.hook.KPMHookRecipient;

public TestHookRecipient extends KPMHookRecipient {
    public TestHookRecipient(KPMDaemon daemon) {
        super(daemon);
    }
}
  1. フックを受け取る受信メソッドを作成します。
  • 受信メソッドのアクセスレベルはpublicである必要があります(MUST)。
  • 受信メソッドには@HookListenerアノテーションが必要です(MUST)。
  • 受信メソッドは、KPMHookの派生クラスの引数のみを受け取るシグニチャが必要です(MUST)。
    PluginInstalledHook を受け取る例:
package net.kunmc.lab.exampleplugin;

import net.kunmc.lab.kpm.KPMDaemon;
import net.kunmc.lab.kpm.hook.KPMHookRecipient;
import net.kunmc.lab.kpm.hook.hooks.PluginInstalledHook;

public TestHookRecipient extends KPMHookRecipient {
    public TestHookRecipient(KPMDaemon daemon) {
        super(daemon);
    }

    @HookListener
    public void onInstall(PluginInstalledHook hook)
    {
        System.out.println("Plugin has installed by KPM!");
        System.out.println("Query: " + hook.getResolveQuery());
        System.out.println("Operator: " + hook.getOperator());
    }
}
  1. KPM情報ファイルのhooksを記述します。
    例:
hooks: ["net.kunmc.lab.exampleplugin.TestHookRecipient"]
  1. プラグインを配置してサーバ再起動するか、KPMでインストールします。

フロントエンドとバックエンドの分離&マルチモジュール化

フロントエンドとバックエンドのコードを完全に分離しました。
これを行うに当たり、以下の機能が実装されました:

  • KPMシグナル
    インストーラはKPMシグナルを用いてフロントエンドと通信します。
  • KPMのデーモン化
    KPMのコアをデーモンとして集約することで、KPM API(予定)のアクセスがより簡単になります。

また、フロントエンドとバックエンドが分離されたことにより、フロントエンドのJavadocは完全に削除されました。


BREAKING CHANGE

  • KPMのベースのパッケージを net.kunmc.lab.teamkunpluginmanager から net.kunmc.lab.kpm に変更しました。
    これは、インストーラの複雑化とパッケージの肥大化による影響を回避するために行いました。

【v3】v3.0.0-pre5

09 Oct 15:06
f61c7c2
Compare
Choose a tag to compare
【v3】v3.0.0-pre5 Pre-release
Pre-release

KPMv3 pre-5

  • Transaction を追加し、SQL関係のコードの読みやすさが向上しました。
  • エイリアス機能を書き直し、強化しました。
  • 自動削除機能を書き直しし、新しいインストーラのモデルに合わせました。
  • 不要データ削除機能を書き直しし、新しいインストーラのモデルに合わせました。
  • 旧Installerを完全に削除しました。
  • 古いセッションコントロールシステムを削除しました。

新しいエイリアス

  • エイリアスの管理がより堅牢になりました。
  • エイリアスのデータベースに、エイリアスのソースに含め、各エイリアスに紐づけしました。
  • エイリアスのソースを以下の3つのタイプに分けました:
    • WEB_SERVER: Webサーバから取得する、自動アップデート可能なソースです。
    • LOCAL_DEFINITIONS: ローカルに存在する、自動アップデート不可能なソースです。 これの操作はまだ実装されていません。
    • DYNAMIC: プラグインが動的に追加するエイリアスです。

【v3】v3.0.0-pre4

02 Oct 09:05
2f390cb
Compare
Choose a tag to compare
【v3】v3.0.0-pre4 Pre-release
Pre-release

KPMv3 pre-4

  • 以前の依存関係ツリーを削除しました.
  • 新たな依存関係ツリーのロジックを導入し, プラグインにメタデータを付与するようにしました.
  • これに伴い, /kpm info コマンドが強化されました.

プラグインメタデータ(メタ情報)

  • すべてのプラグインに以下の情報を付与し, SQLiteで管理します:
    • インストール日時
    • インストール者
    • 解決クエリ
    • 依存関係かどうか

インストール者

  • インストールが何によって行われたかを表します.
  • 値は以下の列挙値です:
    • SERVER_ADMIN: サーバの管理者によってインストールされた
    • KPM_DEPENDENCY_RESOLVER: 依存関係解決時にKPMによってインストールされた
    • KPM_PLUGIN_UPDATER: プラグインのアップデートでKPMによってインストールされた(未実装)
    • UNKNOWN: 未知の方法でインストールされた(これには, 他のプラグインマネージャによってインストールされたプラグインや, オフライン時にjarを手動で追加してインストールした方法も含まれます)

関連Issue


Full Changelog: v3.0.0-pre3...v3.0.0-pre4

【V3】KPMv3 pre-3

15 Sep 08:46
1c11425
Compare
Choose a tag to compare
【V3】KPMv3 pre-3 Pre-release
Pre-release

KPMv3 pre-3

  • GitHubのトークンの保存を暗号化しました(AES).
    =>権限を見直し, セキュリティを高めました.
  • Register コマンド関連のデグレードを修正しました.

関連Issue


Full Changelog: v3.0.0-pre2...v3.0.0-pre3

【V3】KPMv3 pre-2

15 Sep 07:31
d50754d
Compare
Choose a tag to compare
【V3】KPMv3 pre-2 Pre-release
Pre-release

v3.0.0-pre2

  • Installer.java を書き直し, シグナルシステムを導入しました。

シグナルシステム

  • フロントエンドとバックエンドとを分離するためのシステムです。
  • バックエンド(インストーラ)からはシグナルのみが送信され, フロントエンドでシグナルを処理します.

Full Changelog: v3.0.0-pre1...v3.0.0-pre2

【V3】KPMv3 pre-1

15 Sep 07:29
Compare
Choose a tag to compare
【V3】KPMv3 pre-1 Pre-release
Pre-release

v3.0.0-pre1

KPMv3

  • KPMのロジックを書き直したものを, KPMv3として公開することになりました。
  • 機能実装/削除予定, メモ等は次のプロジェクトを参照してください:v3リリースに向けて
  • これについてのwikiはこちらです。

機能追加

  • 新しいプラグインリゾルバを実装しました。
    • カスタマイズ性に優れた階層式リゾルバを実装しました。
    • この機能はKPMv3リリース時に API として公開される予定です。
  • 新しいプラグイン解決のクエリを実装しました。

機能削除

  • インポート/エクスポート 機能を削除しました。
    • この機能は, v2の後半から削除が予定されていましたが、今回 v3 という節目で削除されることになりました。
    • 詳しくはこちら

Full Changelog: v2.8.3...v3.0.0-pre1

【修正】細かなバグを修正しました。

08 Apr 05:51
Compare
Choose a tag to compare

v2.8.3

概要

  • 以下の 2 つの細かなバグを修正しました。

バグ

  • プラグインのダウンロードに失敗すると、 0 バイトの空ファイルが残るバグ
  • Private リポジトリのプラグインがダウンロードできないバグ

関連Issue

【対応】Paper環境の最新に対応しました。

22 Jan 21:16
Compare
Choose a tag to compare

v2.8.2

概要

  • Paper環境の最新バージョンにて、AsyncPlayerChatのNoSuchMethodExceptionを解消しました。