@momo-kits/native-kits 0.156.1-test.15 → 0.156.1-test.20-debug

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.
Files changed (132) hide show
  1. package/PUBLISH_GUIDE.md +255 -386
  2. package/build.gradle.kts +11 -0
  3. package/compose/build.gradle.kts +180 -0
  4. package/compose/build.gradle.kts.backup +180 -0
  5. package/compose/compose.podspec +54 -0
  6. package/compose/src/androidMain/kotlin/vn/momo/kits/platform/Platform.android.kt +113 -0
  7. package/compose/src/commonMain/composeResources/font/momosignature.otf +0 -0
  8. package/compose/src/commonMain/composeResources/font/momotrustdisplay.otf +0 -0
  9. package/compose/src/commonMain/composeResources/font/sfprotext_black.otf +0 -0
  10. package/compose/src/commonMain/composeResources/font/sfprotext_black.ttf +0 -0
  11. package/compose/src/commonMain/composeResources/font/sfprotext_bold.ttf +0 -0
  12. package/compose/src/commonMain/composeResources/font/sfprotext_heavy.ttf +0 -0
  13. package/compose/src/commonMain/composeResources/font/sfprotext_light.ttf +0 -0
  14. package/compose/src/commonMain/composeResources/font/sfprotext_medium.ttf +0 -0
  15. package/compose/src/commonMain/composeResources/font/sfprotext_regular.ttf +0 -0
  16. package/compose/src/commonMain/composeResources/font/sfprotext_semibold.ttf +0 -0
  17. package/compose/src/commonMain/composeResources/font/sfprotext_thin.otf +0 -0
  18. package/compose/src/commonMain/composeResources/font/sfprotext_thin.ttf +0 -0
  19. package/compose/src/commonMain/composeResources/font/sfprotext_ultralight.otf +0 -0
  20. package/compose/src/commonMain/composeResources/font/sfprotext_ultralight.ttf +0 -0
  21. package/compose/src/commonMain/kotlin/vn/momo/kits/application/AnimationSearchInput.kt +57 -0
  22. package/compose/src/commonMain/kotlin/vn/momo/kits/application/Context.kt +95 -0
  23. package/compose/src/commonMain/kotlin/vn/momo/kits/application/FloatingButton.kt +201 -0
  24. package/compose/src/commonMain/kotlin/vn/momo/kits/application/Header.kt +222 -0
  25. package/compose/src/commonMain/kotlin/vn/momo/kits/application/HeaderAnimated.kt +48 -0
  26. package/compose/src/commonMain/kotlin/vn/momo/kits/application/HeaderBackground.kt +86 -0
  27. package/compose/src/commonMain/kotlin/vn/momo/kits/application/HeaderDefault.kt +76 -0
  28. package/compose/src/commonMain/kotlin/vn/momo/kits/application/HeaderExtended.kt +76 -0
  29. package/compose/src/commonMain/kotlin/vn/momo/kits/application/HeaderRight.kt +305 -0
  30. package/compose/src/commonMain/kotlin/vn/momo/kits/application/HeaderTitle.kt +33 -0
  31. package/compose/src/commonMain/kotlin/vn/momo/kits/application/LiteScreen.kt +715 -0
  32. package/compose/src/commonMain/kotlin/vn/momo/kits/application/NavigationContainer.kt +121 -0
  33. package/compose/src/commonMain/kotlin/vn/momo/kits/application/Screen.kt +405 -0
  34. package/compose/src/commonMain/kotlin/vn/momo/kits/application/useHeaderSearchAnimation.kt +69 -0
  35. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Badge.kt +83 -0
  36. package/compose/src/commonMain/kotlin/vn/momo/kits/components/BadgeDot.kt +32 -0
  37. package/compose/src/commonMain/kotlin/vn/momo/kits/components/BadgeRibbon.kt +340 -0
  38. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Button.kt +348 -0
  39. package/compose/src/commonMain/kotlin/vn/momo/kits/components/CheckBox.kt +94 -0
  40. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Chip.kt +136 -0
  41. package/compose/src/commonMain/kotlin/vn/momo/kits/components/CupertinoOverscroll.kt +543 -0
  42. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Divider.kt +23 -0
  43. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Icon.kt +76 -0
  44. package/compose/src/commonMain/kotlin/vn/momo/kits/components/IconButton.kt +148 -0
  45. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Image.kt +188 -0
  46. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Information.kt +116 -0
  47. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Input.kt +447 -0
  48. package/compose/src/commonMain/kotlin/vn/momo/kits/components/InputDropDown.kt +172 -0
  49. package/compose/src/commonMain/kotlin/vn/momo/kits/components/InputMoney.kt +244 -0
  50. package/compose/src/commonMain/kotlin/vn/momo/kits/components/InputOTP.kt +231 -0
  51. package/compose/src/commonMain/kotlin/vn/momo/kits/components/InputPhoneNumber.kt +234 -0
  52. package/compose/src/commonMain/kotlin/vn/momo/kits/components/InputSearch.kt +254 -0
  53. package/compose/src/commonMain/kotlin/vn/momo/kits/components/InputTextArea.kt +241 -0
  54. package/compose/src/commonMain/kotlin/vn/momo/kits/components/LazyColumnWithBouncing.kt +364 -0
  55. package/compose/src/commonMain/kotlin/vn/momo/kits/components/PaginationDot.kt +56 -0
  56. package/compose/src/commonMain/kotlin/vn/momo/kits/components/PaginationNumber.kt +41 -0
  57. package/compose/src/commonMain/kotlin/vn/momo/kits/components/PaginationScroll.kt +92 -0
  58. package/compose/src/commonMain/kotlin/vn/momo/kits/components/PaginationWhiteDot.kt +40 -0
  59. package/compose/src/commonMain/kotlin/vn/momo/kits/components/PopupNotify.kt +352 -0
  60. package/compose/src/commonMain/kotlin/vn/momo/kits/components/PopupPromotion.kt +103 -0
  61. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Radio.kt +70 -0
  62. package/compose/src/commonMain/kotlin/vn/momo/kits/components/ScaleSizeScope.kt +17 -0
  63. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Skeleton.kt +96 -0
  64. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Switch.kt +96 -0
  65. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Tag.kt +92 -0
  66. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Text.kt +130 -0
  67. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Title.kt +214 -0
  68. package/compose/src/commonMain/kotlin/vn/momo/kits/components/TrustBanner.kt +177 -0
  69. package/compose/src/commonMain/kotlin/vn/momo/kits/components/datetimepicker/DateTimePicker.kt +205 -0
  70. package/compose/src/commonMain/kotlin/vn/momo/kits/components/datetimepicker/DateTimePickerTypes.kt +29 -0
  71. package/compose/src/commonMain/kotlin/vn/momo/kits/components/datetimepicker/DateTimePickerUtils.kt +239 -0
  72. package/compose/src/commonMain/kotlin/vn/momo/kits/components/datetimepicker/WheelPicker.kt +191 -0
  73. package/compose/src/commonMain/kotlin/vn/momo/kits/const/Colors.kt +306 -0
  74. package/compose/src/commonMain/kotlin/vn/momo/kits/const/Radius.kt +12 -0
  75. package/compose/src/commonMain/kotlin/vn/momo/kits/const/Spacing.kt +13 -0
  76. package/compose/src/commonMain/kotlin/vn/momo/kits/const/Theme.kt +189 -0
  77. package/compose/src/commonMain/kotlin/vn/momo/kits/const/Typography.kt +285 -0
  78. package/compose/src/commonMain/kotlin/vn/momo/kits/layout/Card.kt +2 -0
  79. package/compose/src/commonMain/kotlin/vn/momo/kits/layout/Item.kt +35 -0
  80. package/compose/src/commonMain/kotlin/vn/momo/kits/layout/Section.kt +2 -0
  81. package/compose/src/commonMain/kotlin/vn/momo/kits/modifier/AutomationId.kt +59 -0
  82. package/compose/src/commonMain/kotlin/vn/momo/kits/modifier/Clickable.kt +68 -0
  83. package/compose/src/commonMain/kotlin/vn/momo/kits/modifier/Conditional.kt +11 -0
  84. package/compose/src/commonMain/kotlin/vn/momo/kits/modifier/DeprecatedModifier.kt +14 -0
  85. package/compose/src/commonMain/kotlin/vn/momo/kits/modifier/Shadow.kt +50 -0
  86. package/compose/src/commonMain/kotlin/vn/momo/kits/modifier/Size.kt +51 -0
  87. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/BottomSheet.kt +239 -0
  88. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/ModalScreen.kt +119 -0
  89. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/Navigation.kt +99 -0
  90. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/NavigationContainer.kt +166 -0
  91. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/Navigator.kt +333 -0
  92. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/StackScreen.kt +552 -0
  93. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/bottomtab/BottomTab.kt +162 -0
  94. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/bottomtab/BottomTabBar.kt +226 -0
  95. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/bottomtab/CurvedContainer.kt +86 -0
  96. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/component/FloatingButton.kt +187 -0
  97. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/component/Header.kt +274 -0
  98. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/component/HeaderBackground.kt +80 -0
  99. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/component/HeaderRight.kt +306 -0
  100. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/component/HeaderTitle.kt +31 -0
  101. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/component/HeaderUser.kt +370 -0
  102. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/component/SnackBar.kt +132 -0
  103. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/tracking/ScreenTracker.kt +219 -0
  104. package/compose/src/commonMain/kotlin/vn/momo/kits/platform/Platform.kt +42 -0
  105. package/compose/src/commonMain/kotlin/vn/momo/kits/utils/Icons.kt +1329 -0
  106. package/compose/src/commonMain/kotlin/vn/momo/kits/utils/Resources.kt +62 -0
  107. package/compose/src/commonMain/kotlin/vn/momo/kits/utils/Utils.kt +88 -0
  108. package/compose/src/iosMain/kotlin/vn/momo/kits/platform/Platform.ios.kt +152 -0
  109. package/example/ios/Example.xcodeproj/xcuserdata/sonnguyen.xcuserdatad/xcschemes/Example.xcscheme +32 -0
  110. package/example/ios/Example.xcodeproj/xcuserdata/sonnguyen.xcuserdatad/xcschemes/xcschememanagement.plist +14 -0
  111. package/example/ios/Example.xcworkspace/xcuserdata/sonnguyen.xcuserdatad/UserInterfaceState.xcuserstate +0 -0
  112. package/example/ios/Example.xcworkspace/xcuserdata/sonnguyen.xcuserdatad/WorkspaceSettings.xcsettings +16 -0
  113. package/example/ios/Example.xcworkspace/xcuserdata/sonnguyen.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist +6 -0
  114. package/example/ios/Example.xcworkspace/xcuserdata/sonnguyen.xcuserdatad/xcschemes/xcschememanagement.plist +5 -0
  115. package/example/ios/Pods/Pods.xcodeproj/xcuserdata/sonnguyen.xcuserdatad/xcschemes/MoMoUIKits.xcscheme +58 -0
  116. package/example/ios/Pods/Pods.xcodeproj/xcuserdata/sonnguyen.xcuserdatad/xcschemes/Pods-Example.xcscheme +58 -0
  117. package/example/ios/Pods/Pods.xcodeproj/xcuserdata/sonnguyen.xcuserdatad/xcschemes/SDWebImage.xcscheme +58 -0
  118. package/example/ios/Pods/Pods.xcodeproj/xcuserdata/sonnguyen.xcuserdatad/xcschemes/SDWebImageSwiftUI.xcscheme +58 -0
  119. package/example/ios/Pods/Pods.xcodeproj/xcuserdata/sonnguyen.xcuserdatad/xcschemes/SkeletonUI.xcscheme +58 -0
  120. package/example/ios/Pods/Pods.xcodeproj/xcuserdata/sonnguyen.xcuserdatad/xcschemes/lottie-ios-LottiePrivacyInfo.xcscheme +58 -0
  121. package/example/ios/Pods/Pods.xcodeproj/xcuserdata/sonnguyen.xcuserdatad/xcschemes/lottie-ios.xcscheme +58 -0
  122. package/example/ios/Pods/Pods.xcodeproj/xcuserdata/sonnguyen.xcuserdatad/xcschemes/xcschememanagement.plist +60 -0
  123. package/gradle/libs.versions.toml +57 -0
  124. package/gradle/wrapper/gradle-wrapper.jar +0 -0
  125. package/gradle/wrapper/gradle-wrapper.properties +8 -0
  126. package/gradle.properties +26 -0
  127. package/gradlew +252 -0
  128. package/gradlew.bat +94 -0
  129. package/local.properties +8 -0
  130. package/package.json +1 -1
  131. package/publish.sh +156 -151
  132. package/settings.gradle.kts +52 -0
