Skip to content

4.4.0

Choose a tag to compare

@feruzm feruzm released this 25 Jun 05:15
· 1283 commits to main since this release
d21636e

What's Changed

  • test(sdk): cover similar-entries timeout split + fix retry comment by @feruzm in #905
  • fix(web): give pasted editor images a valid filename before upload by @feruzm in #904
  • fix(web): align mobile scroll-to-top with FAB; lead publish bar with community selector by @feruzm in #906
  • fix(web): unify publish mode label into one aligned header by @feruzm in #907
  • fix(web): fully hide mobile FAB + scroll-to-top when navbar hides (no half-cut) by @feruzm in #908
  • Soft-moderate new-account posts with outbound links (SEO/backlink-farm) by @feruzm in #909
  • Server-side CAPTCHA: Turnstile on free signup (+ web 4.4.0) by @feruzm in #910
  • fix(web): block open redirect via decoded path in middleware by @feruzm in #911
  • Add Spotlight type and getSpotlightsQueryOptions to @ecency/sdk by @feruzm in #912
  • Add feature-spotlight sidebar widget to the feed by @feruzm in #913
  • Spotlight: feed layout tweaks, CTA button fix, Plausible tracking by @feruzm in #914
  • feat(profile): show followers/following as page sections instead of modals by @feruzm in #915
  • feat(web): agent-readable post endpoints (.md / .json / .discussion.json) + llms.txt by @feruzm in #916
  • Spotlight: guests-only audience (replace auth boolean) by @feruzm in #917
  • Read next: render cards visible in SSR (CSS entrance, not framer-motion opacity:0) by @feruzm in #918
  • Hide proposal announcements from users who already voted by @feruzm in #919
  • fix(sentry): Filter Hive RPC "category/tag does not exist" errors from RSS feeds by @sentry[bot] in #921
  • Parameterize web replica count (WEB_REPLICAS) by @feruzm in #922
  • Make prod deploy fail loudly instead of silently passing by @feruzm in #923
  • Latency-aware adaptive node selection in hive-tx by @feruzm in #924
  • Read next: add staleTime so SSR-hydrated data skips the redundant client refetch by @feruzm in #925
  • vapi: pin search backend to origin IP (bypass broken CF colo path) by @feruzm in #926
  • fix(sdk): adaptive node selection — cold-start order + caller-abort handling by @feruzm in #927
  • Default search to Relevance over all time by @feruzm in #929
  • render-helper: cache-safe per-format image negotiation (web/self-hosted) by @feruzm in #928
  • fix(entry): skip LCP preload when the cover URL can't be resolved (no double-download) by @feruzm in #930
  • fix(rss): also treat Hive bridge "invalid tag" assert as transient by @feruzm in #931
  • perf(web): keep tus-js-client and qrcode off the read-path bundle by @feruzm in #932
  • fix(discover): stop double-converting curator rewards to HP by @feruzm in #934
  • fix(3speak): stop duplicate video uploads (use token embed URL) by @feruzm in #933
  • feat(seo): add tags.xml sitemap shard of top tag hub pages by @feruzm in #936
  • fix(chat): make sidebar 3-dot menu discoverable and fix broken theming by @feruzm in #935
  • fix(chat): reply preview quotes the parent message, not itself by @feruzm in #937
  • fix(chat): thread panel shows the full conversation, not just loaded posts by @feruzm in #938
  • feat(entry): oEmbed provider + replace in-post link scrape by @feruzm in #939
  • feat(chat): modernize channel/DM list with borderless rows by @feruzm in #940
  • fix(oembed): return 400 (not 501) for unsupported format by @feruzm in #941
  • fix(signup): serve Turnstile widget from a hosted /embed route for mobile WebView by @feruzm in #942
  • fix(entry-stats): date-scope + canonical-path Plausible queries by @feruzm in #943
  • fix(stats-proxy): exact-match post pages to stop sibling-permlink overmatch by @feruzm in #944
  • Security hardening: embed sanitization, CSP, Mattermost admin authz, import proxy by @feruzm in #945
  • CSP reports: route through a de-duplicating first-party collector (fix Sentry flood) by @feruzm in #946
  • CSP collector: log report-only violations instead of sending them to Sentry by @feruzm in #947
  • Allowlist real feature deps surfaced by CSP report-only monitoring by @feruzm in #948
  • Serve /embed/turnstile as self-contained static HTML by @feruzm in #949
  • Allow WASM eval in the Turnstile embed CSP (fixes stuck 'Verifying…') by @feruzm in #950
  • perf: mobile CWV (1/2) — homepage redesign, mobile-only navbar search, lighter shared bundle by @feruzm in #951
  • fix(ci): drop @ecency/sdk from optimizePackageImports to fix build OOM on develop by @feruzm in #952
  • fix(home): visible footer social icons, Contributors link, expanded About copy by @feruzm in #953
  • fix(home): correct About email + CF-verified visitor stat by @feruzm in #955
  • perf(sentry): defer Sentry SDK off every route's eager bootstrap (-67KB First Load JS/route) by @feruzm in #954
  • perf(feed): replace the 30s all-card re-render fan-out with a self-ticking TimeLabel by @feruzm in #956
  • perf(feed): defer below-the-fold card action-bar hydration (feed TBT fix) by @feruzm in #957
  • perf(navbar): lazy-load sidebar search to evict the search graph from the eager bundle by @feruzm in #958
  • feat(home): lead the hero with the Ecency wordmark instead of the logo mark by @feruzm in #959
  • perf(navbar): defer the 5 sidebar user dialogs out of the eager navbar chunk by @feruzm in #960
  • fix(home): hero subtitle copy, Signup as primary CTA, brand kicker treatment by @feruzm in #961
  • feat(sdk): label server-side Hive requests with a real User-Agent by @feruzm in #962
  • chore(deps): bump ws from 8.18.3 to 8.21.0 in the npm_and_yarn group across 1 directory by @dependabot[bot] in #963
  • chore(deps): bump dompurify from 3.4.0 to 3.4.9 in the npm_and_yarn group across 1 directory by @dependabot[bot] in #964
  • fix: don't autoplay videos in waves feed by @feruzm in #965
  • fix(web): make Extensions login reliable and quiet Permissions-Policy warnings by @feruzm in #966
  • fix(sdk): classify "missing required active/owner authority" for auth fallback by @feruzm in #967
  • fix(web): harden MetaMask snap login (version guard + benign cancel) by @feruzm in #968
  • fix(web): stop external-transfer dialog from auto-prompting MetaMask connect by @feruzm in #969
  • fix(web): always show the extension picker when 2+ extensions are installed by @feruzm in #970
  • feat(waves): show payout + correct vote count on waves cards by @feruzm in #971
  • chore(deps): bump dompurify from 3.4.9 to 3.4.11 in the npm_and_yarn group across 1 directory by @dependabot[bot] in #972
  • feat(waves): show payout/votes/replies on following + tag feeds by @feruzm in #973
  • fix(waves): publish time on custom feeds + tag selection on Following by @feruzm in #974
  • infra(web): cap US replicas to 3 and bound SSR memory (arena + heap + mem_limit) by @feruzm in #975
  • fix(sdk): preserve unrelated metadata on account_update2 writes by @feruzm in #976
  • chore(deps): bump undici from 6.25.0 to 6.27.0 in the npm_and_yarn group across 1 directory by @dependabot[bot] in #977
  • fix(sdk): default Transaction.signatures to [] (hive-uri sign crash) by @feruzm in #979
  • feat: Resource Credits pre-publish check + RC top-up purchase client by @feruzm in #978
  • fix(web): resolve Hive Keeper via live window.hive, not a dead hive_extension check by @feruzm in #980
  • feat(config): enable RC top-up feature flag by @feruzm in #981
  • feat(points): funnel low-RC users to buy Points + clearer purchase steps by @feruzm in #982
  • chore(deploy): pass STRIPE_INTERNAL_SECRET to vapi in the stack deploy by @feruzm in #983
  • feat(points): buy Points with a card via Stripe Payment Element by @feruzm in #984
  • fix(csp): allow Stripe.js (Payment Element) origins by @feruzm in #985
  • fix: enable Stripe wallets + route signing to the logged-in extension (Keychain/Keeper hijack) by @feruzm in #986
  • feat: unified Sign-with-Extension picker across all signing surfaces by @feruzm in #987
  • feat(publish): rebuild geo-tag picker on open-source map + hybrid search by @feruzm in #988
  • feat(tip): add tip button to comments, feed cards, and decks by @feruzm in #989
  • feat(stripe): premium account purchase by card on the web (P6d) by @feruzm in #990
  • chore(embed): drop the dead, misleading CSP from the Turnstile embed route by @feruzm in #991
  • fix(waves): guard get_discussion so one failed container can't empty the For-you feed by @feruzm in #992
  • fix(comments): tip button before Reply + keyboard-accessible reblog by @feruzm in #993
  • perf(embed): edge-cache the Turnstile widget instead of no-store by @feruzm in #994
  • fix(safe-tweet): quiet the handled tweet-embed failure log by @feruzm in #995
  • feat(signup): localize free-signup error messages by backend code by @feruzm in #996
  • Use distinct QR illustration for buy-points-with-QR card by @feruzm in #997
  • Show the actual extension (Keeper / Peak Vault) on login account badges by @feruzm in #999
  • fix(sentry-filter): widen botnet regex to match old Chrome 'property' format by @sentry[bot] in #998
  • fix(mobile): feed card overflow, list-item bullet, and CSS-skew recovery by @feruzm in #1000
  • fix(pwa): exclude non-servable assets from the SW precache so it can update by @feruzm in #1003
  • fix(profile): validate website URL before prefetching by @sentry[bot] in #1001
  • fix(sentry-filter): drop webkit.messageHandlers errors from non-WKWebView by @sentry[bot] in #1002
  • waves: single combined cross-container feed by @feruzm in #1004
  • Liketu Speak: audio player, footer cleanup, indexability by @feruzm in #1005
  • waves: server-side observer mute filter + author feed param by @feruzm in #1006
  • feat(waves): publish to hive.flow first, fall back to ecency.waves by @feruzm in #1007
  • fix: strip emoji before translation to fix language detection by @feruzm in #1008
  • fix(signup): block chain-invalid usernames synchronously before submit by @feruzm in #1009
  • fix(entry-payout): guard missing beneficiaries in EntryPayoutDetail by @feruzm in #1010
  • feat: DecentMemes meme maker (publish + waves) by @feruzm in #1011
  • fix(render-helper): stop Skatehive IPFS videos autoplaying in waves by @feruzm in #1012
  • feat(waves): show Ecency source badge on wave header by @feruzm in #1013
  • fix(waves): friendly not-found screen for unavailable waves by @feruzm in #1014
  • fix(i18n): repair en-US.json broken by waves PR merge by @feruzm in #1015

Full Changelog: 4.3.9...4.4.0