Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
24 changes: 11 additions & 13 deletions .github/workflows/xcode-build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,18 +2,18 @@ name: Xcode - Build and Test

on:
push:
branches: [ "main" ]
branches: ["main"]
pull_request:
branches: [ "main" ]
branches: ["main"]

jobs:
jobs:
build:
name: Build and Test
strategy:
max-parallel: 2
fail-fast: false
matrix:
macos-version: [macos-15, macos-26]
macos-version: [macos-15, macos-26, xcode-27]
runs-on: ${{ matrix.macos-version }}
env:
scheme: ${{ 'Mactrix' }}
Expand All @@ -27,34 +27,32 @@ jobs:
run: |
xcodebuild clean build analyze \
-scheme "$scheme" \
-project Mactrix.xcodeproj \
-workspace Mactrix.xcworkspace \
-destination 'platform=macOS' | xcpretty && exit ${PIPESTATUS[0]}
- name: Test
run: |
xcodebuild test \
-workspace Mactrix.xcworkspace \
-scheme "$scheme" \
-project Mactrix.xcodeproj \
-destination 'platform=macOS' | xcpretty && exit ${PIPESTATUS[0]}
- name: Build release artifact
if: |
matrix.macos-version == 'macos-26' &&
github.event_name == 'push' &&
matrix.macos-version == 'macos-26' &&
github.event_name == 'push' &&
github.ref == 'refs/heads/main'
run: |
xcodebuild archive \
-project Mactrix.xcodeproj \
-workspace Mactrix.xcworkspace \
-scheme "$scheme" \
-configuration Release \
-destination 'platform=macOS' \
-archivePath ./Mactrix.xcarchive | xcpretty && exit ${PIPESTATUS[0]}
- name: Upload Artifact
if: |
matrix.macos-version == 'macos-26' &&
github.event_name == 'push' &&
matrix.macos-version == 'macos-26' &&
github.event_name == 'push' &&
github.ref == 'refs/heads/main'
uses: actions/upload-artifact@v4
with:
name: Mactrix.app
path: ./Mactrix.xcarchive/Products/Applications/


