@rmdes/indiekit-endpoint-activitypub 2.0.19 → 2.0.21
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/assets/reader.css
CHANGED
|
@@ -1281,6 +1281,45 @@
|
|
|
1281
1281
|
.ap-my-profile__bio .invisible { display: none; }
|
|
1282
1282
|
.ap-my-profile__bio .ellipsis::after { content: "…"; }
|
|
1283
1283
|
|
|
1284
|
+
.ap-my-profile__fields {
|
|
1285
|
+
border: var(--border-width-thin) solid var(--color-outline);
|
|
1286
|
+
border-radius: var(--border-radius-small);
|
|
1287
|
+
margin: var(--space-s) 0;
|
|
1288
|
+
overflow: hidden;
|
|
1289
|
+
}
|
|
1290
|
+
|
|
1291
|
+
.ap-my-profile__field {
|
|
1292
|
+
border-bottom: var(--border-width-thin) solid var(--color-outline);
|
|
1293
|
+
display: grid;
|
|
1294
|
+
grid-template-columns: 120px 1fr;
|
|
1295
|
+
}
|
|
1296
|
+
|
|
1297
|
+
.ap-my-profile__field:last-child {
|
|
1298
|
+
border-bottom: 0;
|
|
1299
|
+
}
|
|
1300
|
+
|
|
1301
|
+
.ap-my-profile__field-name {
|
|
1302
|
+
background: var(--color-offset);
|
|
1303
|
+
color: var(--color-on-offset);
|
|
1304
|
+
font-size: var(--font-size-s);
|
|
1305
|
+
font-weight: 600;
|
|
1306
|
+
padding: var(--space-xs) var(--space-s);
|
|
1307
|
+
text-transform: uppercase;
|
|
1308
|
+
letter-spacing: 0.03em;
|
|
1309
|
+
}
|
|
1310
|
+
|
|
1311
|
+
.ap-my-profile__field-value {
|
|
1312
|
+
font-size: var(--font-size-s);
|
|
1313
|
+
overflow: hidden;
|
|
1314
|
+
padding: var(--space-xs) var(--space-s);
|
|
1315
|
+
text-overflow: ellipsis;
|
|
1316
|
+
white-space: nowrap;
|
|
1317
|
+
}
|
|
1318
|
+
|
|
1319
|
+
.ap-my-profile__field-value a {
|
|
1320
|
+
color: var(--color-primary);
|
|
1321
|
+
}
|
|
1322
|
+
|
|
1284
1323
|
.ap-my-profile__stats {
|
|
1285
1324
|
display: flex;
|
|
1286
1325
|
gap: var(--space-m);
|
package/lib/federation-bridge.js
CHANGED
|
@@ -89,6 +89,14 @@ async function sendFedifyResponse(res, response, request) {
|
|
|
89
89
|
if (json.endpoints?.type) {
|
|
90
90
|
delete json.endpoints.type;
|
|
91
91
|
}
|
|
92
|
+
// WORKAROUND: Fedify's JSON-LD compaction collapses single-element
|
|
93
|
+
// arrays to a plain object. Mastodon's update_account_fields checks
|
|
94
|
+
// `attachment.is_a?(Array)` and skips if it's not an array, so
|
|
95
|
+
// profile links/PropertyValues are silently ignored.
|
|
96
|
+
// Force `attachment` to always be an array for Mastodon compatibility.
|
|
97
|
+
if (json.attachment && !Array.isArray(json.attachment)) {
|
|
98
|
+
json.attachment = [json.attachment];
|
|
99
|
+
}
|
|
92
100
|
const patched = JSON.stringify(json);
|
|
93
101
|
res.setHeader("content-length", Buffer.byteLength(patched));
|
|
94
102
|
res.end(patched);
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@rmdes/indiekit-endpoint-activitypub",
|
|
3
|
-
"version": "2.0.
|
|
3
|
+
"version": "2.0.21",
|
|
4
4
|
"description": "ActivityPub federation endpoint for Indiekit via Fedify. Adds full fediverse support: actor, inbox, outbox, followers, following, syndication, and Mastodon migration.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"indiekit",
|
|
@@ -26,6 +26,23 @@
|
|
|
26
26
|
{% if profile.summary %}
|
|
27
27
|
<div class="ap-my-profile__bio">{{ profile.summary | safe }}</div>
|
|
28
28
|
{% endif %}
|
|
29
|
+
|
|
30
|
+
{% if profile.attachments and profile.attachments.length > 0 %}
|
|
31
|
+
<dl class="ap-my-profile__fields">
|
|
32
|
+
{% for field in profile.attachments %}
|
|
33
|
+
<div class="ap-my-profile__field">
|
|
34
|
+
<dt class="ap-my-profile__field-name">{{ field.name }}</dt>
|
|
35
|
+
<dd class="ap-my-profile__field-value">
|
|
36
|
+
{% if field.value and (field.value.startsWith("http://") or field.value.startsWith("https://")) %}
|
|
37
|
+
<a href="{{ field.value }}" rel="me noopener" target="_blank">{{ field.value | replace("https://", "") | replace("http://", "") }}</a>
|
|
38
|
+
{% else %}
|
|
39
|
+
{{ field.value }}
|
|
40
|
+
{% endif %}
|
|
41
|
+
</dd>
|
|
42
|
+
</div>
|
|
43
|
+
{% endfor %}
|
|
44
|
+
</dl>
|
|
45
|
+
{% endif %}
|
|
29
46
|
</div>
|
|
30
47
|
|
|
31
48
|
<div class="ap-my-profile__stats">
|
|
@@ -480,7 +480,7 @@
|
|
|
480
480
|
<dt class="ap-pub__field-name">{{ field.name }}</dt>
|
|
481
481
|
<dd class="ap-pub__field-value">
|
|
482
482
|
{% if field.value and (field.value.startsWith("http://") or field.value.startsWith("https://")) %}
|
|
483
|
-
<a href="{{ field.value }}" rel="noopener
|
|
483
|
+
<a href="{{ field.value }}" rel="me noopener" target="_blank">{{ field.value | replace("https://", "") | replace("http://", "") }}</a>
|
|
484
484
|
{% else %}
|
|
485
485
|
{{ field.value }}
|
|
486
486
|
{% endif %}
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
{# Photo gallery with lightbox #}
|
|
4
4
|
{% if item.photo and item.photo.length > 0 %}
|
|
5
|
-
{% set displayCount =
|
|
5
|
+
{% set displayCount = item.photo.length if item.photo.length < 4 else 4 %}
|
|
6
6
|
{% set extraCount = item.photo.length - 4 %}
|
|
7
7
|
{% set totalPhotos = item.photo.length %}
|
|
8
8
|
<div x-data="{ lightbox: false, idx: 0 }" class="ap-card__gallery ap-card__gallery--{{ displayCount }}">
|