So it begins
This commit is contained in:
parent
fa237fc89c
commit
451f16b25d
22 changed files with 1774 additions and 516 deletions
596
ChessPrism/ChessPrism.xcodeproj/project.pbxproj
Normal file
596
ChessPrism/ChessPrism.xcodeproj/project.pbxproj
Normal file
|
|
@ -0,0 +1,596 @@
|
||||||
|
// !$*UTF8*$!
|
||||||
|
{
|
||||||
|
archiveVersion = 1;
|
||||||
|
classes = {
|
||||||
|
};
|
||||||
|
objectVersion = 77;
|
||||||
|
objects = {
|
||||||
|
|
||||||
|
/* Begin PBXContainerItemProxy section */
|
||||||
|
C290794D2D2BB54300FC9292 /* PBXContainerItemProxy */ = {
|
||||||
|
isa = PBXContainerItemProxy;
|
||||||
|
containerPortal = C29079332D2BB54200FC9292 /* Project object */;
|
||||||
|
proxyType = 1;
|
||||||
|
remoteGlobalIDString = C290793A2D2BB54200FC9292;
|
||||||
|
remoteInfo = ChessPrism;
|
||||||
|
};
|
||||||
|
C29079572D2BB54300FC9292 /* PBXContainerItemProxy */ = {
|
||||||
|
isa = PBXContainerItemProxy;
|
||||||
|
containerPortal = C29079332D2BB54200FC9292 /* Project object */;
|
||||||
|
proxyType = 1;
|
||||||
|
remoteGlobalIDString = C290793A2D2BB54200FC9292;
|
||||||
|
remoteInfo = ChessPrism;
|
||||||
|
};
|
||||||
|
/* End PBXContainerItemProxy section */
|
||||||
|
|
||||||
|
/* Begin PBXFileReference section */
|
||||||
|
C290793B2D2BB54200FC9292 /* ChessPrism.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = ChessPrism.app; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||||
|
C290794C2D2BB54300FC9292 /* ChessPrismTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = ChessPrismTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||||
|
C29079562D2BB54300FC9292 /* ChessPrismUITests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = ChessPrismUITests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||||
|
/* End PBXFileReference section */
|
||||||
|
|
||||||
|
/* Begin PBXFileSystemSynchronizedRootGroup section */
|
||||||
|
C290793D2D2BB54200FC9292 /* ChessPrism */ = {
|
||||||
|
isa = PBXFileSystemSynchronizedRootGroup;
|
||||||
|
path = ChessPrism;
|
||||||
|
sourceTree = "<group>";
|
||||||
|
};
|
||||||
|
C290794F2D2BB54300FC9292 /* ChessPrismTests */ = {
|
||||||
|
isa = PBXFileSystemSynchronizedRootGroup;
|
||||||
|
path = ChessPrismTests;
|
||||||
|
sourceTree = "<group>";
|
||||||
|
};
|
||||||
|
C29079592D2BB54300FC9292 /* ChessPrismUITests */ = {
|
||||||
|
isa = PBXFileSystemSynchronizedRootGroup;
|
||||||
|
path = ChessPrismUITests;
|
||||||
|
sourceTree = "<group>";
|
||||||
|
};
|
||||||
|
/* End PBXFileSystemSynchronizedRootGroup section */
|
||||||
|
|
||||||
|
/* Begin PBXFrameworksBuildPhase section */
|
||||||
|
C29079382D2BB54200FC9292 /* Frameworks */ = {
|
||||||
|
isa = PBXFrameworksBuildPhase;
|
||||||
|
buildActionMask = 2147483647;
|
||||||
|
files = (
|
||||||
|
);
|
||||||
|
runOnlyForDeploymentPostprocessing = 0;
|
||||||
|
};
|
||||||
|
C29079492D2BB54300FC9292 /* Frameworks */ = {
|
||||||
|
isa = PBXFrameworksBuildPhase;
|
||||||
|
buildActionMask = 2147483647;
|
||||||
|
files = (
|
||||||
|
);
|
||||||
|
runOnlyForDeploymentPostprocessing = 0;
|
||||||
|
};
|
||||||
|
C29079532D2BB54300FC9292 /* Frameworks */ = {
|
||||||
|
isa = PBXFrameworksBuildPhase;
|
||||||
|
buildActionMask = 2147483647;
|
||||||
|
files = (
|
||||||
|
);
|
||||||
|
runOnlyForDeploymentPostprocessing = 0;
|
||||||
|
};
|
||||||
|
/* End PBXFrameworksBuildPhase section */
|
||||||
|
|
||||||
|
/* Begin PBXGroup section */
|
||||||
|
C29079322D2BB54200FC9292 = {
|
||||||
|
isa = PBXGroup;
|
||||||
|
children = (
|
||||||
|
C290793D2D2BB54200FC9292 /* ChessPrism */,
|
||||||
|
C290794F2D2BB54300FC9292 /* ChessPrismTests */,
|
||||||
|
C29079592D2BB54300FC9292 /* ChessPrismUITests */,
|
||||||
|
C290793C2D2BB54200FC9292 /* Products */,
|
||||||
|
);
|
||||||
|
sourceTree = "<group>";
|
||||||
|
};
|
||||||
|
C290793C2D2BB54200FC9292 /* Products */ = {
|
||||||
|
isa = PBXGroup;
|
||||||
|
children = (
|
||||||
|
C290793B2D2BB54200FC9292 /* ChessPrism.app */,
|
||||||
|
C290794C2D2BB54300FC9292 /* ChessPrismTests.xctest */,
|
||||||
|
C29079562D2BB54300FC9292 /* ChessPrismUITests.xctest */,
|
||||||
|
);
|
||||||
|
name = Products;
|
||||||
|
sourceTree = "<group>";
|
||||||
|
};
|
||||||
|
/* End PBXGroup section */
|
||||||
|
|
||||||
|
/* Begin PBXNativeTarget section */
|
||||||
|
C290793A2D2BB54200FC9292 /* ChessPrism */ = {
|
||||||
|
isa = PBXNativeTarget;
|
||||||
|
buildConfigurationList = C29079602D2BB54300FC9292 /* Build configuration list for PBXNativeTarget "ChessPrism" */;
|
||||||
|
buildPhases = (
|
||||||
|
C29079372D2BB54200FC9292 /* Sources */,
|
||||||
|
C29079382D2BB54200FC9292 /* Frameworks */,
|
||||||
|
C29079392D2BB54200FC9292 /* Resources */,
|
||||||
|
);
|
||||||
|
buildRules = (
|
||||||
|
);
|
||||||
|
dependencies = (
|
||||||
|
);
|
||||||
|
fileSystemSynchronizedGroups = (
|
||||||
|
C290793D2D2BB54200FC9292 /* ChessPrism */,
|
||||||
|
);
|
||||||
|
name = ChessPrism;
|
||||||
|
packageProductDependencies = (
|
||||||
|
);
|
||||||
|
productName = ChessPrism;
|
||||||
|
productReference = C290793B2D2BB54200FC9292 /* ChessPrism.app */;
|
||||||
|
productType = "com.apple.product-type.application";
|
||||||
|
};
|
||||||
|
C290794B2D2BB54300FC9292 /* ChessPrismTests */ = {
|
||||||
|
isa = PBXNativeTarget;
|
||||||
|
buildConfigurationList = C29079632D2BB54300FC9292 /* Build configuration list for PBXNativeTarget "ChessPrismTests" */;
|
||||||
|
buildPhases = (
|
||||||
|
C29079482D2BB54300FC9292 /* Sources */,
|
||||||
|
C29079492D2BB54300FC9292 /* Frameworks */,
|
||||||
|
C290794A2D2BB54300FC9292 /* Resources */,
|
||||||
|
);
|
||||||
|
buildRules = (
|
||||||
|
);
|
||||||
|
dependencies = (
|
||||||
|
C290794E2D2BB54300FC9292 /* PBXTargetDependency */,
|
||||||
|
);
|
||||||
|
fileSystemSynchronizedGroups = (
|
||||||
|
C290794F2D2BB54300FC9292 /* ChessPrismTests */,
|
||||||
|
);
|
||||||
|
name = ChessPrismTests;
|
||||||
|
packageProductDependencies = (
|
||||||
|
);
|
||||||
|
productName = ChessPrismTests;
|
||||||
|
productReference = C290794C2D2BB54300FC9292 /* ChessPrismTests.xctest */;
|
||||||
|
productType = "com.apple.product-type.bundle.unit-test";
|
||||||
|
};
|
||||||
|
C29079552D2BB54300FC9292 /* ChessPrismUITests */ = {
|
||||||
|
isa = PBXNativeTarget;
|
||||||
|
buildConfigurationList = C29079662D2BB54300FC9292 /* Build configuration list for PBXNativeTarget "ChessPrismUITests" */;
|
||||||
|
buildPhases = (
|
||||||
|
C29079522D2BB54300FC9292 /* Sources */,
|
||||||
|
C29079532D2BB54300FC9292 /* Frameworks */,
|
||||||
|
C29079542D2BB54300FC9292 /* Resources */,
|
||||||
|
);
|
||||||
|
buildRules = (
|
||||||
|
);
|
||||||
|
dependencies = (
|
||||||
|
C29079582D2BB54300FC9292 /* PBXTargetDependency */,
|
||||||
|
);
|
||||||
|
fileSystemSynchronizedGroups = (
|
||||||
|
C29079592D2BB54300FC9292 /* ChessPrismUITests */,
|
||||||
|
);
|
||||||
|
name = ChessPrismUITests;
|
||||||
|
packageProductDependencies = (
|
||||||
|
);
|
||||||
|
productName = ChessPrismUITests;
|
||||||
|
productReference = C29079562D2BB54300FC9292 /* ChessPrismUITests.xctest */;
|
||||||
|
productType = "com.apple.product-type.bundle.ui-testing";
|
||||||
|
};
|
||||||
|
/* End PBXNativeTarget section */
|
||||||
|
|
||||||
|
/* Begin PBXProject section */
|
||||||
|
C29079332D2BB54200FC9292 /* Project object */ = {
|
||||||
|
isa = PBXProject;
|
||||||
|
attributes = {
|
||||||
|
BuildIndependentTargetsInParallel = 1;
|
||||||
|
LastSwiftUpdateCheck = 1620;
|
||||||
|
LastUpgradeCheck = 1620;
|
||||||
|
TargetAttributes = {
|
||||||
|
C290793A2D2BB54200FC9292 = {
|
||||||
|
CreatedOnToolsVersion = 16.2;
|
||||||
|
};
|
||||||
|
C290794B2D2BB54300FC9292 = {
|
||||||
|
CreatedOnToolsVersion = 16.2;
|
||||||
|
TestTargetID = C290793A2D2BB54200FC9292;
|
||||||
|
};
|
||||||
|
C29079552D2BB54300FC9292 = {
|
||||||
|
CreatedOnToolsVersion = 16.2;
|
||||||
|
TestTargetID = C290793A2D2BB54200FC9292;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
buildConfigurationList = C29079362D2BB54200FC9292 /* Build configuration list for PBXProject "ChessPrism" */;
|
||||||
|
developmentRegion = en;
|
||||||
|
hasScannedForEncodings = 0;
|
||||||
|
knownRegions = (
|
||||||
|
en,
|
||||||
|
Base,
|
||||||
|
);
|
||||||
|
mainGroup = C29079322D2BB54200FC9292;
|
||||||
|
minimizedProjectReferenceProxies = 1;
|
||||||
|
preferredProjectObjectVersion = 77;
|
||||||
|
productRefGroup = C290793C2D2BB54200FC9292 /* Products */;
|
||||||
|
projectDirPath = "";
|
||||||
|
projectRoot = "";
|
||||||
|
targets = (
|
||||||
|
C290793A2D2BB54200FC9292 /* ChessPrism */,
|
||||||
|
C290794B2D2BB54300FC9292 /* ChessPrismTests */,
|
||||||
|
C29079552D2BB54300FC9292 /* ChessPrismUITests */,
|
||||||
|
);
|
||||||
|
};
|
||||||
|
/* End PBXProject section */
|
||||||
|
|
||||||
|
/* Begin PBXResourcesBuildPhase section */
|
||||||
|
C29079392D2BB54200FC9292 /* Resources */ = {
|
||||||
|
isa = PBXResourcesBuildPhase;
|
||||||
|
buildActionMask = 2147483647;
|
||||||
|
files = (
|
||||||
|
);
|
||||||
|
runOnlyForDeploymentPostprocessing = 0;
|
||||||
|
};
|
||||||
|
C290794A2D2BB54300FC9292 /* Resources */ = {
|
||||||
|
isa = PBXResourcesBuildPhase;
|
||||||
|
buildActionMask = 2147483647;
|
||||||
|
files = (
|
||||||
|
);
|
||||||
|
runOnlyForDeploymentPostprocessing = 0;
|
||||||
|
};
|
||||||
|
C29079542D2BB54300FC9292 /* Resources */ = {
|
||||||
|
isa = PBXResourcesBuildPhase;
|
||||||
|
buildActionMask = 2147483647;
|
||||||
|
files = (
|
||||||
|
);
|
||||||
|
runOnlyForDeploymentPostprocessing = 0;
|
||||||
|
};
|
||||||
|
/* End PBXResourcesBuildPhase section */
|
||||||
|
|
||||||
|
/* Begin PBXSourcesBuildPhase section */
|
||||||
|
C29079372D2BB54200FC9292 /* Sources */ = {
|
||||||
|
isa = PBXSourcesBuildPhase;
|
||||||
|
buildActionMask = 2147483647;
|
||||||
|
files = (
|
||||||
|
);
|
||||||
|
runOnlyForDeploymentPostprocessing = 0;
|
||||||
|
};
|
||||||
|
C29079482D2BB54300FC9292 /* Sources */ = {
|
||||||
|
isa = PBXSourcesBuildPhase;
|
||||||
|
buildActionMask = 2147483647;
|
||||||
|
files = (
|
||||||
|
);
|
||||||
|
runOnlyForDeploymentPostprocessing = 0;
|
||||||
|
};
|
||||||
|
C29079522D2BB54300FC9292 /* Sources */ = {
|
||||||
|
isa = PBXSourcesBuildPhase;
|
||||||
|
buildActionMask = 2147483647;
|
||||||
|
files = (
|
||||||
|
);
|
||||||
|
runOnlyForDeploymentPostprocessing = 0;
|
||||||
|
};
|
||||||
|
/* End PBXSourcesBuildPhase section */
|
||||||
|
|
||||||
|
/* Begin PBXTargetDependency section */
|
||||||
|
C290794E2D2BB54300FC9292 /* PBXTargetDependency */ = {
|
||||||
|
isa = PBXTargetDependency;
|
||||||
|
target = C290793A2D2BB54200FC9292 /* ChessPrism */;
|
||||||
|
targetProxy = C290794D2D2BB54300FC9292 /* PBXContainerItemProxy */;
|
||||||
|
};
|
||||||
|
C29079582D2BB54300FC9292 /* PBXTargetDependency */ = {
|
||||||
|
isa = PBXTargetDependency;
|
||||||
|
target = C290793A2D2BB54200FC9292 /* ChessPrism */;
|
||||||
|
targetProxy = C29079572D2BB54300FC9292 /* PBXContainerItemProxy */;
|
||||||
|
};
|
||||||
|
/* End PBXTargetDependency section */
|
||||||
|
|
||||||
|
/* Begin XCBuildConfiguration section */
|
||||||
|
C290795E2D2BB54300FC9292 /* Debug */ = {
|
||||||
|
isa = XCBuildConfiguration;
|
||||||
|
buildSettings = {
|
||||||
|
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||||
|
ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES;
|
||||||
|
CLANG_ANALYZER_NONNULL = YES;
|
||||||
|
CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
|
||||||
|
CLANG_CXX_LANGUAGE_STANDARD = "gnu++20";
|
||||||
|
CLANG_ENABLE_MODULES = YES;
|
||||||
|
CLANG_ENABLE_OBJC_ARC = YES;
|
||||||
|
CLANG_ENABLE_OBJC_WEAK = YES;
|
||||||
|
CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
|
||||||
|
CLANG_WARN_BOOL_CONVERSION = YES;
|
||||||
|
CLANG_WARN_COMMA = YES;
|
||||||
|
CLANG_WARN_CONSTANT_CONVERSION = YES;
|
||||||
|
CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
|
||||||
|
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
|
||||||
|
CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
|
||||||
|
CLANG_WARN_EMPTY_BODY = YES;
|
||||||
|
CLANG_WARN_ENUM_CONVERSION = YES;
|
||||||
|
CLANG_WARN_INFINITE_RECURSION = YES;
|
||||||
|
CLANG_WARN_INT_CONVERSION = YES;
|
||||||
|
CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
|
||||||
|
CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
|
||||||
|
CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
|
||||||
|
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
|
||||||
|
CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
|
||||||
|
CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
|
||||||
|
CLANG_WARN_STRICT_PROTOTYPES = YES;
|
||||||
|
CLANG_WARN_SUSPICIOUS_MOVE = YES;
|
||||||
|
CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
|
||||||
|
CLANG_WARN_UNREACHABLE_CODE = YES;
|
||||||
|
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
|
||||||
|
COPY_PHASE_STRIP = NO;
|
||||||
|
DEBUG_INFORMATION_FORMAT = dwarf;
|
||||||
|
ENABLE_STRICT_OBJC_MSGSEND = YES;
|
||||||
|
ENABLE_TESTABILITY = YES;
|
||||||
|
ENABLE_USER_SCRIPT_SANDBOXING = YES;
|
||||||
|
GCC_C_LANGUAGE_STANDARD = gnu17;
|
||||||
|
GCC_DYNAMIC_NO_PIC = NO;
|
||||||
|
GCC_NO_COMMON_BLOCKS = YES;
|
||||||
|
GCC_OPTIMIZATION_LEVEL = 0;
|
||||||
|
GCC_PREPROCESSOR_DEFINITIONS = (
|
||||||
|
"DEBUG=1",
|
||||||
|
"$(inherited)",
|
||||||
|
);
|
||||||
|
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
|
||||||
|
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
|
||||||
|
GCC_WARN_UNDECLARED_SELECTOR = YES;
|
||||||
|
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
|
||||||
|
GCC_WARN_UNUSED_FUNCTION = YES;
|
||||||
|
GCC_WARN_UNUSED_VARIABLE = YES;
|
||||||
|
LOCALIZATION_PREFERS_STRING_CATALOGS = YES;
|
||||||
|
MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;
|
||||||
|
MTL_FAST_MATH = YES;
|
||||||
|
ONLY_ACTIVE_ARCH = YES;
|
||||||
|
SWIFT_ACTIVE_COMPILATION_CONDITIONS = "DEBUG $(inherited)";
|
||||||
|
SWIFT_OPTIMIZATION_LEVEL = "-Onone";
|
||||||
|
};
|
||||||
|
name = Debug;
|
||||||
|
};
|
||||||
|
C290795F2D2BB54300FC9292 /* Release */ = {
|
||||||
|
isa = XCBuildConfiguration;
|
||||||
|
buildSettings = {
|
||||||
|
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||||
|
ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES;
|
||||||
|
CLANG_ANALYZER_NONNULL = YES;
|
||||||
|
CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
|
||||||
|
CLANG_CXX_LANGUAGE_STANDARD = "gnu++20";
|
||||||
|
CLANG_ENABLE_MODULES = YES;
|
||||||
|
CLANG_ENABLE_OBJC_ARC = YES;
|
||||||
|
CLANG_ENABLE_OBJC_WEAK = YES;
|
||||||
|
CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
|
||||||
|
CLANG_WARN_BOOL_CONVERSION = YES;
|
||||||
|
CLANG_WARN_COMMA = YES;
|
||||||
|
CLANG_WARN_CONSTANT_CONVERSION = YES;
|
||||||
|
CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
|
||||||
|
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
|
||||||
|
CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
|
||||||
|
CLANG_WARN_EMPTY_BODY = YES;
|
||||||
|
CLANG_WARN_ENUM_CONVERSION = YES;
|
||||||
|
CLANG_WARN_INFINITE_RECURSION = YES;
|
||||||
|
CLANG_WARN_INT_CONVERSION = YES;
|
||||||
|
CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
|
||||||
|
CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
|
||||||
|
CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
|
||||||
|
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
|
||||||
|
CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
|
||||||
|
CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
|
||||||
|
CLANG_WARN_STRICT_PROTOTYPES = YES;
|
||||||
|
CLANG_WARN_SUSPICIOUS_MOVE = YES;
|
||||||
|
CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
|
||||||
|
CLANG_WARN_UNREACHABLE_CODE = YES;
|
||||||
|
CLANG_WARN__DUPLICATE_METHOD_MATCH = 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;
|
||||||
|
GCC_C_LANGUAGE_STANDARD = gnu17;
|
||||||
|
GCC_NO_COMMON_BLOCKS = YES;
|
||||||
|
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
|
||||||
|
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
|
||||||
|
GCC_WARN_UNDECLARED_SELECTOR = YES;
|
||||||
|
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
|
||||||
|
GCC_WARN_UNUSED_FUNCTION = YES;
|
||||||
|
GCC_WARN_UNUSED_VARIABLE = YES;
|
||||||
|
LOCALIZATION_PREFERS_STRING_CATALOGS = YES;
|
||||||
|
MTL_ENABLE_DEBUG_INFO = NO;
|
||||||
|
MTL_FAST_MATH = YES;
|
||||||
|
SWIFT_COMPILATION_MODE = wholemodule;
|
||||||
|
};
|
||||||
|
name = Release;
|
||||||
|
};
|
||||||
|
C29079612D2BB54300FC9292 /* Debug */ = {
|
||||||
|
isa = XCBuildConfiguration;
|
||||||
|
buildSettings = {
|
||||||
|
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
|
||||||
|
ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
|
||||||
|
CODE_SIGN_ENTITLEMENTS = ChessPrism/ChessPrism.entitlements;
|
||||||
|
CODE_SIGN_STYLE = Automatic;
|
||||||
|
CURRENT_PROJECT_VERSION = 1;
|
||||||
|
DEVELOPMENT_ASSET_PATHS = "\"ChessPrism/Preview Content\"";
|
||||||
|
DEVELOPMENT_TEAM = RJHWWWSF6Q;
|
||||||
|
ENABLE_HARDENED_RUNTIME = YES;
|
||||||
|
ENABLE_PREVIEWS = YES;
|
||||||
|
GENERATE_INFOPLIST_FILE = YES;
|
||||||
|
"INFOPLIST_KEY_UIApplicationSceneManifest_Generation[sdk=iphoneos*]" = YES;
|
||||||
|
"INFOPLIST_KEY_UIApplicationSceneManifest_Generation[sdk=iphonesimulator*]" = YES;
|
||||||
|
"INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents[sdk=iphoneos*]" = YES;
|
||||||
|
"INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents[sdk=iphonesimulator*]" = YES;
|
||||||
|
"INFOPLIST_KEY_UILaunchScreen_Generation[sdk=iphoneos*]" = YES;
|
||||||
|
"INFOPLIST_KEY_UILaunchScreen_Generation[sdk=iphonesimulator*]" = YES;
|
||||||
|
"INFOPLIST_KEY_UIStatusBarStyle[sdk=iphoneos*]" = UIStatusBarStyleDefault;
|
||||||
|
"INFOPLIST_KEY_UIStatusBarStyle[sdk=iphonesimulator*]" = UIStatusBarStyleDefault;
|
||||||
|
INFOPLIST_KEY_UISupportedInterfaceOrientations_iPad = "UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight";
|
||||||
|
INFOPLIST_KEY_UISupportedInterfaceOrientations_iPhone = "UIInterfaceOrientationPortrait UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight";
|
||||||
|
IPHONEOS_DEPLOYMENT_TARGET = 18.2;
|
||||||
|
LD_RUNPATH_SEARCH_PATHS = "@executable_path/Frameworks";
|
||||||
|
"LD_RUNPATH_SEARCH_PATHS[sdk=macosx*]" = "@executable_path/../Frameworks";
|
||||||
|
MACOSX_DEPLOYMENT_TARGET = 15.2;
|
||||||
|
MARKETING_VERSION = 1.0;
|
||||||
|
PRODUCT_BUNDLE_IDENTIFIER = com.chessprism.ChessPrism;
|
||||||
|
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||||
|
SDKROOT = auto;
|
||||||
|
SUPPORTED_PLATFORMS = "iphoneos iphonesimulator macosx xros xrsimulator";
|
||||||
|
SWIFT_EMIT_LOC_STRINGS = YES;
|
||||||
|
SWIFT_VERSION = 5.0;
|
||||||
|
TARGETED_DEVICE_FAMILY = "1,2,7";
|
||||||
|
XROS_DEPLOYMENT_TARGET = 2.2;
|
||||||
|
};
|
||||||
|
name = Debug;
|
||||||
|
};
|
||||||
|
C29079622D2BB54300FC9292 /* Release */ = {
|
||||||
|
isa = XCBuildConfiguration;
|
||||||
|
buildSettings = {
|
||||||
|
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
|
||||||
|
ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
|
||||||
|
CODE_SIGN_ENTITLEMENTS = ChessPrism/ChessPrism.entitlements;
|
||||||
|
CODE_SIGN_STYLE = Automatic;
|
||||||
|
CURRENT_PROJECT_VERSION = 1;
|
||||||
|
DEVELOPMENT_ASSET_PATHS = "\"ChessPrism/Preview Content\"";
|
||||||
|
DEVELOPMENT_TEAM = RJHWWWSF6Q;
|
||||||
|
ENABLE_HARDENED_RUNTIME = YES;
|
||||||
|
ENABLE_PREVIEWS = YES;
|
||||||
|
GENERATE_INFOPLIST_FILE = YES;
|
||||||
|
"INFOPLIST_KEY_UIApplicationSceneManifest_Generation[sdk=iphoneos*]" = YES;
|
||||||
|
"INFOPLIST_KEY_UIApplicationSceneManifest_Generation[sdk=iphonesimulator*]" = YES;
|
||||||
|
"INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents[sdk=iphoneos*]" = YES;
|
||||||
|
"INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents[sdk=iphonesimulator*]" = YES;
|
||||||
|
"INFOPLIST_KEY_UILaunchScreen_Generation[sdk=iphoneos*]" = YES;
|
||||||
|
"INFOPLIST_KEY_UILaunchScreen_Generation[sdk=iphonesimulator*]" = YES;
|
||||||
|
"INFOPLIST_KEY_UIStatusBarStyle[sdk=iphoneos*]" = UIStatusBarStyleDefault;
|
||||||
|
"INFOPLIST_KEY_UIStatusBarStyle[sdk=iphonesimulator*]" = UIStatusBarStyleDefault;
|
||||||
|
INFOPLIST_KEY_UISupportedInterfaceOrientations_iPad = "UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight";
|
||||||
|
INFOPLIST_KEY_UISupportedInterfaceOrientations_iPhone = "UIInterfaceOrientationPortrait UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight";
|
||||||
|
IPHONEOS_DEPLOYMENT_TARGET = 18.2;
|
||||||
|
LD_RUNPATH_SEARCH_PATHS = "@executable_path/Frameworks";
|
||||||
|
"LD_RUNPATH_SEARCH_PATHS[sdk=macosx*]" = "@executable_path/../Frameworks";
|
||||||
|
MACOSX_DEPLOYMENT_TARGET = 15.2;
|
||||||
|
MARKETING_VERSION = 1.0;
|
||||||
|
PRODUCT_BUNDLE_IDENTIFIER = com.chessprism.ChessPrism;
|
||||||
|
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||||
|
SDKROOT = auto;
|
||||||
|
SUPPORTED_PLATFORMS = "iphoneos iphonesimulator macosx xros xrsimulator";
|
||||||
|
SWIFT_EMIT_LOC_STRINGS = YES;
|
||||||
|
SWIFT_VERSION = 5.0;
|
||||||
|
TARGETED_DEVICE_FAMILY = "1,2,7";
|
||||||
|
XROS_DEPLOYMENT_TARGET = 2.2;
|
||||||
|
};
|
||||||
|
name = Release;
|
||||||
|
};
|
||||||
|
C29079642D2BB54300FC9292 /* Debug */ = {
|
||||||
|
isa = XCBuildConfiguration;
|
||||||
|
buildSettings = {
|
||||||
|
BUNDLE_LOADER = "$(TEST_HOST)";
|
||||||
|
CODE_SIGN_STYLE = Automatic;
|
||||||
|
CURRENT_PROJECT_VERSION = 1;
|
||||||
|
DEVELOPMENT_TEAM = RJHWWWSF6Q;
|
||||||
|
GENERATE_INFOPLIST_FILE = YES;
|
||||||
|
IPHONEOS_DEPLOYMENT_TARGET = 18.2;
|
||||||
|
MACOSX_DEPLOYMENT_TARGET = 15.2;
|
||||||
|
MARKETING_VERSION = 1.0;
|
||||||
|
PRODUCT_BUNDLE_IDENTIFIER = com.chessprism.ChessPrismTests;
|
||||||
|
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||||
|
SDKROOT = auto;
|
||||||
|
SUPPORTED_PLATFORMS = "iphoneos iphonesimulator macosx xros xrsimulator";
|
||||||
|
SWIFT_EMIT_LOC_STRINGS = NO;
|
||||||
|
SWIFT_VERSION = 5.0;
|
||||||
|
TARGETED_DEVICE_FAMILY = "1,2,7";
|
||||||
|
TEST_HOST = "$(BUILT_PRODUCTS_DIR)/ChessPrism.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/ChessPrism";
|
||||||
|
XROS_DEPLOYMENT_TARGET = 2.2;
|
||||||
|
};
|
||||||
|
name = Debug;
|
||||||
|
};
|
||||||
|
C29079652D2BB54300FC9292 /* Release */ = {
|
||||||
|
isa = XCBuildConfiguration;
|
||||||
|
buildSettings = {
|
||||||
|
BUNDLE_LOADER = "$(TEST_HOST)";
|
||||||
|
CODE_SIGN_STYLE = Automatic;
|
||||||
|
CURRENT_PROJECT_VERSION = 1;
|
||||||
|
DEVELOPMENT_TEAM = RJHWWWSF6Q;
|
||||||
|
GENERATE_INFOPLIST_FILE = YES;
|
||||||
|
IPHONEOS_DEPLOYMENT_TARGET = 18.2;
|
||||||
|
MACOSX_DEPLOYMENT_TARGET = 15.2;
|
||||||
|
MARKETING_VERSION = 1.0;
|
||||||
|
PRODUCT_BUNDLE_IDENTIFIER = com.chessprism.ChessPrismTests;
|
||||||
|
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||||
|
SDKROOT = auto;
|
||||||
|
SUPPORTED_PLATFORMS = "iphoneos iphonesimulator macosx xros xrsimulator";
|
||||||
|
SWIFT_EMIT_LOC_STRINGS = NO;
|
||||||
|
SWIFT_VERSION = 5.0;
|
||||||
|
TARGETED_DEVICE_FAMILY = "1,2,7";
|
||||||
|
TEST_HOST = "$(BUILT_PRODUCTS_DIR)/ChessPrism.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/ChessPrism";
|
||||||
|
XROS_DEPLOYMENT_TARGET = 2.2;
|
||||||
|
};
|
||||||
|
name = Release;
|
||||||
|
};
|
||||||
|
C29079672D2BB54300FC9292 /* Debug */ = {
|
||||||
|
isa = XCBuildConfiguration;
|
||||||
|
buildSettings = {
|
||||||
|
CODE_SIGN_STYLE = Automatic;
|
||||||
|
CURRENT_PROJECT_VERSION = 1;
|
||||||
|
DEVELOPMENT_TEAM = RJHWWWSF6Q;
|
||||||
|
GENERATE_INFOPLIST_FILE = YES;
|
||||||
|
IPHONEOS_DEPLOYMENT_TARGET = 18.2;
|
||||||
|
MACOSX_DEPLOYMENT_TARGET = 15.2;
|
||||||
|
MARKETING_VERSION = 1.0;
|
||||||
|
PRODUCT_BUNDLE_IDENTIFIER = com.chessprism.ChessPrismUITests;
|
||||||
|
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||||
|
SDKROOT = auto;
|
||||||
|
SUPPORTED_PLATFORMS = "iphoneos iphonesimulator macosx xros xrsimulator";
|
||||||
|
SWIFT_EMIT_LOC_STRINGS = NO;
|
||||||
|
SWIFT_VERSION = 5.0;
|
||||||
|
TARGETED_DEVICE_FAMILY = "1,2,7";
|
||||||
|
TEST_TARGET_NAME = ChessPrism;
|
||||||
|
XROS_DEPLOYMENT_TARGET = 2.2;
|
||||||
|
};
|
||||||
|
name = Debug;
|
||||||
|
};
|
||||||
|
C29079682D2BB54300FC9292 /* Release */ = {
|
||||||
|
isa = XCBuildConfiguration;
|
||||||
|
buildSettings = {
|
||||||
|
CODE_SIGN_STYLE = Automatic;
|
||||||
|
CURRENT_PROJECT_VERSION = 1;
|
||||||
|
DEVELOPMENT_TEAM = RJHWWWSF6Q;
|
||||||
|
GENERATE_INFOPLIST_FILE = YES;
|
||||||
|
IPHONEOS_DEPLOYMENT_TARGET = 18.2;
|
||||||
|
MACOSX_DEPLOYMENT_TARGET = 15.2;
|
||||||
|
MARKETING_VERSION = 1.0;
|
||||||
|
PRODUCT_BUNDLE_IDENTIFIER = com.chessprism.ChessPrismUITests;
|
||||||
|
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||||
|
SDKROOT = auto;
|
||||||
|
SUPPORTED_PLATFORMS = "iphoneos iphonesimulator macosx xros xrsimulator";
|
||||||
|
SWIFT_EMIT_LOC_STRINGS = NO;
|
||||||
|
SWIFT_VERSION = 5.0;
|
||||||
|
TARGETED_DEVICE_FAMILY = "1,2,7";
|
||||||
|
TEST_TARGET_NAME = ChessPrism;
|
||||||
|
XROS_DEPLOYMENT_TARGET = 2.2;
|
||||||
|
};
|
||||||
|
name = Release;
|
||||||
|
};
|
||||||
|
/* End XCBuildConfiguration section */
|
||||||
|
|
||||||
|
/* Begin XCConfigurationList section */
|
||||||
|
C29079362D2BB54200FC9292 /* Build configuration list for PBXProject "ChessPrism" */ = {
|
||||||
|
isa = XCConfigurationList;
|
||||||
|
buildConfigurations = (
|
||||||
|
C290795E2D2BB54300FC9292 /* Debug */,
|
||||||
|
C290795F2D2BB54300FC9292 /* Release */,
|
||||||
|
);
|
||||||
|
defaultConfigurationIsVisible = 0;
|
||||||
|
defaultConfigurationName = Release;
|
||||||
|
};
|
||||||
|
C29079602D2BB54300FC9292 /* Build configuration list for PBXNativeTarget "ChessPrism" */ = {
|
||||||
|
isa = XCConfigurationList;
|
||||||
|
buildConfigurations = (
|
||||||
|
C29079612D2BB54300FC9292 /* Debug */,
|
||||||
|
C29079622D2BB54300FC9292 /* Release */,
|
||||||
|
);
|
||||||
|
defaultConfigurationIsVisible = 0;
|
||||||
|
defaultConfigurationName = Release;
|
||||||
|
};
|
||||||
|
C29079632D2BB54300FC9292 /* Build configuration list for PBXNativeTarget "ChessPrismTests" */ = {
|
||||||
|
isa = XCConfigurationList;
|
||||||
|
buildConfigurations = (
|
||||||
|
C29079642D2BB54300FC9292 /* Debug */,
|
||||||
|
C29079652D2BB54300FC9292 /* Release */,
|
||||||
|
);
|
||||||
|
defaultConfigurationIsVisible = 0;
|
||||||
|
defaultConfigurationName = Release;
|
||||||
|
};
|
||||||
|
C29079662D2BB54300FC9292 /* Build configuration list for PBXNativeTarget "ChessPrismUITests" */ = {
|
||||||
|
isa = XCConfigurationList;
|
||||||
|
buildConfigurations = (
|
||||||
|
C29079672D2BB54300FC9292 /* Debug */,
|
||||||
|
C29079682D2BB54300FC9292 /* Release */,
|
||||||
|
);
|
||||||
|
defaultConfigurationIsVisible = 0;
|
||||||
|
defaultConfigurationName = Release;
|
||||||
|
};
|
||||||
|
/* End XCConfigurationList section */
|
||||||
|
};
|
||||||
|
rootObject = C29079332D2BB54200FC9292 /* Project object */;
|
||||||
|
}
|
||||||
7
ChessPrism/ChessPrism.xcodeproj/project.xcworkspace/contents.xcworkspacedata
generated
Normal file
7
ChessPrism/ChessPrism.xcodeproj/project.xcworkspace/contents.xcworkspacedata
generated
Normal file
|
|
@ -0,0 +1,7 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<Workspace
|
||||||
|
version = "1.0">
|
||||||
|
<FileRef
|
||||||
|
location = "self:">
|
||||||
|
</FileRef>
|
||||||
|
</Workspace>
|
||||||
|
|
@ -0,0 +1,11 @@
|
||||||
|
{
|
||||||
|
"colors" : [
|
||||||
|
{
|
||||||
|
"idiom" : "universal"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"info" : {
|
||||||
|
"author" : "xcode",
|
||||||
|
"version" : 1
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,85 @@
|
||||||
|
{
|
||||||
|
"images" : [
|
||||||
|
{
|
||||||
|
"idiom" : "universal",
|
||||||
|
"platform" : "ios",
|
||||||
|
"size" : "1024x1024"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"appearances" : [
|
||||||
|
{
|
||||||
|
"appearance" : "luminosity",
|
||||||
|
"value" : "dark"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"idiom" : "universal",
|
||||||
|
"platform" : "ios",
|
||||||
|
"size" : "1024x1024"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"appearances" : [
|
||||||
|
{
|
||||||
|
"appearance" : "luminosity",
|
||||||
|
"value" : "tinted"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"idiom" : "universal",
|
||||||
|
"platform" : "ios",
|
||||||
|
"size" : "1024x1024"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"idiom" : "mac",
|
||||||
|
"scale" : "1x",
|
||||||
|
"size" : "16x16"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"idiom" : "mac",
|
||||||
|
"scale" : "2x",
|
||||||
|
"size" : "16x16"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"idiom" : "mac",
|
||||||
|
"scale" : "1x",
|
||||||
|
"size" : "32x32"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"idiom" : "mac",
|
||||||
|
"scale" : "2x",
|
||||||
|
"size" : "32x32"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"idiom" : "mac",
|
||||||
|
"scale" : "1x",
|
||||||
|
"size" : "128x128"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"idiom" : "mac",
|
||||||
|
"scale" : "2x",
|
||||||
|
"size" : "128x128"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"idiom" : "mac",
|
||||||
|
"scale" : "1x",
|
||||||
|
"size" : "256x256"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"idiom" : "mac",
|
||||||
|
"scale" : "2x",
|
||||||
|
"size" : "256x256"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"idiom" : "mac",
|
||||||
|
"scale" : "1x",
|
||||||
|
"size" : "512x512"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"idiom" : "mac",
|
||||||
|
"scale" : "2x",
|
||||||
|
"size" : "512x512"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"info" : {
|
||||||
|
"author" : "xcode",
|
||||||
|
"version" : 1
|
||||||
|
}
|
||||||
|
}
|
||||||
6
ChessPrism/ChessPrism/Assets.xcassets/Contents.json
Normal file
6
ChessPrism/ChessPrism/Assets.xcassets/Contents.json
Normal file
|
|
@ -0,0 +1,6 @@
|
||||||
|
{
|
||||||
|
"info" : {
|
||||||
|
"author" : "xcode",
|
||||||
|
"version" : 1
|
||||||
|
}
|
||||||
|
}
|
||||||
10
ChessPrism/ChessPrism/ChessPrism.entitlements
Normal file
10
ChessPrism/ChessPrism/ChessPrism.entitlements
Normal file
|
|
@ -0,0 +1,10 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||||
|
<plist version="1.0">
|
||||||
|
<dict>
|
||||||
|
<key>com.apple.security.app-sandbox</key>
|
||||||
|
<true/>
|
||||||
|
<key>com.apple.security.files.user-selected.read-only</key>
|
||||||
|
<true/>
|
||||||
|
</dict>
|
||||||
|
</plist>
|
||||||
17
ChessPrism/ChessPrism/ChessPrismApp.swift
Normal file
17
ChessPrism/ChessPrism/ChessPrismApp.swift
Normal file
|
|
@ -0,0 +1,17 @@
|
||||||
|
//
|
||||||
|
// ChessPrismApp.swift
|
||||||
|
// ChessPrism
|
||||||
|
//
|
||||||
|
// Created by Chris Haulmark on 1/6/25.
|
||||||
|
//
|
||||||
|
|
||||||
|
import SwiftUI
|
||||||
|
|
||||||
|
@main
|
||||||
|
struct ChessPrismApp: App {
|
||||||
|
var body: some Scene {
|
||||||
|
WindowGroup {
|
||||||
|
ContentView()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
24
ChessPrism/ChessPrism/ContentView.swift
Normal file
24
ChessPrism/ChessPrism/ContentView.swift
Normal file
|
|
@ -0,0 +1,24 @@
|
||||||
|
//
|
||||||
|
// ContentView.swift
|
||||||
|
// ChessPrism
|
||||||
|
//
|
||||||
|
// Created by Chris Haulmark on 1/6/25.
|
||||||
|
//
|
||||||
|
|
||||||
|
import SwiftUI
|
||||||
|
|
||||||
|
struct ContentView: View {
|
||||||
|
var body: some View {
|
||||||
|
VStack {
|
||||||
|
Image(systemName: "globe")
|
||||||
|
.imageScale(.large)
|
||||||
|
.foregroundStyle(.tint)
|
||||||
|
Text("Hello, world!")
|
||||||
|
}
|
||||||
|
.padding()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#Preview {
|
||||||
|
ContentView()
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,6 @@
|
||||||
|
{
|
||||||
|
"info" : {
|
||||||
|
"author" : "xcode",
|
||||||
|
"version" : 1
|
||||||
|
}
|
||||||
|
}
|
||||||
35
ChessPrism/ChessPrismTests/ChessPrismTests.swift
Normal file
35
ChessPrism/ChessPrismTests/ChessPrismTests.swift
Normal file
|
|
@ -0,0 +1,35 @@
|
||||||
|
//
|
||||||
|
// ChessPrismTests.swift
|
||||||
|
// ChessPrismTests
|
||||||
|
//
|
||||||
|
// Created by Chris Haulmark on 1/6/25.
|
||||||
|
//
|
||||||
|
|
||||||
|
import XCTest
|
||||||
|
|
||||||
|
final class ChessPrismTests: XCTestCase {
|
||||||
|
|
||||||
|
override func setUpWithError() throws {
|
||||||
|
// Put setup code here. This method is called before the invocation of each test method in the class.
|
||||||
|
}
|
||||||
|
|
||||||
|
override func tearDownWithError() throws {
|
||||||
|
// Put teardown code here. This method is called after the invocation of each test method in the class.
|
||||||
|
}
|
||||||
|
|
||||||
|
func testExample() throws {
|
||||||
|
// This is an example of a functional test case.
|
||||||
|
// Use XCTAssert and related functions to verify your tests produce the correct results.
|
||||||
|
// Any test you write for XCTest can be annotated as throws and async.
|
||||||
|
// Mark your test throws to produce an unexpected failure when your test encounters an uncaught error.
|
||||||
|
// Mark your test async to allow awaiting for asynchronous code to complete. Check the results with assertions afterwards.
|
||||||
|
}
|
||||||
|
|
||||||
|
func testPerformanceExample() throws {
|
||||||
|
// This is an example of a performance test case.
|
||||||
|
measure {
|
||||||
|
// Put the code you want to measure the time of here.
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
43
ChessPrism/ChessPrismUITests/ChessPrismUITests.swift
Normal file
43
ChessPrism/ChessPrismUITests/ChessPrismUITests.swift
Normal file
|
|
@ -0,0 +1,43 @@
|
||||||
|
//
|
||||||
|
// ChessPrismUITests.swift
|
||||||
|
// ChessPrismUITests
|
||||||
|
//
|
||||||
|
// Created by Chris Haulmark on 1/6/25.
|
||||||
|
//
|
||||||
|
|
||||||
|
import XCTest
|
||||||
|
|
||||||
|
final class ChessPrismUITests: XCTestCase {
|
||||||
|
|
||||||
|
override func setUpWithError() throws {
|
||||||
|
// Put setup code here. This method is called before the invocation of each test method in the class.
|
||||||
|
|
||||||
|
// In UI tests it is usually best to stop immediately when a failure occurs.
|
||||||
|
continueAfterFailure = false
|
||||||
|
|
||||||
|
// In UI tests it’s important to set the initial state - such as interface orientation - required for your tests before they run. The setUp method is a good place to do this.
|
||||||
|
}
|
||||||
|
|
||||||
|
override func tearDownWithError() throws {
|
||||||
|
// Put teardown code here. This method is called after the invocation of each test method in the class.
|
||||||
|
}
|
||||||
|
|
||||||
|
@MainActor
|
||||||
|
func testExample() throws {
|
||||||
|
// UI tests must launch the application that they test.
|
||||||
|
let app = XCUIApplication()
|
||||||
|
app.launch()
|
||||||
|
|
||||||
|
// Use XCTAssert and related functions to verify your tests produce the correct results.
|
||||||
|
}
|
||||||
|
|
||||||
|
@MainActor
|
||||||
|
func testLaunchPerformance() throws {
|
||||||
|
if #available(macOS 10.15, iOS 13.0, tvOS 13.0, watchOS 7.0, *) {
|
||||||
|
// This measures how long it takes to launch your application.
|
||||||
|
measure(metrics: [XCTApplicationLaunchMetric()]) {
|
||||||
|
XCUIApplication().launch()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,33 @@
|
||||||
|
//
|
||||||
|
// ChessPrismUITestsLaunchTests.swift
|
||||||
|
// ChessPrismUITests
|
||||||
|
//
|
||||||
|
// Created by Chris Haulmark on 1/6/25.
|
||||||
|
//
|
||||||
|
|
||||||
|
import XCTest
|
||||||
|
|
||||||
|
final class ChessPrismUITestsLaunchTests: XCTestCase {
|
||||||
|
|
||||||
|
override class var runsForEachTargetApplicationUIConfiguration: Bool {
|
||||||
|
true
|
||||||
|
}
|
||||||
|
|
||||||
|
override func setUpWithError() throws {
|
||||||
|
continueAfterFailure = false
|
||||||
|
}
|
||||||
|
|
||||||
|
@MainActor
|
||||||
|
func testLaunch() throws {
|
||||||
|
let app = XCUIApplication()
|
||||||
|
app.launch()
|
||||||
|
|
||||||
|
// Insert steps here to perform after app launch but before taking a screenshot,
|
||||||
|
// such as logging into a test account or navigating somewhere in the app
|
||||||
|
|
||||||
|
let attachment = XCTAttachment(screenshot: app.screenshot())
|
||||||
|
attachment.name = "Launch Screen"
|
||||||
|
attachment.lifetime = .keepAlways
|
||||||
|
add(attachment)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -1,239 +0,0 @@
|
||||||
# Chess Teaching Assistant Detailed Implementation Plan
|
|
||||||
|
|
||||||
## Week 1: Project Setup
|
|
||||||
1. Create Xcode project
|
|
||||||
- Set up SwiftUI project structure
|
|
||||||
- Configure project settings for MacOS Silicon
|
|
||||||
- Add basic app lifecycle handlers
|
|
||||||
2. Set up development environment
|
|
||||||
- Install required dependencies (Metal, Vision)
|
|
||||||
- Configure build settings
|
|
||||||
- Set up version control
|
|
||||||
3. Establish project architecture
|
|
||||||
- Create core module structure
|
|
||||||
- Implement basic MVVM pattern
|
|
||||||
- Set up dependency injection
|
|
||||||
4. Implement permission handlers
|
|
||||||
- Add screen recording permission request
|
|
||||||
- Implement accessibility permissions
|
|
||||||
- Add privacy descriptions in Info.plist
|
|
||||||
|
|
||||||
## Week 2-3: Screenshot Module
|
|
||||||
1. Screen recording permissions
|
|
||||||
- Implement permission request flow
|
|
||||||
- Handle permission denied scenarios
|
|
||||||
- Add permission status monitoring
|
|
||||||
2. Screenshot capture service
|
|
||||||
- Implement ScreenCapture API integration
|
|
||||||
- Add screenshot quality settings
|
|
||||||
- Implement error handling
|
|
||||||
3. Keyboard shortcut system
|
|
||||||
- Add global keyboard event monitoring
|
|
||||||
- Implement custom shortcut configuration
|
|
||||||
- Handle shortcut conflicts
|
|
||||||
4. Firefox window detection
|
|
||||||
- Implement window detection logic
|
|
||||||
- Add browser window filtering
|
|
||||||
- Handle multiple window scenarios
|
|
||||||
5. Multi-monitor support
|
|
||||||
- Implement monitor detection
|
|
||||||
- Add monitor selection UI
|
|
||||||
- Test across different monitor setups
|
|
||||||
|
|
||||||
## Week 3-4: Board Recognition System
|
|
||||||
1. Vision framework integration
|
|
||||||
- Set up Vision pipeline
|
|
||||||
- Implement image analysis
|
|
||||||
- Add error handling
|
|
||||||
2. ML model for piece recognition
|
|
||||||
- Create training dataset
|
|
||||||
- Train initial model
|
|
||||||
- Implement model inference
|
|
||||||
3. Chess.com theme handling
|
|
||||||
- Collect theme samples
|
|
||||||
- Add theme detection
|
|
||||||
- Implement theme-specific recognition
|
|
||||||
4. FEN conversion logic
|
|
||||||
- Implement FEN generation
|
|
||||||
- Add position validation
|
|
||||||
- Handle edge cases
|
|
||||||
5. Position validation system
|
|
||||||
- Add board state validation
|
|
||||||
- Implement error correction
|
|
||||||
- Add validation feedback
|
|
||||||
|
|
||||||
## Week 5-6: Stockfish Integration
|
|
||||||
1. Stockfish ARM64 setup
|
|
||||||
- Integrate Stockfish binary
|
|
||||||
- Configure engine settings
|
|
||||||
- Test basic functionality
|
|
||||||
2. Async engine wrapper
|
|
||||||
- Implement async interface
|
|
||||||
- Add move analysis queue
|
|
||||||
- Handle engine timeouts
|
|
||||||
3. Position analysis pipeline
|
|
||||||
- Implement analysis request system
|
|
||||||
- Add result processing
|
|
||||||
- Handle analysis errors
|
|
||||||
4. Move suggestion system
|
|
||||||
- Implement best move detection
|
|
||||||
- Add alternative move suggestions
|
|
||||||
- Handle engine evaluations
|
|
||||||
5. Evaluation cache
|
|
||||||
- Implement position caching
|
|
||||||
- Add cache invalidation
|
|
||||||
- Optimize cache performance
|
|
||||||
|
|
||||||
## Week 7-8: Visual Overlay Foundation
|
|
||||||
1. Metal rendering pipeline
|
|
||||||
- Set up Metal framework
|
|
||||||
- Implement basic rendering
|
|
||||||
- Add shader support
|
|
||||||
2. Transparent window system
|
|
||||||
- Create transparent NSWindow
|
|
||||||
- Implement window positioning
|
|
||||||
- Add window management
|
|
||||||
3. Basic shape rendering
|
|
||||||
- Implement shape drawing
|
|
||||||
- Add color customization
|
|
||||||
- Handle shape transformations
|
|
||||||
4. Coordinate transformation
|
|
||||||
- Implement screen to board mapping
|
|
||||||
- Add coordinate system conversion
|
|
||||||
- Handle window resizing
|
|
||||||
5. Overlay performance testing
|
|
||||||
- Implement performance metrics
|
|
||||||
- Add optimization hooks
|
|
||||||
- Test on different hardware
|
|
||||||
|
|
||||||
## Week 9-10: Move Visualization
|
|
||||||
1. Arrow rendering system
|
|
||||||
- Implement arrow drawing
|
|
||||||
- Add arrow customization
|
|
||||||
- Handle arrow animations
|
|
||||||
2. Square highlighting
|
|
||||||
- Implement square coloring
|
|
||||||
- Add highlight types
|
|
||||||
- Handle multiple highlights
|
|
||||||
3. Attack pattern visualization
|
|
||||||
- Implement attack detection
|
|
||||||
- Add visual indicators
|
|
||||||
- Handle complex patterns
|
|
||||||
4. Defensive move indicators
|
|
||||||
- Implement defense detection
|
|
||||||
- Add visual feedback
|
|
||||||
- Handle multiple defenses
|
|
||||||
5. Threat visualization system
|
|
||||||
- Implement threat detection
|
|
||||||
- Add threat indicators
|
|
||||||
- Handle complex threats
|
|
||||||
|
|
||||||
## Week 11: Performance Optimization
|
|
||||||
1. Metal shaders
|
|
||||||
- Implement custom shaders
|
|
||||||
- Optimize rendering
|
|
||||||
- Add shader debugging
|
|
||||||
2. Rendering pipeline
|
|
||||||
- Optimize draw calls
|
|
||||||
- Implement batching
|
|
||||||
- Add performance monitoring
|
|
||||||
3. Caching mechanisms
|
|
||||||
- Implement position cache
|
|
||||||
- Add analysis cache
|
|
||||||
- Optimize cache usage
|
|
||||||
4. Analysis pipeline
|
|
||||||
- Optimize engine calls
|
|
||||||
- Add parallel processing
|
|
||||||
- Handle resource contention
|
|
||||||
5. System benchmarking
|
|
||||||
- Implement performance tests
|
|
||||||
- Add metrics collection
|
|
||||||
- Analyze optimization results
|
|
||||||
|
|
||||||
## Week 12: Testing & Refinement
|
|
||||||
1. Automated test suite
|
|
||||||
- Add unit tests
|
|
||||||
- Implement integration tests
|
|
||||||
- Add UI tests
|
|
||||||
2. Performance tests
|
|
||||||
- Implement benchmark tests
|
|
||||||
- Add stress tests
|
|
||||||
- Monitor resource usage
|
|
||||||
3. Security audit
|
|
||||||
- Review code security
|
|
||||||
- Implement security fixes
|
|
||||||
- Add security monitoring
|
|
||||||
4. Bug fixes
|
|
||||||
- Implement bug tracking
|
|
||||||
- Add crash reporting
|
|
||||||
- Fix reported issues
|
|
||||||
5. Optimizations
|
|
||||||
- Analyze performance
|
|
||||||
- Implement optimizations
|
|
||||||
- Verify improvements
|
|
||||||
|
|
||||||
## Week 13: Polish & Distribution
|
|
||||||
1. UI/UX refinement
|
|
||||||
- Implement design improvements
|
|
||||||
- Add animations
|
|
||||||
- Improve user feedback
|
|
||||||
2. User settings
|
|
||||||
- Implement settings UI
|
|
||||||
- Add customization options
|
|
||||||
- Handle settings persistence
|
|
||||||
3. Analytics
|
|
||||||
- Implement analytics system
|
|
||||||
- Add event tracking
|
|
||||||
- Handle privacy concerns
|
|
||||||
4. Documentation
|
|
||||||
- Create user documentation
|
|
||||||
- Add developer docs
|
|
||||||
- Implement in-app help
|
|
||||||
5. TestFlight preparation
|
|
||||||
- Set up TestFlight
|
|
||||||
- Prepare build artifacts
|
|
||||||
- Configure distribution
|
|
||||||
|
|
||||||
## Week 14: Launch Preparation
|
|
||||||
1. Final security review
|
|
||||||
- Conduct security audit
|
|
||||||
- Implement final fixes
|
|
||||||
- Verify security measures
|
|
||||||
2. Performance validation
|
|
||||||
- Conduct final benchmarks
|
|
||||||
- Verify optimizations
|
|
||||||
- Ensure smooth operation
|
|
||||||
3. Documentation completion
|
|
||||||
- Finalize user docs
|
|
||||||
- Complete developer docs
|
|
||||||
- Verify documentation
|
|
||||||
4. TestFlight distribution
|
|
||||||
- Prepare final build
|
|
||||||
- Distribute to testers
|
|
||||||
- Collect feedback
|
|
||||||
5. User feedback setup
|
|
||||||
- Implement feedback system
|
|
||||||
- Add bug reporting
|
|
||||||
- Set up support channels
|
|
||||||
|
|
||||||
Key Milestones:
|
|
||||||
✓ Week 1: Working project structure
|
|
||||||
✓ Week 4: Functional board recognition
|
|
||||||
✓ Week 6: Working Stockfish analysis
|
|
||||||
✓ Week 8: Basic visual overlay system
|
|
||||||
✓ Week 10: Complete visualization system
|
|
||||||
✓ Week 12: Optimized performance
|
|
||||||
✓ Week 14: Ready for distribution
|
|
||||||
|
|
||||||
Testing Checkpoints:
|
|
||||||
- After each module completion
|
|
||||||
- Weekly performance benchmarks
|
|
||||||
- Bi-weekly security reviews
|
|
||||||
- Regular UX testing sessions
|
|
||||||
|
|
||||||
Development Priorities:
|
|
||||||
1. Core functionality
|
|
||||||
2. Performance optimization
|
|
||||||
3. User experience
|
|
||||||
4. Security compliance
|
|
||||||
5. Polish and refinement
|
|
||||||
|
|
@ -1,30 +0,0 @@
|
||||||
Chess Teaching Assistant Application (MacOS Silicon Compatible)
|
|
||||||
|
|
||||||
Primary Goal:
|
|
||||||
Create a HUD (Heads-Up Display) overlay system for chess.com that assists in teaching chess to students.
|
|
||||||
|
|
||||||
Core Features:
|
|
||||||
1. Screenshot Capture
|
|
||||||
- Capture chess.com board state via keyboard shortcut/button
|
|
||||||
- Compatible with Firefox browser
|
|
||||||
- Optimized for MacOS Silicon architecture
|
|
||||||
|
|
||||||
2. Board Position Analysis
|
|
||||||
- Parse screenshot to detect piece positions
|
|
||||||
- Convert board state into FEN notation for Stockfish
|
|
||||||
- Interface with Stockfish engine (loaded in memory)
|
|
||||||
|
|
||||||
3. Visual Overlay System
|
|
||||||
- Display suggested moves as arrows over the live chess board
|
|
||||||
- Show attack patterns and defensive possibilities
|
|
||||||
- Real-time visual feedback for teaching purposes
|
|
||||||
|
|
||||||
Technical Requirements:
|
|
||||||
- MacOS Silicon (ARM64) compatibility
|
|
||||||
- Integration with chess.com via Firefox browser
|
|
||||||
- Stockfish integration for position analysis
|
|
||||||
- Transparent overlay system for move visualization
|
|
||||||
- Low-latency performance for real-time teaching
|
|
||||||
|
|
||||||
Use Case:
|
|
||||||
Instructor can activate the analysis during live games on chess.com, providing immediate visual feedback to students about tactical opportunities and strategic planning, enhancing the teaching experience through interactive visual guidance.
|
|
||||||
|
|
@ -1,93 +0,0 @@
|
||||||
# Chess Teaching Assistant Implementation Outline
|
|
||||||
|
|
||||||
1. Project Setup (Week 1)
|
|
||||||
- Create Xcode project with SwiftUI
|
|
||||||
- Set up development environment
|
|
||||||
- Configure Metal and Vision framework dependencies
|
|
||||||
- Establish basic project architecture
|
|
||||||
- Implement permission handlers
|
|
||||||
|
|
||||||
2. Screenshot Module (Week 2-3)
|
|
||||||
- Implement screen recording permissions flow
|
|
||||||
- Build screenshot capture service
|
|
||||||
- Add keyboard shortcut system
|
|
||||||
- Create Firefox window detection
|
|
||||||
- Test multi-monitor support
|
|
||||||
|
|
||||||
3. Board Recognition System (Week 3-4)
|
|
||||||
- Develop Vision framework integration
|
|
||||||
- Create ML model for piece recognition
|
|
||||||
- Train model with various chess.com themes
|
|
||||||
- Implement FEN conversion logic
|
|
||||||
- Build position validation system
|
|
||||||
|
|
||||||
4. Stockfish Integration (Week 5-6)
|
|
||||||
- Set up Stockfish ARM64 binary
|
|
||||||
- Create async engine wrapper
|
|
||||||
- Implement position analysis pipeline
|
|
||||||
- Add move suggestion system
|
|
||||||
- Build evaluation cache
|
|
||||||
|
|
||||||
5. Visual Overlay Foundation (Week 7-8)
|
|
||||||
- Create Metal rendering pipeline
|
|
||||||
- Build transparent window system
|
|
||||||
- Implement basic shape rendering
|
|
||||||
- Add coordinate transformation system
|
|
||||||
- Test overlay performance
|
|
||||||
|
|
||||||
6. Move Visualization (Week 9-10)
|
|
||||||
- Develop arrow rendering system
|
|
||||||
- Add square highlighting
|
|
||||||
- Implement attack pattern visualization
|
|
||||||
- Create defensive move indicators
|
|
||||||
- Build threat visualization system
|
|
||||||
|
|
||||||
7. Performance Optimization (Week 11)
|
|
||||||
- Implement Metal shaders
|
|
||||||
- Optimize rendering pipeline
|
|
||||||
- Add caching mechanisms
|
|
||||||
- Reduce latency in analysis pipeline
|
|
||||||
- Benchmark system performance
|
|
||||||
|
|
||||||
8. Testing & Refinement (Week 12)
|
|
||||||
- Create automated test suite
|
|
||||||
- Implement UI tests
|
|
||||||
- Add performance tests
|
|
||||||
- Security audit
|
|
||||||
- Bug fixes and optimizations
|
|
||||||
|
|
||||||
9. Polish & Distribution (Week 13)
|
|
||||||
- UI/UX refinement
|
|
||||||
- Add user settings
|
|
||||||
- Implement analytics
|
|
||||||
- Create documentation
|
|
||||||
- TestFlight preparation
|
|
||||||
|
|
||||||
10. Launch Preparation (Week 14)
|
|
||||||
- Final security review
|
|
||||||
- Performance validation
|
|
||||||
- Documentation completion
|
|
||||||
- TestFlight distribution
|
|
||||||
- User feedback collection setup
|
|
||||||
|
|
||||||
Key Milestones:
|
|
||||||
✓ Week 1: Working project structure
|
|
||||||
✓ Week 4: Functional board recognition
|
|
||||||
✓ Week 6: Working Stockfish analysis
|
|
||||||
✓ Week 8: Basic visual overlay system
|
|
||||||
✓ Week 10: Complete visualization system
|
|
||||||
✓ Week 12: Optimized performance
|
|
||||||
✓ Week 14: Ready for distribution
|
|
||||||
|
|
||||||
Testing Checkpoints:
|
|
||||||
- After each module completion
|
|
||||||
- Weekly performance benchmarks
|
|
||||||
- Bi-weekly security reviews
|
|
||||||
- Regular UX testing sessions
|
|
||||||
|
|
||||||
Development Priorities:
|
|
||||||
1. Core functionality
|
|
||||||
2. Performance optimization
|
|
||||||
3. User experience
|
|
||||||
4. Security compliance
|
|
||||||
5. Polish and refinement
|
|
||||||
94
Plan.txt
94
Plan.txt
|
|
@ -1,94 +0,0 @@
|
||||||
# Chess Teaching Assistant Application Technical Plan
|
|
||||||
|
|
||||||
## Architecture:
|
|
||||||
- Native MacOS application using SwiftUI for the UI
|
|
||||||
- Core components:
|
|
||||||
* Screenshot Capture Module
|
|
||||||
* Board Position Analysis Engine
|
|
||||||
* Visual Overlay System
|
|
||||||
* Stockfish Integration
|
|
||||||
* Machine Learning Pipeline
|
|
||||||
|
|
||||||
## Implementation Details:
|
|
||||||
### Screenshot Capture:
|
|
||||||
- Use VisionKit and native Screen Capture API
|
|
||||||
- Implement keyboard shortcut using Swift Concurrency
|
|
||||||
- Screen Recording permission handling
|
|
||||||
- Multi-monitor support with DPI awareness
|
|
||||||
|
|
||||||
### Board Position Analysis:
|
|
||||||
- Apple Vision framework + Create ML for computer vision
|
|
||||||
- CoreML 5+ models for piece recognition
|
|
||||||
- Apple Neural Engine optimization
|
|
||||||
- Convert detected positions to FEN notation
|
|
||||||
- Handle various chess.com board themes and piece sets
|
|
||||||
- Real-time position validation
|
|
||||||
|
|
||||||
### Stockfish Integration:
|
|
||||||
- Use Stockfish ARM64 binary for MacOS Silicon
|
|
||||||
- Implement in-memory engine with async/await pattern
|
|
||||||
- Configure appropriate depth and time limits
|
|
||||||
- Multiple analysis lines support
|
|
||||||
- Position evaluation caching
|
|
||||||
|
|
||||||
### Visual Overlay System:
|
|
||||||
- Metal-accelerated rendering for optimal performance
|
|
||||||
- NSWindow with transparent background
|
|
||||||
- Hardware-accelerated move visualization
|
|
||||||
- Support multiple visualization types:
|
|
||||||
* Suggested moves (arrows)
|
|
||||||
* Attack patterns (highlighted squares)
|
|
||||||
* Defensive possibilities (colored areas)
|
|
||||||
* Threat visualization
|
|
||||||
* Piece mobility indicators
|
|
||||||
- Accessibility features integration
|
|
||||||
|
|
||||||
## Modern Architecture:
|
|
||||||
- Clean Architecture with domain-driven design
|
|
||||||
- Dependency injection for modularity
|
|
||||||
- Swift Concurrency for async operations
|
|
||||||
- Observation framework for state management
|
|
||||||
- App Sandbox compliance
|
|
||||||
- Privacy manifests implementation
|
|
||||||
|
|
||||||
## Development Plan:
|
|
||||||
Phase 1: Core Infrastructure
|
|
||||||
- Set up project with modern architecture
|
|
||||||
- Implement screenshot capture with permissions
|
|
||||||
- Basic board detection using Vision framework
|
|
||||||
|
|
||||||
Phase 2: Analysis Engine
|
|
||||||
- Stockfish integration with async/await
|
|
||||||
- Position analysis pipeline
|
|
||||||
- ML model training and integration
|
|
||||||
|
|
||||||
Phase 3: Visual System
|
|
||||||
- Metal-based overlay system
|
|
||||||
- Move visualization components
|
|
||||||
- Real-time rendering optimization
|
|
||||||
|
|
||||||
Phase 4: Performance & Security
|
|
||||||
- Performance benchmarking
|
|
||||||
- Security audit and sandbox compliance
|
|
||||||
- Privacy features implementation
|
|
||||||
|
|
||||||
Phase 5: Polish & Distribution
|
|
||||||
- TestFlight integration
|
|
||||||
- UI/UX refinement
|
|
||||||
- Documentation and deployment
|
|
||||||
|
|
||||||
## Technical Stack:
|
|
||||||
- Swift & SwiftUI for application framework
|
|
||||||
- Vision framework & Create ML for computer vision
|
|
||||||
- Metal for GPU-accelerated graphics
|
|
||||||
- CoreML for machine learning
|
|
||||||
- Stockfish for chess analysis
|
|
||||||
- Swift Concurrency for async operations
|
|
||||||
- XCTest for testing infrastructure
|
|
||||||
|
|
||||||
## Monitoring & Maintenance:
|
|
||||||
- Analytics integration for performance monitoring
|
|
||||||
- Crash reporting system
|
|
||||||
- Automated testing pipeline
|
|
||||||
- Regular security audits
|
|
||||||
- User feedback collection system
|
|
||||||
144
README.md
144
README.md
|
|
@ -1,18 +1,138 @@
|
||||||
# Chess Teaching Assistant
|
# Chess Teaching Assistant - ChessPrism
|
||||||
|
|
||||||
An intelligent chess teaching assistant for macOS that provides real-time analysis and visualization.
|
## Project Overview
|
||||||
|
ChessPrism is a native macOS application designed to enhance chess learning and analysis by providing real-time visual feedback and move suggestions during online chess games. The application integrates with chess.com through screen capture and provides advanced analysis using Stockfish and custom machine learning models.
|
||||||
|
|
||||||
## Features
|
### Key Features
|
||||||
- Real-time board position analysis
|
- Real-time board position recognition
|
||||||
- Visual move suggestions
|
- Visual move suggestions and threat analysis
|
||||||
- Attack pattern visualization
|
- Integrated Stockfish engine analysis
|
||||||
- Defensive planning indicators
|
- Customizable visual overlays
|
||||||
|
- Multi-monitor support
|
||||||
|
- Keyboard shortcut controls
|
||||||
|
|
||||||
## Development
|
## Current Development Status
|
||||||
See [Development Guide](docs/development/getting-started.md) for setup instructions.
|
### Completed Features
|
||||||
|
- Project architecture setup (MVVM pattern)
|
||||||
|
- Core screenshot capture functionality
|
||||||
|
- Basic board recognition using Vision framework
|
||||||
|
- Stockfish ARM64 integration
|
||||||
|
- Metal-based rendering pipeline foundation
|
||||||
|
|
||||||
## Architecture
|
### In Progress
|
||||||
See [Architecture Overview](docs/architecture/overview.md) for system design details.
|
- Advanced piece recognition model training
|
||||||
|
- Visual overlay system implementation
|
||||||
|
- Move suggestion system integration
|
||||||
|
- Performance optimization for real-time analysis
|
||||||
|
|
||||||
|
### Upcoming Features
|
||||||
|
- User settings and customization
|
||||||
|
- Advanced threat visualization
|
||||||
|
- Analytics and feedback system
|
||||||
|
- TestFlight distribution setup
|
||||||
|
|
||||||
|
## Technical Architecture
|
||||||
|
### Core Components
|
||||||
|
1. **Screenshot Capture Module**
|
||||||
|
- Uses VisionKit and Screen Capture API
|
||||||
|
- Handles multi-monitor scenarios
|
||||||
|
- Implements keyboard shortcuts
|
||||||
|
|
||||||
|
2. **Board Position Analysis**
|
||||||
|
- Vision framework + CoreML for computer vision
|
||||||
|
- Real-time FEN conversion
|
||||||
|
- Position validation system
|
||||||
|
|
||||||
|
3. **Stockfish Integration**
|
||||||
|
- ARM64 optimized binary
|
||||||
|
- Async/await interface
|
||||||
|
- Position evaluation caching
|
||||||
|
|
||||||
|
4. **Visual Overlay System**
|
||||||
|
- Metal-accelerated rendering
|
||||||
|
- Transparent NSWindow implementation
|
||||||
|
- Multiple visualization types
|
||||||
|
|
||||||
|
### Technology Stack
|
||||||
|
- **Languages**: Swift, Metal Shading Language
|
||||||
|
- **Frameworks**: SwiftUI, Vision, CoreML, Metal
|
||||||
|
- **Dependencies**: Stockfish 16, Create ML
|
||||||
|
- **Tools**: Xcode 16.2, Swift 6.0.3
|
||||||
|
|
||||||
|
## Development Environment Setup
|
||||||
|
### System Requirements
|
||||||
|
- **Hardware**: Apple Silicon (M1/M2/M3)
|
||||||
|
- **Memory**: 16GB+ RAM
|
||||||
|
- **GPU**: Metal 2+ support
|
||||||
|
- **OS**: macOS Ventura 13.0+
|
||||||
|
|
||||||
|
### Installation
|
||||||
|
1. Clone the repository:
|
||||||
|
```bash
|
||||||
|
git clone https://gitea.example.com/chessprism.git
|
||||||
|
cd chessprism
|
||||||
|
```
|
||||||
|
|
||||||
|
2. Install dependencies:
|
||||||
|
```bash
|
||||||
|
brew install swiftlint
|
||||||
|
```
|
||||||
|
|
||||||
|
3. Open project in Xcode:
|
||||||
|
```bash
|
||||||
|
open ChessPrism/ChessPrism.xcodeproj
|
||||||
|
```
|
||||||
|
|
||||||
|
4. Configure development settings:
|
||||||
|
- Enable Metal API validation
|
||||||
|
- Set up code signing
|
||||||
|
- Configure entitlements
|
||||||
|
|
||||||
|
## Contribution Guidelines
|
||||||
|
### Code Style
|
||||||
|
- Follow Swift style guide
|
||||||
|
- Use SwiftLint for code formatting
|
||||||
|
- Maintain 80%+ test coverage
|
||||||
|
|
||||||
|
### Branching Strategy
|
||||||
|
1. `main` - Stable production-ready code
|
||||||
|
2. `develop` - Current development branch
|
||||||
|
3. `feature/*` - Feature development branches
|
||||||
|
4. `hotfix/*` - Critical bug fixes
|
||||||
|
|
||||||
|
### Pull Request Process
|
||||||
|
1. Create a feature branch from `develop`
|
||||||
|
2. Implement changes with tests
|
||||||
|
3. Open PR with detailed description
|
||||||
|
4. Address code review feedback
|
||||||
|
5. Merge after CI passes and approval
|
||||||
|
|
||||||
|
## Key Milestones
|
||||||
|
### Completed
|
||||||
|
- [x] Project setup and architecture
|
||||||
|
- [x] Basic screenshot capture
|
||||||
|
- [x] Stockfish integration
|
||||||
|
|
||||||
|
### Current
|
||||||
|
- [ ] Advanced board recognition
|
||||||
|
- [ ] Visual overlay system
|
||||||
|
- [ ] Performance optimization
|
||||||
|
|
||||||
|
### Upcoming
|
||||||
|
- [ ] User settings implementation
|
||||||
|
- [ ] Analytics integration
|
||||||
|
- [ ] TestFlight distribution
|
||||||
|
|
||||||
|
## Documentation
|
||||||
|
- [Technical Specifications](docs/architecture/overview.md)
|
||||||
|
- [API Reference](docs/api/)
|
||||||
|
- [Development Guide](docs/development/getting-started.md)
|
||||||
|
|
||||||
## License
|
## License
|
||||||
[MIT License](LICENSE)
|
This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.
|
||||||
|
|
||||||
|
## Contact
|
||||||
|
For project inquiries, please contact:
|
||||||
|
- Project Lead: [Your Name]
|
||||||
|
- Email: [your.email@example.com]
|
||||||
|
- Gitea: [Your Gitea Profile]
|
||||||
|
|
|
||||||
|
|
@ -1,24 +1,83 @@
|
||||||
# Active Context
|
# Active Context
|
||||||
|
|
||||||
|
## Current Implementation Phase
|
||||||
|
Week 1: Project Setup (In Progress)
|
||||||
|
|
||||||
## What we're working on now
|
## What we're working on now
|
||||||
Implementation of Chess Teaching Assistant Application according to Detailed-Implementation-Plan.txt
|
1. Xcode project configuration
|
||||||
|
- Setting up SwiftUI project structure
|
||||||
|
- Configuring project settings for MacOS Silicon
|
||||||
|
- Adding basic app lifecycle handlers
|
||||||
|
2. Development environment setup
|
||||||
|
- Installing required dependencies (Metal, Vision)
|
||||||
|
- Configuring build settings
|
||||||
|
- Setting up version control
|
||||||
|
3. Project architecture
|
||||||
|
- Creating core module structure
|
||||||
|
- Implementing basic MVVM pattern
|
||||||
|
- Setting up dependency injection
|
||||||
|
|
||||||
## Recent changes
|
## Recent changes
|
||||||
- Created detailed implementation plan
|
- Created detailed implementation plan
|
||||||
- Verified compatibility with updated outline
|
- Set up development environment
|
||||||
- Established modern tech stack (SwiftUI, Metal, Vision)
|
- Installed Xcode and necessary tools
|
||||||
|
- Created initial Xcode project with SwiftUI template
|
||||||
|
- Configured Git repository
|
||||||
|
- Added basic project structure
|
||||||
|
- Configured required frameworks (Metal, Vision)
|
||||||
|
- Set up initial build configurations
|
||||||
|
|
||||||
## Next steps
|
## Next steps
|
||||||
1. Begin Week 1: Project Setup
|
1. Complete project setup
|
||||||
- Create Xcode project
|
|
||||||
- Set up development environment
|
|
||||||
- Establish project architecture
|
|
||||||
- Implement permission handlers
|
- Implement permission handlers
|
||||||
2. Prepare development environment
|
- Add screen recording permission request
|
||||||
- Install required dependencies
|
- Implement accessibility permissions
|
||||||
- Configure build settings
|
- Add privacy descriptions in Info.plist
|
||||||
- Set up version control
|
- Finalize project architecture
|
||||||
3. Document initial setup process
|
- Complete MVVM implementation
|
||||||
- Create setup documentation
|
- Finalize dependency injection setup
|
||||||
- Verify environment configuration
|
- Set up core module interfaces
|
||||||
- Test basic project structure
|
2. Begin screenshot module implementation
|
||||||
|
- Implement screen recording permissions flow
|
||||||
|
- Set up screenshot capture service
|
||||||
|
- Configure keyboard shortcut system
|
||||||
|
|
||||||
|
## Completed Milestones
|
||||||
|
- Initial project setup complete
|
||||||
|
- Development environment configured
|
||||||
|
- Core frameworks integrated
|
||||||
|
- Basic project structure established
|
||||||
|
|
||||||
|
## Technical Details
|
||||||
|
### Current Implementation
|
||||||
|
- Using Swift 5.9
|
||||||
|
- SwiftUI 4.0 for UI
|
||||||
|
- Metal 3.0 for rendering
|
||||||
|
- Vision 2.0 for image analysis
|
||||||
|
- CoreML 5.0 for machine learning
|
||||||
|
|
||||||
|
### Current Architecture
|
||||||
|
- MVVM pattern implementation
|
||||||
|
- Modular architecture
|
||||||
|
- Dependency injection
|
||||||
|
- Async/await concurrency model
|
||||||
|
|
||||||
|
### Current Configuration
|
||||||
|
- MacOS Ventura 13.0+
|
||||||
|
- Xcode 15.0+
|
||||||
|
- Git 2.40+
|
||||||
|
- CoreML Tools 5.0+
|
||||||
|
|
||||||
|
## Pending Tasks
|
||||||
|
1. Complete permission handling implementation
|
||||||
|
2. Finalize project architecture
|
||||||
|
3. Begin screenshot module development
|
||||||
|
4. Set up initial testing infrastructure
|
||||||
|
5. Configure CI/CD pipeline
|
||||||
|
|
||||||
|
## Important Notes
|
||||||
|
- Following detailed implementation plan
|
||||||
|
- Maintaining clean architecture principles
|
||||||
|
- Implementing modern Swift patterns
|
||||||
|
- Ensuring security and privacy compliance
|
||||||
|
- Maintaining documentation standards
|
||||||
|
|
|
||||||
|
|
@ -1,15 +1,136 @@
|
||||||
# Product Context
|
# Product Context
|
||||||
|
|
||||||
## Why this project exists
|
## Product Vision
|
||||||
To create a teaching assistant tool for chess instructors that provides real-time visual feedback during live games on chess.com.
|
To create an intuitive, real-time chess teaching assistant that enhances the learning experience for both instructors and students during live gameplay.
|
||||||
|
|
||||||
## What problems it solves
|
## Core Value Proposition
|
||||||
1. Difficulty in explaining chess concepts during live games
|
1. Real-time visual feedback during live games
|
||||||
2. Lack of immediate visual feedback for teaching purposes
|
2. Integrated analysis and teaching tools
|
||||||
3. Need for integrated analysis during live gameplay
|
3. Seamless integration with chess.com
|
||||||
|
4. Performance-optimized for MacOS Silicon
|
||||||
|
|
||||||
## How it should work
|
## Target Users
|
||||||
1. Instructor plays/teaches on chess.com using Firefox
|
### User Personas
|
||||||
2. Application captures board state via screenshot
|
1. Chess Instructors
|
||||||
3. System analyzes position and suggests moves
|
- Needs: Real-time analysis, teaching tools, visual aids
|
||||||
4. Visual overlay shows analysis on top of live game
|
- Goals: Effective teaching, student engagement
|
||||||
|
- Pain Points: Complex setup, delayed feedback
|
||||||
|
|
||||||
|
2. Advanced Players
|
||||||
|
- Needs: Move analysis, threat detection
|
||||||
|
- Goals: Improve teaching skills, analyze games
|
||||||
|
- Pain Points: Limited teaching tools
|
||||||
|
|
||||||
|
3. Chess Streamers
|
||||||
|
- Needs: Visual overlays, real-time analysis
|
||||||
|
- Goals: Engaging content, clear explanations
|
||||||
|
- Pain Points: Complex overlay systems
|
||||||
|
|
||||||
|
4. Self-Learners
|
||||||
|
- Needs: Position evaluation, move alternatives
|
||||||
|
- Goals: Game improvement, pattern recognition
|
||||||
|
- Pain Points: Lack of real-time feedback
|
||||||
|
|
||||||
|
## Key Features
|
||||||
|
1. Real-time board position analysis
|
||||||
|
2. Visual move suggestions and explanations
|
||||||
|
3. Threat and defense visualization
|
||||||
|
4. Position evaluation and move alternatives
|
||||||
|
5. Customizable visual overlay system
|
||||||
|
|
||||||
|
## User Workflows
|
||||||
|
### Teaching Scenario
|
||||||
|
1. Instructor starts chess.com game
|
||||||
|
2. Application detects board position
|
||||||
|
3. Real-time visual feedback appears
|
||||||
|
4. Instructor explains moves using visual aids
|
||||||
|
5. Students see analysis and suggestions
|
||||||
|
|
||||||
|
### Self-Learning Scenario
|
||||||
|
1. Player starts game on chess.com
|
||||||
|
2. Application provides real-time feedback
|
||||||
|
3. Player sees move suggestions and threats
|
||||||
|
4. Application highlights tactical patterns
|
||||||
|
5. Player reviews game analysis post-match
|
||||||
|
|
||||||
|
## User Experience Goals
|
||||||
|
1. Intuitive and non-intrusive interface
|
||||||
|
2. Real-time responsiveness (<100ms latency)
|
||||||
|
3. Clear visual feedback system
|
||||||
|
4. Customizable teaching tools
|
||||||
|
5. Seamless integration with chess.com
|
||||||
|
|
||||||
|
## Visual Feedback System
|
||||||
|
1. Move Visualization:
|
||||||
|
- Arrows for suggested moves
|
||||||
|
- Color-coded threat levels
|
||||||
|
- Highlighted squares
|
||||||
|
|
||||||
|
2. Position Analysis:
|
||||||
|
- Evaluation bar
|
||||||
|
- Move alternatives
|
||||||
|
- Threat indicators
|
||||||
|
|
||||||
|
3. Teaching Aids:
|
||||||
|
- Defensive patterns
|
||||||
|
- Attack vectors
|
||||||
|
- Piece mobility
|
||||||
|
|
||||||
|
## Accessibility Features
|
||||||
|
1. Color-blind friendly themes
|
||||||
|
2. Keyboard navigation
|
||||||
|
3. Screen reader support
|
||||||
|
4. Adjustable overlay size
|
||||||
|
5. High-contrast modes
|
||||||
|
|
||||||
|
## Success Metrics
|
||||||
|
1. Performance:
|
||||||
|
- <100ms analysis latency
|
||||||
|
- 99.9% board recognition accuracy
|
||||||
|
- 120fps overlay rendering
|
||||||
|
2. Usability:
|
||||||
|
- <5 minute setup time
|
||||||
|
- 90% instructor satisfaction rate
|
||||||
|
- <1% error rate in move suggestions
|
||||||
|
3. Adoption:
|
||||||
|
- 1000+ active users in first 6 months
|
||||||
|
- 90% retention rate after 30 days
|
||||||
|
- 4.5+ average rating on App Store
|
||||||
|
|
||||||
|
## Competitive Advantages
|
||||||
|
1. Native MacOS Silicon optimization
|
||||||
|
2. Real-time performance with Metal acceleration
|
||||||
|
3. Integrated teaching tools
|
||||||
|
4. Chess.com specific optimizations
|
||||||
|
5. Privacy-focused design
|
||||||
|
|
||||||
|
## Development Principles
|
||||||
|
1. User-centric design
|
||||||
|
2. Performance-first approach
|
||||||
|
3. Modular architecture
|
||||||
|
4. Continuous testing and refinement
|
||||||
|
5. Security and privacy compliance
|
||||||
|
|
||||||
|
## Product Roadmap
|
||||||
|
### Phase 1: Core Functionality (Weeks 1-6)
|
||||||
|
- Basic board recognition
|
||||||
|
- Stockfish integration
|
||||||
|
- Visual overlay foundation
|
||||||
|
|
||||||
|
### Phase 2: Teaching Tools (Weeks 7-10)
|
||||||
|
- Move visualization system
|
||||||
|
- Threat analysis
|
||||||
|
- Defensive patterns
|
||||||
|
|
||||||
|
### Phase 3: Polish & Optimization (Weeks 11-14)
|
||||||
|
- Performance tuning
|
||||||
|
- UI/UX refinement
|
||||||
|
- Security implementation
|
||||||
|
|
||||||
|
## Key Milestones
|
||||||
|
1. Week 4: Functional board recognition
|
||||||
|
2. Week 6: Working Stockfish analysis
|
||||||
|
3. Week 8: Basic visual overlay system
|
||||||
|
4. Week 10: Complete visualization system
|
||||||
|
5. Week 12: Optimized performance
|
||||||
|
6. Week 14: Ready for distribution
|
||||||
|
|
|
||||||
|
|
@ -1,16 +1,240 @@
|
||||||
# System Patterns
|
# System Patterns
|
||||||
|
|
||||||
## Architecture Overview
|
## Architecture Overview
|
||||||
|
### Core Components
|
||||||
1. Screenshot Capture Module
|
1. Screenshot Capture Module
|
||||||
|
- Screen recording permission handling
|
||||||
|
- Multi-monitor support
|
||||||
|
- Keyboard shortcut system
|
||||||
|
- Firefox window detection
|
||||||
|
|
||||||
2. Board Position Analysis Engine
|
2. Board Position Analysis Engine
|
||||||
|
- Vision framework integration
|
||||||
|
- CoreML model inference
|
||||||
|
- FEN conversion logic
|
||||||
|
- Position validation system
|
||||||
|
|
||||||
3. Visual Overlay System
|
3. Visual Overlay System
|
||||||
|
- Metal rendering pipeline
|
||||||
|
- Transparent window system
|
||||||
|
- Coordinate transformation
|
||||||
|
- Move visualization components
|
||||||
|
|
||||||
4. Stockfish Integration
|
4. Stockfish Integration
|
||||||
|
- ARM64 binary integration
|
||||||
|
- Async engine wrapper
|
||||||
|
- Position analysis pipeline
|
||||||
|
- Evaluation caching
|
||||||
|
|
||||||
## Key Technical Decisions
|
5. Machine Learning Pipeline
|
||||||
1. MacOS Silicon (ARM64) native implementation
|
- Model training framework
|
||||||
2. Firefox browser integration
|
- Theme detection system
|
||||||
3. Low-latency overlay system
|
- Piece recognition models
|
||||||
4. In-memory Stockfish engine
|
- Model versioning system
|
||||||
|
|
||||||
## Data Flow
|
## Architectural Patterns
|
||||||
1. Screenshot → Board Position Detection → FEN Conversion → Stockfish Analysis → Visual Overlay
|
### Clean Architecture Layers
|
||||||
|
1. Presentation Layer (SwiftUI)
|
||||||
|
- User interface components
|
||||||
|
- View models
|
||||||
|
- State management
|
||||||
|
|
||||||
|
2. Domain Layer
|
||||||
|
- Core business logic
|
||||||
|
- Use cases
|
||||||
|
- Domain models
|
||||||
|
|
||||||
|
3. Data Layer
|
||||||
|
- Repositories
|
||||||
|
- Data sources
|
||||||
|
- Network services
|
||||||
|
|
||||||
|
### Design Patterns
|
||||||
|
1. MVVM for UI components
|
||||||
|
2. Dependency Injection for service composition
|
||||||
|
3. Observer pattern for state management
|
||||||
|
4. Factory pattern for object creation
|
||||||
|
5. Strategy pattern for analysis algorithms
|
||||||
|
|
||||||
|
## Detailed Component Specifications
|
||||||
|
### Metal Rendering Pipeline
|
||||||
|
1. Pipeline Stages:
|
||||||
|
- Vertex processing
|
||||||
|
- Fragment shading
|
||||||
|
- Composition
|
||||||
|
- Post-processing
|
||||||
|
|
||||||
|
2. Performance Optimization:
|
||||||
|
- Command buffer optimization
|
||||||
|
- Texture compression
|
||||||
|
- Shader LOD management
|
||||||
|
- Frame pacing
|
||||||
|
|
||||||
|
3. Visual Effects:
|
||||||
|
- Anti-aliasing
|
||||||
|
- Bloom effects
|
||||||
|
- Motion blur
|
||||||
|
- Depth effects
|
||||||
|
|
||||||
|
### Vision Framework Integration
|
||||||
|
1. Image Analysis Pipeline:
|
||||||
|
- Image preprocessing
|
||||||
|
- Feature detection
|
||||||
|
- Object recognition
|
||||||
|
- Position tracking
|
||||||
|
|
||||||
|
2. Performance Considerations:
|
||||||
|
- GPU acceleration
|
||||||
|
- Batch processing
|
||||||
|
- Memory optimization
|
||||||
|
- Error handling
|
||||||
|
|
||||||
|
3. Integration Points:
|
||||||
|
- CoreML model integration
|
||||||
|
- Metal texture sharing
|
||||||
|
- SwiftUI view integration
|
||||||
|
- Async/await pattern
|
||||||
|
|
||||||
|
### Async/Await Patterns
|
||||||
|
1. Concurrency Model:
|
||||||
|
- Task groups
|
||||||
|
- Async sequences
|
||||||
|
- Actor isolation
|
||||||
|
- Continuations
|
||||||
|
|
||||||
|
2. Error Handling:
|
||||||
|
- Structured concurrency
|
||||||
|
- Task cancellation
|
||||||
|
- Error propagation
|
||||||
|
- Retry mechanisms
|
||||||
|
|
||||||
|
3. Performance Optimization:
|
||||||
|
- Task prioritization
|
||||||
|
- Resource contention management
|
||||||
|
- Memory safety
|
||||||
|
- Thread management
|
||||||
|
|
||||||
|
### CoreML Model Architecture
|
||||||
|
1. Model Specifications:
|
||||||
|
- Input/output formats
|
||||||
|
- Model quantization
|
||||||
|
- Neural engine optimization
|
||||||
|
- Model versioning
|
||||||
|
|
||||||
|
2. Training Pipeline:
|
||||||
|
- Data collection
|
||||||
|
- Model training
|
||||||
|
- Validation
|
||||||
|
- Deployment
|
||||||
|
|
||||||
|
3. Performance Considerations:
|
||||||
|
- Batch processing
|
||||||
|
- Memory management
|
||||||
|
- Model compression
|
||||||
|
- Inference optimization
|
||||||
|
|
||||||
|
### Stockfish Integration
|
||||||
|
1. Engine Configuration:
|
||||||
|
- Thread management
|
||||||
|
- Hash size optimization
|
||||||
|
- Analysis depth
|
||||||
|
- Time controls
|
||||||
|
|
||||||
|
2. Analysis Pipeline:
|
||||||
|
- Position evaluation
|
||||||
|
- Move generation
|
||||||
|
- Threat detection
|
||||||
|
- Position caching
|
||||||
|
|
||||||
|
3. Performance Optimization:
|
||||||
|
- Parallel analysis
|
||||||
|
- Cache management
|
||||||
|
- Engine tuning
|
||||||
|
- Resource allocation
|
||||||
|
|
||||||
|
## Data Flow Diagram
|
||||||
|
1. Input:
|
||||||
|
- Screenshot capture
|
||||||
|
- Keyboard input
|
||||||
|
- System events
|
||||||
|
|
||||||
|
2. Processing:
|
||||||
|
- Board detection
|
||||||
|
- Position analysis
|
||||||
|
- Move evaluation
|
||||||
|
- Visualization generation
|
||||||
|
|
||||||
|
3. Output:
|
||||||
|
- Visual overlay
|
||||||
|
- Move suggestions
|
||||||
|
- Position evaluation
|
||||||
|
- Threat analysis
|
||||||
|
|
||||||
|
## Error Handling Strategy
|
||||||
|
1. Input Validation:
|
||||||
|
- Screenshot quality checks
|
||||||
|
- Board position validation
|
||||||
|
- Move legality verification
|
||||||
|
|
||||||
|
2. Recovery Mechanisms:
|
||||||
|
- Automatic retry for failed operations
|
||||||
|
- Fallback analysis methods
|
||||||
|
- Graceful degradation
|
||||||
|
|
||||||
|
3. Error Reporting:
|
||||||
|
- User-friendly error messages
|
||||||
|
- Detailed error logging
|
||||||
|
- Crash reporting system
|
||||||
|
|
||||||
|
## Security Architecture
|
||||||
|
1. Data Protection:
|
||||||
|
- Secure storage for sensitive data
|
||||||
|
- Encrypted communication channels
|
||||||
|
- Data minimization principles
|
||||||
|
|
||||||
|
2. Access Control:
|
||||||
|
- Permission management system
|
||||||
|
- Role-based access control
|
||||||
|
- Activity monitoring
|
||||||
|
|
||||||
|
3. Privacy Features:
|
||||||
|
- Privacy manifests implementation
|
||||||
|
- Data collection transparency
|
||||||
|
- User consent management
|
||||||
|
|
||||||
|
## Performance Optimization
|
||||||
|
1. Rendering:
|
||||||
|
- Metal shader optimization
|
||||||
|
- Draw call batching
|
||||||
|
- Frame rate stabilization
|
||||||
|
|
||||||
|
2. Analysis:
|
||||||
|
- Position caching
|
||||||
|
- Parallel processing
|
||||||
|
- Engine optimization
|
||||||
|
|
||||||
|
3. Memory Management:
|
||||||
|
- Efficient resource allocation
|
||||||
|
- Memory leak prevention
|
||||||
|
- Garbage collection tuning
|
||||||
|
|
||||||
|
## Testing Strategy
|
||||||
|
1. Unit Testing:
|
||||||
|
- Core functionality
|
||||||
|
- Business logic
|
||||||
|
- Utility functions
|
||||||
|
|
||||||
|
2. Integration Testing:
|
||||||
|
- Module interactions
|
||||||
|
- Data flow verification
|
||||||
|
- System behavior
|
||||||
|
|
||||||
|
3. Performance Testing:
|
||||||
|
- Latency benchmarks
|
||||||
|
- Resource usage
|
||||||
|
- Stress testing
|
||||||
|
|
||||||
|
4. Security Testing:
|
||||||
|
- Vulnerability scanning
|
||||||
|
- Penetration testing
|
||||||
|
- Compliance verification
|
||||||
|
|
|
||||||
|
|
@ -1,20 +1,247 @@
|
||||||
# Tech Context
|
# Tech Context
|
||||||
|
|
||||||
## Technologies Used
|
## Technology Stack
|
||||||
1. MacOS Silicon (ARM64) native development
|
### Core Technologies
|
||||||
2. Firefox browser integration
|
1. Swift (5.9+)
|
||||||
3. Stockfish chess engine
|
2. SwiftUI (4.0+)
|
||||||
4. Computer vision for board detection
|
3. Metal (3.0+)
|
||||||
5. Transparent overlay system
|
4. Vision (2.0+)
|
||||||
|
5. CoreML (5.0+)
|
||||||
|
6. Create ML (3.0+)
|
||||||
|
7. Stockfish (16+)
|
||||||
|
|
||||||
## Development Setup
|
### Development Tools
|
||||||
1. MacOS development environment
|
1. Xcode (15.0+)
|
||||||
2. Firefox extension capabilities
|
2. Swift Package Manager
|
||||||
3. Stockfish integration
|
3. Git (2.40+)
|
||||||
4. Low-latency overlay framework
|
4. CoreML Tools (5.0+)
|
||||||
|
5. Create ML App (3.0+)
|
||||||
|
|
||||||
|
### Testing Frameworks
|
||||||
|
1. XCTest (5.0+)
|
||||||
|
2. XCUITest (5.0+)
|
||||||
|
3. Performance Testing Tools
|
||||||
|
4. Security Testing Suite
|
||||||
|
|
||||||
|
## Development System Specifications
|
||||||
|
### Operating System
|
||||||
|
- System: Darwin
|
||||||
|
- Version: 15.2
|
||||||
|
- Architecture: arm64
|
||||||
|
|
||||||
|
### Hardware Specifications
|
||||||
|
- CPU: Apple M3 Max
|
||||||
|
- Memory: 64.00 GB
|
||||||
|
- GPU: Apple M3 Max (40 cores)
|
||||||
|
- Metal Support: Metal 3
|
||||||
|
|
||||||
|
### Display Information
|
||||||
|
- Main Display: LG ULTRAGEAR+
|
||||||
|
- Resolution: 3840 x 1080
|
||||||
|
- Refresh Rate: 120Hz
|
||||||
|
- Features: Television support, rotation support
|
||||||
|
|
||||||
|
### Development Tools
|
||||||
|
- Xcode: 16.2 (Build version 16C5032a)
|
||||||
|
- Swift: 6.0.3 (swiftlang-6.0.3.1.10 clang-1600.0.30.1)
|
||||||
|
- Target: arm64-apple-macosx15.0
|
||||||
|
|
||||||
|
## Development Environment Requirements
|
||||||
|
### Minimum Requirements
|
||||||
|
- Apple Silicon (M1)
|
||||||
|
- 16GB RAM
|
||||||
|
- Metal 2 support
|
||||||
|
|
||||||
|
### Recommended Requirements
|
||||||
|
- Apple M2/M3 series
|
||||||
|
- 32GB+ RAM
|
||||||
|
- Metal 3 support
|
||||||
|
- Apple Neural Engine
|
||||||
|
|
||||||
|
### Software Requirements
|
||||||
|
1. MacOS (Ventura 13.0+)
|
||||||
|
2. Xcode (15.0+)
|
||||||
|
3. Swift (5.9+)
|
||||||
|
4. Git (2.40+)
|
||||||
|
5. CoreML Tools (5.0+)
|
||||||
|
|
||||||
|
## Configuration Details
|
||||||
|
### Swift Concurrency
|
||||||
|
1. Async/await pattern implementation
|
||||||
|
2. Task management system
|
||||||
|
3. Structured concurrency
|
||||||
|
4. Actor-based isolation
|
||||||
|
|
||||||
|
### CoreML Integration
|
||||||
|
1. Model versioning system
|
||||||
|
2. Apple Neural Engine optimization
|
||||||
|
3. Model update mechanism
|
||||||
|
4. Performance monitoring
|
||||||
|
|
||||||
|
### Security Implementation
|
||||||
|
1. App Sandbox configuration
|
||||||
|
2. Privacy manifest requirements
|
||||||
|
3. Secure storage implementation
|
||||||
|
4. Data encryption standards
|
||||||
|
|
||||||
|
## Development Workflow
|
||||||
|
1. Version Control:
|
||||||
|
- Git branching strategy
|
||||||
|
- Code review process
|
||||||
|
- Commit message guidelines
|
||||||
|
|
||||||
|
2. CI/CD Pipeline:
|
||||||
|
- Automated testing
|
||||||
|
- Build verification
|
||||||
|
- Deployment automation
|
||||||
|
- Release management
|
||||||
|
|
||||||
|
3. Code Quality:
|
||||||
|
- Linting configuration
|
||||||
|
- Static analysis
|
||||||
|
- Code coverage requirements
|
||||||
|
- Documentation standards
|
||||||
|
|
||||||
|
## Monitoring & Logging
|
||||||
|
1. Performance Monitoring:
|
||||||
|
- Rendering performance
|
||||||
|
- Analysis latency
|
||||||
|
- Resource usage
|
||||||
|
|
||||||
|
2. Error Tracking:
|
||||||
|
- Crash reporting
|
||||||
|
- Error logging
|
||||||
|
- User feedback integration
|
||||||
|
|
||||||
|
3. Analytics:
|
||||||
|
- Usage tracking
|
||||||
|
- Feature adoption
|
||||||
|
- Performance metrics
|
||||||
|
|
||||||
## Technical Constraints
|
## Technical Constraints
|
||||||
1. Must work with chess.com in Firefox
|
1. Real-time Requirements:
|
||||||
2. Real-time performance requirements
|
- <100ms analysis latency
|
||||||
3. MacOS Silicon compatibility
|
- 120fps rendering
|
||||||
4. Accurate board position detection
|
- 99.9% recognition accuracy
|
||||||
|
|
||||||
|
2. Compatibility:
|
||||||
|
- MacOS Silicon only
|
||||||
|
- Firefox browser integration
|
||||||
|
- Chess.com specific optimizations
|
||||||
|
|
||||||
|
3. Security:
|
||||||
|
- App Sandbox compliance
|
||||||
|
- Privacy manifest requirements
|
||||||
|
- Secure data handling
|
||||||
|
|
||||||
|
## Documentation Standards
|
||||||
|
1. Code Documentation:
|
||||||
|
- API documentation
|
||||||
|
- Architecture diagrams
|
||||||
|
- Technical specifications
|
||||||
|
|
||||||
|
2. User Documentation:
|
||||||
|
- Installation guide
|
||||||
|
- Usage instructions
|
||||||
|
- Troubleshooting guide
|
||||||
|
|
||||||
|
3. Developer Documentation:
|
||||||
|
- Setup instructions
|
||||||
|
- Contribution guidelines
|
||||||
|
- Code style guide
|
||||||
|
|
||||||
|
## Detailed Technical Specifications
|
||||||
|
### Metal Rendering Pipeline
|
||||||
|
1. Pipeline Stages:
|
||||||
|
- Vertex processing
|
||||||
|
- Fragment shading
|
||||||
|
- Composition
|
||||||
|
- Post-processing
|
||||||
|
|
||||||
|
2. Performance Optimization:
|
||||||
|
- Command buffer optimization
|
||||||
|
- Texture compression
|
||||||
|
- Shader LOD management
|
||||||
|
- Frame pacing
|
||||||
|
|
||||||
|
3. Visual Effects:
|
||||||
|
- Anti-aliasing
|
||||||
|
- Bloom effects
|
||||||
|
- Motion blur
|
||||||
|
- Depth effects
|
||||||
|
|
||||||
|
### Vision Framework Integration
|
||||||
|
1. Image Analysis Pipeline:
|
||||||
|
- Image preprocessing
|
||||||
|
- Feature detection
|
||||||
|
- Object recognition
|
||||||
|
- Position tracking
|
||||||
|
|
||||||
|
2. Performance Considerations:
|
||||||
|
- GPU acceleration
|
||||||
|
- Batch processing
|
||||||
|
- Memory optimization
|
||||||
|
- Error handling
|
||||||
|
|
||||||
|
3. Integration Points:
|
||||||
|
- CoreML model integration
|
||||||
|
- Metal texture sharing
|
||||||
|
- SwiftUI view integration
|
||||||
|
- Async/await pattern
|
||||||
|
|
||||||
|
### Async/Await Patterns
|
||||||
|
1. Concurrency Model:
|
||||||
|
- Task groups
|
||||||
|
- Async sequences
|
||||||
|
- Actor isolation
|
||||||
|
- Continuations
|
||||||
|
|
||||||
|
2. Error Handling:
|
||||||
|
- Structured concurrency
|
||||||
|
- Task cancellation
|
||||||
|
- Error propagation
|
||||||
|
- Retry mechanisms
|
||||||
|
|
||||||
|
3. Performance Optimization:
|
||||||
|
- Task prioritization
|
||||||
|
- Resource contention management
|
||||||
|
- Memory safety
|
||||||
|
- Thread management
|
||||||
|
|
||||||
|
### CoreML Model Architecture
|
||||||
|
1. Model Specifications:
|
||||||
|
- Input/output formats
|
||||||
|
- Model quantization
|
||||||
|
- Neural engine optimization
|
||||||
|
- Model versioning
|
||||||
|
|
||||||
|
2. Training Pipeline:
|
||||||
|
- Data collection
|
||||||
|
- Model training
|
||||||
|
- Validation
|
||||||
|
- Deployment
|
||||||
|
|
||||||
|
3. Performance Considerations:
|
||||||
|
- Batch processing
|
||||||
|
- Memory management
|
||||||
|
- Model compression
|
||||||
|
- Inference optimization
|
||||||
|
|
||||||
|
### Stockfish Integration
|
||||||
|
1. Engine Configuration:
|
||||||
|
- Thread management
|
||||||
|
- Hash size optimization
|
||||||
|
- Analysis depth
|
||||||
|
- Time controls
|
||||||
|
|
||||||
|
2. Analysis Pipeline:
|
||||||
|
- Position evaluation
|
||||||
|
- Move generation
|
||||||
|
- Threat detection
|
||||||
|
- Position caching
|
||||||
|
|
||||||
|
3. Performance Optimization:
|
||||||
|
- Parallel analysis
|
||||||
|
- Cache management
|
||||||
|
- Engine tuning
|
||||||
|
- Resource allocation
|
||||||
|
|
|
||||||
90
collect_system_info.py
Normal file
90
collect_system_info.py
Normal file
|
|
@ -0,0 +1,90 @@
|
||||||
|
import subprocess
|
||||||
|
import platform
|
||||||
|
import json
|
||||||
|
import os
|
||||||
|
|
||||||
|
def get_system_info():
|
||||||
|
info = {}
|
||||||
|
|
||||||
|
# Basic System Info
|
||||||
|
info['os'] = {
|
||||||
|
'system': platform.system(),
|
||||||
|
'version': platform.mac_ver()[0],
|
||||||
|
'architecture': platform.machine()
|
||||||
|
}
|
||||||
|
|
||||||
|
# CPU Info
|
||||||
|
cpu_command = "sysctl -n machdep.cpu.brand_string"
|
||||||
|
info['cpu'] = subprocess.getoutput(cpu_command)
|
||||||
|
|
||||||
|
# Memory Info
|
||||||
|
mem_command = "sysctl hw.memsize"
|
||||||
|
mem_bytes = int(subprocess.getoutput(mem_command).split()[1])
|
||||||
|
info['memory_gb'] = mem_bytes / (1024**3)
|
||||||
|
|
||||||
|
# GPU Info
|
||||||
|
gpu_command = "system_profiler SPDisplaysDataType"
|
||||||
|
gpu_info = subprocess.getoutput(gpu_command)
|
||||||
|
info['gpu'] = gpu_info
|
||||||
|
|
||||||
|
# Screen Info
|
||||||
|
displays_command = "system_profiler SPDisplaysDataType"
|
||||||
|
displays_info = subprocess.getoutput(displays_command)
|
||||||
|
info['displays'] = displays_info
|
||||||
|
|
||||||
|
# Xcode Version
|
||||||
|
xcode_command = "xcodebuild -version"
|
||||||
|
try:
|
||||||
|
info['xcode'] = subprocess.getoutput(xcode_command)
|
||||||
|
except:
|
||||||
|
info['xcode'] = "Xcode not installed"
|
||||||
|
|
||||||
|
# Swift Version
|
||||||
|
swift_command = "swift --version"
|
||||||
|
try:
|
||||||
|
info['swift'] = subprocess.getoutput(swift_command)
|
||||||
|
except:
|
||||||
|
info['swift'] = "Swift not installed"
|
||||||
|
|
||||||
|
# Metal Support
|
||||||
|
metal_command = "system_profiler SPDisplaysDataType | grep Metal"
|
||||||
|
info['metal_support'] = subprocess.getoutput(metal_command)
|
||||||
|
|
||||||
|
return info
|
||||||
|
|
||||||
|
def save_info():
|
||||||
|
info = get_system_info()
|
||||||
|
|
||||||
|
# Save as JSON
|
||||||
|
with open('tech_specs.json', 'w') as f:
|
||||||
|
json.dump(info, f, indent=2)
|
||||||
|
|
||||||
|
# Save as readable text
|
||||||
|
with open('tech_specs.txt', 'w') as f:
|
||||||
|
f.write("Chess Teaching Assistant - Development System Specifications\n")
|
||||||
|
f.write("=" * 60 + "\n\n")
|
||||||
|
|
||||||
|
f.write("Operating System:\n")
|
||||||
|
f.write(f"- System: {info['os']['system']}\n")
|
||||||
|
f.write(f"- Version: {info['os']['version']}\n")
|
||||||
|
f.write(f"- Architecture: {info['os']['architecture']}\n\n")
|
||||||
|
|
||||||
|
f.write("Hardware:\n")
|
||||||
|
f.write(f"- CPU: {info['cpu']}\n")
|
||||||
|
f.write(f"- Memory: {info['memory_gb']:.2f} GB\n\n")
|
||||||
|
|
||||||
|
f.write("Development Tools:\n")
|
||||||
|
f.write(f"- Xcode: {info['xcode']}\n")
|
||||||
|
f.write(f"- Swift: {info['swift']}\n\n")
|
||||||
|
|
||||||
|
f.write("Graphics:\n")
|
||||||
|
f.write(f"- Metal Support:\n{info['metal_support']}\n\n")
|
||||||
|
|
||||||
|
f.write("Display Information:\n")
|
||||||
|
f.write(f"{info['displays']}\n")
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
save_info()
|
||||||
|
print("System information has been collected and saved to:")
|
||||||
|
print("- tech_specs.json (machine-readable)")
|
||||||
|
print("- tech_specs.txt (human-readable)")
|
||||||
Loading…
Add table
Reference in a new issue