ctrlapp 0.1.1
ctrlapp: ^0.1.1 copied to clipboard
Remote kill-switch, feature flags, forced update, forms and inbox for Flutter, plus diagnostics, device-integrity checks, push permission and hosted login.
CtrlApp Flutter — Changelog #
0.1.1 — 2026-10-17 #
No functional changes. First release published through the automated
pipeline (production branch to pub.dev); it also confirms the package is
owned by the ctrlapp.dev publisher.
0.1.0 — 2026-10-17 #
First public release.
Features #
- Remote kill-switch — block the app, or any single feature, from the CtrlApp dashboard; enforced from the local cache when offline.
- Feature flags and remote config with typed accessors, plus forced update / minimum-version checks.
- Screen Capture Protection (opt-in, default off).
- Android —
FLAG_SECUREapplied on the main thread with latest-policy-wins ordering; ownership-aware so a host-setFLAG_SECUREis never cleared. - iOS — per-plugin instance mask controller (no global singleton).
Overlays installed while
UIScreen.isCapturedreports active capture/mirroring and before app-switcher snapshots (willResignActive). Multi-window / multi-scene aware.
- Android —
- Diagnostics and error capture (opt-in): breadcrumbs, redaction, bounded
queue, global
FlutterError/ platform handler chaining, debug overlay. - Device integrity signals (jailbreak, root, emulator/simulator, debugger, developer mode), device info and installation telemetry.
- Push permission bridge (
CtrlAppPush) for iOS and Android 13+. - Live block watch (
CtrlAppBlockWatch) to apply a kill-switch to an app that is already open. - Hosted social login and app session (
package:ctrlapp/auth.dart) with a pluggable secure session store. - Low-level
CtrlAppClientwith HTTP and mock transports. - Zero Firebase dependencies in your Dart code.
Behavior #
init()throwsStateErroron mismatchedapiKey/baseUrlre-initialization; same-identity re-init is idempotent.dispose()is idempotent and releases native enforcement before closing stream controllers.- Strict argument contract on the
ctrlappMethodChannel: int / string / null / non-boolean arguments are rejected with aBAD_ARGFlutterError. - Defaults to
https://ctrlapp.dev; passbaseUrlto use another host.
Truthful limitations #
- iOS: Apple provides no supported API to prevent still screenshots.
The plugin does not use SecureTextField hacks, DRM, canvas tricks, or
private APIs.
userDidTakeScreenshotNotificationis a post-event signal only.