main
tag: launch-2026-06-01
tag: magicmirror-v0.1.1
tag: magicmirror-v0.3.0
tag: mnw-cli-v0.1.2
tag: mnw-cli-v0.1.3
tag: mnw-cli-v0.1.4
tag: pom-v0.4.1
tag: pom-v0.4.2
tag: pom-v0.4.3
tag: pom-v0.4.4
tag: pom-v0.4.5
tag: wam-v0.3.0
tag: wam-v0.3.1
Files
Commits
Tags
Notes
Issues
Remove dead frontend definitions found by the shape recon
Five mechanical removals, no behaviour change:
- templates/partials/tabs/user_ssh_keys.html: orphaned tab partial with no
#[template] struct and no reference anywhere. The live SSH keys panel is
user_ssh_keys_tab.html, which is untouched.
- actions-pages.js: window.noop, window.onSetActiveTab and
window.onOpenCollectionPicker were all redefined later in the same page load
by actions-partials.js and actions-dashboards.js, which base.html loads
unconditionally after it. The collection-picker pair disagreed in body; the
live one reads dataset.itemId and serves every call site.
- partial-item-text-editor.js: three dead window exports, one of which
(window.escapeHtml) was a self-assignment since the file defines no local.
- upload.js: em dash to comma in the speed/ETA string, matching the
replacement its own TypeScript port already made.
cargo check --all-targets and tsc --noEmit both clean.
4 files changed,
+1 insertion,
-52 deletions
5
5
// bodies read args from the element (this.value, this.dataset, this itself)
6
6
// exactly as the original inline handlers did.
7
7
8
-
// No-op verb: used where the original inline handler only stopped propagation
9
-
// (the data-stop modifier does the actual work; this satisfies the dispatcher's
10
-
// requirement for a data-action value).
11
-
window.noop = function () {};
12
-
13
8
// cart.html: onclick="removeCartGroup(this)"
14
9
window.onRemoveCartGroup = function () {
15
10
removeCartGroup(this);
34
29
submitNotify({ preventDefault: function () {} });
35
30
};
36
31
37
-
// item.html: onclick="openCollectionPicker('{{ item.id }}', this)"
38
-
window.onOpenCollectionPicker = function () {
39
-
openCollectionPicker(this.getAttribute('data-arg'), this);
40
-
};
41
-
42
32
// item.html / library_downloads.html / project.html:
43
33
// onclick="switchSectionTab(this, 'section-{{ section.slug }}')"
44
34
window.onSwitchSectionTab = function () {
45
35
switchSectionTab(this, this.getAttribute('data-arg'));
46
36
};
47
37
48
-
// library.html: onclick="setActiveTab(this)"
49
-
window.onSetActiveTab = function () {
50
-
setActiveTab(this);
51
-
};
52
-
53
38
// purchase.html: oninput="updatePwywButton(this.value)"
54
39
window.onPwywInput = function () {
55
40
updatePwywButton(this.value);
107
107
});
108
108
109
109
window.switchEditorTab = switchEditorTab;
110
-
window.renderMarkdownPreview = renderMarkdownPreview;
111
-
window.escapeHtml = escapeHtml;
112
-
window.updateWordCount = updateWordCount;
113
110
window.saveTextContent = saveTextContent;
114
111
})();
51
51
var etaStr = remaining < 60
52
52
? Math.ceil(remaining) + 's'
53
53
: Math.ceil(remaining / 60) + 'm ' + Math.ceil(remaining % 60) + 's';
54
-
self.speedEl.textContent = speedStr + ' \u2014 ' + etaStr + ' remaining';
54
+
self.speedEl.textContent = speedStr + ', ' + etaStr + ' remaining';
55
55
}
56
56
}
57
57
}
1
-
<div class="form-section">
2
-
<h2 class="subsection-title">SSH Keys</h2>
3
-
<p class="credentials-lead">
4
-
Manage SSH keys for git clone and push access. Clone URL: <code>git@makenot.work:{{ user.username }}/{repo}.git</code>
5
-
</p>
6
-
7
-
<div id="ssh-keys-list"
8
-
hx-get="/api/users/me/ssh-keys/list"
9
-
hx-trigger="load"
10
-
hx-swap="innerHTML">
11
-
<p class="credentials-loading">Loading...</p>
12
-
</div>
13
-
14
-
<form class="credentials-add-form"
15
-
hx-post="/api/users/me/ssh-keys"
16
-
hx-target="#ssh-keys-list"
17
-
hx-swap="innerHTML"
18
-
data-after="reset">
19
-
<div class="form-group">
20
-
<label for="ssh-public-key">Public Key</label>
21
-
<textarea id="ssh-public-key" name="public_key" placeholder="ssh-ed25519 AAAA... or ssh-rsa AAAA..." required
22
-
rows="3"></textarea>
23
-
<div class="hint">Paste the contents of your ~/.ssh/id_ed25519.pub or similar public key file</div>
24
-
</div>
25
-
<div class="credentials-add-row">
26
-
<div class="form-group">
27
-
<label for="ssh-key-label">Label</label>
28
-
<input type="text" id="ssh-key-label" name="label" placeholder="e.g., laptop, work" maxlength="128">
29
-
</div>
30
-
<button class="btn-secondary" type="submit">Add SSH Key</button>
31
-
</div>
32
-
</form>
33
-
</div>