mahjong-render 0.1.0 → 0.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 71f71da72cf55e3d1d96688ad782b98d01c34adee322e0694a030027c278bb2d
4
- data.tar.gz: 57a54b42c5b6b88f59fb62654ef691612764c7907cda74669174a7b65b0fb0af
3
+ metadata.gz: 9b8def8b9aad27b78db9af644359d270c88f095c2d48e6e459fd3023c4ca39ee
4
+ data.tar.gz: 8de5e8246e9cc2c8236c231d6a2cfa79e5ddd03bd90352d221f88454f8477f21
5
5
  SHA512:
6
- metadata.gz: 193c72bd69c349827e920e9aef8421b1be93a8db6748f35082f414be8b207ceb781bd566e55104f11a22c4a59a475b28e2cfcedd52f18c05967a5e50e6c2c55f
7
- data.tar.gz: 941dea74ea618f41f7f591026a237cc14891100d4e13dda3b6df0e7eed9784599d9d8118a5fe90a498e7f045ee20e5ffcfdf2a207f706075ccb303d4d4196e1e
6
+ metadata.gz: 9340c3a83a8d69025b9be5dff44d808e6cda0832c67ebdca6023ad43c573658e605c926d588dbb93e52db988880b5ab1eb6da457f54b5c4f355960c892003840
7
+ data.tar.gz: 33b9aa0251fbdd0d8eeec5b1d16e2a2fd4c25458aad3785f7c20494409ae9a2281ff845ceb7bcb4d376bd29e6e20299ee615c168715ff72c9a71eec91bf60268
data/CHANGELOG.md CHANGED
@@ -2,6 +2,17 @@
2
2
 
3
3
  All notable changes will be recorded here. Versions follow Semantic Versioning.
4
4
 
5
+ ## 0.2.1 — 2026-09-25
6
+
7
+ - Use the GitHub account name `kjun1` in copyright notices and RubyGems author metadata.
8
+
9
+ ## 0.2.0 — 2026-09-24
10
+
11
+ - Require MRI Ruby 3.3 or newer and test 3.3, 3.4, and 4.0; Ruby 3.2 is no longer supported.
12
+ - Document the supported Asciidoctor 2.x HTML5 adapter, public API, and maintenance policy; declare its `logger` dependency for Ruby 4.0 Bundler users.
13
+ - Publish from version tags with reproducible Gem builds, artifact attestation, and matching GitHub Releases.
14
+ - Pin released Gem metadata to its version tag and add support and community guidance.
15
+
5
16
  ## 0.1.0 — 2026-09-24
6
17
 
7
18
  - Render compact manzu, pinzu, souzu, honor, and red-five notation to self-contained SVG.
@@ -0,0 +1,5 @@
1
+ # Code of conduct
2
+
3
+ Be respectful and constructive in this repository's issues, pull requests, reviews, and other GitHub discussions. Discuss the work and its effects; avoid harassment, personal attacks, discriminatory language, and disclosure of another person's private information.
4
+
5
+ The maintainer may edit, hide, lock, or remove inappropriate contributions and restrict participation when needed. Use GitHub's **Report content** option to report abusive GitHub content. Security vulnerabilities have a separate [private reporting process](SECURITY.md). This policy covers interactions in this repository on GitHub.
data/README.ja.md CHANGED
@@ -1,5 +1,8 @@
1
1
  # mahjong-render
2
2
 
