Companion 0.5.28 — backup & restore (#128), NIP-46 remote signer (#139), companion-gated install pitch (#61 residual)
The companion-agent queue from the 2026-08-30 handoff, complete: - Backup & Restore: hub sub-page, SAF export/import sealed in the node's ADR-005 envelope (Argon2id + ChaCha20-Poly1305, byte-compatible with core backup.rs), merge-only restore, no cloud. - Remote Signer: the phone is the NIP-46 bunker — nsec generate/import, nostrconnect:// QR pairing (scanner + OS deep link), per-request approve/deny card, NIP-44 v2 transport with NIP-04 receive fallback, wire-faithful to rust-nostr's reference bunker. Crypto pinned to the official NIP-44 + BIP-340 vectors; e2e harness included. - #61 residual: banner + manual intro trigger + overlay all gate on isCompanionApp() (web-side, vitest-covered). - Hub modal: new sub-pages like Nodes/FIPS, 70% height cap, node ULA display/copy in the Nodes list, fipssh Termux helper (npub→ULA is a pure public-key function — verified against the fips crate). Issues #61 (comment), #128, #139 closed on the tracker.
This commit is contained in:
@@ -1,8 +1,11 @@
|
||||
<template>
|
||||
<!-- Companion app banner — same format as the featured app banner, with a
|
||||
phone mockup rising out of the right edge. Clicking anywhere (or the
|
||||
Install button) opens the Remote Companion download/pairing modal. -->
|
||||
Install button) opens the Remote Companion download/pairing modal.
|
||||
Not rendered at all inside the companion app's WebView: pitching
|
||||
"install the companion" to someone already in it is noise (#61). -->
|
||||
<div
|
||||
v-if="showPitch"
|
||||
class="featured-banner companion-banner glass-card mb-8 relative overflow-hidden cursor-pointer"
|
||||
@click="openCompanionIntro()"
|
||||
>
|
||||
@@ -41,7 +44,11 @@
|
||||
</template>
|
||||
|
||||
<script setup lang="ts">
|
||||
import { computed } from 'vue'
|
||||
import { isCompanionApp } from '@/utils/openExternal'
|
||||
import { openCompanionIntro } from '@/composables/useCompanionIntro'
|
||||
|
||||
const showPitch = computed(() => !isCompanionApp())
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
|
||||
Reference in New Issue
Block a user