package/PUBLISH_GUIDE.md CHANGED
@@ -8,13 +8,13 @@ Tài liệu này hướng dẫn cách sử dụng script publish cho `@momo-kits
8
8
 
9
9
  Dự án sử dụng **`publish.sh`** - một script thống nhất hỗ trợ 2 modes:
10
10
 
11
- - **`beta`**: Publish phiên bản beta/alpha cho testing
11
+ - **`beta`**: Publish phiên bản beta cho testing
12
12
  - **`release`**: Publish phiên bản release chính thức
13
13
 
14
14
  Script có 3 phases riêng biệt:
15
15
  1. **Check Version**: Kiểm tra và chuẩn bị version
16
- 2. **Publish Maven**: Publish lên GitLab Maven repository
17
- 3. **Publish NPM**: Publish lên NPM registry
16
+ 2. **Publish NPM**: Publish lên NPM registry
17
+ 3. **Publish Maven**: Publish lên GitLab Maven repository
18
18
 
19
19
  ---
20
20
 
@@ -46,11 +46,11 @@ sh publish.sh beta
46
46
  # Phase 1: Check version
47
47
  sh publish.sh beta check
48
48
 
49
- # Phase 2: Publish Maven
50
- sh publish.sh beta maven
51
-
52
- # Phase 3: Publish NPM
49
+ # Phase 2: Publish NPM
53
50
  sh publish.sh beta npm
51
+
52
+ # Phase 3: Publish Maven
53
+ sh publish.sh beta maven
54
54
  ```
