Prepare 1.2.0 classical artwork, free launcher with three-second exit and open-source licensing
这个提交包含在:
1 父节点
906f770805
当前提交
696d5f39b3
14 个文件已更改
+141
-30
没有与搜索条件相匹配的文件
二进制文件未显示。
|
之后 宽度: | 高度: | 大小: 2.6 MiB |
@@ -0,0 +1,21 @@
|
|||||||
|
MIT License
|
||||||
|
|
||||||
|
Copyright (c) 2026 Dayu
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
in the Software without restriction, including without limitation the rights
|
||||||
|
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
copies of the Software, and to permit persons to whom the Software is
|
||||||
|
furnished to do so, subject to the following conditions:
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice shall be included in all
|
||||||
|
copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||||
|
SOFTWARE.
|
||||||
@@ -0,0 +1,12 @@
|
|||||||
|
# 第三方资料与许可边界
|
||||||
|
|
||||||
|
本项目自己的 Objective-C、Metal、脚本及原创文档按根目录 MIT License 开源。署名 Dayu 不表示第三方代码、样本与 SDK 的版权转移。
|
||||||
|
|
||||||
|
- Apple FxPlug / PluginManager SDK 和随正式插件分发的运行框架属于 Apple;受 Apple 相应 SDK 与再分发条款约束,源码仓库不包含这些框架。编译需自行安装 Xcode 与 FxPlug SDK。macOS Vision、AppKit、CoreImage 属于系统组件。
|
||||||
|
- `Templates/大鱼人像美化/Drop Zone.tiff` 是 Motion 工程的标准占位资源,随模板保留;不将其声明为 Dayu 原创作品或另行授予 MIT 权利。
|
||||||
|
- `tests/fixtures/astronaut.png` 来源于 NASA 的 Eileen Collins 图像,经 scikit-image 样本分发,详见同目录 ATTRIBUTION.md。相关分析预览由该公开样本生成。
|
||||||
|
- `docs/analysis` 中的对照分析、符号和反汇编摘录是互操作研究材料,不包括目标商业 APP、模型或 metallib。MIT 不为其原权利人的内容重新授权。本项目不声称与目标商业插件的模型或画面逐像素一致。
|
||||||
|
- `Assets/Artwork/portrait-cover.png`、APP 中 `LauncherInfo.png` 及两张模板缩略图由内置图像生成工具创作。人物为虚构成年古风人物,封面是宣传插画,不是真实滤镜前后效果对比;生成说明和提示词见 `docs/design`。未使用目标插件的宣传人像。
|
||||||
|
- 不包含用户测试素材、用户工程、真实人脸坐标数据、签名私钥、公证密码或账号令牌。签名证书与公证凭据不属于源码恢复范围。
|
||||||
|
|
||||||
|
免费发布版本无需激活码、付费注册或联网授权。安装时执行系统插件注册;主 APP 打开后显示说明并在三秒后退出,宿主内的 FxPlug 服务独立运行。
|
||||||
二进制文件未显示。
|
之后 宽度: | 高度: | 大小: 444 KiB |
二进制文件未显示。
|
之后 宽度: | 高度: | 大小: 44 KiB |
@@ -82,6 +82,7 @@
|
|||||||
"/Localized: Wrapper Application/MainMenu.xib",
|
"/Localized: Wrapper Application/MainMenu.xib",
|
||||||
Plugin/Info.plist,
|
Plugin/Info.plist,
|
||||||
"Wrapper Application/AppDelegate.m",
|
"Wrapper Application/AppDelegate.m",
|
||||||
|
"Wrapper Application/Resources/LauncherInfo.png",
|
||||||
"Wrapper Application/Info.plist",
|
"Wrapper Application/Info.plist",
|
||||||
"Wrapper Application/main.m",
|
"Wrapper Application/main.m",
|
||||||
);
|
);
|
||||||
@@ -355,6 +356,7 @@
|
|||||||
isa = XCBuildConfiguration;
|
isa = XCBuildConfiguration;
|
||||||
buildSettings = {
|
buildSettings = {
|
||||||
CODE_SIGN_ENTITLEMENTS = "beatygril/Wrapper Application/SandboxEntitlements.entitlements";
|
CODE_SIGN_ENTITLEMENTS = "beatygril/Wrapper Application/SandboxEntitlements.entitlements";
|
||||||
|
OTHER_LDFLAGS = ("$(inherited)", "-framework", CoreServices, );
|
||||||
CODE_SIGN_IDENTITY = "Developer ID Application";
|
CODE_SIGN_IDENTITY = "Developer ID Application";
|
||||||
CODE_SIGN_INJECT_BASE_ENTITLEMENTS = NO;
|
CODE_SIGN_INJECT_BASE_ENTITLEMENTS = NO;
|
||||||
CODE_SIGN_STYLE = Manual;
|
CODE_SIGN_STYLE = Manual;
|
||||||
@@ -372,6 +374,7 @@
|
|||||||
isa = XCBuildConfiguration;
|
isa = XCBuildConfiguration;
|
||||||
buildSettings = {
|
buildSettings = {
|
||||||
CODE_SIGN_ENTITLEMENTS = "beatygril/Wrapper Application/SandboxEntitlements.entitlements";
|
CODE_SIGN_ENTITLEMENTS = "beatygril/Wrapper Application/SandboxEntitlements.entitlements";
|
||||||
|
OTHER_LDFLAGS = ("$(inherited)", "-framework", CoreServices, );
|
||||||
CODE_SIGN_IDENTITY = "Developer ID Application";
|
CODE_SIGN_IDENTITY = "Developer ID Application";
|
||||||
CODE_SIGN_INJECT_BASE_ENTITLEMENTS = NO;
|
CODE_SIGN_INJECT_BASE_ENTITLEMENTS = NO;
|
||||||
CODE_SIGN_STYLE = Manual;
|
CODE_SIGN_STYLE = Manual;
|
||||||
|
|||||||
@@ -17,9 +17,9 @@
|
|||||||
<key>CFBundlePackageType</key>
|
<key>CFBundlePackageType</key>
|
||||||
<string>XPC!</string>
|
<string>XPC!</string>
|
||||||
<key>CFBundleShortVersionString</key>
|
<key>CFBundleShortVersionString</key>
|
||||||
<string>1.1.2</string>
|
<string>1.2.0</string>
|
||||||
<key>CFBundleVersion</key>
|
<key>CFBundleVersion</key>
|
||||||
<string>13</string>
|
<string>14</string>
|
||||||
<key>NSHumanReadableCopyright</key>
|
<key>NSHumanReadableCopyright</key>
|
||||||
<string></string>
|
<string></string>
|
||||||
<key>PlugInKit</key>
|
<key>PlugInKit</key>
|
||||||
@@ -72,7 +72,7 @@
|
|||||||
<key>uuid</key>
|
<key>uuid</key>
|
||||||
<string>FB14B0E6-59B2-4836-916F-CD0C559E9241</string>
|
<string>FB14B0E6-59B2-4836-916F-CD0C559E9241</string>
|
||||||
<key>version</key>
|
<key>version</key>
|
||||||
<string>1.1.2</string>
|
<string>1.2.0</string>
|
||||||
</dict>
|
</dict>
|
||||||
<dict>
|
<dict>
|
||||||
<key>className</key>
|
<key>className</key>
|
||||||
@@ -84,7 +84,7 @@
|
|||||||
<key>uuid</key>
|
<key>uuid</key>
|
||||||
<string>E0E432C8-3D71-4ABA-B006-E7F519E06C87</string>
|
<string>E0E432C8-3D71-4ABA-B006-E7F519E06C87</string>
|
||||||
<key>version</key>
|
<key>version</key>
|
||||||
<string>1.1.2</string>
|
<string>1.2.0</string>
|
||||||
<key>protocolNames</key>
|
<key>protocolNames</key>
|
||||||
<array>
|
<array>
|
||||||
<string>FxOnScreenControl</string>
|
<string>FxOnScreenControl</string>
|
||||||
|
|||||||
@@ -1,34 +1,45 @@
|
|||||||
#import "AppDelegate.h"
|
#import "AppDelegate.h"
|
||||||
|
#import <CoreServices/CoreServices.h>
|
||||||
|
|
||||||
@interface AppDelegate ()
|
@interface AppDelegate ()
|
||||||
@property (weak) IBOutlet NSWindow *window;
|
@property (weak) IBOutlet NSWindow *window;
|
||||||
|
@property (strong) NSTimer *exitTimer;
|
||||||
@end
|
@end
|
||||||
|
|
||||||
@implementation AppDelegate
|
@implementation AppDelegate
|
||||||
- (void)applicationDidFinishLaunching:(NSNotification *)notification {
|
- (void)applicationDidFinishLaunching:(NSNotification *)notification {
|
||||||
self.window.title=@"大鱼人像美化";
|
self.window.title = @"大鱼人像美化 · 免费开源";
|
||||||
[self.window setContentSize:NSMakeSize(600,360)];
|
[self.window setContentSize:NSMakeSize(800, 450)];
|
||||||
NSView *content=[NSView new];self.window.contentView=content;
|
self.window.styleMask &= ~NSWindowStyleMaskResizable;
|
||||||
NSStackView *stack=[NSStackView new];stack.orientation=NSUserInterfaceLayoutOrientationVertical;
|
self.window.backgroundColor = [NSColor colorWithRed:0.94 green:0.92 blue:0.85 alpha:1];
|
||||||
stack.alignment=NSLayoutAttributeLeading;stack.spacing=16;stack.translatesAutoresizingMaskIntoConstraints=NO;
|
NSImageView *card = [[NSImageView alloc] initWithFrame:NSMakeRect(0, 0, 800, 450)];
|
||||||
[content addSubview:stack];
|
card.autoresizingMask = NSViewWidthSizable | NSViewHeightSizable;
|
||||||
[NSLayoutConstraint activateConstraints:@[[stack.leadingAnchor constraintEqualToAnchor:content.leadingAnchor constant:32],[stack.trailingAnchor constraintEqualToAnchor:content.trailingAnchor constant:-32],[stack.topAnchor constraintEqualToAnchor:content.topAnchor constant:30]]];
|
card.imageScaling = NSImageScaleProportionallyUpOrDown;
|
||||||
NSTextField *title=[NSTextField labelWithString:@"大鱼人像美化"];
|
NSURL *artwork = [NSBundle.mainBundle URLForResource:@"LauncherInfo" withExtension:@"png"];
|
||||||
title.font=[NSFont systemFontOfSize:28 weight:NSFontWeightSemibold];[stack addArrangedSubview:title];
|
card.image = [[NSImage alloc] initWithContentsOfURL:artwork];
|
||||||
NSTextField *subtitle=[NSTextField labelWithString:@"beatygril · FxPlug 4"];
|
card.accessibilityLabel = @"大鱼人像美化,免费开源,自动注册,无需激活码。主程序启动三秒后自动退出;Final Cut Pro 和 Motion 中的滤镜继续独立运行。";
|
||||||
subtitle.textColor=NSColor.secondaryLabelColor;[stack addArrangedSubview:subtitle];
|
self.window.contentView = card;
|
||||||
NSTextField *description=[NSTextField wrappingLabelWithString:@"在 Motion 的滤镜资源库中选择「大鱼 → 大鱼人像美化」。Final Cut Pro 的效果浏览器中也可使用配套效果。\n\n美化会随画面人脸自动更新,无需先点分析。脸型默认跟随主要人脸,多人模式可处理多张脸。启用「只处理选中人脸」后,可点击画面更换目标。向前/向后分析为可选功能,结果可随工程保存。"];
|
if (!card.image) {
|
||||||
description.font=[NSFont systemFontOfSize:13];[stack addArrangedSubview:description];
|
NSTextField *fallback = [NSTextField wrappingLabelWithString:card.accessibilityLabel];
|
||||||
NSStackView *buttons=[NSStackView new];buttons.orientation=NSUserInterfaceLayoutOrientationHorizontal;buttons.spacing=12;
|
fallback.frame = NSMakeRect(48, 160, 704, 130);
|
||||||
[buttons addArrangedSubview:[NSButton buttonWithTitle:@"打开 Motion" target:self action:@selector(openMotion:)]];
|
fallback.font = [NSFont systemFontOfSize:24 weight:NSFontWeightSemibold];
|
||||||
[buttons addArrangedSubview:[NSButton buttonWithTitle:@"打开 Final Cut Pro" target:self action:@selector(openFinalCut:)]];
|
[card addSubview:fallback];
|
||||||
[stack addArrangedSubview:buttons];
|
}
|
||||||
NSTextField *note=[NSTextField wrappingLabelWithString:@"建议先调高中频磨皮,再按需调节肤色与脸型。肤色风格为本插件独立调色预设。"];
|
|
||||||
note.textColor=NSColor.secondaryLabelColor;note.font=[NSFont systemFontOfSize:11];[stack addArrangedSubview:note];
|
|
||||||
[self.window center];
|
[self.window center];
|
||||||
|
[self.window makeKeyAndOrderFront:nil];
|
||||||
|
[NSApp activateIgnoringOtherApps:YES];
|
||||||
|
// Only this launcher exits. The FxPlug service has its own process/lifetime.
|
||||||
|
self.exitTimer = [NSTimer scheduledTimerWithTimeInterval:3.0 repeats:NO block:^(NSTimer *timer) {
|
||||||
|
[NSApp terminate:nil];
|
||||||
|
}];
|
||||||
|
// Re-register our own bundle. There is no paid activation or account step.
|
||||||
|
NSURL *bundleURL = NSBundle.mainBundle.bundleURL;
|
||||||
|
dispatch_async(dispatch_get_global_queue(QOS_CLASS_UTILITY, 0), ^{
|
||||||
|
OSStatus status = LSRegisterURL((__bridge CFURLRef)bundleURL, true);
|
||||||
|
if (status != noErr) NSLog(@"LaunchServices registration status: %d", (int)status);
|
||||||
|
});
|
||||||
}
|
}
|
||||||
- (void)openMotion:(id)sender {[self openApplication:@"com.apple.motionapp"];}
|
- (BOOL)applicationShouldTerminateAfterLastWindowClosed:(NSApplication *)sender {
|
||||||
- (void)openFinalCut:(id)sender {[self openApplication:@"com.apple.FinalCut"];}
|
return YES;
|
||||||
- (void)openApplication:(NSString *)identifier {
|
|
||||||
NSURL *url=[NSWorkspace.sharedWorkspace URLForApplicationWithBundleIdentifier:identifier];
|
|
||||||
if(url) [NSWorkspace.sharedWorkspace openApplicationAtURL:url configuration:NSWorkspaceOpenConfiguration.configuration completionHandler:nil];
|
|
||||||
}
|
}
|
||||||
@end
|
@end
|
||||||
@@ -17,9 +17,9 @@
|
|||||||
<key>CFBundlePackageType</key>
|
<key>CFBundlePackageType</key>
|
||||||
<string>APPL</string>
|
<string>APPL</string>
|
||||||
<key>CFBundleShortVersionString</key>
|
<key>CFBundleShortVersionString</key>
|
||||||
<string>1.1.2</string>
|
<string>1.2.0</string>
|
||||||
<key>CFBundleVersion</key>
|
<key>CFBundleVersion</key>
|
||||||
<string>13</string>
|
<string>14</string>
|
||||||
<key>LSMinimumSystemVersion</key>
|
<key>LSMinimumSystemVersion</key>
|
||||||
<string>$(MACOSX_DEPLOYMENT_TARGET)</string>
|
<string>$(MACOSX_DEPLOYMENT_TARGET)</string>
|
||||||
<key>NSHumanReadableCopyright</key>
|
<key>NSHumanReadableCopyright</key>
|
||||||
|
|||||||
二进制文件未显示。
|
之后 宽度: | 高度: | 大小: 2.9 MiB |
@@ -0,0 +1,41 @@
|
|||||||
|
{
|
||||||
|
"generator": "built-in image_gen",
|
||||||
|
"type": "generated promotional artwork, not an actual effect-output comparison",
|
||||||
|
"style": "宋式青绿古风;成年女性面部近景;金色瘦脸轮廓线与内收箭头",
|
||||||
|
"thumbnail_text": [
|
||||||
|
"大鱼人像美化",
|
||||||
|
"自动瘦脸",
|
||||||
|
"自动跟随",
|
||||||
|
"自动美颜",
|
||||||
|
"免费开源"
|
||||||
|
],
|
||||||
|
"app_card_text": [
|
||||||
|
"大鱼人像美化",
|
||||||
|
"免费开源",
|
||||||
|
"自动注册 · 无需激活码",
|
||||||
|
"启动 3 秒后自动退出",
|
||||||
|
"Final Cut Pro · Motion",
|
||||||
|
"dayu.media"
|
||||||
|
],
|
||||||
|
"files": [
|
||||||
|
{
|
||||||
|
"path": "Assets/Artwork/portrait-cover.png",
|
||||||
|
"sha256": "a346f06e7793b4e5483ccd4b3b86f34c2036bbe6bbddb7ad9cc70c47e7d014ab"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "beatygril/beatygril/Wrapper Application/Resources/LauncherInfo.png",
|
||||||
|
"sha256": "239552eeea738a32fafa70922d3cd1d4c115ff75d672574fa4c5acd941381fba"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "Templates/大鱼人像美化/large.png",
|
||||||
|
"sha256": "a02ddb255b1ae255c749bb837a759e2dee1c3b8ffb9bdc1167957761bd5a1b97"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "Templates/大鱼人像美化/small.png",
|
||||||
|
"sha256": "1552b838dd88f60dee0795e20aaca652f9c558ecefc93500e895fbff77c2a4d5"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"thumbnail_lock": "uchg on both PNGs only; installer must restore flags",
|
||||||
|
"template_sha256": "e9fa97dc14323d0daa7d3d61b06a78ba4000a70ab9f5e67ebffd750d49df1e15",
|
||||||
|
"revision": "User feedback: reduce three feature lines by approximately one third and increase negative space."
|
||||||
|
}
|
||||||
@@ -0,0 +1,5 @@
|
|||||||
|
{
|
||||||
|
"mode": "built-in image_gen",
|
||||||
|
"cover_prompt": "Use case: ads-marketing. Asset type: final 16:9 wide Chinese classical portrait beautification FxPlug product cover and very small Final Cut Pro effect thumbnail.\nEdit the supplied previous cover. Preserve its original jade-green, ivory and antique-gold Song-dynasty Chinese painting direction and the fictional adult Chinese hanfu woman identity, but redesign the composition for thumbnail legibility.\nPrimary request: CLOSE-UP FACE portrait dominates the RIGHT 52 percent; crop from the ornate updo to just below shoulders, face itself very large (about 65 percent of image height), almost frontal with slight elegant three-quarter angle, both cheeks and jaw clearly visible, natural skin texture and beautiful natural proportion. No fan, no hands, no full-body or waist framing. Gold/jade hairpin and small part of hanfu collar retain classical character. Background quiet dark jade and understated distant misty Chinese mountains; remove busy koi and flowers near lettering.\nDraw precise elegant luminous antique-gold contour curves along BOTH cheeks and jaw (following the skin outline, from below cheekbones toward chin) plus two short inward arrows on each side, unmistakably communicating automatic face slimming. Add a few restrained dotted jade landmark points and four fine rounded face-following corner marks. These overlays are design graphics only and must not distort the portrait. Avoid modern blue sci-fi HUD, grids covering eyes, and competitor likeness.\nLEFT 46 percent: extremely clear bold warm ivory Chinese display lettering, restrained gold border, generous spacing and high contrast. Text verbatim and only:\nTop compact brand line: \"大鱼人像美化\"\nThree equally prominent large feature lines stacked vertically:\n\"自动瘦脸\"\n\"自动跟随\"\n\"自动美颜\"\nSmall vermilion seal: \"免费开源\"\nSmall bottom line: \"Final Cut Pro · Motion\"\nNo tiny explanatory paragraphs and no extra slogans. Main three feature lines must be very large and remain distinguishable after downscaling to 192x108. Keep all key text and facial features inside 6 percent edge-safe margins. Refined classical poster with realistic close-up portrait, contemporary clear Chinese typography integrated into antique jade/gold aesthetics. Output a polished landscape 16:9 master image.\n",
|
||||||
|
"final_refinement_prompt": "Edit this exact cover, changing ONLY the oversized typography layout. Preserve the classical jade-green/gold Chinese backdrop, the SAME adult hanfu woman's close-up face, all natural facial proportions, gold jaw-slimming contour arrows and tracking marks, 16:9 canvas, portrait placement. User says the feature text is too large.\nReduce the three feature lines \"自动瘦脸\", \"自动跟随\", \"自动美颜\" to approximately 62 percent of their current font height and width. Make the type refined, medium-weight warm ivory/gold rather than massive heavy gold brush blocks. Set them as three compact clean evenly spaced lines centered within the left column, with substantial calm dark-jade negative space above, below and around. Entire feature text group should occupy roughly 26 percent of total canvas width and 35 percent of canvas height, not the current 40 percent width and 57 percent height.\nKeep the product name \"大鱼人像美化\" at the top left but reduce it slightly (about 15 percent), preserving visual hierarchy: product name slightly larger than each feature line. Small red \"免费开源\" seal and small \"Final Cut Pro · Motion\" footer remain at bottom left. Remove the horizontal rules between the three feature lines; keep only subtle fine gold divider beneath product name and near footer. No new text. No giant lettering. Quiet elegant premium classical poster with FACE as the main visual focus. Exact required text retained: 大鱼人像美化 / 自动瘦脸 / 自动跟随 / 自动美颜 / 免费开源 / Final Cut Pro · Motion.\n"
|
||||||
|
}
|
||||||
@@ -0,0 +1,11 @@
|
|||||||
|
{
|
||||||
|
"checked_commit": "906f770805fdbe8329c9d4ecd3594310e23bca6a",
|
||||||
|
"reachable_blobs_scanned": 356,
|
||||||
|
"secret_pattern_matches": [],
|
||||||
|
"disallowed_extensions": [],
|
||||||
|
"notes": [
|
||||||
|
"No original competitor app, metallib, model or user stock video is included.",
|
||||||
|
"NASA astronaut sample retains its source attribution.",
|
||||||
|
"Tool-generated promotional art is labeled as illustration."
|
||||||
|
]
|
||||||
|
}
|
||||||
@@ -0,0 +1,7 @@
|
|||||||
|
# 1.2.0 / build 14
|
||||||
|
|
||||||
|
本次只修改外层启动器、版本和宣传资源;PGFaceProcessor、PGBeautyRenderer、PGInspectorView、PGInspectorState 与 Metal 渲染算法保持 1.1.2 用户验收版本。缩略图以用户指定的生成宣传画为来源,不冒充真实渲染静帧。
|
||||||
|
|
||||||
|
安装分类使用当前用户已移动后的 `Effects.localized/大鱼磨皮瘦脸/大鱼人像美化`。本地磁盘 moef 与源码基线 SHA-256 均为 e9fa97dc14323d0daa7d3d61b06a78ba4000a70ab9f5e67ebffd750d49df1e15,未覆盖任何最新手改。只为 large.png / small.png 设置 uchg。
|
||||||
|
|
||||||
|
待验证:正式 Release 构建、双架构、APP 签名 / 公证 / 票据 / 安装 / 插件发现、启动器三秒退出、PKG 签名公证与有效载荷 / 缩略图锁定脚本、远端发布与文章。
|
||||||
在新工单中引用
屏蔽一个用户