nativemind_freedome

Fulldome UI kit of the NativeMind framework: dome picker, connection and engine status, player controls, show timeline, playlists and cues, calibration wizard, projector-rig editor, audio-zone mixer, a venue map slot and the dome copilot (NmFreedomeCopilot, on nativemind_copilot). Built on nativemind_core like nativemind_deals / nativemind_vpn; strings in en, ru, th, hi, zh. Ports only — the widgets never call a service; the app (or the freedome_flutter glue of the Freedome SDK) implements the ports on freedome_client.

0.1.0 is the prototype (milestone M-UI0 of the Freedome production flow); publish_to: none until the owner's release under the pub.dev publisher framework.nativemind.net.

Use

import 'package:nativemind_freedome/nativemind_freedome.dart';

NmFreedomeScope(                     // above the Navigator; every port is optional
  discovery: myDiscovery, connection: myConnection, playback: myPlayback, show: myShow,
  calibration: myCalibration, rig: myRig, audioZones: myZones, copilotTools: myCopilotExtras,
  venueMapBuilder: (context, pins, onTap) => MyMap(pins: pins, onTap: onTap),   // any map package
  qrScan: (context) => myScanner.scan(),                                         // camera is the app's
  child: MaterialApp(
    localizationsDelegates: NmApp.delegates([NmFreedomeL10n.delegate, NmCopilot.delegate]),
    home: const Column(children: [NmDomeConnectionStatus(compact: true), NmDomePlayerControls()]),
  ),
)
Widget Ports
NmDomePicker discovery, connection (+ qrScan)
NmDomeConnectionStatus (badge / panel) connection
NmEngineStatusPanel connection (engine) or explicit data
NmDomePlayerControls (compact / full) playback, show
NmShowTimeline show, playback
NmPlaylistView, NmCueList show, playback
NmCalibrationWizard (+ NmCalibrationIntro … NmCalibrationApply, NmCalibrationHeatMap) calibration, rig
NmProjectorRigEditor rig
NmAudioZoneMixer (+ NmLevelMeter, NmSpeakerLayout) audio zones
NmVenueMap venueMapBuilder slot (list without one)
NmFreedomeCopilot copilot over all ports + copilotTools

A widget whose port is absent shows "not available" (NmFreedomeUnavailable) and never throws. Error codes of the SDK map to text with NmFreedomeErrorText.

Copilot

NmFreedomeCopilot(provider: NmLocalLlmProvider(model: myDownloadedModel))   // flutter_llama, on the device

The kit builds the copilot engine (NmFreedomeCopilotEngine.create) with the Freedome tools over the scope's ports (nmFreedomeCopilotTools). Reads (domes, connection, player, show, calibration, venue) run on their own; every control action (play, pause, stop, seek, volume, brightness, cue) waits for the user's confirmation. Providers that keep an API key inside the app are refused.

Prototyping without a dome

package:nativemind_freedome/testing.dart has in-memory fakes of every port with demo data (NmFreedomeFakes); example/ is the prototype app (every widget, light / dark, five languages, scripted copilot).

Docs

doc/ports.md (implementing the ports), doc/figma.md (Figma export). Spec-driven flow: flows/sdd-nativemind-freedome/ (derived from the Freedome production flow).

Licence: NativeMindNONC (LICENSE); commercial use → NativeMind sales.

Libraries

nativemind_freedome
Fulldome UI kit of the NativeMind framework (SDD flows/sdd-nativemind-freedome): dome picker, connection and engine status, player controls, show timeline, playlists and cues, calibration wizard, projector-rig editor, audio-zone mixer, venue map slot and the dome copilot.
testing
In-memory fakes of every nativemind_freedome port with demo data — for tests, the prototype example and screen prototypes before an app binds the Freedome SDK (freedome_flutter). Not for production.