qriib_meet 0.2.0
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, andQriibMeetingParticipant.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
mediaProjectionforeground service (QriibScreenShareService) for the capture — the order Android 14+ requires — and declaresFOREGROUND_SERVICE/FOREGROUND_SERVICE_MEDIA_PROJECTIONin 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
balanceddegradation 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 byshowSwitchCameraControl. - 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. QriibMeetingParticipantnow carriesisMicrophoneEnabled,isCameraEnabled,isSpeaking, andconnectionQuality(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) anddocs/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.galleryto 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: nullto disable) and leaving asks for confirmation (confirmLeave: falseto disable). No Dart API was removed;QriibMeetingSessionandQriibMeetingStateonly 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
clientRoomIdwithnewClientRoomId(), reading a freshfinal_linkwithfinalLinkFromResponse(), and joining the meeting. - Documented every
QriibMeetingConfigurationoption, the theme tokens, the visibility flags, and theparticipantBuilder/topBarBuilder/controlsBuilderreplacement 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
canToggleSpeakerphoneorcanSelectSpecificDevice, and is hidden withQriibMeetingConfiguration(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 theaudioInputs/audioOutputs/selectedAudioInputId/selectedAudioOutputIdstate used to build a replacement picker. - Documented
videoAvailableas the audio-only signal for custom builders, paired withcreateQuickAudioRoomandcreateScheduledAudioRoom. - 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, andjoinRoom, 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:
QriibMeetingSessioncan 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 byQriibMeetingConfiguration.showAudioDeviceControl. This mirrors the device picker already available on the pre-join screen. - Added
QriibMeetingConfiguration.videoAvailableto describe audio-only meetings to custom builders. - Added
newClientRoomId()andfinalLinkFromResponse()helpers (qriib_meeting_link_helpers.dart) for generating client room ids and readingfinal_linkvalues 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.dartAPI with environment-provided values. - Documented the camera and microphone host declarations required on Android and iOS.
- Removed the external
vclouddependency. The public room and credential API is now Qriib-only (QriibRoomMetadata,QriibUserInfo, andQriib*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.