Skip to content

Commit 8250f6d

Browse files
author
Emil Karimov
committed
chore: release v1.4.2
- Version.swift: EKNetworkVersionString = 1.4.2 - CHANGELOG: add [1.4.2] - 2026-02-03 (multipart safety, path norm, ProgressSessionManager, headers) - README/README_RU: package from 1.4.2, badges Tests 156 / Coverage 99.13% - SUMMARY: current version 1.4.2, timeline v1.4.0–v1.4.2, package from 1.4.2
1 parent baceb14 commit 8250f6d

5 files changed

Lines changed: 20 additions & 11 deletions

File tree

CHANGELOG.md

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,20 +7,25 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
77

88
## [Unreleased]
99

10+
_Nothing yet._
11+
12+
## [1.4.2] - 2026-02-03
13+
1014
### Added
11-
- **Security & robustness (from IMPROVEMENTS_AND_ANALYSIS)**:
15+
- **Security & robustness**:
1216
- **MultipartFormData**: `encodedData()` now returns `Data?` (no force unwrap); UTF-8 encoding failures return `nil`. Name and filename in Content-Disposition are escaped (quotes and backslashes). New error `NetworkError.invalidMultipartEncoding` when encoding fails.
1317
- **Path normalization**: Request path is normalized (trim slashes, collapse `//`); paths containing `..` are rejected with `NetworkError.invalidURL`.
1418
- **NonRetriableError**: New protocol; default `RetryPolicy.shouldRetry` returns `false` for errors conforming to `NonRetriableError` (replaces string-based type name checks).
1519
- **Task cancellation**: Retry loop checks `Task.isCancelled` and calls `Task.checkCancellation()`; on cancellation throws `CancellationError`.
1620
- **Logging**: Path and error messages in logs use `privacy: .private` to avoid leaking sensitive data.
1721
- **Convenience init**: `NetworkManager(baseURL: URL, ...)` convenience initializer for fixed base URL.
1822
- **Shared progress session**: New `ProgressSessionManager` with a single shared `URLSession` and delegate for progress requests; progress requests no longer create a new session per request.
19-
- **Tests**: 10 new tests in `CoverageImprovementsTests.swift` (convenience init, path validation, multipart escaping, NonRetriableError, Task cancellation, etc.). Total **125 tests**, coverage **99.13%** (ProgressSessionManager excluded from coverage like ProgressDelegate).
23+
- **Tests**: Extended test suite (`CoverageImprovementsTests`, `ExtendedTestSuite`), progress and conflicting body tests. Total **156 tests**, coverage **99.13%** (ProgressDelegate/ProgressSessionManager excluded from report).
2024

2125
### Changed
2226
- **RetryPolicy**: Default `shouldRetry` uses `NonRetriableError` protocol instead of `String(describing: type(of:))`. Custom error types that should not be retried should conform to `NonRetriableError`.
2327
- **MultipartFormData.encodedData()**: Return type is now `Data?`; callers (e.g. `NetworkManager`) throw `NetworkError.invalidMultipartEncoding` when `nil`.
28+
- **File headers**: Unified Swift file headers (Created by, Copyright from file metadata).
2429

2530
## [1.4.1] - 2025-12-XX
2631

