Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
107 commits
Select commit Hold shift + click to select a range
f43feb4
Consolidate TestCase execution and preserve diagnostics
kudit Jul 26, 2026
c6c86f1
Add reusable Swift Testing module adapter
kudit Jul 26, 2026
69e9f64
Fix test execution availability and exclusivity
kudit Jul 27, 2026
a262414
Keep testing product manifest changes focused
kudit Jul 27, 2026
3b5666d
Fold execution mode conformance into its declaration
kudit Jul 27, 2026
49bff8a
Fix test infrastructure availability
kudit Jul 27, 2026
5a8f751
Add source-based debug formatting conveniences
kudit Jul 27, 2026
ce3fa40
Move debug formatting helpers into Debug.swift
kudit Jul 27, 2026
60b7b9e
Consolidate debug message and formatting APIs
kudit Jul 27, 2026
04e75c7
Simplified code duplication
kudit Jul 28, 2026
23b6f56
Included expanded support for lastPathComponent
kudit Jul 28, 2026
60ed6cf
Improve lastPathComponent for cross-platform compatibility
kudit Jul 28, 2026
a55ac76
Enhance CONTRIBUTING.md with collaborative coding workflow
kudit Jul 28, 2026
cd96617
Exercise ModuleTestEntry through Swift Testing
kudit Jul 28, 2026
d6b97ca
Update CHANGELOG with testing requirements
kudit Jul 28, 2026
e03065f
Serialize debug tests and restore settings safely
kudit Jul 29, 2026
c9bfda2
Remove duplicated grouped module test bridge
kudit Jul 29, 2026
fd1bf22
Document v1.19.0 test infrastructure changes
kudit Jul 29, 2026
6f6a24e
Restore changelog history before focused update
kudit Jul 29, 2026
6f9ec99
Updated module requirements
kudit Jul 29, 2026
a5ba797
Discover module tests without global registration
kudit Jul 29, 2026
61e59ba
Set package version to 1.18.3
kudit Jul 29, 2026
d82e8c0
Set Compatibility version to 1.18.3
kudit Jul 29, 2026
7935f7a
Revert "Set Compatibility version to 1.18.3"
kudit Jul 29, 2026
c891def
fixed version surfaces
kudit Jul 29, 2026
b79fcb6
added compatibility testing library
kudit Jul 29, 2026
2b15418
Remove duplicate module graph traversal
kudit Jul 29, 2026
53628d6
Use concrete Compatibility test catalog
kudit Jul 29, 2026
ae7c4ee
fixed @available checks for macOS 12
kudit Jul 29, 2026
aca761c
Update CONTRIBUTING.md
kudit Aug 8, 2026
501d199
Capture TestCase source at caller
kudit Aug 12, 2026
8b0b206
Stringify debug values without Foundation
kudit Aug 12, 2026
91d902b
Removed code duplication
kudit Aug 12, 2026
0e92705
Preserve TestCase SourceContext call-site defaults
kudit Aug 12, 2026
a0a5162
Restore caller-side TestCase source capture
kudit Aug 12, 2026
996c378
Add parameterized test discovery control
kudit Aug 12, 2026
62aa5fa
Make Compatibility test targets explicit in shared scheme
kudit Aug 12, 2026
6d59904
Make SourceContext the debug forwarding core
kudit Aug 12, 2026
76672bb
Use SourceContext through network forwarding paths
kudit Aug 12, 2026
e994b21
Forward Application tracking with SourceContext
kudit Aug 12, 2026
06f0851
Use SourceContext through reusable test diagnostics
kudit Aug 12, 2026
2a08b79
Restored missing documentation
kudit Aug 12, 2026
f383bb5
Forward threading source context through Compatibility APIs
kudit Aug 12, 2026
ca9a357
Make structured debug formatting canonical
kudit Aug 12, 2026
394a560
Keep source forwarding on qualified network APIs
kudit Aug 12, 2026
5c207f9
Restored stripped comments!
kudit Aug 12, 2026
9a8bfa3
Build project and build error fixes
kudit Aug 12, 2026
0fb49f7
Consolidate debug to one source-forwarding implementation
kudit Aug 12, 2026
545251f
Use canonical debug source forwarding in networking
kudit Aug 12, 2026
516945c
Remove fake background and main fallbacks
kudit Aug 12, 2026
0ce4edd
Restore hosted unit test target configuration
kudit Aug 12, 2026
fbe65ea
Correct restored Xcode project references
kudit Aug 12, 2026
ee508f4
fixes and comments
kudit Aug 12, 2026
1f0f541
Make parameter discovery control independent of adapter import
kudit Aug 12, 2026
78f9bc9
Remove no-op WASM and Embedded timing fallbacks
kudit Aug 12, 2026
00d6601
Make CompatibilityTest scheme explicitly run unit and UI tests
kudit Aug 13, 2026
554eb2a
Restore CompatibilityTest explicit test plan
kudit Aug 13, 2026
f163aa2
Use native play button styling for test rows
kudit Aug 13, 2026
cc40d07
Restore real MainActor scheduling helper on WASM
kudit Aug 13, 2026
9bf3daf
Backport Liquid Glass button styling
kudit Aug 14, 2026
fefa39d
Use backported glass style for test run button
kudit Aug 14, 2026
24fc788
Set Compatibility version to 2.0.0
kudit Aug 14, 2026
cf4c95b
Move shared test plan outside test source target
kudit Aug 14, 2026
9408d8b
Point app scheme at project-level shared test plan
kudit Aug 14, 2026
779361e
Correct shared test plan path
kudit Aug 14, 2026
d12871a
Set public Compatibility version to 2.0.0
kudit Aug 14, 2026
e1a1ee6
contributing tweaks and 1.18.3 reversion
kudit Aug 15, 2026
91a2dc8
Use scheme testables for combined app tests
kudit Aug 15, 2026
550ebde
Use autocreated scheme plan instead of checked-in plan
kudit Aug 15, 2026
de469f1
Consolidate WebAssembly main implementation
kudit Aug 15, 2026
4af7097
Remove redundant WebAssembly threading file
kudit Aug 15, 2026
6a3ff80
Keep Compatibility release at 1.18.3
kudit Aug 15, 2026
fa3cedc
Keep public Compatibility version at 1.18.3
kudit Aug 15, 2026
47ce53f
Keep Xcode marketing version at 1.18.3
kudit Aug 15, 2026
2be2b64
Restore Xcode project after connector write
kudit Aug 15, 2026
55cde7a
Restore test-plan-based CompatibilityTest scheme
kudit Aug 15, 2026
d8f96c0
Simplify main availability handling
kudit Aug 15, 2026
8d0a5d9
Updated threading to fix else split bug.
kudit Aug 15, 2026
20d08fd
removed unnecessary conditional
kudit Aug 15, 2026
1bfe74f
fix for project-file defect
kudit Aug 15, 2026
5eddb53
remove the hosted-test settings
kudit Aug 15, 2026
4e886ca
removed user defined TEST_TARGET_NAME
kudit Aug 15, 2026
a92d96b
Fixed test frameworks and silenced version warnings.
kudit Aug 15, 2026
7756966
removed fixed issues from changelog
kudit Aug 15, 2026
c1614eb
Remove parameterized discovery diagnostic test
kudit Aug 15, 2026
4ff724f
fixed version to 1.19.0
kudit Aug 16, 2026
d0dfc15
Make every demo screen directly testable for UI coverage
kudit Aug 16, 2026
a692240
Exercise every demo screen in UI coverage
kudit Aug 16, 2026
a585dcb
Exercise safe controls in UI coverage tour
kudit Aug 16, 2026
e4e1d18
Set Compatibility version to 1.19.0
kudit Aug 16, 2026
ecc7fe4
Set public Compatibility version to 1.19.0
kudit Aug 16, 2026
300a441
Restore Compatibility.swift and set version to 1.19.0
kudit Aug 16, 2026
ca00834
Merge branch 'agent/improve-test-infrastructure' of https://github.co…
kudit Aug 16, 2026
4e1c50d
Use natural TabView ordering for UI coverage
kudit Aug 16, 2026
7c8c40b
Run demo UI coverage in one launch
kudit Aug 16, 2026
ccc1099
Add high-yield coverage gap tests
kudit Aug 16, 2026
4f7a171
Fix identifiable array subscript test syntax
kudit Aug 16, 2026
9e4dfce
Add reusable introspection coverage tests
kudit Aug 16, 2026
6e00dc4
Remove standalone coverage gap test file
kudit Aug 16, 2026
e52f57e
Keep introspection tests in existing test surfaces
kudit Aug 16, 2026
7fd2173
Expand normal coding coverage tests
kudit Aug 16, 2026
d4403ef
Handle macOS TabView navigation in UI tests
kudit Aug 16, 2026
18cfd2a
enhanced comments
kudit Aug 16, 2026
aaf939e
Remove stale CompatibilityTests scheme build entry
kudit Aug 16, 2026
4050738
Use native macOS TabView presentation
kudit Aug 16, 2026
3acaa33
Fix SwiftUI import guard
kudit Aug 16, 2026
655635c
Make macOS UI tour native and nonblocking
kudit Aug 16, 2026
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
10 changes: 10 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,15 @@
# Changelog

