Skip to content
Merged
Show file tree
Hide file tree
Changes from 42 commits
Commits
Show all changes
51 commits
Select commit Hold shift + click to select a range
b3c36dd
chore(infra): add GitHub workflows and project.yml to all plugin subr…
leogdion Oct 12, 2025
e70e5d7
git subrepo push Packages/SundialKitMessagable
leogdion Oct 12, 2025
47271ee
feat(combine): add skeletal Sources, Tests, and CodeQL workflow
leogdion Oct 12, 2025
8cd5b67
feat(infra): add dependency management and update CI workflows
leogdion Oct 13, 2025
a475d83
fix(infra): make ensure-remote-deps.sh cross-platform
leogdion Oct 13, 2025
32ee3c9
feat(combine,messagable): add SundialKit dependency to Package.swift
leogdion Oct 13, 2025
a7755ff
git subrepo push Packages/SundialKitBinary
leogdion Oct 13, 2025
421ca2e
Fixing Linting Issues
leogdion Oct 13, 2025
fdf6806
git subrepo push Packages/SundialKitBinary
leogdion Oct 13, 2025
1060a3c
fixing swift-build run
leogdion Oct 13, 2025
5609050
git subrepo push Packages/SundialKitBinary
leogdion Oct 13, 2025
c46f0ea
fixing tests for now
leogdion Oct 14, 2025
0e5ef0d
git subrepo push Packages/SundialKitBinary
leogdion Oct 14, 2025
bb99dbc
removing support for Swift 6.0 and older
leogdion Oct 14, 2025
b0525a2
fixing tests for Swift 6.1
leogdion Oct 14, 2025
f28e8d1
fixing unit tests on Xcode 16
leogdion Oct 14, 2025
4039d3f
docs(v2.0.0): complete Phase 6 - final validation and documentation
leogdion Oct 16, 2025
96f40cd
fixing linting
leogdion Oct 16, 2025
9e7923a
Fixing Workflows
leogdion Oct 16, 2025
9fa10be
test(infra): migrate tests to module-specific targets
leogdion Oct 20, 2025
d5c846b
Merge branch 'mainactor' into 43-separate-targets
leogdion Oct 20, 2025
93e140f
Merge branch 'real-mainactor' into 43-separate-targets
leogdion Oct 20, 2025
3431612
updating BushelKit to v2.3.0-beta.1
leogdion Oct 22, 2025
e7dd0b4
fix(lint): Resolve linting violations across all packages
leogdion Oct 22, 2025
ba60176
fixing ensure-remote-deps for package name
leogdion Oct 22, 2025
41af1b5
fixing Combine for Ubuntu
leogdion Oct 22, 2025
f8aa829
refactor: extract helper types from NetworkMonitor and ConnectivityOb…
leogdion Oct 23, 2025
1fadaed
fixing remote deps script
leogdion Oct 24, 2025
9cdd634
refactor(watchconnectivity): split WatchConnectivitySession into focu…
leogdion Oct 24, 2025
799994e
fixing remaining linting issues
leogdion Oct 24, 2025
052c6cd
fix(infra): ensure-remote-deps.sh generates SwiftLint-compliant multi…
leogdion Oct 24, 2025
3f92768
refactor(all): standardize on millisecond-based sleep helper and add …
leogdion Oct 26, 2025
d3be6d6
chore: merge demo-app-mise-migration into v1.0.0
leogdion Oct 31, 2025
ad8582d
fix(test): resolve Swift 6.1 strict concurrency issues in SundialKitS…
leogdion Nov 13, 2025
16dcb44
fix(ci): update ensure-remote-deps scripts to use correct branch
leogdion Nov 13, 2025
81cae1e
feat: migrate print statements to OSLog with unified logging infrastr…
leogdion Nov 13, 2025
f23098f
feat(logging): duplicate Logger.swift in subrepos for independent builds
leogdion Nov 13, 2025
a9f1478
fix(logging): add platform guards for OSLog imports to support Linux …
leogdion Nov 14, 2025
3ecdec7
Update import condition for os.log
leogdion Nov 14, 2025
688243a
fixing linting issues [skip ci]
leogdion Nov 14, 2025
124af15
Fixing Tests and Linting Issues
leogdion Nov 15, 2025
899c22a
feat(docs): add DocC preview script with auto-rebuild
leogdion Nov 19, 2025
0b8ae65
docs(docc): address TODOs and add NetworkObserver default initializers
leogdion Nov 20, 2025
cbcd2cc
docs(docc): remove MainActor references and transport selection details
leogdion Nov 21, 2025
0825dc3
docs(docc): enhance plugin documentation and add new logo
leogdion Nov 21, 2025
068011f
Updating Documentation (#66)
leogdion Nov 24, 2025
e0e849c
Fix README Files (#70)
leogdion Nov 24, 2025
70c5854
chore(plugins): update Package.swift to use remote SundialKit depende…
leogdion Nov 24, 2025
d7e6fce
Remove 'Ensure remote dependencies' step from workflow
leogdion Nov 24, 2025
94a461e
Remove ensure remote dependencies step
leogdion Nov 24, 2025
6aaf2a3
Fixing PR Issues (#3)
leogdion Nov 25, 2025
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
32 changes: 32 additions & 0 deletions .devcontainer/devcontainer.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
{
"name": "Swift 6.2",
"image": "swift:6.2",
"features": {
"ghcr.io/devcontainers/features/common-utils:2": {
"installZsh": "false",
"username": "vscode",
"upgradePackages": "false"
},
"ghcr.io/devcontainers/features/git:1": {
"version": "os-provided",
"ppa": "false"
}
},
"postStartCommand": "git config --global --add safe.directory ${containerWorkspaceFolder}",
"runArgs": [
"--cap-add=SYS_PTRACE",
"--security-opt",
"seccomp=unconfined"
],
"customizations": {
"vscode": {
"settings": {
"lldb.library": "/usr/lib/liblldb.so"
},
"extensions": [
"sswg.swift-lang"
]
}
},
"remoteUser": "root"
}
32 changes: 32 additions & 0 deletions .devcontainer/swift-6.1-nightly/devcontainer.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
{
"name": "Swift 6.1 Nightly",
"image": "swiftlang/swift:nightly-6.1-noble",
"features": {
"ghcr.io/devcontainers/features/common-utils:2": {
"installZsh": "false",
"username": "vscode",
"upgradePackages": "false"
},
"ghcr.io/devcontainers/features/git:1": {
"version": "os-provided",
"ppa": "false"
}
},
"postStartCommand": "git config --global --add safe.directory ${containerWorkspaceFolder}",
"runArgs": [
"--cap-add=SYS_PTRACE",
"--security-opt",
"seccomp=unconfined"
],
"customizations": {
"vscode": {
"settings": {
"lldb.library": "/usr/lib/liblldb.so"
},
"extensions": [
"sswg.swift-lang"
]
}
},
"remoteUser": "root"
}
32 changes: 32 additions & 0 deletions .devcontainer/swift-6.1/devcontainer.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
{
"name": "Swift 6.1",
"image": "swift:6.1",
"features": {
"ghcr.io/devcontainers/features/common-utils:2": {
"installZsh": "false",
"username": "vscode",
"upgradePackages": "false"
},
"ghcr.io/devcontainers/features/git:1": {
"version": "os-provided",
"ppa": "false"
}
},
"postStartCommand": "git config --global --add safe.directory ${containerWorkspaceFolder}",
"runArgs": [
"--cap-add=SYS_PTRACE",
"--security-opt",
"seccomp=unconfined"
],
"customizations": {
"vscode": {
"settings": {
"lldb.library": "/usr/lib/liblldb.so"
},
"extensions": [
"sswg.swift-lang"
]
}
},
"remoteUser": "root"
}
40 changes: 40 additions & 0 deletions .devcontainer/swift-6.2-nightly/devcontainer.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
{
"name": "Swift 6.2 Nightly",
"image": "swiftlang/swift:nightly-6.2-noble",
"features": {
"ghcr.io/devcontainers/features/common-utils:2": {
"installZsh": "false",
"username": "vscode",
"upgradePackages": "false"
},
"ghcr.io/devcontainers/features/git:1": {
"version": "os-provided",
"ppa": "false"
}
Comment on lines +5 to +13
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🛠️ Refactor suggestion | 🟠 Major

Fix indentation to match other devcontainer files.

Indentation in the features section uses 4+ spaces inconsistently compared to stable Swift devcontainers which use 2-space indentation. Normalize to match .devcontainer/devcontainer.json and .devcontainer/swift-6.1/devcontainer.json:

  "features": {
-      "ghcr.io/devcontainers/features/common-utils:2": {
-          "installZsh": "false",
-          "username": "vscode",
-          "upgradePackages": "false"
-      },
-      "ghcr.io/devcontainers/features/git:1": {
-          "version": "os-provided",
-          "ppa": "false"
-      }
+    "ghcr.io/devcontainers/features/common-utils:2": {
+      "installZsh": "false",
+      "username": "vscode",
+      "upgradePackages": "false"
+    },
+    "ghcr.io/devcontainers/features/git:1": {
+      "version": "os-provided",
+      "ppa": "false"
+    }
🤖 Prompt for AI Agents
.devcontainer/swift-6.2-nightly/devcontainer.json around lines 5 to 13: the
features block uses inconsistent 4+ space indentation; normalize the JSON to use
2-space indentation for these entries to match .devcontainer/devcontainer.json
and .devcontainer/swift-6.1/devcontainer.json (adjust spaces before keys and
nested values so each nesting level is two spaces).

},
"postStartCommand": "git config --global --add safe.directory ${containerWorkspaceFolder}",
"runArgs": [
"--cap-add=SYS_PTRACE",
"--security-opt",
"seccomp=unconfined"
],
// Configure tool-specific properties.
"customizations": {
// Configure properties specific to VS Code.
"vscode": {
// Set *default* container specific settings.json values on container create.
"settings": {
"lldb.library": "/usr/lib/liblldb.so"
},
// Add the IDs of extensions you want installed when the container is created.
"extensions": [
"sswg.swift-lang"
]
}
},
// Use 'forwardPorts' to make a list of ports inside the container available locally.
// "forwardPorts": [],

// Set `remoteUser` to `root` to connect as root instead. More info: https://aka.ms/vscode-remote/containers/non-root.
"remoteUser": "root"
Comment on lines +21 to +39
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🛠️ Refactor suggestion | 🟠 Major

Remove inline comments for consistency across devcontainer variants.

This nightly variant includes inline JSON comments (lines 21, 23, 25, 29, 35, 38) while stable Swift devcontainers omit them. Remove these comments to maintain consistent style across all devcontainer configurations:

  },
-  // Configure tool-specific properties.
  "customizations": {
-      // Configure properties specific to VS Code.
      "vscode": {
-          // Set *default* container specific settings.json values on container create.
          "settings": {
              "lldb.library": "/usr/lib/liblldb.so"
          },
-          // Add the IDs of extensions you want installed when the container is created.
           "extensions": [
              "sswg.swift-lang"
          ]
      }
  },
-  // Use 'forwardPorts' to make a list of ports inside the container available locally.
-  // "forwardPorts": [],
-
-  // Set `remoteUser` to `root` to connect as root instead. More info: https://aka.ms/vscode-remote/containers/non-root.
  "remoteUser": "root"
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
// Configure tool-specific properties.
"customizations": {
// Configure properties specific to VS Code.
"vscode": {
// Set *default* container specific settings.json values on container create.
"settings": {
"lldb.library": "/usr/lib/liblldb.so"
},
// Add the IDs of extensions you want installed when the container is created.
"extensions": [
"sswg.swift-lang"
]
}
},
// Use 'forwardPorts' to make a list of ports inside the container available locally.
// "forwardPorts": [],
// Set `remoteUser` to `root` to connect as root instead. More info: https://aka.ms/vscode-remote/containers/non-root.
"remoteUser": "root"
// Configure tool-specific properties.
"customizations": {
"vscode": {
"settings": {
"lldb.library": "/usr/lib/liblldb.so"
},
"extensions": [
"sswg.swift-lang"
]
}
},
"remoteUser": "root"
🤖 Prompt for AI Agents
.devcontainer/swift-6.2-nightly/devcontainer.json lines 21 to 39: this file
contains inline JSON comments on several lines which should be removed for
consistency with other devcontainer variants; delete the comment tokens and
their text (lines ~21, 23, 25, 29, 35, 38) so the file contains only valid JSON
properties and normal spacing, making sure no trailing commas or accidental
syntax errors are introduced when removing the comment lines.

}
32 changes: 32 additions & 0 deletions .devcontainer/swift-6.2/devcontainer.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
{
"name": "Swift 6.2",
"image": "swift:6.2",
"features": {
"ghcr.io/devcontainers/features/common-utils:2": {
"installZsh": "false",
"username": "vscode",
"upgradePackages": "false"
},
"ghcr.io/devcontainers/features/git:1": {
"version": "os-provided",
"ppa": "false"
}
},
"postStartCommand": "git config --global --add safe.directory ${containerWorkspaceFolder}",
"runArgs": [
"--cap-add=SYS_PTRACE",
"--security-opt",
"seccomp=unconfined"
],
"customizations": {
"vscode": {
"settings": {
"lldb.library": "/usr/lib/liblldb.so"
},
"extensions": [
"sswg.swift-lang"
]
}
},
"remoteUser": "root"
}
163 changes: 163 additions & 0 deletions .github/workflows/SundialKitCombine.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,163 @@
name: SundialKitCombine
on:
push:
branches-ignore:
- '*WIP'
env:
PACKAGE_NAME: SundialKitCombine
jobs:
build-ubuntu:
name: Build on Ubuntu
runs-on: ubuntu-latest
container: ${{ matrix.swift.nightly && format('swiftlang/swift:nightly-{0}-{1}', matrix.swift.version, matrix.os) || format('swift:{0}-{1}', matrix.swift.version, matrix.os) }}
if: ${{ !contains(github.event.head_commit.message, 'ci skip') }}
strategy:
fail-fast: false
matrix:
os: [noble, jammy]
swift:
- version: "6.1"
- version: "6.2"
- version: "6.1"
nightly: true
- version: "6.2"
nightly: true
Comment on lines +18 to +24
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟠 Major

Remove duplicate matrix entries.

The matrix contains duplicate entries for Swift 6.1 and 6.2. Lines 19-20 define non-nightly builds for these versions, while lines 21-24 define nightly builds with the same version numbers. However, the way the matrix is structured, lines 21 and 23 create duplicates because they specify the same version without additional distinguishing keys that affect the container selection.

The intended logic appears to be:

  • Build with stable Swift 6.1 and 6.2
  • Build with nightly Swift 6.1 and 6.2

Apply this diff to fix the matrix structure:

     matrix:
       os: [noble, jammy]
       swift:
         - version: "6.1"
+           nightly: false
         - version: "6.2"
+           nightly: false
         - version: "6.1"
           nightly: true
         - version: "6.2"
           nightly: true

Or if the intention is to only test nightly OR stable builds (not both), remove the duplicate entries:

     matrix:
       os: [noble, jammy]
       swift:
         - version: "6.1"
         - version: "6.2"
-        - version: "6.1"
-          nightly: true
-        - version: "6.2"
-          nightly: true
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
swift:
- version: "6.1"
- version: "6.2"
- version: "6.1"
nightly: true
- version: "6.2"
nightly: true
swift:
- version: "6.1"
nightly: false
- version: "6.2"
nightly: false
- version: "6.1"
nightly: true
- version: "6.2"
nightly: true
🧰 Tools
🪛 actionlint (1.7.8)

21-21: duplicate value {"nightly": "true", "version": "6.1"} is found in matrix "swift". the same value is at line:19,col:13

(matrix)


23-23: duplicate value {"nightly": "true", "version": "6.2"} is found in matrix "swift". the same value is at line:20,col:13

(matrix)

🤖 Prompt for AI Agents
.github/workflows/SundialKitCombine.yml around lines 18 to 24: the Swift matrix
currently has duplicate plain-version entries (6.1 and 6.2) and separate nightly
flags that create ambiguous duplicates; replace the flat list with unique matrix
entries that pair version and nightly as explicit objects (e.g., { version:
"6.1", nightly: false }, { version: "6.2", nightly: false }, { version: "6.1",
nightly: true }, { version: "6.2", nightly: true }) so each combination is
distinct, or if you only want stable OR nightly builds remove the unwanted group
entirely so no duplicate version-only entries remain.

steps:
- uses: actions/checkout@v4
- name: Ensure remote dependencies
run: ./Scripts/ensure-remote-deps.sh
- uses: brightdigit/swift-build@v1.4.0
with:
scheme: ${{ env.PACKAGE_NAME }}
skip-package-resolved: true
- uses: sersoft-gmbh/swift-coverage-action@v4
id: coverage-files
with:
fail-on-empty-output: true
- name: Upload coverage to Codecov
uses: codecov/codecov-action@v4
with:
fail_ci_if_error: true
flags: swift-${{ matrix.swift.version }}-${{ matrix.os }}${{ matrix.swift.nightly && '-nightly' || '' }}
verbose: true
token: ${{ secrets.CODECOV_TOKEN }}
files: ${{ join(fromJSON(steps.coverage-files.outputs.files), ',') }}
build-macos:
name: Build on macOS
runs-on: ${{ matrix.runs-on }}
if: ${{ !contains(github.event.head_commit.message, 'ci skip') }}
strategy:
fail-fast: false
matrix:
include:
# SPM Build Matrix - Xcode 16.x+ (Swift 6.x)
- runs-on: macos-26
xcode: "/Applications/Xcode_26.1.app"
- runs-on: macos-26
xcode: "/Applications/Xcode_26.0.app"
- runs-on: macos-15
xcode: "/Applications/Xcode_16.4.app"
- runs-on: macos-15
xcode: "/Applications/Xcode_16.3.app"

# iOS Build Matrix - Xcode 16.x+ (Swift 6.x)
- type: ios
runs-on: macos-26
xcode: "/Applications/Xcode_26.1.app"
deviceName: "iPhone 17 Pro"
osVersion: "26.1"
download-platform: true

- type: ios
runs-on: macos-26
xcode: "/Applications/Xcode_26.0.app"
deviceName: "iPhone 17 Pro"
osVersion: "26.0.1"
download-platform: true

- type: ios
runs-on: macos-15
xcode: "/Applications/Xcode_16.4.app"
deviceName: "iPhone 16e"
osVersion: "18.5"

- type: ios
runs-on: macos-15
xcode: "/Applications/Xcode_16.3.app"
deviceName: "iPhone 16"
osVersion: "18.4"

# watchOS Build Matrix - Xcode 16.x+ (Swift 6.x)
- type: watchos
runs-on: macos-26
xcode: "/Applications/Xcode_26.1.app"
deviceName: "Apple Watch Ultra 3 (49mm)"
osVersion: "26.0"
download-platform: true

- type: watchos
runs-on: macos-26
xcode: "/Applications/Xcode_26.0.app"
deviceName: "Apple Watch Ultra 3 (49mm)"
osVersion: "26.0"
download-platform: true

- type: watchos
runs-on: macos-15
xcode: "/Applications/Xcode_16.4.app"
deviceName: "Apple Watch Series 10 (46mm)"
osVersion: "11.5"

- type: watchos
runs-on: macos-15
xcode: "/Applications/Xcode_16.3.app"
deviceName: "Apple Watch Series 10 (42mm)"
osVersion: "11.4"

steps:
- uses: actions/checkout@v4
- name: Ensure remote dependencies
run: ./Scripts/ensure-remote-deps.sh

- name: Build and Test
uses: brightdigit/swift-build@v1.4.0
with:
scheme: ${{ env.PACKAGE_NAME }}
type: ${{ matrix.type }}
xcode: ${{ matrix.xcode }}
deviceName: ${{ matrix.deviceName }}
osVersion: ${{ matrix.osVersion }}
download-platform: ${{ matrix.download-platform }}
skip-package-resolved: true

# Coverage Steps
- name: Process Coverage
uses: sersoft-gmbh/swift-coverage-action@v4

- name: Upload Coverage
uses: codecov/codecov-action@v4
with:
token: ${{ secrets.CODECOV_TOKEN }}
flags: ${{ matrix.type && format('{0}{1}', matrix.type, matrix.osVersion) || 'spm' }}

lint:
name: Linting
if: ${{ !contains(github.event.head_commit.message, 'ci skip') }}
runs-on: ubuntu-latest
needs: [build-ubuntu, build-macos]
env:
LINT_MODE: STRICT
steps:
- uses: actions/checkout@v4
- name: Ensure remote dependencies
run: ./Scripts/ensure-remote-deps.sh
- name: Install mise
uses: jdx/mise-action@v2
with:
version: 2024.11.0
install: true
cache: true
- name: Lint
run: |
set -e
./Scripts/lint.sh
57 changes: 57 additions & 0 deletions .github/workflows/claude-code-review.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
name: Claude Code Review

on:
pull_request:
types: [opened, synchronize]
# Optional: Only run on specific file changes
# paths:
# - "src/**/*.ts"
# - "src/**/*.tsx"
# - "src/**/*.js"
# - "src/**/*.jsx"

jobs:
claude-review:
# Optional: Filter by PR author
# if: |
# github.event.pull_request.user.login == 'external-contributor' ||
# github.event.pull_request.user.login == 'new-developer' ||
# github.event.pull_request.author_association == 'FIRST_TIME_CONTRIBUTOR'

runs-on: ubuntu-latest
permissions:
contents: read
pull-requests: read
issues: read
id-token: write

steps:
- name: Checkout repository
uses: actions/checkout@v4
with:
fetch-depth: 1

- name: Run Claude Code Review
id: claude-review
uses: anthropics/claude-code-action@v1
with:
claude_code_oauth_token: ${{ secrets.CLAUDE_CODE_OAUTH_TOKEN }}
prompt: |
REPO: ${{ github.repository }}
PR NUMBER: ${{ github.event.pull_request.number }}
Please review this pull request and provide feedback on:
- Code quality and best practices
- Potential bugs or issues
- Performance considerations
- Security concerns
- Test coverage
Use the repository's CLAUDE.md for guidance on style and conventions. Be constructive and helpful in your feedback.
Use `gh pr comment` with your Bash tool to leave your review as a comment on the PR.
# See https://github.com/anthropics/claude-code-action/blob/main/docs/usage.md
# or https://docs.claude.com/en/docs/claude-code/cli-reference for available options
claude_args: '--allowed-tools "Bash(gh issue view:*),Bash(gh search:*),Bash(gh issue list:*),Bash(gh pr comment:*),Bash(gh pr diff:*),Bash(gh pr view:*),Bash(gh pr list:*)"'

Loading
Loading