3
+ [![Gem Version](https://badge.fury.io/rb/mahjong-render.svg?icon=si%3Arubygems)](https://rubygems.org/gems/mahjong-render)
4
+ [![CI](https://github.com/kjun1/mahjong-render/actions/workflows/ci.yml/badge.svg)](https://github.com/kjun1/mahjong-render/actions/workflows/ci.yml)
5
+
3
6
  [English README](README.md)
4
7
 
5
8
  `mahjong-render` は、麻雀牌の compact notation から自己完結した SVG を作る Ruby ライブラリです。Ruby 版 Asciidoctor 向けの block macro も使えます。描画時に Node.js、ブラウザ、フォント、ネットワーク接続は不要です。
@@ -14,7 +17,7 @@
14
17
 
15
18
  ## インストールと描画
16
19
 
17
- Ruby 3.2 以上が必要です。RubyGems からインストールします。
20
+ MRI Ruby 3.3 以上が必要です。検証対象のバージョンは[互換性とサポート](#互換性とサポート)を参照してください。RubyGems からインストールします。
18
21
 
19
22
  ```sh
20
23
  gem install mahjong-render
@@ -24,7 +27,7 @@ gem install mahjong-render
24
27
 
25
28
  ```sh
26
29
  gem build mahjong-render.gemspec
27
- gem install --local ./mahjong-render-0.1.0.gem
30
+ gem install --local ./mahjong-render-0.2.1.gem
28
31
  ```
29
32
 
30
33
  インストール後、次のコマンドで `hand.svg` を作成できます。
@@ -54,7 +57,7 @@ printf '= Mahjong hand\n\nmahjong::405m456p789s12344z[]\n' > hand.adoc
54
57
  asciidoctor -r mahjong_render/asciidoctor hand.adoc
55
58
  ```
56
59
 
57
- 間隔の違う牌列を含む [AsciiDoc の例](examples/basic.adoc) もあります。v0.1.0 の拡張は HTML5 の block macro に対応します。macro 属性、inline macro、PDF 出力には対応しません。
60
+ 間隔の違う牌列を含む [AsciiDoc の例](examples/basic.adoc) もあります。拡張は HTML5 の block macro に対応します。macro 属性、inline macro、PDF 出力には対応しません。
58
61
 
59
62
  牌のまとまりを少し離して見せるには、完成したグループの間に `|` を入れます。たとえば `mahjong::123m|456p|789s[]` と書きます。`|` は牌幅の4分の1の空白を追加し、`|(0.25)` と同じ幅です。幅を変える場合は `mahjong::123m|(0.5)456p[]` のように書けます。
60
63
 
@@ -73,18 +76,26 @@ asciidoctor -r mahjong_render/asciidoctor hand.adoc
73
76
 
74
77
  不正な記法は `MahjongRender::NotationError` になります。`token`、先頭から0起算の文字位置 `position`、理由 `reason` を参照できます。たとえば `8z` は無効です。
75
78
 
79
+ メソッドと例外の詳細は [公開 API リファレンス](docs/api.md) を参照してください。
80
+
81
+ ## 互換性とサポート
82
+
83
+ v0.2.x の保証対象は MRI Ruby 3.3、3.4、4.0 です。任意の Asciidoctor 拡張は Ruby Asciidoctor 2.x の HTML5 backend で検証します。他の Ruby 実装、Asciidoctor のバージョン、backend は保証対象外です。Ruby 3.2 は上流のサポート終了に伴い、保証対象から外しました。
84
+
85
+ 0.x 系では破壊的変更を minor release で告知します。修正とセキュリティ対応は最新の minor 系列のみを対象とし、v0.2.x は v0.1.x に代わる保守系列です。[サポート案内](SUPPORT.md)、[セキュリティポリシー](SECURITY.md)、[行動規範](CODE_OF_CONDUCT.md)も参照してください。
86
+
76
87
  ## 開発とライセンス
77
88
 
78
- devcontainer、または Ruby 3.2 以上・Bundler・`rsvg-convert` を用意して検証します。
89
+ devcontainer、または保証対象の MRI Ruby・Bundler・`rsvg-convert` を用意して検証します。
79
90
 
80
91
  ```sh
81
92
  bundle install
82
93
  bundle exec rake lint test assets:check licenses:check example:build
83
94
  gem build mahjong-render.gemspec
84
- ruby script/check_package.rb mahjong-render-0.1.0.gem
95
+ ruby script/check_package.rb mahjong-render-0.2.1.gem
85
96
  ```
86
97
 
87
98
  設計の経緯は [既存ライブラリの調査](docs/research/existing-renderers.md) と [ADR](docs/adr/) に記録しています。
88
- [公開手順](docs/release.md) には、Trusted Publishing の設定と手動・タグによる公開方法を記載しています。
99
+ [公開手順](docs/release.md) には、タグから起動する Trusted Publishing の手順を記載しています。
89
100
 
90
- Copyright 2026 Maejima Kenya。Ruby コードとテキスト文書には [Apache-2.0](LICENSE) を適用します。同梱の牌画像と [README のプレビュー](examples/hand.png) は CC0-1.0 です。牌画像は [FluffyStuff/riichi-mahjong-tiles](https://github.com/FluffyStuff/riichi-mahjong-tiles) から採用しました。詳細は [第三者素材の告知](THIRD_PARTY_NOTICES.md)、[素材マニフェスト](assets/manifest.json)、[CC0 のライセンス本文](LICENSES/CC0-1.0.txt) を参照してください。
101
+ Copyright 2026 kjun1。Ruby コードとテキスト文書には [Apache-2.0](LICENSE) を適用します。同梱の牌画像と [README のプレビュー](examples/hand.png) は CC0-1.0 です。牌画像は [FluffyStuff/riichi-mahjong-tiles](https://github.com/FluffyStuff/riichi-mahjong-tiles) から採用しました。詳細は [第三者素材の告知](THIRD_PARTY_NOTICES.md)、[素材マニフェスト](assets/manifest.json)、[CC0 のライセンス本文](LICENSES/CC0-1.0.txt) を参照してください。
data/README.md CHANGED
@@ -1,5 +1,8 @@
1
1
  # mahjong-render
2
2
 
3
+ [![Gem Version](https://badge.fury.io/rb/mahjong-render.svg?icon=si%3Arubygems)](https://rubygems.org/gems/mahjong-render)
4
+ [![CI](https://github.com/kjun1/mahjong-render/actions/workflows/ci.yml/badge.svg)](https://github.com/kjun1/mahjong-render/actions/workflows/ci.yml)
5
+
3
6
  [日本語版 README](README.ja.md)
4
7
 
5
8
  `mahjong-render` is a Ruby library that turns compact riichi mahjong notation into a self-contained SVG. It also provides an optional block macro for Ruby Asciidoctor. Rendering works offline and does not require Node.js, a browser, a font, or a network service.
@@ -14,7 +17,7 @@ The `0m` in `405m` is a red five. The preview is generated from the library's SV
14
17
 
15
18
  ## Install and render
16
19
 
17
- Requirements: Ruby 3.2 or newer.
20
+ Requirements: MRI Ruby 3.3 or newer. See [Compatibility and support](#compatibility-and-support) for the tested versions.
18
21
 
19
22
  Install the published gem from RubyGems:
20
23
 
@@ -26,7 +29,7 @@ To install a build from a local checkout:
26
29
 
27
30
  ```sh
28
31
  gem build mahjong-render.gemspec
29
- gem install --local ./mahjong-render-0.1.0.gem
32
+ gem install --local ./mahjong-render-0.2.1.gem
30
33
  ```
31
34
 
32
35
  Render a hand from the command line or from Ruby:
@@ -58,7 +61,7 @@ See [the complete AsciiDoc example](examples/basic.adoc) for hands with and with
58
61
 
59
62
  To show separate groups, insert `|` between complete tile groups: `mahjong::123m|456p|789s[]`. Each `|` adds a quarter tile width of empty space, the same as `|(0.25)`. Use `|(0.5)` for half a tile width or `|(1)` for a full tile width, for example `mahjong::123m|(0.5)456p[]`.
60
63
 
61
- The adapter supports the HTML5 backend. Macro attributes, inline macros, and PDF output are not part of v0.1.0. The Ruby rendering API does not load Asciidoctor.
64
+ The adapter supports the HTML5 backend. Macro attributes, inline macros, and PDF output are unsupported. The Ruby rendering API does not load Asciidoctor.
62
65
 
63
66
  ## Supported notation
64
67
 
@@ -75,6 +78,14 @@ Digits can share a suit suffix: `123m` means `1m 2m 3m`, and `405m` means `4m 0m
75
78
 
76
79
  Invalid notation raises `MahjongRender::NotationError`, with `token`, zero-based character `position`, and `reason` readers. Examples include `8z`, `123x`, `1m!`, a missing suit, and empty input. For example, `MahjongRender.render("8z")` raises an error with `token == "8z"` and `position == 0`.
77
80
 
81
+ See the [public API reference](docs/api.md) for method and error details.
82
+
83
+ ## Compatibility and support
84
+
85
+ The supported runtimes for v0.2.x are MRI Ruby 3.3, 3.4, and 4.0. The optional Asciidoctor adapter is tested with Ruby Asciidoctor 2.x and its HTML5 backend. Other Ruby implementations, Asciidoctor versions, and backends are outside the supported set. Ruby 3.2 is no longer supported because it has reached upstream end of life.
86
+
87
+ During the 0.x series, breaking changes are announced in a minor release. Fixes and security updates are provided only for the latest minor release line; v0.2.x supersedes v0.1.x. See [support information](SUPPORT.md), the [security policy](SECURITY.md), and the [code of conduct](CODE_OF_CONDUCT.md).
88
+
78
89
  ## Architecture
79
90
 
80
91
  ```text
@@ -89,17 +100,17 @@ The parser and SVG composer are intentionally small. Existing renderers were eva
89
100
 
90
101
  ## Development
91
102
 
92
- Open this repository in a devcontainer, or use Ruby 3.2 or newer with Bundler and `rsvg-convert` installed:
103
+ Open this repository in a devcontainer, or use a supported MRI Ruby with Bundler and `rsvg-convert` installed:
93
104
 
94
105
  ```sh
95
106
  bundle install
96
107
  bundle exec rake lint test assets:check licenses:check example:build
97
108
  gem build mahjong-render.gemspec
98
- ruby script/check_package.rb mahjong-render-0.1.0.gem
109
+ ruby script/check_package.rb mahjong-render-0.2.1.gem
99
110
  ```
100
111
 
101
112
  The example HTML is written to `tmp/basic.html`. The test suite rasterizes a sample SVG to confirm the embedded vector artwork renders.
102
- The [release guide](docs/release.md) describes the manual and tag-triggered Trusted Publishing workflows.
113
+ The [release guide](docs/release.md) describes the tag-triggered Trusted Publishing workflow.
103
114
 
104
115
  To regenerate the README preview with `rsvg-convert`:
105
116
 
@@ -109,4 +120,4 @@ ruby -Ilib -rmahjong_render -e 'print MahjongRender.render("405m456p789s12344z")
109
120
 
110
121
  ## Third-party components and license
111
122
 
112
- Copyright 2026 Maejima Kenya. The project Ruby code and text documentation are licensed under [Apache-2.0](LICENSE). The bundled tile artwork and the [README preview](examples/hand.png) are CC0-1.0. The artwork comes from [FluffyStuff/riichi-mahjong-tiles](https://github.com/FluffyStuff/riichi-mahjong-tiles); see [third-party notices](THIRD_PARTY_NOTICES.md), [the asset manifest](assets/manifest.json), and [the CC0 legal text](LICENSES/CC0-1.0.txt). The gem metadata lists both licenses; each applies to the components described here.
123
+ Copyright 2026 kjun1. The project Ruby code and text documentation are licensed under [Apache-2.0](LICENSE). The bundled tile artwork and the [README preview](examples/hand.png) are CC0-1.0. The artwork comes from [FluffyStuff/riichi-mahjong-tiles](https://github.com/FluffyStuff/riichi-mahjong-tiles); see [third-party notices](THIRD_PARTY_NOTICES.md), [the asset manifest](assets/manifest.json), and [the CC0 legal text](LICENSES/CC0-1.0.txt). The gem metadata lists both licenses; each applies to the components described here.
data/SECURITY.md CHANGED
@@ -1,5 +1,5 @@
1
1
  # Security policy
2
2
 
3
- The v0.1.0 release line is supported for security fixes. Report vulnerabilities privately through GitHub's **Report a vulnerability** feature after the repository is published. Do not post exploit details in a public issue.
3
+ Only the latest 0.x minor release line receives security fixes. The supported line is currently v0.2.x; v0.1.x is no longer maintained. Report vulnerabilities privately through GitHub's **Report a vulnerability** feature. Do not post exploit details in a public issue. No response-time guarantee is offered.
4
4
 
5
5
  The renderer accepts only compact tile notation. SVG asset files are pinned and checked for active content and external references. Please include a minimal input and affected version when reporting a security issue.
data/SUPPORT.md ADDED
@@ -0,0 +1,7 @@
1
+ # Support
2
+
3
+ The supported runtimes for v0.2.x are MRI Ruby 3.3, 3.4, and 4.0. The optional block macro supports Ruby Asciidoctor 2.x with the HTML5 backend. Fixes and security updates are provided only for the latest 0.x minor release line. Breaking changes during 0.x are announced in a minor release.
4
+
5
+ Open a [GitHub issue](https://github.com/kjun1/mahjong-render/issues) for a reproducible bug, documentation defect, or feature proposal. Include the Gem and Ruby versions, a minimal input, and the expected and actual results. For security issues, follow [the private reporting process](SECURITY.md) instead.
6
+
7
+ Mahjong rules consultation, custom document authoring, unsupported Asciidoctor backends, and application-specific integration troubleshooting are outside the support scope. There is no response-time guarantee.
@@ -11,6 +11,7 @@
11
11
  The original file names and SHA-256 hashes are recorded in [the asset manifest](assets/manifest.json). The files are copied without modification.
12
12
 
13
13
  The README preview at `examples/hand.png` is generated from these CC0 tile images and is also distributed under CC0-1.0. The project Ruby code and text documentation are Apache-2.0; neither license changes the terms of the other component.
14
+ The repository social preview at `.github/social-preview.png` uses the same CC0 tile images. Its layout and text are Apache-2.0.
14
15
 
15
16
  ## Optional integration and development dependencies
16
17
 
@@ -2,4 +2,4 @@
2
2
 
3
3
  Status: accepted for v0.1.0.
4
4
 
5
- Use Apache-2.0 (`SPDX-License-Identifier: Apache-2.0`) for project code and documentation, attributed to Maejima Kenya. The bundled tile SVGs and `examples/hand.png`, which is generated from those SVGs, remain independently CC0-1.0. Gem metadata lists both identifiers; `THIRD_PARTY_NOTICES.md` explains which files each covers because a license list alone cannot express component boundaries. Preserve the upstream declaration, full CC0 legal text, attribution, source revision, and file hashes. Keep optional and development dependency licenses separate from bundled content. CI fails when the Apache license copy changes or a locked dependency has no approved license metadata.
5
+ Use Apache-2.0 (`SPDX-License-Identifier: Apache-2.0`) for project code and documentation, attributed to kjun1. The bundled tile SVGs and `examples/hand.png`, which is generated from those SVGs, remain independently CC0-1.0. Gem metadata lists both identifiers; `THIRD_PARTY_NOTICES.md` explains which files each covers because a license list alone cannot express component boundaries. Preserve the upstream declaration, full CC0 legal text, attribution, source revision, and file hashes. Keep optional and development dependency licenses separate from bundled content. CI fails when the Apache license copy changes or a locked dependency has no approved license metadata.
data/docs/api.md ADDED
@@ -0,0 +1,22 @@
1
+ # Public API
2
+
3
+ ## Ruby rendering
4
+
5
+ ```ruby
6
+ require "mahjong_render"
7
+ svg = MahjongRender.render("405m456p789s12344z")
8
+ ```
9
+
10
+ `MahjongRender.render(notation)` accepts a String of [supported notation](../README.md#supported-notation) and returns a self-contained SVG String. The SVG embeds its tile artwork and can be saved directly or inserted into HTML. A non-String argument raises `TypeError`.
11
+
12
+ Invalid notation raises `MahjongRender::NotationError`. Its `token` reader identifies the invalid input, `position` is a zero-based character offset, and `reason` describes the problem. Tile count and legal mahjong hand shape are not validated.
13
+
14
+ ## Asciidoctor block macro
15
+
16
+ Install Ruby Asciidoctor 2.x separately and load `mahjong_render/asciidoctor` to register the `mahjong` block macro:
17
+
18
+ ```asciidoc
19
+ mahjong::405m456p789s12344z[]
20
+ ```
21
+
22
+ The adapter supports the HTML5 backend. It raises `MahjongRender::UnsupportedBackendError` for other backends and `MahjongRender::UnsupportedAttributeError` for macro attributes. Invalid notation raises `MahjongRender::NotationError`. Inline macros and PDF output are unsupported. Loading `mahjong_render` alone does not load Asciidoctor.
data/docs/release.md CHANGED
@@ -1,32 +1,19 @@
1
1
  # Release process
2
2
 
3
- 1. Confirm `CHANGELOG.md` and `lib/mahjong_render/version.rb` use the intended SemVer version. Recheck that `mahjong-render` is available on RubyGems; a prior missing-name response does not reserve it.
4
- 2. In the devcontainer, run `bundle exec rake lint test assets:check licenses:check example:build`, `gem build mahjong-render.gemspec`, and `ruby script/check_package.rb mahjong-render-0.1.0.gem`. Confirm the build has no warnings.
5
- 3. Install the built gem locally and reproduce the Ruby and AsciiDoc commands in both READMEs without network access. Inspect the gem contents and confirm the Apache-2.0 license, CC0 legal text, artwork, notices, preview image, examples, and linked documentation are present.
6
- 4. For the first release, create the public `kjun1/mahjong-render` GitHub repository. Confirm the homepage and gem metadata URLs resolve, verify CI on the default branch, and enable GitHub private vulnerability reporting.
7
- 5. Review and date the 0.1.0 changelog entry. Configure Trusted Publishing as described below, then choose one of the release triggers.
8
- 6. After publication, confirm the RubyGems version and ownership, install the gem from RubyGems, and check that the pending publisher became a trusted publisher.
3
+ Releases are triggered only by a `vX.Y.Z` tag on a commit in `main`. The tag version must match `lib/mahjong_render/version.rb`. Do not publish a Gem manually: the tag workflow builds the Gem, checks reproducibility, publishes through RubyGems Trusted Publishing, attests the exact Gem, and creates the matching GitHub Release with that Gem attached.
9
4
 
10
- ## Trusted Publishing setup
5
+ ## Prepare
11
6
 
12
- 1. In the GitHub repository, create an environment named `release` under **Settings → Environments**. If deployment branch and tag restrictions are enabled, allow the `main` branch and `v*` tags.
13
- 2. Enable MFA for the RubyGems account. The gemspec sets `rubygems_mfa_required` to `true`.
14
- 3. Sign in to RubyGems and open [Pending trusted publishers](https://rubygems.org/profile/oidc/pending_trusted_publishers). Create a pending publisher with these exact values:
7
+ 1. Update the version in `lib/mahjong_render/version.rb` and `Gemfile.lock`, the support line in `SECURITY.md`, and a dated entry in `CHANGELOG.md`. Update user-facing version examples in both READMEs.
8
+ 2. Run `bundle exec rake lint test assets:check licenses:check example:build`. Build the Gem and run `ruby script/check_package.rb` on it. Confirm the version-specific metadata URLs and packaged documentation.
9
+ 3. Merge the release commit to `main` and confirm all CI jobs pass. Create an annotated tag on that commit, for example `git tag -a v0.2.0 -m 'Release v0.2.0'`, then push the tag with `git push origin v0.2.0`.
15
10
 
16
- | Field | Value |
17
- | --- | --- |
18
- | Gem name | `mahjong-render` |
19
- | Repository owner | `kjun1` |
20
- | Repository name | `mahjong-render` |
21
- | Workflow filename | `release.yml` |
22
- | Environment | `release` |
23
- | Workflow repository owner/name | Leave blank |
11
+ The `release` GitHub environment must allow `v*` tags. Configure the RubyGems trusted publisher for repository `kjun1/mahjong-render`, workflow `release.yml`, and environment `release`. Keep MFA enabled for the RubyGems account. The workflow does not use a RubyGems API key or GitHub secret.
24
12
 
25
- No RubyGems API key or GitHub secret is needed. RubyGems converts the pending publisher after the first successful push.
13
+ ## Verify
26
14
 
27
- ## Choose a release trigger
15
+ 1. Confirm the `Publish gem` workflow succeeded for the tag, including the MRI Ruby 3.3, 3.4, and 4.0 checks.
16
+ 2. Confirm the version exists on RubyGems and the matching GitHub Release has the `.gem` asset. Download the asset and the RubyGems Gem, and compare their SHA-256 hashes.
17
+ 3. Verify the downloaded Gem's attestation with `gh attestation verify mahjong-render-X.Y.Z.gem -R kjun1/mahjong-render`. Install the published Gem and run the Ruby and AsciiDoc examples from both READMEs.
28
18
 
29
- - **Manual event:** Open GitHub **Actions → Publish gem → Run workflow**, select the `main` branch, and enter version `0.1.0`. The workflow publishes the version in `main` without creating a Git tag.
30
- - **Tag push:** Push a tag matching the gem version, for example `git tag v0.1.0` followed by `git push origin v0.1.0`. The tag push publishes that version automatically.
31
-
32
- Both routes validate the version, run the release checks, build the gem, and use the `release` environment. If a version from this repository is already on RubyGems, a later run checks its source metadata and skips the duplicate push. The RubyGems version cannot be overwritten; bump the gem version for any subsequent release.
19
+ If the workflow fails after RubyGems publication, rerun the workflow for the same tag. It will rebuild the Gem with `SOURCE_DATE_EPOCH` set to the tagged commit time, compare its SHA-256 with RubyGems, and complete the attestation and GitHub Release. A mismatch stops the workflow; published Gem versions cannot be overwritten. RubyGems 0.1.0 predates this process and retains its original metadata.
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- # Copyright 2026 Maejima Kenya
3
+ # Copyright 2026 kjun1
4
4
  # SPDX-License-Identifier: Apache-2.0
5
5
 
6
6
  require "asciidoctor"
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- # Copyright 2026 Maejima Kenya
3
+ # Copyright 2026 kjun1
4
4
  # SPDX-License-Identifier: Apache-2.0
5
5
 
6
6
  module MahjongRender
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- # Copyright 2026 Maejima Kenya
3
+ # Copyright 2026 kjun1
4
4
  # SPDX-License-Identifier: Apache-2.0
5
5
 
6
6
  module MahjongRender
@@ -1,8 +1,8 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- # Copyright 2026 Maejima Kenya
3
+ # Copyright 2026 kjun1
4
4
  # SPDX-License-Identifier: Apache-2.0
5
5
 
6
6
  module MahjongRender
7
- VERSION = "0.1.0"
7
+ VERSION = "0.2.1"
8
8
  end
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- # Copyright 2026 Maejima Kenya
3
+ # Copyright 2026 kjun1
4
4
  # SPDX-License-Identifier: Apache-2.0
5
5
 
6
6
  require_relative "mahjong_render/version"
metadata CHANGED
@@ -1,14 +1,28 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mahjong-render
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.2.1
5
5
  platform: ruby
6
6
  authors:
7
- - Maejima Kenya
7
+ - kjun1
8
8
  bindir: bin
9
9
  cert_chain: []
10
- date: 1980-01-02 00:00:00.000000000 Z
11
- dependencies: []
10
+ date: 2026-09-24 00:00:00.000000000 Z
11
+ dependencies:
12
+ - !ruby/object:Gem::Dependency
13
+ name: logger
14
+ requirement: !ruby/object:Gem::Requirement
15
+ requirements:
16
+ - - "~>"
17
+ - !ruby/object:Gem::Version
18
+ version: '1.7'
19
+ type: :runtime
20
+ prerelease: false
21
+ version_requirements: !ruby/object:Gem::Requirement
22
+ requirements:
23
+ - - "~>"
24
+ - !ruby/object:Gem::Version
25
+ version: '1.7'
12
26
  description: A Ruby library for rendering compact mahjong notation to SVG, with an
13
27
  optional Asciidoctor block macro.
14
28
  executables: []
@@ -16,12 +30,14 @@ extensions: []
16
30
  extra_rdoc_files: []
17
31
  files:
18
32
  - CHANGELOG.md
33
+ - CODE_OF_CONDUCT.md
19
34
  - CONTRIBUTING.md
20
35
  - LICENSE
21
36
  - LICENSES/CC0-1.0.txt
22
37
  - README.ja.md
23
38
  - README.md
24
39
  - SECURITY.md
40
+ - SUPPORT.md
25
41
  - THIRD_PARTY_NOTICES.md
26
42
  - assets/manifest.json
27
43
  - assets/tiles/Chun.svg
@@ -67,6 +83,7 @@ files:
67
83
  - docs/adr/0003-notation.md
68
84
  - docs/adr/0004-assets.md
69
85
  - docs/adr/0005-package.md
86
+ - docs/api.md
70
87
  - docs/release.md
71
88
  - docs/research/existing-renderers.md
72
89
  - examples/basic.adoc
@@ -81,10 +98,10 @@ licenses:
81
98
  - Apache-2.0
82
99
  - CC0-1.0
83
100
  metadata:
84
- source_code_uri: https://github.com/kjun1/mahjong-render
85
- changelog_uri: https://github.com/kjun1/mahjong-render/blob/main/CHANGELOG.md
101
+ source_code_uri: https://github.com/kjun1/mahjong-render/tree/v0.2.1
102
+ changelog_uri: https://github.com/kjun1/mahjong-render/blob/v0.2.1/CHANGELOG.md
86
103
  bug_tracker_uri: https://github.com/kjun1/mahjong-render/issues
87
- documentation_uri: https://github.com/kjun1/mahjong-render/blob/main/README.md
104
+ documentation_uri: https://github.com/kjun1/mahjong-render/blob/v0.2.1/docs/api.md
88
105
  rubygems_mfa_required: 'true'
89
106
  rdoc_options: []
90
107
  require_paths:
@@ -93,7 +110,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
93
110
  requirements:
94
111
  - - ">="
95
112
  - !ruby/object:Gem::Version
96
- version: '3.2'
113
+ version: '3.3'
97
114
  required_rubygems_version: !ruby/object:Gem::Requirement
98
115
  requirements:
99
116
  - - ">="