55
55
 
56
56
  #### **Quy Trình Beta Publishing**
@@ -72,210 +72,92 @@ sh publish.sh beta npm
72
72
  sh publish.sh beta
73
73
  ```
74
74
 
75
- ---
76
-
77
- ## 📦 Version Types (Beta Mode)
78
-
79
- Beta mode hỗ trợ 2 loại version:
80
-
81
- ### **1. Specific Version (Tag: alpha)**
82
-
83
- **Định nghĩa:** Version có suffix KHÔNG phải "beta"
84
-
85
- **Ví dụ:**
86
- - `0.156.2-test.1`
87
- - `0.156.2-alpha.1`
88
- - `0.156.2-rc.1`
89
-
90
- **Behavior:**
91
- - NPM tag: `alpha`
92
- - Check existence: ❌ **FAIL** nếu version đã tồn tại
93
- - Không auto-increment
94
- - Developer phải tự quản lý version
95
-
96
- **Use case:** Testing specific features, hotfix testing
97
-
98
- ### **2. Normal Version (Tag: beta)**
99
-
100
- **Định nghĩa:** Version có suffix "beta" HOẶC không có suffix
101
-
102
- **Ví dụ:**
103
- - `0.156.2` (no suffix)
104
- - `0.156.2-beta.1`
105
- - `0.156.2-beta.5`
106
-
107
- **Behavior:**
108
- - NPM tag: `beta`
109
- - Auto-format: `0.156.2` → `0.156.2-beta.1`
110
- - Auto-increment nếu tồn tại: `.beta.1` → `.beta.2` → `.beta.3`...
111
-
112
- **Use case:** Regular beta testing, continuous development
113
-
114
- ---
115
-
116
- ## 🔍 Version Detection Examples
117
-
118
- ### **Example 1: Specific Version**
75
+ #### **Ví Dụ Beta Publishing**
119
76
 
120
77
  ```bash
121
- # package.json
122
- {
123
- "version": "0.156.2-test.1"
124
- }
78
+ # 1. Kiểm tra version
79
+ $ cat package.json | grep version
80
+ "version": "0.156.2"
125
81
 
126
- # Run
82
+ # 2. Test check version
127
83
  $ sh publish.sh beta check
128
-
129
- # Output
130
- 🏷️ Detected: SPECIFIC version (tag: alpha)
131
- 🔎 Checking if specific version 0.156.2-test.1 exists on npm...
132
- ✅ Specific version 0.156.2-test.1 does not exist on npm. Safe to publish.
133
- NPM tag: alpha
84
+ 📦 Version from package.json: 0.156.2
85
+ 🔎 Checking if version 0.156.2 already exists on npm...
86
+ Version 0.156.2 does not exist on npm. Safe to publish.
87
+ PHASE 1 COMPLETED
88
+
89
+ # 3. Publish
90
+ $ sh publish.sh beta
91
+ 🚀 PUBLISH SCRIPT - MODE: BETA
92
+ Running ALL PHASES
93
+ [... Phase 1: Check version ...]
94
+ [... Phase 2: Publish NPM ...]
95
+ 🐛 Debug version: 0.156.2-debug (with compose) - Published first
96
+ 📦 Normal version: 0.156.2 (without compose) - Published second
97
+ 🏷️ NPM Tag: beta
98
+ [... Phase 3: Publish Maven ...]
99
+ 🎉 ALL PHASES COMPLETED SUCCESSFULLY!
134
100
  ```
135
101
 
136
- **Kết quả trên NPM:**
137
- - `@momo-kits/native-kits@0.156.2-test.1` (tag: **alpha**)
138
- - `@momo-kits/native-kits@0.156.2-test.1-debug` (tag: **alpha**)
139
-
140
- ### **Example 2: Normal Version (No Suffix)**
102
+ #### **⚠️ Nếu Version Đã Tồn Tại**
141
103
 
142
104
  ```bash
143
- # package.json
144
- {
145
- "version": "0.156.2"
146
- }
147
-
148
- # Run
149
105
  $ sh publish.sh beta check
106
+ ❌ ERROR: Version 0.156.1 already exists on npm!
150
107
 
151
- # Output
152
- 🏷️ Detected: NORMAL version (tag: beta)
153
- 🔄 Adding beta suffix: 0.156.2 → 0.156.2-beta.1
154
- 🔎 Checking version 0.156.2-beta.1 on npm...
155
- ✅ Version 0.156.2-beta.1 does not exist on npm. Using this version.
156
- ✅ NPM tag: beta
108
+ Please update the version in package.json before publishing.
157
109
  ```
158
110
 
159
- **Kết quả trên NPM:**
160
- - `@momo-kits/native-kits@0.156.2-beta.1` (tag: **beta**)
161
- - `@momo-kits/native-kits@0.156.2-beta.1-debug` (tag: **beta**)
162
-
163
- ### **Example 3: Normal Version (With Beta Suffix)**
164
-
111
+ **Giải pháp:** Tăng version trong `package.json`:
165
112
  ```bash
166
- # package.json
167
- {
168
- "version": "0.156.2-beta.1"
169
- }
170
-
171
- # Giả sử npm đã có: beta.1, beta.2
172
-
173
- # Run
174
- $ sh publish.sh beta check
113
+ # Mở và edit file
114
+ vim package.json
115
+ # hoặc
116
+ code package.json
175
117
 
176
- # Output
177
- 🏷️ Detected: NORMAL version (tag: beta)
178
- 🔎 Checking version 0.156.2-beta.1 on npm...
179
- ⚠️ Version 0.156.2-beta.1 already exists on npm. Auto-incrementing...
180
- Version incremented: 0.156.2-beta.1 → 0.156.2-beta.2
181
- ⚠️ Version 0.156.2-beta.2 already exists on npm. Auto-incrementing...
182
- Version incremented: 0.156.2-beta.2 → 0.156.2-beta.3
183
- ✅ Version 0.156.2-beta.3 does not exist on npm. Using this version.
184
- ✅ NPM tag: beta
118
+ # Thay đổi: "version": "0.156.1" → "0.156.2"
185
119
  ```
186
120
 
187
- **Kết quả trên NPM:**
188
- - `@momo-kits/native-kits@0.156.2-beta.3` (tag: **beta**)
189
- - `@momo-kits/native-kits@0.156.2-beta.3-debug` (tag: **beta**)
121
+ ### 🟢 Publish Release Từ Local
190
122
 
191
- ### **Example 4: Specific Version Already Exists (FAIL)**
123
+ #### **Cách 1: Publish tất cả phases (Khuyến nghị)**
192
124
 
193
125
  ```bash
194
- # package.json
195
- {
196
- "version": "0.156.2-test.1"
197
- }
198
-
199
- # Version đã tồn tại trên npm
200
-
201
- # Run
202
- $ sh publish.sh beta check
203
-
204
- # Output
205
- 🏷️ Detected: SPECIFIC version (tag: alpha)
206
- 🔎 Checking if specific version 0.156.2-test.1 exists on npm...
207
-
208
- ❌ ERROR: Specific version 0.156.2-test.1 already exists on npm!
209
-
210
- Please update the version in package.json before publishing.
211
- # Exit code: 1
126
+ sh publish.sh release
212
127
  ```
213
128
 
214
- ---
215
-
216
- ## 🟢 Publish Release Từ Local
217
-
218
- ### **Đặc Điểm Quan Trọng**
219
-
220
- ⚠️ **Release mode KHÔNG đọc version từ `package.json`**
221
-
222
- ✅ **Release mode đọc version từ `npm@latest`**
223
-
224
- ### **Cách Publish**
129
+ #### **Cách 2: Chạy từng phase riêng**
225
130
 
226
131
  ```bash
227
- # Publish tất cả phases
228
- sh publish.sh release
229
-
230
- # Hoặc từng phase
132
+ # Phase 1: Check version
231
133
  sh publish.sh release check
232
- sh publish.sh release maven
134
+
135
+ # Phase 2: Publish NPM
233
136
  sh publish.sh release npm
234
- ```
235
137
 
236
- ### **Quy Trình Release Publishing**
138
+ # Phase 3: Publish Maven
139
+ sh publish.sh release maven
140
+ ```
237
141
 
238
- 1. **Script đọc version từ npm@latest:**
239
- ```bash
240
- npm view @momo-kits/native-kits@latest version
241
- # Output: 0.156.2
242
- ```
142
+ #### **Quy Trình Release Publishing**
243
143
 
244
- 2. **Auto-increment patch version:**
245
- ```
246
- 0.156.2 → 0.156.3
144
+ 1. **Version trong `package.json` có thể là bất kỳ format nào:**
145
+ ```json
146
+ {
147
+ "version": "0.156.1-test.5"
148
+ }
247
149
  ```
248
150
 
249
- 3. **Check existence và tiếp tục increment nếu cần:**
250
- ```
251
- 0.156.3 exists? → 0.156.4
252
- 0.156.4 exists? → 0.156.5
253
- ...
151
+ 2. **Chạy publish:**
152
+ ```bash
153
+ sh publish.sh release
254
154
  ```
255
155
 
256
- 4. **Update `package.json` với version mới**
257
-
258
- 5. **Publish với tag `latest`**
259
-
260
- ### **Example: Release Publishing**
261
-
262
- ```bash
263
- $ sh publish.sh release check
264
-
265
- # Output
266
- 🔍 Reading latest version from npm@latest (NOT from package.json)...
267
- 📦 Current @latest version on npm: 0.156.2
268
- 🔼 Auto-incremented version: 0.156.2 → 0.156.3
269
- 🔎 Checking if version 0.156.3 exists on npm...
270
- ✅ Version 0.156.3 does not exist on npm. Using this version.
271
- 📝 Updated package.json: 0.156.2-beta.5 → 0.156.3
272
- ✅ Using version: 0.156.3
273
- ✅ NPM tag: latest
274
- ```
275
-
276
- **Kết quả trên NPM:**
277
- - `@momo-kits/native-kits@0.156.3` (tag: **latest**)
278
- - `@momo-kits/native-kits@0.156.3-debug` (tag: **latest**)
156
+ 3. **Script sẽ tự động:**
157
+ - Convert sang format beta: `0.156.1-test.5` → `0.156.1-beta.1`
158
+ - Check version trên npm
159
+ - Auto-increment nếu đã tồn tại: `0.156.1-beta.1` → `0.156.1-beta.2`
160
+ - Publish với tag `latest`
279
161
 
