v1.2.0: Fix app icons and DockTilePlugin rename

- Rename WarpDockTilePlugin to GalaxyDockTilePlugin
- Fix runtime icon switching to load from compiled-in assets
- Add NSDockTilePlugIn key to embedded Info.plist
- Replace all channel icons with padded Galaxy variants
- Update build.rs references for renamed plugin
- No longer requires post-bundle steps for icon switching
- Bump version to 1.2.0

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
Ryan Ward
2026-05-19 12:39:43 -05:00
co-authored by Claude Opus 4.6
parent ccc67e6a33
commit 53914688c0
32 changed files with 291 additions and 1146 deletions
+7 -23
View File
@@ -239,32 +239,16 @@ impl AppearanceManager {
let icon_name = AppIconSettings::get_base_icon_file_name(icon);
log::debug!("Setting app icon in memory to: {icon_name}");
// Locate the plugin bundle.
let plugins_path: id = msg_send![bundle, builtInPlugInsPath];
let plugin_name = make_nsstring("WarpDockTilePlugin.docktileplugin");
let plugin_path: id =
msg_send![plugins_path, stringByAppendingPathComponent: plugin_name];
let plugin_bundle: id = msg_send![class!(NSBundle), bundleWithPath: plugin_path];
if plugin_bundle == nil {
log::warn!("Failed to get dock tile plugin bundle");
// Load icon from the compiled-in assets.
let asset_path = format!("bundled/png/{icon_name}.png");
let Ok(icon_data) = crate::ASSETS.get(&asset_path) else {
log::warn!("Failed to load icon asset: {asset_path}");
return;
}
};
// Read the images from the plugin bundle.
let image_name = make_nsstring(icon_name);
let extension = make_nsstring("png");
let image_path: id =
msg_send![plugin_bundle, pathForResource:image_name ofType:extension];
if image_path == nil {
log::warn!("Failed to get image path for icon: {icon_name}");
return;
}
// Create the image from the file.
let ns_data: id = msg_send![class!(NSData), dataWithBytes:icon_data.as_ptr() length:icon_data.len()];
let image: id = msg_send![class!(NSImage), alloc];
let image: id = msg_send![image, initWithContentsOfFile:image_path];
let image: id = msg_send![image, initWithData:ns_data];
if image == nil {
log::warn!("Failed to create image for icon: {icon_name}");
+2
View File
@@ -62,6 +62,8 @@ embed_plist::embed_info_plist_bytes!(r#"
<array><dict><key>CFBundleURLName</key><string>Galaxy</string><key>CFBundleURLSchemes</key><array><string>galaxyai</string></array></dict></array>
<key>NSHumanReadableCopyright</key>
<string>© 2026, Samsung Electronics Co., Ltd.</string>
<key>NSDockTilePlugIn</key>
<string>GalaxyDockTilePlugin.docktileplugin</string>
</dict>
</plist>
"#.as_bytes());
+1 -1
View File
@@ -4,7 +4,7 @@ use serde::{Deserialize, Serialize};
/// The app icon to use (mac-only).
///
/// IMPORTANT NOTE: If you add a new icon, you will need to update the logic in WarpDockTilePlugin.m
/// IMPORTANT NOTE: If you add a new icon, you will need to update the logic in GalaxyDockTilePlugin.m
/// to read the new icon and also add the icon to app/DockTilePlugin/Resources.
#[derive(
Default,