Daniel Arantes Loverde
757d81615b
[api-upload-refactor] API networking refactor (v2.0.0)
...
Typed request bodies (HTTPBody), first-class MultipartForm uploads, API as an
actor, Decodable & Sendable responses, bounded persistConnection retries, zero
force operations, deployment target iOS 15. Breaking change - see
Documentation/API.md and decisions/2026-08-29-api-typed-body-upload.md.
2.0.0
2026-08-29 19:00:33 -03:00
Daniel Arantes Loverde
6acec0ff3a
[api-upload-refactor] Set deployment target to iOS 15, simplify upload
...
- Package.swift: .iOS(.v13) -> .iOS(.v15), .watchOS(.v6) -> .v8
(README already stated iOS 15; watchOS 8 needed for URLSession.upload(for:fromFile:))
- drop the iOS-13 uploadTask continuation bridge; both upload overloads now
share one runUpload using session.upload(for:fromFile:delegate:)
- remove now-redundant @available(iOS 15) from the progress overload and test
- Documentation/API.md: drop iOS-version caveats
2026-08-29 18:51:49 -03:00
Daniel Arantes Loverde
20d761b361
[api-upload-refactor] Document API usage, link from README
2026-08-29 18:10:30 -03:00
Daniel Arantes Loverde
fb2e417104
[api-upload-refactor] Add iOS15 upload progress overload; toObjetct throws
...
- upload(..., onProgress: @Sendable (Double) -> Void) @available(iOS 15.0, *)
via URLSession.upload(for:fromFile:delegate:) + UploadProgressDelegate;
emits 1.0 on completion. Base upload stays iOS 13+
- move all upload code to LCEssentials+API+Upload.swift (buildUploadRequest /
finishUpload / performUpload shared); API file 400 lines. Shared request
helpers private -> internal
- Dictionary.toObjetct: try! -> throws
- APIUploadTests: +progress contract test (final 1.0, monotonic, decodes)
2026-08-29 17:46:41 -03:00
Daniel Arantes Loverde
3c64f364be
[api-upload-refactor] Add multipart upload(), split logging to its own file
...
- upload<T>(url:method:form:pathParams:headers:debug:timeoutInterval:networkServiceType:)
serialises MultipartForm to a temp file, streams it via uploadTask(with:fromFile:)
bridged to async (works on iOS 13+, unlike URLSession.upload(for:fromFile:))
- temp body file always removed via defer (success and throw)
- move requestLOG/responseLOG to LCEssentials+API+Logging.swift; extract
logResponseError helper; keeps API file at 473 lines
- APIUploadTests: 4 cases
- progress-reporting overload deferred (no stub seam for didSendBodyData)
2026-08-29 17:16:16 -03:00
Daniel Arantes Loverde
bcd358cb09
[api-upload-refactor] Replace request surface: typed body, pathParams, bounded retry
...
- request(): drop params: Any? and jsonEncoding:; add body: (any HTTPBody)?
and pathParams: [String: String]
- remove legacy magic-"file" multipart branch (-> upload() in T6) and the
now-unused mimeTypeForPath
- decompose into makeURL / buildRequest / attach / send / classify /
decodeResponse / friendlyError (each < 30 lines)
- headers now merge over defaults (custom wins per key) instead of replacing
- fix unbounded persistConnection recursion on permanent 4xx: cap at
maxPersistRetries (3)
- APIRequestTests: 7 cases over StubURLProtocol
2026-08-29 17:12:52 -03:00
Daniel Arantes Loverde
9581e49ce0
[api-upload-refactor] Convert API to an actor, drop @MainActor
...
- API: @MainActor struct -> actor. certData/certPassword/persistConnectionDelay
move from static var (data race) to actor-isolated instance state
- setupCertificationRequest -> setupCertification; add setPersistConnectionDelay
- add internal init(testConfiguration:) seam; makeSession() helper picks
test / cert-delegate / shared session
- URLSessionDelegateHandler: final + @unchecked Sendable, immutable let certs,
no @MainActor; challenge logic unchanged
- getIdentity(): remove as! SecIdentity, extract via typed Unmanaged bridging
- delete unused Result enum and defaultParams
- APIActorTests: actor conformance, delay round-trip, per-instance cert state
2026-08-29 17:09:09 -03:00
Daniel Arantes Loverde
e89935a69c
[api-upload-refactor] Add test target, relax decode constraints, add HTTPBody + MultipartForm
...
- Package: new LCEssentialsTests target (runs on iOS simulator)
- JSONDecoder.decode: T: Codable -> T: Decodable & Sendable (4 overloads);
remove try! in decode(fromURL:); honour encoding param in decode(_:using:)
- Propagate & Sendable to Data.object, Dictionary.toObjetct, API.request return
- LCEHTTPBody: HTTPBody protocol, JSONBody, FormURLEncodedBody, RawBody, factories
- LCEMultipartForm: multipart builder, OutputStream-streamed serialize(),
in-memory + on-disk file parts, ported mimeType(for:)
- Tests: StubURLProtocol harness + 15 tests
2026-08-29 16:59:08 -03:00
db696b5a34
Merge pull request '[lececryptokit-1.0.4] Bump LCECryptoKitBinary to the release that actually contains the pepper-refactor methods' ( #10 ) from chore/deps/lececryptokit-1.0.4 into main
...
Reviewed-on: #10
1.0.14
2026-08-22 11:27:43 -03:00
Daniel Arantes Loverde
4e5130a01c
[lececryptokit-1.0.4] Bump LCECryptoKitBinary to the release that actually contains the pepper-refactor methods
2026-08-22 11:26:38 -03:00
5ae0f67bc6
Merge pull request '[lececryptokit-1.0.3] Bump LCECryptoKitBinary and expose pepper-refactor login primitives' ( #9 ) from chore/deps/lececryptokit-1.0.3 into main
...
Reviewed-on: #9
1.0.12
2026-08-22 11:17:08 -03:00
Daniel Arantes Loverde
55e75760ec
[lececryptokit-1.0.3] Bump LCECryptoKitBinary and expose pepper-refactor login primitives
2026-08-22 11:15:11 -03:00
a659a9399c
Merge pull request 'Update LCEssentials+API.swift' ( #8 ) from fix/api/mainactor-session-hang into main
...
Reviewed-on: #8
1.0.11
2026-07-07 13:21:09 -03:00
Daniel Arantes Loverde
03044604fd
Update LCEssentials+API.swift
2026-07-07 13:15:45 -03:00
Daniel Arantes Loverde
2c781fbac6
Update LCEssentials+API.swift
1.0.10
2026-06-06 11:00:08 -03:00
Daniel Arantes Loverde
966b439277
Update LCEssentials+API.swift
1.0.9
2026-06-06 10:53:16 -03:00
Daniel Arantes Loverde
a24b79f443
only remote crypto kit
1.0.8
2026-05-24 10:26:25 -03:00
c0eb5f95c6
Merge pull request 'fix: update keyboard notification handling for Swift concurrency' ( #7 ) from bugfix/snackbar_for_iOS26 into main
...
Reviewed-on: #7
1.0.7
2026-04-07 11:22:02 -03:00
a15d95ed59
Merge branch 'main' into bugfix/snackbar_for_iOS26
2026-04-07 11:21:55 -03:00
Daniel Arantes Loverde
40581d791a
fix: update keyboard notification handling for Swift concurrency
...
Keep snackbar keyboard animations on the main actor and read UIKit keyboard values using the expected notification payload types.
Made-with: Cursor
2026-04-07 11:19:39 -03:00
57ce0dc87a
Merge pull request 'iPhone UIDevice names updated' ( #6 ) from feature/LCECryptoKit into main
...
Reviewed-on: #6
1.0.6
2026-02-11 20:57:39 +00:00
Daniel Arantes Loverde
d06a66226e
iPhone UIDevice names updated
2026-02-11 17:56:53 -03:00
336b47ace2
Merge pull request 'Optional' ( #5 ) from feature/LCECryptoKit into main
...
Reviewed-on: #5
2026-02-06 15:38:09 +00:00
b4a081c4d2
Merge branch 'main' into feature/LCECryptoKit
2026-02-06 15:37:58 +00:00
Daniel Arantes Loverde
57696e3036
Optional
2026-02-06 12:25:34 -03:00
560efd2c8b
Merge pull request 'Added more options' ( #4 ) from feature/LCECryptoKit into main
...
Reviewed-on: https://loverde_git.localhost:3334/Loverde-Company-LTDA/LCEssentials/pulls/4
1.0.4
1.0.5
2025-10-07 23:35:46 +00:00
7e24bdf3d5
Merge branch 'main' into feature/LCECryptoKit
2025-10-07 23:35:37 +00:00
Daniel Arantes Loverde
5df2499c4a
Added more options
2025-10-07 20:34:33 -03:00
53ac2c7001
Merge pull request 'Fix LCECryptoKit methods' ( #3 ) from feature/LCECryptoKit into main
...
Reviewed-on: https://loverde_git.localhost:3334/Loverde-Company-LTDA/LCEssentials/pulls/3
2025-10-07 23:22:04 +00:00
d909709254
Merge branch 'main' into feature/LCECryptoKit
2025-10-07 23:21:59 +00:00
Daniel Arantes Loverde
9a7981b845
Fix LCECryptoKit methods
2025-10-07 20:21:28 -03:00
8f3cbc5024
Merge pull request 'New LCECryptoKit version' ( #2 ) from feature/LCECryptoKit into main
...
Reviewed-on: https://loverde_git.localhost:3334/Loverde-Company-LTDA/LCEssentials/pulls/2
1.0.2
1.0.3
2025-10-07 18:35:29 +00:00
Daniel Arantes Loverde
fd9eff5226
Merge branch 'main' into feature/LCECryptoKit
2025-10-07 15:34:11 -03:00
Daniel Arantes Loverde
7b86616f92
LCECryptoKit new version
2025-10-07 15:06:10 -03:00
Daniel Arantes Loverde
4f84dfb108
Update README.md
2025-09-02 17:28:28 -03:00
729812d20b
Merge pull request 'v1.0.1' ( #1 ) from main into feature/LCECryptoKit
...
Reviewed-on: https://loverde_git.localhost:3334/Loverde-Company-LTDA/LCEssentials/pulls/1
1.0.1
2025-08-25 19:54:37 +00:00
08519d1aca
Merge branch 'feature/LCECryptoKit' into main
2025-08-25 19:54:11 +00:00
Daniel Arantes Loverde
7ac2ccb21f
v1.0.1
...
new repo access updated
2025-08-25 16:52:42 -03:00
Daniel Arantes Loverde
d2ca6e54d2
Improvements
2025-08-15 10:57:14 -03:00
Loverde Co - Git
0eb4f355df
Merge branch 'feature/LCECryptoKit' of git/LCEssentials into main
...
approved
1.0.0
2025-07-29 13:47:32 -03:00
Daniel Arantes Loverde
3e3e181b36
Update Package.swift
2025-07-29 13:46:38 -03:00
Loverde Co - Git
175816dff8
Merge branch 'feature/LCECryptoKit' of git/LCEssentials into main
...
Approved
2025-07-29 12:00:36 -03:00
Daniel Arantes Loverde
daae48817a
LCECripto new methods
2025-07-29 11:59:11 -03:00
Daniel Arantes Loverde
241d69ecc1
LCECryptoKit
2025-07-05 12:34:25 -03:00
Loverde Co - Git
f4fade0442
Merge branch 'feature/documentation' of git/LCEssentials into main
2025-06-23 09:49:56 -03:00
Daniel Arantes Loverde
0910973e9a
documentation
2025-06-23 09:48:57 -03:00
Loverde Co - Git
189efd7154
Merge branch 'bugfix/CoreGraphics' of git/LCEssentials into main
2025-04-09 21:20:16 -03:00
Daniel Arantes Loverde
578c69e0f8
Network Fix
2025-04-09 21:18:50 -03:00
Loverde Co - Git
f0f9f1bace
Merge branch 'bugfix/CoreGraphics' of git/LCEssentials into main
2025-03-23 00:39:00 -03:00
Daniel Arantes Loverde
6040caa2de
Bugfix CoreGraphics
2025-03-23 00:37:11 -03:00