Conversation
commit c089e4aee5ef9bd86c11e4dc8394ce7a1fcf927f
Author: Leo Dion <leogdion@brightdigit.com>
Date: Wed Jun 14 19:48:23 2023 -0400
adding files from BrightDigit
commit 5edd02ff2c4a78636e0d7f38d244b33be0726e71
Author: Leo Dion <leogdion@brightdigit.com>
Date: Wed Jun 14 19:27:43 2023 -0400
adding swift package
Codecov Report❌ Patch coverage is Additional details and impacted files@@ Coverage Diff @@
## main #5 +/- ##
=======================================
Coverage ? 88.33%
=======================================
Files ? 39
Lines ? 917
Branches ? 0
=======================================
Hits ? 810
Misses ? 107
Partials ? 0
Flags with carried forward coverage won't be shown. Click here to find out more. ☔ View full report in Codecov by Harness. 🚀 New features to boost your workflow:
|
) * Swift 6.4 language mode + GitHub Actions CI (#73) * Migrate lint/style/CI configs in 6 BrightDigit subrepo packages [skip ci] Apply the issue #54 config migration to the vendored BrightDigit libraries (SyndiKit, TransistorPublishPlugin, Contribute, ContributeWordPress, NPMPublishPlugin, YoutubePublishPlugin) using the MistKit/SundialKit library config variant: - .swiftlint.yml: strict library ruleset + no_unchecked_sendable custom rule - .swiftformat -> .swift-format: Apple swift-format JSON - .mise.toml: swift-format 604 (Swift 6.4-aligned), swiftlint, periphery - Scripts/lint.sh (mise-based, replaces Mint) + Scripts/header.sh - CI workflow -> brightdigit/swift-build@v1 (ubuntu + macos) + STRICT lint job - Remove obsolete .hound.yml Configs + CI only; source reformatting/headers deferred (matches main repo). SwiftTube and Spinetail skipped (slated for OpenAPI-generator migration). Committed in the monorepo only; no git subrepo push performed. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> * ci: trigger pipeline (config migration) * packages CI: install curl + cache mise tools in lint job * CI: test vendored BrightDigit packages via monorepo matrix Add a `test-packages` matrix job to main.yaml that builds, tests, and lints the 6 vendored BrightDigit packages in-place. In the monorepo checkout every sibling already sits at its relative-path location, so each package resolves with zero dependency reconstruction — replacing the per-package setup-deps CI. - detect-changes: add `packages` paths-filter + `packages-changed` output - remove standalone workflows + orphaned setup-deps from the 4 rel-dep packages (ContributeWordPress, Transistor, NPM, Youtube); their standalone CI was synthetic (relative deps are committed) - keep SyndiKit + Contribute standalone CIs (genuinely standalone libraries) - bump all GitHub Actions to latest: checkout v6, cache v5, upload-artifact v7, download-artifact v8, dorny/paths-filter v4 (swift-build@v1 unchanged) Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> * Apply lint/style migration + fix swiftlint --strict in 4 BrightDigit packages Brings Contribute, NPMPublishPlugin, ContributeWordPress, and YoutubePublishPlugin to a clean `swiftlint --strict` pass (the failing matrix Lint legs). Applies the same issue #54 treatment as the main repo: swift-format formatting + MIT license headers (Scripts/header.sh) + source fixes. SyndiKit intentionally left for a separate pass. Source fixes (no config changes; public API and behavior preserved): - generic_type_name: shorten generic parameter names to <=20 chars - type_contents_order / file_types_order: reorder type members - explicit_acl / explicit_top_level_acl: add explicit access modifiers - one_declaration_per_file: split secondary declarations into new files - missing_docs: add doc comments to public declarations (Youtube) - force_try: replace try! with do/catch - superfluous/blanket_disable_command: remove stale / narrow to scoped disables - xct_specific_matcher, first_where, identifier_name, line_length, multiline_arguments_brackets, empty_xctest_method, orphaned_doc_comment Verified per package: swiftlint --strict = 0, swift build --build-tests, and swift test all pass; CI-mode Scripts/lint.sh exits "Linting completed successfully". Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> * Migrate lint/style/CI configs to BrightDigit template patterns (#54) (#76) * Phase 4 — OpenAPI & dependency migration (#109) * Add test coverage and restore Linux coverage under Swift 6.4 (#116) * Restore Linux coverage under Swift 6.4 via patched coverage action (#92) Swift 6.4's swiftbuild engine emits Linux test bundles as <Name>.so under .build/out/Products/<config>-linux-<arch>/ (no .xctest), which sersoft-gmbh/swift-coverage-action@v5 couldn't pair with the profdata, so Linux coverage was silently dropped. Point the Ubuntu coverage step at the brightdigit fork (pinned by SHA) that detects the .so test bundle, and re-enable fail-on-empty-output so a future regression is fatal again. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> * Add coverage for NPMPublishPlugin/ButtondownKit; ignore generated files Raise patch coverage for first-party code changed in the Phase 4 OpenAPI migration (#109). - NPMPublishPlugin: add pure-logic XCTest suites for the restructured NPM/ types whose tests were dropped (URL.relativePath, NPM.Argument, the Argument/Job result builders, Command, Settings, Job + ci()/run(), NPMInvocationError), and expand NPMInvocation factory coverage. - ButtondownKit: cover ButtondownClient sendDraft/email error paths and init(apiKey:) via the existing MockTransport. - codecov: ignore OpenAPI-generated files (**/Generated/**) in the root config and add per-package configs for ButtondownKit and SwiftTube. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> * Fix Contribute lint.sh errors - Repin .swift-version to 6.4.x-snapshot (5.8 toolchain not installed) - Force native build system for periphery so it finds the index store (Swift 6.4's swiftbuild writes it to .build/index-build/...) - Use .isEmpty over == "" (SwiftLint empty_string) - Drop redundant try? on Result<Bool, Never>.get() in FileManagerSpy - Remove unused enum/property flagged by periphery - Verify closure invocation via return value instead of mutating a captured var from a @sendable closure Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com> * Contribute: depend on brightdigit/SwiftSoup fork via URL; drop vendored copy Replaces the relative-path dependency on the in-repo vendored SwiftSoup (Packages/scinfu/SwiftSoup) with the published brightdigit/SwiftSoup fork (branch fix/swift-6.4-inline-crash = upstream f474b11 + the @inline patch). Removes the 144-file vendored tree. Contribute now has no path dependencies and builds standalone (verified: debug + release build on Swift 6.4). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> * Subrepos: add macOS + Windows nightly-6.4 CI legs across all 5 standalone repos Extend ButtondownKit/Spinetail/SwiftTube/Contribute/SyndiKit standalone CI to the BrightDigit multi-platform template now that a self-hosted macOS runner with /Applications/Xcode-beta.app (Swift 6.4) is available: - build-macos: [self-hosted, macOS] + swift-build xcode=Xcode-beta. Blocking on all 5. Contribute & SyndiKit migrated off macos-15; their Ubuntu + lint legs migrated swift:6.3-noble -> swiftlang/swift:nightly-6.4.x-noble. - build-windows: hosted windows-2022/2025, swift.org nightly snapshot 6.4.x-DEVELOPMENT-SNAPSHOT-2026-06-01-a. Gated to full-matrix runs via a single-package configure job. continue-on-error on the OpenAPI repos + Contribute (unverified deps); blocking on SyndiKit. - SyndiKit also gains build-macos-platforms (iOS/watchOS/tvOS on released Xcode_26.4 — not nightly 6.4). WASM + Android deferred: no nightly 6.4 support yet. WASM is a swift-build limitation (brightdigit/swift-build#115 — no input to override the auto-derived -RELEASE wasm SDK URL); Android is blocked upstream (no nightly 6.4 SDK). Each workflow documents re-adding them. Contribute WASM is permanently N/A (Yams on the Musl/wasm SDK). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> * Subrepos: wire WASM + Android nightly-6.4 CI legs via swift-build SDK-bundle inputs Now that swift.org publishes nightly 6.4 SDK bundles on swift-6.4.x-branch and brightdigit/swift-build#116 adds inputs to install caller-supplied bundles, add: - build-wasm to ButtondownKit/Spinetail/SwiftTube/SyndiKit (NOT Contribute — Yams fails on the Musl/wasm SDK). Uses wasm-sdk-url + wasm-sdk-checksum pointing at the swift-6.4.x-DEVELOPMENT-SNAPSHOT-2026-06-15-a_wasm artifactbundle, with WASI emulation + memory flags. - build-android to all 5 repos. Uses android-sdk-url + android-sdk-id (+ matching android-swift-version) for the swift-6.4.x-DEVELOPMENT-SNAPSHOT-2026-06-15-a_android artifactbundle via skiptools custom-sdk-url; build-only (android-run-tests: false). Both legs are full-matrix-gated and continue-on-error: they reference @v1 and are inert until swift-build#116 is released and the v1 tag moved, after which they should be confirmed green and promoted to blocking (SyndiKit first). Bump the snapshot SDK URLs/checksums periodically. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> * Contribute: declare + CI all Apple platforms (iOS/watchOS/tvOS) Contribute's Package.swift only declared .macOS, but the package supports all Apple platforms. Declare iOS(.v13)/tvOS(.v13)/watchOS(.v6) — the floors set by its only platform-constrained dependency, SwiftSoup (Yams and swift-markdown declare none) — and add a build-macos-platforms job. The graph (swift-markdown main is tools-version 6.2, cmark gfm 5.3, SwiftSoup/Yams older) resolves under the released Xcode_26.4 on macos-26, so the suite runs on hosted runners like SyndiKit's — validating Apple-platform source compatibility on released Xcode (not nightly 6.4). continue-on-error for now: first time the SwiftSoup-fork / swift-markdown-main deps are built for iOS/watchOS/tvOS. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> * Subrepos: run all Apple-platform suites on self-hosted Xcode-beta (Swift 6.4) Per the rule that Swift 6.4 builds use the self-hosted runners (the only macOS Swift 6.4 toolchain is /Applications/Xcode-beta.app = Xcode 27 / Swift 6.4): - Move SyndiKit + Contribute build-macos-platforms off hosted macos-26/Xcode_26.4 (which is only Swift 6.2) onto [self-hosted, macOS] + Xcode-beta. - Add build-macos-platforms (iOS/watchOS/tvOS) to ButtondownKit/Spinetail/SwiftTube on the same self-hosted runner — these are swift-tools-version:6.4, so hosted released-Xcode runners can't even parse their manifests. All use the iOS/watchOS/tvOS 27.0 simulator runtimes present on the runner (iPhone 17 Pro / Apple Watch Ultra 3 (49mm) / Apple TV 4K (3rd generation)), full-matrix-gated and continue-on-error (simulator-on-nightly is the most fragile leg; promote once green). lint now needs build-macos-platforms. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> * Subrepos: give Windows its own (stricter) matrix tier Three CI tiers instead of two: small set (build-ubuntu/build-macos/lint, always) < full-matrix (macОS-platforms/wasm/android) < +Windows. configure now emits a second output, run-windows, equal to full-matrix MINUS PRs into semver branches. build-windows (the most expensive leg — hosted windows-2022/2025 ×2) gates on run-windows; the rest keep full-matrix. So PRs into semver branches still exercise the full non-Windows matrix but skip Windows. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> * Subrepos: test against swift-build feature branch + fold build-wasm into build-ubuntu - Point every brightdigit/swift-build@v1 reference at @sdk-url-checksum-nightly-6.4 (PR #116) TEMPORARILY so CI exercises the new wasm-sdk-url/android-sdk-url code before it ships in @v1. Revert to @v1 once #116 is merged + the v1 tag moved. - Fold build-wasm into build-ubuntu as a continue-on-error step in the same nightly-6.4.x-noble container (one spin-up; runs on every push/PR now, not just full-matrix). Removed the standalone build-wasm job from ButtondownKit/Spinetail/ SwiftTube/SyndiKit (Contribute has no wasm — Yams on Musl/wasm). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> * Subrepos: only run push CI on main (drop integration branch from push trigger) Push events now trigger only on main (+ release tags). Feature/integration branches like brightdigit-com-260406 get CI through their PRs instead of a redundant branch-push run. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> * Subrepos: unify the 5 CI workflows to byte-identical (except name) - Windows is now blocking everywhere (dropped continue-on-error from build-windows in all 5, not just SyndiKit). - The only per-package functional difference — the wasm step (Contribute can't build Yams on wasm) — is externalized to the ENABLE_WASM repo variable: `if: ${{ vars.ENABLE_WASM != 'false' }}`. Set ENABLE_WASM=false on Contribute. - Normalized all comments to a shared template. Result: the five workflow files are byte-identical except the `name:` line; the only behavioral knob is each repo's ENABLE_WASM variable. Filed Contribute#10 to fix Yams-on-wasm and re-enable it there. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> * Subrepos: remove continue-on-error from all 5 CI workflows Make the WASM step, the Apple-platforms job (iOS/watchOS/tvOS), and the Android job blocking across all five subrepos. Tidy the now-stale continue-on-error comment phrases. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> * Subrepos: gate watchOS leg on ENABLE_WATCHOS (disable where failing) watchOS-27 SDK rejects deps that infer an 8.0 deployment target (SwiftPM #10188, not fixable in-repo). Gate the build-macos-platforms watchOS leg on a new ENABLE_WATCHOS repo variable (mirrors ENABLE_WASM), keeping the 5 workflows byte-identical. ENABLE_WATCHOS=false is set on ButtondownKit/SwiftTube/ Contribute/Spinetail; SyndiKit (unaffected) keeps running watchOS. Tracked in brightdigit.com#119. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> * Subrepos: build-ubuntu as a [standard, wasm, wasm-embedded] matrix Mirror brightdigit/MistKit: the configure job emits ubuntu-type (gated by ENABLE_WASM), and build-ubuntu fans out over it via fromJSON. Standard ('') always runs; wasm + wasm-embedded run unless ENABLE_WASM=false (e.g. Yams on Contribute). Both wasm variants share the nightly-6.4.x SDK bundle. Replaces the single folded WASM step. Byte-identical across all 5. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> * Subrepos: make wasm/wasm-embedded legs build-only The wasm/embedded BUILD passes (OpenAPIURLSession is guarded out on WASI), but running the suite under WasmKit fails: Foundation resource bundles (test Fixtures) aren't mounted in the WASI sandbox, and embedded hits OpenAPIRuntime keypath-demangling limits at runtime. Neither is our bug. Build-only validates wasm/embedded compilation (the goal); the standard leg still runs the full suite + coverage. Mirrors the Android leg's build-only stance. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> * CI: revert swift-build action to @v1 (temp sdk-url-checksum-nightly-6.4 branch deleted) Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
|
Warning Review limit reached
More reviews will be available in 54 minutes and 5 seconds. Learn how PR review limits work. Your organization has used up its prepaid credits, and credit purchases are no longer available. Enable the review add-on in the billing tab to keep reviews running — you're only billed for reviews past your plan's rate limits ($0.25/file). ⌛ How to resolve this issue?After more reviews become available, a review can be triggered using the To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based credits. 🚦 How do rate limits work?CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan refill rate. For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, the refill rate gradually slows as usage increases. The highest same-day bursts are limited more strictly. Please see our Fair Usage Limits Policy for further information. ℹ️ Review info⚙️ Run configurationConfiguration used: defaults Review profile: CHILL Plan: Pro Run ID: ⛔ Files ignored due to path filters (3)
📒 Files selected for processing (76)
✨ Finishing Touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
Add generic CI/dev-environment files shared across BrightDigit packages
and drop vestigial tooling no longer used:
- Add .github/workflows/{check-unsafe-flags,cleanup-caches,swift-source-compat,claude,claude-code-review}.yml
- Add .devcontainer (Swift 6.4 nightly)
- Add CLAUDE.md
- Remove Mintfile (mise-only now), project.yml (stale XcodeGen config),
Scripts/gh-md-toc (unused)
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
No description provided.