{"id":49016131,"url":"https://github.com/igapyon/mikuproject-java","last_synced_at":"2026-05-01T02:02:36.820Z","repository":{"id":352249357,"uuid":"1214442996","full_name":"igapyon/mikuproject-java","owner":"igapyon","description":"mikuproject java edition","archived":false,"fork":false,"pushed_at":"2026-04-21T22:54:32.000Z","size":8857,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"devel","last_synced_at":"2026-04-22T00:38:13.820Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/igapyon.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-04-18T15:29:19.000Z","updated_at":"2026-04-21T22:50:13.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/igapyon/mikuproject-java","commit_stats":null,"previous_names":["igapyon/mikuproject-java"],"tags_count":5,"template":false,"template_full_name":null,"purl":"pkg:github/igapyon/mikuproject-java","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/igapyon%2Fmikuproject-java","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/igapyon%2Fmikuproject-java/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/igapyon%2Fmikuproject-java/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/igapyon%2Fmikuproject-java/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/igapyon","download_url":"https://codeload.github.com/igapyon/mikuproject-java/tar.gz/refs/heads/devel","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/igapyon%2Fmikuproject-java/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32482460,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-30T13:12:12.517Z","status":"online","status_checked_at":"2026-05-01T02:00:05.856Z","response_time":64,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2026-04-19T02:09:11.577Z","updated_at":"2026-05-01T02:02:36.813Z","avatar_url":"https://github.com/igapyon.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# mikuproject-java\n\nJava port workspace for `mikuproject`.\n\n## Purpose\n\nThis repository is a Java 1.8 based port of `mikuproject`.\n\nThe Java port does not try to redesign the upstream project into a Java-first architecture at the initial stage.\nThe primary goal is to preserve the upstream Node.js structure, naming, and intent closely enough that upstream changes remain traceable.\n\nThe Java port targets the CLI-oriented feature set that can run in the Java runtime.\nBrowser/Web UI related behavior is kept out of scope for this repository.\n\nIn other words, the port is intended to be a straight conversion first.\nJava-specific redesign should be treated as a later step, after the corresponding upstream behavior has been carried over and remains traceable.\n\nCurrent STEP1 scope is focused on:\n\n- `MS Project XML -\u003e ProjectModel -\u003e MS Project XML`\n- `ProjectModel` based internal normalization\n- validation around `Project / Tasks / Resources / Assignments / Calendars`\n- upstream-aware automated tests using JUnit Jupiter\n\nCurrent status should be read in the following 2 buckets:\n\n- implemented: Java-side classes and behavior already exist\n- maintenance follow-up: existing implementation needs verification, docs alignment, or upstream diff tracking\n\nCurrent status is tracked in 2 streams:\n\n- `core`: `MS Project XML`, `ProjectModel`, workbook, patch / AI JSON, CSV / Mermaid, validation\n- `CLI / report`: CLI entrypoints, batch commands, runtime packaging, WBS Markdown / SVG / XLSX and report bundle style outputs\n\nCurrent progress should be read as:\n\n- `core`: roughly `98%` in the current STEP1 target, based on implemented upstream file coverage\n- `CLI / report`: major commands and report outputs exist; remaining work is limited to existing-scope verification, TODO/docs cleanup, and upstream diff tracking\n\nThis repository keeps `README.md` and `docs/remaining-migration-items.md` aligned on these scope and progress assumptions.\n\n## Upstream Policy\n\n- Keep the Node.js upstream repository under `vendor/mikuproject` using `git subtree`.\n- Treat `vendor/mikuproject` as read-only upstream reference unless there is an explicit reason to patch it.\n- Keep Java implementation and Java-specific specs outside `vendor/`.\n- Keep `workplace/` out of Git tracking as a local working area.\n\n## Porting Policy\n\n- Keep Java package names under `jp.igapyon.mikuproject`.\n- Respect upstream file boundaries and responsibility splits as much as practical.\n- Prefer names that are easy to map back to upstream `kebab-case` files and `camelCase` methods.\n- Do not over-optimize for modern Java style when it harms migration traceability.\n- When upstream uses scratch logic, prefer mirroring that logic first.\n- When upstream uses external libraries, evaluate corresponding Java libraries case by case.\n\n## Testing Policy\n\n- Use `mvn test` as the primary test entrypoint.\n- Keep Java tests aligned with upstream test intent and upstream fixtures where possible.\n- Use upstream fixture files under `vendor/mikuproject/testdata` when they are useful as comparison material.\n\n## Development Docs\n\nUse this section as the repo-top entrypoint for upstream tracking and migration maintenance.\n\nSuggested order:\n\n1. `docs/remaining-migration-items.md`\n2. `docs/miku-soft-30-straight-conversion-v20260425.md`\n3. `docs/upstream-class-mapping.md`\n4. `docs/upstream-test-mapping.md`\n5. `docs/development.md`\n6. `docs/upstream-followup-log.md`\n\nSuggested tracking flow:\n\n1. Check current scope and status in `docs/remaining-migration-items.md`\n2. Find the matching Java classes in `docs/upstream-class-mapping.md`\n3. Find the matching tests and focused regression unit in `docs/upstream-test-mapping.md`\n4. Use `docs/development.md` for the focused test command you actually want to run\n5. Record the result in `docs/upstream-followup-log.md`\n\nOperational note:\n\n- For `docs/*.md` only changes, do not run extra tests by default\n- Run tests only when code changes are included, or when you add a new regression command / verification result to the docs\n- Keep current maintenance work focused on existing implementation checks, TODO/docs cleanup, migrated-scope verification, and upstream diff tracking\n- A change set like this workflow/status alignment can be grouped as a `docs-only` commit\n\n- `docs/remaining-migration-items.md`\n  - Current migration status, remaining items, and recent verification state\n- `docs/miku-soft-30-straight-conversion-v20260425.md`\n  - Why this repository treats the Java port as a straight conversion first\n- `docs/upstream-class-mapping.md`\n  - `upstream file -\u003e Java class` mapping and diff-check samples\n- `docs/upstream-test-mapping.md`\n  - `upstream test intent -\u003e Java test` mapping and focused regression units\n- `docs/development.md`\n  - Daily development notes and focused test commands\n- `docs/upstream-followup-log.md`\n  - Per-file follow-up records for upstream tracking\n\n## CLI\n\nThe Java port now includes a practical CLI entrypoint covering the main Java runtime feature set.\n\nThe distributable runtime artifact is a single fat jar produced by `mvn package`.\n\n- `target/mikuproject.jar`\n\n`mvn package` also produces a sources jar and distribution archive.\n\n- `target/mikuproject-sources.jar`\n- `target/mikuproject-dist.zip`\n\nThe expected execution path is:\n\n- `java -jar target/mikuproject.jar ...`\n\nThe distribution zip contains:\n\n- `mikuproject.jar`\n- `mikuproject-sources.jar`\n- `README.md`\n- `LICENSE`\n- `docs/runtime-java-cli.md`\n\nSupported commands:\n\n- `--version`\n- `ai spec`\n- `ai detect-kind [--in document.json|-] [--diagnostics text|json]`\n- `ai export project-overview [--in workbook.json|-] [--diagnostics text|json] [--out overview.editjson|-]`\n- `ai export bundle [--in workbook.json|-] [--diagnostics text|json] [--out bundle.editjson|-]`\n- `ai export task-edit [--in workbook.json|-] [--task-uid taskUid] [--select auto|first-task|uid] [--diagnostics text|json] [--out task.editjson|-]`\n- `ai export phase-detail [--in workbook.json|-] [--phase-uid phaseUid] [--select auto|first-phase|uid] [--mode scoped|full] [--root-task-uid rootTaskUid] [--max-depth n] [--diagnostics text|json] [--out phase.editjson|-]`\n- `ai validate-patch --state workbook.json --in patch.editjson`\n- `state from-draft [--in draft.editjson|-] [--out workbook.json|-]`\n- `state validate --in workbook.json`\n- `state import --in workbook.json [--out workbook.normalized.json]`\n- `state merge --state workbook.json --in workbook.patch.json [--out workbook.next.json]`\n- `state apply-patch --state workbook.json [--in patch.editjson|-] [--out workbook.next.json|-]`\n- `state summarize [--in workbook.json|-] [--out summary.json|-]`\n- `state diff --before workbook.before.json --after workbook.after.json [--out diff.json|-]`\n- `validate xml --in project.xml`\n- `validate xlsx --in workbook.xlsx`\n- `export workbook-json [--in workbook.json|-] [--diagnostics text|json] [--out workbook.json|-]`\n- `export xml [--in workbook.json|-] [--diagnostics text|json] [--out project.xml|-]`\n- `export xlsx [--in workbook.json|-] [--diagnostics text|json] (--out project.xlsx|--out-base64 -)`\n- `import xlsx (--in workbook.xlsx|--in-base64 -) [--diagnostics text|json] [--out workbook.json|-]`\n- `merge xlsx --state workbook.json --in workbook.xlsx [--out workbook.next.json]`\n- `report all [--in workbook.json|-] [--diagnostics text|json] (--out report-bundle.zip|--out-base64 -)`\n- `report dir --in workbook.json --out report.dir`\n- `report wbs-xlsx [--in workbook.json|-] [--diagnostics text|json] (--out report.xlsx|--out-base64 -)`\n- `report daily-svg [--in workbook.json|-] [--diagnostics text|json] [--out report.svg|-]`\n- `report weekly-svg [--in workbook.json|-] [--diagnostics text|json] [--out report.svg|-]`\n- `report monthly-calendar-svg [--in workbook.json|-] [--diagnostics text|json] (--out report.zip|--out-base64 -)`\n- `report wbs-markdown [--in workbook.json|-] [--diagnostics text|json] [--out report.md|-]`\n- `report mermaid [--in workbook.json|-] [--diagnostics text|json] [--out report.mmd|-]`\n\nNotes:\n\n- `ai spec` returns the Markdown spec embedded in the built classpath / JAR. Runtime execution does not read `vendor/mikuproject/docs/mikuproject-ai-json-spec.md` by relative path.\n- `export-daily-svg` and report directory daily SVG output place the timeline origin at the earliest task start date in the model, so projects outside the historical sample month still render inside the SVG viewBox. If every task has the same zero-duration date, the output is valid but all bars will naturally stack on the same day.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Figapyon%2Fmikuproject-java","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Figapyon%2Fmikuproject-java","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Figapyon%2Fmikuproject-java/lists"}