tangled
alpha
login
or
join now
baileytownsend.dev
/
pds-moover
125
fork
atom
Client side atproto account migrator in your web browser, along with services for backups and adversarial migrations.
pdsmoover.com
pds
atproto
migrations
moo
cow
125
fork
atom
overview
issues
2
pulls
1
pipelines
new flags no logic
baileytownsend.dev
7 months ago
580db768
0f931222
+78
3 changed files
expand all
collapse all
unified
split
index.html
public
style.css
src
pdsmoover.js
+59
index.html
···
3
3
<head>
4
4
<meta charset="UTF-8"/>
5
5
<link rel="icon" type="image/webp" href="/moo.webp"/>
6
6
+
<meta property="og:description" content="ATProto account migration tool"/>
7
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
37
+
//advance
38
38
+
showAdvance: false,
39
39
+
createNewAccount: true,
40
40
+
migrateRepo: true,
41
41
+
migrateBlobs: true,
42
42
+
migrateMissingBlobs: true,
43
43
+
migratePrefs: true,
44
44
+
migratePlcRecord: true,
45
45
+
toggleAdvanceMenu() {
46
46
+
this.showAdvance = !this.showAdvance;
47
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
167
+
<div class="form-group">
168
168
+
<button type="button" @click="toggleAdvanceMenu()" id="advance" name="advance">Advance Options
169
169
+
</button>
170
170
+
</div>
171
171
+
<div x-show="showAdvance" class="section">
172
172
+
<span>Pick and choose which actions to run</span>
173
173
+
<div class="form-control">
174
174
+
<label>
175
175
+
<input type="checkbox" id="createNewAccount" name="createNewAccount" x-model="createNewAccount">
176
176
+
Create New Account
177
177
+
</label>
178
178
+
</div>
179
179
+
<div class="form-control">
180
180
+
<label>
181
181
+
<input type="checkbox" id="migrateRepo" name="migrateRepo" x-model="migrateRepo">
182
182
+
Migrate Repo
183
183
+
</label>
184
184
+
</div>
185
185
+
<div class="form-control">
186
186
+
<label>
187
187
+
<input type="checkbox" id="migrateBlobs" name="migrateBlobs" x-model="migrateBlobs">
188
188
+
Migrate Blobs
189
189
+
</label>
190
190
+
</div>
191
191
+
<div class="form-control">
192
192
+
<label>
193
193
+
<input type="checkbox" id="migrateMissingBlobs" name="migrateMissingBlobs"
194
194
+
x-model="migrateMissingBlobs">
195
195
+
Migrate Missing Blobs
196
196
+
</label>
197
197
+
</div>
198
198
+
<div class="form-control">
199
199
+
<label>
200
200
+
<input type="checkbox" id="migratePrefs" name="migratePrefs" x-model="migratePrefs">
201
201
+
Migrate Prefs
202
202
+
</label>
203
203
+
</div>
204
204
+
<div class="form-control">
205
205
+
<label>
206
206
+
<input type="checkbox" id="migratePlcRecord" name="migratePlcRecord" x-model="migratePlcRecord">
207
207
+
Migrate PLC Record
208
208
+
</label>
209
209
+
</div>
210
210
+
211
211
+
</div>
212
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
127
+
}
128
128
+
129
129
+
.form-checkbox {
130
130
+
131
131
+
font-size: 2rem;
132
132
+
font-weight: bold;
133
133
+
line-height: 1.1;
134
134
+
display: grid;
135
135
+
grid-template-columns: 1em auto;
136
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
39
+
//State for reruns
40
40
+
this.oldAccountStatus = null;
41
41
+
this.newAccountStatus = null;
42
42
+
this.createNewAccount = true;
43
43
+
this.migrateRepo = true;
44
44
+
this.migrateBlobs = true;
45
45
+
this.migrateMissingBlobs = true;
46
46
+
this.migratePrefs = true;
47
47
+
this.migratePlcRecord = true;
39
48
}
40
49
41
50
/**