diff --git a/.gitignore b/.gitignore
index d211df20..47d79c07 100644
--- a/.gitignore
+++ b/.gitignore
@@ -33,5 +33,5 @@ hs_err_pid*
# Ignore Gradle build output directory
.DS_Store
-gradle.properties
+#gradle.properties
xyz.hotchpotch.hogandiff/src/main/resources/xyz/hotchpotch/hogandiff/google/credentials.json
diff --git a/.settings/org.eclipse.buildship.core.prefs b/.settings/org.eclipse.buildship.core.prefs
index 3f027cfc..808052ef 100644
--- a/.settings/org.eclipse.buildship.core.prefs
+++ b/.settings/org.eclipse.buildship.core.prefs
@@ -5,7 +5,7 @@ connection.gradle.distribution=GRADLE_DISTRIBUTION(WRAPPER)
connection.project.dir=
eclipse.preferences.version=1
gradle.user.home=
-java.home=C\:/UserLibs/jdk-24.0.1+9-win-x64
+java.home=
jvm.arguments=
offline.mode=false
override.workspace.settings=true
diff --git a/.vscode/settings.json b/.vscode/settings.json
deleted file mode 100644
index b6802de9..00000000
--- a/.vscode/settings.json
+++ /dev/null
@@ -1,6 +0,0 @@
-{
- "java.configuration.updateBuildConfiguration": "automatic",
- "gradle.nestedProjects": true,
- "gradle.autoDetect": "on",
- "java.jdt.ls.java.home": "C:/UserLibs/jdk-24.0.1+9-win-x64"
-}
\ No newline at end of file
diff --git a/build.gradle b/build.gradle
index 834aed10..1c200dec 100644
--- a/build.gradle
+++ b/build.gradle
@@ -12,7 +12,7 @@ import java.time.format.DateTimeFormatter
import java.nio.file.Files
import java.nio.file.Path
-final def version = '0.26.2'
+final def version = '0.27.0'
final def timetag = LocalDateTime.now().format(DateTimeFormatter.ofPattern('yyyyMMdd-HHmmss-SSS'))
final def baseDir = projectDir.toPath()
@@ -83,7 +83,7 @@ task exewrapForWinX64(type: Exec, dependsOn: pickupAndExpandFatJar) {
commandLine project['myprop.cmd.exewrap'],
'-g',
// 直近の LTS-version とする。
- '-t', '21',
+ '-t', '25',
'-i', baseDir.resolve('resources/favicon.ico'),
'-v', version,
'-V', version,
@@ -220,7 +220,7 @@ task checkDependencies(type: Exec, dependsOn: pickupAndExpandFatJar) {
commandLine project['myprop.cmd.jdeps'],
// 直近の LTS-version とする。
- '--multi-release', 21,
+ '--multi-release', 25,
'--module-path', "${project['myprop.jre.mod.win.x64']};${project['myprop.jfx.sdk.win.x64']};${outputDirTmpJars}",
'-s', outputDirTmpJars.resolve("xyz.hotchpotch.hogandiff.jar")
}
diff --git a/docs/api/versions/latest b/docs/api/versions/latest
new file mode 100644
index 00000000..c462f5d5
--- /dev/null
+++ b/docs/api/versions/latest
@@ -0,0 +1,3 @@
+{
+ "version": "0.27.0",
+}
\ No newline at end of file
diff --git a/gradle.properties b/gradle.properties
new file mode 100644
index 00000000..b380452a
--- /dev/null
+++ b/gradle.properties
@@ -0,0 +1,17 @@
+org.gradle.java.home=C:/UserLibs/jdk-25+36-win-x64
+
+myprop.cmd.exewrap=C:/UserLibs/exewrap-1.6.6/x64/exewrap.exe
+myprop.cmd.jlink=C:/UserLibs/jdk-25+36-win-x64/bin/jlink
+myprop.cmd.jdeps=C:/UserLibs/jdk-25+36-win-x64/bin/jdeps
+myprop.cmd.jpackage=C:/UserLibs/jdk-25+36-win-x64/bin/jpackage
+
+myprop.userlib=C:/UserLibs
+myprop.jre.mod.win.x64=C:/UserLibs/jdk-25+36-jmods-win-x64
+myprop.jre.mod.mac.x64=C:/UserLibs/jdk-25+36-jmods-mac-x64
+
+myprop.jfx.mod.win.x64=C:/UserLibs/javafx-jmods-25-win-x64
+myprop.jfx.mod.mac.x64=C:/UserLibs/javafx-jmods-25-mac-x64
+
+myprop.jfx.sdk.win.x64=C:/UserLibs/javafx-sdk-25-win-x64/lib
+myprop.poi.src=C:/UserLibs/apache-poi-src-5.4.1-20250401
+myprop.log4j.bin=C:/UserLibs/apache-log4j-2.25.2-bin
diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties
index d30212c0..d706aba6 100644
--- a/gradle/wrapper/gradle-wrapper.properties
+++ b/gradle/wrapper/gradle-wrapper.properties
@@ -1,5 +1,5 @@
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-9.0.0-bin.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-9.1.0-bin.zip
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
diff --git a/resources/hogandiff.app/Contents/Info.plist b/resources/hogandiff.app/Contents/Info.plist
index 37668c17..e56c3199 100644
--- a/resources/hogandiff.app/Contents/Info.plist
+++ b/resources/hogandiff.app/Contents/Info.plist
@@ -15,10 +15,10 @@
xyz.hotchpotch.hogandiff
CFBundleShortVersionString
- 0.26.2
+ 0.27.0
CFBundleVersion
- 0.26.2
+ 0.27.0
CFBundleExecutable
Launcher.sh
diff --git a/xyz.hotchpotch.hogandiff/.classpath b/xyz.hotchpotch.hogandiff/.classpath
index 77bb5e85..00318829 100644
--- a/xyz.hotchpotch.hogandiff/.classpath
+++ b/xyz.hotchpotch.hogandiff/.classpath
@@ -26,7 +26,7 @@
-
+
diff --git a/xyz.hotchpotch.hogandiff/.settings/org.eclipse.buildship.core.prefs b/xyz.hotchpotch.hogandiff/.settings/org.eclipse.buildship.core.prefs
index 3f027cfc..808052ef 100644
--- a/xyz.hotchpotch.hogandiff/.settings/org.eclipse.buildship.core.prefs
+++ b/xyz.hotchpotch.hogandiff/.settings/org.eclipse.buildship.core.prefs
@@ -5,7 +5,7 @@ connection.gradle.distribution=GRADLE_DISTRIBUTION(WRAPPER)
connection.project.dir=
eclipse.preferences.version=1
gradle.user.home=
-java.home=C\:/UserLibs/jdk-24.0.1+9-win-x64
+java.home=
jvm.arguments=
offline.mode=false
override.workspace.settings=true
diff --git a/xyz.hotchpotch.hogandiff/.settings/org.eclipse.jdt.core.prefs b/xyz.hotchpotch.hogandiff/.settings/org.eclipse.jdt.core.prefs
index d1a82289..80136f37 100644
--- a/xyz.hotchpotch.hogandiff/.settings/org.eclipse.jdt.core.prefs
+++ b/xyz.hotchpotch.hogandiff/.settings/org.eclipse.jdt.core.prefs
@@ -1,4 +1,4 @@
eclipse.preferences.version=1
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=21
-org.eclipse.jdt.core.compiler.compliance=21
-org.eclipse.jdt.core.compiler.source=21
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=25
+org.eclipse.jdt.core.compiler.compliance=25
+org.eclipse.jdt.core.compiler.source=25
diff --git a/xyz.hotchpotch.hogandiff/build.gradle b/xyz.hotchpotch.hogandiff/build.gradle
index 4c5bb365..4bd27847 100644
--- a/xyz.hotchpotch.hogandiff/build.gradle
+++ b/xyz.hotchpotch.hogandiff/build.gradle
@@ -11,9 +11,9 @@ repositories {
dependencies {
implementation 'org.apache.poi:poi-ooxml:5.4.1'
- implementation 'org.apache.logging.log4j:log4j-core:2.25.1'
+ implementation 'org.apache.logging.log4j:log4j-core:2.25.2'
implementation 'com.google.oauth-client:google-oauth-client-jetty:1.39.0'
- implementation 'com.google.apis:google-api-services-drive:v3-rev20250723-2.0.0'
+ implementation 'com.google.apis:google-api-services-drive:v3-rev20250910-2.0.0'
implementation 'com.google.apis:google-api-services-oauth2:v2-rev20200213-2.0.0'
implementation 'org.json:json:20250517'
implementation 'io.github.cdimascio:dotenv-java:3.2.0'
@@ -29,8 +29,8 @@ test {
java {
// 直近の LTS-version とする。
- sourceCompatibility = JavaVersion.VERSION_21
- targetCompatibility = JavaVersion.VERSION_21
+ sourceCompatibility = JavaVersion.VERSION_25
+ targetCompatibility = JavaVersion.VERSION_25
}
tasks.withType(JavaCompile) {
@@ -39,7 +39,7 @@ tasks.withType(JavaCompile) {
javafx {
// 直近の LTS-version とする。
- version = 21
+ version = 25
modules = [ 'javafx.controls', 'javafx.fxml' ]
}
diff --git a/xyz.hotchpotch.hogandiff/gradle.properties b/xyz.hotchpotch.hogandiff/gradle.properties
index 82f06bac..8658d4e3 100644
--- a/xyz.hotchpotch.hogandiff/gradle.properties
+++ b/xyz.hotchpotch.hogandiff/gradle.properties
@@ -1 +1 @@
-org.gradle.java.home=C:/UserLibs/jdk-24.0.2+12-win-x64
+org.gradle.java.home=C:/UserLibs/jdk-25+36-win-x64
diff --git a/xyz.hotchpotch.hogandiff/gradle/wrapper/gradle-wrapper.properties b/xyz.hotchpotch.hogandiff/gradle/wrapper/gradle-wrapper.properties
index d30212c0..d706aba6 100644
--- a/xyz.hotchpotch.hogandiff/gradle/wrapper/gradle-wrapper.properties
+++ b/xyz.hotchpotch.hogandiff/gradle/wrapper/gradle-wrapper.properties
@@ -1,5 +1,5 @@
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-9.0.0-bin.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-9.1.0-bin.zip
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
diff --git "a/xyz.hotchpotch.hogandiff/messages.properties\347\256\241\347\220\206.xlsx" "b/xyz.hotchpotch.hogandiff/messages.properties\347\256\241\347\220\206.xlsx"
index 72cea35d..33d0091a 100644
Binary files "a/xyz.hotchpotch.hogandiff/messages.properties\347\256\241\347\220\206.xlsx" and "b/xyz.hotchpotch.hogandiff/messages.properties\347\256\241\347\220\206.xlsx" differ
diff --git a/xyz.hotchpotch.hogandiff/src/main/java/xyz/hotchpotch/hogandiff/AppMain.java b/xyz.hotchpotch.hogandiff/src/main/java/xyz/hotchpotch/hogandiff/AppMain.java
index 0f87bb72..799de3d1 100644
--- a/xyz.hotchpotch.hogandiff/src/main/java/xyz/hotchpotch/hogandiff/AppMain.java
+++ b/xyz.hotchpotch.hogandiff/src/main/java/xyz/hotchpotch/hogandiff/AppMain.java
@@ -1,10 +1,5 @@
package xyz.hotchpotch.hogandiff;
-import java.awt.Desktop;
-import java.io.IOException;
-import java.net.URI;
-import java.util.UUID;
-
import org.apache.poi.openxml4j.util.ZipSecureFile;
import javafx.application.Application;
@@ -25,9 +20,6 @@ public class AppMain extends Application {
// [static members] ********************************************************
- /** このアプリケーションのバージョン */
- public static final String VERSION = "v0.26.2";
-
/** このアプリケーションのドメイン(xyz.hotchpotch.hogandiff) */
public static final String APP_DOMAIN = AppMain.class.getPackageName();
@@ -53,7 +45,8 @@ public class AppMain extends Application {
/**
* このアプリケーションのエントリポイントです。
*
- * @param args アプリケーション実行時引数
+ * @param args
+ * アプリケーション実行時引数
*/
public static void main(String[] args) {
appResource.reflectArgs(args);
@@ -70,7 +63,7 @@ public static void main(String[] args) {
public void start(Stage primaryStage) throws Exception {
stage = primaryStage;
- announceNewFeature();
+ VersionMaster.announceNewFeature1();
// Zip bomb対策の制限の緩和。規定値の0.01から0.001に変更する。
// いささか乱暴ではあるものの、ファイルを開く都度ではなくここで一括で設定してしまう。
@@ -91,7 +84,7 @@ public void start(Stage primaryStage) throws Exception {
primaryStage.setTitle(
appResource.get().getString("AppMain.010")
+ " - "
- + VERSION);
+ + VersionMaster.APP_VERSION);
primaryStage.setMinHeight(
settings.get(SettingKeys.SHOW_SETTINGS)
@@ -108,21 +101,22 @@ public void start(Stage primaryStage) throws Exception {
if (settings.containsKey(SettingKeys.STAGE_MAXIMIZED)) {
primaryStage.setMaximized(settings.get(SettingKeys.STAGE_MAXIMIZED));
}
- primaryStage.heightProperty().addListener((target, oldValue, newValue) -> {
+ primaryStage.heightProperty().addListener((_, _, newValue) -> {
if (!primaryStage.isMaximized()) {
appResource.changeSetting(SettingKeys.STAGE_HEIGHT, (Double) newValue);
}
});
- primaryStage.widthProperty().addListener((target, oldValue, newValue) -> {
+ primaryStage.widthProperty().addListener((_, _, newValue) -> {
if (!primaryStage.isMaximized()) {
appResource.changeSetting(SettingKeys.STAGE_WIDTH, (Double) newValue);
}
});
- primaryStage.maximizedProperty().addListener((target, oldValue, newValue) -> {
+ primaryStage.maximizedProperty().addListener((_, _, newValue) -> {
appResource.changeSetting(SettingKeys.STAGE_MAXIMIZED, newValue);
});
primaryStage.show();
+ VersionMaster.announceNewFeature2();
MainController controller = loader.getController();
if (controller.isReady().getValue()) {
@@ -130,32 +124,4 @@ public void start(Stage primaryStage) throws Exception {
controller.execute();
}
}
-
- /**
- * ユーザーが現在のバージョンを初めて起動した際の処理を行います。
- */
- private void announceNewFeature() {
- // UUIDが未採番の場合は採番する。
- UUID uuid = appResource.settings().get(SettingKeys.CLIENT_UUID);
- if (uuid == null) {
- appResource.changeSetting(SettingKeys.CLIENT_UUID, UUID.randomUUID());
- }
-
- // 前回までの利用Versionを調べ、新バージョンの初回起動の場合は新バージョンに応じた処理を行う。
- String prevVersion = appResource.settings().get(SettingKeys.APP_VERSION);
- if (!VERSION.equals(prevVersion)) {
-
- assert VERSION.equals("v0.26.2");
- // v0.26.2 では次を行う。
- // ・新機能紹介ページの表示
-
- try {
- Desktop.getDesktop().browse(URI.create("https://hogandiff.hotchpotch.xyz/releasenotes/v0-26-2/"));
- } catch (IOException e) {
- e.printStackTrace();
- // nop
- }
- appResource.changeSetting(SettingKeys.APP_VERSION, VERSION);
- }
- }
}
diff --git a/xyz.hotchpotch.hogandiff/src/main/java/xyz/hotchpotch/hogandiff/AppResource.java b/xyz.hotchpotch.hogandiff/src/main/java/xyz/hotchpotch/hogandiff/AppResource.java
index ab6ab5fd..e44a1a5c 100644
--- a/xyz.hotchpotch.hogandiff/src/main/java/xyz/hotchpotch/hogandiff/AppResource.java
+++ b/xyz.hotchpotch.hogandiff/src/main/java/xyz/hotchpotch/hogandiff/AppResource.java
@@ -53,7 +53,7 @@ public class AppResource {
}
/** プロパティファイルの相対パス */
- private static Path APP_PROP_PATH = USER_HOME != null
+ public static Path APP_PROP_PATH = USER_HOME != null
? USER_HOME.resolve("hogandiff.properties")
: null;
diff --git a/xyz.hotchpotch.hogandiff/src/main/java/xyz/hotchpotch/hogandiff/SettingKeys.java b/xyz.hotchpotch.hogandiff/src/main/java/xyz/hotchpotch/hogandiff/SettingKeys.java
index facb230d..a6f684ff 100644
--- a/xyz.hotchpotch.hogandiff/src/main/java/xyz/hotchpotch/hogandiff/SettingKeys.java
+++ b/xyz.hotchpotch.hogandiff/src/main/java/xyz/hotchpotch/hogandiff/SettingKeys.java
@@ -3,10 +3,10 @@
import java.awt.Color;
import java.lang.reflect.Modifier;
import java.nio.file.Path;
+import java.time.Instant;
import java.util.Locale;
import java.util.Map;
import java.util.Set;
-import java.util.UUID;
import java.util.function.Function;
import java.util.stream.Collectors;
import java.util.stream.Stream;
@@ -28,19 +28,11 @@ public class SettingKeys {
// [static members] ********************************************************
private static Function decodeNotSupported(String msg) {
- return str -> {
+ return _ -> {
throw new UnsupportedOperationException(msg);
};
}
- /** クライアント上で生成されたUUID */
- public static final Key CLIENT_UUID = new Key<>(
- "client.uuid",
- () -> null,
- UUID::toString,
- UUID::fromString,
- true);
-
/** このアプリケーションの実行したことのあるバージョン */
public static final Key APP_VERSION = new Key<>(
"application.appVersion",
@@ -117,7 +109,7 @@ private static Function decodeNotSupported(String msg) {
public static final Key