feat(*): subsonic client with avfoundation playback and apple music ui

This commit is contained in:
hh committed 2026-09-22 06:44:44 +02:00
commit e5bb559d7f
93 files changed
+7517

No files matched your search

+311
View File
@@ -0,0 +1,311 @@
// !$*UTF8*$!
{
archiveVersion = 1;
classes = {
};
objectVersion = 77;
objects = {
/* Begin PBXBuildFile section */
A10000000000000000000100 /* Domain in Frameworks */ = {isa = PBXBuildFile; productRef = A10000000000000000000101 /* Domain */; };
A10000000000000000000110 /* Store in Frameworks */ = {isa = PBXBuildFile; productRef = A10000000000000000000111 /* Store */; };
A10000000000000000000120 /* Sync in Frameworks */ = {isa = PBXBuildFile; productRef = A10000000000000000000121 /* Sync */; };
A10000000000000000000130 /* Playback in Frameworks */ = {isa = PBXBuildFile; productRef = A10000000000000000000131 /* Playback */; };
A10000000000000000000140 /* SourceFake in Frameworks */ = {isa = PBXBuildFile; productRef = A10000000000000000000141 /* SourceFake */; };
A10000000000000000000150 /* SourceSubsonic in Frameworks */ = {isa = PBXBuildFile; productRef = A10000000000000000000151 /* SourceSubsonic */; };
/* End PBXBuildFile section */
/* Begin PBXFileReference section */
A10000000000000000000001 /* Amphlify.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Amphlify.app; sourceTree = BUILT_PRODUCTS_DIR; };
A10000000000000000000030 /* Base.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = Base.xcconfig; path = Config/Base.xcconfig; sourceTree = "<group>"; };
/* End PBXFileReference section */
/* Begin PBXFileSystemSynchronizedRootGroup section */
A10000000000000000000002 /* Amphlify */ = {
isa = PBXFileSystemSynchronizedRootGroup;
path = Amphlify;
sourceTree = "<group>";
};
/* End PBXFileSystemSynchronizedRootGroup section */
/* Begin PBXFrameworksBuildPhase section */
A10000000000000000000003 /* Frameworks */ = {
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
A10000000000000000000100 /* Domain in Frameworks */,
A10000000000000000000110 /* Store in Frameworks */,
A10000000000000000000120 /* Sync in Frameworks */,
A10000000000000000000130 /* Playback in Frameworks */,
A10000000000000000000140 /* SourceFake in Frameworks */,
A10000000000000000000150 /* SourceSubsonic in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXFrameworksBuildPhase section */
/* Begin PBXGroup section */
A10000000000000000000004 = {
isa = PBXGroup;
children = (
A10000000000000000000030 /* Base.xcconfig */,
A10000000000000000000002 /* Amphlify */,
A10000000000000000000005 /* Products */,
);
sourceTree = "<group>";
};
A10000000000000000000005 /* Products */ = {
isa = PBXGroup;
children = (
A10000000000000000000001 /* Amphlify.app */,
);
name = Products;
sourceTree = "<group>";
};
/* End PBXGroup section */
/* Begin PBXNativeTarget section */
A10000000000000000000006 /* Amphlify */ = {
isa = PBXNativeTarget;
buildConfigurationList = A1000000000000000000000B /* Build configuration list for PBXNativeTarget "Amphlify" */;
buildPhases = (
A10000000000000000000007 /* Sources */,
A10000000000000000000003 /* Frameworks */,
A10000000000000000000008 /* Resources */,
);
buildRules = (
);
dependencies = (
);
fileSystemSynchronizedGroups = (
A10000000000000000000002 /* Amphlify */,
);
name = Amphlify;
packageProductDependencies = (
A10000000000000000000101 /* Domain */,
A10000000000000000000111 /* Store */,
A10000000000000000000121 /* Sync */,
A10000000000000000000131 /* Playback */,
A10000000000000000000141 /* SourceFake */,
A10000000000000000000151 /* SourceSubsonic */,
);
productName = Amphlify;
productReference = A10000000000000000000001 /* Amphlify.app */;
productType = "com.apple.product-type.application";
};
/* End PBXNativeTarget section */
/* Begin PBXProject section */
A10000000000000000000009 /* Project object */ = {
isa = PBXProject;
attributes = {
BuildIndependentTargetsInParallel = 1;
LastSwiftUpdateCheck = 2700;
LastUpgradeCheck = 2700;
TargetAttributes = {
A10000000000000000000006 = {
CreatedOnToolsVersion = 27.0;
};
};
};
buildConfigurationList = A1000000000000000000000A /* Build configuration list for PBXProject "Amphlify" */;
developmentRegion = en;
hasScannedForEncodings = 0;
knownRegions = (
en,
ru,
Base,
);
mainGroup = A10000000000000000000004;
minimizedProjectReferenceProxies = 1;
packageReferences = (
A10000000000000000000200 /* XCLocalSwiftPackageReference "Packages/AmphlifyKit" */,
);
preferredProjectObjectVersion = 77;
productRefGroup = A10000000000000000000005 /* Products */;
projectDirPath = "";
projectRoot = "";
targets = (
A10000000000000000000006 /* Amphlify */,
);
};
/* End PBXProject section */
/* Begin PBXResourcesBuildPhase section */
A10000000000000000000008 /* Resources */ = {
isa = PBXResourcesBuildPhase;
buildActionMask = 2147483647;
files = (
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXResourcesBuildPhase section */
/* Begin PBXSourcesBuildPhase section */
A10000000000000000000007 /* Sources */ = {
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXSourcesBuildPhase section */
/* Begin XCBuildConfiguration section */
A1000000000000000000000C /* Debug */ = {
isa = XCBuildConfiguration;
baseConfigurationReference = A10000000000000000000030 /* Base.xcconfig */;
buildSettings = {
ALWAYS_SEARCH_USER_PATHS = NO;
CLANG_ENABLE_MODULES = YES;
CLANG_ENABLE_OBJC_ARC = YES;
COPY_PHASE_STRIP = NO;
DEBUG_INFORMATION_FORMAT = dwarf;
ENABLE_STRICT_OBJC_MSGSEND = YES;
ENABLE_TESTABILITY = YES;
ENABLE_USER_SCRIPT_SANDBOXING = YES;
GCC_OPTIMIZATION_LEVEL = 0;
IPHONEOS_DEPLOYMENT_TARGET = 26.0;
ONLY_ACTIVE_ARCH = YES;
SDKROOT = iphoneos;
SWIFT_ACTIVE_COMPILATION_CONDITIONS = "DEBUG $(inherited)";
SWIFT_OPTIMIZATION_LEVEL = "-Onone";
};
name = Debug;
};
A1000000000000000000000D /* Release */ = {
isa = XCBuildConfiguration;
baseConfigurationReference = A10000000000000000000030 /* Base.xcconfig */;
buildSettings = {
ALWAYS_SEARCH_USER_PATHS = NO;
CLANG_ENABLE_MODULES = YES;
CLANG_ENABLE_OBJC_ARC = YES;
COPY_PHASE_STRIP = NO;
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
ENABLE_NS_ASSERTIONS = NO;
ENABLE_STRICT_OBJC_MSGSEND = YES;
ENABLE_USER_SCRIPT_SANDBOXING = YES;
IPHONEOS_DEPLOYMENT_TARGET = 26.0;
SDKROOT = iphoneos;
SWIFT_COMPILATION_MODE = wholemodule;
VALIDATE_PRODUCT = YES;
};
name = Release;
};
A1000000000000000000000E /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 1;
ENABLE_PREVIEWS = YES;
GENERATE_INFOPLIST_FILE = YES;
INFOPLIST_FILE = Config/Info.plist;
INFOPLIST_KEY_CFBundleDisplayName = Amphlify;
INFOPLIST_KEY_UIApplicationSceneManifest_Generation = YES;
INFOPLIST_KEY_UILaunchScreen_Generation = YES;
INFOPLIST_KEY_UISupportedInterfaceOrientations = UIInterfaceOrientationPortrait;
LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)",
"@executable_path/Frameworks",
);
MARKETING_VERSION = 0.1;
PRODUCT_BUNDLE_IDENTIFIER = "$(BUNDLE_ID_PREFIX).amphlify";
PRODUCT_NAME = "$(TARGET_NAME)";
SWIFT_APPROACHABLE_CONCURRENCY = YES;
SWIFT_DEFAULT_ACTOR_ISOLATION = MainActor;
SWIFT_EMIT_LOC_STRINGS = YES;
SWIFT_VERSION = 6.0;
TARGETED_DEVICE_FAMILY = 1;
};
name = Debug;
};
A1000000000000000000000F /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 1;
ENABLE_PREVIEWS = YES;
GENERATE_INFOPLIST_FILE = YES;
INFOPLIST_FILE = Config/Info.plist;
INFOPLIST_KEY_CFBundleDisplayName = Amphlify;
INFOPLIST_KEY_UIApplicationSceneManifest_Generation = YES;
INFOPLIST_KEY_UILaunchScreen_Generation = YES;
INFOPLIST_KEY_UISupportedInterfaceOrientations = UIInterfaceOrientationPortrait;
LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)",
"@executable_path/Frameworks",
);
MARKETING_VERSION = 0.1;
PRODUCT_BUNDLE_IDENTIFIER = "$(BUNDLE_ID_PREFIX).amphlify";
PRODUCT_NAME = "$(TARGET_NAME)";
SWIFT_APPROACHABLE_CONCURRENCY = YES;
SWIFT_DEFAULT_ACTOR_ISOLATION = MainActor;
SWIFT_EMIT_LOC_STRINGS = YES;
SWIFT_VERSION = 6.0;
TARGETED_DEVICE_FAMILY = 1;
};
name = Release;
};
/* End XCBuildConfiguration section */
/* Begin XCConfigurationList section */
A1000000000000000000000A /* Build configuration list for PBXProject "Amphlify" */ = {
isa = XCConfigurationList;
buildConfigurations = (
A1000000000000000000000C /* Debug */,
A1000000000000000000000D /* Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
A1000000000000000000000B /* Build configuration list for PBXNativeTarget "Amphlify" */ = {
isa = XCConfigurationList;
buildConfigurations = (
A1000000000000000000000E /* Debug */,
A1000000000000000000000F /* Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
/* End XCConfigurationList section */
/* Begin XCLocalSwiftPackageReference section */
A10000000000000000000200 /* XCLocalSwiftPackageReference "Packages/AmphlifyKit" */ = {
isa = XCLocalSwiftPackageReference;
relativePath = Packages/AmphlifyKit;
};
/* End XCLocalSwiftPackageReference section */
/* Begin XCSwiftPackageProductDependency section */
A10000000000000000000101 /* Domain */ = {
isa = XCSwiftPackageProductDependency;
productName = Domain;
};
A10000000000000000000111 /* Store */ = {
isa = XCSwiftPackageProductDependency;
productName = Store;
};
A10000000000000000000121 /* Sync */ = {
isa = XCSwiftPackageProductDependency;
productName = Sync;
};
A10000000000000000000131 /* Playback */ = {
isa = XCSwiftPackageProductDependency;
productName = Playback;
};
A10000000000000000000141 /* SourceFake */ = {
isa = XCSwiftPackageProductDependency;
productName = SourceFake;
};
A10000000000000000000151 /* SourceSubsonic */ = {
isa = XCSwiftPackageProductDependency;
productName = SourceSubsonic;
};
/* End XCSwiftPackageProductDependency section */
};
rootObject = A10000000000000000000009 /* Project object */;
}
@@ -0,0 +1,24 @@
<?xml version="1.0" encoding="UTF-8"?>
<Scheme LastUpgradeVersion = "2700" version = "1.7">
<BuildAction parallelizeBuildables = "YES" buildImplicitDependencies = "YES">
<BuildActionEntries>
<BuildActionEntry buildForTesting = "YES" buildForRunning = "YES" buildForProfiling = "YES" buildForArchiving = "YES" buildForAnalyzing = "YES">
<BuildableReference BuildableIdentifier = "primary" BlueprintIdentifier = "A10000000000000000000006" BuildableName = "Amphlify.app" BlueprintName = "Amphlify" ReferencedContainer = "container:Amphlify.xcodeproj"></BuildableReference>
</BuildActionEntry>
</BuildActionEntries>
</BuildAction>
<TestAction buildConfiguration = "Debug" selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB" selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB" shouldUseLaunchSchemeArgsEnv = "YES">
</TestAction>
<LaunchAction buildConfiguration = "Debug" selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB" selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB" launchStyle = "0" useCustomWorkingDirectory = "NO" ignoresPersistentStateOnLaunch = "NO" debugDocumentVersioning = "YES" debugServiceExtension = "internal" allowLocationSimulation = "YES">
<BuildableProductRunnable runnableDebuggingMode = "0">
<BuildableReference BuildableIdentifier = "primary" BlueprintIdentifier = "A10000000000000000000006" BuildableName = "Amphlify.app" BlueprintName = "Amphlify" ReferencedContainer = "container:Amphlify.xcodeproj"></BuildableReference>
</BuildableProductRunnable>
</LaunchAction>
<ProfileAction buildConfiguration = "Release" shouldUseLaunchSchemeArgsEnv = "YES" useCustomWorkingDirectory = "NO" debugDocumentVersioning = "YES">
<BuildableProductRunnable runnableDebuggingMode = "0">
<BuildableReference BuildableIdentifier = "primary" BlueprintIdentifier = "A10000000000000000000006" BuildableName = "Amphlify.app" BlueprintName = "Amphlify" ReferencedContainer = "container:Amphlify.xcodeproj"></BuildableReference>
</BuildableProductRunnable>
</ProfileAction>
<AnalyzeAction buildConfiguration = "Debug"></AnalyzeAction>
<ArchiveAction buildConfiguration = "Release" revealArchiveInOrganizer = "YES"></ArchiveAction>
</Scheme>