Evolution
Changelog (docs)
Notable documentation and ops-structure changes.
2026-09-16 follow-up
- Real notification-test preparation found a second historical schema mismatch in
notification_logs. Added an idempotent migration and canonical schema for both old table layouts, with real PostgreSQL tests. Audit failures no longer turn accepted pushes into failed sends or stop remaining devices;logFailuresis separate. - Crypto icons resolve against the bundled asset list before loading. Missing symbols
and unbundled variants use the existing generic/color assets without repeated 404s;
fallback image failures no longer loop. Update
crypto-icon-assets.jsonwhen adding assets. - Chinese documentation search now uses
@orama/tokenizers/mandarinfor both indexing and queries. English search remains separate. Search initialization errors return 500 instead of a false empty result. - Removed the wallet direct-address and signature-failure login fallbacks. SIWE requires a valid signature, this site's domain/URI, a current signed Auth.js CSRF nonce, and a recent issued-at timestamp. Old wallet sessions must reauthenticate; database failures cannot mint fallback identities. Credential/signature/OAuth token payloads are no longer logged.
- Removed unused Web3Modal/Wagmi dependencies and their unreferenced configuration. The previously disabled wallet connector UI remains disabled; email/Google auth remains available.
- BlockBeats is explicitly disabled by default, reported in
disabled_sourcesrather than repeatedly queried as a failed feed. PANews, TechFlow, Decrypt and Cointelegraph remain active. - Upgraded compatible security fixes. Production dependency audit now has zero moderate advisories. The two image-size high findings are covered by the pinned local patch; five low findings remain in the legacy AI SDK used by template demo endpoints, which now return 404 in production.
- Disabled template AI/email demo endpoints in production. An unconfigured payment gateway returns 503 before creating an order. Payment transport and Web Push regression tests use mocks and never send real payments or notifications.
- Corrected module listing to retain empty modules and honor saved sorting; deletion now reports missing/unowned rows accurately and removes relations transactionally. Added isolated database persistence/ownership tests.
- Removed eight duplicate index declarations that conflicted with existing column uniqueness constraints and prevented a clean database installation. Column uniqueness is retained; no production data or indexes need to be removed.
2026-09-16
- Production browser verification found Cloudflare email obfuscation rewriting legal
and documentation pages before React hydration. These responses now send
no-transform;/sw.jsbypasses locale routing and sendsno-storeso worker updates stay current. - News cron: bounded RSS requests, partial-source isolation, truthful failure statuses, database advisory locks, batched inserts, and reminders after the HTTP response.
- Added an idempotent migration for the legacy Binance event schema and unique news links.
- Added direct Decrypt and Cointelegraph English feeds. BlockBeats empty responses were initially marked degraded; the follow-up above explicitly disables this source by default.
- Protected duplicate-event cleanup with cron authorization and bounded Web Push requests.
- Restored server-rendered public content by removing the disabled wallet SDK loading gate.
- SEO: one metadata authority, correct default-language canonicals and alternates, bilingual sitemap entries, no indexing of private workspaces, crawlable Next assets, and removal of unsupported structured-data ratings.
- Service worker now caches only local static assets; sessions, API payloads, HTML and RSC
are never persisted. Language preferences are written in the browser so
/enstays cacheable. - Next.js 15.5.25 / Node.js 22 / pnpm 10.34.5; notification DB connections initialize on use,
allowing builds without production secrets. CI validates builds; production deploys from
Leo202403/link-nest:masterthrough the existing Dokploy GitHub integration. - Patched available critical/high dependency advisories, including Next.js, Auth.js,
Drizzle, Nodemailer and transitive packages. Two high
image-size@2.0.2parser advisories have no upstream fix at review time and are covered by the locally pinned parser patch with malformed-image regression tests. Its use is in the repository MDX image build plugin.
2026-04
- Docs search:
createFromSourcenow setslocaleMap(zh/en→ English Orama stemmer) so i18n index build no longer throwsLANGUAGE_NOT_SUPPORTEDfor Chinese; status README blocker text updated. - Lint / deps:
eslint-config-nextmoved to devDependencies; adminpresets/profile-stats/debug-modulesandprofile+[locale]/u/[shortId]pages cleaned for unused imports/dead code and stricter types. - i18n / ops:
i18n/request.tsfallbacks userouting.defaultLocale(not hardcodedzh); middleware sign-in / double-locale logs are dev-only (no full URL in prod);/u/[username]layout readsuser-language-preferencecookie thendefaultLocale; ESLint added as devDependency sopnpm lintruns. - Stability: Docs search
GET /api/docs/searchreturns 500 on real failures (only emptyhitsfor known unsupported-language errors); status README blocker text aligned with English-index behavior; architecture overview Web3 row usesNEXT_PUBLIC_WEB3_ENABLED(+ optionalWEB3_ENABLED); profileUnifiedModulesDisplayreminder locale followsnext-intl; Fumadocs docs layout uses explicitzhtranslations. - Fumadocs: Fixed MDX body rendering in
src/app/[locale]/(docs)/docs/[[...slug]]/page.tsx(use compiledpage.data.body). - Three layers: Entry (
content/docs/index.mdx), Blueprint (architecture/index+architecture/*), Evolution (status/README.mdx+changelog). - i18n: Loader languages
en+zhfor docs pages.