feat(release): prepare 1.1.0 candidate
8
docs/v3/play/assets/d3ro-voice-legacy-icon-source.svg
Normal file
|
|
@ -0,0 +1,8 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512">
|
||||
<rect width="512" height="512" rx="112" fill="#19191b"/>
|
||||
<circle cx="256" cy="224" r="64" fill="none" stroke="#3b82f6" stroke-width="24"/>
|
||||
<rect x="232" y="288" width="48" height="80" rx="24" fill="#3b82f6"/>
|
||||
<path d="M160 256 Q160 352 256 352 Q352 352 352 256" fill="none" stroke="#3b82f6" stroke-width="20" stroke-linecap="round"/>
|
||||
<line x1="256" y1="352" x2="256" y2="416" stroke="#3b82f6" stroke-width="20" stroke-linecap="round"/>
|
||||
<line x1="208" y1="416" x2="304" y2="416" stroke="#3b82f6" stroke-width="20" stroke-linecap="round"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 620 B |
BIN
docs/v3/play/assets/d3ro-voice-play-icon-512.png
Normal file
|
After Width: | Height: | Size: 13 KiB |
8
docs/v3/play/assets/d3ro-voice-play-icon-source.svg
Normal file
|
|
@ -0,0 +1,8 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512">
|
||||
<rect width="512" height="512" fill="#19191b"/>
|
||||
<circle cx="256" cy="224" r="64" fill="none" stroke="#3b82f6" stroke-width="24"/>
|
||||
<rect x="232" y="288" width="48" height="80" rx="24" fill="#3b82f6"/>
|
||||
<path d="M160 256 Q160 352 256 352 Q352 352 352 256" fill="none" stroke="#3b82f6" stroke-width="20" stroke-linecap="round"/>
|
||||
<line x1="256" y1="352" x2="256" y2="416" stroke="#3b82f6" stroke-width="20" stroke-linecap="round"/>
|
||||
<line x1="208" y1="416" x2="304" y2="416" stroke="#3b82f6" stroke-width="20" stroke-linecap="round"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 611 B |
8
docs/v3/play/assets/d3ro-voice-round-icon-source.svg
Normal file
|
|
@ -0,0 +1,8 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512">
|
||||
<circle cx="256" cy="256" r="256" fill="#19191b"/>
|
||||
<circle cx="256" cy="224" r="64" fill="none" stroke="#3b82f6" stroke-width="24"/>
|
||||
<rect x="232" y="288" width="48" height="80" rx="24" fill="#3b82f6"/>
|
||||
<path d="M160 256 Q160 352 256 352 Q352 352 352 256" fill="none" stroke="#3b82f6" stroke-width="20" stroke-linecap="round"/>
|
||||
<line x1="256" y1="352" x2="256" y2="416" stroke="#3b82f6" stroke-width="20" stroke-linecap="round"/>
|
||||
<line x1="208" y1="416" x2="304" y2="416" stroke="#3b82f6" stroke-width="20" stroke-linecap="round"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 614 B |
57
docs/v3/play/assets/feature-graphic/README.md
Normal file
|
|
@ -0,0 +1,57 @@
|
|||
# Google Play feature graphic 후보
|
||||
|
||||
기준일: 2026-08-24
|
||||
|
||||
Google Play의 1024×500 feature graphic 규격에 맞춘 선택 후보다. 네 후보 모두
|
||||
저장소의 canonical D3RO microphone motif와 `D3RO VOICE` 표기만 사용하며, 기능이나
|
||||
성과를 주장하는 문구와 합성 앱 화면은 포함하지 않는다.
|
||||
|
||||
## 후보와 권장안
|
||||
|
||||
| 후보 | 방향 | PNG SHA-256 |
|
||||
| ------------------------------ | --------------------------------------- | ------------------------------------------------------------------ |
|
||||
| A `candidate-a-signal-grid` | dark signal grid, microphone + waveform | `3CFA86A4843339FD9C15781598E301ECE29C2B1522828F7AD1B69D8497775103` |
|
||||
| B `candidate-b-voice-orbit` | centered voice orbit | `F7FCB26B063762D08AC1211A85CFDDD3C99C14936CD6DE753F5E9F88BC0B0D14` |
|
||||
| C `candidate-c-blueprint-band` | light/dark blueprint split | `C484AC514966347BF4E7AA526B040B88DDA89F9150AC3677B8C74297A1373C1E` |
|
||||
| D `candidate-d-monolith` | bold dark monolith | `28FC7B608454E073A29AFE2149414F4186629AE8889B3FE2FA683D786F8C3EA9` |
|
||||
|
||||
현재 권장안은 **A**다. 작은 스토어 카드에서도 microphone, 제품명, 파형이 가장
|
||||
명확하게 분리된다. 다만 최종 자산 확정과 Play Console 업로드는 사용자 선택 및
|
||||
Console preview 검증 뒤에만 진행한다.
|
||||
|
||||
## 원본과 재현
|
||||
|
||||
- brand source: `site/public/favicon.svg`
|
||||
- Play icon source: `docs/v3/play/assets/d3ro-voice-play-icon-source.svg`
|
||||
- 편집 원본: 각 후보의 `.svg`
|
||||
- 제출 후보: 같은 basename의 `.png`
|
||||
- export runtime: ImageMagick `7.1.2-25 Q16-HDRI`
|
||||
- 출력 조건: 1024×500, PNG, sRGB, 8-bit, TrueColor, 완전 불투명
|
||||
- machine-readable manifest: `manifest.json`
|
||||
- verifier: `scripts/ci/verify-play-store-assets.mjs`
|
||||
|
||||
저장소 루트의 PowerShell에서 다음 명령으로 다시 내보낸다.
|
||||
|
||||
```powershell
|
||||
Get-ChildItem docs/v3/play/assets/feature-graphic/candidate-*.svg |
|
||||
ForEach-Object {
|
||||
$output = [System.IO.Path]::ChangeExtension($_.FullName, '.png')
|
||||
magick $_.FullName -background none -resize '1024x500!' -alpha off -colorspace sRGB "PNG24:$output"
|
||||
}
|
||||
```
|
||||
|
||||
환경이나 SVG renderer 버전이 바뀌면 raster hash가 달라질 수 있다. 제출할 PNG는
|
||||
위 해시, 크기, 불투명 여부를 다시 확인하고 그 파일을 release evidence에 기록한다.
|
||||
|
||||
```powershell
|
||||
npm run release:play:assets
|
||||
```
|
||||
|
||||
## SVG 원본 해시
|
||||
|
||||
| 파일 | SHA-256 |
|
||||
| -------------------------------- | ------------------------------------------------------------------ |
|
||||
| `candidate-a-signal-grid.svg` | `3A39D0D61F5AE7E182149BD11C9D7F491FBEC0A542999B0516C869AE82E24B1B` |
|
||||
| `candidate-b-voice-orbit.svg` | `DB7D778394419C6AF8FF43C7490B43C0CD65C61CE012A358FB37E603431082F4` |
|
||||
| `candidate-c-blueprint-band.svg` | `176BEB99EA418F78BF5F9DC4E4D6A3A3700F5CEADA28697F3750B0C8883E4546` |
|
||||
| `candidate-d-monolith.svg` | `6560C334C061470959D9BA120E58CCA264B5A1ED41FBC3045F804049117640FF` |
|
||||
BIN
docs/v3/play/assets/feature-graphic/candidate-a-signal-grid.png
Normal file
|
After Width: | Height: | Size: 25 KiB |
|
|
@ -0,0 +1,17 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1024 500">
|
||||
<rect width="1024" height="500" fill="#19191b"/>
|
||||
<g stroke="#2b2b31" stroke-width="1">
|
||||
<path d="M0 50H1024M0 100H1024M0 150H1024M0 200H1024M0 250H1024M0 300H1024M0 350H1024M0 400H1024M0 450H1024"/>
|
||||
<path d="M64 0V500M128 0V500M192 0V500M256 0V500M320 0V500M384 0V500M448 0V500M512 0V500M576 0V500M640 0V500M704 0V500M768 0V500M832 0V500M896 0V500M960 0V500"/>
|
||||
</g>
|
||||
<rect x="64" y="54" width="290" height="392" rx="42" fill="#111114" stroke="#3b82f6" stroke-width="2"/>
|
||||
<g transform="translate(98 62) scale(4.35)" fill="none" stroke="#3b82f6" stroke-linecap="round">
|
||||
<circle cx="32" cy="28" r="8" stroke-width="3"/>
|
||||
<rect x="29" y="36" width="6" height="10" rx="3" fill="#3b82f6" stroke="none"/>
|
||||
<path d="M20 32Q20 44 32 44Q44 44 44 32" stroke-width="2.5"/>
|
||||
<path d="M32 44V52M26 52H38" stroke-width="2.5"/>
|
||||
</g>
|
||||
<text x="430" y="227" fill="#f5f7fb" font-family="Arial, sans-serif" font-size="78" font-weight="700" letter-spacing="7">D3RO</text>
|
||||
<text x="434" y="288" fill="#3b82f6" font-family="Arial, sans-serif" font-size="40" font-weight="700" letter-spacing="15">VOICE</text>
|
||||
<path d="M432 352H484L500 326L526 390L548 340L568 362H620L640 312L664 396L690 346L710 366H774L792 333L812 378L834 352H944" fill="none" stroke="#3b82f6" stroke-width="5" stroke-linejoin="round" stroke-linecap="round"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 1.4 KiB |
BIN
docs/v3/play/assets/feature-graphic/candidate-b-voice-orbit.png
Normal file
|
After Width: | Height: | Size: 44 KiB |
|
|
@ -0,0 +1,16 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1024 500">
|
||||
<rect width="1024" height="500" fill="#0f1014"/>
|
||||
<circle cx="512" cy="250" r="205" fill="#19191b" stroke="#292c35" stroke-width="2"/>
|
||||
<circle cx="512" cy="250" r="166" fill="none" stroke="#3b82f6" stroke-opacity="0.22" stroke-width="28"/>
|
||||
<circle cx="512" cy="250" r="126" fill="none" stroke="#3b82f6" stroke-opacity="0.45" stroke-width="3" stroke-dasharray="5 17"/>
|
||||
<g transform="translate(416 106) scale(3)" fill="none" stroke="#3b82f6" stroke-linecap="round">
|
||||
<circle cx="32" cy="28" r="8" stroke-width="3"/>
|
||||
<rect x="29" y="36" width="6" height="10" rx="3" fill="#3b82f6" stroke="none"/>
|
||||
<path d="M20 32Q20 44 32 44Q44 44 44 32" stroke-width="2.5"/>
|
||||
<path d="M32 44V52M26 52H38" stroke-width="2.5"/>
|
||||
</g>
|
||||
<path d="M40 250H250M774 250H984" stroke="#3b82f6" stroke-width="2"/>
|
||||
<path d="M62 250L92 250L110 220L134 286L158 238L180 260L205 210L228 276L250 250M774 250L802 250L826 208L848 290L872 235L896 270L920 224L944 278L962 250" fill="none" stroke="#3b82f6" stroke-width="4" stroke-linecap="round" stroke-linejoin="round"/>
|
||||
<rect x="401" y="386" width="222" height="46" rx="23" fill="#3b82f6"/>
|
||||
<text x="512" y="417" text-anchor="middle" fill="#0f1014" font-family="Arial, sans-serif" font-size="22" font-weight="700" letter-spacing="4">D3RO VOICE</text>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 1.3 KiB |
|
After Width: | Height: | Size: 14 KiB |
|
|
@ -0,0 +1,27 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1024 500">
|
||||
<rect width="1024" height="500" fill="#f4f6fa"/>
|
||||
<rect x="0" y="0" width="356" height="500" fill="#19191b"/>
|
||||
<rect x="356" y="0" width="28" height="500" fill="#3b82f6"/>
|
||||
<g transform="translate(42 98) scale(4.25)" fill="none" stroke="#3b82f6" stroke-linecap="round">
|
||||
<circle cx="32" cy="28" r="8" stroke-width="3"/>
|
||||
<rect x="29" y="36" width="6" height="10" rx="3" fill="#3b82f6" stroke="none"/>
|
||||
<path d="M20 32Q20 44 32 44Q44 44 44 32" stroke-width="2.5"/>
|
||||
<path d="M32 44V52M26 52H38" stroke-width="2.5"/>
|
||||
</g>
|
||||
<text x="438" y="224" fill="#19191b" font-family="Arial, sans-serif" font-size="82" font-weight="700" letter-spacing="5">D3RO</text>
|
||||
<text x="443" y="287" fill="#3b82f6" font-family="Arial, sans-serif" font-size="38" font-weight="700" letter-spacing="17">VOICE</text>
|
||||
<g stroke="#cbd2df" stroke-width="2">
|
||||
<path d="M444 344H954"/>
|
||||
<path d="M444 372H954"/>
|
||||
<path d="M444 400H954"/>
|
||||
</g>
|
||||
<g fill="#3b82f6">
|
||||
<rect x="444" y="366" width="8" height="13" rx="4"/>
|
||||
<rect x="460" y="349" width="8" height="47" rx="4"/>
|
||||
<rect x="476" y="333" width="8" height="79" rx="4"/>
|
||||
<rect x="492" y="357" width="8" height="31" rx="4"/>
|
||||
<rect x="508" y="341" width="8" height="63" rx="4"/>
|
||||
<rect x="524" y="362" width="8" height="21" rx="4"/>
|
||||
<rect x="540" y="352" width="8" height="41" rx="4"/>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 1.4 KiB |
BIN
docs/v3/play/assets/feature-graphic/candidate-d-monolith.png
Normal file
|
After Width: | Height: | Size: 28 KiB |
15
docs/v3/play/assets/feature-graphic/candidate-d-monolith.svg
Normal file
|
|
@ -0,0 +1,15 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1024 500">
|
||||
<rect width="1024" height="500" fill="#19191b"/>
|
||||
<rect x="52" y="42" width="920" height="416" rx="34" fill="#15161a" stroke="#31343d" stroke-width="2"/>
|
||||
<text x="90" y="314" fill="#f7f8fb" font-family="Arial, sans-serif" font-size="210" font-weight="700" letter-spacing="-8">D3RO</text>
|
||||
<rect x="90" y="354" width="378" height="58" rx="29" fill="#3b82f6"/>
|
||||
<text x="279" y="394" text-anchor="middle" fill="#101115" font-family="Arial, sans-serif" font-size="28" font-weight="700" letter-spacing="11">VOICE</text>
|
||||
<circle cx="826" cy="250" r="112" fill="#0e0f12" stroke="#3b82f6" stroke-width="2"/>
|
||||
<g transform="translate(730 106) scale(3)" fill="none" stroke="#3b82f6" stroke-linecap="round">
|
||||
<circle cx="32" cy="28" r="8" stroke-width="3"/>
|
||||
<rect x="29" y="36" width="6" height="10" rx="3" fill="#3b82f6" stroke="none"/>
|
||||
<path d="M20 32Q20 44 32 44Q44 44 44 32" stroke-width="2.5"/>
|
||||
<path d="M32 44V52M26 52H38" stroke-width="2.5"/>
|
||||
</g>
|
||||
<path d="M720 404H932" stroke="#3b82f6" stroke-width="3" stroke-dasharray="3 12" stroke-linecap="round"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 1.1 KiB |
57
docs/v3/play/assets/feature-graphic/manifest.json
Normal file
|
|
@ -0,0 +1,57 @@
|
|||
{
|
||||
"schemaVersion": 1,
|
||||
"generatedOn": "2026-08-24",
|
||||
"selection": {
|
||||
"recommended": "A",
|
||||
"status": "pending_user_selection_and_console_preview"
|
||||
},
|
||||
"brandSource": "site/public/favicon.svg",
|
||||
"export": {
|
||||
"tool": "ImageMagick 7.1.2-25 Q16-HDRI",
|
||||
"format": "PNG24",
|
||||
"colorSpace": "sRGB",
|
||||
"width": 1024,
|
||||
"height": 500,
|
||||
"bitDepth": 8,
|
||||
"pngColorType": 2,
|
||||
"opaque": true
|
||||
},
|
||||
"candidates": [
|
||||
{
|
||||
"id": "A",
|
||||
"source": "candidate-a-signal-grid.svg",
|
||||
"sourceBytes": 1411,
|
||||
"sourceSha256": "3A39D0D61F5AE7E182149BD11C9D7F491FBEC0A542999B0516C869AE82E24B1B",
|
||||
"output": "candidate-a-signal-grid.png",
|
||||
"outputBytes": 25200,
|
||||
"outputSha256": "3CFA86A4843339FD9C15781598E301ECE29C2B1522828F7AD1B69D8497775103"
|
||||
},
|
||||
{
|
||||
"id": "B",
|
||||
"source": "candidate-b-voice-orbit.svg",
|
||||
"sourceBytes": 1365,
|
||||
"sourceSha256": "DB7D778394419C6AF8FF43C7490B43C0CD65C61CE012A358FB37E603431082F4",
|
||||
"output": "candidate-b-voice-orbit.png",
|
||||
"outputBytes": 44972,
|
||||
"outputSha256": "F7FCB26B063762D08AC1211A85CFDDD3C99C14936CD6DE753F5E9F88BC0B0D14"
|
||||
},
|
||||
{
|
||||
"id": "C",
|
||||
"source": "candidate-c-blueprint-band.svg",
|
||||
"sourceBytes": 1443,
|
||||
"sourceSha256": "176BEB99EA418F78BF5F9DC4E4D6A3A3700F5CEADA28697F3750B0C8883E4546",
|
||||
"output": "candidate-c-blueprint-band.png",
|
||||
"outputBytes": 14337,
|
||||
"outputSha256": "C484AC514966347BF4E7AA526B040B88DDA89F9150AC3677B8C74297A1373C1E"
|
||||
},
|
||||
{
|
||||
"id": "D",
|
||||
"source": "candidate-d-monolith.svg",
|
||||
"sourceBytes": 1151,
|
||||
"sourceSha256": "6560C334C061470959D9BA120E58CCA264B5A1ED41FBC3045F804049117640FF",
|
||||
"output": "candidate-d-monolith.png",
|
||||
"outputBytes": 28737,
|
||||
"outputSha256": "28FC7B608454E073A29AFE2149414F4186629AE8889B3FE2FA683D786F8C3EA9"
|
||||
}
|
||||
]
|
||||
}
|
||||
270
docs/v3/play/assets/mobile-icon-manifest.json
Normal file
|
|
@ -0,0 +1,270 @@
|
|||
{
|
||||
"schemaVersion": 1,
|
||||
"canonicalSource": {
|
||||
"path": "docs/v3/play/assets/d3ro-voice-play-icon-source.svg",
|
||||
"viewBox": "0 0 512 512",
|
||||
"sha256": "E2390BF8AA82EA357D61D8834F9FC58179227A87E26672699C63866A533B7E5B"
|
||||
},
|
||||
"playStoreIcon": {
|
||||
"path": "docs/v3/play/assets/d3ro-voice-play-icon-512.png",
|
||||
"width": 512,
|
||||
"height": 512,
|
||||
"bitDepth": 8,
|
||||
"colorType": 6,
|
||||
"alpha": "opaque",
|
||||
"sha256": "0FAE53FB40CCE4B9FB0213CBEDB4E087CA00A8F8C438D6731C5C47C4AFD096B1"
|
||||
},
|
||||
"android": {
|
||||
"applicationManifest": "apps/mobile-rn/android/app/src/main/AndroidManifest.xml",
|
||||
"icon": "@mipmap/ic_launcher",
|
||||
"roundIcon": "@mipmap/ic_launcher_round",
|
||||
"background": {
|
||||
"path": "apps/mobile-rn/android/app/src/main/res/values/colors.xml",
|
||||
"resource": "d3ro_launcher_background",
|
||||
"value": "#19191B"
|
||||
},
|
||||
"sourceAssets": [
|
||||
{
|
||||
"path": "docs/v3/play/assets/d3ro-voice-legacy-icon-source.svg",
|
||||
"viewBox": "0 0 512 512",
|
||||
"sha256": "8DDC2ACB6C8BC379611597A47FECA65DDC61237DE30B78C16F355D00FC264783"
|
||||
},
|
||||
{
|
||||
"path": "docs/v3/play/assets/d3ro-voice-round-icon-source.svg",
|
||||
"viewBox": "0 0 512 512",
|
||||
"sha256": "978BEB618DDC8BC691090AC779CDB8177C62E70BEF538C407D0FE599D7126874"
|
||||
}
|
||||
],
|
||||
"vectors": {
|
||||
"foreground": {
|
||||
"path": "apps/mobile-rn/android/app/src/main/res/drawable/d3ro_launcher_foreground.xml",
|
||||
"sha256": "F2123246C93C1D11ED2DE530F17203C4A8F258DF244BC24146CDE0E09737345D"
|
||||
},
|
||||
"monochrome": {
|
||||
"path": "apps/mobile-rn/android/app/src/main/res/drawable/d3ro_launcher_monochrome.xml",
|
||||
"sha256": "035F9599E46E4AB34F30EAA73A586DFAB0C086C7A653122EE3C33307E908A650"
|
||||
}
|
||||
},
|
||||
"adaptiveIcons": [
|
||||
{
|
||||
"path": "apps/mobile-rn/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml",
|
||||
"monochrome": false
|
||||
},
|
||||
{
|
||||
"path": "apps/mobile-rn/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml",
|
||||
"monochrome": false
|
||||
},
|
||||
{
|
||||
"path": "apps/mobile-rn/android/app/src/main/res/mipmap-anydpi-v33/ic_launcher.xml",
|
||||
"monochrome": true
|
||||
},
|
||||
{
|
||||
"path": "apps/mobile-rn/android/app/src/main/res/mipmap-anydpi-v33/ic_launcher_round.xml",
|
||||
"monochrome": true
|
||||
}
|
||||
],
|
||||
"legacyIcons": [
|
||||
{
|
||||
"density": "mdpi",
|
||||
"pixels": 48,
|
||||
"iconPath": "apps/mobile-rn/android/app/src/main/res/mipmap-mdpi/ic_launcher.png",
|
||||
"iconSha256": "82C702747E3BBF2A03826989D093CA99C3CBB8A125B81F2F0631FF66A2F536EA",
|
||||
"roundPath": "apps/mobile-rn/android/app/src/main/res/mipmap-mdpi/ic_launcher_round.png",
|
||||
"roundSha256": "202002E1C9A68035C2A2C7F1313EB73E1F0CF0578D0228F9FBCEDDA809B5D891"
|
||||
},
|
||||
{
|
||||
"density": "hdpi",
|
||||
"pixels": 72,
|
||||
"iconPath": "apps/mobile-rn/android/app/src/main/res/mipmap-hdpi/ic_launcher.png",
|
||||
"iconSha256": "AB5FE36F55A2E58FCB5DDEC58493D21B8A10EFC9324E1D272FCFEFD25DDB7901",
|
||||
"roundPath": "apps/mobile-rn/android/app/src/main/res/mipmap-hdpi/ic_launcher_round.png",
|
||||
"roundSha256": "7D73AEA182A82DAD88595FAB97A95C142E708993FAD806BBDE48E7A2B2B6F088"
|
||||
},
|
||||
{
|
||||
"density": "xhdpi",
|
||||
"pixels": 96,
|
||||
"iconPath": "apps/mobile-rn/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png",
|
||||
"iconSha256": "E563FA0698BB5013837C4AFF4152BF180F48997410A57986FDD02CE4F52D5818",
|
||||
"roundPath": "apps/mobile-rn/android/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png",
|
||||
"roundSha256": "1FD9924F6A201FD182A1B67FBAC8C81683A6D2450CABD02EF2EEED3D9B8B5F80"
|
||||
},
|
||||
{
|
||||
"density": "xxhdpi",
|
||||
"pixels": 144,
|
||||
"iconPath": "apps/mobile-rn/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png",
|
||||
"iconSha256": "5347ABF45AA423A63E60638D28310F15929BAF768E0584CA414B1B23B9B3F8F5",
|
||||
"roundPath": "apps/mobile-rn/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png",
|
||||
"roundSha256": "A9996374E5ED94F05DD0501BF02259B40C8EEA2F0373A85809921BD75EA1704F"
|
||||
},
|
||||
{
|
||||
"density": "xxxhdpi",
|
||||
"pixels": 192,
|
||||
"iconPath": "apps/mobile-rn/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png",
|
||||
"iconSha256": "A84BC25E362397527AD048EF931816021AD3C1482982FFA2E4F1F8DF52FFFB33",
|
||||
"roundPath": "apps/mobile-rn/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png",
|
||||
"roundSha256": "144564057C9962CC50989B3A4FCA1691B964D8EE69FF47EA37FD65F474A568A1"
|
||||
}
|
||||
]
|
||||
},
|
||||
"ios": {
|
||||
"source": "docs/v3/play/assets/d3ro-voice-play-icon-source.svg",
|
||||
"contents": "apps/mobile-rn/ios/D3ROVoice/Images.xcassets/AppIcon.appiconset/Contents.json",
|
||||
"project": "apps/mobile-rn/ios/D3ROVoice.xcodeproj/project.pbxproj",
|
||||
"targetedDeviceFamilies": [1, 2],
|
||||
"bitDepth": 8,
|
||||
"colorType": 2,
|
||||
"alphaChannel": false,
|
||||
"icons": [
|
||||
{
|
||||
"idiom": "iphone",
|
||||
"size": "20x20",
|
||||
"scale": "2x",
|
||||
"filename": "AppIcon-iphone-20@2x.png",
|
||||
"pixels": 40,
|
||||
"sha256": "750DB19CBEC82017CA68D622FA4DF86F9A7E11EEE49390CEBEEC283C0AB10496"
|
||||
},
|
||||
{
|
||||
"idiom": "iphone",
|
||||
"size": "20x20",
|
||||
"scale": "3x",
|
||||
"filename": "AppIcon-iphone-20@3x.png",
|
||||
"pixels": 60,
|
||||
"sha256": "4715F000171E6CA1CD4F31C1BB5215F91FD86F414BFB288E42F0708474E2652B"
|
||||
},
|
||||
{
|
||||
"idiom": "iphone",
|
||||
"size": "29x29",
|
||||
"scale": "2x",
|
||||
"filename": "AppIcon-iphone-29@2x.png",
|
||||
"pixels": 58,
|
||||
"sha256": "1A13D610E1EEB1B508D496A017B611F36307EFBC50681613DADD634D415BFC75"
|
||||
},
|
||||
{
|
||||
"idiom": "iphone",
|
||||
"size": "29x29",
|
||||
"scale": "3x",
|
||||
"filename": "AppIcon-iphone-29@3x.png",
|
||||
"pixels": 87,
|
||||
"sha256": "F8A6A88020CEC4446A9B295C8696EF2D32838F9E4074C3FCF3E0A283F1A7246E"
|
||||
},
|
||||
{
|
||||
"idiom": "iphone",
|
||||
"size": "40x40",
|
||||
"scale": "2x",
|
||||
"filename": "AppIcon-iphone-40@2x.png",
|
||||
"pixels": 80,
|
||||
"sha256": "DA0796E96389EEE5D36CC390EA5850FF2DF3FC5D1B291D57BB43053FBEAC9F49"
|
||||
},
|
||||
{
|
||||
"idiom": "iphone",
|
||||
"size": "40x40",
|
||||
"scale": "3x",
|
||||
"filename": "AppIcon-iphone-40@3x.png",
|
||||
"pixels": 120,
|
||||
"sha256": "56FB0B823D72C4133E4BF1E24BBB8FA9E24E8C3721A8EF608BBF1A1097052CA7"
|
||||
},
|
||||
{
|
||||
"idiom": "iphone",
|
||||
"size": "60x60",
|
||||
"scale": "2x",
|
||||
"filename": "AppIcon-iphone-60@2x.png",
|
||||
"pixels": 120,
|
||||
"sha256": "56FB0B823D72C4133E4BF1E24BBB8FA9E24E8C3721A8EF608BBF1A1097052CA7"
|
||||
},
|
||||
{
|
||||
"idiom": "iphone",
|
||||
"size": "60x60",
|
||||
"scale": "3x",
|
||||
"filename": "AppIcon-iphone-60@3x.png",
|
||||
"pixels": 180,
|
||||
"sha256": "1A2843E454496520359D740450C699636435D641717BA963D751D817BE79F8F6"
|
||||
},
|
||||
{
|
||||
"idiom": "ipad",
|
||||
"size": "20x20",
|
||||
"scale": "1x",
|
||||
"filename": "AppIcon-ipad-20@1x.png",
|
||||
"pixels": 20,
|
||||
"sha256": "399D5A67D13569E04725DA466AAE45419595D51828C286A4424DB204C8202D7F"
|
||||
},
|
||||
{
|
||||
"idiom": "ipad",
|
||||
"size": "20x20",
|
||||
"scale": "2x",
|
||||
"filename": "AppIcon-ipad-20@2x.png",
|
||||
"pixels": 40,
|
||||
"sha256": "750DB19CBEC82017CA68D622FA4DF86F9A7E11EEE49390CEBEEC283C0AB10496"
|
||||
},
|
||||
{
|
||||
"idiom": "ipad",
|
||||
"size": "29x29",
|
||||
"scale": "1x",
|
||||
"filename": "AppIcon-ipad-29@1x.png",
|
||||
"pixels": 29,
|
||||
"sha256": "BF07A8DB710655D650F102ABA31A74BD68BA26C10A4DB1E22D6743908CDCA61A"
|
||||
},
|
||||
{
|
||||
"idiom": "ipad",
|
||||
"size": "29x29",
|
||||
"scale": "2x",
|
||||
"filename": "AppIcon-ipad-29@2x.png",
|
||||
"pixels": 58,
|
||||
"sha256": "1A13D610E1EEB1B508D496A017B611F36307EFBC50681613DADD634D415BFC75"
|
||||
},
|
||||
{
|
||||
"idiom": "ipad",
|
||||
"size": "40x40",
|
||||
"scale": "1x",
|
||||
"filename": "AppIcon-ipad-40@1x.png",
|
||||
"pixels": 40,
|
||||
"sha256": "750DB19CBEC82017CA68D622FA4DF86F9A7E11EEE49390CEBEEC283C0AB10496"
|
||||
},
|
||||
{
|
||||
"idiom": "ipad",
|
||||
"size": "40x40",
|
||||
"scale": "2x",
|
||||
"filename": "AppIcon-ipad-40@2x.png",
|
||||
"pixels": 80,
|
||||
"sha256": "DA0796E96389EEE5D36CC390EA5850FF2DF3FC5D1B291D57BB43053FBEAC9F49"
|
||||
},
|
||||
{
|
||||
"idiom": "ipad",
|
||||
"size": "76x76",
|
||||
"scale": "1x",
|
||||
"filename": "AppIcon-ipad-76@1x.png",
|
||||
"pixels": 76,
|
||||
"sha256": "460B8F8AF51D947CEA6A40A39CA10DC4E7D774846DC4AE20275402B9B25439D6"
|
||||
},
|
||||
{
|
||||
"idiom": "ipad",
|
||||
"size": "76x76",
|
||||
"scale": "2x",
|
||||
"filename": "AppIcon-ipad-76@2x.png",
|
||||
"pixels": 152,
|
||||
"sha256": "47E8DA09603F931E25E92AF77405C7C55B4CD56EA3E35DCAE3A423CE82F625B1"
|
||||
},
|
||||
{
|
||||
"idiom": "ipad",
|
||||
"size": "83.5x83.5",
|
||||
"scale": "2x",
|
||||
"filename": "AppIcon-ipad-83.5@2x.png",
|
||||
"pixels": 167,
|
||||
"sha256": "8EC9EEE448DAAD188AA6F730BCC80D14D1BD7707207A7573CF04E232F7E9C0D7"
|
||||
},
|
||||
{
|
||||
"idiom": "ios-marketing",
|
||||
"size": "1024x1024",
|
||||
"scale": "1x",
|
||||
"filename": "AppIcon-marketing-1024@1x.png",
|
||||
"pixels": 1024,
|
||||
"sha256": "E0D0357BAB6EB61628AF8FA50892BFA80D5F0293419A19E1E94A652B0037B1B0"
|
||||
}
|
||||
]
|
||||
},
|
||||
"pixelLauncherProof": {
|
||||
"path": "docs/v3/play/assets/proof/d3ro-icon-pixel-launcher-20260824.png",
|
||||
"width": 1080,
|
||||
"height": 1920,
|
||||
"sha256": "7A2DA876FBFD54089B783A7FD45C2472476ED47DCEABA08AB305B7B01A18D430"
|
||||
}
|
||||
}
|
||||
BIN
docs/v3/play/assets/proof/d3ro-icon-pixel-launcher-20260824.png
Normal file
|
After Width: | Height: | Size: 290 KiB |