Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commite98c4ce

Browse files
committed
chore: automate roadmap project setup
1 parentd5a3c60 commite98c4ce

File tree

5 files changed

+138
-0
lines changed

5 files changed

+138
-0
lines changed

‎README.md‎

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,10 @@ See [docs/GETTING_STARTED.md](docs/GETTING_STARTED.md) for installation and usag
2626

2727
The`no-docker` profile excludes tests under`**/nostr/api/integration/**` and sets`noDocker=true` for conditional test disabling.
2828

29+
##Roadmap project automation
30+
31+
Maintainers can create or refresh the GitHub Project that tracks all 1.0.0 release blockers by running`./scripts/create-roadmap-project.sh`. The helper script uses the GitHub CLI to set up draft items that mirror the tasks described in[docs/explanation/roadmap-1.0.md](docs/explanation/roadmap-1.0.md); see the[how-to guide](docs/howto/manage-roadmap-project.md) for prerequisites and usage tips.
32+
2933
###Troubleshooting failed relay sends
3034

3135
When broadcasting to multiple relays, failures on individual relays are tolerated and sending continues to other relays. To inspect which relays failed during the last send on the current thread:

‎docs/README.md‎

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ Quick links to the most relevant guides and references.
1414
-[howto/api-examples.md](howto/api-examples.md) — Comprehensive examples with 13+ use cases
1515
-[howto/streaming-subscriptions.md](howto/streaming-subscriptions.md) — Long-lived subscriptions
1616
-[howto/custom-events.md](howto/custom-events.md) — Creating custom event types
17+
-[howto/manage-roadmap-project.md](howto/manage-roadmap-project.md) — Sync the GitHub Project with the 1.0 backlog
1718

1819
##Operations
1920

@@ -27,6 +28,7 @@ Quick links to the most relevant guides and references.
2728
##Explanation
2829

2930
-[explanation/extending-events.md](explanation/extending-events.md) — Extending the event model
31+
-[explanation/roadmap-1.0.md](explanation/roadmap-1.0.md) — Outstanding work before the 1.0 release
3032

3133
##Project
3234

