gyanmeet 1.1.0
gyanmeet: ^1.1.0 copied to clipboard
Gyanmeet meeting SDK for Flutter — a self-contained video meeting widget with host controls, chat, polls, batch exams, certificate verification, and optional on-device AI proctoring.
1.1.0 #
Passive liveness (anti-spoof) #
The face detector answers "is there a face-shaped pattern here", not "is there a live person here" — a printed photo, a pencil sketch or a phone screen held up to the lens all registered as a present, attentive participant for a whole meeting. Face presence is now checked against three signals computed on the face region: skin chroma, texture detail, and micro-motion between ticks.
- New
onSpoofSuspectedChangedcallback onGyanmeetMeeting. It fires on the first failing sample, not at the strike threshold, so you can show a warning state that outranks presence while the participant can still correct it. It clears on the next clean sample. - A sustained spoof raises a
ProctoringViolation(type: spoof), after three consecutive failing samples and paced by a 30s cooldown, so it spends warnings at the same rate the absence check does rather than burning them in seconds. Backends running the AI violation policy count it as a face mismatch. - Thresholds live in
lib/src/constants/config.dartaskLiveness…, alongside the existing fallback timings.
Detection only runs on frames that already contain a face and only after a 5s warm-up, so camera auto-exposure settling is not mistaken for a flat print. The motion window is dropped whenever the face leaves frame, the camera goes off or a break starts — samples minutes apart would otherwise read as a frozen image.
These are heuristics, not a certified anti-spoof model: a colour video replay on a large screen can still pass. They stop the cheap attacks.
Note for existing consumers #
ProctoringViolationTypegained aspoofvalue. Aswitchexpression over it stops compiling until you add a case; aswitchstatement keeps working and only warns.
1.0.1 #
No library changes — documentation and packaging only.
- The README no longer shows
enableAiMonitoringas aGyanmeetConfigfield. It is not one, so the usage snippet did not compile as written. AI monitoring is enabled per meeting by the server, not by consumer config. - The example app is no longer part of the published package. It is a local harness for developing the SDK, not a reference for using it; usage lives in the README.
1.0.0 #
First release of gyanmeet — a self-contained Flutter meeting widget for
Gyanmeet.
Meetings #
- One embedded widget for the whole meeting: join flow with an optional PreJoin device check, video grid with pagination, debounced active-speaker pin and fullscreen tap, mic / camera / screen-share toggles, and hand raise.
- Host controls: mute or disable a participant's audio and video, promote and demote, remove, end the meeting for everyone, and toggle chat live.
- Chat in open or host-moderated mode, a participants panel, and polls with creation, voting and results.
- No API key ever reaches the client. Your backend mints a short-lived external-join token and the SDK performs the validate-join round-trip itself.
- Adaptive bandwidth: only the visible page and the active speaker are subscribed, screen-share is always subscribed, and the local upload is paused while nobody is viewing it.
AI proctoring #
- Optional on-device monitoring for face presence, gaze direction in exam mode, and identity. Nothing is enforced by the SDK itself — violations arrive on your callbacks and you decide what to do with them.
- Identity verification against a MobileFaceNet model bundled with the package, so it works without consumer setup; the model and match threshold are both configurable, and identity checks can be switched off entirely.
- An optional identity gate in front of the meeting, in verify mode against a reference photo or enroll mode when none is supplied.
- Backends that implement the AI violation policy get server-enforced warnings and removal, detected automatically. The SDK draws its own warning and removal UI for whichever callbacks are left unset.
- Hosts, co-hosts and platform admins are never monitored.
- Frames where the face is clipped by the edge are skipped rather than compared, and a single dropped detection is treated as noise, so neither produces a false violation.
Exams and certificates #
- Batch exams sat inside the class meeting, with host start/end, optional section selection, server-owned timing and a results view.
- Participant result lookup and public certificate verification, with no session required.
Configuration #
GyanmeetConfigcovers chat and video modes, panel and header visibility, pre-join, initial device state, break handling, brand colour, dark mode, and the proctoring knobs.faceComparisonIntervalbounds identity comparison work on lower-end devices while face presence keeps its own cadence.