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

Changed files
+78
public
src
+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 /**