chore: rename packages/tauri -> packages/desktop
24
packages/desktop/.gitignore
vendored
Normal file
|
|
@ -0,0 +1,24 @@
|
|||
# Logs
|
||||
logs
|
||||
*.log
|
||||
npm-debug.log*
|
||||
yarn-debug.log*
|
||||
yarn-error.log*
|
||||
pnpm-debug.log*
|
||||
lerna-debug.log*
|
||||
|
||||
node_modules
|
||||
dist
|
||||
dist-ssr
|
||||
*.local
|
||||
|
||||
# Editor directories and files
|
||||
.vscode/*
|
||||
!.vscode/extensions.json
|
||||
.idea
|
||||
.DS_Store
|
||||
*.suo
|
||||
*.ntvs*
|
||||
*.njsproj
|
||||
*.sln
|
||||
*.sw?
|
||||
7
packages/desktop/README.md
Normal file
|
|
@ -0,0 +1,7 @@
|
|||
# Tauri + Vanilla TS
|
||||
|
||||
This template should help get you started developing with Tauri in vanilla HTML, CSS and Typescript.
|
||||
|
||||
## Recommended IDE Setup
|
||||
|
||||
- [VS Code](https://code.visualstudio.com/) + [Tauri](https://marketplace.visualstudio.com/items?itemName=tauri-apps.tauri-vscode) + [rust-analyzer](https://marketplace.visualstudio.com/items?itemName=rust-lang.rust-analyzer)
|
||||
28
packages/desktop/index.html
Normal file
|
|
@ -0,0 +1,28 @@
|
|||
<!doctype html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
||||
<title>OpenCode</title>
|
||||
<link rel="icon" type="image/png" href="/favicon-96x96.png" sizes="96x96" />
|
||||
<link rel="icon" type="image/svg+xml" href="/favicon.svg" />
|
||||
<link rel="shortcut icon" href="/favicon.ico" />
|
||||
<link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png" />
|
||||
<link rel="manifest" href="/site.webmanifest" />
|
||||
<meta name="theme-color" content="#F8F7F7" />
|
||||
<meta name="theme-color" content="#131010" media="(prefers-color-scheme: dark)" />
|
||||
<meta property="og:image" content="/social-share.png" />
|
||||
<meta property="twitter:image" content="/social-share.png" />
|
||||
</head>
|
||||
<body class="antialiased overscroll-none text-12-regular overflow-hidden">
|
||||
<script>
|
||||
;(function () {
|
||||
const savedTheme = localStorage.getItem("theme") || "oc-1"
|
||||
document.documentElement.setAttribute("data-theme", savedTheme)
|
||||
})()
|
||||
</script>
|
||||
<noscript>You need to enable JavaScript to run this app.</noscript>
|
||||
<div id="root" class="flex flex-col h-screen"></div>
|
||||
<script src="/src/index.tsx" type="module"></script>
|
||||
</body>
|
||||
</html>
|
||||
37
packages/desktop/package.json
Normal file
|
|
@ -0,0 +1,37 @@
|
|||
{
|
||||
"name": "@opencode-ai/desktop",
|
||||
"private": true,
|
||||
"version": "1.0.190",
|
||||
"type": "module",
|
||||
"scripts": {
|
||||
"typecheck": "tsgo -b",
|
||||
"predev": "bun ./scripts/predev.ts",
|
||||
"dev": "vite",
|
||||
"build": "bun run typecheck && vite build",
|
||||
"preview": "vite preview",
|
||||
"tauri": "tauri"
|
||||
},
|
||||
"dependencies": {
|
||||
"@opencode-ai/app": "workspace:*",
|
||||
"@solid-primitives/storage": "catalog:",
|
||||
"@tauri-apps/api": "^2",
|
||||
"@tauri-apps/plugin-dialog": "~2",
|
||||
"@tauri-apps/plugin-opener": "^2",
|
||||
"@tauri-apps/plugin-os": "~2",
|
||||
"@tauri-apps/plugin-process": "~2",
|
||||
"@tauri-apps/plugin-shell": "~2",
|
||||
"@tauri-apps/plugin-store": "~2",
|
||||
"@tauri-apps/plugin-updater": "~2",
|
||||
"@tauri-apps/plugin-http": "~2",
|
||||
"@tauri-apps/plugin-window-state": "~2",
|
||||
"solid-js": "catalog:"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@actions/artifact": "4.0.0",
|
||||
"@tauri-apps/cli": "^2",
|
||||
"@types/bun": "catalog:",
|
||||
"@typescript/native-preview": "catalog:",
|
||||
"typescript": "~5.6.2",
|
||||
"vite": "catalog:"
|
||||
}
|
||||
}
|
||||
12
packages/desktop/scripts/copy-bundles.ts
Normal file
|
|
@ -0,0 +1,12 @@
|
|||
import { $ } from "bun"
|
||||
import * as path from "node:path"
|
||||
|
||||
import { RUST_TARGET } from "./utils"
|
||||
|
||||
if (!RUST_TARGET) throw new Error("RUST_TARGET not defined")
|
||||
|
||||
const BUNDLE_DIR = `src-tauri/target/${RUST_TARGET}/release/bundle`
|
||||
const BUNDLES_OUT_DIR = path.join(process.cwd(), `src-tauri/target/bundles`)
|
||||
|
||||
await $`mkdir -p ${BUNDLES_OUT_DIR}`
|
||||
await $`cp -r ${BUNDLE_DIR}/*/OpenCode* ${BUNDLES_OUT_DIR}`
|
||||
13
packages/desktop/scripts/predev.ts
Normal file
|
|
@ -0,0 +1,13 @@
|
|||
import { $ } from "bun"
|
||||
|
||||
import { copyBinaryToSidecarFolder, getCurrentSidecar } from "./utils"
|
||||
|
||||
const RUST_TARGET = Bun.env.TAURI_ENV_TARGET_TRIPLE
|
||||
|
||||
const sidecarConfig = getCurrentSidecar(RUST_TARGET)
|
||||
|
||||
const binaryPath = `../opencode/dist/${sidecarConfig.ocBinary}/bin/opencode`
|
||||
|
||||
await $`cd ../opencode && bun run build --single`
|
||||
|
||||
await copyBinaryToSidecarFolder(binaryPath, RUST_TARGET)
|
||||
15
packages/desktop/scripts/prepare.ts
Executable file
|
|
@ -0,0 +1,15 @@
|
|||
#!/usr/bin/env bun
|
||||
import { $ } from "bun"
|
||||
|
||||
import { copyBinaryToSidecarFolder, getCurrentSidecar } from "./utils"
|
||||
|
||||
const sidecarConfig = getCurrentSidecar()
|
||||
|
||||
const dir = "src-tauri/target/opencode-binaries"
|
||||
|
||||
await $`mkdir -p ${dir}`
|
||||
await $`gh run download ${Bun.env.GITHUB_RUN_ID} -n opencode-cli`.cwd(dir)
|
||||
|
||||
await copyBinaryToSidecarFolder(
|
||||
`${dir}/${sidecarConfig.ocBinary}/bin/opencode${process.platform === "win32" ? ".exe" : ""}`,
|
||||
)
|
||||
48
packages/desktop/scripts/utils.ts
Normal file
|
|
@ -0,0 +1,48 @@
|
|||
import { $ } from "bun"
|
||||
|
||||
export const SIDECAR_BINARIES: Array<{ rustTarget: string; ocBinary: string; assetExt: string }> = [
|
||||
{
|
||||
rustTarget: "aarch64-apple-darwin",
|
||||
ocBinary: "opencode-darwin-arm64",
|
||||
assetExt: "zip",
|
||||
},
|
||||
{
|
||||
rustTarget: "x86_64-apple-darwin",
|
||||
ocBinary: "opencode-darwin-x64",
|
||||
assetExt: "zip",
|
||||
},
|
||||
{
|
||||
rustTarget: "x86_64-pc-windows-msvc",
|
||||
ocBinary: "opencode-windows-x64",
|
||||
assetExt: "zip",
|
||||
},
|
||||
{
|
||||
rustTarget: "x86_64-unknown-linux-gnu",
|
||||
ocBinary: "opencode-linux-x64",
|
||||
assetExt: "tar.gz",
|
||||
},
|
||||
{
|
||||
rustTarget: "aarch64-unknown-linux-gnu",
|
||||
ocBinary: "opencode-linux-arm64",
|
||||
assetExt: "tar.gz",
|
||||
},
|
||||
]
|
||||
|
||||
export const RUST_TARGET = Bun.env.RUST_TARGET
|
||||
|
||||
export function getCurrentSidecar(target = RUST_TARGET) {
|
||||
if (!target && !RUST_TARGET) throw new Error("RUST_TARGET not set")
|
||||
|
||||
const binaryConfig = SIDECAR_BINARIES.find((b) => b.rustTarget === target)
|
||||
if (!binaryConfig) throw new Error(`Sidecar configuration not available for Rust target '${RUST_TARGET}'`)
|
||||
|
||||
return binaryConfig
|
||||
}
|
||||
|
||||
export async function copyBinaryToSidecarFolder(source: string, target = RUST_TARGET) {
|
||||
await $`mkdir -p src-tauri/sidecars`
|
||||
const dest = `src-tauri/sidecars/opencode-cli-${target}${process.platform === "win32" ? ".exe" : ""}`
|
||||
await $`cp ${source} ${dest}`
|
||||
|
||||
console.log(`Copied ${source} to ${dest}`)
|
||||
}
|
||||
9
packages/desktop/src-tauri/.gitignore
vendored
Normal file
|
|
@ -0,0 +1,9 @@
|
|||
# Generated by Cargo
|
||||
# will have compiled files and executables
|
||||
/target/
|
||||
|
||||
# Generated by Tauri
|
||||
# will have schema files for capabilities auto-completion
|
||||
/gen/schemas
|
||||
|
||||
sidecars
|
||||
6441
packages/desktop/src-tauri/Cargo.lock
generated
Normal file
40
packages/desktop/src-tauri/Cargo.toml
Normal file
|
|
@ -0,0 +1,40 @@
|
|||
[package]
|
||||
name = "opencode-desktop"
|
||||
version = "0.0.0"
|
||||
description = "The open source AI coding agent"
|
||||
authors = ["Anomaly Innovations"]
|
||||
edition = "2021"
|
||||
|
||||
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
|
||||
|
||||
[lib]
|
||||
# The `_lib` suffix may seem redundant but it is necessary
|
||||
# to make the lib name unique and wouldn't conflict with the bin name.
|
||||
# This seems to be only an issue on Windows, see https://github.com/rust-lang/cargo/issues/8519
|
||||
name = "opencode_lib"
|
||||
crate-type = ["staticlib", "cdylib", "rlib"]
|
||||
|
||||
[build-dependencies]
|
||||
tauri-build = { version = "2", features = [] }
|
||||
|
||||
[dependencies]
|
||||
tauri = { version = "2", features = ["macos-private-api", "devtools"] }
|
||||
tauri-plugin-opener = "2"
|
||||
tauri-plugin-shell = "2"
|
||||
tauri-plugin-dialog = "2"
|
||||
tauri-plugin-updater = "2"
|
||||
tauri-plugin-process = "2"
|
||||
tauri-plugin-store = "2"
|
||||
tauri-plugin-window-state = "2"
|
||||
tauri-plugin-clipboard-manager = "2"
|
||||
tauri-plugin-http = "2"
|
||||
|
||||
serde = { version = "1", features = ["derive"] }
|
||||
serde_json = "1"
|
||||
tokio = "1.48.0"
|
||||
listeners = "0.3"
|
||||
tauri-plugin-os = "2"
|
||||
|
||||
[target.'cfg(target_os = "linux")'.dependencies]
|
||||
gtk = "0.18.2"
|
||||
webkit2gtk = "=2.0.1"
|
||||
BIN
packages/desktop/src-tauri/assets/nsis-header.bmp
Normal file
|
After Width: | Height: | Size: 25 KiB |
BIN
packages/desktop/src-tauri/assets/nsis-sidebar.bmp
Normal file
|
After Width: | Height: | Size: 151 KiB |
3
packages/desktop/src-tauri/build.rs
Normal file
|
|
@ -0,0 +1,3 @@
|
|||
fn main() {
|
||||
tauri_build::build()
|
||||
}
|
||||
23
packages/desktop/src-tauri/capabilities/default.json
Normal file
|
|
@ -0,0 +1,23 @@
|
|||
{
|
||||
"$schema": "../gen/schemas/desktop-schema.json",
|
||||
"identifier": "default",
|
||||
"description": "Capability for the main window",
|
||||
"windows": ["main"],
|
||||
"permissions": [
|
||||
"core:default",
|
||||
"opener:default",
|
||||
"core:window:allow-start-dragging",
|
||||
"core:webview:allow-set-webview-zoom",
|
||||
"shell:default",
|
||||
"updater:default",
|
||||
"dialog:default",
|
||||
"process:default",
|
||||
"store:default",
|
||||
"window-state:default",
|
||||
"os:default",
|
||||
{
|
||||
"identifier": "http:default",
|
||||
"allow": [{ "url": "http://*" }, { "url": "https://*" }, { "url": "http://*:*/*" }]
|
||||
}
|
||||
]
|
||||
}
|
||||
16
packages/desktop/src-tauri/entitlements.plist
Normal file
|
|
@ -0,0 +1,16 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>com.apple.security.cs.allow-jit</key>
|
||||
<true/>
|
||||
<key>com.apple.security.cs.allow-unsigned-executable-memory</key>
|
||||
<true/>
|
||||
<key>com.apple.security.cs.disable-executable-page-protection</key>
|
||||
<true/>
|
||||
<key>com.apple.security.cs.allow-dyld-environment-variables</key>
|
||||
<true/>
|
||||
<key>com.apple.security.cs.disable-library-validation</key>
|
||||
<true/>
|
||||
</dict>
|
||||
</plist>
|
||||
11
packages/desktop/src-tauri/icons/README.md
Normal file
|
|
@ -0,0 +1,11 @@
|
|||
# Tauri Icons
|
||||
|
||||
Here's the process I've been using to create icons:
|
||||
|
||||
- Save source image as `app-icon.png` in `packages/desktop`
|
||||
- `cd` to `src-tauri`
|
||||
- Run `bun tauri icons -o icons/{environment}`
|
||||
- Use [Image2Icon](https://img2icnsapp.com/)'s 'Big Sur Icon' preset to generate an `icon.icns` file and place it in the appropriate icons folder
|
||||
|
||||
The Image2Icon step is necessary as the `icon.icns` generated by `app-icon.png` does not apply the shadow/padding expected by macOS,
|
||||
so app icons appear larger than expected.
|
||||
BIN
packages/desktop/src-tauri/icons/dev/128x128.png
Normal file
|
After Width: | Height: | Size: 16 KiB |
BIN
packages/desktop/src-tauri/icons/dev/128x128@2x.png
Normal file
|
After Width: | Height: | Size: 58 KiB |
BIN
packages/desktop/src-tauri/icons/dev/32x32.png
Normal file
|
After Width: | Height: | Size: 1.9 KiB |
BIN
packages/desktop/src-tauri/icons/dev/64x64.png
Normal file
|
After Width: | Height: | Size: 5.3 KiB |
BIN
packages/desktop/src-tauri/icons/dev/Square107x107Logo.png
Normal file
|
After Width: | Height: | Size: 12 KiB |
BIN
packages/desktop/src-tauri/icons/dev/Square142x142Logo.png
Normal file
|
After Width: | Height: | Size: 20 KiB |
BIN
packages/desktop/src-tauri/icons/dev/Square150x150Logo.png
Normal file
|
After Width: | Height: | Size: 22 KiB |
BIN
packages/desktop/src-tauri/icons/dev/Square284x284Logo.png
Normal file
|
After Width: | Height: | Size: 72 KiB |
BIN
packages/desktop/src-tauri/icons/dev/Square30x30Logo.png
Normal file
|
After Width: | Height: | Size: 1.7 KiB |
BIN
packages/desktop/src-tauri/icons/dev/Square310x310Logo.png
Normal file
|
After Width: | Height: | Size: 87 KiB |
BIN
packages/desktop/src-tauri/icons/dev/Square44x44Logo.png
Normal file
|
After Width: | Height: | Size: 3.1 KiB |
BIN
packages/desktop/src-tauri/icons/dev/Square71x71Logo.png
Normal file
|
After Width: | Height: | Size: 6.2 KiB |
BIN
packages/desktop/src-tauri/icons/dev/Square89x89Logo.png
Normal file
|
After Width: | Height: | Size: 9.1 KiB |
BIN
packages/desktop/src-tauri/icons/dev/StoreLogo.png
Normal file
|
After Width: | Height: | Size: 3.8 KiB |
|
|
@ -0,0 +1,5 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<foreground android:drawable="@mipmap/ic_launcher_foreground"/>
|
||||
<background android:drawable="@color/ic_launcher_background"/>
|
||||
</adaptive-icon>
|
||||
|
After Width: | Height: | Size: 3 KiB |
|
After Width: | Height: | Size: 24 KiB |
|
After Width: | Height: | Size: 2.8 KiB |
|
After Width: | Height: | Size: 2.9 KiB |
|
After Width: | Height: | Size: 12 KiB |
|
After Width: | Height: | Size: 2.6 KiB |
|
After Width: | Height: | Size: 8.5 KiB |
|
After Width: | Height: | Size: 41 KiB |
|
After Width: | Height: | Size: 7.5 KiB |
|
After Width: | Height: | Size: 17 KiB |
|
After Width: | Height: | Size: 95 KiB |
|
After Width: | Height: | Size: 15 KiB |
|
After Width: | Height: | Size: 27 KiB |
|
After Width: | Height: | Size: 176 KiB |
|
After Width: | Height: | Size: 24 KiB |
|
|
@ -0,0 +1,4 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<color name="ic_launcher_background">#fff</color>
|
||||
</resources>
|
||||
BIN
packages/desktop/src-tauri/icons/dev/icon.icns
Normal file
BIN
packages/desktop/src-tauri/icons/dev/icon.ico
Normal file
|
After Width: | Height: | Size: 72 KiB |
BIN
packages/desktop/src-tauri/icons/dev/icon.png
Normal file
|
After Width: | Height: | Size: 258 KiB |
BIN
packages/desktop/src-tauri/icons/dev/ios/AppIcon-20x20@1x.png
Normal file
|
After Width: | Height: | Size: 955 B |
BIN
packages/desktop/src-tauri/icons/dev/ios/AppIcon-20x20@2x-1.png
Normal file
|
After Width: | Height: | Size: 2.6 KiB |
BIN
packages/desktop/src-tauri/icons/dev/ios/AppIcon-20x20@2x.png
Normal file
|
After Width: | Height: | Size: 2.6 KiB |
BIN
packages/desktop/src-tauri/icons/dev/ios/AppIcon-20x20@3x.png
Normal file
|
After Width: | Height: | Size: 4.8 KiB |
BIN
packages/desktop/src-tauri/icons/dev/ios/AppIcon-29x29@1x.png
Normal file
|
After Width: | Height: | Size: 1.6 KiB |
BIN
packages/desktop/src-tauri/icons/dev/ios/AppIcon-29x29@2x-1.png
Normal file
|
After Width: | Height: | Size: 4.6 KiB |
BIN
packages/desktop/src-tauri/icons/dev/ios/AppIcon-29x29@2x.png
Normal file
|
After Width: | Height: | Size: 4.6 KiB |
BIN
packages/desktop/src-tauri/icons/dev/ios/AppIcon-29x29@3x.png
Normal file
|
After Width: | Height: | Size: 8.6 KiB |
BIN
packages/desktop/src-tauri/icons/dev/ios/AppIcon-40x40@1x.png
Normal file
|
After Width: | Height: | Size: 2.6 KiB |
BIN
packages/desktop/src-tauri/icons/dev/ios/AppIcon-40x40@2x-1.png
Normal file
|
After Width: | Height: | Size: 7.4 KiB |
BIN
packages/desktop/src-tauri/icons/dev/ios/AppIcon-40x40@2x.png
Normal file
|
After Width: | Height: | Size: 7.4 KiB |
BIN
packages/desktop/src-tauri/icons/dev/ios/AppIcon-40x40@3x.png
Normal file
|
After Width: | Height: | Size: 14 KiB |
BIN
packages/desktop/src-tauri/icons/dev/ios/AppIcon-512@2x.png
Normal file
|
After Width: | Height: | Size: 958 KiB |
BIN
packages/desktop/src-tauri/icons/dev/ios/AppIcon-60x60@2x.png
Normal file
|
After Width: | Height: | Size: 14 KiB |
BIN
packages/desktop/src-tauri/icons/dev/ios/AppIcon-60x60@3x.png
Normal file
|
After Width: | Height: | Size: 29 KiB |
BIN
packages/desktop/src-tauri/icons/dev/ios/AppIcon-76x76@1x.png
Normal file
|
After Width: | Height: | Size: 6.9 KiB |
BIN
packages/desktop/src-tauri/icons/dev/ios/AppIcon-76x76@2x.png
Normal file
|
After Width: | Height: | Size: 22 KiB |
|
After Width: | Height: | Size: 25 KiB |
BIN
packages/desktop/src-tauri/icons/prod/128x128.png
Normal file
|
After Width: | Height: | Size: 8.8 KiB |
BIN
packages/desktop/src-tauri/icons/prod/128x128@2x.png
Normal file
|
After Width: | Height: | Size: 36 KiB |
BIN
packages/desktop/src-tauri/icons/prod/32x32.png
Normal file
|
After Width: | Height: | Size: 1.2 KiB |
BIN
packages/desktop/src-tauri/icons/prod/64x64.png
Normal file
|
After Width: | Height: | Size: 2.9 KiB |
BIN
packages/desktop/src-tauri/icons/prod/Square107x107Logo.png
Normal file
|
After Width: | Height: | Size: 6.3 KiB |
BIN
packages/desktop/src-tauri/icons/prod/Square142x142Logo.png
Normal file
|
After Width: | Height: | Size: 11 KiB |
BIN
packages/desktop/src-tauri/icons/prod/Square150x150Logo.png
Normal file
|
After Width: | Height: | Size: 12 KiB |
BIN
packages/desktop/src-tauri/icons/prod/Square284x284Logo.png
Normal file
|
After Width: | Height: | Size: 46 KiB |
BIN
packages/desktop/src-tauri/icons/prod/Square30x30Logo.png
Normal file
|
After Width: | Height: | Size: 1.1 KiB |
BIN
packages/desktop/src-tauri/icons/prod/Square310x310Logo.png
Normal file
|
After Width: | Height: | Size: 57 KiB |
BIN
packages/desktop/src-tauri/icons/prod/Square44x44Logo.png
Normal file
|
After Width: | Height: | Size: 1.8 KiB |
BIN
packages/desktop/src-tauri/icons/prod/Square71x71Logo.png
Normal file
|
After Width: | Height: | Size: 3.3 KiB |
BIN
packages/desktop/src-tauri/icons/prod/Square89x89Logo.png
Normal file
|
After Width: | Height: | Size: 4.6 KiB |
BIN
packages/desktop/src-tauri/icons/prod/StoreLogo.png
Normal file
|
After Width: | Height: | Size: 2.1 KiB |
|
|
@ -0,0 +1,5 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<foreground android:drawable="@mipmap/ic_launcher_foreground"/>
|
||||
<background android:drawable="@color/ic_launcher_background"/>
|
||||
</adaptive-icon>
|
||||
|
After Width: | Height: | Size: 1.8 KiB |
|
After Width: | Height: | Size: 14 KiB |
|
After Width: | Height: | Size: 1.8 KiB |
|
After Width: | Height: | Size: 1.8 KiB |
|
After Width: | Height: | Size: 6.4 KiB |
|
After Width: | Height: | Size: 1.7 KiB |
|
After Width: | Height: | Size: 4.6 KiB |
|
After Width: | Height: | Size: 25 KiB |
|
After Width: | Height: | Size: 4 KiB |
|
After Width: | Height: | Size: 8.9 KiB |
|
After Width: | Height: | Size: 63 KiB |
|
After Width: | Height: | Size: 8.1 KiB |
|
After Width: | Height: | Size: 15 KiB |
|
After Width: | Height: | Size: 125 KiB |
|
After Width: | Height: | Size: 14 KiB |
|
|
@ -0,0 +1,4 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<color name="ic_launcher_background">#fff</color>
|
||||
</resources>
|
||||