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
16 changes: 8 additions & 8 deletions .github/workflows/pull-request.yml
Original file line number Diff line number Diff line change
Expand Up @@ -12,11 +12,11 @@ concurrency:
cancel-in-progress: true

env:
XCODE_VERSION: "16.3"
XCODE_VERSION: "26.1"

jobs:
prepare:
runs-on: macos-15
runs-on: macos-26
outputs:
platforms: ${{ steps.platforms.outputs.platforms }}
scheme: ${{ steps.scheme.outputs.scheme }}
Expand Down Expand Up @@ -62,7 +62,7 @@ jobs:

build-and-test:
needs: prepare
runs-on: macos-15
runs-on: macos-26
strategy:
fail-fast: false
matrix:
Expand All @@ -81,16 +81,16 @@ jobs:
destination="platform=macOS,variant=Mac Catalyst"
;;
ios)
destination="platform=iOS Simulator,name=iPhone 16 Pro Max,OS=latest"
destination="platform=iOS Simulator,name=iPhone 17 Pro Max,OS=26.1"
;;
tvos)
destination="platform=tvOS Simulator,name=Apple TV 4K (3rd generation),OS=latest"
destination="platform=tvOS Simulator,name=Apple TV 4K (3rd generation),OS=26.1"
;;
watchos)
destination="platform=watchOS Simulator,name=Apple Watch Series 10 (46mm),OS=latest"
destination="platform=watchOS Simulator,name=Apple Watch Series 11 (46mm),OS=26.1"
;;
visionos)
destination="platform=visionOS Simulator,name=Apple Vision Pro,OS=latest"
destination="platform=visionOS Simulator,name=Apple Vision Pro,OS=26.1"
;;
*)
echo "Unknown platform: ${{ matrix.platform }}"
Expand Down Expand Up @@ -136,4 +136,4 @@ jobs:
if: ${{ matrix.platform == 'macos' }}
uses: codecov/codecov-action@v5
with:
fail_ci_if_error: true
fail_ci_if_error: true
4 changes: 2 additions & 2 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -6,11 +6,11 @@ on:
- '*'

env:
XCODE_VERSION: "16.3"
XCODE_VERSION: "26.1"

jobs:
release:
runs-on: macos-15
runs-on: macos-26
steps:
- uses: actions/checkout@v4
with:
Expand Down
4 changes: 2 additions & 2 deletions .mise.toml
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,8 @@ swiftlint = '~/.local/bin/mise x -- swiftlint'
swiftformat = '~/.local/bin/mise x -- swiftformat'

[tools]
swiftlint = "0.58.2"
swiftformat = "0.55.5"
swiftlint = "0.62.2"
swiftformat = "0.58.5"

