Repository navigation
4.0.0 release prep - #5
Merged
Merged
Conversation
- Package.swift: Perfect-XML moves from branch "main" to from: "4.0.0". Perfect-XML 4.0.0 is not tagged yet, so this does not resolve until it is. It was verified against a local 4.0.0 tag in a scratch clone of the Perfect-XML release-prep branch. - CI modeled on Perfect-CRUD's: Linux Swift 6.2 and 6.4 (apt libxml2-dev and pkg-config for Perfect-XML) and macOS Xcode 26.0.1 and 26.6, debug and release, warnings as errors. No FileMaker Server service exists, so CI runs the server-independent tests. - The seven live-server tests returned early and were reported as passing without FILEMAKER_TESTS=1. They now use .enabled(if:), so they show as skipped. - defaultTimeout's doc comment described a per-call timeout: parameter that no public method has. Corrected. Verified (scratch copy resolving Perfect-XML at the local 4.0.0 tag): warning-free, 23 tests (16 run, 7 live tests skipped, 0 failures) in debug and release on Xcode 27 (Swift 6.4), Xcode 26.3 (Swift 6.2.4), and Linux swift:6.2-noble and swift:6.4-noble. Live tests not run: no FileMaker Server available. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- Install snippet uses from: "4.0.0"; drops the branch "main" wording. - Linux is supported (built and tested on swift:6.2-noble and swift:6.4-noble); the README called it unverified. - Fixes a contradiction: the Dependencies list said Perfect-XML parses "fmresultset and FMPXMLLAYOUT" responses, while a later note said FMPXMLLAYOUT is unimplemented. Every request uses the fmresultset grammar; layoutInfo reads field names, result types and portal fields from its metadata. FMPXMLLAYOUT and FMPXMLRESULT are not implemented. - Adds "Migrating from 3.x" and "Testing" sections. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Perfect-XML 4.0 declares iOS 15, so FileMaker needs at least that to build for iOS. The iOS job mirrors Perfect-XML's, including the wait for the simulator, but without SWIFT_TREAT_WARNINGS_AS_ERRORS, which conflicts with Xcode's warning suppression for remote package dependencies; the SwiftPM jobs check warnings. Verified with a scratch copy resolving Perfect-XML at a local 4.0.0 tag of the Perfect-XML release-prep head (aa0cdb8): xcodebuild test on an iPhone 17 simulator passes with Xcode 26.3 (iOS 26.2 runtime) and Xcode 27 (27 tests: 20 run, 7 live tests skipped). The library builds at iOS 15. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The mocked responses used type="text" on field definitions, but the code reads the data type from result= (FileMaker's type= is normal/calculation/ summary), so field typing was never exercised offline. Mocks now use result=, and new URLProtocol-stub tests cover: - layoutInfo: the -view request body, result= typing (number, date, text), and a portal's relatedset-definition; - query: typed values (number, date) and portal (relatedset) records; - layoutNames: LAYOUT_NAME parsing and the -layoutnames request body; - error 401 (no records match) thrown as FMPError.serverError(401, _). Also corrects the operator-encoding test comments: 3.0.1 encoded operator and value together once with PerfectLib's encoder, which left = and * literal and encoded < and >. Nothing was double-encoded or broken. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- FMPQuery: 3.0.1's encoder left = * & ! ( ) ; ' , / ? @ unescaped; the operator comment no longer claims old queries were mangled. - defaultTimeout is URLRequest.timeoutInterval, an inactivity timeout (in practice time to first byte), not a limit on the whole request. Doc comment and README say so. - Connection: close asks the server to close the connection; URLSession doesn't close the socket itself. Reworded. - README: lists new/edit/delete/duplicate, iOS 15, PerfectLib as a transitive dependency of Perfect-CURL, and FoundationNetworking's own libcurl use on Linux. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
… 60 s The defaultTimeout doc comment, the makeRequest comment and a test comment said every earlier version fell back to URLSession's 60-second default. 3.0.1 used Perfect-CURL and set no timeout; only the pre-release URLSession builds used 60 s. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Release prep for Perfect-FileMaker 4.0.0, the first release since 3.0.1 (2018).
CI will fail at package resolution until Perfect-XML 4.0.0 is tagged, because this depends on Perfect-XML
from: "4.0.0". Re-run the jobs once that tag exists.from: "4.0.0". iOS 15 declared.SWIFT_TREAT_WARNINGS_AS_ERRORS, which conflicts with Xcode's warning suppression for dependencies.layoutInfo(typed fields, portal definitions),layoutNames, typed query values and portal records, and error 401.layoutInfoincluded, uses thefmresultsetgrammar.FMPXMLLAYOUT/FMPXMLRESULTare never requested or parsed.<and>; nothing was double-encoded.Connection: closeis a request to the server, not a guarantee.Testing
27 tests, 20 run and 7 live skipped (no FileMaker Server available), 0 failures, built against a local Perfect-XML 4.0.0 tag:
Final verification checked:
Open, pre-existing and unchanged (decisions for Tim):
🤖 Generated with Claude Code