diff --git a/.github/workflows/build_loop.yml b/.github/workflows/build_loop.yml index 9dab27ff57..6e6a68da58 100644 --- a/.github/workflows/build_loop.yml +++ b/.github/workflows/build_loop.yml @@ -211,6 +211,14 @@ jobs: # Several patches may be added per submodule. # Adding comments (#) may be useful to easily tell the individual patches apart. + - name: Apply Glucose Guard branding + env: + GH_PAT: ${{ secrets.GH_PAT }} + GLUCOSE_GUARD_DESIGN_OWNER: iDustbin + GLUCOSE_GUARD_DESIGN_REPO: glucose-guard-design + GLUCOSE_GUARD_DESIGN_REF: main + run: ./Scripts/apply_glucose_guard_branding.sh + # Patch Fastlane Match to not print tables - name: Patch Match Tables run: | diff --git a/OverrideAssetsLoop.xcassets/AppIcon.appiconset/Contents.json b/OverrideAssetsLoop.xcassets/AppIcon.appiconset/Contents.json index 29d91251df..e25f7282b7 100644 --- a/OverrideAssetsLoop.xcassets/AppIcon.appiconset/Contents.json +++ b/OverrideAssetsLoop.xcassets/AppIcon.appiconset/Contents.json @@ -113,4 +113,4 @@ "version" : 1, "author" : "xcode" } -} \ No newline at end of file +} diff --git a/OverrideAssetsLoop.xcassets/AppIcon.appiconset/Icon.png b/OverrideAssetsLoop.xcassets/AppIcon.appiconset/Icon.png index 9a01fc7a8a..49ac074961 100644 Binary files a/OverrideAssetsLoop.xcassets/AppIcon.appiconset/Icon.png and b/OverrideAssetsLoop.xcassets/AppIcon.appiconset/Icon.png differ diff --git a/OverrideAssetsLoop.xcassets/AppIcon.appiconset/icon_20pt.png b/OverrideAssetsLoop.xcassets/AppIcon.appiconset/icon_20pt.png index 9e63277b69..ab03517ea0 100644 Binary files a/OverrideAssetsLoop.xcassets/AppIcon.appiconset/icon_20pt.png and b/OverrideAssetsLoop.xcassets/AppIcon.appiconset/icon_20pt.png differ diff --git a/OverrideAssetsLoop.xcassets/AppIcon.appiconset/icon_20pt@2x-1.png b/OverrideAssetsLoop.xcassets/AppIcon.appiconset/icon_20pt@2x-1.png index 46b16ff10e..903d4313f6 100644 Binary files a/OverrideAssetsLoop.xcassets/AppIcon.appiconset/icon_20pt@2x-1.png and b/OverrideAssetsLoop.xcassets/AppIcon.appiconset/icon_20pt@2x-1.png differ diff --git a/OverrideAssetsLoop.xcassets/AppIcon.appiconset/icon_20pt@2x.png b/OverrideAssetsLoop.xcassets/AppIcon.appiconset/icon_20pt@2x.png index 46b16ff10e..903d4313f6 100644 Binary files a/OverrideAssetsLoop.xcassets/AppIcon.appiconset/icon_20pt@2x.png and b/OverrideAssetsLoop.xcassets/AppIcon.appiconset/icon_20pt@2x.png differ diff --git a/OverrideAssetsLoop.xcassets/AppIcon.appiconset/icon_20pt@3x.png b/OverrideAssetsLoop.xcassets/AppIcon.appiconset/icon_20pt@3x.png index e802e8ac2e..c117d31309 100644 Binary files a/OverrideAssetsLoop.xcassets/AppIcon.appiconset/icon_20pt@3x.png and b/OverrideAssetsLoop.xcassets/AppIcon.appiconset/icon_20pt@3x.png differ diff --git a/OverrideAssetsLoop.xcassets/AppIcon.appiconset/icon_29pt.png b/OverrideAssetsLoop.xcassets/AppIcon.appiconset/icon_29pt.png index 65516e2b2c..7aa5edfdb8 100644 Binary files a/OverrideAssetsLoop.xcassets/AppIcon.appiconset/icon_29pt.png and b/OverrideAssetsLoop.xcassets/AppIcon.appiconset/icon_29pt.png differ diff --git a/OverrideAssetsLoop.xcassets/AppIcon.appiconset/icon_29pt@2x-1.png b/OverrideAssetsLoop.xcassets/AppIcon.appiconset/icon_29pt@2x-1.png index d47b20b371..0767a47af0 100644 Binary files a/OverrideAssetsLoop.xcassets/AppIcon.appiconset/icon_29pt@2x-1.png and b/OverrideAssetsLoop.xcassets/AppIcon.appiconset/icon_29pt@2x-1.png differ diff --git a/OverrideAssetsLoop.xcassets/AppIcon.appiconset/icon_29pt@2x.png b/OverrideAssetsLoop.xcassets/AppIcon.appiconset/icon_29pt@2x.png index d47b20b371..0767a47af0 100644 Binary files a/OverrideAssetsLoop.xcassets/AppIcon.appiconset/icon_29pt@2x.png and b/OverrideAssetsLoop.xcassets/AppIcon.appiconset/icon_29pt@2x.png differ diff --git a/OverrideAssetsLoop.xcassets/AppIcon.appiconset/icon_29pt@3x.png b/OverrideAssetsLoop.xcassets/AppIcon.appiconset/icon_29pt@3x.png index 05b0a95ad4..b2e2dfb93c 100644 Binary files a/OverrideAssetsLoop.xcassets/AppIcon.appiconset/icon_29pt@3x.png and b/OverrideAssetsLoop.xcassets/AppIcon.appiconset/icon_29pt@3x.png differ diff --git a/OverrideAssetsLoop.xcassets/AppIcon.appiconset/icon_40pt.png b/OverrideAssetsLoop.xcassets/AppIcon.appiconset/icon_40pt.png index 46b16ff10e..903d4313f6 100644 Binary files a/OverrideAssetsLoop.xcassets/AppIcon.appiconset/icon_40pt.png and b/OverrideAssetsLoop.xcassets/AppIcon.appiconset/icon_40pt.png differ diff --git a/OverrideAssetsLoop.xcassets/AppIcon.appiconset/icon_40pt@2x-1.png b/OverrideAssetsLoop.xcassets/AppIcon.appiconset/icon_40pt@2x-1.png index 3ea02f17f5..8a61d510bf 100644 Binary files a/OverrideAssetsLoop.xcassets/AppIcon.appiconset/icon_40pt@2x-1.png and b/OverrideAssetsLoop.xcassets/AppIcon.appiconset/icon_40pt@2x-1.png differ diff --git a/OverrideAssetsLoop.xcassets/AppIcon.appiconset/icon_40pt@2x.png b/OverrideAssetsLoop.xcassets/AppIcon.appiconset/icon_40pt@2x.png index 3ea02f17f5..8a61d510bf 100644 Binary files a/OverrideAssetsLoop.xcassets/AppIcon.appiconset/icon_40pt@2x.png and b/OverrideAssetsLoop.xcassets/AppIcon.appiconset/icon_40pt@2x.png differ diff --git a/OverrideAssetsLoop.xcassets/AppIcon.appiconset/icon_40pt@3x.png b/OverrideAssetsLoop.xcassets/AppIcon.appiconset/icon_40pt@3x.png index 68f41228f2..a0dd1fa5ad 100644 Binary files a/OverrideAssetsLoop.xcassets/AppIcon.appiconset/icon_40pt@3x.png and b/OverrideAssetsLoop.xcassets/AppIcon.appiconset/icon_40pt@3x.png differ diff --git a/OverrideAssetsLoop.xcassets/AppIcon.appiconset/icon_60pt@2x.png b/OverrideAssetsLoop.xcassets/AppIcon.appiconset/icon_60pt@2x.png index 68f41228f2..a0dd1fa5ad 100644 Binary files a/OverrideAssetsLoop.xcassets/AppIcon.appiconset/icon_60pt@2x.png and b/OverrideAssetsLoop.xcassets/AppIcon.appiconset/icon_60pt@2x.png differ diff --git a/OverrideAssetsLoop.xcassets/AppIcon.appiconset/icon_60pt@3x.png b/OverrideAssetsLoop.xcassets/AppIcon.appiconset/icon_60pt@3x.png index ad599ec434..aa85ba20de 100644 Binary files a/OverrideAssetsLoop.xcassets/AppIcon.appiconset/icon_60pt@3x.png and b/OverrideAssetsLoop.xcassets/AppIcon.appiconset/icon_60pt@3x.png differ diff --git a/OverrideAssetsLoop.xcassets/AppIcon.appiconset/icon_76pt.png b/OverrideAssetsLoop.xcassets/AppIcon.appiconset/icon_76pt.png index 0826a168d2..779a97cb76 100644 Binary files a/OverrideAssetsLoop.xcassets/AppIcon.appiconset/icon_76pt.png and b/OverrideAssetsLoop.xcassets/AppIcon.appiconset/icon_76pt.png differ diff --git a/OverrideAssetsLoop.xcassets/AppIcon.appiconset/icon_76pt@2x.png b/OverrideAssetsLoop.xcassets/AppIcon.appiconset/icon_76pt@2x.png index 5bab5b21cd..b9a7ae961b 100644 Binary files a/OverrideAssetsLoop.xcassets/AppIcon.appiconset/icon_76pt@2x.png and b/OverrideAssetsLoop.xcassets/AppIcon.appiconset/icon_76pt@2x.png differ diff --git a/OverrideAssetsLoop.xcassets/AppIcon.appiconset/icon_83.5@2x.png b/OverrideAssetsLoop.xcassets/AppIcon.appiconset/icon_83.5@2x.png index b89cd4ed57..f4ebe7834d 100644 Binary files a/OverrideAssetsLoop.xcassets/AppIcon.appiconset/icon_83.5@2x.png and b/OverrideAssetsLoop.xcassets/AppIcon.appiconset/icon_83.5@2x.png differ diff --git a/OverrideAssetsWatchApp.xcassets/AppIcon.appiconset/Contents.json b/OverrideAssetsWatchApp.xcassets/AppIcon.appiconset/Contents.json index e41963c636..9fca6e4dd8 100644 --- a/OverrideAssetsWatchApp.xcassets/AppIcon.appiconset/Contents.json +++ b/OverrideAssetsWatchApp.xcassets/AppIcon.appiconset/Contents.json @@ -31,6 +31,7 @@ "size" : "29x29" }, { + "filename" : "icon_33pt@2x.png", "idiom" : "watch", "role" : "notificationCenter", "scale" : "2x", @@ -54,6 +55,7 @@ "subtype" : "40mm" }, { + "filename" : "icon_46pt@2x.png", "idiom" : "watch", "role" : "appLauncher", "scale" : "2x", @@ -69,6 +71,7 @@ "subtype" : "44mm" }, { + "filename" : "icon_51pt@2x.png", "idiom" : "watch", "role" : "appLauncher", "scale" : "2x", @@ -76,6 +79,7 @@ "subtype" : "45mm" }, { + "filename" : "icon_54pt@2x.png", "idiom" : "watch", "role" : "appLauncher", "scale" : "2x", @@ -107,6 +111,7 @@ "subtype" : "44mm" }, { + "filename" : "icon_117pt@2x.png", "idiom" : "watch", "role" : "quickLook", "scale" : "2x", @@ -114,6 +119,7 @@ "subtype" : "45mm" }, { + "filename" : "icon_129pt@2x.png", "idiom" : "watch", "role" : "quickLook", "scale" : "2x", diff --git a/OverrideAssetsWatchApp.xcassets/AppIcon.appiconset/Icon.png b/OverrideAssetsWatchApp.xcassets/AppIcon.appiconset/Icon.png index 9a01fc7a8a..49ac074961 100644 Binary files a/OverrideAssetsWatchApp.xcassets/AppIcon.appiconset/Icon.png and b/OverrideAssetsWatchApp.xcassets/AppIcon.appiconset/Icon.png differ diff --git a/OverrideAssetsWatchApp.xcassets/AppIcon.appiconset/icon_108pt@2x.png b/OverrideAssetsWatchApp.xcassets/AppIcon.appiconset/icon_108pt@2x.png index 660a9fa3d3..c26dbb6f47 100644 Binary files a/OverrideAssetsWatchApp.xcassets/AppIcon.appiconset/icon_108pt@2x.png and b/OverrideAssetsWatchApp.xcassets/AppIcon.appiconset/icon_108pt@2x.png differ diff --git a/OverrideAssetsWatchApp.xcassets/AppIcon.appiconset/icon_117pt@2x.png b/OverrideAssetsWatchApp.xcassets/AppIcon.appiconset/icon_117pt@2x.png new file mode 100644 index 0000000000..60704e5d11 Binary files /dev/null and b/OverrideAssetsWatchApp.xcassets/AppIcon.appiconset/icon_117pt@2x.png differ diff --git a/OverrideAssetsWatchApp.xcassets/AppIcon.appiconset/icon_129pt@2x.png b/OverrideAssetsWatchApp.xcassets/AppIcon.appiconset/icon_129pt@2x.png new file mode 100644 index 0000000000..c2d0c6b6dc Binary files /dev/null and b/OverrideAssetsWatchApp.xcassets/AppIcon.appiconset/icon_129pt@2x.png differ diff --git a/OverrideAssetsWatchApp.xcassets/AppIcon.appiconset/icon_24pt@2x.png b/OverrideAssetsWatchApp.xcassets/AppIcon.appiconset/icon_24pt@2x.png index 8a2b5202bb..a0b0bc66b0 100644 Binary files a/OverrideAssetsWatchApp.xcassets/AppIcon.appiconset/icon_24pt@2x.png and b/OverrideAssetsWatchApp.xcassets/AppIcon.appiconset/icon_24pt@2x.png differ diff --git a/OverrideAssetsWatchApp.xcassets/AppIcon.appiconset/icon_27.5pt@2x.png b/OverrideAssetsWatchApp.xcassets/AppIcon.appiconset/icon_27.5pt@2x.png index 57fe85f89f..03b38d1f4e 100644 Binary files a/OverrideAssetsWatchApp.xcassets/AppIcon.appiconset/icon_27.5pt@2x.png and b/OverrideAssetsWatchApp.xcassets/AppIcon.appiconset/icon_27.5pt@2x.png differ diff --git a/OverrideAssetsWatchApp.xcassets/AppIcon.appiconset/icon_29pt@2x.png b/OverrideAssetsWatchApp.xcassets/AppIcon.appiconset/icon_29pt@2x.png index 64f465126b..0767a47af0 100644 Binary files a/OverrideAssetsWatchApp.xcassets/AppIcon.appiconset/icon_29pt@2x.png and b/OverrideAssetsWatchApp.xcassets/AppIcon.appiconset/icon_29pt@2x.png differ diff --git a/OverrideAssetsWatchApp.xcassets/AppIcon.appiconset/icon_29pt@3x.png b/OverrideAssetsWatchApp.xcassets/AppIcon.appiconset/icon_29pt@3x.png index c0e1042519..b2e2dfb93c 100644 Binary files a/OverrideAssetsWatchApp.xcassets/AppIcon.appiconset/icon_29pt@3x.png and b/OverrideAssetsWatchApp.xcassets/AppIcon.appiconset/icon_29pt@3x.png differ diff --git a/OverrideAssetsWatchApp.xcassets/AppIcon.appiconset/icon_33pt@2x.png b/OverrideAssetsWatchApp.xcassets/AppIcon.appiconset/icon_33pt@2x.png new file mode 100644 index 0000000000..0e27afe04b Binary files /dev/null and b/OverrideAssetsWatchApp.xcassets/AppIcon.appiconset/icon_33pt@2x.png differ diff --git a/OverrideAssetsWatchApp.xcassets/AppIcon.appiconset/icon_40pt@2x.png b/OverrideAssetsWatchApp.xcassets/AppIcon.appiconset/icon_40pt@2x.png index 42461280e5..8a61d510bf 100644 Binary files a/OverrideAssetsWatchApp.xcassets/AppIcon.appiconset/icon_40pt@2x.png and b/OverrideAssetsWatchApp.xcassets/AppIcon.appiconset/icon_40pt@2x.png differ diff --git a/OverrideAssetsWatchApp.xcassets/AppIcon.appiconset/icon_44pt@2x.png b/OverrideAssetsWatchApp.xcassets/AppIcon.appiconset/icon_44pt@2x.png index 242f88c577..3bdab6e508 100644 Binary files a/OverrideAssetsWatchApp.xcassets/AppIcon.appiconset/icon_44pt@2x.png and b/OverrideAssetsWatchApp.xcassets/AppIcon.appiconset/icon_44pt@2x.png differ diff --git a/OverrideAssetsWatchApp.xcassets/AppIcon.appiconset/icon_46pt@2x.png b/OverrideAssetsWatchApp.xcassets/AppIcon.appiconset/icon_46pt@2x.png new file mode 100644 index 0000000000..ac6ae77434 Binary files /dev/null and b/OverrideAssetsWatchApp.xcassets/AppIcon.appiconset/icon_46pt@2x.png differ diff --git a/OverrideAssetsWatchApp.xcassets/AppIcon.appiconset/icon_50pt@2x.png b/OverrideAssetsWatchApp.xcassets/AppIcon.appiconset/icon_50pt@2x.png index 428a927df3..528a11d8b9 100644 Binary files a/OverrideAssetsWatchApp.xcassets/AppIcon.appiconset/icon_50pt@2x.png and b/OverrideAssetsWatchApp.xcassets/AppIcon.appiconset/icon_50pt@2x.png differ diff --git a/OverrideAssetsWatchApp.xcassets/AppIcon.appiconset/icon_51pt@2x.png b/OverrideAssetsWatchApp.xcassets/AppIcon.appiconset/icon_51pt@2x.png new file mode 100644 index 0000000000..83413321fd Binary files /dev/null and b/OverrideAssetsWatchApp.xcassets/AppIcon.appiconset/icon_51pt@2x.png differ diff --git a/OverrideAssetsWatchApp.xcassets/AppIcon.appiconset/icon_54pt@2x.png b/OverrideAssetsWatchApp.xcassets/AppIcon.appiconset/icon_54pt@2x.png new file mode 100644 index 0000000000..f7c2511750 Binary files /dev/null and b/OverrideAssetsWatchApp.xcassets/AppIcon.appiconset/icon_54pt@2x.png differ diff --git a/OverrideAssetsWatchApp.xcassets/AppIcon.appiconset/icon_86pt@2x.png b/OverrideAssetsWatchApp.xcassets/AppIcon.appiconset/icon_86pt@2x.png index 3d71febd9e..45aef3f0f8 100644 Binary files a/OverrideAssetsWatchApp.xcassets/AppIcon.appiconset/icon_86pt@2x.png and b/OverrideAssetsWatchApp.xcassets/AppIcon.appiconset/icon_86pt@2x.png differ diff --git a/OverrideAssetsWatchApp.xcassets/AppIcon.appiconset/icon_98pt@2x.png b/OverrideAssetsWatchApp.xcassets/AppIcon.appiconset/icon_98pt@2x.png index ad82e87ff7..afd8f8391d 100644 Binary files a/OverrideAssetsWatchApp.xcassets/AppIcon.appiconset/icon_98pt@2x.png and b/OverrideAssetsWatchApp.xcassets/AppIcon.appiconset/icon_98pt@2x.png differ diff --git a/README.md b/README.md index 0cdf6dfedd..3e81f6b882 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,24 @@ -# LoopWorkspace +# LoopWorkspace (Glucose Guard) + +This fork builds **Glucose Guard** on top of [LoopKit/LoopWorkspace](https://github.com/LoopKit/LoopWorkspace). + +This step is **iOS only**: GitHub Actions sync from upstream Loop, apply Glucose +Guard icons and the display name, then publish to the existing TestFlight +account. Branding lives in `glucose-guard-design/` (and later in +[iDustbin/glucose-guard-design](https://github.com/iDustbin/glucose-guard-design) +when that repo exists). There is no web or Kubernetes app in this step. + +For a local Xcode icon/name refresh after an upstream pull: + +``` +./Scripts/apply_glucose_guard_branding.sh +``` + +Or apply a local checkout of the design repo: + +``` +GLUCOSE_GUARD_DESIGN_PATH=/path/to/glucose-guard-design ./Scripts/apply_glucose_guard_branding.sh +``` The Loop app can be built using GitHub in a browser on any computer or using a Mac with Xcode. diff --git a/Scripts/apply_glucose_guard_branding.sh b/Scripts/apply_glucose_guard_branding.sh new file mode 100755 index 0000000000..fbf40a3bcf --- /dev/null +++ b/Scripts/apply_glucose_guard_branding.sh @@ -0,0 +1,118 @@ +#!/usr/bin/env bash +# Pull Glucose Guard branding from iDustbin/glucose-guard-design and apply +# it to this LoopWorkspace checkout. Used after upstream LoopKit sync so +# icons and the display name survive a fork reset. +set -euo pipefail + +ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)" +DESIGN_OWNER="${GLUCOSE_GUARD_DESIGN_OWNER:-iDustbin}" +DESIGN_REPO="${GLUCOSE_GUARD_DESIGN_REPO:-glucose-guard-design}" +DESIGN_REF="${GLUCOSE_GUARD_DESIGN_REF:-main}" +LOCAL_DESIGN="${GLUCOSE_GUARD_DESIGN_PATH:-}" +CLONE_DIR="" + +cleanup() { + if [[ -n "${CLONE_DIR}" && -d "${CLONE_DIR}" ]]; then + rm -rf "${CLONE_DIR}" + fi +} +trap cleanup EXIT + +resolve_source() { + if [[ -n "${LOCAL_DESIGN}" ]]; then + if [[ ! -d "${LOCAL_DESIGN}/ios" ]]; then + echo "GLUCOSE_GUARD_DESIGN_PATH does not contain an ios/ directory: ${LOCAL_DESIGN}" >&2 + exit 1 + fi + printf '%s\n' "${LOCAL_DESIGN}" + return + fi + + local bundled="${ROOT}/glucose-guard-design" + local url="https://github.com/${DESIGN_OWNER}/${DESIGN_REPO}.git" + CLONE_DIR="$(mktemp -d)" + + echo "Cloning ${DESIGN_OWNER}/${DESIGN_REPO}@${DESIGN_REF}" >&2 + set +e + if [[ -n "${GH_PAT:-}" ]]; then + git -c "http.extraHeader=Authorization: Bearer ${GH_PAT}" \ + clone --depth 1 --branch "${DESIGN_REF}" "${url}" "${CLONE_DIR}" + else + git clone --depth 1 --branch "${DESIGN_REF}" "${url}" "${CLONE_DIR}" + fi + local clone_status=$? + set -e + + if [[ "${clone_status}" -eq 0 && -d "${CLONE_DIR}/ios" ]]; then + printf '%s\n' "${CLONE_DIR}" + return + fi + + echo "Remote ${DESIGN_OWNER}/${DESIGN_REPO} is not available; using bundled glucose-guard-design." >&2 + rm -rf "${CLONE_DIR}" + CLONE_DIR="" + if [[ -d "${bundled}/ios" ]]; then + printf '%s\n' "${bundled}" + return + fi + + echo "No Glucose Guard design source found. Create iDustbin/glucose-guard-design or set GLUCOSE_GUARD_DESIGN_PATH." >&2 + exit 1 +} + +copy_catalog() { + local src="$1" + local dest="$2" + if [[ ! -d "${src}" ]]; then + echo "Missing asset catalog: ${src}" >&2 + exit 1 + fi + rm -rf "${dest}" + mkdir -p "$(dirname "${dest}")" + cp -R "${src}" "${dest}" +} + +apply_display_name() { + local snippet="$1" + local xcconfig="${ROOT}/LoopConfigOverride.xcconfig" + python3 - "${snippet}" "${xcconfig}" <<'PY' +import re +import sys +from pathlib import Path + +snippet = Path(sys.argv[1]) +xcconfig = Path(sys.argv[2]) +name = "GlucoseGuard" +if snippet.is_file(): + for line in snippet.read_text(encoding="utf-8").splitlines(): + stripped = line.strip() + if stripped.startswith("MAIN_APP_DISPLAY_NAME"): + _, _, value = stripped.partition("=") + candidate = value.strip() + if candidate: + name = candidate + break + +text = xcconfig.read_text(encoding="utf-8") if xcconfig.exists() else "" +pattern = re.compile(r"^MAIN_APP_DISPLAY_NAME\s*=.*$", re.MULTILINE) +replacement = f"MAIN_APP_DISPLAY_NAME = {name}" +if pattern.search(text): + text = pattern.sub(replacement, text) +else: + if text and not text.endswith("\n"): + text += "\n" + text += replacement + "\n" +xcconfig.write_text(text, encoding="utf-8") +print(f"Set {replacement}") +PY +} + +SRC="$(resolve_source)" +copy_catalog \ + "${SRC}/ios/OverrideAssetsLoop.xcassets" \ + "${ROOT}/OverrideAssetsLoop.xcassets" +copy_catalog \ + "${SRC}/ios/OverrideAssetsWatchApp.xcassets" \ + "${ROOT}/OverrideAssetsWatchApp.xcassets" +apply_display_name "${SRC}/ios/display_name.xcconfig" +echo "Glucose Guard branding applied from ${SRC}" diff --git a/glucose-guard-design/.gitignore b/glucose-guard-design/.gitignore new file mode 100644 index 0000000000..1a7cd0f3a9 --- /dev/null +++ b/glucose-guard-design/.gitignore @@ -0,0 +1,4 @@ +.DS_Store +.idea/ +.vscode/ +*.log diff --git a/glucose-guard-design/README.md b/glucose-guard-design/README.md new file mode 100644 index 0000000000..c97f3bf54d --- /dev/null +++ b/glucose-guard-design/README.md @@ -0,0 +1,33 @@ +# Glucose Guard Design + +iOS branding for **Glucose Guard**: logo, color tokens, and Loop override app icons. + +Step 1 is **iOS only**. The Loop fork +[iDustbin/LoopWorkspace](https://github.com/iDustbin/LoopWorkspace) syncs from +[LoopKit/LoopWorkspace](https://github.com/LoopKit/LoopWorkspace). GitHub Actions +then apply `ios/` (icons + display name) and publish to the existing TestFlight +account. + +## Layout + +- `branding/` — logo, SVG mark, color tokens +- `ios/` — `OverrideAssets*.xcassets` and `display_name.xcconfig` +- `docs/step-1.md` — what ships now vs later + +## Apply to a local LoopWorkspace checkout + +From the LoopWorkspace root: + +```bash +./Scripts/apply_glucose_guard_branding.sh +``` + +Or point at this folder: + +```bash +GLUCOSE_GUARD_DESIGN_PATH=/path/to/glucose-guard-design \ + ./Scripts/apply_glucose_guard_branding.sh +``` + +Until `iDustbin/glucose-guard-design` exists as its own GitHub repo, this tree +stays bundled inside the Loop fork so TestFlight still gets the Glucose Guard icon. diff --git a/glucose-guard-design/branding/app-icon-1024.png b/glucose-guard-design/branding/app-icon-1024.png new file mode 100644 index 0000000000..49ac074961 Binary files /dev/null and b/glucose-guard-design/branding/app-icon-1024.png differ diff --git a/glucose-guard-design/branding/logo-512.png b/glucose-guard-design/branding/logo-512.png new file mode 100644 index 0000000000..bf6f760082 Binary files /dev/null and b/glucose-guard-design/branding/logo-512.png differ diff --git a/glucose-guard-design/branding/logo-source.png b/glucose-guard-design/branding/logo-source.png new file mode 100644 index 0000000000..32fee7e2b9 Binary files /dev/null and b/glucose-guard-design/branding/logo-source.png differ diff --git a/glucose-guard-design/branding/logo.png b/glucose-guard-design/branding/logo.png new file mode 100644 index 0000000000..b46d6f9f4e Binary files /dev/null and b/glucose-guard-design/branding/logo.png differ diff --git a/glucose-guard-design/branding/logo.svg b/glucose-guard-design/branding/logo.svg new file mode 100644 index 0000000000..40db1449d4 --- /dev/null +++ b/glucose-guard-design/branding/logo.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/glucose-guard-design/branding/tokens.json b/glucose-guard-design/branding/tokens.json new file mode 100644 index 0000000000..49e4e8628e --- /dev/null +++ b/glucose-guard-design/branding/tokens.json @@ -0,0 +1,40 @@ +{ + "name": "Glucose Guard", + "displayName": "GlucoseGuard", + "logo": { + "mark": "Medical cross fused with a guardian robot (head, eyes, shield torso)", + "statusRing": { + "connected": { + "color": "#22C55E", + "meaning": "CGM and insulin pump communication is working; closed loop is the goal" + }, + "idle": { + "color": "#F4F4F5", + "meaning": "White ring — awaiting a live connection (placeholder in step 1)" + }, + "disconnected": { + "color": "#F4333C", + "meaning": "Communication lost (shown only as a mock in the web shell)" + } + } + }, + "brand": { + "red": "#F4333C", + "white": "#FFFFFF", + "black": "#0A0A0A" + }, + "light": { + "background": "#FAFAFA", + "surface": "#FFFFFF", + "text": "#171717", + "muted": "#737373", + "border": "#E5E5E5" + }, + "dark": { + "background": "#0A0A0A", + "surface": "#171717", + "text": "#FAFAFA", + "muted": "#A3A3A3", + "border": "#2A2A2A" + } +} diff --git a/glucose-guard-design/docs/step-1.md b/glucose-guard-design/docs/step-1.md new file mode 100644 index 0000000000..35d3dc8b73 --- /dev/null +++ b/glucose-guard-design/docs/step-1.md @@ -0,0 +1,31 @@ +# Glucose Guard — Step 1 (iOS only) + +Branding source of truth for the Loop iOS fork (`iDustbin/LoopWorkspace`). + +## Implemented now + +- App name: **GlucoseGuard** +- Robot-cross logo on brand red (`#F4333C`) +- iOS and watchOS override app icons +- GitHub Actions on the Loop fork pull this tree **after** syncing + `LoopKit/LoopWorkspace`, then Fastlane publishes to the existing TestFlight + account + +## Not in this step + +- Kubernetes / web dashboard +- Live CGM, pump, or Nightscout values +- Withings, Rex.fit, or other third-party health APIs +- Medical-person search and dataset access requests +- Food overview (owned by another company / designer) +- Custom Omnipod DASH communication patches + +Omnipod DASH drops on newer InPlay/Atlas pods (especially iPhone 16 / 17e) are +handled upstream. Stay synced with LoopKit so Pod Keep Alive (Loop 3.14+) +arrives through the fork-sync workflow. + +## Later + +- Separate design repo on GitHub +- Web/Kubernetes shell +- CGM detail, A1C/GMI, averages diff --git a/glucose-guard-design/ios/OverrideAssetsLoop.xcassets/AppIcon.appiconset/Contents.json b/glucose-guard-design/ios/OverrideAssetsLoop.xcassets/AppIcon.appiconset/Contents.json new file mode 100644 index 0000000000..e25f7282b7 --- /dev/null +++ b/glucose-guard-design/ios/OverrideAssetsLoop.xcassets/AppIcon.appiconset/Contents.json @@ -0,0 +1,116 @@ +{ + "images" : [ + { + "size" : "20x20", + "idiom" : "iphone", + "filename" : "icon_20pt@2x.png", + "scale" : "2x" + }, + { + "size" : "20x20", + "idiom" : "iphone", + "filename" : "icon_20pt@3x.png", + "scale" : "3x" + }, + { + "size" : "29x29", + "idiom" : "iphone", + "filename" : "icon_29pt@2x.png", + "scale" : "2x" + }, + { + "size" : "29x29", + "idiom" : "iphone", + "filename" : "icon_29pt@3x.png", + "scale" : "3x" + }, + { + "size" : "40x40", + "idiom" : "iphone", + "filename" : "icon_40pt@2x.png", + "scale" : "2x" + }, + { + "size" : "40x40", + "idiom" : "iphone", + "filename" : "icon_40pt@3x.png", + "scale" : "3x" + }, + { + "size" : "60x60", + "idiom" : "iphone", + "filename" : "icon_60pt@2x.png", + "scale" : "2x" + }, + { + "size" : "60x60", + "idiom" : "iphone", + "filename" : "icon_60pt@3x.png", + "scale" : "3x" + }, + { + "size" : "20x20", + "idiom" : "ipad", + "filename" : "icon_20pt.png", + "scale" : "1x" + }, + { + "size" : "20x20", + "idiom" : "ipad", + "filename" : "icon_20pt@2x-1.png", + "scale" : "2x" + }, + { + "size" : "29x29", + "idiom" : "ipad", + "filename" : "icon_29pt.png", + "scale" : "1x" + }, + { + "size" : "29x29", + "idiom" : "ipad", + "filename" : "icon_29pt@2x-1.png", + "scale" : "2x" + }, + { + "size" : "40x40", + "idiom" : "ipad", + "filename" : "icon_40pt.png", + "scale" : "1x" + }, + { + "size" : "40x40", + "idiom" : "ipad", + "filename" : "icon_40pt@2x-1.png", + "scale" : "2x" + }, + { + "size" : "76x76", + "idiom" : "ipad", + "filename" : "icon_76pt.png", + "scale" : "1x" + }, + { + "size" : "76x76", + "idiom" : "ipad", + "filename" : "icon_76pt@2x.png", + "scale" : "2x" + }, + { + "size" : "83.5x83.5", + "idiom" : "ipad", + "filename" : "icon_83.5@2x.png", + "scale" : "2x" + }, + { + "size" : "1024x1024", + "idiom" : "ios-marketing", + "filename" : "Icon.png", + "scale" : "1x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} diff --git a/glucose-guard-design/ios/OverrideAssetsLoop.xcassets/AppIcon.appiconset/Icon.png b/glucose-guard-design/ios/OverrideAssetsLoop.xcassets/AppIcon.appiconset/Icon.png new file mode 100644 index 0000000000..49ac074961 Binary files /dev/null and b/glucose-guard-design/ios/OverrideAssetsLoop.xcassets/AppIcon.appiconset/Icon.png differ diff --git a/glucose-guard-design/ios/OverrideAssetsLoop.xcassets/AppIcon.appiconset/icon_20pt.png b/glucose-guard-design/ios/OverrideAssetsLoop.xcassets/AppIcon.appiconset/icon_20pt.png new file mode 100644 index 0000000000..ab03517ea0 Binary files /dev/null and b/glucose-guard-design/ios/OverrideAssetsLoop.xcassets/AppIcon.appiconset/icon_20pt.png differ diff --git a/glucose-guard-design/ios/OverrideAssetsLoop.xcassets/AppIcon.appiconset/icon_20pt@2x-1.png b/glucose-guard-design/ios/OverrideAssetsLoop.xcassets/AppIcon.appiconset/icon_20pt@2x-1.png new file mode 100644 index 0000000000..903d4313f6 Binary files /dev/null and b/glucose-guard-design/ios/OverrideAssetsLoop.xcassets/AppIcon.appiconset/icon_20pt@2x-1.png differ diff --git a/glucose-guard-design/ios/OverrideAssetsLoop.xcassets/AppIcon.appiconset/icon_20pt@2x.png b/glucose-guard-design/ios/OverrideAssetsLoop.xcassets/AppIcon.appiconset/icon_20pt@2x.png new file mode 100644 index 0000000000..903d4313f6 Binary files /dev/null and b/glucose-guard-design/ios/OverrideAssetsLoop.xcassets/AppIcon.appiconset/icon_20pt@2x.png differ diff --git a/glucose-guard-design/ios/OverrideAssetsLoop.xcassets/AppIcon.appiconset/icon_20pt@3x.png b/glucose-guard-design/ios/OverrideAssetsLoop.xcassets/AppIcon.appiconset/icon_20pt@3x.png new file mode 100644 index 0000000000..c117d31309 Binary files /dev/null and b/glucose-guard-design/ios/OverrideAssetsLoop.xcassets/AppIcon.appiconset/icon_20pt@3x.png differ diff --git a/glucose-guard-design/ios/OverrideAssetsLoop.xcassets/AppIcon.appiconset/icon_29pt.png b/glucose-guard-design/ios/OverrideAssetsLoop.xcassets/AppIcon.appiconset/icon_29pt.png new file mode 100644 index 0000000000..7aa5edfdb8 Binary files /dev/null and b/glucose-guard-design/ios/OverrideAssetsLoop.xcassets/AppIcon.appiconset/icon_29pt.png differ diff --git a/glucose-guard-design/ios/OverrideAssetsLoop.xcassets/AppIcon.appiconset/icon_29pt@2x-1.png b/glucose-guard-design/ios/OverrideAssetsLoop.xcassets/AppIcon.appiconset/icon_29pt@2x-1.png new file mode 100644 index 0000000000..0767a47af0 Binary files /dev/null and b/glucose-guard-design/ios/OverrideAssetsLoop.xcassets/AppIcon.appiconset/icon_29pt@2x-1.png differ diff --git a/glucose-guard-design/ios/OverrideAssetsLoop.xcassets/AppIcon.appiconset/icon_29pt@2x.png b/glucose-guard-design/ios/OverrideAssetsLoop.xcassets/AppIcon.appiconset/icon_29pt@2x.png new file mode 100644 index 0000000000..0767a47af0 Binary files /dev/null and b/glucose-guard-design/ios/OverrideAssetsLoop.xcassets/AppIcon.appiconset/icon_29pt@2x.png differ diff --git a/glucose-guard-design/ios/OverrideAssetsLoop.xcassets/AppIcon.appiconset/icon_29pt@3x.png b/glucose-guard-design/ios/OverrideAssetsLoop.xcassets/AppIcon.appiconset/icon_29pt@3x.png new file mode 100644 index 0000000000..b2e2dfb93c Binary files /dev/null and b/glucose-guard-design/ios/OverrideAssetsLoop.xcassets/AppIcon.appiconset/icon_29pt@3x.png differ diff --git a/glucose-guard-design/ios/OverrideAssetsLoop.xcassets/AppIcon.appiconset/icon_40pt.png b/glucose-guard-design/ios/OverrideAssetsLoop.xcassets/AppIcon.appiconset/icon_40pt.png new file mode 100644 index 0000000000..903d4313f6 Binary files /dev/null and b/glucose-guard-design/ios/OverrideAssetsLoop.xcassets/AppIcon.appiconset/icon_40pt.png differ diff --git a/glucose-guard-design/ios/OverrideAssetsLoop.xcassets/AppIcon.appiconset/icon_40pt@2x-1.png b/glucose-guard-design/ios/OverrideAssetsLoop.xcassets/AppIcon.appiconset/icon_40pt@2x-1.png new file mode 100644 index 0000000000..8a61d510bf Binary files /dev/null and b/glucose-guard-design/ios/OverrideAssetsLoop.xcassets/AppIcon.appiconset/icon_40pt@2x-1.png differ diff --git a/glucose-guard-design/ios/OverrideAssetsLoop.xcassets/AppIcon.appiconset/icon_40pt@2x.png b/glucose-guard-design/ios/OverrideAssetsLoop.xcassets/AppIcon.appiconset/icon_40pt@2x.png new file mode 100644 index 0000000000..8a61d510bf Binary files /dev/null and b/glucose-guard-design/ios/OverrideAssetsLoop.xcassets/AppIcon.appiconset/icon_40pt@2x.png differ diff --git a/glucose-guard-design/ios/OverrideAssetsLoop.xcassets/AppIcon.appiconset/icon_40pt@3x.png b/glucose-guard-design/ios/OverrideAssetsLoop.xcassets/AppIcon.appiconset/icon_40pt@3x.png new file mode 100644 index 0000000000..a0dd1fa5ad Binary files /dev/null and b/glucose-guard-design/ios/OverrideAssetsLoop.xcassets/AppIcon.appiconset/icon_40pt@3x.png differ diff --git a/glucose-guard-design/ios/OverrideAssetsLoop.xcassets/AppIcon.appiconset/icon_60pt@2x.png b/glucose-guard-design/ios/OverrideAssetsLoop.xcassets/AppIcon.appiconset/icon_60pt@2x.png new file mode 100644 index 0000000000..a0dd1fa5ad Binary files /dev/null and b/glucose-guard-design/ios/OverrideAssetsLoop.xcassets/AppIcon.appiconset/icon_60pt@2x.png differ diff --git a/glucose-guard-design/ios/OverrideAssetsLoop.xcassets/AppIcon.appiconset/icon_60pt@3x.png b/glucose-guard-design/ios/OverrideAssetsLoop.xcassets/AppIcon.appiconset/icon_60pt@3x.png new file mode 100644 index 0000000000..aa85ba20de Binary files /dev/null and b/glucose-guard-design/ios/OverrideAssetsLoop.xcassets/AppIcon.appiconset/icon_60pt@3x.png differ diff --git a/glucose-guard-design/ios/OverrideAssetsLoop.xcassets/AppIcon.appiconset/icon_76pt.png b/glucose-guard-design/ios/OverrideAssetsLoop.xcassets/AppIcon.appiconset/icon_76pt.png new file mode 100644 index 0000000000..779a97cb76 Binary files /dev/null and b/glucose-guard-design/ios/OverrideAssetsLoop.xcassets/AppIcon.appiconset/icon_76pt.png differ diff --git a/glucose-guard-design/ios/OverrideAssetsLoop.xcassets/AppIcon.appiconset/icon_76pt@2x.png b/glucose-guard-design/ios/OverrideAssetsLoop.xcassets/AppIcon.appiconset/icon_76pt@2x.png new file mode 100644 index 0000000000..b9a7ae961b Binary files /dev/null and b/glucose-guard-design/ios/OverrideAssetsLoop.xcassets/AppIcon.appiconset/icon_76pt@2x.png differ diff --git a/glucose-guard-design/ios/OverrideAssetsLoop.xcassets/AppIcon.appiconset/icon_83.5@2x.png b/glucose-guard-design/ios/OverrideAssetsLoop.xcassets/AppIcon.appiconset/icon_83.5@2x.png new file mode 100644 index 0000000000..f4ebe7834d Binary files /dev/null and b/glucose-guard-design/ios/OverrideAssetsLoop.xcassets/AppIcon.appiconset/icon_83.5@2x.png differ diff --git a/glucose-guard-design/ios/OverrideAssetsLoop.xcassets/Contents.json b/glucose-guard-design/ios/OverrideAssetsLoop.xcassets/Contents.json new file mode 100644 index 0000000000..73c00596a7 --- /dev/null +++ b/glucose-guard-design/ios/OverrideAssetsLoop.xcassets/Contents.json @@ -0,0 +1,6 @@ +{ + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/glucose-guard-design/ios/OverrideAssetsWatchApp.xcassets/AppIcon.appiconset/Contents.json b/glucose-guard-design/ios/OverrideAssetsWatchApp.xcassets/AppIcon.appiconset/Contents.json new file mode 100644 index 0000000000..9fca6e4dd8 --- /dev/null +++ b/glucose-guard-design/ios/OverrideAssetsWatchApp.xcassets/AppIcon.appiconset/Contents.json @@ -0,0 +1,140 @@ +{ + "images" : [ + { + "filename" : "icon_24pt@2x.png", + "idiom" : "watch", + "role" : "notificationCenter", + "scale" : "2x", + "size" : "24x24", + "subtype" : "38mm" + }, + { + "filename" : "icon_27.5pt@2x.png", + "idiom" : "watch", + "role" : "notificationCenter", + "scale" : "2x", + "size" : "27.5x27.5", + "subtype" : "42mm" + }, + { + "filename" : "icon_29pt@2x.png", + "idiom" : "watch", + "role" : "companionSettings", + "scale" : "2x", + "size" : "29x29" + }, + { + "filename" : "icon_29pt@3x.png", + "idiom" : "watch", + "role" : "companionSettings", + "scale" : "3x", + "size" : "29x29" + }, + { + "filename" : "icon_33pt@2x.png", + "idiom" : "watch", + "role" : "notificationCenter", + "scale" : "2x", + "size" : "33x33", + "subtype" : "45mm" + }, + { + "filename" : "icon_40pt@2x.png", + "idiom" : "watch", + "role" : "appLauncher", + "scale" : "2x", + "size" : "40x40", + "subtype" : "38mm" + }, + { + "filename" : "icon_44pt@2x.png", + "idiom" : "watch", + "role" : "appLauncher", + "scale" : "2x", + "size" : "44x44", + "subtype" : "40mm" + }, + { + "filename" : "icon_46pt@2x.png", + "idiom" : "watch", + "role" : "appLauncher", + "scale" : "2x", + "size" : "46x46", + "subtype" : "41mm" + }, + { + "filename" : "icon_50pt@2x.png", + "idiom" : "watch", + "role" : "appLauncher", + "scale" : "2x", + "size" : "50x50", + "subtype" : "44mm" + }, + { + "filename" : "icon_51pt@2x.png", + "idiom" : "watch", + "role" : "appLauncher", + "scale" : "2x", + "size" : "51x51", + "subtype" : "45mm" + }, + { + "filename" : "icon_54pt@2x.png", + "idiom" : "watch", + "role" : "appLauncher", + "scale" : "2x", + "size" : "54x54", + "subtype" : "49mm" + }, + { + "filename" : "icon_86pt@2x.png", + "idiom" : "watch", + "role" : "quickLook", + "scale" : "2x", + "size" : "86x86", + "subtype" : "38mm" + }, + { + "filename" : "icon_98pt@2x.png", + "idiom" : "watch", + "role" : "quickLook", + "scale" : "2x", + "size" : "98x98", + "subtype" : "42mm" + }, + { + "filename" : "icon_108pt@2x.png", + "idiom" : "watch", + "role" : "quickLook", + "scale" : "2x", + "size" : "108x108", + "subtype" : "44mm" + }, + { + "filename" : "icon_117pt@2x.png", + "idiom" : "watch", + "role" : "quickLook", + "scale" : "2x", + "size" : "117x117", + "subtype" : "45mm" + }, + { + "filename" : "icon_129pt@2x.png", + "idiom" : "watch", + "role" : "quickLook", + "scale" : "2x", + "size" : "129x129", + "subtype" : "49mm" + }, + { + "filename" : "Icon.png", + "idiom" : "watch-marketing", + "scale" : "1x", + "size" : "1024x1024" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/glucose-guard-design/ios/OverrideAssetsWatchApp.xcassets/AppIcon.appiconset/Icon.png b/glucose-guard-design/ios/OverrideAssetsWatchApp.xcassets/AppIcon.appiconset/Icon.png new file mode 100644 index 0000000000..49ac074961 Binary files /dev/null and b/glucose-guard-design/ios/OverrideAssetsWatchApp.xcassets/AppIcon.appiconset/Icon.png differ diff --git a/glucose-guard-design/ios/OverrideAssetsWatchApp.xcassets/AppIcon.appiconset/icon_108pt@2x.png b/glucose-guard-design/ios/OverrideAssetsWatchApp.xcassets/AppIcon.appiconset/icon_108pt@2x.png new file mode 100644 index 0000000000..c26dbb6f47 Binary files /dev/null and b/glucose-guard-design/ios/OverrideAssetsWatchApp.xcassets/AppIcon.appiconset/icon_108pt@2x.png differ diff --git a/glucose-guard-design/ios/OverrideAssetsWatchApp.xcassets/AppIcon.appiconset/icon_117pt@2x.png b/glucose-guard-design/ios/OverrideAssetsWatchApp.xcassets/AppIcon.appiconset/icon_117pt@2x.png new file mode 100644 index 0000000000..60704e5d11 Binary files /dev/null and b/glucose-guard-design/ios/OverrideAssetsWatchApp.xcassets/AppIcon.appiconset/icon_117pt@2x.png differ diff --git a/glucose-guard-design/ios/OverrideAssetsWatchApp.xcassets/AppIcon.appiconset/icon_129pt@2x.png b/glucose-guard-design/ios/OverrideAssetsWatchApp.xcassets/AppIcon.appiconset/icon_129pt@2x.png new file mode 100644 index 0000000000..c2d0c6b6dc Binary files /dev/null and b/glucose-guard-design/ios/OverrideAssetsWatchApp.xcassets/AppIcon.appiconset/icon_129pt@2x.png differ diff --git a/glucose-guard-design/ios/OverrideAssetsWatchApp.xcassets/AppIcon.appiconset/icon_24pt@2x.png b/glucose-guard-design/ios/OverrideAssetsWatchApp.xcassets/AppIcon.appiconset/icon_24pt@2x.png new file mode 100644 index 0000000000..a0b0bc66b0 Binary files /dev/null and b/glucose-guard-design/ios/OverrideAssetsWatchApp.xcassets/AppIcon.appiconset/icon_24pt@2x.png differ diff --git a/glucose-guard-design/ios/OverrideAssetsWatchApp.xcassets/AppIcon.appiconset/icon_27.5pt@2x.png b/glucose-guard-design/ios/OverrideAssetsWatchApp.xcassets/AppIcon.appiconset/icon_27.5pt@2x.png new file mode 100644 index 0000000000..03b38d1f4e Binary files /dev/null and b/glucose-guard-design/ios/OverrideAssetsWatchApp.xcassets/AppIcon.appiconset/icon_27.5pt@2x.png differ diff --git a/glucose-guard-design/ios/OverrideAssetsWatchApp.xcassets/AppIcon.appiconset/icon_29pt@2x.png b/glucose-guard-design/ios/OverrideAssetsWatchApp.xcassets/AppIcon.appiconset/icon_29pt@2x.png new file mode 100644 index 0000000000..0767a47af0 Binary files /dev/null and b/glucose-guard-design/ios/OverrideAssetsWatchApp.xcassets/AppIcon.appiconset/icon_29pt@2x.png differ diff --git a/glucose-guard-design/ios/OverrideAssetsWatchApp.xcassets/AppIcon.appiconset/icon_29pt@3x.png b/glucose-guard-design/ios/OverrideAssetsWatchApp.xcassets/AppIcon.appiconset/icon_29pt@3x.png new file mode 100644 index 0000000000..b2e2dfb93c Binary files /dev/null and b/glucose-guard-design/ios/OverrideAssetsWatchApp.xcassets/AppIcon.appiconset/icon_29pt@3x.png differ diff --git a/glucose-guard-design/ios/OverrideAssetsWatchApp.xcassets/AppIcon.appiconset/icon_33pt@2x.png b/glucose-guard-design/ios/OverrideAssetsWatchApp.xcassets/AppIcon.appiconset/icon_33pt@2x.png new file mode 100644 index 0000000000..0e27afe04b Binary files /dev/null and b/glucose-guard-design/ios/OverrideAssetsWatchApp.xcassets/AppIcon.appiconset/icon_33pt@2x.png differ diff --git a/glucose-guard-design/ios/OverrideAssetsWatchApp.xcassets/AppIcon.appiconset/icon_40pt@2x.png b/glucose-guard-design/ios/OverrideAssetsWatchApp.xcassets/AppIcon.appiconset/icon_40pt@2x.png new file mode 100644 index 0000000000..8a61d510bf Binary files /dev/null and b/glucose-guard-design/ios/OverrideAssetsWatchApp.xcassets/AppIcon.appiconset/icon_40pt@2x.png differ diff --git a/glucose-guard-design/ios/OverrideAssetsWatchApp.xcassets/AppIcon.appiconset/icon_44pt@2x.png b/glucose-guard-design/ios/OverrideAssetsWatchApp.xcassets/AppIcon.appiconset/icon_44pt@2x.png new file mode 100644 index 0000000000..3bdab6e508 Binary files /dev/null and b/glucose-guard-design/ios/OverrideAssetsWatchApp.xcassets/AppIcon.appiconset/icon_44pt@2x.png differ diff --git a/glucose-guard-design/ios/OverrideAssetsWatchApp.xcassets/AppIcon.appiconset/icon_46pt@2x.png b/glucose-guard-design/ios/OverrideAssetsWatchApp.xcassets/AppIcon.appiconset/icon_46pt@2x.png new file mode 100644 index 0000000000..ac6ae77434 Binary files /dev/null and b/glucose-guard-design/ios/OverrideAssetsWatchApp.xcassets/AppIcon.appiconset/icon_46pt@2x.png differ diff --git a/glucose-guard-design/ios/OverrideAssetsWatchApp.xcassets/AppIcon.appiconset/icon_50pt@2x.png b/glucose-guard-design/ios/OverrideAssetsWatchApp.xcassets/AppIcon.appiconset/icon_50pt@2x.png new file mode 100644 index 0000000000..528a11d8b9 Binary files /dev/null and b/glucose-guard-design/ios/OverrideAssetsWatchApp.xcassets/AppIcon.appiconset/icon_50pt@2x.png differ diff --git a/glucose-guard-design/ios/OverrideAssetsWatchApp.xcassets/AppIcon.appiconset/icon_51pt@2x.png b/glucose-guard-design/ios/OverrideAssetsWatchApp.xcassets/AppIcon.appiconset/icon_51pt@2x.png new file mode 100644 index 0000000000..83413321fd Binary files /dev/null and b/glucose-guard-design/ios/OverrideAssetsWatchApp.xcassets/AppIcon.appiconset/icon_51pt@2x.png differ diff --git a/glucose-guard-design/ios/OverrideAssetsWatchApp.xcassets/AppIcon.appiconset/icon_54pt@2x.png b/glucose-guard-design/ios/OverrideAssetsWatchApp.xcassets/AppIcon.appiconset/icon_54pt@2x.png new file mode 100644 index 0000000000..f7c2511750 Binary files /dev/null and b/glucose-guard-design/ios/OverrideAssetsWatchApp.xcassets/AppIcon.appiconset/icon_54pt@2x.png differ diff --git a/glucose-guard-design/ios/OverrideAssetsWatchApp.xcassets/AppIcon.appiconset/icon_86pt@2x.png b/glucose-guard-design/ios/OverrideAssetsWatchApp.xcassets/AppIcon.appiconset/icon_86pt@2x.png new file mode 100644 index 0000000000..45aef3f0f8 Binary files /dev/null and b/glucose-guard-design/ios/OverrideAssetsWatchApp.xcassets/AppIcon.appiconset/icon_86pt@2x.png differ diff --git a/glucose-guard-design/ios/OverrideAssetsWatchApp.xcassets/AppIcon.appiconset/icon_98pt@2x.png b/glucose-guard-design/ios/OverrideAssetsWatchApp.xcassets/AppIcon.appiconset/icon_98pt@2x.png new file mode 100644 index 0000000000..afd8f8391d Binary files /dev/null and b/glucose-guard-design/ios/OverrideAssetsWatchApp.xcassets/AppIcon.appiconset/icon_98pt@2x.png differ diff --git a/glucose-guard-design/ios/OverrideAssetsWatchApp.xcassets/Contents.json b/glucose-guard-design/ios/OverrideAssetsWatchApp.xcassets/Contents.json new file mode 100644 index 0000000000..73c00596a7 --- /dev/null +++ b/glucose-guard-design/ios/OverrideAssetsWatchApp.xcassets/Contents.json @@ -0,0 +1,6 @@ +{ + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/glucose-guard-design/ios/display_name.xcconfig b/glucose-guard-design/ios/display_name.xcconfig new file mode 100644 index 0000000000..bb2416fa62 --- /dev/null +++ b/glucose-guard-design/ios/display_name.xcconfig @@ -0,0 +1,3 @@ +// Applied by Scripts/apply_glucose_guard_branding.sh in LoopWorkspace. +// Do not put team IDs, API keys, or signing secrets in this file. +MAIN_APP_DISPLAY_NAME = GlucoseGuard