## v1.19.0 2026-08-15
Added `Compatibility Testing Library` and `ModuleTestEntry` so reusable module `TestCase`s run as named parameterized Swift Testing cases in SwiftPM and Xcode.
Unified reusable test execution through one lifecycle with parallel/serialized modes, source-aware failures, and reliable cleanup of mutable debug settings.
Consolidated debug formatting and source-context handling, and removed unnecessary main-actor isolation from debug logging.
Corrected `main` so it can be called from any thread while only its closure is main-actor isolated; full-runtime WebAssembly now uses real Swift concurrency for main-actor scheduling.
Removed misleading WASM/Embedded fallbacks for `sleep`, `background`, and `delay`; these APIs are now unavailable there rather than silently providing incorrect semantics. `main` remains available on full-runtime WASM but is unavailable in Embedded Swift.
Improved the reusable test UI and Xcode/SwiftPM test integration, including parameterized Test Navigator results and unified unit/UI test execution.
Expanded contributor guidance for short, staged, maintainer-reviewed coding workflows.
Increased automated code coverage to XX%.

## v1.18.2 2026-07-23
Fixed Swift Package Index build errors and warnings across SwiftUI and WebAssembly targets.
Replaced conditional SwiftUI `Group` wrappers with direct `@ViewBuilder` results and concrete text-selection types.
Expand Down
25 changes: 24 additions & 1 deletion CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

