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
29 changes: 28 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,32 @@ Run the tests with:
swift test
```

Format and lint with `swift-format`, which ships inside the Xcode toolchain:

```bash
swift-format format --in-place --recursive --configuration .swift-format Sources Tests
swift-format lint --recursive --strict --configuration .swift-format Sources Tests
```

## Continuous integration

CI runs two jobs, both of which work on any hosted macOS runner:

| Job | What it does |
|---|---|
| Format | `swift-format lint --strict`, then reformat and fail if `git diff` is non-empty |
| Syntax | `swiftc -parse` on every source file |

**Build and test do not run in CI.** The package declares `swift-tools-version: 6.4`
because `CodeEditSourceEditor` 0.15 needs SwiftPM 6.4 to generate its resource bundles, and
no hosted runner carries it — they top out at 6.3.3. Lowering the manifest to 6.3 clears
SwiftPM but then fails inside a dependency: `CodeEditSymbols` 0.2.3 declares no resources in
its own manifest, so SwiftPM 6.3 does not emit `Bundle.module`.

So `swift build` and `swift test` are a local and release-time gate for now. That means CI
does not catch type errors or test failures; if you add a self-hosted runner with Xcode 26.4,
add a `build` job and drop the caveat.

## Project layout

| Module | Responsibility |
Expand Down Expand Up @@ -97,7 +123,8 @@ See [`PROJECT_PLAN.md`](PROJECT_PLAN.md) for the full roadmap.
- Branching model and PR flow: [docs/BRANCHING.md](docs/BRANCHING.md)
- Commit types and scopes: [docs/COMMITTING.md](docs/COMMITTING.md)

CI runs `swift build` and `swift test` on macOS for every push and PR.
Before pushing, run `swift build && swift test` locally — CI checks formatting and syntax
only, for the toolchain reason described above.

## License

Expand Down
7 changes: 6 additions & 1 deletion docs/BRANCHING.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,12 @@
# Branching

`main` is the only long-lived branch. It must build and have green tests at every
commit, because CI runs on it and it is what gets tagged.
commit, and it is what gets tagged.

That obligation is on you, not on CI: the hosted runners cannot build this package yet
(see the CI section of the README). Before opening a PR, run `swift build && swift test`
and `swift-format lint --strict` locally. CI will catch formatting drift and malformed
source; it will not catch a type error.

Work on short-lived branches that branch from the latest `main`:

Expand Down
Loading