280
162
  ---
281
163
 
@@ -283,19 +165,18 @@ $ sh publish.sh release check
283
165
 
284
166
  ### 🔵 Beta Publishing (GitLab CI)
285
167
 
286
- **Trigger:** Commit message chứa `[ci build]` (KHÔNG trên nhánh `main`)
168
+ **Trigger:** Commit message chứa `[ci build]`
287
169
 
288
170
  ```bash
289
- git checkout develop
290
171
  git add .
291
172
  git commit -m "feat: add new feature [ci build]"
292
173
  git push
293
174
  ```
294
175
 
295
176
  **Pipeline sẽ chạy 3 stages:**
296
- 1. `beta_check_version` (Phase 1)
297
- 2. `beta_publish_maven` (Phase 2)
298
- 3. `beta_publish_npm` (Phase 3)
177
+ 1. `beta_check_version`
178
+ 2. `beta_publish_npm`
179
+ 3. `beta_publish_maven`
299
180
 
300
181
  ### 🟢 Release Publishing (GitLab CI)
301
182
 
@@ -308,9 +189,9 @@ git push origin main
308
189
  ```
309
190
 
310
191
  **Pipeline sẽ chạy 3 stages:**
311
- 1. `release_check_version` (Phase 1)
312
- 2. `release_publish_maven` (Phase 2)
313
- 3. `release_publish_npm` (Phase 3)
192
+ 1. `release_check_version`
193
+ 2. `release_publish_npm`
194
+ 3. `release_publish_maven`
314
195
 
315
196
  ---
316
197
 
@@ -319,100 +200,123 @@ git push origin main
319
200
  | Tiêu chí | Beta Mode | Release Mode |
320
201
  |----------|-----------|--------------|
321
202
  | **Script** | `sh publish.sh beta` | `sh publish.sh release` |
322
- | **Trigger CI** | Commit có `[ci build]` (không trên main) | Push vào `main` |
323
- | **Read Version** | Từ `package.json` | Từ `npm@latest` |
324
- | **Version Types** | Specific (alpha) / Normal (beta) | N/A |
325
- | **NPM Tag** | `alpha` hoặc `beta` | `latest` |
326
- | **If Exists** | Specific: FAIL / Normal: Auto-increment | Auto-increment |
327
- | **Phase Order** | Check → Maven → NPM | Check → Maven → NPM |
203
+ | **Trigger CI** | Commit có `[ci build]` | Push vào `main` |
204
+ | **Version Check** | **Fail** nếu tồn tại | **Auto-increment** |
205
+ | **Format Version** | Giữ nguyên | Convert → `-beta.*` |
206
+ | **NPM Tag** | `beta` | `latest` |
207
+ | **Publish Order** | Debug first Normal | Debug first → Normal |
328
208
 
329
209
  ---
330
210
 
331
- ## 🔧 NPM Tags Explained
211
+ ## 🔍 Chi Tiết Các Phases
212
+
213
+ ### **Phase 1: Check Version**
332
214
 
333
- ### **Tag: alpha**
215
+ **Beta Mode:**
216
+ - Đọc version từ `package.json`
217
+ - Check version trên npm
218
+ - ❌ **FAIL** nếu version đã tồn tại
219
+ - Update `gradle.properties`
334
220
 
335
- **Khi nào:** Beta mode + Specific version
221
+ **Release Mode:**
222
+ - Đọc version từ `package.json`
223
+ - Convert sang format `-beta.*` nếu cần
224
+ - Check version trên npm
225
+ - ✅ **Auto-increment** nếu đã tồn tại
226
+ - Update `gradle.properties`
336
227
 
337
- **Cài đặt:**
338
- ```bash
339
- npm install @momo-kits/native-kits@alpha
340
- npm install @momo-kits/native-kits@0.156.2-test.1
341
- ```
228
+ ### **Phase 2: Publish NPM**
342
229
 
343
- **Use case:** Testing specific features, experimental builds
230
+ **Thứ tự publish (cả Beta Release):**
344
231
 
345
- ### **Tag: beta**
232
+ 1. **Debug version** (với compose) - Published FIRST
233
+ - Version: `X.Y.Z-debug`
234
+ - Bao gồm thư mục `compose/`
235
+ - Dành cho development/testing
346
236
 
347
- **Khi nào:** Beta mode + Normal version
237
+ 2. **Normal version** (không compose) - Published SECOND
238
+ - Version: `X.Y.Z`
239
+ - Không bao gồm `compose/`
240
+ - Dành cho React Native apps
348
241
 
349
- **Cài đặt:**
350
- ```bash
351
- npm install @momo-kits/native-kits@beta
352
- npm install @momo-kits/native-kits@0.156.2-beta.1
353
- ```
242
+ ### **Phase 3: Publish Maven**
354
243
 
355
- **Use case:** Regular beta testing, pre-release versions
244
+ - Publish Kotlin Multiplatform artifacts
245
+ - Lên GitLab Packages Repository
246
+ - Dành cho `compose` module
356
247
 
357
- ### **Tag: latest**
248
+ ---
358
249
 
359
- **Khi nào:** Release mode
250
+ ## 📝 Dụ Chi Tiết
360
251
 
361
- **Cài đặt:**
362
- ```bash
363
- npm install @momo-kits/native-kits@latest
364
- npm install @momo-kits/native-kits
365
- npm install @momo-kits/native-kits@0.156.3
366
- ```
252
+ ### ** dụ 1: Beta - Version chưa tồn tại**
367
253
 
368
- **Use case:** Production releases, stable versions
254
+ ```bash
255
+ $ sh publish.sh beta
369
256
 
370
- ---
257
+ 📦 Version from package.json: 0.156.2
258
+ 🔎 Checking if version 0.156.2 already exists on npm...
259
+ ✅ Version 0.156.2 does not exist on npm. Safe to publish.
371
260
 