Compatibility prioritizes portability, backwards compatibility, clear public documentation, and reviewable changes. Contributors and coding agents should follow these repository-specific rules.

## Specific prompt reference (AIs should ignore this section and skip to the Interactive Coding Preferences section)
PROMPT prefix for Xcode or another context without memory for projects using Compatibility:
Follow the included Compatibility `CONTRIBUTING.md` (or github.com/kudit/Compatibility/CONTRIBUTING.md), preserve existing edits, then complete this request:
[REQUEST]
Expand All @@ -10,6 +11,21 @@ PROMPT for updating Module packages:
Review this Swift package for adoption of the Module APIs introduced in github.com/kudit/Compatibility v1.16.0 or later. Inspect the package’s existing architecture and preserve its public behavior and platform compatibility. Add or update its Compatibility dependency if necessary. Apply an appropriate Module conformance, including its version, direct Compatibility dependency, module dependencies, immediately available moduleInfo, ordered TestCase sections, and opt-in open-source repository metadata when applicable. Register the package from its highest-level module or document how an application should register it through Application.track(including:). Add complete inline DocC comments to the relevant public APIs so generated documentation can discover them. Do not create a .docc catalog, separate documentation articles, or another documentation folder. Preserve existing comments unless they are missing, unclear, or inaccurate. Put reusable tests in the module's TestCase collections so they run both in the in-app test UI and through the Swift Testing bridge; retain target-specific tests only where infrastructure requires them. Follow this package’s existing CONTRIBUTING.md, changelog, versioning, formatting, availability, and compatibility conventions. Avoid unrelated reformatting and whitespace-only changes. Before changing version numbers, compare the current changelog version with the latest committed Git version. If the active working-tree changelog is already ahead of Git, do not choose another version; synchronize that active version across every package manifest, Xcode project, public source constant, test fixture or suite heading, README or documentation display, and other hard-coded version surface. Please check that all deprecations (that can) have appropriate renamed clauses for easy fixits.


