main through native Cloudflare Workers Builds, with GitHub releases published after Cloudflare reports a successful deployment./oc commands (Kimi k3).NEXT_PUBLIC_QUOTE_MOCK_ADDRESS to enable pre-connection quotes.Configured the Cloudflare Worker to serve runesswap.app and www.runesswap.app, preserving the apex redirect and retaining Vercel for rollback.
Replaced Vercel Analytics with Cloudflare Web Analytics, including client-side route tracking.
Switched BTC/USD pricing to mempool.space because CoinGecko rejects Worker requests, retaining the one-minute cache and last-known-price behavior.
Migrated the application from Next.js to TanStack Start and Cloudflare Workers, preserving tab URLs, wallet flows, swaps, borrowing, portfolio, charts, and documentation.
Replaced framework-specific images, fonts, navigation, and HTTP responses with browser standards and TanStack routing.
Removed redundant query and static-data wrappers and mock-only tests; API tests now use real Request and Response objects.
Adapted SatsTerminal to native fetch and moved wallet SDK initialization to the browser for Workers compatibility.
Refreshed Supabase, Bun 1.4.2, Biome, Jest, and development tooling; patched Browserslist and qs security advisories. Earlier Next.js updates below preceded the TanStack migration.
Updated the minimatch v3 compatibility pin to 3.1.5 while retaining the patched brace-expansion integration and glob regression coverage.
Refreshed React Query, Zod, Biome, Testing Library, Jest, Knip, lint-staged, and Node types to current stable releases; ignored incompatible minimatch major updates while its v3 compatibility regression test remains required.
Updated Next.js to its August 2026 security release and refreshed Bun, Supabase, React Query, Biome, Vite, and related types/tooling to current stable versions.
Updated Next.js, Supabase, Zustand, Biome, bundle analyzer, and Knip to current stable releases.
Updated Next.js, Supabase, Biome, testing types/tooling, and Vite to current stable releases; refreshed transitive security overrides for brace-expansion, nanoid, and js-yaml.
Updated Supabase, Biome, React/Node type definitions, Knip, lint-staged, and the Vite security override to their current stable releases.
Refreshed the dependency stack, enabled Next.js's TypeScript CLI integration for TypeScript 7, kept Jest config loading compatible across supported Node versions, patched transitive Lodash and brace-expansion advisories, and moved Dependabot to grouped Bun and GitHub Actions updates.
Upgraded GitHub Actions checkout steps to v7.
Replace opencode review workflow with the official comment-triggered opencode workflow.
Updated all direct runtime and development dependencies to their latest compatible releases, including Next.js 16.2, React 19.2, Zod 4, Recharts 3, Jest 30, Biome 2.5, and the supported TypeScript 7/6 compatibility pairing.
Updated the Bun runtime pin and CI actions, simplified the changelog gate around Unreleased, and prevented already-tagged releases from being republished on ordinary changelog merges.
Refreshed transitive security overrides, including Sharp 0.35, to the latest patched releases available through the current dependency graph.
Replaced stale machine-specific agent-instruction symlinks with portable repository-local pointers.
Added knip v6 dead-code checks with a repo-specific knip.json and wired bun run knip into the canonical ai-check pipeline.
Replaced the umbrella satsterminal-sdk dependency with the swaps-only @satsterminal-sdk/swaps package and aligned it to 1.6.31.
Hard-cutover navigation to canonical routes (/swap, /borrow, /runes-info, /your-txs, /portfolio) and made / redirect to /swap.
Removed legacy tab query/event plumbing (/?tab=..., tabChange custom events, and tab state URL syncing via pushState).
Added architecture guardrails (lint:architecture) and enforced them in CI to block barrel imports, tab-event patterns, and oversized modules without waivers.
Added App Router fault boundaries (app/error.tsx, app/global-error.tsx, app/not-found.tsx) and aligned route patterns with current Next.js guidance.
Refactored swap quote/execution orchestration into smaller helper modules and standardized query key usage through the shared queryKeys factory.
Enforced Zod validation and standardized ok/fail across APIs; set dynamic = 'force-static' on static GETs.
Strict Mode effect cleanups (timers/listeners) for predictable behavior.
Re-enabled build-time linting.
Simplified Husky hooks to use lint-staged in pre-commit and checks in pre-push.
Migrated linting/formatting from ESLint + Prettier + Stylelint to Biome with a single repo-wide config.
Migrated package management and project scripts from pnpm to Bun, including CI and Git hooks.
Standardized Husky validation by running the canonical bun run ai-check pipeline on pre-push.
Reduced unnecessary quote requests and improved swap percentage helpers.
Upgraded Next.js and eslint-config-next to 15.5.18, ignored generated next-env.d.ts output in ESLint, and updated vulnerable dependency paths including Vite, Axios, Rollup, Fast URI, and Handlebars.
Upgraded Next.js and related ESLint config to 15.2.6.
Upgraded dependency set to supersede Dependabot PRs for react-markdown, @commitlint/cli, @commitlint/config-conventional, typescript, jsdom, @types/jsdom, and prettier.
Upgraded next, eslint-config-next, @next/eslint-plugin-next, and @next/bundle-analyzer to 15.5.10.
Upgraded to Next.js 16.1.6 and aligned core frontend/tooling packages to latest compatible releases (react, react-dom, @types/react, @types/react-dom, @types/node, @supabase/supabase-js, @tanstack/react-query, @headlessui/react, zustand, ordiscan, satsterminal-sdk, lint-staged, and others).
Removed deprecated eslint config from next.config.ts for Next.js 16 compatibility.
Upgraded @omnisat/lasereyes to 0.0.163.
Unreleased bullet./api/sats-terminal/search contract.src/lib/env.ts.swapExecution helper typing and Biome compliance).console.* with logger in APIs; reduced noisy logs.src/app/api/ordiscan/btc-balance/route.ts.src/app/api/ordiscan/rune-info-by-id/route.ts.src/hooks/useSwapExecution.ts by introducing PsbtApiResponse and a type guard; deduplicated SwapConfirmationResult; fixed finally-block to avoid stale state success re-dispatch.useSwapExecution so failures remain visible instead of resetting to idle.NEXT_PUBLIC_QUOTE_MOCK_ADDRESS is unset./api/ordiscan/list-runes dynamic so new/updated runes stay fresh without redeploys.SATS_TERMINAL_FORCED_FEE_RATE override for emergencies.bun ci) for lockfile-consistent builds.diff to 4.0.4 via top-level overrides to resolve the outstanding Dependabot alert.overrides for transitive axios, esbuild, lodash, valibot, and vite to pull patched releases.AssetSelectorDropdown to satisfy Headless UI v2.2.9 Listbox typing when no selection exists.@omnisat/lasereyes to a local test mock so the ESM-only LaserEyes build works with the current Jest runtime.--localstorage-file path when supported to prevent noisy build-time warnings.legacyBehavior usage from next/link in the app footer for Next.js 16 compatibility.All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
useSearchWithPopular hook to use React Query for search and popular rune flows with debounced input.QueryClientProvider.initialItems when available; correct isLoading/error derivation; sync cache only when initialItems change.useRuneBalances hook for fetching rune balances and refactored Borrow and Swap tabs to use it.withApiHandler.useSearchWithPopular hook for debounced search with optional popular-item caching.usePopularRunes hook and refactored hooks/components to consume it.fetchRuneEndpoint for Ordiscan rune endpoints with accompanying tests.FormattedRuneName to use the useRuneInfo hook.useAssetSearch and useRunesSearch now leverage useSearchWithPopular.useFeeRates accept optional React Query config and reused it in swap execution.useRuneDataQuery wrapper./changelog that renders CHANGELOG content without the preamble and link reference block (shows only versions, dates, and changes).main.package.json and is not [Unreleased].@/ imports.TBA_API_URL usage and 98.css remnants..env.example guidance.