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

Configure Feed

Select the types of activity you want to include in your feed.

new flags no logic

+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 /**