From db23eae76d7d6f3041bdd9aebcb9ba682af4ccf8 Mon Sep 17 00:00:00 2001 From: Tim <0xtimc@gmail.com> Date: Wed, 19 Aug 2026 17:27:32 +0100 Subject: [PATCH 1/5] Fix the API docs linking --- Package.resolved | 11 +---------- Package.swift | 2 +- Sources/APIDocs/APIDocs.swift | 2 +- 3 files changed, 3 insertions(+), 12 deletions(-) diff --git a/Package.resolved b/Package.resolved index 05f815a..044a3ed 100644 --- a/Package.resolved +++ b/Package.resolved @@ -1,5 +1,5 @@ { - "originHash" : "48ffea9142d5c6c90fd6a56e88e83e2b7517df8663f654188e8493da74719c5d", + "originHash" : "4ac04baa6c91f3bb9a06c3663c59a2b20109af432aa73bbb57c08695613297ec", "pins" : [ { "identity" : "design", @@ -10,15 +10,6 @@ "version" : "1.0.1" } }, - { - "identity" : "kiln", - "kind" : "remoteSourceControl", - "location" : "https://github.com/brokenhandsio/kiln.git", - "state" : { - "revision" : "43a12418d25653eecadefdf08157f9162156a475", - "version" : "1.8.5" - } - }, { "identity" : "leaf-kit", "kind" : "remoteSourceControl", diff --git a/Package.swift b/Package.swift index e7bc107..b3e43cc 100644 --- a/Package.swift +++ b/Package.swift @@ -7,7 +7,7 @@ let package = Package( .macOS(.v13) ], dependencies: [ - .package(url: "https://github.com/brokenhandsio/kiln.git", from: "1.8.5"), + .package(name: "kiln", path: "../../BrokenHands/kiln"), .package(url: "https://github.com/vapor/design.git", from: "1.0.1"), .package(url: "https://github.com/apple/swift-argument-parser.git", from: "1.3.0"), ], diff --git a/Sources/APIDocs/APIDocs.swift b/Sources/APIDocs/APIDocs.swift index 30071df..7a3b742 100644 --- a/Sources/APIDocs/APIDocs.swift +++ b/Sources/APIDocs/APIDocs.swift @@ -76,7 +76,7 @@ struct APIDocs: AsyncParsableCommand { } print("Ensuring DocC archives …") - try Kiln.buildDocCArchives(site, contentDirectory: content, rebuild: rebuild) + try Kiln.buildDocCArchives(site, contentDirectory: content, rebuild: rebuild, crossModuleLinks: true) print("Building Vapor API docs into ./\(output) …") try await Kiln.build(site, contentDirectory: content, outputDirectory: output, incremental: true, From ea050efc6a20081d1290205d4e8ca8037b21c19e Mon Sep 17 00:00:00 2001 From: Tim <0xtimc@gmail.com> Date: Wed, 19 Aug 2026 19:11:30 +0100 Subject: [PATCH 2/5] Add Vapor 5 --- Sources/APIDocs/Packages.swift | 25 ++++++++++++++++++++----- 1 file changed, 20 insertions(+), 5 deletions(-) diff --git a/Sources/APIDocs/Packages.swift b/Sources/APIDocs/Packages.swift index dfbef8d..28a5684 100644 --- a/Sources/APIDocs/Packages.swift +++ b/Sources/APIDocs/Packages.swift @@ -5,13 +5,28 @@ private let consoleKit = Module("ConsoleKit", description: "APIs for creating in private let consoleLogger = Module("ConsoleLogger", description: "A SwiftLog LogHandler implementation for customizable logging to a console.") private let multipartKit = Module("MultipartKit", description: "Multipart form data parsing and encoding.") +// Vapor modules shared across its version lines (v5 drops XCTVapor and adds VaporMacros). +private let vapor = Module("Vapor", description: "Core web framework for building server-side Swift applications.") +private let xctVapor = Module("XCTVapor", group: "Testing", description: "Testing utilities for Vapor applications when using XCTest.") +private let vaporTesting = Module("VaporTesting", group: "Testing", description: "Modern testing framework for Vapor apps when using Swift Testing.") +private let vaporMacros = Module("VaporMacros", description: "Macros used by Vapor.") + let packages: [APIPackage] = [ APIPackage("vapor/vapor", group: "Core", versions: [ - .single(ref: "vapor4", modules: [ - Module("Vapor", description: "Core web framework for building server-side Swift applications."), - Module("XCTVapor", group: "Testing", description: "Testing utilities for Vapor applications when using XCTest."), - Module("VaporTesting", group: "Testing", description: "Modern testing framework for Vapor apps when using Swift Testing."), - ]), + PackageVersion("4", name: "4.x", ref: "vapor4", isDefault: true, dependencies: [ + DependencyPin("vapor/routing-kit", "4"), + DependencyPin("vapor/console-kit", "4"), + DependencyPin("vapor/multipart-kit", "4"), + DependencyPin("vapor/websocket-kit"), + DependencyPin("vapor/async-kit"), + ], modules: [vapor, xctVapor, vaporTesting]), + PackageVersion("5-beta", name: "5.0 (beta)", ref: "main", isPrerelease: true, dependencies: [ + // Vapor 5 uses the 5.x lines of these and no longer depends on + // websocket-kit or async-kit. + DependencyPin("vapor/routing-kit", "5-beta"), + DependencyPin("vapor/console-kit", "5-beta"), + DependencyPin("vapor/multipart-kit", "5-alpha"), + ], modules: [vapor, vaporTesting, vaporMacros]), ]), APIPackage("vapor/async-kit", group: "Core", versions: [ .single(ref: "main", modules: [Module("AsyncKit", description: "Async/await utilities and helpers for concurrent programming.")]), From 9ddc7955cf0f55df5f5da116ef54f4820351cb1e Mon Sep 17 00:00:00 2001 From: Tim <0xtimc@gmail.com> Date: Wed, 19 Aug 2026 23:20:29 +0100 Subject: [PATCH 3/5] Pull in the other versions --- Sources/APIDocs/Packages.swift | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/Sources/APIDocs/Packages.swift b/Sources/APIDocs/Packages.swift index 28a5684..4f32696 100644 --- a/Sources/APIDocs/Packages.swift +++ b/Sources/APIDocs/Packages.swift @@ -11,6 +11,10 @@ private let xctVapor = Module("XCTVapor", group: "Testing", description: "Testin private let vaporTesting = Module("VaporTesting", group: "Testing", description: "Modern testing framework for Vapor apps when using Swift Testing.") private let vaporMacros = Module("VaporMacros", description: "Macros used by Vapor.") +// JWT ships a v4 line (with Vapor 4) and a 5 line on `main` (with Vapor 5). +private let jwt = Module("JWT", description: "JWT integration for Vapor authentication.") +private let jwtKit = Module("JWTKit", description: "JSON Web Token signing and verification framework.") + let packages: [APIPackage] = [ APIPackage("vapor/vapor", group: "Core", versions: [ PackageVersion("4", name: "4.x", ref: "vapor4", isDefault: true, dependencies: [ @@ -48,10 +52,18 @@ let packages: [APIPackage] = [ ]), APIPackage("vapor/jwt", group: "Authentication", versions: [ - .single(ref: "main", modules: [Module("JWT", description: "JWT integration for Vapor authentication.")]), + PackageVersion("4", name: "4.x", ref: "v4", isDefault: true, dependencies: [ + DependencyPin("vapor/vapor", "4"), + DependencyPin("vapor/jwt-kit", "4"), + ], modules: [jwt]), + PackageVersion("5-beta", name: "5.0 (beta)", ref: "main", isPrerelease: true, dependencies: [ + DependencyPin("vapor/vapor", "5-beta"), + DependencyPin("vapor/jwt-kit", "5-beta"), + ], modules: [jwt]), ]), APIPackage("vapor/jwt-kit", group: "Authentication", versions: [ - .single(ref: "main", modules: [Module("JWTKit", description: "JSON Web Token signing and verification framework.")]), + PackageVersion("4", name: "4.x", ref: "v4", isDefault: true, modules: [jwtKit]), + PackageVersion("5-beta", name: "5.0 (beta)", ref: "main", isPrerelease: true, modules: [jwtKit]), ]), APIPackage("vapor/authentication", group: "Authentication", versions: [ .single(ref: "main", modules: [Module("Authentication", description: "Authentication framework for Swift applications.")]), From 5bca5b2a41b8bd4975830d669b3e0a79f6cb9a52 Mon Sep 17 00:00:00 2001 From: Tim <0xtimc@gmail.com> Date: Thu, 20 Aug 2026 16:48:39 +0100 Subject: [PATCH 4/5] Package updates --- Package.resolved | 15 ++++++++++++--- Package.swift | 4 ++-- Sources/APIDocs/Packages.swift | 23 +++++++++++++++-------- 3 files changed, 29 insertions(+), 13 deletions(-) diff --git a/Package.resolved b/Package.resolved index 044a3ed..7f4b37a 100644 --- a/Package.resolved +++ b/Package.resolved @@ -1,13 +1,22 @@ { - "originHash" : "4ac04baa6c91f3bb9a06c3663c59a2b20109af432aa73bbb57c08695613297ec", + "originHash" : "5df9439aa3a7da5b2e3cdc52bef5787e3279c14465252ba7b28bf11a0cf4aced", "pins" : [ { "identity" : "design", "kind" : "remoteSourceControl", "location" : "https://github.com/vapor/design.git", "state" : { - "revision" : "86fc41fb692ad47870a5e3de79b39b001b0ca51c", - "version" : "1.0.1" + "revision" : "ef3c8ba17715dea419fedf262f0cf4dbaf7b7347", + "version" : "1.1.0" + } + }, + { + "identity" : "kiln", + "kind" : "remoteSourceControl", + "location" : "https://github.com/brokenhandsio/kiln.git", + "state" : { + "revision" : "54831ab91f99a92a117a0f4bfcd3d3d43fff229b", + "version" : "1.9.0" } }, { diff --git a/Package.swift b/Package.swift index b3e43cc..7e16027 100644 --- a/Package.swift +++ b/Package.swift @@ -7,8 +7,8 @@ let package = Package( .macOS(.v13) ], dependencies: [ - .package(name: "kiln", path: "../../BrokenHands/kiln"), - .package(url: "https://github.com/vapor/design.git", from: "1.0.1"), + .package(url: "https://github.com/brokenhandsio/kiln.git", from: "1.9.0"), + .package(url: "https://github.com/vapor/design.git", from: "1.1.0"), .package(url: "https://github.com/apple/swift-argument-parser.git", from: "1.3.0"), ], targets: [ diff --git a/Sources/APIDocs/Packages.swift b/Sources/APIDocs/Packages.swift index 4f32696..291c397 100644 --- a/Sources/APIDocs/Packages.swift +++ b/Sources/APIDocs/Packages.swift @@ -24,13 +24,17 @@ let packages: [APIPackage] = [ DependencyPin("vapor/websocket-kit"), DependencyPin("vapor/async-kit"), ], modules: [vapor, xctVapor, vaporTesting]), - PackageVersion("5-beta", name: "5.0 (beta)", ref: "main", isPrerelease: true, dependencies: [ - // Vapor 5 uses the 5.x lines of these and no longer depends on - // websocket-kit or async-kit. - DependencyPin("vapor/routing-kit", "5-beta"), - DependencyPin("vapor/console-kit", "5-beta"), - DependencyPin("vapor/multipart-kit", "5-alpha"), - ], modules: [vapor, vaporTesting, vaporMacros]), + // Vapor 5 (main) requires a 6.4 Swift dev-snapshot that CI doesn't have yet, + // so it's disabled until CI is on that toolchain. Every other pre-release + // below builds on the current stable Swift release. Re-enable this together + // with the jwt → vapor "5-beta" pin further down. + // Vapor 5 uses the 5.x lines of these and no longer depends on + // websocket-kit or async-kit. + // PackageVersion("5-beta", name: "5.0 (beta)", ref: "main", isPrerelease: true, dependencies: [ + // DependencyPin("vapor/routing-kit", "5-beta"), + // DependencyPin("vapor/console-kit", "5-beta"), + // DependencyPin("vapor/multipart-kit", "5-alpha"), + // ], modules: [vapor, vaporTesting, vaporMacros]), ]), APIPackage("vapor/async-kit", group: "Core", versions: [ .single(ref: "main", modules: [Module("AsyncKit", description: "Async/await utilities and helpers for concurrent programming.")]), @@ -57,7 +61,10 @@ let packages: [APIPackage] = [ DependencyPin("vapor/jwt-kit", "4"), ], modules: [jwt]), PackageVersion("5-beta", name: "5.0 (beta)", ref: "main", isPrerelease: true, dependencies: [ - DependencyPin("vapor/vapor", "5-beta"), + // Re-enable alongside vapor/vapor "5-beta" above. jwt@main currently + // builds against Vapor 4 (from: 4.110.2), so until then its Vapor links + // fall back to the vapor default (4.x), which matches what it compiles. + // DependencyPin("vapor/vapor", "5-beta"), DependencyPin("vapor/jwt-kit", "5-beta"), ], modules: [jwt]), ]), From 3d61d9edbb3212aec71e218af76c1d688fe09f6d Mon Sep 17 00:00:00 2001 From: Tim <0xtimc@gmail.com> Date: Thu, 20 Aug 2026 18:53:25 +0100 Subject: [PATCH 5/5] Fix a cross module link --- Sources/APIDocs/Packages.swift | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/Sources/APIDocs/Packages.swift b/Sources/APIDocs/Packages.swift index 291c397..2b3bee2 100644 --- a/Sources/APIDocs/Packages.swift +++ b/Sources/APIDocs/Packages.swift @@ -2,6 +2,9 @@ import Kiln private let routingKit = Module("RoutingKit", description: "High-performance routing engine for HTTP requests.") private let consoleKit = Module("ConsoleKit", description: "APIs for creating interactive CLI tools.") +// ConsoleKit 4 splits its API across three products; 5 merges them back into ConsoleKit. +private let consoleKitCommands = Module("ConsoleKitCommands", description: "Command definitions, argument parsing, and command routing.") +private let consoleKitTerminal = Module("ConsoleKitTerminal", description: "Terminal I/O, output styling, and activity indicators.") private let consoleLogger = Module("ConsoleLogger", description: "A SwiftLog LogHandler implementation for customizable logging to a console.") private let multipartKit = Module("MultipartKit", description: "Multipart form data parsing and encoding.") @@ -44,7 +47,7 @@ let packages: [APIPackage] = [ PackageVersion("5-beta", name: "5.0 (beta)", ref: "main", isPrerelease: true, modules: [routingKit]), ]), APIPackage("vapor/console-kit", group: "Core", versions: [ - PackageVersion("4", name: "4.x", ref: "v4", isDefault: true, modules: [consoleKit]), + PackageVersion("4", name: "4.x", ref: "v4", isDefault: true, modules: [consoleKit, consoleKitCommands, consoleKitTerminal]), PackageVersion("5-beta", name: "5.0 (beta)", ref: "main", isPrerelease: true, modules: [consoleKit, consoleLogger]), ]), APIPackage("vapor/websocket-kit", group: "Core", versions: [