fedipod 1.8.0 → 1.11.0

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/run-agent.mjs CHANGED
@@ -325,12 +325,14 @@ export class Agent {
325
325
  actorId: this.urls.actor, edPrivate: keys.edPrivate,
326
326
  proofKeyId: assertionKeyId(this.urls),
327
327
  log: this.log, passive: this.viewer,
328
+ onGone: () => this.publisher.publishCollections({ followers: true }),
328
329
  });
329
330
  this.publisher = new Publisher({
330
331
  config, remote: this.remote, store: this.store,
331
332
  deliverer: this.deliverer, publicKeyPem: keys.rsaPublicPem,
332
333
  assertionKey: keys.edPublicMultibase, log: this.log,
333
334
  resolveMention: (h) => resolveHandle(this, h),
335
+ resolveActor: (u) => this.intake.fetchAP(u),
334
336
  // Inside a pod server the client surface answers on the pod's own
335
337
  // origin, so it can be advertised. Standalone it is on loopback, and
336
338
  // naming it in a world-readable actor would send clients nowhere.
@@ -586,6 +588,10 @@ export class Agent {
586
588
  if (repair) {
587
589
  this.ensureActorPublished()
588
590
  .catch(e => this.log(`actor check failed: ${e.message}`));
591
+ // The human page, rewritten only when what it shows has changed: one
592
+ // local digest compare, and a write the first time after an upgrade.
593
+ this.publisher.publishProfilePage()
594
+ .catch(e => this.log(`profile page: ${e.message}`));
589
595
  }
590
596
  this.seedFollowNotifications().catch(e => this.log(`notification seeding failed: ${e.message}`));
591
597
  }
@@ -94,6 +94,7 @@ fs.writeFileSync(path.join(site, '_redirects'), [
94
94
  '/api/agent /.netlify/functions/front 200',
95
95
  '/u/* /.netlify/functions/front 200',
96
96
  '/.well-known/* /.netlify/functions/front 200',
97
+ '/@* /.netlify/functions/front 200',
97
98
  '/install /.netlify/functions/front 200',
98
99
  '/run /.netlify/functions/front 200',
99
100
  '/roster /.netlify/functions/front 200',
package/web/app/agent.mjs CHANGED
@@ -88,6 +88,7 @@ export class BrowserAgent {
88
88
  // Own posts the outbox names and the timeline index lacks come back
89
89
  // here, before anything acts on the index.
90
90
  await this.publisher.healStatuses().catch((e) => this.log(`healing the timeline index: ${e.message}`));
91
+ await this.publisher.publishProfilePage().catch((e) => this.log(`profile page: ${e.message}`));
91
92
  // And start delivering again, since demote() stopped it. startQueue() is
92
93
  // idempotent, so a goActive() that was already active costs nothing.
93
94
  this.deliverer?.startQueue?.();
@@ -223,6 +224,7 @@ export class BrowserAgent {
223
224
  // The relay finds the account by the front's own key for it, which for a
224
225
  // mail-door account is the full address, not the bare handle.
225
226
  handle: doorKeyOf(config.gateway?.url) || config.handle, sessionFetch: session.fetch,
227
+ onGone: () => this.publisher.publishCollections({ followers: true }),
226
228
  });
227
229
 
228
230
  this.publisher = new Publisher({
@@ -232,6 +234,7 @@ export class BrowserAgent {
232
234
  // gives its publisher. Without it no mention from the browser ever
233
235
  // resolved: a direct message went to nobody, a mention notified no one.
234
236
  resolveMention: (h) => resolveHandle(this, h),
237
+ resolveActor: (u) => this.intake.fetchAP(u),
235
238
  });
236
239
 
237
240
  // The Bluesky connection, stamped to this actor. The same client the Node
@@ -33444,6 +33444,7 @@ async function signUp(answers, { onStep = () => {
33444
33444
  handle,
33445
33445
  name: handle,
33446
33446
  issuer: credential.issuerOrigin,
33447
+ createdAt: (/* @__PURE__ */ new Date()).toISOString(),
33447
33448
  ...gateway ? { gateway } : {}
33448
33449
  };
33449
33450
  const cfgRemote = new BrowserRemotePod(session, { webId: credential.webId, role: "signup", log: () => {