‎docs/explanation/roadmap-1.0.md‎

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
#1.0 Roadmap
2+
3+
This explanation outlines the outstanding work required to promote`nostr-java` from the current 0.6.x snapshots to a stable 1.0.0 release. Items are grouped by theme so maintainers can prioritize stabilization, hardening, and release-readiness tasks.
4+
5+
##Release-readiness snapshot
6+
7+
| Theme| Why it matters for 1.0| Key tasks|
8+
| ---| ---| ---|
9+
| API stabilization| Cleanly removing deprecated entry points avoids breaking changes post-1.0.| Remove`Constants.Kind`,`Encoder.ENCODER_MAPPER_BLACKBIRD`, and other for-removal APIs.|
10+
| Protocol coverage| Missing tests leave command handling and relay workflows unverified.| Complete message decoding/command mapping tests; resolve brittle relay integration tests.|
11+
| Developer experience| Documentation gaps make migrations risky and hide release steps.| Populate the 1.0 migration guide and document dependency alignment/release chores.|
12+
13+
##API stabilization and breaking-change prep
14+
15+
-**Remove the deprecated constants facade.**`nostr.config.Constants.Kind` is still published even though every field is flagged`@Deprecated(forRemoval = true)`; delete the nested class (and migrate callers to`nostr.base.Kind`) before cutting 1.0.0.【F:nostr-java-api/src/main/java/nostr/config/Constants.java†L1-L194】
16+
-**Retire the legacy encoder singleton.** The`Encoder.ENCODER_MAPPER_BLACKBIRD` field remains available despite a for-removal notice; the mapper should be removed after migrating callers to`EventJsonMapper` so the 1.0 interface stays minimal.【F:nostr-java-base/src/main/java/nostr/base/Encoder.java†L1-L34】
17+
-**Drop redundant NIP facades.** The older overloads in`NIP01` and`NIP61` that still accept an explicit`Identity`/builder arguments contradict the new fluent API and are marked for removal; purge them together with any downstream usage when finalizing 1.0.【F:nostr-java-api/src/main/java/nostr/api/NIP01.java†L152-L195】【F:nostr-java-api/src/main/java/nostr/api/NIP61.java†L103-L156】
18+
-**Remove deprecated tag constructors.** The ad-hoc`GenericTag` constructor (and similar helpers in`EntityFactory`) persist only for backward compatibility; deleting them tightens the surface area and enforces explicit sender metadata in example factories.【F:nostr-java-event/src/main/java/nostr/event/tag/GenericTag.java†L1-L44】【F:nostr-java-id/src/test/java/nostr/id/EntityFactory.java†L25-L133】
19+
20+
##Protocol coverage and quality gaps
21+
22+
-**Extend message decoding coverage.** Both`BaseMessageDecoderTest` and`BaseMessageCommandMapperTest` only cover the`REQ` flow and carry TODOs for the remaining relay commands (EVENT, NOTICE, EOSE, etc.); expand the fixtures so every command path is exercised before freezing APIs.【F:nostr-java-event/src/test/java/nostr/event/unit/BaseMessageDecoderTest.java†L16-L117】【F:nostr-java-event/src/test/java/nostr/event/unit/BaseMessageCommandMapperTest.java†L16-L74】
23+
-**Stabilize calendar and classifieds integration tests.** The NIP-52 and NIP-99 integration suites currently comment out flaky assertions and note inconsistent relay responses (`EVENT` vs`EOSE`); diagnose the relay behavior, update expectations, and re-enable the assertions to guarantee end-to-end compatibility.【F:nostr-java-api/src/test/java/nostr/api/integration/ApiNIP52RequestIT.java†L82-L160】【F:nostr-java-api/src/test/java/nostr/api/integration/ApiNIP99RequestIT.java†L71-L165】
24+
25+
##Documentation and release engineering
26+
27+
-**Finish the migration checklist.** The`MIGRATION.md` entry for “Deprecated APIs Removed” still lacks the concrete removal list that integrators need; populate it with the APIs scheduled above so adopters can plan upgrades safely.【F:MIGRATION.md†L19-L169】
28+
-**Record the dependency alignment plan.** The parent`pom.xml` pins 0.6.5-SNAPSHOT and includes temporary module overrides until the BOM catches up; document (and eventually remove) those overrides as part of the 1.0 cut so published coordinates stay consistent.【F:pom.xml†L71-L119】
29+
-**Plan the version uplift.** The aggregator POM still advertises`0.6.5-SNAPSHOT`; outline the steps for bumping modules, tagging, and publishing to Central once the blockers above are cleared.【F:pom.xml†L71-L119】
30+
31+
##Suggested next steps
32+
33+
1. Resolve the API deprecations and land refactors behind feature flags where necessary.
34+
2. Stabilize the relay-facing integration tests (consider mocking relays for deterministic assertions if public relays differ).
35+
3. Update`MIGRATION.md` alongside each removal so downstream consumers have a single source of truth.
36+
4. When the backlog is green, coordinate the version bump, remove BOM overrides, and publish the 1.0.0 release notes.
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
#Maintain the 1.0 roadmap project
2+
3+
This how-to guide explains how to create and refresh the GitHub Projects board that tracks every task blocking the nostr-java 1.0 release. Use it when spinning up a fresh board or when the backlog has drifted from`docs/explanation/roadmap-1.0.md`.
4+
5+
##Prerequisites
6+
7+
- GitHub CLI (`gh`) 2.32 or newer with the “projects” feature enabled.
8+
- Authenticated session with permissions to create Projects for the repository owner.
9+
- Local clone of`nostr-java` so the script can infer the repository owner.
10+
-`jq` installed (used by the helper script for JSON parsing).
11+
12+
##Steps
13+
14+
1. Authenticate the GitHub CLI if you have not already:
15+
```bash
16+
gh auth login
17+
```
18+
2. Enable the projects feature flag if it is not yet active:
19+
```bash
20+
gh configset prompt disabled
21+
gh configset projects_enabledtrue
22+
```
23+
3. From the repository root, run the helper script to create or update the board:
24+
```bash
25+
./scripts/create-roadmap-project.sh
26+
```
27+
4. Review the board in the GitHub UI. If duplicate draft items appear (for example because the script was re-run), consolidate them manually.
28+
5. When tasks are completed, update both the project item and the canonical checklist in[`docs/explanation/roadmap-1.0.md`](../explanation/roadmap-1.0.md).
29+
30+
##Troubleshooting
31+
32+
-**`gh` reports that the command is unknown** — Upgrade to GitHub CLI 2.32 or later so that`gh project` commands are available.
33+
-**Project already exists but tasks did not change** — The script always adds draft items; to avoid duplicates, delete or convert the older drafts first.
34+
-**Permission denied errors** — Ensure your personal access token has the`project` scope and that you are an owner or maintainer of the repository.