372
- ## 🔍 Chi Tiết Các Phases
261
+ # Phase 2
262
+ 🐛 Debug version: 0.156.2-debug (with compose) - Published first
263
+ 📦 Normal version: 0.156.2 (without compose) - Published second
264
+ 🏷️ NPM Tag: beta
265
+ ```
373
266
 
374
- ### **Phase 1: Check Version**
267
+ **Kết quả trên NPM:**
268
+ - `@momo-kits/native-kits@0.156.2-debug` (tag: beta)
269
+ - `@momo-kits/native-kits@0.156.2` (tag: beta)
375
270
 
376
- **Beta Mode:**
377
- 1. Đọc version từ `package.json`
378
- 2. Phát hiện version type (specific vs normal)
379
- 3. Set NPM tag (alpha vs beta)
380
- 4. Format version:
381
- - Specific: Check existence, fail if exists
382
- - Normal: Add beta suffix, auto-increment if exists
383
- 5. Update `gradle.properties`
271
+ ### **Ví dụ 2: Beta - Version đã tồn tại (FAIL)**
384
272
 
385
- **Release Mode:**
386
- 1. Đọc version từ `npm@latest` (KHÔNG từ package.json)
387
- 2. Increment patch version
388
- 3. Check existence, auto-increment if exists
389
- 4. Update `package.json` và `gradle.properties`
390
- 5. Set NPM tag = `latest`
273
+ ```bash
274
+ $ sh publish.sh beta check
391
275
 
392
- ### **Phase 2: Publish Maven**
276
+ 📦 Version from package.json: 0.156.1
277
+ 🔎 Checking if version 0.156.1 already exists on npm...
393
278
 
394
- **Thứ tự:** Chạy SAU phase 1, TRƯỚC phase 3
279
+ ERROR: Version 0.156.1 already exists on npm!
395
280
 