README.md

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,8 @@
88
[![Platform](https://img.shields.io/badge/Platform-iOS%2018%2B%20%7C%20macOS%2015%2B-lightgrey.svg)](https://swift.org)
99
[![License](https://img.shields.io/badge/License-MIT-blue.svg)](LICENSE)
1010
[![CI](https://github.com/emvakar/EKNetwork/actions/workflows/swift.yml/badge.svg)](https://github.com/emvakar/EKNetwork/actions/workflows/swift.yml)
11-
[![Tests](https://img.shields.io/badge/Tests-115%20passed-brightgreen.svg)](https://github.com/emvakar/EKNetwork/actions)
12-
[![Coverage](https://img.shields.io/badge/Coverage-99.42%25-brightgreen.svg)](https://github.com/emvakar/EKNetwork/actions)
11+
[![Tests](https://img.shields.io/badge/Tests-156%20passed-brightgreen.svg)](https://github.com/emvakar/EKNetwork/actions)
12+
[![Coverage](https://img.shields.io/badge/Coverage-99.13%25-brightgreen.svg)](https://github.com/emvakar/EKNetwork/actions)
1313

1414
*A lightweight, type-safe HTTP networking library for Swift applications*
1515

@@ -103,7 +103,7 @@ Add EKNetwork to your project dependencies in `Package.swift`:
103103

104104
```swift
105105
dependencies: [
106-
.package(url: "https://github.com/emvakar/EKNetwork.git", from: "1.4.0")
106+
.package(url: "https://github.com/emvakar/EKNetwork.git", from: "1.4.2")
107107
]
108108
```
109109

@@ -122,7 +122,7 @@ Then add the product to your target:
122122

123123
1. In Xcode, select **File****Add Packages...**
124124
2. Enter the repository URL: `https://github.com/emvakar/EKNetwork.git`
125-
3. Select **Up to Next Major Version** with `1.4.0`
125+
3. Select **Up to Next Major Version** with `1.4.2`
126126
4. Click **Add Package**
127127
5. Select the `EKNetwork` product and add it to your target
128128

README_RU.md

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,8 @@
55
[![Swift](https://img.shields.io/badge/Swift-6.0-orange.svg)](https://swift.org)
66
[![Platform](https://img.shields.io/badge/Platform-iOS%2018%2B%20%7C%20macOS%2015%2B-lightgrey.svg)](https://swift.org)
77
[![License](https://img.shields.io/badge/License-MIT-blue.svg)](LICENSE)
8-
[![Tests](https://img.shields.io/badge/Tests-21%20passed-brightgreen.svg)](Tests)
8+
[![Tests](https://img.shields.io/badge/Tests-156%20passed-brightgreen.svg)](https://github.com/emvakar/EKNetwork/actions)
9+
[![Coverage](https://img.shields.io/badge/Coverage-99.13%25-brightgreen.svg)](https://github.com/emvakar/EKNetwork/actions)
910

1011
*Легковесная, типобезопасная библиотека для работы с HTTP в Swift приложениях*
1112

@@ -91,7 +92,7 @@ struct GetUserRequest: NetworkRequest {
9192

9293
```swift
9394
dependencies: [
94-
.package(url: "https://github.com/emvakar/EKNetwork.git", from: "1.4.0")
95+
.package(url: "https://github.com/emvakar/EKNetwork.git", from: "1.4.2")
9596
]
9697
```
9798

SUMMARY.md

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -55,14 +55,17 @@ EKNetwork is a **modern, type-safe HTTP networking library** for Swift applicati
5555

5656
## 📊 Version History & Stability
5757

58-
### Current Version: **1.2.2** (December 2025)
58+
### Current Version: **1.4.2** (February 2026)
5959

6060
**Version Timeline:**
6161
- **v1.0.0** (June 2025) - Initial stable release with core features
6262
- **v1.1.0** - Added multipart, form encoding, streams, custom JSON handling
6363
- **v1.2.0** - Added progress tracking, User-Agent, dynamic base URL
6464
- **v1.2.1** - Swift 6.0 support, improved error handling
6565
- **v1.2.2** - Bug fixes, validation improvements, comprehensive documentation
66+
- **v1.4.0** - CI/CD, Swift 6.0 full compatibility, Package API updates
67+
- **v1.4.1** - Base URL as closure, removal of updateBaseURL, @unchecked Sendable
68+
- **v1.4.2** - Multipart safety, path normalization, NonRetriableError, ProgressSessionManager, file headers
6669

6770
**Stability:****Stable** - Ready for production use
6871

@@ -77,7 +80,7 @@ EKNetwork is a **modern, type-safe HTTP networking library** for Swift applicati
7780
```swift
7881
// 1. Add to Package.swift
7982
dependencies: [
80-
.package(url: "https://github.com/emvakar/EKNetwork.git", from: "1.4.0")
83+
.package(url: "https://github.com/emvakar/EKNetwork.git", from: "1.4.2")
8184
]
8285

8386
// 2. Define your request

Sources/EKNetwork/Version.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,5 +9,5 @@
99
// Version is updated automatically from git tag during build.
1010
//
1111

12-
internal let EKNetworkVersionString = "1.4.0"
12+
internal let EKNetworkVersionString = "1.4.2"
1313

0 commit comments

Comments
 (0)