1d5067212a
Merge pull request '[fix] LCENavigationView: remove phantom glass button, center title safely' ( #11 ) from fix/navigation/glass-duplicate-button into main
...
Reviewed-on: #11
2.0.1
2026-09-01 16:26:03 -03:00
Daniel Arantes Loverde
72a5b59c44
[fix] LCENavigationView: remove phantom glass button, center title safely
...
Dummy mirrored button used to balance title centering rendered as a
visible empty glass pill under iOS 26's automatic button chrome. Side
buttons now only render when actually configured, title centers via
ZStack independent of button widths, and title padding is derived from
measured button width so long titles truncate instead of overlapping.
Glass button style is opt-in via setGlassButtonsEnabled(_:), off by
default.
2026-09-01 16:20:19 -03:00
Daniel Arantes Loverde
d678965154
[docs] Trim README to Documentation links; fix signature image
2026-08-30 10:02:19 -03:00
Daniel Arantes Loverde
0cceda1ad9
[docs] Trim README to intro + install + Documentation links
...
Remove the legacy inline usage snippets (background thread, nav completion
handler, networking example, 'Another components'). Replace the dead
signature GIF with the public GitHub mark linking to the resume repo.
2026-08-30 10:02:18 -03:00
Daniel Arantes Loverde
2cd52d3d12
[docs] Split reference docs into Extensions / SwiftUI / UIKit guides
...
Full per-symbol reference for every public extension, SwiftUI component, and
UIKit-era helper, as collapsible sections. README gets a Documentation table
linking all four guides; footer trimmed to the resume link. Docs only - no
code changes.
2026-08-29 21:27:49 -03:00
Daniel Arantes Loverde
1743bc2d24
[docs] Cross-link API.md to the other reference guides
2026-08-29 19:36:03 -03:00
Daniel Arantes Loverde
872d70dc21
[docs] UIKit.md: Media & Components section (UIKit.md complete)
2026-08-29 19:34:51 -03:00
Daniel Arantes Loverde
6eb57f5c44
[docs] UIKit.md: Collections & Tables section
2026-08-29 19:33:59 -03:00
Daniel Arantes Loverde
ac9d010b8e
[docs] UIKit.md: Navigation & Controllers section
2026-08-29 19:33:22 -03:00
Daniel Arantes Loverde
255e5cfe1a
[docs] UIKit.md: Views & Controls section
2026-08-29 19:32:31 -03:00
Daniel Arantes Loverde
f57dc50975
[docs] UIKit.md: Layout & Constraints section
2026-08-29 19:31:43 -03:00
Daniel Arantes Loverde
971278fa3c
[docs] SwiftUI.md: LCENavigationView (complete)
2026-08-29 19:30:30 -03:00
Daniel Arantes Loverde
ec3442ed1c
[docs] Extensions.md: Encoding & Errors + Core sections (Extensions.md complete)
2026-08-29 19:29:42 -03:00
Daniel Arantes Loverde
4f6a83556d
[docs] Extensions.md: Date, Data & Files section
2026-08-29 19:28:35 -03:00
Daniel Arantes Loverde
d16a42fddc
[docs] Extensions.md: Numbers & Geometry section
2026-08-29 19:27:31 -03:00
Daniel Arantes Loverde
c459c9eaf6
[docs] Extensions.md: Collections & Sequences section
2026-08-29 19:26:46 -03:00
Daniel Arantes Loverde
1d2c595c78
[docs] Extensions.md: Strings & Text section
2026-08-29 19:25:15 -03:00
Daniel Arantes Loverde
9f1db7c121
[docs] Extensions.md: API overview + Crypto section
2026-08-29 19:23:23 -03:00
Daniel Arantes Loverde
705639b2f5
[docs] Scaffold reference guides + README Documentation section
...
- Documentation/{Extensions,SwiftUI,UIKit}.md shells with category headings + TOC
- README: Documentation table linking all 4 guides
- footer: drop the second github badge, keep the resume link
2026-08-29 19:22:12 -03:00
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