| 1 | {{define "title"}}Your printed kit — CONTRA{{end}} |
| 2 | {{define "brand"}}<a rst-shell-brand href="/">CONTRA</a>{{end}} |
| 3 | {{define "head"}}<script type="module" src="{{asset "static/pages/kit.js"}}"></script>{{end}} |
| 4 | |
| 5 | {{define "content"}} |
| 6 | <h1>Your printed kit</h1> |
| 7 | |
| 8 | {{/* The two documents behave differently and the page says so up front, |
| 9 | because the difference is the whole thing a person needs to understand |
| 10 | before they press anything here. */}} |
| 11 | <p>Two documents, and only one of them can be reprinted. That is not an |
| 12 | oversight — it is what "nobody can open your vault for you" costs.</p> |
| 13 | |
| 14 | <section data-card> |
| 15 | <h2>Account Key card</h2> |
| 16 | <p>This <strong>reprints exactly</strong>. Your devices keep a copy of the |
| 17 | Account Key, so a new card is the same key on new paper. The old card keeps |
| 18 | working — throw it away or keep it, it makes no difference.</p> |
| 19 | |
| 20 | <div data-card-ready hidden> |
| 21 | <p><button type="button" data-print-card>Print the Account Key card |
| 22 | again</button></p> |
| 23 | </div> |
| 24 | |
| 25 | <p data-card-missing hidden> |
| 26 | This device does not have your Account Key, so it cannot print the card. |
| 27 | <a href="/device">Give it the key</a> from another device or from the card |
| 28 | you still have, and this will work. |
| 29 | </p> |
| 30 | |
| 31 | <p data-card-status aria-live="polite"></p> |
| 32 | </section> |
| 33 | |
| 34 | <section data-recovery> |
| 35 | <h2>Recovery sheet</h2> |
| 36 | |
| 37 | {{/* The warning goes BEFORE the control, not beside it and not after it. |
| 38 | This is the one destructive action in the app. */}} |
| 39 | <p><strong>This cannot be reprinted.</strong> Nobody stores your recovery |
| 40 | code — only a wrap that it opens — so there is nothing to print a second |
| 41 | copy of. What this does instead is <strong>issue a new one</strong>.</p> |
| 42 | |
| 43 | <p data-kind="warning">When you do this, <strong>the code on your old |
| 44 | recovery sheet stops working immediately</strong>. If you are not certain |
| 45 | the old sheet is lost, find it first: doing this while it is still in the |
| 46 | safe means shredding it and filing the new one.</p> |
| 47 | |
| 48 | <p>Your passphrase and your other devices are unaffected.</p> |
| 49 | |
| 50 | <form data-recovery-form method="post" action="#"> |
| 51 | <p> |
| 52 | <label for="recovery-passphrase">Passphrase</label> |
| 53 | <input id="recovery-passphrase" name="passphrase" type="password" |
| 54 | autocomplete="current-password" required> |
| 55 | <small>Needed to open your vault key so the new code can be sealed to |
| 56 | it. It is not sent anywhere.</small> |
| 57 | </p> |
| 58 | <p> |
| 59 | <label> |
| 60 | <input type="checkbox" data-confirm-recovery> |
| 61 | I understand the old recovery sheet will stop working. |
| 62 | </label> |
| 63 | </p> |
| 64 | <p><button type="submit" data-regenerate disabled>Issue a new recovery |
| 65 | sheet</button></p> |
| 66 | </form> |
| 67 | |
| 68 | <div data-new-sheet hidden></div> |
| 69 | <p data-recovery-status aria-live="polite"></p> |
| 70 | </section> |
| 71 | |
| 72 | <section data-nag hidden> |
| 73 | <h2>Only one device</h2> |
| 74 | {{/* PROTOCOL.md's loss table, row six: passphrase known, kit lost, every |
| 75 | device gone. The obligation is not to soften the rule — it is to make |
| 76 | sure nobody arrives there by accident. This is that. */}} |
| 77 | <p>This is the only browser holding your Account Key. If you lose it and the |
| 78 | printed card at the same time, the vault cannot be opened — by you, by us, by |
| 79 | anyone.</p> |
| 80 | <p>Two minutes of work makes that much less likely: |
| 81 | <a href="/device">add a second device</a>, or check you still have the |
| 82 | printed card.</p> |
| 83 | </section> |
| 84 | |
| 85 | <p><a href="/vault">Back to your vault</a></p> |
| 86 | {{end}} |
| 87 | |