mirror of
https://github.com/pezkuwichain/pwap.git
synced 2026-04-22 02:07:55 +00:00
feat(mobile): Add semantic versioning with standard-version
- Add standard-version for automated version bumping - Create .versionrc with custom configuration for app.json - Add version-updater.cjs script for Expo version syncing - Add version bump scripts (release, release:patch, release:minor, release:major) - Initialize CHANGELOG.md with v1.0.0 release notes - Add iOS buildNumber and Android versionCode for app store releases - Update .gitignore to allow CHANGELOG.md This establishes proper engineering practices for version management.
This commit is contained in:
@@ -141,12 +141,16 @@ vite.config.ts.timestamp-*
|
|||||||
# Local analysis and documentation
|
# Local analysis and documentation
|
||||||
*.md
|
*.md
|
||||||
!README.md
|
!README.md
|
||||||
|
!CHANGELOG.md
|
||||||
|
!mobile/CHANGELOG.md
|
||||||
COMMISSION_SYSTEM_SUMMARY -
|
COMMISSION_SYSTEM_SUMMARY -
|
||||||
Copy.md:Zone.Identifier
|
Copy.md:Zone.Identifier
|
||||||
|
|
||||||
# Local analysis and documentation
|
# Local analysis and documentation
|
||||||
*.md
|
*.md
|
||||||
!README.md
|
!README.md
|
||||||
|
!CHANGELOG.md
|
||||||
|
!mobile/CHANGELOG.md
|
||||||
COMMISSION_SYSTEM_SUMMARY - Copy.md:Zone.Identifier
|
COMMISSION_SYSTEM_SUMMARY - Copy.md:Zone.Identifier
|
||||||
|
|
||||||
# APK files (too large for GitHub)
|
# APK files (too large for GitHub)
|
||||||
|
|||||||
@@ -0,0 +1,29 @@
|
|||||||
|
{
|
||||||
|
"types": [
|
||||||
|
{ "type": "feat", "section": "Features" },
|
||||||
|
{ "type": "fix", "section": "Bug Fixes" },
|
||||||
|
{ "type": "chore", "section": "Chores", "hidden": false },
|
||||||
|
{ "type": "docs", "section": "Documentation", "hidden": false },
|
||||||
|
{ "type": "style", "section": "Styling", "hidden": true },
|
||||||
|
{ "type": "refactor", "section": "Code Refactoring", "hidden": false },
|
||||||
|
{ "type": "perf", "section": "Performance Improvements" },
|
||||||
|
{ "type": "test", "section": "Tests", "hidden": false },
|
||||||
|
{ "type": "build", "section": "Build System", "hidden": false },
|
||||||
|
{ "type": "ci", "section": "Continuous Integration", "hidden": false }
|
||||||
|
],
|
||||||
|
"bumpFiles": [
|
||||||
|
{
|
||||||
|
"filename": "package.json",
|
||||||
|
"type": "json"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"filename": "app.json",
|
||||||
|
"updater": "scripts/version-updater.cjs"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"commitUrlFormat": "https://github.com/pezkuwichain/pwap/commit/{{hash}}",
|
||||||
|
"compareUrlFormat": "https://github.com/pezkuwichain/pwap/compare/{{previousTag}}...{{currentTag}}",
|
||||||
|
"issueUrlFormat": "https://github.com/pezkuwichain/pwap/issues/{{id}}",
|
||||||
|
"tagPrefix": "mobile-v",
|
||||||
|
"header": "# Pezkuwi Mobile Changelog\n\nAll notable changes to the Pezkuwi Mobile application will be documented in this file.\n"
|
||||||
|
}
|
||||||
@@ -0,0 +1,27 @@
|
|||||||
|
# Pezkuwi Mobile Changelog
|
||||||
|
|
||||||
|
All notable changes to the Pezkuwi Mobile application will be documented in this file.
|
||||||
|
|
||||||
|
## [1.0.0] - 2026-01-19
|
||||||
|
|
||||||
|
### Features
|
||||||
|
|
||||||
|
- Welcome screen with language selection
|
||||||
|
- Multi-language support (EN, TR, KMR, CKB, AR, FA)
|
||||||
|
- RTL support for Arabic, Central Kurdish, and Persian
|
||||||
|
- Authentication (Sign In/Sign Up)
|
||||||
|
- Main dashboard with 5-tab bottom navigation
|
||||||
|
- Wallet integration with @pezkuwi/api
|
||||||
|
- Live blockchain data display (HEZ, PEZ, USDT)
|
||||||
|
- Send/receive transaction functionality
|
||||||
|
- QR code generation and scanning
|
||||||
|
- Biometric authentication (Face ID / Fingerprint)
|
||||||
|
- Secure storage for sensitive data
|
||||||
|
- WebView SSO integration
|
||||||
|
|
||||||
|
### Chores
|
||||||
|
|
||||||
|
- Initial project setup with Expo SDK 54
|
||||||
|
- Jest testing configuration with 35%+ coverage
|
||||||
|
- ESLint configuration
|
||||||
|
- CI/CD pipeline setup
|
||||||
@@ -14,12 +14,15 @@
|
|||||||
},
|
},
|
||||||
"ios": {
|
"ios": {
|
||||||
"supportsTablet": true,
|
"supportsTablet": true,
|
||||||
|
"bundleIdentifier": "io.pezkuwichain.wallet",
|
||||||
|
"buildNumber": "10000",
|
||||||
"infoPlist": {
|
"infoPlist": {
|
||||||
"NSCameraUsageDescription": "Pezkuwi needs camera access to scan QR codes for wallet addresses and payments."
|
"NSCameraUsageDescription": "Pezkuwi needs camera access to scan QR codes for wallet addresses and payments."
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"android": {
|
"android": {
|
||||||
"package": "io.pezkuwichain.wallet",
|
"package": "io.pezkuwichain.wallet",
|
||||||
|
"versionCode": 10000,
|
||||||
"adaptiveIcon": {
|
"adaptiveIcon": {
|
||||||
"foregroundImage": "./assets/adaptive-icon.png",
|
"foregroundImage": "./assets/adaptive-icon.png",
|
||||||
"backgroundColor": "#ffffff"
|
"backgroundColor": "#ffffff"
|
||||||
|
|||||||
Generated
+1778
File diff suppressed because it is too large
Load Diff
+7
-1
@@ -29,7 +29,12 @@
|
|||||||
"test:watch": "jest --watch",
|
"test:watch": "jest --watch",
|
||||||
"test:coverage": "jest --coverage",
|
"test:coverage": "jest --coverage",
|
||||||
"lint": "eslint .",
|
"lint": "eslint .",
|
||||||
"lint:fix": "eslint . --fix"
|
"lint:fix": "eslint . --fix",
|
||||||
|
"release": "standard-version",
|
||||||
|
"release:patch": "standard-version --release-as patch",
|
||||||
|
"release:minor": "standard-version --release-as minor",
|
||||||
|
"release:major": "standard-version --release-as major",
|
||||||
|
"release:dry-run": "standard-version --dry-run"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@babel/runtime": "^7.28.4",
|
"@babel/runtime": "^7.28.4",
|
||||||
@@ -112,6 +117,7 @@
|
|||||||
"jest-expo": "^54.0.16",
|
"jest-expo": "^54.0.16",
|
||||||
"react-native": "^0.83.1",
|
"react-native": "^0.83.1",
|
||||||
"react-test-renderer": "19.1.0",
|
"react-test-renderer": "19.1.0",
|
||||||
|
"standard-version": "^9.5.0",
|
||||||
"typescript": "~5.9.2",
|
"typescript": "~5.9.2",
|
||||||
"typescript-eslint": "^8.47.0"
|
"typescript-eslint": "^8.47.0"
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -0,0 +1,39 @@
|
|||||||
|
/**
|
||||||
|
* Custom version updater for app.json
|
||||||
|
* Used by standard-version to update Expo app.json version fields
|
||||||
|
*/
|
||||||
|
|
||||||
|
const fs = require('fs');
|
||||||
|
const path = require('path');
|
||||||
|
|
||||||
|
const APP_JSON_PATH = path.join(__dirname, '..', 'app.json');
|
||||||
|
|
||||||
|
module.exports.readVersion = function (contents) {
|
||||||
|
const appJson = JSON.parse(contents);
|
||||||
|
return appJson.expo.version;
|
||||||
|
};
|
||||||
|
|
||||||
|
module.exports.writeVersion = function (contents, version) {
|
||||||
|
const appJson = JSON.parse(contents);
|
||||||
|
|
||||||
|
// Update expo.version
|
||||||
|
appJson.expo.version = version;
|
||||||
|
|
||||||
|
// Auto-increment build numbers for iOS and Android
|
||||||
|
const versionParts = version.split('.');
|
||||||
|
const buildNumber = parseInt(versionParts[0]) * 10000 +
|
||||||
|
parseInt(versionParts[1]) * 100 +
|
||||||
|
parseInt(versionParts[2]);
|
||||||
|
|
||||||
|
// Update iOS buildNumber
|
||||||
|
if (appJson.expo.ios) {
|
||||||
|
appJson.expo.ios.buildNumber = String(buildNumber);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Update Android versionCode
|
||||||
|
if (appJson.expo.android) {
|
||||||
|
appJson.expo.android.versionCode = buildNumber;
|
||||||
|
}
|
||||||
|
|
||||||
|
return JSON.stringify(appJson, null, 2) + '\n';
|
||||||
|
};
|
||||||
Reference in New Issue
Block a user