## Interactive Coding Preferences
When working interactively with a maintainer, generally (this shouldn't be meant to override thread instructions but are here as a default):
- If there is ever any conflict between instructions in a prompt, pause and clarify before continuing.
- Work in small, reviewable stages rather than delivering a large implementation all at once (unless specifically requested).
- Present one immediate decision or action at a time and pause for maintainer feedback unless instructed to do a batch.
- Explain design choices briefly and answer questions before continuing implementation.
- Preserve and review the maintainer's local edits before adding further changes.
- Let the maintainer build, edit, commit, and push between stages when practical.
- After each pushed maintainer change, review the latest commit before proposing or applying the next change.
- Keep pull requests in draft until the implementation is compiled, exercised by real tests, and fully reviewed.
- Avoid unrelated cleanup, broad reformatting, and speculative changes that make the diff harder to reason about unless specifically asked for.
- Do not ever make up code or delete comments with instructions unless you've followed the instructions and made the changes. Instruction comments, TODOs, migration notes, and user-authored comments may not be removed unless the requested work is implemented and the comment is replaced with an accurate explanation or removed with explicit justification.
- Don't offer verbose explanations in the chat interface. Long explanations should not be necessary if code is well documented inline and should be included there to read inline with code changes during diff review. The chat interface should be for clarifying questions and high level discussion, answering questions, and providing high-level feedback. When working on code projects, extra text and explanation in the chat is not a good way to preserve information. Put next steps into an appropriate section of a markdown file like the CHANGELOG, put potential future ideas there, and architecture plans and roadmaps rather than in the chat itself.


## Version and changelog rules

- Keep changelog entries in `## vX.X.X YYYY-MM-DD` format, with short line-separated notes under the current version.
Expand All @@ -23,6 +39,7 @@ Review this Swift package for adoption of the Module APIs introduced in github.c
- Modules should have separate `README.md` and `CHANGELOG.md` files. Final apps may keep a Changelog section in their README.
- When you notice existing/manual uncommitted edits, please automatically generate and add changelog comments for the manual changes.


## Post-prompt checklist

After every prompt-driven change, contributors and coding agents must:
Expand All @@ -34,6 +51,8 @@ After every prompt-driven change, contributors and coding agents must:
5. Refresh the active unpushed changelog date when work continues on a later date.
6. Append the complete prompt as `PROMPT: [PROMPT TEXT]`.
7. Review both the normal diff and an ignore-whitespace diff, remove unrelated or whitespace-only changes, run `git diff --check`, and run the repository's real build and tests.
8. For multi-file edits, patch each repository or external file separately. After every patch, verify the tool result, inspect the exact diff, run syntax checks, and search for the removed symbol or dependency. Never report the overall change as complete when any hunk failed or remains unverified. Always list changed files and show all deltas using a diff editor (if in Codex).


A full changelog outline may include:

Expand All @@ -55,16 +74,19 @@ Planned features grouped by future version.
- [ ] Longer-term ideas, experiments, and possible improvements.
```


## Code style

- Preserve public identifiers, established behavior, compatibility paths, and user-visible syntax unless a breaking change is explicitly requested.
- Keep changes tightly scoped and avoid unrelated reformatting or whitespace-only edits.
- Add clear inline comments explaining new or modified code and why compatibility-specific behavior is necessary.
- Add clear inline comments explaining new or modified code and why the change is necessary.
- Please make clear when code is not best practice or the obvious way of doing things particularly when you're making stylistic or judgement choices.
- Add complete DocC comments to public APIs and to non-obvious internal APIs.
- Preserve existing comments unless they are obsolete.
- Use concise comments for obvious behavior and more detail around compatibility, migration, concurrency, and platform-specific decisions.
- Prefer plain Markdown and code blocks for text intended to be pasted into files, GitHub, Xcode, or terminals.


## Swift rules

- Include `github.com/kudit/Compatibility` as a dependency in Swift projects and reuse its APIs where appropriate.
Expand All @@ -86,6 +108,7 @@ Planned features grouped by future version.
- Swift does not expose a general-purpose `hasFeature(Concurrency)` condition that proves a target has a scheduler, threads, Dispatch, or suspending timers. Use `canImport(Dispatch)` for Dispatch-backed implementations, availability checks for deployed Apple concurrency runtimes, `hasFeature(Embedded)` only for known Embedded restrictions, and narrowly documented platform checks for host facilities such as WebAssembly timers.
- Do not gate `Equatable`, `Encodable`, or `Decodable` merely because a build targets Linux, Android, WASM, or WASI. Those protocols are part of full Swift runtimes. Before changing a conformance gate, also check whether the concrete type is locally owned, is a typealias to a Foundation type, already conforms on that Foundation implementation, or requires Swift 6's `@retroactive` ownership annotation.


## Design goals

- Backwards compatibility where practical.
Expand Down
Loading