chore: 恢复旧布局基线(迁移改动丢失后重建,apps/packages 布局暂存)

This commit is contained in:
logan committed 2026-10-14 20:31:17 +08:00
1 parent a9510235bb
commit 456fa6954b
203 files changed
+18787 -48

No files matched your search

+5
View File
@@ -4,11 +4,16 @@ version = "0.1.0"
description = "OpsxDB Tauri desktop shell"
authors = ["OpsxDB"]
edition = "2021"
default-run = "OpsxDB"
[lib]
name = "opsxdb_desktop_lib"
crate-type = ["staticlib", "cdylib", "rlib"]
[[bin]]
name = "OpsxDB"
path = "src/main.rs"
[build-dependencies]
tauri-build = { version = "2", features = [] }
+37 -10
View File
@@ -1,18 +1,45 @@
{
"name": "opsxdb",
"private": true,
"workspaces": [
"apps/web",
"packages/*"
],
"version": "0.1.0",
"type": "module",
"scripts": {
"dev:web": "npm run dev -w @opsxdb/web",
"build:web": "npm run build -w @opsxdb/web",
"test:ui": "npm run test -w @opsxdb/ui",
"dev:desktop": "npm --prefix apps/desktop run tauri -- dev",
"build:desktop": "npm --prefix apps/desktop run tauri -- build"
"dev": "vite --host 127.0.0.1 --port 5174",
"build": "tsc -b && vite build",
"preview": "vite preview --host 127.0.0.1 --port 5174",
"test": "vitest run",
"test:watch": "vitest",
"tauri": "tauri"
},
"engines": {
"node": ">=20"
},
"dependencies": {
"@codemirror/autocomplete": "^6.20.3",
"@codemirror/commands": "^6.11.1",
"@codemirror/lang-sql": "^6.10.0",
"@codemirror/language": "^6.12.4",
"@codemirror/search": "^6.7.2",
"@codemirror/state": "^6.7.5",
"@codemirror/theme-one-dark": "^6.1.3",
"@codemirror/view": "^6.43.12",
"@tauri-apps/api": "^2.5.0",
"react": "^19.0.0",
"react-dom": "^19.0.0",
"sql-formatter": "^15.8.2",
"zustand": "^5.0.3"
},
"devDependencies": {
"@tauri-apps/cli": "^2.4.0",
"@types/node": "^22.20.3",
"@types/react": "^19.0.10",
"@types/react-dom": "^19.0.4",
"@vitejs/plugin-react": "^4.4.1",
"autoprefixer": "^10.4.21",
"postcss": "^8.5.3",
"tailwindcss": "^3.4.17",
"typescript": "^5.8.2",
"vite": "^6.2.2",
"vitest": "^3.0.9"
}
}
}
+24 -32
View File
@@ -3,7 +3,7 @@
#
# ./run.sh # = web:仅 Gin 官网 + docs(:8788)
# ./run.sh web # 同上(浏览器不当客户端)
# ./run.sh gui # 桌面唯一操作入口:Vite(本机给 Tauri) + Tauri + 默认 Gin
# ./run.sh gui # 桌面唯一操作入口:临时 .app(Dock 名 OpsxDB)+ 默认 Gin
# ./run.sh all # 同 gui(兼容旧命令;不再起「浏览器工作台产品」)
# ./run.sh server|desktop # 单组件
# ./run.sh package # Tauri 安装包 + sidecar
@@ -40,6 +40,9 @@ SERVER_LOG="$LOG_DIR/server.log"
WEB_LOG="$LOG_DIR/web.log"
DESKTOP_LOG="$LOG_DIR/desktop.log"
# shellcheck source=scripts/gui-dev-app.sh
source "$SCRIPT_DIR/scripts/gui-dev-app.sh"
# node/npm 不在此强制注入,由 detect_node 按需探测(start_web/start_desktop 前调用)。
export PATH="/opt/homebrew/bin:/usr/local/bin:${HOME}/.cargo/bin:$PATH"
@@ -175,14 +178,14 @@ start_vite_for_desktop() {
success "桌面 UI(Vite) 已在运行 :$WEB_PORT"
return 0
fi
info "启动桌面 UI 源 :$WEB_PORT(仅本机给 Tauri,勿当浏览器客户端)..."
info "启动桌面 UI 源 :${WEB_PORT}(仅本机给 Tauri,勿当浏览器客户端)..."
: >"$WEB_LOG"
ensure_npm
kill_port "$WEB_PORT"
start_detached "$WEB_LABEL" "$WEB_LOG" \
"export PATH=\"$NODE_BIN_DIR:/opt/homebrew/bin:/usr/local/bin:\$PATH\"; cd \"$SCRIPT_DIR\" && exec npm run dev -w @opsxdb/web"
# Vite 用 nohup:launchctl submit 在本机对 npm -w 经常交不出进程(web.log 空、40s 超时)
nohup /bin/bash -lc "export PATH=\"$NODE_BIN_DIR:/opt/homebrew/bin:/usr/local/bin:\$PATH\"; cd \"$SCRIPT_DIR\" && exec npm run dev -w @opsxdb/web" >>"$WEB_LOG" 2>&1 </dev/null &
wait_http "http://127.0.0.1:$WEB_PORT/" "Web UI" 80
success "桌面 UI(Vite) UP http://127.0.0.1:$WEB_PORT(请用 ./run.sh gui,勿当工作台)"
success "桌面 UI(Vite) UP http://127.0.0.1:${WEB_PORT}(请用 ./run.sh gui,勿当工作台)"
}
# 兼容旧名
@@ -195,32 +198,25 @@ stop_web() {
}
start_desktop() {
# GUI 依赖同一份 Vite 源;先保证 5174(仅本机)
start_vite_for_desktop
info "启动桌面 OpsxDB ..."
info "启动桌面 OpsxDB(临时 .app + 当前图标)..."
: >"$DESKTOP_LOG"
ensure_npm
# 清掉旧的 debug 进程(二进制名 OpsxDB)
pkill -f 'target/debug/OpsxDB' 2>/dev/null || true
pkill -f 'target/debug/opsxdb-desktop' 2>/dev/null || true
stop_detached "$DESKTOP_LABEL"
start_detached "$DESKTOP_LABEL" "$DESKTOP_LOG" \
"export PATH=\"$NODE_BIN_DIR:/opt/homebrew/bin:/usr/local/bin:\$HOME/.cargo/bin:\$PATH\"; cd \"$SCRIPT_DIR/apps/desktop\" && exec npm run tauri -- dev"
kill_opsxdb_gui
ensure_gui_dev_app || return 1
if [ "${GUI_DEV_NEEDS_VITE:-0}" = "1" ]; then
start_vite_for_desktop
fi
open "$GUI_APP" 2>>"$DESKTOP_LOG" || { error "open 失败,见 $DESKTOP_LOG"; return 1; }
local i=0
while true; do
if pgrep -f 'target/debug/OpsxDB' >/dev/null 2>&1 \
|| pgrep -f 'target/debug/opsxdb-desktop' >/dev/null 2>&1; then
success "桌面 OpsxDB 已启动(Dock 名应为 OpsxDB)"
if gui_is_running; then
success "桌面 OpsxDB 已启动(临时 .app,Dock 用 icon.icns / 名称 OpsxDB)"
info "路径: $GUI_APP"
return 0
fi
if grep -Eiq 'error:|panicked|could not compile' "$DESKTOP_LOG" 2>/dev/null; then
error "桌面启动失败,见 $DESKTOP_LOG"
tail -n 40 "$DESKTOP_LOG" || true
return 1
fi
i=$((i + 1))
if [ "$i" -ge 120 ]; then
if [ "$i" -ge 30 ]; then
error "桌面启动超时,见 $DESKTOP_LOG"
tail -n 40 "$DESKTOP_LOG" || true
return 1
@@ -230,10 +226,7 @@ start_desktop() {
}
stop_desktop() {
stop_detached "$DESKTOP_LABEL"
pkill -f 'target/debug/OpsxDB' 2>/dev/null || true
pkill -f 'target/debug/opsxdb-desktop' 2>/dev/null || true
pkill -f 'apps/desktop/node_modules/.bin/tauri' 2>/dev/null || true
kill_opsxdb_gui
success "桌面已停止"
}
@@ -245,7 +238,7 @@ status() {
warning "server :$SERVER_PORT DOWN"
fi
if curl -fsS "http://127.0.0.1:$WEB_PORT/" >/dev/null 2>&1; then
success "vite :$WEB_PORT UP(桌面源,非浏览器产品)"
success "vite :${WEB_PORT} UP(桌面源,非浏览器产品)"
else
warning "vite :$WEB_PORT DOWN"
fi
@@ -253,8 +246,7 @@ status() {
|| curl -fsS "http://127.0.0.1:$SERVER_PORT/docs" >/dev/null 2>&1; then
success "site :$SERVER_PORT 官网/docs 可达"
fi
if pgrep -f 'target/debug/OpsxDB' >/dev/null 2>&1 \
|| pgrep -f 'target/debug/opsxdb-desktop' >/dev/null 2>&1; then
if gui_is_running; then
success "gui OpsxDB UP"
else
warning "gui OpsxDB DOWN"
@@ -291,7 +283,7 @@ $PROJECT_NAME 启动脚本(产品形态:浏览器=官网/docs · 操作=桌
./run.sh # 同 web
./run.sh web # 仅 Gin:官网 + docs → http://127.0.0.1:$SERVER_PORT/
./run.sh gui # 桌面唯一操作入口(Vite 本机源 + Tauri;默认也起 Gin)
./run.sh gui # 桌面:临时 .app(Dock=OpsxDB / icon.icns;默认也起 Gin)
./run.sh all # 同 gui(兼容旧名)
./run.sh server # 只 Gin(官网/docs + API)
@@ -300,7 +292,7 @@ $PROJECT_NAME 启动脚本(产品形态:浏览器=官网/docs · 操作=桌
./run.sh stop | restart | status | help
端口: Gin/官网 $SERVER_PORT · 桌面 Vite 源 $WEB_PORT(不对外当客户端)
端口: Gin/官网 $SERVER_PORT · 桌面 Vite 源 ${WEB_PORT}(不对外当客户端)
日志: logs/{server,web,desktop}.log
USAGE
}
+121
View File
@@ -0,0 +1,121 @@
# sourced by run.sh — temp OpsxDB.app for Dock icon (icons/icon.icns)
# shellcheck shell=bash
# .noindex:避免 Spotlight 把临时 Dock 壳当成可打开的历史 App
TAURI_DIR="$SCRIPT_DIR/apps/desktop/src-tauri"
GUI_APP_DIR="$TAURI_DIR/target/gui-app.noindex"
GUI_APP="$GUI_APP_DIR/OpsxDB.app"
ICONS_DIR="$TAURI_DIR/icons"
REL_APP="$TAURI_DIR/target/release/bundle/macos/OpsxDB.app"
DBG_APP="$TAURI_DIR/target/debug/bundle/macos/OpsxDB.app"
REL_BIN="$TAURI_DIR/target/release/OpsxDB"
[ -x "$REL_BIN" ] || REL_BIN="$SCRIPT_DIR/src-tauri/target/release/OpsxDB"
DBG_BIN_A="$TAURI_DIR/target/debug/OpsxDB"
[ -x "$DBG_BIN_A" ] || DBG_BIN_A="$SCRIPT_DIR/src-tauri/target/debug/OpsxDB"
DBG_BIN_B="$TAURI_DIR/target/debug/opsxdb-desktop"
[ -x "$DBG_BIN_B" ] || DBG_BIN_B="$SCRIPT_DIR/src-tauri/target/debug/opsxdb-desktop"
GUI_DEV_NEEDS_VITE=0
_gui_write_plist() {
cat >"$GUI_APP/Contents/Info.plist" <<'PLIST'
<?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>CFBundleDisplayName</key><string>OpsxDB</string>
<key>CFBundleExecutable</key><string>OpsxDB</string>
<key>CFBundleIconFile</key><string>icon.icns</string>
<key>CFBundleIdentifier</key><string>com.opsx.db.dev</string>
<key>CFBundleName</key><string>OpsxDB</string>
<key>CFBundlePackageType</key><string>APPL</string>
<key>CFBundleShortVersionString</key><string>0.1.0-dev</string>
<key>CFBundleVersion</key><string>0</string>
<key>LSHighResolutionCapable</key><true/>
</dict>
</plist>
PLIST
}
_gui_wrap_bin() {
local src="$1"
mkdir -p "$GUI_APP/Contents/MacOS" "$GUI_APP/Contents/Resources"
cp "$src" "$GUI_APP/Contents/MacOS/OpsxDB"
chmod +x "$GUI_APP/Contents/MacOS/OpsxDB"
local sidecar=""
for sidecar in \
"$(dirname "$src")/opsxdb-server" \
"$SCRIPT_DIR/apps/server/bin/opsxdb-server" \
"$SCRIPT_DIR/src-tauri/target/debug/opsxdb-server"
do
if [ -x "$sidecar" ]; then
cp "$sidecar" "$GUI_APP/Contents/MacOS/opsxdb-server"
chmod +x "$GUI_APP/Contents/MacOS/opsxdb-server"
break
fi
done
_gui_write_plist
}
ensure_gui_dev_app() {
local icon="$ICONS_DIR/icon.icns"
GUI_DEV_NEEDS_VITE=0
if [ ! -f "$icon" ]; then
error "缺少 ${icon}"
return 1
fi
mkdir -p "$GUI_APP_DIR"
if [ -d "$DBG_APP" ]; then
rm -rf "$GUI_APP"
cp -R "$DBG_APP" "$GUI_APP"
GUI_DEV_NEEDS_VITE=1
elif [ -x "$DBG_BIN_A" ]; then
rm -rf "$GUI_APP"
_gui_wrap_bin "$DBG_BIN_A"
GUI_DEV_NEEDS_VITE=1
elif [ -x "$DBG_BIN_B" ]; then
rm -rf "$GUI_APP"
_gui_wrap_bin "$DBG_BIN_B"
GUI_DEV_NEEDS_VITE=1
elif [ -d "$REL_APP" ]; then
rm -rf "$GUI_APP"
cp -R "$REL_APP" "$GUI_APP"
elif [ -x "$REL_BIN" ]; then
rm -rf "$GUI_APP"
_gui_wrap_bin "$REL_BIN"
else
error "没有可包装的桌面二进制。请先 ./run.sh gui 走一次 tauri 编译,或 npm run tauri -- build --no-bundle。"
return 1
fi
mkdir -p "$GUI_APP/Contents/Resources"
cp "$icon" "$GUI_APP/Contents/Resources/icon.icns"
if [ -x "$GUI_APP/Contents/MacOS/opsxdb-desktop" ] && [ ! -x "$GUI_APP/Contents/MacOS/OpsxDB" ]; then
mv "$GUI_APP/Contents/MacOS/opsxdb-desktop" "$GUI_APP/Contents/MacOS/OpsxDB"
fi
/usr/libexec/PlistBuddy -c "Set :CFBundleDisplayName OpsxDB" "$GUI_APP/Contents/Info.plist" 2>/dev/null || true
/usr/libexec/PlistBuddy -c "Set :CFBundleName OpsxDB" "$GUI_APP/Contents/Info.plist" 2>/dev/null || true
/usr/libexec/PlistBuddy -c "Set :CFBundleExecutable OpsxDB" "$GUI_APP/Contents/Info.plist" 2>/dev/null || true
/usr/libexec/PlistBuddy -c "Set :CFBundleIconFile icon.icns" "$GUI_APP/Contents/Info.plist" 2>/dev/null || true
/usr/libexec/PlistBuddy -c "Set :CFBundleIdentifier com.opsx.db.dev" "$GUI_APP/Contents/Info.plist" 2>/dev/null || true
local stamp
stamp="$(date +%Y%m%d%H%M%S)"
/usr/libexec/PlistBuddy -c "Set :CFBundleVersion ${stamp}" "$GUI_APP/Contents/Info.plist" 2>/dev/null || true
touch "$GUI_APP"
success "临时 .app 已刷 icons/icon.icns → ${GUI_APP}"
}
kill_opsxdb_gui() {
stop_detached "$DESKTOP_LABEL"
pkill -f "$SCRIPT_DIR/apps/desktop/src-tauri/target/debug/OpsxDB" 2>/dev/null || true
pkill -f "$SCRIPT_DIR/apps/desktop/src-tauri/target/debug/opsxdb-desktop" 2>/dev/null || true
pkill -f "$SCRIPT_DIR/src-tauri/target/debug/opsxdb-desktop" 2>/dev/null || true
pkill -f "$SCRIPT_DIR/src-tauri/target/debug/OpsxDB" 2>/dev/null || true
pkill -f "$SCRIPT_DIR/apps/desktop/node_modules/.bin/tauri" 2>/dev/null || true
pkill -f "$GUI_APP" 2>/dev/null || true
pkill -f "$SCRIPT_DIR/src-tauri/target/gui-app.noindex/OpsxDB.app" 2>/dev/null || true
pkill -x OpsxDB 2>/dev/null || true
}
gui_is_running() {
pgrep -f "$GUI_APP/Contents/MacOS/" >/dev/null 2>&1 \
|| pgrep -x OpsxDB >/dev/null 2>&1
}
BIN
View File
Binary file not shown.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
+25
View File
@@ -0,0 +1,25 @@
[package]
name = "opsxdb-desktop"
version = "0.1.0"
description = "OpsxDB Tauri desktop shell"
authors = ["OpsxDB"]
edition = "2021"
[lib]
name = "opsxdb_desktop_lib"
crate-type = ["staticlib", "cdylib", "rlib"]
[build-dependencies]
tauri-build = { version = "2", features = [] }
[dependencies]
tauri = { version = "2", features = [] } # path via Manager
tauri-plugin-opener = "2"
tauri-plugin-single-instance = "2" # 二次启动聚焦已有窗口
serde = { version = "1", features = ["derive"] }
serde_json = "1"
reqwest = { version = "0.12", default-features = false, features = ["rustls-tls", "json", "blocking"] }
tokio = { version = "1", features = ["time"] }
url = "2"
rand = "0.8"
tauri-plugin-window-state = "2"
Binary file not shown.
+3
View File
@@ -0,0 +1,3 @@
fn main() {
tauri_build::build()
}
+13
View File
@@ -0,0 +1,13 @@
{
"$schema": "../gen/schemas/desktop-schema.json",
"identifier": "default",
"description": "Default capabilities for the OpsxDB main window",
"windows": [
"main"
],
"permissions": [
"core:default",
"window-state:default",
"opener:default"
]
}
+1
View File
@@ -0,0 +1 @@
{"core":{"default_permission":{"identifier":"default","description":"Default core plugins set.","permissions":["core:path:default","core:event:default","core:window:default","core:webview:default","core:app:default","core:image:default","core:resources:default","core:menu:default","core:tray:default"]},"permissions":{},"permission_sets":{},"global_scope_schema":null},"core:app":{"default_permission":{"identifier":"default","description":"Default permissions for the plugin.","permissions":["allow-version","allow-name","allow-tauri-version","allow-identifier","allow-bundle-type","allow-register-listener","allow-remove-listener","allow-supports-multiple-windows"]},"permissions":{"allow-app-hide":{"identifier":"allow-app-hide","description":"Enables the app_hide command without any pre-configured scope.","commands":{"allow":["app_hide"],"deny":[]}},"allow-app-show":{"identifier":"allow-app-show","description":"Enables the app_show command without any pre-configured scope.","commands":{"allow":["app_show"],"deny":[]}},"allow-bundle-type":{"identifier":"allow-bundle-type","description":"Enables the bundle_type command without any pre-configured scope.","commands":{"allow":["bundle_type"],"deny":[]}},"allow-default-window-icon":{"identifier":"allow-default-window-icon","description":"Enables the default_window_icon command without any pre-configured scope.","commands":{"allow":["default_window_icon"],"deny":[]}},"allow-exit":{"identifier":"allow-exit","description":"Enables the exit command without any pre-configured scope.","commands":{"allow":["exit"],"deny":[]}},"allow-fetch-data-store-identifiers":{"identifier":"allow-fetch-data-store-identifiers","description":"Enables the fetch_data_store_identifiers command without any pre-configured scope.","commands":{"allow":["fetch_data_store_identifiers"],"deny":[]}},"allow-identifier":{"identifier":"allow-identifier","description":"Enables the identifier command without any pre-configured scope.","commands":{"allow":["identifier"],"deny":[]}},"allow-name":{"identifier":"allow-name","description":"Enables the name command without any pre-configured scope.","commands":{"allow":["name"],"deny":[]}},"allow-register-listener":{"identifier":"allow-register-listener","description":"Enables the register_listener command without any pre-configured scope.","commands":{"allow":["register_listener"],"deny":[]}},"allow-remove-data-store":{"identifier":"allow-remove-data-store","description":"Enables the remove_data_store command without any pre-configured scope.","commands":{"allow":["remove_data_store"],"deny":[]}},"allow-remove-listener":{"identifier":"allow-remove-listener","description":"Enables the remove_listener command without any pre-configured scope.","commands":{"allow":["remove_listener"],"deny":[]}},"allow-set-app-theme":{"identifier":"allow-set-app-theme","description":"Enables the set_app_theme command without any pre-configured scope.","commands":{"allow":["set_app_theme"],"deny":[]}},"allow-set-dock-visibility":{"identifier":"allow-set-dock-visibility","description":"Enables the set_dock_visibility command without any pre-configured scope.","commands":{"allow":["set_dock_visibility"],"deny":[]}},"allow-supports-multiple-windows":{"identifier":"allow-supports-multiple-windows","description":"Enables the supports_multiple_windows command without any pre-configured scope.","commands":{"allow":["supports_multiple_windows"],"deny":[]}},"allow-tauri-version":{"identifier":"allow-tauri-version","description":"Enables the tauri_version command without any pre-configured scope.","commands":{"allow":["tauri_version"],"deny":[]}},"allow-version":{"identifier":"allow-version","description":"Enables the version command without any pre-configured scope.","commands":{"allow":["version"],"deny":[]}},"deny-app-hide":{"identifier":"deny-app-hide","description":"Denies the app_hide command without any pre-configured scope.","commands":{"allow":[],"deny":["app_hide"]}},"deny-app-show":{"identifier":"deny-app-show","description":"Denies the app_show command without any pre-configured scope.","commands":{"allow":[],"deny":["app_show"]}},"deny-bundle-type":{"identifier":"deny-bundle-type","description":"Denies the bundle_type command without any pre-configured scope.","commands":{"allow":[],"deny":["bundle_type"]}},"deny-default-window-icon":{"identifier":"deny-default-window-icon","description":"Denies the default_window_icon command without any pre-configured scope.","commands":{"allow":[],"deny":["default_window_icon"]}},"deny-exit":{"identifier":"deny-exit","description":"Denies the exit command without any pre-configured scope.","commands":{"allow":[],"deny":["exit"]}},"deny-fetch-data-store-identifiers":{"identifier":"deny-fetch-data-store-identifiers","description":"Denies the fetch_data_store_identifiers command without any pre-configured scope.","commands":{"allow":[],"deny":["fetch_data_store_identifiers"]}},"deny-identifier":{"identifier":"deny-identifier","description":"DenLine truncated
+1
View File
@@ -0,0 +1 @@
{"default":{"identifier":"default","description":"Default capabilities for the OpsxDB main window","local":true,"windows":["main"],"permissions":["core:default","window-state:default","opener:default"]}}
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
Binary file not shown.

After

Width:  |  Height:  |  Size: 7.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.5 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>
Loaded 100 of 203 files, more files were not shown because too many files have changed in this diff. Show more