[tasks.lint]
description = 'Run all linters'
Expand Down
2 changes: 1 addition & 1 deletion .swift-version
Original file line number Diff line number Diff line change
@@ -1 +1 @@
6.1
6.2
209 changes: 114 additions & 95 deletions .swiftformat
Original file line number Diff line number Diff line change
@@ -1,106 +1,125 @@
--acronyms ID,URL,UUID
--allman false
--anonymousforeach convert
--assetliterals visual-width
--asynccapturing
--beforemarks
--binarygrouping 4,8
--callsiteparen default
--categorymark "MARK: %c"
--classthreshold 0
--closingparen default
--closurevoid remove
--commas inline
--complexattrs prev-line
--computedvarattrs prev-line
--condassignment always
--conflictmarkers reject
--dateformat system
--decimalgrouping 3,6
--doccomments before-declarations
--elseposition same-line
--emptybraces no-space
--enumnamespaces always
--enumthreshold 0
--exponentcase lowercase
--exponentgrouping disabled
--extensionacl on-declarations
--extensionlength 0
--extensionmark "MARK: - %t + %c"
--fractiongrouping disabled
--allow-partial-wrapping true
--anonymous-for-each convert
--asset-literals visual-width
--async-capturing
--before-marks
--binary-grouping 4,8
--blank-line-after-switch-case multiline-only
--call-site-paren default
--category-mark "MARK: %c"
--class-threshold 0
--closing-paren default
--closure-void remove
--complex-attributes prev-line
--computed-var-attributes prev-line
--conditional-assignment always
--conflict-markers reject
--date-format system
--decimal-grouping 3,6
--default-test-suite-attributes
--doc-comments before-declarations
--else-position same-line
--empty-braces no-space
--enum-namespaces always
--enum-threshold 0
--equatable-macro none
--exponent-case lowercase
--exponent-grouping disabled
--extension-acl on-declarations
--extension-mark "MARK: - %t + %c"
--extension-threshold 0
--file-macro "#file"
--fraction-grouping disabled
--fragment false
--funcattributes prev-line
--generictypes
--groupblanklines true
--groupedextension "MARK: %c"
--guardelse next-line
--func-attributes prev-line
--generic-types
--group-blank-lines true
--grouped-extension "MARK: %c"
--guard-else next-line
--header ignore
--hexgrouping 4,8
--hexliteralcase uppercase
--hex-grouping 4,8
--hex-literal-case uppercase
--ifdef indent
--importgrouping testable-first
--import-grouping testable-first
--indent 4
--indentcase false
--indentstrings false
--inferredtypes always
--initcodernil false
--inlinedforeach ignore
--indent-case false
--indent-strings false
--inferred-types always
--init-coder-nil false
--lifecycle
--lineaftermarks true
--line-after-marks true
--line-between-guards false
--linebreaks lf
--markcategories true
--markextensions always
--marktypes always
--maxwidth none
--modifierorder
--nevertrailing
--nilinit remove
--noncomplexattrs
--nospaceoperators
--nowrapoperators
--octalgrouping 4,8
--operatorfunc spaced
--organizationmode visibility
--organizetypes actor,class,enum,struct
--patternlet hoist
--preservedecls
--preservedsymbols Package
--propertytypes inferred
--mark-categories true
--mark-class-threshold 0
--mark-enum-threshold 0
--mark-extension-threshold 0
--mark-extensions always
--mark-struct-threshold 0
--mark-types always
--markdown-files ignore
--max-width none
--modifier-order
--never-trailing
--nil-init remove
--no-space-operators
--no-wrap-operators
--non-complex-attributes
--octal-grouping 4,8
--operator-func spaced
--organization-mode visibility
--organize-types actor,class,enum,struct
--pattern-let hoist
--preserve-acronyms
--preserve-decls
--preserved-property-types Package
--property-types inferred
--ranges spaced
--redundant-async always
--redundant-throws always
--self init-only
--selfrequired
--semicolons inline
--shortoptionals always
--smarttabs enabled
--someany true
--sortedpatterns
--storedvarattrs prev-line
--stripunusedargs always
--structthreshold 0
--tabwidth unspecified
--throwcapturing
--self-required
--semicolons inline-only
--short-optionals always
--single-line-for-each ignore
--smart-tabs enabled
--some-any true
--sort-swiftui-properties none
--sorted-patterns
--stored-var-attributes prev-line
--strip-unused-args always
--struct-threshold 0
--tab-width unspecified
--throw-capturing
--timezone system
--trailingclosures
--trimwhitespace always
--typeattributes prev-line
--typeblanklines preserve
--typedelimiter space-after
--typemark "MARK: - %t"
--typemarks
--typeorder
--visibilitymarks
--visibilityorder
--voidtype void
--wraparguments before-first
--wrapcollections before-first
--wrapconditions after-first
--wrapeffects preserve
--wrapenumcases always
--wrapparameters before-first
--wrapreturntype preserve
--wrapternary before-operators
--wraptypealiases after-first
--xcodeindentation enabled
--yodaswap always
--disable enumNamespaces,fileHeader,headerFileName,redundantInternal,wrap,wrapMultilineStatementBraces,wrapSingleLineComments
--enable acronyms,blankLinesBetweenImports,blockComments,docComments,isEmpty,propertyTypes,redundantProperty,sortSwitchCases,unusedPrivateDeclarations,wrapConditionalBodies,wrapEnumCases
--trailing-closures
--trailing-commas never
--trim-whitespace always
--type-attributes prev-line
--type-blank-lines preserve
--type-body-marks preserve
--type-delimiter space-after
--type-mark "MARK: - %t"
--type-marks
--type-order
--url-macro none
--visibility-marks
--visibility-order
--void-type Void
--wrap-arguments before-first
--wrap-collections before-first
--wrap-conditions after-first
--wrap-effects preserve
--wrap-enum-cases always
--wrap-parameters before-first
--wrap-return-type preserve
--wrap-string-interpolation default
--wrap-ternary before-operators
--wrap-type-aliases after-first
--xcode-indentation enabled
--xctest-symbols
--yoda-swap always
--disable fileHeader,headerFileName,redundantInternal,wrap,wrapMultilineStatementBraces,wrapSingleLineComments
--enable acronyms,blankLinesBetweenImports,blockComments,docComments,emptyExtensions,environmentEntry,isEmpty,noForceTryInTests,noForceUnwrapInTests,noGuardInTests,propertyTypes,redundantAsync,redundantMemberwiseInit,redundantProperty,redundantThrows,singlePropertyPerLine,sortSwitchCases,unusedPrivateDeclarations,wrapConditionalBodies,wrapEnumCases,wrapMultilineFunctionChains
20 changes: 13 additions & 7 deletions .swiftlint.yml
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ opt_in_rules:
- accessibility_trait_for_button
- anonymous_argument_in_multiline_closure
- array_init
# async_without_await - not recognized
- async_without_await
# attributes
# balanced_xctest_lifecycle
# closure_body_length
Expand All @@ -21,7 +21,7 @@ opt_in_rules:
- contains_over_first_not_nil
- contains_over_range_nil_comparison
# contrasted_opening_brace
# convenience_type - not working with Testing framework
# convenience_type
- direct_return
- discarded_notification_center_observer
- discouraged_assert
Expand Down Expand Up @@ -56,6 +56,7 @@ opt_in_rules:
- identical_operands
- implicit_return
# implicitly_unwrapped_optional
# incompatible_concurrency_annotation
# indentation_width
- joined_default_parameter
- last_where
Expand All @@ -66,7 +67,7 @@ opt_in_rules:
- local_doc_comment
- lower_acl_than_parent
# missing_docs
# modifier_order
- modifier_order
- multiline_arguments
- multiline_arguments_brackets
- multiline_function_chains
Expand All @@ -90,6 +91,8 @@ opt_in_rules:
- override_in_extension
- pattern_matching_keywords
- period_spacing
- prefer_asset_symbols
- prefer_condition_list
- prefer_key_path
# prefer_nimble
- prefer_self_in_static_references
Expand Down Expand Up @@ -123,7 +126,7 @@ opt_in_rules:
- static_operator
# strict_fileprivate
- strong_iboutlet
- superfluous_else
# superfluous_else
- switch_case_on_newline
- test_case_accessibility
- toggle_bool
Expand Down Expand Up @@ -164,14 +167,17 @@ file_length:
warning: 500

identifier_name:
excluded: [id, x, y, z]
excluded: [id, ui, x, y, z, dx, dy, dz]

line_length:
ignores_comments: true

nesting:
type_level: 2

no_magic_numbers:
allowed_numbers: [0.0, 1.0, 2.0, 100.0]

type_name:
allowed_symbols: ["_"]
max_length: 50
Expand All @@ -183,11 +189,11 @@ custom_rules:
global_actor_attribute_order:
name: "Global actor attribute order"
message: "Global actor should be the first attribute."
regex: "(?-s)(@.+[^,\\s]\\s+@.*Actor)"
regex: "(?-s)(@.+[^,\\s]\\s+@.*Actor\\s)"
sendable_attribute_order:
name: "Sendable attribute order"
message: "Sendable should be the first attribute."
regex: "(?-s)(@.+[^,\\s]\\s+@Sendable)"
regex: "(?-s)(@.+[^,\\s]\\s+@Sendable\\s)"
autoclosure_attribute_order:
name: "Autoclosure attribute order"
message: "Autoclosure should be the last attribute."
Expand Down
Loading
Loading