8 changes: 7 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
@@ -1,3 +1,9 @@
xcuserdata/
.DS_Store
/.build
/Packages
xcuserdata/
DerivedData/
.swiftpm/configuration/registries.json
.swiftpm/xcode/package.xcworkspace/contents.xcworkspacedata
.netrc
build/
4 changes: 4 additions & 0 deletions .sourcekit-lsp/config.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
{
"backgroundIndexing": true,
"backgroundPreparationMode": "build"
}
75 changes: 75 additions & 0 deletions .swift-format
Original file line number Diff line number Diff line change
@@ -0,0 +1,75 @@
{
"fileScopedDeclarationPrivacy" : {
"accessLevel" : "private"
},
"indentConditionalCompilationBlocks" : true,
"indentSwitchCaseLabels" : false,
"indentation" : {
"spaces" : 2
},
"lineBreakAroundMultilineExpressionChainComponents" : false,
"lineBreakBeforeControlFlowKeywords" : false,
"lineBreakBeforeEachArgument" : false,
"lineBreakBeforeEachGenericRequirement" : false,
"lineBreakBetweenDeclarationAttributes" : false,
"lineLength" : 100,
"maximumBlankLines" : 1,
"multiElementCollectionTrailingCommas" : true,
"noAssignmentInExpressions" : {
"allowedFunctions" : [
"XCTAssertNoThrow"
]
},
"prioritizeKeepingFunctionOutputTogether" : false,
"reflowMultilineStringLiterals" : "never",
"respectsExistingLineBreaks" : true,
"rules" : {
"AllPublicDeclarationsHaveDocumentation" : false,
"AlwaysUseLiteralForEmptyCollectionInit" : false,
"AlwaysUseLowerCamelCase" : true,
"AmbiguousTrailingClosureOverload" : true,
"AvoidRetroactiveConformances" : true,
"BeginDocumentationCommentWithOneLineSummary" : false,
"DoNotUseSemicolons" : true,
"DontRepeatTypeInStaticProperties" : true,
"FileScopedDeclarationPrivacy" : true,
"FullyIndirectEnum" : true,
"GroupNumericLiterals" : true,
"IdentifiersMustBeASCII" : true,
"NeverForceUnwrap" : false,
"NeverUseForceTry" : false,
"NeverUseImplicitlyUnwrappedOptionals" : false,
"NoAccessLevelOnExtensionDeclaration" : true,
"NoAssignmentInExpressions" : true,
"NoBlockComments" : true,
"NoCasesWithOnlyFallthrough" : true,
"NoEmptyLinesOpeningClosingBraces" : false,
"NoEmptyTrailingClosureParentheses" : true,
"NoLabelsInCasePatterns" : true,
"NoLeadingUnderscores" : false,
"NoParensAroundConditions" : true,
"NoPlaygroundLiterals" : true,
"NoVoidReturnOnFunctionSignature" : true,
"OmitExplicitReturns" : false,
"OneCasePerLine" : true,
"OneVariableDeclarationPerLine" : true,
"OnlyOneTrailingClosureArgument" : true,
"OrderedImports" : true,
"ReplaceForEachWithForLoop" : true,
"ReturnVoidInsteadOfEmptyTuple" : true,
"TypeNamesShouldBeCapitalized" : true,
"UseEarlyExits" : false,
"UseExplicitNilCheckInConditions" : true,
"UseLetInEveryBoundCaseVariable" : true,
"UseShorthandTypeNames" : true,
"UseSingleLinePropertyGetter" : true,
"UseSynthesizedInitializer" : true,
"UseTripleSlashForDocumentationComments" : true,
"UseWhereClausesInForLoops" : false,
"ValidateDocumentationComments" : false
},
"spacesAroundRangeFormationOperators" : false,
"spacesBeforeEndOfLineComments" : 2,
"tabWidth" : 8,
"version" : 1
}
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
LastUpgradeVersion = "2610"
LastUpgradeVersion = "2700"
version = "1.7">
<BuildAction
parallelizeBuildables = "YES"
Expand All @@ -15,9 +15,8 @@
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "Utils"
BuildableName = "Utils"
BlueprintName = "Utils"
BlueprintIdentifier = "MactrixApp"
BuildableName = "MactrixApp"
ReferencedContainer = "container:">
</BuildableReference>
</BuildActionEntry>
Expand All @@ -27,20 +26,13 @@
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
shouldUseLaunchSchemeArgsEnv = "YES"
shouldAutocreateTestPlan = "YES">
<Testables>
<TestableReference
skipped = "NO">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "UtilsTests"
BuildableName = "UtilsTests"
BlueprintName = "UtilsTests"
ReferencedContainer = "container:">
</BuildableReference>
</TestableReference>
</Testables>
shouldUseLaunchSchemeArgsEnv = "YES">
<TestPlans>
<TestPlanReference
reference = "container:Mactrix.xctestplan"
default = "YES">
</TestPlanReference>
</TestPlans>
</TestAction>
<LaunchAction
buildConfiguration = "Debug"
Expand All @@ -51,7 +43,8 @@
ignoresPersistentStateOnLaunch = "NO"
debugDocumentVersioning = "YES"
debugServiceExtension = "internal"
allowLocationSimulation = "YES">
allowLocationSimulation = "YES"
queueDebuggingEnabled = "No">
</LaunchAction>
<ProfileAction
buildConfiguration = "Release"
Expand All @@ -62,9 +55,8 @@
<MacroExpansion>
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "Utils"
BuildableName = "Utils"
BlueprintName = "Utils"
BlueprintIdentifier = "MactrixApp"
BuildableName = "MactrixApp"
ReferencedContainer = "container:">
</BuildableReference>
</MacroExpansion>
Expand Down
89 changes: 15 additions & 74 deletions Mactrix.xcodeproj/project.pbxproj
Original file line number Diff line number Diff line change
Expand Up @@ -7,16 +7,11 @@
objects = {

/* Begin PBXBuildFile section */
3409F4EC2EBFD8D4009537B4 /* UI in Frameworks */ = {isa = PBXBuildFile; productRef = 3409F4EB2EBFD8D4009537B4 /* UI */; };
345E77E82ED9F309002E5B9A /* Utils in Frameworks */ = {isa = PBXBuildFile; productRef = 345E77E72ED9F309002E5B9A /* Utils */; };
348E99882F40ABC3009F57A9 /* AsyncAlgorithms in Frameworks */ = {isa = PBXBuildFile; productRef = 348E99872F40ABC3009F57A9 /* AsyncAlgorithms */; };
34913F6E2EC0F532003034CB /* MatrixRustSDK in Frameworks */ = {isa = PBXBuildFile; productRef = 34913F6D2EC0F532003034CB /* MatrixRustSDK */; };
34913F702EC0F59F003034CB /* Models in Frameworks */ = {isa = PBXBuildFile; productRef = 34913F6F2EC0F59F003034CB /* Models */; };
349B041C2F5D77E80023FBF4 /* MessageFormatting in Frameworks */ = {isa = PBXBuildFile; productRef = 349B041B2F5D77E80023FBF4 /* MessageFormatting */; };
3444A623306CF7A000673405 /* MactrixApp in Frameworks */ = {isa = PBXBuildFile; productRef = 3444A622306CF7A000673405 /* MactrixApp */; };
34A3DEF5306BF85D00866303 /* MactrixApp in Frameworks */ = {isa = PBXBuildFile; productRef = 34A3DEF4306BF85D00866303 /* MactrixApp */; };
/* End PBXBuildFile section */

/* Begin PBXFileReference section */
3409F6012EBFDB93009537B4 /* MactrixLibrary */ = {isa = PBXFileReference; lastKnownFileType = wrapper; path = MactrixLibrary; sourceTree = "<group>"; };
343858422EB394590010922A /* Mactrix.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Mactrix.app; sourceTree = BUILT_PRODUCTS_DIR; };
/* End PBXFileReference section */

Expand Down Expand Up @@ -46,32 +41,19 @@
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
349B041C2F5D77E80023FBF4 /* MessageFormatting in Frameworks */,
3409F4EC2EBFD8D4009537B4 /* UI in Frameworks */,
34913F6E2EC0F532003034CB /* MatrixRustSDK in Frameworks */,
345E77E82ED9F309002E5B9A /* Utils in Frameworks */,
34913F702EC0F59F003034CB /* Models in Frameworks */,
348E99882F40ABC3009F57A9 /* AsyncAlgorithms in Frameworks */,
34A3DEF5306BF85D00866303 /* MactrixApp in Frameworks */,
3444A623306CF7A000673405 /* MactrixApp in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXFrameworksBuildPhase section */

/* Begin PBXGroup section */
342480052EBF91B500C85D82 /* Frameworks */ = {
isa = PBXGroup;
children = (
);
name = Frameworks;
sourceTree = "<group>";
};
343858392EB394590010922A = {
isa = PBXGroup;
children = (
343858442EB394590010922A /* Mactrix */,
342480052EBF91B500C85D82 /* Frameworks */,
343858432EB394590010922A /* Products */,
3409F6012EBFDB93009537B4 /* MactrixLibrary */,
);
sourceTree = "<group>";
};
Expand Down Expand Up @@ -103,12 +85,8 @@
);
name = Mactrix;
packageProductDependencies = (
3409F4EB2EBFD8D4009537B4 /* UI */,
34913F6D2EC0F532003034CB /* MatrixRustSDK */,
34913F6F2EC0F59F003034CB /* Models */,
345E77E72ED9F309002E5B9A /* Utils */,
348E99872F40ABC3009F57A9 /* AsyncAlgorithms */,
349B041B2F5D77E80023FBF4 /* MessageFormatting */,
34A3DEF4306BF85D00866303 /* MactrixApp */,
3444A622306CF7A000673405 /* MactrixApp */,
);
productName = Mactrix;
productReference = 343858422EB394590010922A /* Mactrix.app */;
Expand Down Expand Up @@ -139,9 +117,7 @@
mainGroup = 343858392EB394590010922A;
minimizedProjectReferenceProxies = 1;
packageReferences = (
342C624C2EB4DDE600E2426A /* XCRemoteSwiftPackageReference "matrix-rust-components-swift" */,
3409F4E82EBFD8D4009537B4 /* XCLocalSwiftPackageReference "MactrixLibrary" */,
348E99862F40ABC3009F57A9 /* XCRemoteSwiftPackageReference "swift-async-algorithms" */,
3444A621306CF7A000673405 /* XCLocalSwiftPackageReference "../Mactrix" */,
);
preferredProjectObjectVersion = 77;
productRefGroup = 343858432EB394590010922A /* Products */;
Expand Down Expand Up @@ -330,6 +306,7 @@
"$(inherited)",
"@executable_path/../Frameworks",
);
MACOSX_DEPLOYMENT_TARGET = 15;
MARKETING_VERSION = 0.3.0;
PRODUCT_BUNDLE_IDENTIFIER = dk.qpqp.mactrix;
PRODUCT_NAME = "$(TARGET_NAME)";
Expand Down Expand Up @@ -382,6 +359,7 @@
"$(inherited)",
"@executable_path/../Frameworks",
);
MACOSX_DEPLOYMENT_TARGET = 15;
MARKETING_VERSION = 0.3.0;
PRODUCT_BUNDLE_IDENTIFIER = dk.qpqp.mactrix;
PRODUCT_NAME = "$(TARGET_NAME)";
Expand Down Expand Up @@ -424,57 +402,20 @@
/* End XCConfigurationList section */

