diff --git a/.github/pull_request_template.md b/.github/pull_request_template.md
deleted file mode 100644
index a2e42f4..0000000
--- a/.github/pull_request_template.md
+++ /dev/null
@@ -1,45 +0,0 @@
-## Description
-
-
-
-## Related Issue
-
-
-Fixes #
-
-## Type of Change
-
-
-
-- [ ] Bug fix (non-breaking change which fixes an issue)
-- [ ] New feature (non-breaking change which adds functionality)
-- [ ] Breaking change (fix or feature that would cause existing functionality to not work as expected)
-- [ ] Documentation update
-- [ ] Refactoring (no functional changes)
-- [ ] Performance improvement
-- [ ] Test coverage improvement
-
-## Checklist
-
-
-
-- [ ] My code follows the project's code style
-- [ ] I have performed a self-review of my code
-- [ ] I have commented my code, particularly in hard-to-understand areas
-- [ ] I have made corresponding changes to the documentation
-- [ ] My changes generate no new warnings
-- [ ] I have added tests that prove my fix is effective or that my feature works
-- [ ] New and existing unit tests pass locally with my changes
-- [ ] Any dependent changes have been merged and published
-
-## Testing
-
-
-
-## Screenshots (if applicable)
-
-
-
-## Additional Notes
-
-
diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml
deleted file mode 100644
index 638cada..0000000
--- a/.github/workflows/release.yml
+++ /dev/null
@@ -1,79 +0,0 @@
-name: Release
-
-on:
- push:
- tags:
- - 'v*'
-
-jobs:
- release:
- name: Release to Maven Central
- runs-on: ubuntu-latest
-
- steps:
- - name: Checkout code
- uses: actions/checkout@v4
-
- - name: Set up JDK 21
- uses: actions/setup-java@v4
- with:
- java-version: '21'
- distribution: 'temurin'
- cache: maven
- server-id: ossrh
- server-username: MAVEN_USERNAME
- server-password: MAVEN_PASSWORD
- gpg-private-key: ${{ secrets.GPG_PRIVATE_KEY }}
- gpg-passphrase: GPG_PASSPHRASE
-
- - name: Extract version from tag
- id: version
- run: echo "VERSION=${GITHUB_REF#refs/tags/v}" >> $GITHUB_OUTPUT
-
- - name: Set version
- run: mvn -B versions:set -DnewVersion=${{ steps.version.outputs.VERSION }}
-
- - name: Build and test
- run: mvn -B verify
-
- - name: Deploy to Maven Central
- run: mvn -B deploy -Prelease -DskipTests
- env:
- MAVEN_USERNAME: ${{ secrets.OSSRH_USERNAME }}
- MAVEN_PASSWORD: ${{ secrets.OSSRH_TOKEN }}
- GPG_PASSPHRASE: ${{ secrets.GPG_PASSPHRASE }}
-
- - name: Create GitHub Release
- uses: softprops/action-gh-release@v1
- with:
- generate_release_notes: true
- files: |
- **/target/*.jar
- env:
- GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
-
- publish-docs:
- name: Publish Documentation
- runs-on: ubuntu-latest
- needs: release
-
- steps:
- - name: Checkout code
- uses: actions/checkout@v4
-
- - name: Set up JDK 21
- uses: actions/setup-java@v4
- with:
- java-version: '21'
- distribution: 'temurin'
- cache: maven
-
- - name: Generate Javadoc
- run: mvn -B javadoc:aggregate
-
- - name: Deploy to GitHub Pages
- uses: peaceiris/actions-gh-pages@v3
- with:
- github_token: ${{ secrets.GITHUB_TOKEN }}
- publish_dir: ./target/site/apidocs
- destination_dir: api/${{ github.ref_name }}
diff --git a/CHANGELOG.md b/CHANGELOG.md
new file mode 100644
index 0000000..d1a4531
--- /dev/null
+++ b/CHANGELOG.md
@@ -0,0 +1,37 @@
+# Changelog
+
+All notable changes to this project will be documented in this file.
+
+The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
+and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
+
+## [Unreleased]
+
+## [0.2.0] - 2026-02-24
+
+### Changed
+
+- Upgraded nostr-java from 1.2.0 to 2.0.0
+- Migrated dependency artifacts to nostr-java 2.0 module structure:
+ - `nostr-java-api` replaced by `nostr-java-core`
+ - `nostr-java-crypto` replaced by `nostr-java-core`
+ - `nostr-java-id` replaced by `nostr-java-identity`
+ - `nostr-java-encryption` replaced by `nostr-java-identity`
+ - Removed `nostr-java-base` (merged into core)
+- Replaced `PubKeyTag` with `GenericTag` for NIP-46 event tag handling
+
+## [0.1.1] - 2025-01-01
+
+### Fixed
+
+- Handle null passphrase in key management methods
+- Address Qodana and SpotBugs static analysis issues
+- Update Bottin repository link in README.md
+
+### Changed
+
+- Update Java version requirement to 21
+
+## [0.1.0] - 2025-01-01
+
+- Initial release
diff --git a/nsecbunker-account/pom.xml b/nsecbunker-account/pom.xml
index 3793d1f..72fef9b 100644
--- a/nsecbunker-account/pom.xml
+++ b/nsecbunker-account/pom.xml
@@ -8,7 +8,7 @@
xyz.tcheeric
nsecbunker-java
- 0.1.1
+ 0.2.0
nsecbunker-account
diff --git a/nsecbunker-admin/pom.xml b/nsecbunker-admin/pom.xml
index 26ce241..cda82c0 100644
--- a/nsecbunker-admin/pom.xml
+++ b/nsecbunker-admin/pom.xml
@@ -8,7 +8,7 @@
xyz.tcheeric
nsecbunker-java
- 0.1.1
+ 0.2.0
nsecbunker-admin
@@ -35,11 +35,11 @@
xyz.tcheeric
- nostr-java-id
+ nostr-java-identity
xyz.tcheeric
- nostr-java-crypto
+ nostr-java-core
xyz.tcheeric
diff --git a/nsecbunker-admin/src/main/java/xyz/tcheeric/nsecbunker/admin/NsecBunkerAdminClient.java b/nsecbunker-admin/src/main/java/xyz/tcheeric/nsecbunker/admin/NsecBunkerAdminClient.java
index 0e58b4a..6535e5e 100644
--- a/nsecbunker-admin/src/main/java/xyz/tcheeric/nsecbunker/admin/NsecBunkerAdminClient.java
+++ b/nsecbunker-admin/src/main/java/xyz/tcheeric/nsecbunker/admin/NsecBunkerAdminClient.java
@@ -511,9 +511,7 @@ private String createAdminEventJson(String encryptedContent) {
event.setCreatedAt(createdAt);
// Add p tag for recipient
- nostr.event.tag.PubKeyTag pTag = new nostr.event.tag.PubKeyTag(
- new nostr.base.PublicKey(bunkerPubkeyHex));
- event.addTag(pTag);
+ event.addTag(nostr.event.tag.GenericTag.of("p", bunkerPubkeyHex));
// Update and sign
event.update();
@@ -540,9 +538,10 @@ private String serializeEvent(nostr.event.impl.GenericEvent event) {
if (i > 0) sb.append(",");
nostr.event.BaseTag tag = tags.get(i);
sb.append("[\"").append(tag.getCode()).append("\"");
- // Handle p tag
- if (tag instanceof nostr.event.tag.PubKeyTag pt) {
- sb.append(",\"").append(pt.getPublicKey().toString()).append("\"");
+ if (tag instanceof nostr.event.tag.GenericTag gt) {
+ for (String param : gt.getParams()) {
+ sb.append(",\"").append(param).append("\"");
+ }
}
sb.append("]");
}
diff --git a/nsecbunker-client/pom.xml b/nsecbunker-client/pom.xml
index 2e98e8c..f5dad81 100644
--- a/nsecbunker-client/pom.xml
+++ b/nsecbunker-client/pom.xml
@@ -8,7 +8,7 @@
xyz.tcheeric
nsecbunker-java
- 0.1.1
+ 0.2.0
nsecbunker-client
@@ -35,11 +35,15 @@
xyz.tcheeric
- nostr-java-api
+ nostr-java-event
xyz.tcheeric
- nostr-java-crypto
+ nostr-java-identity
+
+
+ xyz.tcheeric
+ nostr-java-core
diff --git a/nsecbunker-connection/pom.xml b/nsecbunker-connection/pom.xml
index 4ea604e..90b2422 100644
--- a/nsecbunker-connection/pom.xml
+++ b/nsecbunker-connection/pom.xml
@@ -8,7 +8,7 @@
xyz.tcheeric
nsecbunker-java
- 0.1.1
+ 0.2.0
nsecbunker-connection
@@ -27,7 +27,7 @@
xyz.tcheeric
- nostr-java-api
+ nostr-java-event
diff --git a/nsecbunker-core/pom.xml b/nsecbunker-core/pom.xml
index c58de7b..50022f8 100644
--- a/nsecbunker-core/pom.xml
+++ b/nsecbunker-core/pom.xml
@@ -8,7 +8,7 @@
xyz.tcheeric
nsecbunker-java
- 0.1.1
+ 0.2.0
nsecbunker-core
@@ -19,10 +19,6 @@
-
- xyz.tcheeric
- nostr-java-api
-
xyz.tcheeric
nostr-java-event
diff --git a/nsecbunker-monitoring/pom.xml b/nsecbunker-monitoring/pom.xml
index 587a720..8cc45c8 100644
--- a/nsecbunker-monitoring/pom.xml
+++ b/nsecbunker-monitoring/pom.xml
@@ -8,7 +8,7 @@
xyz.tcheeric
nsecbunker-java
- 0.1.1
+ 0.2.0
nsecbunker-monitoring
diff --git a/nsecbunker-protocol/pom.xml b/nsecbunker-protocol/pom.xml
index 5570120..5fe2f6c 100644
--- a/nsecbunker-protocol/pom.xml
+++ b/nsecbunker-protocol/pom.xml
@@ -8,7 +8,7 @@
xyz.tcheeric
nsecbunker-java
- 0.1.1
+ 0.2.0
nsecbunker-protocol
@@ -31,15 +31,11 @@
xyz.tcheeric
- nostr-java-api
+ nostr-java-core
xyz.tcheeric
- nostr-java-crypto
-
-
- xyz.tcheeric
- nostr-java-encryption
+ nostr-java-identity
diff --git a/nsecbunker-spring-boot-starter/pom.xml b/nsecbunker-spring-boot-starter/pom.xml
index 6115842..672ae5c 100644
--- a/nsecbunker-spring-boot-starter/pom.xml
+++ b/nsecbunker-spring-boot-starter/pom.xml
@@ -8,7 +8,7 @@
xyz.tcheeric
nsecbunker-java
- 0.1.1
+ 0.2.0
nsecbunker-spring-boot-starter
diff --git a/nsecbunker-tests/nsecbunker-chaos/pom.xml b/nsecbunker-tests/nsecbunker-chaos/pom.xml
index 4a62193..d7b7897 100644
--- a/nsecbunker-tests/nsecbunker-chaos/pom.xml
+++ b/nsecbunker-tests/nsecbunker-chaos/pom.xml
@@ -7,7 +7,7 @@
xyz.tcheeric
nsecbunker-tests
- 0.1.1
+ 0.2.0
nsecbunker-chaos
diff --git a/nsecbunker-tests/nsecbunker-e2e/pom.xml b/nsecbunker-tests/nsecbunker-e2e/pom.xml
index d922128..9d75f67 100644
--- a/nsecbunker-tests/nsecbunker-e2e/pom.xml
+++ b/nsecbunker-tests/nsecbunker-e2e/pom.xml
@@ -7,7 +7,7 @@
xyz.tcheeric
nsecbunker-tests
- 0.1.1
+ 0.2.0
nsecbunker-e2e
@@ -51,21 +51,17 @@
-
- xyz.tcheeric
- nostr-java-api
-
xyz.tcheeric
nostr-java-event
xyz.tcheeric
- nostr-java-id
+ nostr-java-identity
xyz.tcheeric
- nostr-java-crypto
+ nostr-java-core
diff --git a/nsecbunker-tests/nsecbunker-it/pom.xml b/nsecbunker-tests/nsecbunker-it/pom.xml
index e826aa0..67f5d01 100644
--- a/nsecbunker-tests/nsecbunker-it/pom.xml
+++ b/nsecbunker-tests/nsecbunker-it/pom.xml
@@ -7,7 +7,7 @@
xyz.tcheeric
nsecbunker-tests
- 0.1.1
+ 0.2.0
nsecbunker-it
diff --git a/nsecbunker-tests/nsecbunker-it/src/test/java/xyz/tcheeric/nsecbunker/it/RelayContainerIntegrationTest.java b/nsecbunker-tests/nsecbunker-it/src/test/java/xyz/tcheeric/nsecbunker/it/RelayContainerIntegrationTest.java
index 2dd8e91..5934e68 100644
--- a/nsecbunker-tests/nsecbunker-it/src/test/java/xyz/tcheeric/nsecbunker/it/RelayContainerIntegrationTest.java
+++ b/nsecbunker-tests/nsecbunker-it/src/test/java/xyz/tcheeric/nsecbunker/it/RelayContainerIntegrationTest.java
@@ -2,7 +2,7 @@
import nostr.event.BaseTag;
import nostr.event.impl.GenericEvent;
-import nostr.event.tag.PubKeyTag;
+import nostr.event.tag.GenericTag;
import nostr.id.Identity;
import org.junit.jupiter.api.Tag;
import org.junit.jupiter.api.Test;
@@ -111,8 +111,10 @@ private String serializeEvent(GenericEvent event) {
}
BaseTag tag = tags.get(i);
sb.append("[\"").append(tag.getCode()).append("\"");
- if (tag instanceof PubKeyTag pubKeyTag) {
- sb.append(",\"").append(pubKeyTag.getPublicKey().toString()).append("\"");
+ if (tag instanceof GenericTag gt) {
+ for (String param : gt.getParams()) {
+ sb.append(",\"").append(param).append("\"");
+ }
}
sb.append("]");
}
diff --git a/nsecbunker-tests/nsecbunker-perf/pom.xml b/nsecbunker-tests/nsecbunker-perf/pom.xml
index d279be8..350f2b5 100644
--- a/nsecbunker-tests/nsecbunker-perf/pom.xml
+++ b/nsecbunker-tests/nsecbunker-perf/pom.xml
@@ -7,7 +7,7 @@
xyz.tcheeric
nsecbunker-tests
- 0.1.1
+ 0.2.0
nsecbunker-perf
@@ -46,21 +46,17 @@
-
- xyz.tcheeric
- nostr-java-api
-
xyz.tcheeric
nostr-java-event
xyz.tcheeric
- nostr-java-id
+ nostr-java-identity
xyz.tcheeric
- nostr-java-crypto
+ nostr-java-core
diff --git a/nsecbunker-tests/nsecbunker-security/pom.xml b/nsecbunker-tests/nsecbunker-security/pom.xml
index d8536bc..566b762 100644
--- a/nsecbunker-tests/nsecbunker-security/pom.xml
+++ b/nsecbunker-tests/nsecbunker-security/pom.xml
@@ -7,7 +7,7 @@
xyz.tcheeric
nsecbunker-tests
- 0.1.1
+ 0.2.0
nsecbunker-security
diff --git a/nsecbunker-tests/pom.xml b/nsecbunker-tests/pom.xml
index f4c2c17..b547f19 100644
--- a/nsecbunker-tests/pom.xml
+++ b/nsecbunker-tests/pom.xml
@@ -7,7 +7,7 @@
xyz.tcheeric
nsecbunker-java
- 0.1.1
+ 0.2.0
nsecbunker-tests
diff --git a/pom.xml b/pom.xml
index 8fb1850..c271908 100644
--- a/pom.xml
+++ b/pom.xml
@@ -7,7 +7,7 @@
xyz.tcheeric
nsecbunker-java
- 0.1.1
+ 0.2.0
pom
nsecBunker Java Library
@@ -54,7 +54,7 @@
21
- 1.2.0
+ 2.0.0
2.17.0
4.12.0
2.0.12
@@ -129,10 +129,10 @@
${project.version}
-
+
xyz.tcheeric
- nostr-java-api
+ nostr-java-core
${nostr-java.version}
@@ -142,17 +142,7 @@
xyz.tcheeric
- nostr-java-crypto
- ${nostr-java.version}
-
-
- xyz.tcheeric
- nostr-java-id
- ${nostr-java.version}
-
-
- xyz.tcheeric
- nostr-java-encryption
+ nostr-java-identity
${nostr-java.version}
@@ -160,11 +150,6 @@
nostr-java-client
${nostr-java.version}
-
- xyz.tcheeric
- nostr-java-base
- ${nostr-java.version}
-