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
35 changes: 35 additions & 0 deletions .cursor/plans/release-2-2-0-1-draft.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
# Plan: Vision 2.2.0 - Step 1: draft

> Status: Completed
> Parent: [overview](release-2-2-0-overview.md)
> Prerequisite: None

## TL;DR

Prepare release notes and changelog in the established styles; record merge inputs and package verification.

## Iteration Bootstrap

- Iteration slug: release-2-2-0
- Required evidence: merge SHAs, release note input, CI results, package hash, published release metadata
- Artifacts to verify: changelog, package manifest, release body, tag

## Reference Pattern

CHANGELOG.md and GitHub Vision 2.1.0 release body

## Steps

### 1. Prepare the scoped change

Prepare release notes and changelog in the established styles; record merge inputs and package verification.

### 2. Verify the concrete result

Compare headings, bold bullets, scope against 2.1.0..HEAD; JSON metadata check.

## Verification

Compare headings, bold bullets, scope against 2.1.0..HEAD; JSON metadata check.

Evidence: Preserved all 2.1.0-and-earlier changelog bytes; new entries use module headings and bold bullets. GitHub draft uses the previous release headings, emoji and changelog links. #54 merged at a439049; #53 merged at 3c186e7 after confirming its source tree matches the previously verified feature tree. The user approved the proposed wording and emphasis on 2026-10-24; haxelib.json uses that exact summary.
37 changes: 37 additions & 0 deletions .cursor/plans/release-2-2-0-2-integration.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
# Plan: Vision 2.2.0 - Step 2: integration

> Status: In progress
> Parent: [overview](release-2-2-0-overview.md)
> Prerequisite: Step 1

## TL;DR

Apply user release-note input, merge release documentation into dev, then merge dev into main while preserving history.

## Iteration Bootstrap

- Iteration slug: release-2-2-0
- Required evidence: merge SHAs, release note input, CI results, package hash, published release metadata
- Artifacts to verify: changelog, package manifest, release body, tag

## Reference Pattern

.github/COMMIT-CONVENTION.md and PRs #53/#54

## Steps

### 1. Prepare the scoped change

Apply user release-note input, merge release documentation into dev, then merge dev into main while preserving history.

### 2. Verify the concrete result

Main tree contains every required commit; release metadata says 2.2.0; full target matrix green.

## Verification

Main tree contains every required commit; release metadata says 2.2.0; full target matrix green.

Approved release summary: Seam carving, Hough line/circle detection, Harris corners, higher-quality resizing, modern image I/O, and cross-target reliability.

PR #54 merged at a439049ceb18ee8f41578e57f0364a6e42708500; #53 merged into dev at 3c186e71ff5e166083697b78b838d848aa910405. #55 carries final notes into dev; #56 promotes dev to main. Existing source review threads were verified against 9a74abe and resolved.
33 changes: 33 additions & 0 deletions .cursor/plans/release-2-2-0-3-package.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
# Plan: Vision 2.2.0 - Step 3: package

> Status: Not started
> Parent: [overview](release-2-2-0-overview.md)
> Prerequisite: Step 2

## TL;DR

Build an immutable package from the release commit and verify contents, helpers, hashes and smoke behavior.

## Iteration Bootstrap

- Iteration slug: release-2-2-0
- Required evidence: merge SHAs, release note input, CI results, package hash, published release metadata
- Artifacts to verify: changelog, package manifest, release body, tag

## Reference Pattern

build-release.ps1 and tests/ci/cppia/README.md

## Steps

### 1. Prepare the scoped change

Build an immutable package from the release commit and verify contents, helpers, hashes and smoke behavior.

### 2. Verify the concrete result

ZIP manifest/version/required files match release commit; smoke compile/run; SHA256 recorded.

## Verification

ZIP manifest/version/required files match release commit; smoke compile/run; SHA256 recorded.
33 changes: 33 additions & 0 deletions .cursor/plans/release-2-2-0-4-publish.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
# Plan: Vision 2.2.0 - Step 4: publish

> Status: Not started
> Parent: [overview](release-2-2-0-overview.md)
> Prerequisite: Step 3

## TL;DR

Publish Vision 2.2.0 on GitHub with established headings and user-approved notes; hand final haxelib command to user.

## Iteration Bootstrap

- Iteration slug: release-2-2-0
- Required evidence: merge SHAs, release note input, CI results, package hash, published release metadata
- Artifacts to verify: changelog, package manifest, release body, tag

## Reference Pattern

GitHub Vision 2.1.0 release

## Steps

### 1. Prepare the scoped change

Publish Vision 2.2.0 on GitHub with established headings and user-approved notes; hand final haxelib command to user.

### 2. Verify the concrete result

Tag targets release main commit; published body and assets match; haxelib submission command printed but not executed.

## Verification

Tag targets release main commit; published body and assets match; haxelib submission command printed but not executed.
20 changes: 20 additions & 0 deletions .cursor/plans/release-2-2-0-overview.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
# Plan: Vision 2.2.0 release