/* Begin XCLocalSwiftPackageReference section */
3409F4E82EBFD8D4009537B4 /* XCLocalSwiftPackageReference "MactrixLibrary" */ = {
3444A621306CF7A000673405 /* XCLocalSwiftPackageReference "../Mactrix" */ = {
isa = XCLocalSwiftPackageReference;
relativePath = MactrixLibrary;
relativePath = ../Mactrix;
};
/* End XCLocalSwiftPackageReference section */

/* Begin XCRemoteSwiftPackageReference section */
342C624C2EB4DDE600E2426A /* XCRemoteSwiftPackageReference "matrix-rust-components-swift" */ = {
isa = XCRemoteSwiftPackageReference;
repositoryURL = "https://github.com/matrix-org/matrix-rust-components-swift";
requirement = {
branch = main;
kind = branch;
};
};
348E99862F40ABC3009F57A9 /* XCRemoteSwiftPackageReference "swift-async-algorithms" */ = {
isa = XCRemoteSwiftPackageReference;
repositoryURL = "https://github.com/apple/swift-async-algorithms.git";
requirement = {
kind = upToNextMajorVersion;
minimumVersion = 1.1.2;
};
};
/* End XCRemoteSwiftPackageReference section */

/* Begin XCSwiftPackageProductDependency section */
3409F4EB2EBFD8D4009537B4 /* UI */ = {
isa = XCSwiftPackageProductDependency;
productName = UI;
};
345E77E72ED9F309002E5B9A /* Utils */ = {
isa = XCSwiftPackageProductDependency;
productName = Utils;
};
348E99872F40ABC3009F57A9 /* AsyncAlgorithms */ = {
isa = XCSwiftPackageProductDependency;
package = 348E99862F40ABC3009F57A9 /* XCRemoteSwiftPackageReference "swift-async-algorithms" */;
productName = AsyncAlgorithms;
};
34913F6D2EC0F532003034CB /* MatrixRustSDK */ = {
isa = XCSwiftPackageProductDependency;
package = 342C624C2EB4DDE600E2426A /* XCRemoteSwiftPackageReference "matrix-rust-components-swift" */;
productName = MatrixRustSDK;
};
34913F6F2EC0F59F003034CB /* Models */ = {
3444A622306CF7A000673405 /* MactrixApp */ = {
isa = XCSwiftPackageProductDependency;
productName = Models;
productName = MactrixApp;
};
349B041B2F5D77E80023FBF4 /* MessageFormatting */ = {
34A3DEF4306BF85D00866303 /* MactrixApp */ = {
isa = XCSwiftPackageProductDependency;
productName = MessageFormatting;
productName = MactrixApp;
};
/* End XCSwiftPackageProductDependency section */
};
Expand Down
Loading
Loading