diff --git a/FchatiApp/Info.plist b/FchatiApp/Info.plist
index 28c212c..a23436b 100644
--- a/FchatiApp/Info.plist
+++ b/FchatiApp/Info.plist
@@ -8,6 +8,8 @@
FchatiApp
CFBundleIdentifier
de.diyaa.fchati
+ CFBundleIconFile
+ Fchati.icns
CFBundleInfoDictionaryVersion
6.0
CFBundleName
diff --git a/FchatiApp/Resources/AppIcon.png b/FchatiApp/Resources/AppIcon.png
new file mode 100644
index 0000000..2513932
Binary files /dev/null and b/FchatiApp/Resources/AppIcon.png differ
diff --git a/FchatiApp/Resources/Fchati.icns b/FchatiApp/Resources/Fchati.icns
new file mode 100644
index 0000000..402f74f
Binary files /dev/null and b/FchatiApp/Resources/Fchati.icns differ
diff --git a/IMPLEMENTATION_STATUS.md b/IMPLEMENTATION_STATUS.md
index 6fc9556..b774a83 100644
--- a/IMPLEMENTATION_STATUS.md
+++ b/IMPLEMENTATION_STATUS.md
@@ -199,6 +199,7 @@
- `relay-server/Dockerfile` initializes all persistent-data paths as the unprivileged `node` user, preventing pairing, queue, and upload write failures on newly created volumes.
- The macOS app now has an always-visible quit control beside the top-level tabs, in addition to the existing Settings action.
- The macOS app now includes a normal main window and Dock presence while retaining the menu-bar shortcut.
+- `FchatiApp/Resources/AppIcon.png` and `FchatiApp/Resources/Fchati.icns` provide the bundled Dock and application icon, and the installer copies the icon into the application bundle.
## Bug Fixes — Post-Review ✅
diff --git a/scripts/run-macos-app.sh b/scripts/run-macos-app.sh
index f0ad0bb..c93449a 100755
--- a/scripts/run-macos-app.sh
+++ b/scripts/run-macos-app.sh
@@ -9,6 +9,7 @@ PRODUCT_NAME="FchatiApp"
INSTALL_PATH="/Applications/Fchati.app"
STAGING_DIR="$(mktemp -d "${TMPDIR:-/tmp}/fchati-install.XXXXXX")"
STAGING_APP="$STAGING_DIR/Fchati.app"
+ICON_PATH="$PROJECT_DIR/Resources/Fchati.icns"
cleanup() {
rm -rf "$STAGING_DIR"
@@ -20,6 +21,11 @@ if [[ ! -f "$PROJECT_DIR/Package.swift" ]]; then
exit 1
fi
+if [[ ! -f "$ICON_PATH" ]]; then
+ echo "Application icon not found: $ICON_PATH" >&2
+ exit 1
+fi
+
if [[ -e "$INSTALL_PATH" && ! -d "$INSTALL_PATH" ]]; then
echo "Expected an application bundle at $INSTALL_PATH, but found a non-directory." >&2
exit 1
@@ -41,9 +47,10 @@ if [[ ! -x "$EXECUTABLE_PATH" ]]; then
fi
echo "Creating the application bundle..."
-mkdir -p "$STAGING_APP/Contents/MacOS"
+mkdir -p "$STAGING_APP/Contents/MacOS" "$STAGING_APP/Contents/Resources"
cp "$PROJECT_DIR/Info.plist" "$STAGING_APP/Contents/Info.plist"
cp "$EXECUTABLE_PATH" "$STAGING_APP/Contents/MacOS/$PRODUCT_NAME"
+cp "$ICON_PATH" "$STAGING_APP/Contents/Resources/Fchati.icns"
codesign --force --sign - --timestamp=none --entitlements "$PROJECT_DIR/FchatiApp.entitlements" "$STAGING_APP"
if [[ -d "$INSTALL_PATH" ]]; then