From b15f6400e1862dcf5d9b501ae1d526efa89ecefd Mon Sep 17 00:00:00 2001 From: sayed3li97 Date: Tue, 7 Jul 2026 00:38:38 +0400 Subject: [PATCH] Release 0.0.2 Version bump 0.0.1 -> 0.0.2 across pubspec, the C core (version macros + string), the web NativeCore, the DNG software tag, tests, and docs. First release cut through the automated pipeline (release.yml -> publish.yml). Changes since 0.0.1: isLeaf on the O(1) FFI calls, ten animated architecture diagrams woven through the README, and the automated pub.dev publishing CI. C harness 60/60 (encodes 0.0.2); FFI version test updated; analyze clean; dart pub publish --dry-run 0 warnings. Co-Authored-By: Claude Opus 4.8 --- ARCHITECTURE.md | 4 ++-- CHANGELOG.md | 10 ++++++++++ CONTRIBUTING.md | 2 +- COOKBOOK.md | 8 ++++---- MIGRATION.md | 6 +++--- PLATFORM_GUIDE.md | 2 +- README.md | 4 ++-- ROADMAP.md | 4 ++-- TROUBLESHOOTING.md | 14 +++++++------- example/pubspec.yaml | 2 +- lib/src/camera_pro_base.dart | 2 +- lib/src/ffi/native_core.dart | 2 +- lib/src/web/native_core_web.dart | 4 ++-- lib/src/web/web_dng.dart | 2 +- pubspec.yaml | 2 +- src/core/camera_pro_core.c | 2 +- src/core/camera_pro_core.h | 2 +- src/core/dng_writer.c | 2 +- src/platform/linux/README.md | 2 +- src/platform/web/README.md | 2 +- src/tests/core_test.c | 4 ++-- test/ffi/native_core_test.dart | 6 +++--- 22 files changed, 49 insertions(+), 39 deletions(-) diff --git a/ARCHITECTURE.md b/ARCHITECTURE.md index 0ac656a..e17a13b 100644 --- a/ARCHITECTURE.md +++ b/ARCHITECTURE.md @@ -1,6 +1,6 @@ # camera_pro — Technical Architecture -> **Project status (v0.0.1):** The engine works. The Dart control-plane, shared +> **Project status (v0.0.2):** The engine works. The Dart control-plane, shared > C core (SIMD kernels, lock-free pool, DNG writer), and build pipeline are > implemented and verified. The **Apple AVFoundation backend** is live-verified > on real Mac cameras (preview, PNG/RAW capture, H.264 recording, burst, @@ -221,7 +221,7 @@ The `StubCameraBackend` implements every method as a safe no-op that returns emp `NativeCore` is a static façade over the `@Native` externals auto-generated by ffigen from `camera_pro_core.h`. It exposes typed helpers: -- `NativeCore.versionString` — real FFI call, verified to return `"0.0.1"` +- `NativeCore.versionString` — real FFI call, verified to return `"0.0.2"` - `NativeCore.simdName` — returns the active kernel name (`"NEON"` on arm64) - `NativeCore.errorString(code)` — maps a native `camera_error_t` to a human string - `NativeCore.histogramFromRgba(...)` — copies a `Uint8List` into native memory, calls the SIMD histogram kernel, copies the 4 × 256-bin result back to Dart diff --git a/CHANGELOG.md b/CHANGELOG.md index c0b30e7..e435c8f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +## [0.0.2] - 2026-07-07 + ### Changed - **FFI:** marked the O(1) native calls `isLeaf: true` — the introspection @@ -21,6 +23,14 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Added a pub.dev version badge, CI badge, and install line to the README. - Refreshed `ROADMAP.md` stats (80 VM + 65 browser tests; ~375 KB archive; marked pub.dev **published**; noted web `MediaRecorder` video recording). +- Ten animated architecture diagrams (dark / monospace house style) woven + through the README, with a `doc/diagrams/` gallery. + +### CI + +- **Automated pub.dev publishing**: `release.yml` cuts a GitHub Release + tag on + every version bump merged to `main` and dispatches `publish.yml`, which uses + pub.dev trusted publishing (OIDC — no stored credentials). ## [0.0.1] - 2026-07-04 diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index eb9878d..de61977 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -4,7 +4,7 @@ Thank you for your interest in contributing to `camera_pro`. This document expla ## Project status -This is an early release (v0.0.1). The shared C core and Dart control-plane are implemented and verified. The Apple AVFoundation backend (macOS/iOS) is live-verified on real Mac cameras — preview, capture, RAW DNG, H.264 recording, burst, bracketing, multi-camera — with a Metal GPU compute path cross-checked bit-exact against the C kernels. The Web backend (getUserMedia) is live-verified in Chrome, including all six manual controls via a pure-Dart digital pipeline and pure-Dart DNG/visual-aid kernels byte-identical to the C core. The Linux (V4L2) and Windows (Media Foundation) C HALs implement the full 44-function contract and pass the lifecycle harness on real CI runners every push, but are not yet exposed through a Dart `CameraBackend` (desktop Dart currently falls back to the stub) and have never run against real camera hardware. The Android backend is not started. iOS sensor controls compile but have not yet run on a physical iPhone. Please read the status markers throughout the codebase before claiming a feature works: +This is an early release (v0.0.2). The shared C core and Dart control-plane are implemented and verified. The Apple AVFoundation backend (macOS/iOS) is live-verified on real Mac cameras — preview, capture, RAW DNG, H.264 recording, burst, bracketing, multi-camera — with a Metal GPU compute path cross-checked bit-exact against the C kernels. The Web backend (getUserMedia) is live-verified in Chrome, including all six manual controls via a pure-Dart digital pipeline and pure-Dart DNG/visual-aid kernels byte-identical to the C core. The Linux (V4L2) and Windows (Media Foundation) C HALs implement the full 44-function contract and pass the lifecycle harness on real CI runners every push, but are not yet exposed through a Dart `CameraBackend` (desktop Dart currently falls back to the stub) and have never run against real camera hardware. The Android backend is not started. iOS sensor controls compile but have not yet run on a physical iPhone. Please read the status markers throughout the codebase before claiming a feature works: - ✅ implemented and verified - 🚧 API/interface scaffolded; native side not connected diff --git a/COOKBOOK.md b/COOKBOOK.md index 40e1584..c870cdb 100644 --- a/COOKBOOK.md +++ b/COOKBOOK.md @@ -1,6 +1,6 @@ # camera_pro Cookbook -Practical recipes for working with `camera_pro` v0.0.1. This file is split into two clear sections: +Practical recipes for working with `camera_pro` v0.0.2. This file is split into two clear sections: - **Works today** — recipes that are fully implemented, tested, and runnable against the current codebase. - **Roadmap recipes** — intended future API shown for design reference. Each is marked 🚧 with an honest status of what exists versus what is still to build. @@ -9,7 +9,7 @@ Practical recipes for working with `camera_pro` v0.0.1. This file is split into ## Project status -`camera_pro` v0.0.1 is a **working camera engine**. The shared C core (SIMD histogram, lock-free buffer pool, YUV→RGBA conversion, focus peaking, zebra, false color, waveform, digital adjust/zoom/blur, linear-DNG writer) and the full Dart control-plane (capability passport, state machine, typed errors, tier selection, controller, burst/bracket, `FrameProcessor` API) are implemented and verified. +`camera_pro` v0.0.2 is a **working camera engine**. The shared C core (SIMD histogram, lock-free buffer pool, YUV→RGBA conversion, focus peaking, zebra, false color, waveform, digital adjust/zoom/blur, linear-DNG writer) and the full Dart control-plane (capability passport, state machine, typed errors, tier selection, controller, burst/bracket, `FrameProcessor` API) are implemented and verified. Platform backends: the **Apple AVFoundation backend** (macOS/iOS) is live-verified on real Mac cameras — preview, PNG/RAW capture, H.264 recording, burst, bracketing, multi-camera — with a **Metal GPU** overlay path bit-exact against the C kernels; the **Web backend** (getUserMedia) is live-verified in Chrome with all six manual controls (pure-Dart digital pipeline), RAW/DNG, and MediaRecorder video. The **Linux V4L2** and **Windows Media Foundation** C HALs implement the full 44-function contract and pass a lifecycle harness on CI, but are not yet exposed through a Dart backend (desktop Dart falls back to the conformant stub). **Android** is not started. Recipes below are labelled accordingly. @@ -26,12 +26,12 @@ import 'package:camera_pro/camera_pro.dart'; void printCoreInfo() { // Static helpers on CameraPro delegate to NativeCore internally. - print(CameraPro.nativeCoreVersion); // e.g. "0.0.1" + print(CameraPro.nativeCoreVersion); // e.g. "0.0.2" print(CameraPro.simdKernel); // e.g. "NEON" on Apple Silicon // Or use NativeCore directly for more detail. final core = NativeCore(); - print(core.versionString); // "0.0.1" + print(core.versionString); // "0.0.2" print(core.simdName); // "NEON" | "SSE4.1" | "AVX2" | "SCALAR" } ``` diff --git a/MIGRATION.md b/MIGRATION.md index cc4d6fb..a1bf82e 100644 --- a/MIGRATION.md +++ b/MIGRATION.md @@ -1,6 +1,6 @@ # Migration Guide: `camera` and `camerawesome` → `camera_pro` -> **Project status (v0.0.1):** The shared C core, Dart control-plane, capability passport, typed errors, and tier system are implemented and verified. Live backends ship for **Apple AVFoundation** (macOS/iOS — live-verified on real Mac cameras) and **Web** (`getUserMedia`, live-verified in Chrome). The **Linux V4L2** and **Windows Media Foundation** C HALs are fully implemented and CI-verified, but are not yet exposed through a Dart backend — desktop Dart on those platforms falls back to the stub. **Android** is 🚧 roadmap. On live platforms this guide describes the **shipping API**; on stub platforms you can structure your migration now and drop in a live backend when it ships. See [Not yet available](#not-yet-available) for the honest gap list. +> **Project status (v0.0.2):** The shared C core, Dart control-plane, capability passport, typed errors, and tier system are implemented and verified. Live backends ship for **Apple AVFoundation** (macOS/iOS — live-verified on real Mac cameras) and **Web** (`getUserMedia`, live-verified in Chrome). The **Linux V4L2** and **Windows Media Foundation** C HALs are fully implemented and CI-verified, but are not yet exposed through a Dart backend — desktop Dart on those platforms falls back to the stub. **Android** is 🚧 roadmap. On live platforms this guide describes the **shipping API**; on stub platforms you can structure your migration now and drop in a live backend when it ships. See [Not yet available](#not-yet-available) for the honest gap list. --- @@ -474,7 +474,7 @@ StreamBuilder( ## Not yet available -> **Important:** In v0.0.1 `CameraPro.create()` returns a **live, verified backend** on macOS/iOS (AVFoundation) and web (`WebCameraBackend` over `getUserMedia`). On **Linux and Windows desktop** the Dart layer still falls back to the **stub HAL** — the C HALs for both platforms are fully implemented and CI-verified, but not yet wired to a Dart `CameraBackend` — and **Android** is not started. The stub: +> **Important:** In v0.0.2 `CameraPro.create()` returns a **live, verified backend** on macOS/iOS (AVFoundation) and web (`WebCameraBackend` over `getUserMedia`). On **Linux and Windows desktop** the Dart layer still falls back to the **stub HAL** — the C HALs for both platforms are fully implemented and CI-verified, but not yet wired to a Dart `CameraBackend` — and **Android** is not started. The stub: > > - Returns `CameraCapabilities.unsupported()` for all features. > - Reports `CameraTier.basic`. @@ -500,7 +500,7 @@ StreamBuilder( | Burst / bracket / HDR | ✅ burst (5 shots ~1.2 s) and EV bracketing (measured luminance at −2/0/+2) verified; HDR fusion 🚧 roadmap | | Frame processors | ✅ `FrameProcessor` plugin API implemented | -**Already implemented and verified** in v0.0.1: +**Already implemented and verified** in v0.0.2: - Shared C core: SIMD histogram (NEON + SSSE3 + scalar, bit-exact; x86 verified under Rosetta 2 and on CI), lock-free buffer pool, YUV420P/NV12/NV21→RGBA with NEON fast path (bit-exact), Sobel focus peaking, zebra, false color, waveform, digital adjust/zoom/blur, dependency-free linear-DNG writer with EXIF; 60-check C harness passing on arm64 and x86_64-under-Rosetta. - Apple AVFoundation backend, live-verified on real Mac cameras: enumeration, capabilities, live preview over FFI, PNG capture, RAW linear-DNG capture (ffmpeg-verified), H.264 video recording (ffprobe-verified), burst, EV bracketing, multi-camera concurrent open, permission flow. All six manual controls run on macOS through the C digital pipeline → `CameraTier.full`; real iOS sensor controls compile but have not yet run on a physical iPhone. diff --git a/PLATFORM_GUIDE.md b/PLATFORM_GUIDE.md index bb8a443..4c07991 100644 --- a/PLATFORM_GUIDE.md +++ b/PLATFORM_GUIDE.md @@ -1,6 +1,6 @@ # camera_pro — Platform Guide -This document describes the per-platform capabilities, native API mappings, and current implementation status for `camera_pro` v0.0.1. The shared C core and Dart control-plane are complete and verified; the Apple (macOS/iOS) and Web backends are implemented and live-verified; the Linux and Windows C HALs are fully implemented and CI-verified (Dart wiring pending); Android has not been started. +This document describes the per-platform capabilities, native API mappings, and current implementation status for `camera_pro` v0.0.2. The shared C core and Dart control-plane are complete and verified; the Apple (macOS/iOS) and Web backends are implemented and live-verified; the Linux and Windows C HALs are fully implemented and CI-verified (Dart wiring pending); Android has not been started. --- diff --git a/README.md b/README.md index 2db7c80..942f9cc 100644 --- a/README.md +++ b/README.md @@ -10,7 +10,7 @@ A Flutter camera package built on a shared C/C++ core with a crash-proof Dart AP --- -> **Project status: working camera engine (v0.0.1, pre-release)** +> **Project status: working camera engine (v0.0.2, pre-release)** > > On macOS the example app opens the real camera and does live preview, all six manual controls, five live visual-aid overlays (histogram, focus peaking, zebra, false color, waveform — GPU-accelerated via Metal where available), PNG + RAW/DNG capture with EXIF, burst, EV bracketing, and H.264 video recording — every one of those verified live against real hardware. The same AVFoundation backend compiles for iOS with sensor-level manual controls. **Web** runs in the browser too: a getUserMedia backend with live preview, capture, and the visual aids reimplemented in pure Dart — verified in Chrome with screenshots ([see below](#web)). Linux (V4L2) and Windows (Media Foundation) backends implement the full HAL contract and pass CI on real ubuntu/windows runners (camera-hardware runtime pending machines with cameras). Android is not started — see [ROADMAP.md](ROADMAP.md) for the honest gate on every remaining item. @@ -210,7 +210,7 @@ import 'package:camera_pro/camera_pro.dart'; Future main() async { // nativeCoreVersion is a real FFI call into the compiled C core. - print(CameraPro.nativeCoreVersion); // "0.0.1" + print(CameraPro.nativeCoreVersion); // "0.0.2" print(CameraPro.simdKernel); // "NEON" on arm64, "scalar" otherwise // create() returns a controller backed by the stub HAL until a platform HAL lands. diff --git a/ROADMAP.md b/ROADMAP.md index bfac62e..bdaefb5 100644 --- a/ROADMAP.md +++ b/ROADMAP.md @@ -9,7 +9,7 @@ Dart suite (80 VM tests + 65 browser tests), the GPU cross-check harness, CI runners (ubuntu/windows/macos/web), Rosetta x86 runs, ffprobe/ffmpeg inspection of produced files, or live operation of the example app against real cameras. -**Published:** [pub.dev/packages/camera_pro](https://pub.dev/packages/camera_pro) — v0.0.1. +**Published:** [pub.dev/packages/camera_pro](https://pub.dev/packages/camera_pro) — v0.0.2. --- @@ -97,7 +97,7 @@ unverifiable device code). | dartdoc | ✅ 0 warnings / 0 errors | | `dart pub publish --dry-run` | ✅ 0 warnings (~375 KB archive) | | CI (macos/ubuntu/windows/web, every push) | ✅ green | -| pub.dev publication | ✅ published as **v0.0.1** | +| pub.dev publication | ✅ published as **v0.0.2** | | Localization of error strings | ❌ (English only; messages centralised in `errors.dart` / `camera_pro_error_string`) | --- diff --git a/TROUBLESHOOTING.md b/TROUBLESHOOTING.md index 6421620..8fb6fcc 100644 --- a/TROUBLESHOOTING.md +++ b/TROUBLESHOOTING.md @@ -1,7 +1,7 @@ # Troubleshooting — camera_pro This guide covers known issues, their root causes, and concrete fixes for the -`camera_pro` package (v0.0.1). Issues are presented as **Problem → Cause → Fix**. +`camera_pro` package (v0.0.2). Issues are presented as **Problem → Cause → Fix**. --- @@ -148,10 +148,10 @@ regardless of the device, and all `Capability` fields come back as **Cause** -Whether this is expected depends on the platform. In v0.0.1 the default backend +Whether this is expected depends on the platform. In v0.0.2 the default backend is selected per target: -| Platform | Default backend in v0.0.1 | +| Platform | Default backend in v0.0.2 | |----------|---------------------------| | Apple AVFoundation (macOS/iOS) | ✅ `AppleCameraBackend` — wired, live-verified on real Mac cameras; all six manual controls reach `CameraTier.full` (via the digital pipeline where the sensor exposes no controls) | | Web | ✅ `WebCameraBackend` (getUserMedia) — wired, live-verified in Chrome; all six manual controls reach `CameraTier.full` via the pure-Dart digital pipeline | @@ -167,7 +167,7 @@ supported, which is the correct result for the stub. **Fix** - **On Linux desktop, Windows desktop, or Android** there is nothing to fix; - the behavior is correct for v0.0.1. Use `CameraTier.basic` as the trigger to + the behavior is correct for v0.0.2. Use `CameraTier.basic` as the trigger to display a "limited functionality" banner in your UI, and watch the repository for the Dart backend wiring for these platforms (the Linux/Windows C HALs already exist and pass the portable lifecycle harness on CI). @@ -267,7 +267,7 @@ library to be installed separately from the C compiler itself. `ffigen.yaml` or as an environment variable. **Note**: Running `ffigen` is entirely optional. The bindings shipped in -v0.0.1 (`lib/src/ffi/camera_pro_bindings.dart`) are hand-maintained `@Native` +v0.0.2 (`lib/src/ffi/camera_pro_bindings.dart`) are hand-maintained `@Native` bindings kept 1:1 with `camera_pro_core.h` and regression-tested per symbol, so the package builds and works out of the box without libclang. Regeneration via `ffigen.yaml` is only relevant if you modify `camera_pro_core.h` and prefer @@ -323,7 +323,7 @@ try { ``` **Tip**: On the stub backend — the fallback on Linux desktop, Windows desktop, -and Android in v0.0.1 — *all* setters will throw this error because the stub +and Android in v0.0.2 — *all* setters will throw this error because the stub reports no capabilities as supported. This is expected there until the Dart backends for those platforms land. On macOS, iOS, and web the wired backends report all six manual controls (ISO, shutter, EV, white balance, focus, zoom) @@ -402,4 +402,4 @@ try { --- -*Last updated: 2026-07-04 — camera_pro v0.0.1* +*Last updated: 2026-07-04 — camera_pro v0.0.2* diff --git a/example/pubspec.yaml b/example/pubspec.yaml index a877a56..7bc51a6 100644 --- a/example/pubspec.yaml +++ b/example/pubspec.yaml @@ -1,7 +1,7 @@ name: camera_pro_example description: Demonstrates the camera_pro capability passport and crash-proof API. publish_to: none -version: 0.0.1 +version: 0.0.2 environment: sdk: ^3.9.0 diff --git a/lib/src/camera_pro_base.dart b/lib/src/camera_pro_base.dart index 3c37225..edadc0f 100644 --- a/lib/src/camera_pro_base.dart +++ b/lib/src/camera_pro_base.dart @@ -17,7 +17,7 @@ import 'platform/default_backend.dart'; class CameraPro { const CameraPro._(); - /// Version of the bundled native core (e.g. "0.0.1"). Reads the FFI core. + /// Version of the bundled native core (e.g. "0.0.2"). Reads the FFI core. static String get nativeCoreVersion => NativeCore.versionString; /// The active SIMD kernel in the native core ("NEON", "SSE2", ...). diff --git a/lib/src/ffi/native_core.dart b/lib/src/ffi/native_core.dart index 3ae645e..5e53f89 100644 --- a/lib/src/ffi/native_core.dart +++ b/lib/src/ffi/native_core.dart @@ -22,7 +22,7 @@ class NativeCore { /// Encoded core version `(major << 16) | (minor << 8) | patch`. static int get versionCode => bindings.camera_pro_core_version(); - /// Core version as a string, e.g. "0.0.1". + /// Core version as a string, e.g. "0.0.2". static String get versionString => bindings.camera_pro_core_version_string().cast().toDartString(); diff --git a/lib/src/web/native_core_web.dart b/lib/src/web/native_core_web.dart index 25a1225..2283dd1 100644 --- a/lib/src/web/native_core_web.dart +++ b/lib/src/web/native_core_web.dart @@ -20,8 +20,8 @@ int _clampRound(double v) => v < 0 ? 0 : (v > 255 ? 255 : (v + 0.5).toInt()); class NativeCore { const NativeCore._(); - static String get versionString => '0.0.1'; - static int get versionCode => (0 << 16) | (0 << 8) | 1; + static String get versionString => '0.0.2'; + static int get versionCode => (0 << 16) | (0 << 8) | 2; /// There is no SIMD/C path on web; kernels run in Dart. static String get simdName => 'dart'; diff --git a/lib/src/web/web_dng.dart b/lib/src/web/web_dng.dart index 416f8a6..016926d 100644 --- a/lib/src/web/web_dng.dart +++ b/lib/src/web/web_dng.dart @@ -45,7 +45,7 @@ Uint8List encodeLinearDng({ String datetime = '2026:01:01 00:00:00', }) { if (stride <= 0) stride = width * 4; - const software = 'camera_pro 0.0.1'; + const software = 'camera_pro 0.0.2'; final pixelBytes = width * height * 3; // ── Layout (identical to the C writer) ──────────────────────────────────── diff --git a/pubspec.yaml b/pubspec.yaml index e037dbf..cdef2a1 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -2,7 +2,7 @@ name: camera_pro description: >- DSLR-grade camera controls with a native C/C++ core over Dart FFI. Capability- aware, crash-proof API with manual exposure, focus, and white balance. -version: 0.0.1 +version: 0.0.2 repository: https://github.com/sayed3li97/camera_pro issue_tracker: https://github.com/sayed3li97/camera_pro/issues topics: diff --git a/src/core/camera_pro_core.c b/src/core/camera_pro_core.c index 5ef60f9..44c44ea 100644 --- a/src/core/camera_pro_core.c +++ b/src/core/camera_pro_core.c @@ -12,7 +12,7 @@ int32_t camera_pro_core_version(void) { } const char* camera_pro_core_version_string(void) { - return "0.0.1"; + return "0.0.2"; } const char* camera_pro_error_string(int32_t error) { diff --git a/src/core/camera_pro_core.h b/src/core/camera_pro_core.h index a0d36d0..df08aea 100644 --- a/src/core/camera_pro_core.h +++ b/src/core/camera_pro_core.h @@ -19,7 +19,7 @@ extern "C" { /* Encoded as (major << 16) | (minor << 8) | patch. */ #define CAMERA_PRO_CORE_VERSION_MAJOR 0 #define CAMERA_PRO_CORE_VERSION_MINOR 0 -#define CAMERA_PRO_CORE_VERSION_PATCH 1 +#define CAMERA_PRO_CORE_VERSION_PATCH 2 /* ── Version / build introspection ─────────────────────────────────────── */ CAMERA_PRO_EXPORT int32_t camera_pro_core_version(void); diff --git a/src/core/dng_writer.c b/src/core/dng_writer.c index 4cd72eb..c132cde 100644 --- a/src/core/dng_writer.c +++ b/src/core/dng_writer.c @@ -86,7 +86,7 @@ int32_t camera_pro_write_dng( if (!datetime) datetime = "2026:01:01 00:00:00"; const uint32_t pixel_bytes = (uint32_t)width * (uint32_t)height * 3; - static const char software[] = "camera_pro 0.0.1"; + static const char software[] = "camera_pro 0.0.2"; const uint8_t dng_version[4] = {1, 4, 0, 0}; /* ── Compute layout ────────────────────────────────────────────────── diff --git a/src/platform/linux/README.md b/src/platform/linux/README.md index 92cabac..3dbc433 100644 --- a/src/platform/linux/README.md +++ b/src/platform/linux/README.md @@ -213,7 +213,7 @@ Until this backend is implemented, `CameraPro.create()` on Linux returns a contr ```dart final controller = await CameraPro.create(); // uses StubCameraBackend on Linux today print(controller.tier); // CameraTier.basic -print(CameraPro.nativeCoreVersion); // "0.0.1" — real FFI call into libcamera_pro_core +print(CameraPro.nativeCoreVersion); // "0.0.2" — real FFI call into libcamera_pro_core ``` --- diff --git a/src/platform/web/README.md b/src/platform/web/README.md index acc4a04..4cfdf5a 100644 --- a/src/platform/web/README.md +++ b/src/platform/web/README.md @@ -264,4 +264,4 @@ can be developed and tested without a real browser camera. --- -*camera_pro v0.0.1 — BSD-3-Clause* +*camera_pro v0.0.2 — BSD-3-Clause* diff --git a/src/tests/core_test.c b/src/tests/core_test.c index d5d2a97..3d98b1f 100644 --- a/src/tests/core_test.c +++ b/src/tests/core_test.c @@ -41,8 +41,8 @@ static uint32_t xrand(void) { static void test_version(void) { printf("version / introspection\n"); - CHECK(camera_pro_core_version() == ((0 << 16) | (0 << 8) | 1), "version encodes 0.0.1"); - CHECK(strcmp(camera_pro_core_version_string(), "0.0.1") == 0, "version string"); + CHECK(camera_pro_core_version() == ((0 << 16) | (0 << 8) | 2), "version encodes 0.0.2"); + CHECK(strcmp(camera_pro_core_version_string(), "0.0.2") == 0, "version string"); CHECK(camera_pro_simd_name() != NULL, "simd name non-null"); CHECK(strcmp(camera_pro_error_string(CAMERA_ERROR_PERMISSION_DENIED), "Camera permission denied") == 0, "error string"); diff --git a/test/ffi/native_core_test.dart b/test/ffi/native_core_test.dart index 71c5f9c..412db62 100644 --- a/test/ffi/native_core_test.dart +++ b/test/ffi/native_core_test.dart @@ -26,9 +26,9 @@ void main() { } group('native core FFI', () { - test('reports version 0.0.1', () { - expect(version, '0.0.1'); - expect(NativeCore.versionCode, (0 << 16) | (0 << 8) | 1); + test('reports version 0.0.2', () { + expect(version, '0.0.2'); + expect(NativeCore.versionCode, (0 << 16) | (0 << 8) | 2); }); test('reports an active SIMD kernel', () {