396
- **Hành động:**
397
- - Publish Kotlin Multiplatform artifacts
398
- - Lên GitLab Packages Repository
399
- - Dành cho `compose` module
281
+ Please update the version in package.json before publishing.
282
+ # Exit code: 1
283
+ ```
400
284
 
401
- ### **Phase 3: Publish NPM**
285
+ ### ** dụ 3: Release - Auto-convert và increment**
402
286
 
403
- **Thứ tự:** Chạy SAU phase 2 (Maven)
287
+ ```bash
288
+ $ sh publish.sh release
289
+
290
+ 📦 Version from package.json: 0.156.1-test.5
291
+ 🔄 Converting to beta format: 0.156.1-test.5 → 0.156.1-beta.1
292
+ ✅ Version updated to beta format: 0.156.1-beta.1
293
+ 🔎 Checking if version 0.156.1-beta.1 already exists on npm...
294
+ ⚠️ Version 0.156.1-beta.1 already exists on npm. Auto-incrementing...
295
+ Version incremented: 0.156.1-beta.1 → 0.156.1-beta.2
296
+ 🔄 Checking version 0.156.1-beta.2 on npm...
297
+ ✅ Version 0.156.1-beta.2 does not exist on npm. Using this version.
298
+ ```
404
299
 
405
- **Publish 2 versions theo thứ tự:**
300
+ **Kết quả trên NPM:**
301
+ - `@momo-kits/native-kits@0.156.1-beta.2-debug` (tag: latest)
302
+ - `@momo-kits/native-kits@0.156.1-beta.2` (tag: latest)
406
303
 
407
- 1. **Debug version** (với compose) - FIRST
408
- - Version: `X.Y.Z-debug`
409
- - Bao gồm thư mục `compose/`
410
- - Tag: `alpha` / `beta` / `latest`
304
+ ### ** dụ 4: Release - Multiple increments**
411
305
 
412
- 2. **Normal version** (không compose) - SECOND
413
- - Version: `X.Y.Z`
414
- - Không bao gồm `compose/`
415
- - Tag: `alpha` / `beta` / `latest`
306
+ ```bash
307
+ $ sh publish.sh release
308
+
309
+ 📦 Version from package.json: 0.156.1-beta.5
310
+
311
+ # Giả sử NPM đã có: beta.5, beta.6, beta.7
312
+ ⚠️ Version 0.156.1-beta.5 already exists on npm...
313
+ Version incremented: 0.156.1-beta.5 → 0.156.1-beta.6
314
+ ⚠️ Version 0.156.1-beta.6 already exists on npm...
315
+ Version incremented: 0.156.1-beta.6 → 0.156.1-beta.7
316
+ ⚠️ Version 0.156.1-beta.7 already exists on npm...
317
+ Version incremented: 0.156.1-beta.7 → 0.156.1-beta.8
318
+ ✅ Version 0.156.1-beta.8 does not exist on npm. Using this version.
319
+ ```
416
320
 
417
321
  ---
418
322
 
@@ -424,22 +328,20 @@ npm install @momo-kits/native-kits@0.156.3
424
328
  ┌──────────────────────────────────────────────────┐
425
329
  │ 1. Develop Feature │
426
330
  │ - Code changes │
427
- │ - Update version in package.json (beta only)
331
+ │ - Update version in package.json
428
332
  └─────────────────┬────────────────────────────────┘
429
333
 
430
334
  ┌──────────────────────────────────────────────────┐
431
335
  │ 2. Beta Testing │
432
336
  │ Local: sh publish.sh beta │
433
337
  │ CI: git commit -m "feat: xxx [ci build]" │
434
- │ Tag: alpha (specific) or beta (normal) │
435
338
  └─────────────────┬────────────────────────────────┘
436
339
 
437
340
  ┌──────────────────────────────────────────────────┐
438
341
  │ 3. Team Testing │
439
342
  │ npm install @momo-kits/native-kits@beta │
440
- │ npm install @momo-kits/native-kits@alpha │
441
343
  └─────────────────┬────────────────────────────────┘
442
-
344
+
443
345
  ┌──────┴──────┐
444
346
  │ Approved? │
445
347
  └──────┬───────┘
@@ -449,7 +351,6 @@ npm install @momo-kits/native-kits@0.156.3
449
351
  │ 4. Release Production │
450
352
  │ Local: sh publish.sh release │
451
353
  │ CI: merge to main │
452
- │ Reads from npm@latest, auto-increment │
453
354
  └─────────────────┬────────────────────────────────┘
454
355
 
455
356
  ┌──────────────────────────────────────────────────┐
@@ -462,38 +363,31 @@ npm install @momo-kits/native-kits@0.156.3
462
363
 
463
364
  ## ⚠️ Lưu Ý Quan Trọng
464
365
 
465
- ### 1. Version Management
466
-
467
- **Beta Mode:**
468
- - Specific version: Phải unique, fail nếu tồn tại
469
- - Normal version: Auto-increment, không cần lo
470
- - Version trong `package.json` được sử dụng
471
-
472
- **Release Mode:**
473
- - ⚠️ **KHÔNG đọc từ `package.json`**
474
- - ✅ **Đọc từ `npm@latest`**
475
- - Auto-increment patch version
476
- - `package.json` được UPDATE với version mới
366
+ ### 1. Publishing Order
477
367
 
478
- ### 2. NPM Tags
368
+ **NPM publish theo thứ tự:**
369
+ 1. ✅ Debug version (`X.Y.Z-debug`) - FIRST
370
+ 2. ✅ Normal version (`X.Y.Z`) - SECOND
479
371
 
480
- **Cài đặt theo tag:**
481
- ```bash
482
- npm install @momo-kits/native-kits@alpha # Specific versions
483
- npm install @momo-kits/native-kits@beta # Normal beta versions
484
- npm install @momo-kits/native-kits@latest # Release versions
485
- ```
372
+ ** do:** Đảm bảo debug version luôn available trước
486
373
 
487
- ### 3. Phase Execution Order
374
+ ### 2. Version Format
488
375
 
489
- **Cả Beta và Release:**
490
- 1. Check Version
491
- 2. **Publish Maven** (FIRST)
492
- 3. **Publish NPM** (SECOND)
376
+ **Beta Mode:**
377
+ - Giữ nguyên format trong `package.json`
378
+ - Fail nếu đã tồn tại trên npm
379
+ - ⚠️ Developer phải tự quản lý version
493
380
 
494
- ** do:** Maven artifacts cần được publish trước để NPM debug version có thể reference
381
+ **Release Mode:**
382
+ - Auto-convert sang `-beta.*` format:
383
+ - `0.156.1-test.5` → `0.156.1-beta.1`
384
+ - `0.156.1-alpha.2` → `0.156.1-beta.1`
385
+ - `0.156.1-rc.3` → `0.156.1-beta.1`
386
+ - Auto-increment nếu tồn tại:
387
+ - Beta: `-beta.5` → `-beta.6`
388
+ - Regular: `1.0.0` → `1.0.1`
495
389
 
496
- ### 4. File Modifications
390
+ ### 3. File Modifications
497
391
 
498
392
  Script tạm thời modify các file (restore sau publish):
499
393
  - `package.json` (version)
@@ -501,74 +395,93 @@ Script tạm thời modify các file (restore sau publish):
501
395
  - `.npmignore` (cho debug version)
502
396
  - `compose/build.gradle.kts` (cho debug version)
503
397
 
398
+ ### 4. NPM Permissions
399
+
400
+ ```bash
401
+ # Check account hiện tại
402
+ npm whoami
403
+
404
+ # Login nếu cần
405
+ npm login
406
+
407
+ # Verify permissions
408
+ npm access ls-packages @momo-kits
409
+ ```
410
+
504
411
  ---
505
412
 
506
413
  ## 🐛 Troubleshooting
507
414
 
508
- ### Lỗi: "Specific version already exists on npm"
415
+ ### Lỗi: "Could not read version from package.json"
416
+
417
+ **Nguyên nhân:** File `package.json` không hợp lệ
418
+
419
+ **Giải pháp:**
420
+ ```bash
421
+ # Kiểm tra syntax
422
+ cat package.json | jq .
423
+
424
+ # Kiểm tra version field
425
+ cat package.json | grep version
426
+ ```
509
427
 
510
- **Nguyên nhân:** Specific version đã được publish
428
+ ### Lỗi: "Version already exists on npm" (Beta)
429
+
430
+ **Nguyên nhân:** Version đã được publish
511
431
 
512
432
  **Giải pháp:**
513
433
  ```bash
514
434
  # Option 1: Tăng version thủ công
515
435
  vim package.json
516
- # "version": "0.156.2-test.1" → "0.156.2-test.2"
436
+ # "version": "0.156.1" → "0.156.2"
517
437
 
518
- # Option 2: Chuyển sang normal version
519
- vim package.json
520
- # "version": "0.156.2-test.1" → "0.156.2"
521
- # Script sẽ auto-format thành 0.156.2-beta.1
438
+ # Option 2: Sử dụng release mode (auto-increment)
439
+ sh publish.sh release
522
440
  ```
523
441
 
524
- ### Lỗi: "Could not read version from npm@latest"
442
+ ### Lỗi: "Permission denied"
525
443
 
526
- **Nguyên nhân:** Package chưa tồn tại trên npm hoặc chưa có version @latest
444
+ **Nguyên nhân:** Không quyền publish package
527
445
 
528
446
  **Giải pháp:**
529
447
  ```bash
530
- # Kiểm tra package trên npm
531
- npm view @momo-kits/native-kits
448
+ # 1. Kiểm tra account
449
+ npm whoami
532
450
 
533
- # Nếu chưa có, publish beta trước
534
- sh publish.sh beta
535
- ```
451
+ # 2. Login với account quyền
452
+ npm login
536
453
 
537
- ### Beta không trigger trên GitLab CI
454
+ # 3. Liên hệ admin để cấp quyền
455
+ ```
538
456
 
539
- **Kiểm tra:**
540
- - ✅ Commit message có `[ci build]`
541
- - ✅ Branch KHÔNG phải `main`
542
- - ✅ Branch KHÔNG match `engine/w*`
457
+ ### Script không chạy trên GitLab CI
543
458
 
544
- ### Release không trigger trên GitLab CI
459
+ **Beta không trigger:**
460
+ - ✅ Check commit message có `[ci build]`
461
+ - ✅ Check branch không match `engine/w*`
545
462
 
