qriib_meet 0.2.0 copy "qriib_meet: ^0.2.0" to clipboard
qriib_meet: ^0.2.0 copied to clipboard

Qriib Flutter room management and embedded meeting APIs.

0.2.0 #

  • Added screen sharing: QriibMeetingSession.setScreenShareEnabled, a default share control (showScreenShareControl), onScreenShareChanged, and QriibMeetingParticipant.isScreenSharing. The sharer's screen is preferred over their camera and spotlighted for everyone.
  • Fixed Android screen sharing terminating the app: the package now requests the screen-capture consent first, then runs a mediaProjection foreground service (QriibScreenShareService) for the capture — the order Android 14+ requires — and declares FOREGROUND_SERVICE / FOREGROUND_SERVICE_MEDIA_PROJECTION in its own manifest, so host apps need no manifest changes. Declining the consent leaves the share off instead of failing, and the service is released if the share is stopped from the system UI.
  • Fixed shared screens appearing frozen on the last frame over mobile uplinks: screen share now captures at 720p/15 fps on mobile (1080p on desktop) with a 1.5 Mbps (2.5 Mbps desktop) encoding and a balanced degradation policy, so the encoder preserves motion instead of starving the frame rate to hold resolution. Shared screens also render letterboxed (contain) instead of cropped.
  • Added front/back camera switching: QriibMeetingSession.switchCamera, QriibMeetingState.canSwitchCameraPosition, and a default control gated by showSwitchCameraControl.
  • Redesigned the default meeting view around a familiar conferencing UX: swipeable speaker/gallery views (QriibMeetingViewMode, initialViewMode, showViewModeToggle), a draggable corner-snapping self-view, long-press to pin, active-speaker highlight (QriibMeetingTheme.speakingColor), per-participant mic/camera badges and connection-quality warnings, auto-hiding chrome (controlsAutoHideDelay), a meeting timer (showMeetingTimer), a participants sheet (showParticipantsList), and a leave confirmation (confirmLeave). The default layout mirrors the standard conferencing toolbar — Mute / Stop Video / Share / Participants along the bottom, audio-route and flip-camera top-left, timer in the middle and a red Leave button top-right — with every element switchable off; the bottom bar scales down on narrow screens instead of overflowing.
  • QriibMeetingParticipant now carries isMicrophoneEnabled, isCameraEnabled, isSpeaking, and connectionQuality (QriibConnectionQuality). Participant tiles use each participant's own camera state for the avatar fallback instead of the local camera state.
  • Added docs/screen-sharing.md (platform behaviour, tuning, troubleshooting) and docs/meeting-ui.md (layout, every configuration flag, test keys for widget tests).
  • Upgrade notes: the default meeting view changed visibly — speaker view with a floating self-view opens first (was a grid; pass initialViewMode: QriibMeetingViewMode.gallery to keep the grid), the audio-route button moved from the bottom bar to the top-left, Leave moved to the top-right, controls auto-hide after 5 s (controlsAutoHideDelay: null to disable) and leaving asks for confirmation (confirmLeave: false to disable). No Dart API was removed; QriibMeetingSession and QriibMeetingState only gained members. Android hosts need no manifest changes for screen sharing.

0.1.1 #

  • Documentation only. No API, behavior, or dependency changes.
  • Rewrote the README as a complete integration guide: creating the client from project credentials, generating a clientRoomId with newClientRoomId(), reading a fresh final_link with finalLinkFromResponse(), and joining the meeting.
  • Documented every QriibMeetingConfiguration option, the theme tokens, the visibility flags, and the participantBuilder / topBarBuilder / controlsBuilder replacement slots, including the accessibility expectations for replaced controls and participant tiles.
  • Documented the audio-route control that the default meeting view places in its bottom control bar, between the microphone and leave controls. It opens a picker for choosing the sound input and output: a Speaker switch on mobile that routes between earpiece and loudspeaker, and Microphone / Speaker device lists on desktop and web that show the OS device names with the active one marked. The control renders only when the platform reports canToggleSpeakerphone or canSelectSpecificDevice, and is hidden with QriibMeetingConfiguration(showAudioDeviceControl: false). The equivalent pre-join lobby selectors are documented alongside it. The control itself shipped in 0.1.0; this release only adds its documentation.
  • Documented QriibAudioDevice (id, label, kind) and the audioInputs / audioOutputs / selectedAudioInputId / selectedAudioOutputId state used to build a replacement picker.
  • Documented videoAvailable as the audio-only signal for custom builders, paired with createQuickAudioRoom and createScheduledAudioRoom.
  • Documented the opt-in pre-join lobby (QriibPreJoinConfiguration), which shipped in 0.1.0 without README coverage.
  • Added a Room workflows section covering quick rooms, scheduled rooms, startScheduledRoom, and joinRoom, plus a table mapping every Rooms API operation to its required inputs and its next step.

0.1.0 #

  • Added in-meeting audio device configuration: QriibMeetingSession can now switch the active microphone and audio output mid-call (selectAudioInput, selectAudioOutput, setSpeakerphoneOn), so applications can let users choose between the phone mic/speaker, a wired headset, or Bluetooth earbuds while a meeting is in progress. The default meeting view exposes this through a new audio-route control, gated by QriibMeetingConfiguration.showAudioDeviceControl. This mirrors the device picker already available on the pre-join screen.
  • Added QriibMeetingConfiguration.videoAvailable to describe audio-only meetings to custom builders.
  • Added newClientRoomId() and finalLinkFromResponse() helpers (qriib_meeting_link_helpers.dart) for generating client room ids and reading final_link values out of room/meeting API responses.
  • Embedded the QriibKit media engine and registered the Android and iOS media plugin implementations inside this package.
  • Added a generated Android/iOS example that exercises only the public package:qriib_meet/qriib_meet.dart API with environment-provided values.
  • Documented the camera and microphone host declarations required on Android and iOS.
  • Removed the external vcloud dependency. The public room and credential API is now Qriib-only (QriibRoomMetadata, QriibUserInfo, and Qriib*Credentials). This is an intentional breaking change from the initial pre-release API.

0.0.1 #

  • Initial room facade and minimal camera, microphone, and participant meeting experience.