vios_app 0.1.1

Small JSON vaults: Argon2id + AES-GCM, with optional AAD binding.
Documentation
// 🧬 reem_link_gui.rs — REEM Glyph Fusion & Link Visualizer
// Build with: cargo run --bin reem_link_gui --features gui

#![allow(clippy::uninlined_format_args)]

// ---- GUI build (requires `gui` feature) -------------------------------------
#[cfg(feature = "gui")]
mod app {
    use chrono::Utc;
    use eframe::egui;
    use uuid::Uuid;

    #[derive(Default)]
    pub struct ReemLinkApp {
        my_reem: String,
        peer_reem: String,
        fusion_log: Option<String>,
        force_override: bool,
    }

    impl eframe::App for ReemLinkApp {
        fn update(&mut self, ctx: &egui::Context, _frame: &mut eframe::Frame) {
            egui::CentralPanel::default().show(ctx, |ui| {
                ui.heading("🧬 REEMLink™ — Fusion & Alignment Viewer");

                ui.label("🔐 Your REEM Code:");
                ui.text_edit_singleline(&mut self.my_reem);

                ui.label("🌐 Peer REEM Code:");
                ui.text_edit_singleline(&mut self.peer_reem);

                ui.checkbox(&mut self.force_override, "🔓 Force Merge (Ignore Drift Warnings)");

                if ui.button("🔗 Fuse Emotional Signature").clicked() {
                    let a = self.my_reem.trim();
                    let b = self.peer_reem.trim();

                    if a.is_empty() || b.is_empty() {
                        self.fusion_log = Some("❌ Please enter both REEM codes.".to_string());
                    } else {
                        let fusion_id = Uuid::new_v4();
                        let timestamp = Utc::now().to_rfc3339();
                        let merged = format!("FUSED-{}-{}", a, b);

                        self.fusion_log = Some(format!(
                            "✅ Fusion complete\nMerged REEM: {}\nOverride: {}\nFusion ID: {}\nTimestamp: {}",
                            merged,
                            self.force_override,
                            fusion_id,
                            timestamp
                        ));
                    }
                }

                if let Some(ref log) = self.fusion_log {
                    ui.separator();
                    ui.label(log);
                }
            });
        }
    }

    pub fn run() -> eframe::Result<()> {
        let options = eframe::NativeOptions::default();
        eframe::run_native(
            "REEMLink™ — Emotional Glyph Fusion",
            options,
            Box::new(|_cc| Box::<ReemLinkApp>::default()),
        )
    }
}

#[cfg(feature = "gui")]
fn main() -> eframe::Result<()> {
    app::run()
}

// ---- Non-GUI fallback -------------------------------------------------------
#[cfg(not(feature = "gui"))]
fn main() {
    eprintln!("This binary requires the `gui` feature.\nTry: cargo run --bin reem_link_gui --features gui");
}