546
- **Kiểm tra:**
547
- - ✅ Đang push vào `main` branch
548
- - ✅ GitLab CI settings enabled
463
+ **Release không trigger:**
464
+ - ✅ Check đang push vào `main` branch
465
+ - ✅ Check GitLab CI settings
549
466
 
550
467
  ---
551
468
 
552
469
  ## 📦 Sử Dụng Packages
553
470
 
554
- ### Cài Đặt Beta/Alpha Versions
471
+ ### Cài Đặt Beta Version
555
472
 
556
473
  ```bash
557
- # Latest alpha (specific versions)
558
- npm install @momo-kits/native-kits@alpha
559
-
560
- # Latest beta (normal versions)
474
+ # Latest beta
561
475
  npm install @momo-kits/native-kits@beta
562
476
 
563
- # Specific version
564
- npm install @momo-kits/native-kits@0.156.2-beta.1
565
- npm install @momo-kits/native-kits@0.156.2-test.1
477
+ # Specific beta version
478
+ npm install @momo-kits/native-kits@0.156.2
566
479
 
567
480
  # Debug version (with compose)
568
- npm install @momo-kits/native-kits@0.156.2-beta.1-debug
481
+ npm install @momo-kits/native-kits@0.156.2-debug
569
482
  ```
570
483
 
571
- ### Cài Đặt Release Versions
484
+ ### Cài Đặt Release Version
572
485
 
573
486
  ```bash
574
487
  # Latest release
@@ -577,41 +490,28 @@ npm install @momo-kits/native-kits@latest
577
490
  npm install @momo-kits/native-kits
578
491
 
579
492
  # Specific release version
580
- npm install @momo-kits/native-kits@0.156.3
493
+ npm install @momo-kits/native-kits@0.156.1-beta.2
581
494
  ```
582
495
 
583
496
  ---
584
497
 
585
498
  ## 🎓 Best Practices
586
499
 
587
- ### 1. Beta Testing
588
-
589
- **Specific versions (alpha tag):**
590
- - Dùng cho testing features cụ thể
591
- - Phải unique, không duplicate
592
- - Ví dụ: `0.156.2-hotfix.1`, `0.156.2-experiment.1`
500
+ 1. **Development:**
501
+ - Luôn test với beta trước khi release
502
+ - Dùng version có ý nghĩa (semantic versioning)
593
503
 
594
- **Normal versions (beta tag):**
595
- - Dùng cho continuous development
596
- - Auto-increment, dễ quản
597
- - Ví dụ: `0.156.2`, `0.156.2-beta.1`
504
+ 2. **Beta Testing:**
505
+ - Update version mỗi lần publish beta
506
+ - Kiểm tra version trước khi commit
598
507
 
599
- ### 2. Release
508
+ 3. **Release:**
509
+ - Chỉ release từ nhánh `main`
510
+ - Đảm bảo tất cả tests pass
600
511
 
601
- - Luôn merge vào `main` để trigger release
602
- - Không cần lo version trong `package.json`
603
- - Script tự động đọc từ npm@latest và increment
604
-
605
- ### 3. Version Naming
606
-
607
- **Good:**
608
- - `0.156.2-test.1` (specific, clear purpose)
609
- - `0.156.2-beta.1` (normal, standard format)
610
- - `0.156.2` (normal, will auto-format)
611
-
612
- **Avoid:**
613
- - `0.156.2-beta-test.1` (confusing)
614
- - `0.156.2-v1` (unclear)
512
+ 4. **Version Management:**
513
+ - Beta: Tự quản version, tăng thủ công
514
+ - Release: Để script auto-increment
615
515
 
616
516
  ---
617
517
 
@@ -624,52 +524,21 @@ Nếu có vấn đề, liên hệ team hoặc tạo issue trên GitLab.
624
524
  ## 🔗 Quick Reference
625
525
 
626
526
  ```bash
627
- # Beta - Local (Specific version → alpha tag)
628
- # package.json: "version": "0.156.2-test.1"
629
- sh publish.sh beta
630
-
631
- # Beta - Local (Normal version → beta tag)
632
- # package.json: "version": "0.156.2"
633
- sh publish.sh beta
634
-
635
- # Release - Local (reads from npm@latest)
636
- sh publish.sh release
637
-
638
- # Individual phases
639
- sh publish.sh beta check # Phase 1
640
- sh publish.sh beta maven # Phase 2
641
- sh publish.sh beta npm # Phase 3
527
+ # Beta - Local
528
+ sh publish.sh beta # All phases
529
+ sh publish.sh beta check # Check only
530
+ sh publish.sh beta npm # NPM only
531
+ sh publish.sh beta maven # Maven only
532
+
533
+ # Release - Local
534
+ sh publish.sh release # All phases
535
+ sh publish.sh release check # Check only
536
+ sh publish.sh release npm # NPM only
537
+ sh publish.sh release maven # Maven only
642
538
 
643
539
  # Beta - CI
644
- git commit -m "feat: xxx [ci build]" # Trigger beta (not on main)
540
+ git commit -m "feat: xxx [ci build]" # Trigger beta
645
541
 
646
542
  # Release - CI
647
543
  git push origin main # Trigger release
648
544
  ```
649
-
650
- ---
651
-
652
- ## 📋 Version Type Decision Tree
653
-
654
- ```
655
- Start: Publish Beta
656
-
657
- Check version in package.json
658
-
659
- Has suffix? (contains "-")
660
- ├─ No → Normal Version
661
- │ ├─ Auto-add: 0.156.2 → 0.156.2-beta.1
662
- │ ├─ Tag: beta
663
- │ └─ Auto-increment if exists
664
-
665
- └─ Yes → Check suffix type
666
- ├─ Contains "beta" → Normal Version
667
- │ ├─ Keep format: 0.156.2-beta.1
668
- │ ├─ Tag: beta
669
- │ └─ Auto-increment if exists
670
-
671
- └─ Other suffix → Specific Version
672
- ├─ Keep format: 0.156.2-test.1
673
- ├─ Tag: alpha
674
- └─ FAIL if exists
675
- ```