## Status: In progress

Merge the qualified feature work, restore the historical changelog/release-note styles, publish the GitHub release, and prepare the exact Haxelib submission command for the user. On 2026-10-24 the user approved the proposed release-note wording and emphasis: Seam carving, Hough line/circle detection, Harris corners, higher-quality resizing, modern image I/O, and cross-target reliability. The final Haxelib command must not run here.

## Sub-plans

1. [draft](release-2-2-0-1-draft.md)
2. [integration](release-2-2-0-2-integration.md)
3. [package](release-2-2-0-3-package.md)
4. [publish](release-2-2-0-4-publish.md)

## Decisions

- Preserve merge commits and per-step history.
- Merge chain: #54 into Hough/Harris, #53 into dev, release documentation into dev, then dev into main.
- GitHub tag/name: 2.2.0 / Vision 2.2.0, matching previous releases.
- GitHub body uses New Features and Bugfixes & Tweaks with the existing emoji and changelog links.
- No Haxelib upload, credential entry, or password request.
18 changes: 18 additions & 0 deletions .github/releases/2.2.0.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
### New Features 🥳
- **Added content-aware image shrinking with `Vision.carve()`**
- **Added Hough line, line-segment and circle detection, and Harris corner detection:**
- **`houghLineSegmentDetection()`**
- **`houghCircleDetection()`**
- **`harrisCornerResponse()`**
- **`harrisCorners()`**
- **Added higher-quality resizing with bicubic, Catmull-Rom, Mitchell-Netravali and Lanczos interpolation**
- **Modernized image loading, exporting and framework conversions with `ImageIO`**
- [***Check The Changelog For More Details***](https://github.com/ShaharMS/Vision/blob/main/CHANGELOG.md)

### Bugfixes & Tweaks 🛠️
- **Fixed behavior across image processing, linear algebra, geometry, colors and byte arrays**
- **Improved cross-target reliability, including Lua PNG export and `vision_quiet` fixes**
- **Replaced generated test scaffolding with authored behavioral tests and fixed CI failure reporting**
- **Included reproducible build tools for the qualified cppia interpreter host** - uses the included compatibility patch; JIT mode is not qualified.
- **Improved release packaging and removed the test-only `utest` runtime dependency**
- [***Check The Changelog For More Details***](https://github.com/ShaharMS/Vision/blob/main/CHANGELOG.md)
97 changes: 68 additions & 29 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,43 +1,82 @@
# 2.2.0

### Content-aware resizing and interpolation
### `Vision.hx`

- **Added `carve()`** - content-aware shrinking using minimum-energy seam removal. Returns a new image, preserves surviving pixels and alpha, and supports reducing width and height.
- **Added `houghLineSegmentDetection()`**
- **Added `houghCircleDetection()`**
- **Added `mapHoughCircles()`**
- **Added `harrisCornerResponse()`**
- **Added `harrisCorners()`**
- **Added reproducible, hosted before/after examples for `carve()`**

### `Image.hx`

- **Added `copyImageFrom()`**
- **Added raw byte loading and export helpers**
- **Added higher-quality resizing through bicubic, Catmull-Rom, Mitchell-Netravali and Lanczos interpolation**

### `vision.ds`

- Added `Vision.carve(image, width, height)` using Avidan-Shamir minimum-energy seam removal. Supports shrinking width and height, recalculates RGB gradient energy per seam, preserves surviving RGBA pixels, and returns an independent image. Width is reduced before height; enlargement and nonpositive dimensions are rejected.
- Added reproducible Valve examples and hosted before/after images for `carve`.
- Added bicubic, Catmull-Rom, Mitchell-Netravali and Lanczos resizing algorithms.
- **Added `Circle2D`**
- **Added Hough line, line-segment and circle detection options**
- **Added Harris response and corner detection options**
- **Added `ImageFormat.JPEG` and `ImageFormat.VISION`**
- **Added `ImageResizeAlgorithm.CatmullRomInterpolation`, `MitchellNetravaliInterpolation` and `LanczosInterpolation`**
- **Implemented the previously unimplemented bicubic resize option**
- **Fixed behavior across matrices, geometry, colors, byte arrays and queues**

### Feature detection
### `vision.tools`

- **Added synchronous `ImageTools.loadFromFile()`**
- **Added `ImageTools.loadFromBytes()`**
- **Added `ImageTools.loadFromURL()`**
- **Added `ImageTools.exportToBytes()`**
- **Added `ImageTools.exportToFile()`**
- **Deprecated `ImageTools.saveToFile()` in favor of `ImageTools.exportToFile()`**
- **Fixed math and array utility behavior across targets**

- Added a standard polar Hough accumulator and consolidated the existing `SimpleHough` bridge.
- Added `Vision.houghLineSegmentDetection` with minimum length, gap and optional precomputed edge-image controls.
- Added `Vision.houghCircleDetection`, `Vision.mapHoughCircles`, `Circle2D` and detector option types.
- Added `Vision.harrisCornerResponse` and `Vision.harrisCorners` with configurable response computation and corner selection.
### `vision.formats`

### Image formats and framework integration
- **Added the `vision.formats` package for image format and framework conversions**
- **Added `ImageIO.from` and `ImageIO.to`**
- **Added byte and framework import/export helpers**
- **Added JPEG encoding through `format` on supported targets**
- **Added PNG export on Lua**
- **JPEG decoding remains browser-dependent; native/Node JPEG decoding is not implemented**

### `vision.algorithms`

- **Added `SeamCarving` for minimum-energy seam removal**
- **Added `Hough` for standard line, probabilistic segment and circle detection**
- **Updated the existing `SimpleHough` bridge to use the shared Hough implementation**
- **Added `Harris` for corner-response maps and corner extraction**
- **Added `BicubicInterpolation`, `CatmullRomInterpolation`, `MitchellNetravaliInterpolation` and `LanczosInterpolation`**
- **Fixed behavior in edge detection, K-Means, image hashing, linear algebra and related utilities**

### `vision.exceptions`

- Added `Image.copyImageFrom`, `ImageFormat.JPEG` and `ImageFormat.VISION`.
- Introduced `vision.formats` and `ImageIO.from` / `ImageIO.to` for byte and framework conversions.
- Added synchronous file loading, byte loading, URL loading, byte export and file export through `ImageTools`.
- Deprecated `ImageTools.saveToFile` in favor of `ImageTools.exportToFile`.
- Added JPEG encoding through `format` on supported targets and PNG export on Lua.
- JPEG decoding remains browser-dependent; native/Node JPEG byte decoding is not implemented.
- **Added `InvalidHeapsPixelFormat`**
- **Added `SingularMatrixError`**
- **Added `HoughEdgeImageSizeMismatch`**

### Correctness and portability
### Tests & CI

- Corrected behavior across edge detectors, K-means, image hashing, linear algebra, geometry, color handling, byte arrays, queues and math utilities.
- Added `InvalidHeapsPixelFormat` and `SingularMatrixError` diagnostics.
- Fixed `vision_quiet` compilation for matrix conversion and PNG/BMP loading; invalid PNG/BMP input returns a transparent 1x1 placeholder in quiet mode.
- Added inline protection for targets with generated method-size limits and support for non-threaded sys targets.
- Fixed JavaScript job completion/failure dispatch and Node handling of typed exceptions and browser-only operations.
- **Replaced generated test scaffolding with authored behavioral `utest` suites**
- **Added suite/case filtering, a maintained coverage inventory and a local multi-target CI runner**
- **Verified all 12 target jobs, with 619 test methods passing on interpreter, Node and the qualified cppia interpreter**
- **Fixed Node tests reporting success after assertion failures**
- **Fixed JavaScript job completion/failure callbacks and Node-specific compatibility**
- **Fixed Neko module loading through full dead-code elimination**
- **Fixed `vision_quiet` compilation for matrix conversion and PNG/BMP loading**
- **Added support for non-threaded sys targets and inline protection for constrained targets**
- **Added a pinned cppia interpreter-host compatibility patch and reproducible build tools** - the qualified configuration uses Haxe 4.3.7 and the included patched hxcpp host; JIT mode is not qualified.

### Tests, CI and packaging
### Release packaging

- Replaced generated test scaffolding with authored behavioral `utest` suites, suite/case filtering and a maintained coverage inventory.
- Added a local multi-target CI runner and repaired runtime setup across the target matrix.
- Added a pinned cppia interpreter-host patch for generic/typed array interoperability, fractional values, resize and length handling, with reproducible build tooling included in release ZIPs.
- Node tests now use `hxnodejs` and return a failing process status when assertions fail.
- Removed the test-only `utest` dependency from the library package.
- Added a package-only PowerShell builder; the release batch file stops if packaging fails before offering submission.
- **Removed the test-only `utest` runtime dependency**
- **Added a package-only PowerShell builder that preserves previous release candidates**
- **Included the cppia host patch and build tools in release ZIPs**

# 2.1.0

Expand Down
2 changes: 1 addition & 1 deletion haxelib.json
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
"version": "2.2.0",
"description": "Vision is a simple, powerful and flexible computer vision & image processing library for Haxe.",
"contributors": ["ShaharMS"],
"releasenote": "Seam carving, Hough and Harris feature detection, higher-quality resizing, image I/O, and cross-target reliability.",
"releasenote": "Seam carving, Hough line/circle detection, Harris corners, higher-quality resizing, modern image I/O, and cross-target reliability.",
"tags": ["cv", "computer-vision", "im", "image-manipulation", "cross", "cross-framework", "image", "image-processing", "ip", "feature-detection"],
"classPath": "src",
"dependencies": {},
Expand Down
Loading