‎scripts/create-roadmap-project.sh‎

Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,62 @@
1+
#!/usr/bin/env bash
2+
set -euo pipefail
3+
4+
# Create or update a GitHub Projects (beta) board that tracks the nostr-java 1.0 roadmap.
5+
# Requires: GitHub CLI 2.32+ with project commands enabled and an authenticated session.
6+
7+
project_title="nostr-java 1.0 Roadmap"
8+
9+
if!command -v gh>/dev/null2>&1;then
10+
echo"GitHub CLI (gh) is required to run this script.">&2
11+
exit 1
12+
fi
13+
14+
if!command -v jq>/dev/null2>&1;then
15+
echo"jq is required to parse GitHub CLI responses.">&2
16+
exit 1
17+
fi
18+
19+
repo_json=$(gh repo view --json nameWithOwner,owner --jq'{nameWithOwner, owner_login: .owner.login}'2>/dev/null|| true)
20+
if [[-z"${repo_json}" ]];then
21+
echo"Unable to determine repository owner via 'gh repo view'. Ensure you are within a cloned repo or pass --repo.">&2
22+
exit 1
23+
fi
24+
25+
repo_name_with_owner=$(jq -r'.nameWithOwner'<<<"${repo_json}")
26+
repo_owner=$(jq -r'.owner_login'<<<"${repo_json}")
27+
28+
# Look up an existing project with the desired title.
29+
project_number=$(gh project list --owner"${repo_owner}" --format json|
30+
jq -r --arg title"${project_title}"'map(select(.title == $title)) | first | .number // empty')
31+
32+
if [[-z"${project_number}" ]];then
33+
echo"Creating project '${project_title}' for owner${repo_owner}"
34+
gh project create --owner"${repo_owner}" --title"${project_title}" --format json>/tmp/project-create.json
35+
project_number=$(jq -r'.number' /tmp/project-create.json)
36+
echo"Created project #${project_number}"
37+
else
38+
echo"Project '${project_title}' already exists as #${project_number}."
39+
fi
40+
41+
add_task() {
42+
local title="$1"
43+
local body="$2"
44+
echo"Ensuring draft item:${title}"
45+
gh project item-add --owner"${repo_owner}" --project"${project_number}" --title"${title}" --body"${body}" --format json>/dev/null
46+
}
47+
48+
add_task"Remove deprecated constants facade""Delete nostr.config.Constants.Kind before 1.0. See docs/explanation/roadmap-1.0.md."
49+
add_task"Retire legacy encoder singleton""Drop Encoder.ENCODER_MAPPER_BLACKBIRD after migrating callers to EventJsonMapper."
50+
add_task"Drop deprecated NIP overloads""Purge for-removal overloads in NIP01 and NIP61 to stabilize fluent APIs."
51+
add_task"Remove deprecated tag constructors""Clean up GenericTag and EntityFactory compatibility constructors."
52+
add_task"Cover all relay command decoding""Extend BaseMessageDecoderTest and BaseMessageCommandMapperTest fixtures beyond REQ."
53+
add_task"Stabilize NIP-52 calendar integration""Re-enable flaky assertions in ApiNIP52RequestIT with deterministic relay handling."
54+
add_task"Stabilize NIP-99 classifieds integration""Repair ApiNIP99RequestIT expectations for NOTICE/EOSE relay responses."
55+
add_task"Complete migration checklist""Fill MIGRATION.md deprecated API removals section before cutting 1.0."
56+
add_task"Document dependency alignment plan""Record and streamline parent POM overrides tied to 0.6.5-SNAPSHOT."
57+
add_task"Plan version uplift workflow""Outline tagging and publishing steps for the 1.0.0 release in docs."
58+
59+
cat<<INFO
60+
Project setup complete.
61+
If tasks already existed as draft items, duplicates may appear; manually consolidate as needed.
62+
INFO

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp