form_gear_engine_sdk 0.6.0 copy "form_gear_engine_sdk: ^0.6.0" to clipboard
form_gear_engine_sdk: ^0.6.0 copied to clipboard

Flutter SDK for FormGear - A flexible, JSON-driven form generation framework for dynamic data collection with 30+ input control types, nested forms, GPS, photo capture, and complex validation capabilities.

Changelog #

0.6.0 - 2026-10-16 #

✨ Features #

  • feat(ui): host UI handler, edge-to-edge form page and JS bridge events (#43) (c848fb5)

🔧 Chores #

  • bump version to 0.6.0 for next development cycle (#42) (716bfd1)

📝 Other Changes #

  • Merge pull request #41 from IPDS-59/chore/back-merge-0.5.1 (8036779)
  • Merge pull request #44 from IPDS-59/release/0.6.0 (383e5ef)

0.5.1 - 2026-10-16 #

🐛 Bug Fixes #

  • fix(auth): never send a malformed Authorization header (#39) (f1ed89a)
  • fix(lint): keep the deprecation ignore valid on patch versions (754d8a8)
  • fix(lint): do not flag version-dependent ignores on patch releases (cd65cf7)

🔧 Chores #

  • bump version to 0.6.0 for next development cycle (#37) (9bec9c9)
  • bump version to 0.5.1 (fb66478)

📝 Other Changes #

  • Merge pull request #38 from IPDS-59/chore/back-merge-0.5.0 (5acc288)
  • Merge pull request #40 from IPDS-59/release/0.5.1 (dda0888)

0.5.0 - 2026-10-16 #

⚠️ BREAKING CHANGES #

  • refactor!: remove placeholder EncryptionService and EncryptionUtils (bfadf86)

✨ Features #

  • feat(bridge): add dispatchFinalResult, connectorApi, sendEvent, s3refreshUrl (fe3e2b2)
  • feat(version): let hosts supply their own form engine update UI (#34) (6417fcb)

🐛 Bug Fixes #

  • fix(ci): pass release notes via env so backticks aren't shell-executed (538192a)

👷 CI #

  • ci(hardening): fail publish if tag isn't reachable from main (8928ad2)

🔧 Chores #

  • add dependabot config, ignore local .codegraph index (d8eb7dd)
  • chore(deps): bump actions/checkout from 4 to 7 (#33) (7251fd5)
  • bump version to 0.5.0 (2481417)

📝 Other Changes #

  • Merge pull request #36 from IPDS-59/release/0.5.0 (642206d)

[Unreleased] #

⚠️ Breaking changes #

  • Removed the internal EncryptionService (all-zero default key, zero IV) and EncryptionUtils (XOR). Neither was exported or called, and neither can read FASIH data. Encrypting answer files is the host's job, as in native FASIH (AssignmentEncryptionHelper: AES-GCM with the per-region wrappedDatakey, or legacy Kripto). Do it in your FormDataListener. The crypto and encrypt dependencies are gone.

✨ Features #

  • The four native FormGearJsBridge methods the SDK lacked are now served. Register a FormEngineEventListener with FormGearSDK.instance.formEngineEventListener = ...:
    • dispatchFinalResult(data, remark, principal, summary) is FasihForm's answer to finalizeForm() (trigger-finalize). It goes to onFinalResult, with hasErrors = summary.error is non-empty, like native.
    • connectorApi(name, param) goes to onConnectorApi(name, {assignmentId, body}). The host POSTs it to /mobile/connector/api/hit/{name}. The page gets the raw response string, or native's {"success":false,"message":...} on failure. It is a Promise; native returns synchronously.
    • sendEvent(param) goes to onSendEvent(assignmentId, param) (assignment id "0" when none, like native).
    • s3refreshUrl(json) is a no-op, like native 2.17.5.
  • Bridge results of type StringInfoJs now reach the page as a plain string for every handler, not only getters.

0.4.0 - 2026-10-15 #

⚠️ Breaking changes #

  • The WebView host moved from flutter_inappwebview to the first-party webview_flutter (+ webview_flutter_android / webview_flutter_wkwebview). FormGearWebView and FormGearSDK.createDebugBridgeTest callbacks now receive WebViewController / JavaScriptConsoleMessage. The settings parameter was removed. Engine pages keep calling window.flutter_inappwebview.callHandler(...): the SDK injects a polyfill over a JavaScript channel.
  • If the template has no components, openFormWithAssignment throws DataFailure (code invalid_template). Before, it opened a blank WebView. failure.dart is now exported.
  • mocktail moved to dev_dependencies. Major bumps: file_picker 13, injectable 3, permission_handler 13, record 7, camera 0.12.
  • Android apps must compile against SDK 37 (permission_handler 13). The Flutter 3.47 toolchain needs Gradle 8.14+, AGP 8.11.1+ and Kotlin 2.2.20+ (see example/android).
  • The assets/js/android_bridge.js asset and the unused FasihDataHandler were removed. The SDK now injects the bridge shim.

🐛 Bug Fixes #

  • FasihForm (engine 2) can start. The SDK injects a synchronous window.Android before the page script. Before, the page threw ReferenceError: Android is not defined.
  • The SDK logs uncaught JS errors and unhandled rejections with stack traces. If the engine of a form fails to start, the form shows an error with a retry action.
  • Missing or fallback-shaped validation is coerced to {testFunctions: []}.
  • Saves run one at a time per assignment (the latest auto-save wins) and are written atomically. The SDK refuses a SAVE that erases the answers the form opened with.
  • JS callbacks are built with jsonEncode, so file names with quotes no longer break them. Results that arrive after a form closed are dropped.
  • The lookup server returns {success, data} with condition filtering. The hardcoded :3310 in the page follows the bound port. Port fallback works on iOS.
  • The SDK emits upload-finished after FILE_UPLOAD. On exit, it emits trigger-save like native FASIH.
  • FasihForm FILE_UPLOAD goes through the registered FileUploadListener with the same path checks as FormGear. If the upload fails, the SDK does not emit upload-finished. On success, upload-finished now also carries url.
  • FormGear (engine 1) saves on exit again. The exit script calls mobileExitAndroid() like native FASIH. Before, it called window.mobileExit, which no engine page defines.

✨ Features #

  • FormGearSDK.finalizeForm() emits trigger-finalize to FasihForm, like the native FASIH approval button. For FormGear it returns false.
  • Native video recording handler and screen (67f66bd).
  • OfflineSearchHandler answers the searchOffline lookup calls of FormGear through an OfflineSearchCallback (2001f3e).
  • notifyJavaScript on the action handler contract, used by the barcode handler (38df574, ac58ba5).
  • On iOS, the embedded HTTP server serves the generated form HTML, to avoid WKWebView limits on large inline HTML (74350c6).
  • The UMD build is the primary FormGear bundle (a802cd2).

0.3.0 - 2025-12-30 #

✨ Features #

  • feat(security): add critical security fixes for Sprint 1 (8612502)

🐛 Bug Fixes #

  • resolve analyzer info-level lint warnings (5aceb1d)
  • catch ArgumentError from Uri.decodeComponent for invalid URL encoding (060fa72)
  • resolve filename to full path before validation in FILE_UPLOAD (fbc5b8d)
  • fix(webview): prevent loading screen stuck and add back navigation (c6902b5)
  • fix(media): save picked files to FASIH media directory (cf7a80e)

♻️ Refactoring #

  • refactor(workflows): migrate to banua-coder-workflow reusable workflows (90f8c6e)
  • split large files to meet sanity check limits (f7d018e)
  • refactor(example): use initializeGlobal instead of legacy initialize (9e4b595)
  • extract webview navigation helper and fix lint warnings (7848fb6)
  • extract FasihForm notifier to reduce execute_handler size (3bb21b8)

👷 CI #

  • ci(workflows): add sanity-check workflow (8557cb0)

🔧 Chores #

  • bump version to v0.3.0 for next development cycle (260132e)
  • back-merge v0.2.0 release from main to develop (bd662a0)
  • chore(pub): upgrade dependencies (d769698)
  • chore(dependencies): run dart pub upgrade (86d271f)
  • chore(pubignore): add some directories to pub ignore (32bc524)
  • bump version to 0.3.0 (536ed07)

📝 Other Changes #

  • Merge pull request #23 from IPDS-59/chore/bump-version-to-v0.3.0-dev (239254d)
  • Merge pull request #26 from IPDS-59/chore/back-merge-v0.2.0-release-to-develop-20251109-080533 (650c259)
  • Merge pull request #27 from IPDS-59/chore/dependency-update (3ed7f7b)
  • Merge pull request #28 from IPDS-59/feature/sprint-1-security-fixes (2147095)
  • Merge pull request #29 from IPDS-59/release/0.3.0 (f33a721)

0.2.0 - 2025-11-09 #

✨ Features #

🐛 Bug Fixes #

  • fix(assets): add missing CSS files to example app asset declarations (777855d)
  • fix(server): use DirectoryConstants instead of manual path construction (de2fd2f)
  • fix(directories): remove hardcoded paths causing release build failures (916ae5f)
  • fix(assets): explicitly declare assets in example app for release builds (441dce7)

📱 Platform Updates #

📚 Documentation #

🔧 Maintenance #

  • chore(dependencies): upgrade dependencies (f3d7aed)
  • chore(git): add .kotlin to gitignore (225855a)
  • chore(pub): run dart pub upgrade (b00c607)
  • chore: bump version to v0.2.0 for next development cycle (750dfd8)

📦 Dependencies #

  • chore(pub): run dart pub upgrade (b00c607)
  • Flutter SDK: 3.35.5+
  • Dart SDK: Compatible with Flutter 3.35.5

🎯 Key Highlights #

  • HTTP Interceptor Support: Added comprehensive Dio interceptor support for request/response modification

📦 Dependencies #

  • Flutter SDK: 3.35.5+
  • Dart SDK: Compatible with Flutter 3.35.5

0.1.1 - 2025-10-01 #

✨ Features #

  • feat: add interactive asset copy demo with progress tracking (2d52be0)
  • feat: expose API response models and isFormEngineDownloaded method (1a84139)
  • feat(security): add comprehensive log sanitization for PII protection (d7065ee)
  • feat(security): add HTTPS enforcement and certificate pinning support (3eee006)
  • feat(security): require explicit encryption keys, remove hardcoded defaults (75e23ab)
  • feat(security): implement input validation framework for file paths (70acc9e)
  • feat(listeners): add FileUploadListener pattern for custom file upload handling (326db10)
  • feat(assignment): add explicit form engine ID selection (2096597)
  • feat(example): add engine selector to assignment demo screen (045745d)
  • feat(webview): add exit confirmation dialog and multi-section form support (3abc026)
  • feat(ui): improve progress bar UI with responsive design and animations (2ae1340)
  • feat(bridge-test): add FILE action test for FasihForm CSV file picker (0b3adf0)
  • feat(loading-screen): replace progress bar with circular percent indicator and animated download icon (4a369b0)
  • feat: add percent_indicator to SDK and implement app-lifetime token persistence (b86edf7)
  • feat(example): add engine selector to clean architecture demo (a9bbbd1)
  • feat(assignment): add injectable annotations to assignment use cases (f3ad6ae)
  • feat(sdk): add progress tracking for asset downloads (8f976e0)
  • feat(sdk): implement missing FASIH features for 100% compatibility (47ea7d7)
  • feat(download): add detailed logging for ZIP root directory detection (f6fa0b1)
  • feat(models): export ValidationResult in models barrel file (c1a74d3)
  • feat: implement FASIH-compatible JavaScript callbacks and SaveOrSubmit listeners (ee20e85)
  • feat: add assignment demo screen with three scenarios (761fb03)
  • feat: implement assignment-based SDK architecture (eb68124)
  • feat: add assignment-based dynamic configuration models (d95e01f)
  • feat(ui): enhance update screens and widget components (6e1c51c)
  • feat(core): add utility enhancements and core improvements (d0425b1)
  • feat(webview): implement BLoC pattern for form WebView (973d230)
  • feat(barcode): implement BLoC pattern for barcode scanner (d036e34)
  • feat(ui): implement modern Material Design 3 card system (a80597e)
  • feat(audio): enhance recording workflow with confirmation and real playback (bc6c3fb)
  • feat(auth): implement ConfigProvider pattern for real-time token updates (10bbeec)
  • feat(ios): add required permissions for media features (0325725)
  • feat(example): integrate media demo screen (6728455)
  • feat(constants): add media directory support for FASIH (c95fcea)
  • feat(audio): implement complete audio recording system (1bb307e)
  • feat(dialog): add reusable ModernDialogHelper with blue CTA (6aca224)
  • feat(deps): add crypto dependency and update asset paths (73bd1e7)
  • feat(utils): add encryption support for sensitive FASIH data (2ba2fcf)
  • feat(bridge): add FasihDataHandler for JavaScript bridge integration (2adbb24)
  • feat(assets): add exact FASIH default data files (2bd676c)
  • feat(utils): add FormDataFileManager for FASIH file operations (02fc688)
  • feat(usecases): implement clean architecture use cases for FASIH data (6a2b288)
  • feat(domain): add FormDataRepository interface (bbb517a)
  • feat(models): add Assignment entity for FASIH survey data (9c4e788)
  • feat(js-bridge): add missing action handlers for mobile features (baf03bf)
  • feat(sdk): integrate ClientActionHandler into FormGear SDK (dc368c0)
  • feat(js-bridge): implement ClientActionHandler for mobile features (eed4f29)
  • feat(testing): enhance bridge test with new handlers (6478558)
  • feat(webview): implement smart back navigation handling (993f254)
  • feat(js-bridge): enhance bridge result communication (8d3655a)
  • feat(js-bridge): implement missing action handlers (52f4758)
  • feat(sdk): register mobileExit handler in bridge (1aba5b6)
  • feat(js-bridge): add missing mobileExit bridge handler (54c9fc0)
  • feat(ci): add comprehensive coverage reporting script (21059d0)
  • feat(ui): enhance force update screens with animations and fixes (4f2cb2d)
  • feat(version): integrate update screens with version managers (5ed3e1a)
  • feat: add VS Code configuration and fix workflows (47eb2e6)
  • feat(github): convert PR template to structured YAML format (247480b)
  • feat(github): add issue and pull request templates (6479c99)
  • feat(ci): add comprehensive GitHub Actions workflows (805b9c4)
  • feat(scripts): add development tools and HTML generation (d27486a)
  • feat(example): add comprehensive example application (985825a)
  • feat(presentation): add WebView widget with modern loading UI (a53400d)
  • feat(sdk): add main FormGear SDK implementation (84d87bb)
  • feat(core): add download management, HTTP server, and JS bridge (f730266)
  • feat(data): add data layer with repositories and data sources (3e01af1)
  • feat(domain): add domain layer with repositories and use cases (89b7b3b)
  • feat(models): add comprehensive data models for FASIH integration (70cc5e2)
  • feat(core): add base classes and result pattern implementation (317c49e)
  • feat(config): create form gear configuration class (0a92079)
  • feat(model): create fasih user model (5705ce7)
  • feat(di): prepare injector (92e6546)

🐛 Bug Fixes #

  • fix: add path_provider_platform_interface to dev_dependencies for test compatibility (f703e3b)
  • fix: use late keyword for _currentPreparedEngine to satisfy linter (8d43e07)
  • fix: resolve linter warnings for production code (ddd72c8)
  • fix: skip macOS system files during asset copying (9127813)
  • fix: use consistent directory path for BPS assets (external storage on Android) (b1fe9b3)
  • fix: correct asset paths to match actual bundle structure (724da0c)
  • fix: correct AssetManifest.json parsing to use json.decode (8819c4e)
  • fix: copy bundled assets to local storage on app startup (7db8b9a)
  • fix: update example app to use SDK public API instead of download manager (976da02)
  • fix: resolve SDK compilation errors after cleanup (bc1d86a)
  • fix(webview): embed bridge script into HTML to prevent race condition (ea512aa)
  • fix(webview): inject bridge in onLoadStart instead of placeholder approach (1f523ca)
  • fix(webview): add missing root fields to template and validation placeholders (99a3439)
  • fix(webview): return JSON strings directly for bridge data compatibility (bb3adb8)
  • fix(webview): match exact FASIH data structures in placeholder bridge (8f0e4b1)
  • fix(webview): add complete FASIH-compliant metadata to placeholder bridge objects (d1c31b7)
  • fix(webview): return JSON strings instead of object literals in placeholder bridge (c511843)
  • fix(webview): use Proxy pattern for placeholder bridge to return default values (e9a4d18)
  • fix(execute-handler): remove manual permission request for image picker (ddd71c5)
  • fix: prevent race condition with placeholder bridge and double injection (929efb2)
  • fix(execute-handler): use ImagePicker for images to avoid double picker (d589145)
  • fix(webview): resolve race condition causing 'Android is not defined' error (ea15fe3)
  • fix(execute-handler): request correct permission based on file type (d2d11d1)
  • fix(js-bridge): separate FILE_UPLOAD from FILE_PICKER actions (ae9b010)
  • fix(ci): replace stable with actual version (1690ec9)
  • fix(webview): update back press handling and modernize exit dialog design (ff12861)
  • fix(example): restore template selection screen for proper form engine workflow (85507a6)
  • fix(example): remove template selection screen reference from form engine selection (b2684f2)
  • fix(js-bridge): implement FasihForm-compatible JavaScript callbacks for LOCATION and FILE handlers (ba793ac)
  • fix(example): restore version update and bridge test demos (2fff329)
  • fix: add explicitToJson to FormEngineResponse for proper JSON serialization (2864fa5)
  • fix: resolve all lint violations in test files (cb2b7a4)
  • fix(download): resolve incorrect progress percentage (400-2000%) (6f03b5d)
  • fix(scanner): resolve barcode detection after permission grant (567a2f8)
  • fix(scanner): resolve controller lifecycle and flash issues (5c5299c)
  • fix(compression): use synchronous file operations to avoid slow async I/O (6b8c690)
  • fix(download): implement progress tracking and modern error UI (31723cc)
  • fix(download): skip root directory entry during ZIP extraction (86306f2)
  • fix(bloc): use unawaited to allow progress events during download (111b11a)
  • fix(demo): use late variable for proper BLoC closure capture (136c328)
  • fix(progress): properly wire download progress to BLoC (13c4633)
  • fix(download): strip top-level directory from ZIP extraction (9c95a8f)
  • fix(demo): connect download progress to BLoC in update screen (999d374)
  • fix: resolve all line length lint violations across SDK files (f8a41e9)
  • fix(audio): resolve playback UI state management issues (bf97904)
  • fix(engine): correct version display and optimize download manager (7d6ffaf)
  • fix(core): update action handler and template repository (db3a481)
  • fix(audio): resolve timer display overlapping issue (9a5a1c9)
  • fix(js-bridge): resolve handler naming conflicts (2c5b584)
  • fix(coverage): improve per-file coverage parsing and display (624d842)
  • fix(token): fix wrong token assigned (c1b737e)
  • fix(demo): fix clean architecture demo page (5432313)
  • fix(style): resolve all remaining line length violations in SDK (77df6bd)
  • fix(style): resolve line length violations in domain layer (257f4af)
  • fix(style): resolve line length violations in core SDK files (e3439cc)
  • fix(analyzer): resolve remaining generic catch clause violations (c6301ac)
  • fix(analyzer): resolve critical generic catch clause violations (1bc8ebd)
  • fix: resolve more generic catch clauses and prepare for future fixes (afa34e5)
  • fix: resolve TODO style and BuildContext async issues (92c7ae4)
  • fix: resolve catch clause and line length issues (aefaacf)
  • fix: resolve analyzer issues (702301e)
  • fix: replace deprecated withOpacity with withValues (e57d933)
  • fix(test): run dart fix (6a7aae1)
  • fix: resolve Result class hashCode override issues (f91bdfa)

📱 Platform Updates #

📚 Documentation #

  • docs: add centered logo banner to README (64c4bc8)
  • docs: update README to use openFormWithAssignment as primary API (0fc1f2c)
  • docs: simplify README to focus on public API (ee4c64d)
  • docs(readme): add comprehensive FileUploadListener documentation (a4c142c)
  • docs: update Flutter version references to stable channel (7781abf)
  • docs: fix engine terminology and enhance bridge test UI (6484f85)
  • docs: update README with assignment-based configuration (a1d7401)
  • docs: remove FASIH_DATA_LOADING_ANALYSIS.md file (cfaf553)
  • docs(analysis): update implementation status with completed features (e4a8bb4)
  • docs(analysis): add comprehensive FASIH data loading analysis (62c842c)
  • docs: add comprehensive contributing guidelines (1ee4da5)

🔧 Maintenance #

  • chore(example): ignore deprecated_member_use warnings (4fc7e16)
  • chore: prepare v0.1.0 release (60a0495)
  • chore: update dependencies (7ca4d85)
  • refactor: remove unused environment variables and secrets (5bc723e)
  • refactor(core): extract SDK components into separate modules (2b3ff4b)
  • refactor(core): remove unused _createWebViewFromPreparedEngine method (a5f3334)
  • refactor: make internal SDK methods private (33e9b91)
  • perf: use sync I/O methods instead of async (39210b5)
  • refactor: simplify SDK API and remove template download functionality (e31972c)
  • test(security): update encryption tests for required keys (1fc4015)
  • test: add comprehensive tests for FileUploadListener pattern (da4c8b2)
  • style: fix line length in execute_handler.dart comment (66f12b8)
  • style: fix linter warnings for line length and HTML in doc comment (186b4f3)
  • chore(ci): update Flutter version to stable in all workflows (40e6df8)
  • refactor(webview): use SDK design system for exit confirmation dialog (ea2e630)
  • refactor(example): remove template update demo from version update screen (32367b7)
  • refactor(example): remove template and lookup endpoint tests from clean architecture demo (103cc63)
  • refactor(example): redesign clean architecture demo and convert widget methods to classes (92cf93c)
  • refactor(example): clean up example app by removing unnecessary demo screens (992f05d)
  • test: add exception tests for CompressionException and EncryptionException with 19 test cases (e28602a)
  • test: add comprehensive EncryptionUtils tests with 44 test cases (7b74262)
  • test: add comprehensive FormGearLogger tests with 54 test cases (f92f8cc)
  • test: add comprehensive tests for SaveSubmitData with 33 tests covering all methods (f163afc)
  • test: format all test files with proper newlines (56e9a8c)
  • test: add comprehensive tests for BaseUseCase and BaseNoParamUseCase (266de78)
  • test: improve coverage with Result, FormConfig, and FormGearConfig tests (55108d1)
  • test: add comprehensive tests for SaveSubmitResult, enums and improve coverage to 32.5% (6228f91)
  • test: add comprehensive tests for GlobalConfig, FormEngineResponse and improve coverage to 29.7% (3dbdcbc)
  • test: improve test coverage from 7.3% to 21.6% (28e5efd)
  • refactor: remove unused template and lookup remote APIs (664952d)
  • chore: remove unused http dependency (17f0a28)
  • chore: upgrade dependencies with dart pub upgrade --tighten (02efb44)
  • style: apply dart format to demo screen and client handler (7b341f2)
  • style: fix all remaining line length warnings (82e0d17)
  • style: fix line length issues in GPS handlers (a09fbdb)
  • chore(pub): run flutter pub upgrade (4193a34)
  • refactor(models): move ValidationResult to models with Equatable (d266eb2)
  • refactor(lint): suppress lint warnings for example implementations (a2a1ab2)
  • chore(git): exclude FASIH_DATA_LOADING_ANALYSIS.md from tracking (348e6eb)
  • refactor(demo): use ModernDialogHelper in MediaDemoScreen (139aa14)
  • refactor(test): improve bridge test UI design (763b49d)
  • test(bridge): add client action handlers to test interface (a270b42)
  • refactor(deeplink): remove deeplink (6d931dc)
  • chore(inter): update linter rule (e44aec1)
  • refactor(code): run dart format and dart fix (f821f7b)
  • chore: remove sensitive JWT token from form engine index.html (35bd651)
  • chore: exclude documentation files from git tracking (296c01e)
  • refactor(widgets): extract loading screen method to proper widget (484eb1e)
  • chore(analyzer): update analysis options to ignore context sync and futures (5eb6e48)
  • chore: update configuration and remove deprecated files (fe9a6df)
  • test: add comprehensive test suite for all layers (c276157)
  • chore(linter): update liinter rules (2ab9cf7)
  • chore(pub): install all required dependencies (71ca8eb)
  • chore(code): initial commit (0f9769f)

📦 Dependencies #

  • chore: update dependencies (7ca4d85)
  • chore: remove unused http dependency (17f0a28)
  • chore: upgrade dependencies with dart pub upgrade --tighten (02efb44)
  • chore(pub): run flutter pub upgrade (4193a34)
  • chore: update configuration and remove deprecated files (fe9a6df)
  • chore(pub): install all required dependencies (71ca8eb)
  • Flutter SDK: 3.35.5+
  • Dart SDK: Compatible with Flutter 3.35.5

🎯 Key Highlights #

  • HTTP Interceptor Support: Added comprehensive Dio interceptor support for request/response modification
  • Form Engine Configuration: Enhanced configuration to support multiple form engines with FASIH compatibility
  • WebView Integration: Enhanced WebView and JavaScript bridge capabilities for form rendering

📦 Dependencies #

  • Flutter SDK: 3.35.5+
  • Dart SDK: Compatible with Flutter 3.35.5

0.1.0 - 2025-10-01 #

✨ Features #

  • feat: add interactive asset copy demo with progress tracking (13d9092)
  • feat: expose API response models and isFormEngineDownloaded method (f97196d)
  • feat(security): add comprehensive log sanitization for PII protection (d6a62ee)
  • feat(security): add HTTPS enforcement and certificate pinning support (bda2e6f)
  • feat(security): require explicit encryption keys, remove hardcoded defaults (c07e111)
  • feat(security): implement input validation framework for file paths (a508a22)
  • feat(listeners): add FileUploadListener pattern for custom file upload handling (96bdcb6)
  • feat(assignment): add explicit form engine ID selection (0e1c765)
  • feat(example): add engine selector to assignment demo screen (c7693a4)
  • feat(webview): add exit confirmation dialog and multi-section form support (8c20bef)
  • feat(ui): improve progress bar UI with responsive design and animations (5efed05)
  • feat(bridge-test): add FILE action test for FasihForm CSV file picker (3d5abb2)
  • feat(loading-screen): replace progress bar with circular percent indicator and animated download icon (65b3fd1)
  • feat: add percent_indicator to SDK and implement app-lifetime token persistence (ec43d79)
  • feat(example): add engine selector to clean architecture demo (e708f1f)
  • feat(assignment): add injectable annotations to assignment use cases (cfad333)
  • feat(sdk): add progress tracking for asset downloads (9593740)
  • feat(sdk): implement missing FASIH features for 100% compatibility (d333cfb)
  • feat(download): add detailed logging for ZIP root directory detection (3002e08)
  • feat(models): export ValidationResult in models barrel file (349f41f)
  • feat: implement FASIH-compatible JavaScript callbacks and SaveOrSubmit listeners (78dd42a)
  • feat: add assignment demo screen with three scenarios (a1495f6)
  • feat: implement assignment-based SDK architecture (738b65c)
  • feat: add assignment-based dynamic configuration models (808d5e6)
  • feat(ui): enhance update screens and widget components (a7303a6)
  • feat(core): add utility enhancements and core improvements (5ac9254)
  • feat(webview): implement BLoC pattern for form WebView (1dc19ff)
  • feat(barcode): implement BLoC pattern for barcode scanner (7558e31)
  • feat(ui): implement modern Material Design 3 card system (874c75d)
  • feat(audio): enhance recording workflow with confirmation and real playback (6249038)
  • feat(auth): implement ConfigProvider pattern for real-time token updates (36172ce)
  • feat(ios): add required permissions for media features (bff05b7)
  • feat(example): integrate media demo screen (324cdfc)
  • feat(constants): add media directory support for FASIH (dd39433)
  • feat(audio): implement complete audio recording system (9722b1a)
  • feat(dialog): add reusable ModernDialogHelper with blue CTA (c6f3ebb)
  • feat(deps): add crypto dependency and update asset paths (dde5614)
  • feat(utils): add encryption support for sensitive FASIH data (8ea05f9)
  • feat(bridge): add FasihDataHandler for JavaScript bridge integration (4768c88)
  • feat(assets): add exact FASIH default data files (2dd07dd)
  • feat(utils): add FormDataFileManager for FASIH file operations (31cfb49)
  • feat(usecases): implement clean architecture use cases for FASIH data (78f3ea2)
  • feat(domain): add FormDataRepository interface (e33a3f1)
  • feat(models): add Assignment entity for FASIH survey data (e9f45ab)
  • feat(js-bridge): add missing action handlers for mobile features (826b283)
  • feat(sdk): integrate ClientActionHandler into FormGear SDK (415d306)
  • feat(js-bridge): implement ClientActionHandler for mobile features (82bcab3)
  • feat(testing): enhance bridge test with new handlers (4117e7a)
  • feat(webview): implement smart back navigation handling (d740f0f)
  • feat(js-bridge): enhance bridge result communication (725b015)
  • feat(js-bridge): implement missing action handlers (04b4c44)
  • feat(sdk): register mobileExit handler in bridge (df52e69)
  • feat(js-bridge): add missing mobileExit bridge handler (60f56ae)
  • feat(ci): add comprehensive coverage reporting script (63e7085)
  • feat(ui): enhance force update screens with animations and fixes (ce69957)
  • feat(version): integrate update screens with version managers (7ef2541)
  • feat: add VS Code configuration and fix workflows (3e84a37)
  • feat(github): convert PR template to structured YAML format (aff1b68)
  • feat(github): add issue and pull request templates (c2ecb4c)
  • feat(ci): add comprehensive GitHub Actions workflows (dc3c26c)
  • feat(scripts): add development tools and HTML generation (d4f2513)
  • feat(example): add comprehensive example application (cf1083f)
  • feat(presentation): add WebView widget with modern loading UI (2a05dab)
  • feat(sdk): add main FormGear SDK implementation (b3b5802)
  • feat(core): add download management, HTTP server, and JS bridge (d5dbc63)
  • feat(data): add data layer with repositories and data sources (a793871)
  • feat(domain): add domain layer with repositories and use cases (fa4e89b)
  • feat(models): add comprehensive data models for FASIH integration (f2b0191)
  • feat(core): add base classes and result pattern implementation (e7b15fc)
  • feat(config): create form gear configuration class (498abc6)
  • feat(model): create fasih user model (7eda5ee)
  • feat(di): prepare injector (efe5f49)

🐛 Bug Fixes #

  • fix: use late keyword for _currentPreparedEngine to satisfy linter (c986620)
  • fix: resolve linter warnings for production code (4a55032)
  • fix: skip macOS system files during asset copying (c6df97f)
  • fix: use consistent directory path for BPS assets (external storage on Android) (d8b5149)
  • fix: correct asset paths to match actual bundle structure (9dc6e90)
  • fix: correct AssetManifest.json parsing to use json.decode (d8a8a37)
  • fix: copy bundled assets to local storage on app startup (11f3840)
  • fix: update example app to use SDK public API instead of download manager (1b80748)
  • fix: resolve SDK compilation errors after cleanup (1dcba97)
  • fix(webview): embed bridge script into HTML to prevent race condition (2f75f88)
  • fix(webview): inject bridge in onLoadStart instead of placeholder approach (c050bcc)
  • fix(webview): add missing root fields to template and validation placeholders (a45f8fc)
  • fix(webview): return JSON strings directly for bridge data compatibility (80969d5)
  • fix(webview): match exact FASIH data structures in placeholder bridge (01b6622)
  • fix(webview): add complete FASIH-compliant metadata to placeholder bridge objects (9664249)
  • fix(webview): return JSON strings instead of object literals in placeholder bridge (278fa1e)
  • fix(webview): use Proxy pattern for placeholder bridge to return default values (3523a80)
  • fix(execute-handler): remove manual permission request for image picker (16693ed)
  • fix: prevent race condition with placeholder bridge and double injection (7af9d02)
  • fix(execute-handler): use ImagePicker for images to avoid double picker (0fac16a)
  • fix(webview): resolve race condition causing 'Android is not defined' error (53ac147)
  • fix(execute-handler): request correct permission based on file type (dccada1)
  • fix(js-bridge): separate FILE_UPLOAD from FILE_PICKER actions (9e137be)
  • fix(ci): replace stable with actual version (937e6e9)
  • fix(webview): update back press handling and modernize exit dialog design (7df13bf)
  • fix(example): restore template selection screen for proper form engine workflow (a5e5f79)
  • fix(example): remove template selection screen reference from form engine selection (892e0b3)
  • fix(js-bridge): implement FasihForm-compatible JavaScript callbacks for LOCATION and FILE handlers (bbb3577)
  • fix(example): restore version update and bridge test demos (20fc7eb)
  • fix: add explicitToJson to FormEngineResponse for proper JSON serialization (6f14eff)
  • fix: resolve all lint violations in test files (aef6c56)
  • fix(download): resolve incorrect progress percentage (400-2000%) (2592f5c)
  • fix(scanner): resolve barcode detection after permission grant (5834eda)
  • fix(scanner): resolve controller lifecycle and flash issues (5aa127f)
  • fix(compression): use synchronous file operations to avoid slow async I/O (6a28938)
  • fix(download): implement progress tracking and modern error UI (85738d6)
  • fix(download): skip root directory entry during ZIP extraction (a18d622)
  • fix(bloc): use unawaited to allow progress events during download (c71d402)
  • fix(demo): use late variable for proper BLoC closure capture (fe7b98f)
  • fix(progress): properly wire download progress to BLoC (0a2788a)
  • fix(download): strip top-level directory from ZIP extraction (d7a877a)
  • fix(demo): connect download progress to BLoC in update screen (98c26e4)
  • fix: resolve all line length lint violations across SDK files (e903f5c)
  • fix(audio): resolve playback UI state management issues (400a009)
  • fix(engine): correct version display and optimize download manager (7610495)
  • fix(core): update action handler and template repository (3444b7f)
  • fix(audio): resolve timer display overlapping issue (f5553c7)
  • fix(js-bridge): resolve handler naming conflicts (34e3b34)
  • fix(coverage): improve per-file coverage parsing and display (41964b5)
  • fix(token): fix wrong token assigned (45346d0)
  • fix(demo): fix clean architecture demo page (6267769)
  • fix(style): resolve all remaining line length violations in SDK (ecff54c)
  • fix(style): resolve line length violations in domain layer (84a9647)
  • fix(style): resolve line length violations in core SDK files (60afce0)
  • fix(analyzer): resolve remaining generic catch clause violations (4d57633)
  • fix(analyzer): resolve critical generic catch clause violations (dfa51c6)
  • fix: resolve more generic catch clauses and prepare for future fixes (fc66870)
  • fix: resolve TODO style and BuildContext async issues (c23cd1f)
  • fix: resolve catch clause and line length issues (6ef6743)
  • fix: resolve analyzer issues (1c06f31)
  • fix: replace deprecated withOpacity with withValues (e008dca)
  • fix(test): run dart fix (850f42e)
  • fix: resolve Result class hashCode override issues (72b6800)

📱 Platform Updates #

📚 Documentation #

  • docs: add centered logo banner to README (f1f26d5)
  • docs: update README to use openFormWithAssignment as primary API (8b59b3b)
  • docs: simplify README to focus on public API (b202e8e)
  • docs(readme): add comprehensive FileUploadListener documentation (0e66160)
  • docs: update Flutter version references to stable channel (2bfabe3)
  • docs: fix engine terminology and enhance bridge test UI (6d687e4)
  • docs: update README with assignment-based configuration (3b2a654)
  • docs: remove FASIH_DATA_LOADING_ANALYSIS.md file (3a925fd)
  • docs(analysis): update implementation status with completed features (6190648)
  • docs(analysis): add comprehensive FASIH data loading analysis (6a93c90)
  • docs: add comprehensive contributing guidelines (150a6d6)

🔧 Maintenance #

  • chore: update dependencies (42ef4da)
  • refactor: remove unused environment variables and secrets (5975e08)
  • refactor(core): extract SDK components into separate modules (8eb612f)
  • refactor(core): remove unused _createWebViewFromPreparedEngine method (abb081a)
  • refactor: make internal SDK methods private (8f2bf80)
  • perf: use sync I/O methods instead of async (321495f)
  • refactor: simplify SDK API and remove template download functionality (2662bf3)
  • test(security): update encryption tests for required keys (c4aa43c)
  • test: add comprehensive tests for FileUploadListener pattern (fadca3a)
  • style: fix line length in execute_handler.dart comment (ed97701)
  • style: fix linter warnings for line length and HTML in doc comment (c41f53f)
  • chore(ci): update Flutter version to stable in all workflows (2b44907)
  • refactor(webview): use SDK design system for exit confirmation dialog (0bb24c3)
  • refactor(example): remove template update demo from version update screen (e771b48)
  • refactor(example): remove template and lookup endpoint tests from clean architecture demo (316cb40)
  • refactor(example): redesign clean architecture demo and convert widget methods to classes (5e5cd86)
  • refactor(example): clean up example app by removing unnecessary demo screens (c1618ea)
  • test: add exception tests for CompressionException and EncryptionException with 19 test cases (7fe4bb0)
  • test: add comprehensive EncryptionUtils tests with 44 test cases (02ac5d9)
  • test: add comprehensive FormGearLogger tests with 54 test cases (ee67b0d)
  • test: add comprehensive tests for SaveSubmitData with 33 tests covering all methods (853ff79)
  • test: format all test files with proper newlines (198216c)
  • test: add comprehensive tests for BaseUseCase and BaseNoParamUseCase (34aee59)
  • test: improve coverage with Result, FormConfig, and FormGearConfig tests (9597f3b)
  • test: add comprehensive tests for SaveSubmitResult, enums and improve coverage to 32.5% (3534edc)
  • test: add comprehensive tests for GlobalConfig, FormEngineResponse and improve coverage to 29.7% (8ff73e2)
  • test: improve test coverage from 7.3% to 21.6% (edd0a04)
  • refactor: remove unused template and lookup remote APIs (af766b7)
  • chore: remove unused http dependency (8768604)
  • chore: upgrade dependencies with dart pub upgrade --tighten (1523c5a)
  • style: apply dart format to demo screen and client handler (8393e27)
  • style: fix all remaining line length warnings (c668e26)
  • style: fix line length issues in GPS handlers (2aabf5a)
  • chore(pub): run flutter pub upgrade (fe43a7e)
  • refactor(models): move ValidationResult to models with Equatable (d4415d4)
  • refactor(lint): suppress lint warnings for example implementations (dba00e5)
  • chore(git): exclude FASIH_DATA_LOADING_ANALYSIS.md from tracking (3907078)
  • refactor(demo): use ModernDialogHelper in MediaDemoScreen (2e714cc)
  • refactor(test): improve bridge test UI design (2af0321)
  • test(bridge): add client action handlers to test interface (73dbdd9)
  • refactor(deeplink): remove deeplink (37f240c)
  • chore(inter): update linter rule (1499c51)
  • refactor(code): run dart format and dart fix (215e3cb)
  • chore: remove sensitive JWT token from form engine index.html (592d873)
  • chore: exclude documentation files from git tracking (e38d663)
  • refactor(widgets): extract loading screen method to proper widget (3c9f8e4)
  • chore(analyzer): update analysis options to ignore context sync and futures (25cfa3e)
  • chore: update configuration and remove deprecated files (7c70a4c)
  • test: add comprehensive test suite for all layers (bb67174)
  • chore(linter): update liinter rules (bdbc6d8)
  • chore(pub): install all required dependencies (1d83f31)

📦 Dependencies #

  • chore: update dependencies (42ef4da)
  • chore: remove unused http dependency (8768604)
  • chore: upgrade dependencies with dart pub upgrade --tighten (1523c5a)
  • chore(pub): run flutter pub upgrade (fe43a7e)
  • chore: update configuration and remove deprecated files (7c70a4c)
  • chore(pub): install all required dependencies (1d83f31)
  • Flutter SDK: 3.35.5+
  • Dart SDK: Compatible with Flutter 3.35.5

🎯 Key Highlights #

  • HTTP Interceptor Support: Added comprehensive Dio interceptor support for request/response modification
  • Form Engine Configuration: Enhanced configuration to support multiple form engines with FASIH compatibility
  • WebView Integration: Enhanced WebView and JavaScript bridge capabilities for form rendering

📦 Dependencies #

  • Flutter SDK: 3.35.5+
  • Dart SDK: Compatible with Flutter 3.35.5
  • TODO: Describe initial release.
0
likes
120
points
32
downloads

Documentation

API reference

Publisher

verified publisherbanuacoders.com

Weekly Downloads

Flutter SDK for FormGear - A flexible, JSON-driven form generation framework for dynamic data collection with 30+ input control types, nested forms, GPS, photo capture, and complex validation capabilities.

Homepage
Repository (GitHub)
View/report issues
Contributing

License

MIT (license)

Dependencies

alice_dio, archive, camera, dio, equatable, file_picker, flutter, flutter_bloc, flutter_svg, geolocator, get_it, image_picker, injectable, json_annotation, just_audio, mobile_scanner, path, path_provider, percent_indicator, permission_handler, record, shelf, shelf_static, waveform_flutter, webview_flutter, webview_flutter_android, webview_flutter_wkwebview

More

Packages that depend on form_gear_engine_sdk