Client side atproto account migrator in your web browser, along with services for backups and adversarial migrations. pdsmoover.com
pds atproto migrations moo cow

new flags no logic

authored by baileytownsend.dev and committed by

Tangled 4f816336 5b4aad95

+78
+59
index.html
··· 3 3 <head> 4 4 <meta charset="UTF-8"/> 5 5 <link rel="icon" type="image/webp" href="/moo.webp"/> 6 + <meta property="og:description" content="ATProto account migration tool"/> 7 + <meta property="og:image" content="/moo.webp"> 6 8 <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no"/> 7 9 <title>PDS MOOver</title> 8 10 <link rel="stylesheet" href="/style.css"> ··· 32 34 askForPlcToken: false, 33 35 plcToken: null, 34 36 plcStatus: null, 37 + //advance 38 + showAdvance: false, 39 + createNewAccount: true, 40 + migrateRepo: true, 41 + migrateBlobs: true, 42 + migrateMissingBlobs: true, 43 + migratePrefs: true, 44 + migratePlcRecord: true, 45 + toggleAdvanceMenu() { 46 + this.showAdvance = !this.showAdvance; 47 + }, 35 48 updateStatusHandler(status) { 36 49 console.log("Status update:", status); 37 50 document.getElementById("status-message").innerText = status; ··· 151 164 x-model="inviteCode" required> 152 165 </div> 153 166 </div> 167 + <div class="form-group"> 168 + <button type="button" @click="toggleAdvanceMenu()" id="advance" name="advance">Advance Options 169 + </button> 170 + </div> 171 + <div x-show="showAdvance" class="section"> 172 + <span>Pick and choose which actions to run</span> 173 + <div class="form-control"> 174 + <label> 175 + <input type="checkbox" id="createNewAccount" name="createNewAccount" x-model="createNewAccount"> 176 + Create New Account 177 + </label> 178 + </div> 179 + <div class="form-control"> 180 + <label> 181 + <input type="checkbox" id="migrateRepo" name="migrateRepo" x-model="migrateRepo"> 182 + Migrate Repo 183 + </label> 184 + </div> 185 + <div class="form-control"> 186 + <label> 187 + <input type="checkbox" id="migrateBlobs" name="migrateBlobs" x-model="migrateBlobs"> 188 + Migrate Blobs 189 + </label> 190 + </div> 191 + <div class="form-control"> 192 + <label> 193 + <input type="checkbox" id="migrateMissingBlobs" name="migrateMissingBlobs" 194 + x-model="migrateMissingBlobs"> 195 + Migrate Missing Blobs 196 + </label> 197 + </div> 198 + <div class="form-control"> 199 + <label> 200 + <input type="checkbox" id="migratePrefs" name="migratePrefs" x-model="migratePrefs"> 201 + Migrate Prefs 202 + </label> 203 + </div> 204 + <div class="form-control"> 205 + <label> 206 + <input type="checkbox" id="migratePlcRecord" name="migratePlcRecord" x-model="migratePlcRecord"> 207 + Migrate PLC Record 208 + </label> 209 + </div> 210 + 211 + </div> 212 + 154 213 <div class="form-group"> 155 214 <label for="confirmation">I understand the risks that come with doing an account migration. 156 215 (Can view them
+10
public/style.css
··· 124 124 font-weight: bold; 125 125 text-align: center; 126 126 box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2); 127 + } 128 + 129 + .form-checkbox { 130 + 131 + font-size: 2rem; 132 + font-weight: bold; 133 + line-height: 1.1; 134 + display: grid; 135 + grid-template-columns: 1em auto; 136 + gap: 0.5em; 127 137 }
+9
src/pdsmoover.js
··· 36 36 this.oldAgent = null; 37 37 this.newAgent = null; 38 38 this.missingBlobs = []; 39 + //State for reruns 40 + this.oldAccountStatus = null; 41 + this.newAccountStatus = null; 42 + this.createNewAccount = true; 43 + this.migrateRepo = true; 44 + this.migrateBlobs = true; 45 + this.migrateMissingBlobs = true; 46 + this.migratePrefs = true; 47 + this.migratePlcRecord = true; 39 48 } 40 49 41 50 /**