diff --git a/.env.dist b/.env.dist index c6125f9..e38250d 100644 --- a/.env.dist +++ b/.env.dist @@ -58,6 +58,8 @@ MYSQL_ROOT_PASSWORD=root_password ###> doctrine/doctrine-bundle ### # Format described at https://www.doctrine-project.org/projects/doctrine-dbal/en/latest/reference/configuration.html#connecting-using-a-url -# `serverVersion` is also set in `config/packages/doctrine.yaml` to avoid DBAL 4 "MySQL earlier than 8" deprecation noise. -DATABASE_URL="mysql://${MYSQL_USER}:${MYSQL_PASSWORD}@database:3306/${MYSQL_DATABASE}?serverVersion=${MYSQL_VERSION}&charset=${MYSQL_CHARSET}" +# serverVersion is NOT in the URL; it is set in config/packages/doctrine.yaml (server_version: '8.0.36'). +# Putting it in the URL too causes DBAL 4 to prefer the URL value and re-emit "MySQL < 8" deprecation +# warnings when a two-part string like "8.0" is present. The YAML value is the single source of truth. +DATABASE_URL="mysql://${MYSQL_USER}:${MYSQL_PASSWORD}@database:3306/${MYSQL_DATABASE}?charset=${MYSQL_CHARSET}" ###< doctrine/doctrine-bundle ### diff --git a/assets/styles/app.css b/assets/styles/app.css index 13844ec..53dd98e 100644 --- a/assets/styles/app.css +++ b/assets/styles/app.css @@ -1469,12 +1469,39 @@ a.tag:focus-visible { flex-grow: 0; } +/* Payment type groups: one label per type with its addresses stacked in the right column */ +.author-profile__payment-group { + display: grid; + grid-template-columns: 7.5rem minmax(0, 1fr); + column-gap: 0.5rem; + align-items: start; + margin: 0.35rem 0; + font-size: 0.9rem; + line-height: 1.35; +} + +.author-profile__payment-group:first-child { + margin-top: 0; +} + +.author-profile__payment-group-values { + list-style: none; + margin: 0; + padding: 0; + min-width: 0; +} + +.author-profile__payment-group-value + .author-profile__payment-group-value { + margin-top: 0.3rem; +} + .author-profile__payment-type { font-size: 0.78rem; font-weight: 600; text-transform: uppercase; letter-spacing: 0.04em; color: var(--color-text-mid); + padding-top: 0.15em; } .author-profile__jumble { diff --git a/src/Command/PrewarmCommand.php b/src/Command/PrewarmCommand.php index f44c199..5d2242e 100644 --- a/src/Command/PrewarmCommand.php +++ b/src/Command/PrewarmCommand.php @@ -794,6 +794,8 @@ final class PrewarmCommand extends Command $coord, $titleOut !== '' ? ' -> '.$titleOut : '' )); + } elseif ($status === 'skipped') { + $io->writeln(sprintf(' · sub-index %s', $coord)); } else { $reason = (string) $entry['reason']; $io->writeln(sprintf(' - MISSING %s (%s)', $coord, $reason)); diff --git a/src/Service/MagazineContentService.php b/src/Service/MagazineContentService.php index 828c929..4bd9ea2 100644 --- a/src/Service/MagazineContentService.php +++ b/src/Service/MagazineContentService.php @@ -448,8 +448,10 @@ final class MagazineContentService } $kind = (int) $parts[0]; if (!\in_array($kind, KindsEnum::longformKindValues(), true)) { - $entries[] = ['coordinate' => $coordinate, 'status' => 'missing', 'reason' => 'unsupported_kind']; - $missing++; + // kind-30040 nested sub-index links are valid in category `a` tags (e.g. Economy → Bitcoin). + // They are not longform articles and are not ingested here; report them separately + // so they don't inflate the "missing articles" count. + $entries[] = ['coordinate' => $coordinate, 'status' => 'skipped', 'reason' => 'unsupported_kind']; continue; } diff --git a/src/Service/NostrClient.php b/src/Service/NostrClient.php index f3d879d..2b05760 100644 --- a/src/Service/NostrClient.php +++ b/src/Service/NostrClient.php @@ -1774,7 +1774,7 @@ class NostrClient 'sample_up_to_25' => $rawSample, ]); if ($rawCount === 0) { - $this->logger->warning('[longform_ingest] ingestLongform: no EVENT rows returned for this filter (check relay index / author filter / #d list)', [ + $this->logger->notice('[longform_ingest] ingestLongform: no EVENT rows returned for this filter — trying fallback queries', [ 'group_key' => $gkey, 'authors_filter' => $g['pubkey'], ]); diff --git a/templates/partial/author_profile_header.html.twig b/templates/partial/author_profile_header.html.twig index e1bc3a4..a8bb7bc 100644 --- a/templates/partial/author_profile_header.html.twig +++ b/templates/partial/author_profile_header.html.twig @@ -1,4 +1,4 @@ -{# Shared author “header” + about (no article list). Expects: author, npub, profile_*; show_nip05: true on full /p/ profile only #} +{# Shared author "header" + about (no article list). Expects: author, npub, profile_*; show_nip05: true on full /p/ profile only #} {% set author_pic = null %} {% if author.picture is defined and author.picture %} {% set author_pic = author.picture %} @@ -18,14 +18,16 @@
{% if profile_websites is not empty %} - +
+ Website + +
{% endif %} {% if show_nip05|default(false) and profile_nip05 is not empty %}
@@ -45,26 +47,38 @@
{% endif %} {% if profile_payment_links is not empty %} + {# Group payment rows by display_type_label so each type (Lightning, Monero, …) appears once. #} + {% set payment_groups = {} %} + {% for row in profile_payment_links %} + {% set k = row.display_type_label|default('')|trim %} + {% set payment_groups = payment_groups|merge({(k): (payment_groups[k] is defined ? payment_groups[k] : [])|merge([row])}) %} + {% endfor %}
Payment