
We migrated from Solana wallet adapter to the official Phantom SDK, providing a more streamlined wallet experience:
Complete wallet SDK migration from @solana/wallet-adapter-* to @phantom/react-sdk. (dc34d72)
Phantom ConnectButton for wallet management with built-in disconnect modal. (cb77eb9)
OAuth providers (Google, Apple) restored for alternative authentication flows. (a4bc1a7)
Smart auth prompting: wallet modal opens on first keystroke for seamless mobile deeplink flows. (7a7b643)
This matters because Phantom SDK provides a unified, mobile-friendly wallet experience with OAuth fallbacks, reducing friction for users connecting wallets especially on mobile devices.
Major visual overhaul of the chat experience to match Figma designs:
Chat input: glass background (rgba(38,38,38,0.7)), 48px blur, 32px radius, multiline support with 368px max height, and three-state submit button (disabled/enabled/stop). (daf6e04)
User message bubbles: subtle white background (rgba(255,255,255,0.12)), asymmetric border-radius, right-aligned footer actions (copy, more). (e1cdbaf)
Assistant messages: full-width plain markdown (no bubble), footer actions (copy, refresh, more) on completion, gradient shimmer "Thinking" indicator. (7de89e0, e1cdbaf)
LLM markdown styling: code blocks with semi-transparent black background, 16px radius, language label header with copy button, Geist Mono fonts. Tables with minimal clean styling and header separators. (7fa44a3)
Table styles: 14px Geist font, 500-weight headers, 36px row height, transparent backgrounds. (9c6ef43)
This matters because the chat interface now matches the design spec with proper typography, spacing, and visual hierarchy, providing a polished conversational experience.
New sidebar system with smooth animations and improved wallet placement:
CSS-animated sidebar: 0.3s opacity and translateX transitions for open/close, pointer-events disabled when hidden. (3afdeaa)
Chat layout: messages top-aligned, sidebar pushes chat content (not overlays), conversation title displayed in sidebar with glass highlight. (6986f22)
Wallet button placement: header when not connected, sidebar when in chat mode and connected. (0202d8f)
Multiple animation fixes for landing-to-chat transitions. (b4e5bbd, dc27199, e3960a0)
This matters because smooth animations and predictable layouts reduce visual jank and cognitive load during navigation and mode transitions.
Visual improvements to the landing page and roadmap section:
Roadmap cards: glassmorphism styling (rgba(38,38,38,0.5)), blur, borders, and animated red dot indicator on active card. (1196f4f)
Sticky input: chat input moves to bottom when hero is scrolled past, stays above footer. (4edffdf)
Mobile roadmap navigation: chevron arrows inside carousel fade overlays. (4edffdf)
Subtle parallax effect on landing input (15% scroll offset). (b55772e)
Askloyal logo placed above hero input for branding. (3e424b4)
Hero cleanup: removed background image and inline logo. (0c3e386)
This matters because these changes modernize the landing page visuals, improve mobile navigation, and keep the input accessible during scrolling.
Security patch: Upgraded Next.js 15.4.6→15.4.10 and React 19.1.0→19.1.2 to address CVE-2025-66478 and related vulnerabilities. (d571936)
Performance: Unmount desktop nav in chat mode to eliminate expensive backdrop-filter blur from the DOM. (3895820)
Fix landing-to-chat transition: use marginLeft instead of animating left to prevent elements flying from the left. (dc27199, b4e5bbd)
Fix sidebar animation syntax error from refactor. (e3960a0)
Constrain chat input width (768px) and fix bottom positioning with proper padding. (5d3f981)
Wrap nav items in group to remove unintended gaps between buttons. (1d11d5c)
Center landing input with 0.5s animation transition. (9c6ef43)
Simplify wallet disconnect: auto-open Phantom modal via useEffect when disconnected in chat mode. (9c6ef43)
Wallet flows are streamlined: Phantom SDK handles wallet management with OAuth fallbacks, and auth prompts appear immediately on mobile for seamless deeplink flows.
Chat looks polished: Messages, inputs, code blocks, and tables now match the Figma design system with proper typography, spacing, and interactions.
Navigation is smoother: Sidebar opens/closes with animations, transitions between landing and chat are instant without visual glitches.
Mobile UX improved: Sticky input stays accessible, roadmap has navigation arrows, and wallet connection works reliably on mobile browsers.
Phantom SDK integration: src/components/solana/phantom-provider.tsx, header/page updates. (dc34d72, cb77eb9, 7a7b643)
Chat UI redesign: Input, message, and markdown component styling. (daf6e04, e1cdbaf, 7de89e0, 7fa44a3)
Sidebar animation: Sidebar transitions and layout push behavior. (3afdeaa, 6986f22, 0202d8f)
Roadmap/landing: Roadmap card styling, sticky input, parallax. (1196f4f, 4edffdf, b55772e)
Security: Next.js/React upgrades. (d571936)
We focused on making the Telegram Mini App feel faster and more polished with caching, loading states, and navigation persistence:
Avatar caching & proxy: Added server-side proxy for Telegram avatars to bypass CORS restrictions, with caching in Telegram Cloud Storage for instant loads on return visits. (df5ae3c)
Skeleton loading states: Profile page now shows skeleton loaders while avatars load, eliminating layout shift and perceived lag. (df5ae3c)
Page persistence: The app now remembers your last visited page and restores it on launch — no more always landing on the home screen. (df5ae3c)
Not spam button: Added a "Not spam" action button in the spam chat header so users can quickly mark messages as legitimate without swiping. (2f7253a)
Console noise suppression: Suppressed noisy Telegram SDK console errors for a cleaner development experience. (df5ae3c)
This matters because these changes make the Mini App feel native — avatars load instantly from cache, screens don't jump around during load, and users return to where they left off.
Significant progress on integrating Nillion's SecretVault for secure, decentralized data storage:
EIP-712 adapter: Created an EIP-712 signing adapter to authenticate with Nillion's infrastructure using Ethereum-style typed data signatures. (842569c)
Code architecture improvements: Decoupled collections logic from builder code and reorganized constants/helpers for cleaner separation of concerns. (e1cc0c9, c5bea58)
Environment handling: Fixed environment variable handling to be more robust and less coupled to specific deployment contexts. (c5bea58)
This matters because Nillion integration enables private, encrypted storage for sensitive user data (like chat summaries and preferences) without relying on centralized databases.
New bot capabilities for interacting with users directly in any Telegram chat:
CA command handler: The bot now processes /ca (contract address) commands, allowing users to look up token information directly in chat. (bfa450d, 37635b7)
Inline query support: Added inline query handler that surfaces a wallet button when users invoke the bot with @botname in any chat — enabling wallet actions without opening the Mini App. (23ce992)
Error logging: Added proper error logging to bot command handlers for easier debugging. (77042f5)
This matters because inline mode lets users access wallet features from any conversation without context-switching to the Mini App, reducing friction for quick actions.
Faster Mini App experience — avatars cache locally, pages remember where you were, and loading states prevent jarring layout shifts.
Bot works in any chat — use inline queries (@loyalbot) to access wallet features without opening the app, and /ca to look up tokens on the fly.
Foundation for private storage — Nillion integration sets the stage for encrypted, user-controlled data storage.
Mini App UX: TelegramProvider.tsx, profile/page.tsx, proxy-image/route.ts (df5ae3c)
Spam handling: summaries/direct/page.tsx (2f7253a)
Nillion: lib/nillion/core/ — adapters, collections, helpers (842569c, e1cc0c9, c5bea58)
Bot commands: lib/telegram/bot-api/commands.ts, inline.ts (bfa450d–23ce992)

This release delivers major improvements across the wallet, Telegram integration, and gasless transaction flows. Users get a smoother claiming experience, richer in-app feedback (confetti, haptics, skeleton loaders), clearer transaction messaging, and more robust backend support for Solana deposits, Telegram webhooks, and business connections.
Restored reliable gasless claim handling
Fixed gasless claim transaction handling in both the wallet and API routes so fee-less claims process reliably.
Updated the wallet UI to show accurate transaction status and clearer feedback during gasless operations.
Automatic claiming for incoming deposits
Incoming transactions are now auto-claimed, replacing manual claim actions.
A blinking “Claiming…” badge indicates progress, and successful claims trigger celebratory confetti and haptics.
Confetti & haptic feedback enhancements
Increased confetti intensity and extended haptic bursts for a more impactful celebration when key actions (like successful claims) complete.
Added confetti plus strong haptics specifically on successful claim events.
Gasless banner and claim UX
Introduced a GaslessBanner component and new Molnia icons to highlight gasless status in wallet and summary views.
Persisted gasless banner and free-transaction claim state to cloud storage so prompts and progress stay consistent across sessions.
Restored visibility of the claim button after users complete the gasless task, preventing missed free-transaction claims.
Updated the gas warning message to explicitly prompt users to join the channel to receive free transaction credits.
Gasless verification & APIs
Added a gasless transaction claim API plus Solana-based verification to enable fee-less claim flows.
Introduced a dedicated gasless claim API method and integrated it into the client library and wallet handling.
Implemented a test suite for gasless Telegram verification initData storage, plus end-to-end tests for the full gasless Telegram verification flow to reduce regressions.
Gasless error handling
Fixed issues in gasless claim transaction handling on the Telegram wallet page so submissions are reliable and wallet state updates correctly.
Ensured gasless state is reset on verification failure and surfaced via a clear error modal, which is cleared when the modal is dismissed.
Simplified fee and gas UI
Removed explicit “gasless” transaction presentation where no longer applicable.
Consolidated and simplified the transfer fee UI for clearer, more predictable transaction handling.
Improved transaction viewing & sharing
Updated Telegram summary pages and wallet transaction sheets to streamline viewing, sending, and reviewing activity.
Added inline message sharing for username-based deposits directly from transaction details.
Updated gas warnings and inline messaging to encourage joining the channel for free transactions and to clarify when gas is required.
Swapped sender and receiver references in Telegram share message text so the recipient is greeted correctly and the sender is accurately identified.
Skeleton loading states
Added skeleton loaders for wallet transactions and incoming deposits in Activity views and the main wallet.
Reduced perceived latency and layout shifts while transaction data loads.
Layout & spacing adjustments
Refined wallet top-section spacing for a cleaner presentation.
Fixed deposit username detection when sharing deposit transactions so recipient details are accurate.
Deposit cancellation & refund flows
Added a Cancel button for deposit_for_username transactions in the UI; the cancellation logic will follow in a later update.
Introduced cancel/refund support for deposit_for_username:
Fetches deposit details and exposes a conditional cancel action for positive deposits.
Executes refunds via the Solana program for consistent and safe returns.
Solana deposit reliability
Created a webhook on Solana account changes for deposits to detect and process incoming funds in real time.
Fixed Solana deposit refund and top-up logic to avoid incorrect balances and to ensure consistent follow-up operations.
Corrected sorting logic in Solana deposits to avoid lint issues and guarantee stable ordering.
Explorers & network configuration
Removed the devnet cluster parameter from blockchain explorer URLs, sending users to canonical explorer pages regardless of environment.
Stopped requesting devnet API connections and ensured wallet, claim, and Telegram flows use the configured network only.
Telegram webhook integration
Added a Telegram webhook endpoint/route to receive and process bot updates in real time.
Ensured bot commands are awaited correctly in the webhook handler to avoid unhandled promises and sequencing issues.
Resolved lint errors in the webhook code, improving maintainability.
Business connections & schema
Added a missing business connection ID field to the schema so records validate and identifiers persist as expected.
Introduced a nildb schema for business connections to provide persistent, validated storage.
Decoupled the bot start message from the webhook flow and added explicit handling for business connect/disconnect events for more resilient Telegram interaction logic.
Nillion-backed message storage
Integrated Nillion for backend message storage to increase message durability and improve user/service orchestration around messaging.
Inline sharing & richer share experiences
Enabled inline Telegram message sharing immediately after a successful transaction, streamlining post-transaction communication.
Added an image to Telegram inline share messages for richer previews and better engagement.
Introduced personalization and clearer button navigation in shared messages to make follow-up actions easier to discover.
Verification, emoji & channel checks
Added Telegram handlers to set and verify:
Custom emoji status.
Channel join status (chat participation).
Introduced runtime methods to:
Check Telegram chat participation.
Check custom emoji status.
Enabled setting a user’s custom emoji status and sharing prepared inline messages from the Telegram mini-app, supporting emoji-based features and presence.
Direct & Spam chat pages
Added dedicated Direct and Spam message pages with:
Swipe-based navigation between tabs.
A native Reply action and clickable user links.
Unified the bot banner across tabs, hid bottom navigation within chats for better immersion, fixed scrolling gradient issues, and added a wallet empty-state banner.
Swipe navigation & visual refinements
Introduced left/right swipe navigation between conversation tabs with a subtle slide animation for more intuitive navigation.
Enhanced message presentation:
Display usernames under display names.
Insert date separator bubbles.
Position timestamps more intelligently.
Adjust bubble corner radius for last messages in a sequence.
New Profile page
Added a Profile view that shows:
Telegram avatar, name, and username.
A (currently disabled) language selector entry.
Mobile “Add to Home Screen” option.
Custom emoji toggle.
A support link to t.me/spacesymmetry.
Added a Join Loyal channel card to user profiles to promote channel membership and unlock benefits like free transactions.
Add-to-home-screen reliability
Implemented an Android fallback for the add-to-home-screen flow to improve installation success where native Telegram behavior may differ.
Username safety warning
During send confirmation, the UI now shows a compact warning that recipient usernames are case-sensitive, reducing the risk of misdirected transfers.
Clickable recipients & navigation
Recipient “pills” in transaction views now open the recipient’s Telegram profile, simplifying verification and sharing.
iOS input and viewport fixes
Fixed a bug where the iOS cursor would jump when reopening the keyboard, keeping it at the end of the input for more predictable typing.
Prevented iOS viewport shifts during SendSheet step transitions by adjusting focus behavior, improving visual stability when entering amounts.
Connect Loyal Bot modal
Added a Connect Loyal Bot modal to the summaries page, including:
Step-by-step connection instructions.
A native Telegram button to copy the bot’s username.
Simplifies onboarding and ensures users can easily enable full bot functionality.
Wallet & summary improvements
Refined Telegram summary pages and wallet transaction sheets for clearer transaction detail presentation and smoother activity flows.
Added a wallet empty-state banner to guide users when no activity is present.
Analytics integration
Integrated Umami analytics across the app to track key flows (deposits, claims, bot interactions) and support data-driven improvements.
Testing & linting
Added targeted test suites (including gasless Telegram verification and initData storage).
Cleaned up lint errors (e.g., Telegram webhook route, Solana deposit sorting) and removed unused code for more stable builds and cleaner CI.
If you rely on gasless claims, Telegram sharing, or Solana deposits, these updates should provide a faster, clearer, and more reliable experience end-to-end.

We added NLP parsing and action selection so the input area can understand token-swap intents and surface action skills directly. This includes:
NLP parsing mode for input processing. (7263473)
NLP support for token-swap interactions. (aa4146d)
A new SkillsSelector component integrated into the input container, plus SkillsInput methods (addSkill, resetAndAddSkill) for programmatic control. (ab96b14)
This matters because you can trigger action flows (like swaps) from the same input surface with minimal context switching; the input can parse intent and expose appropriate actions directly.
Mobile and modal wallet experience improvements: wallet button always visible on mobile, clearer labels, and better modal/list item styling for small screens. (7ea1a49)
Users can change wallet selection even when a connection attempt is in progress: clicks are intercepted, pending connections are disconnected, and the wallet modal reopens reliably. (2fb6534)
Removed the Solflare adapter to avoid X-Frame-Options iframe crashes; Phantom and Coinbase adapters remain. Also removed Solflare-specific detection code. (c8ccaca)
This matters because connecting wallets is the foundation for all on-chain flows — clearer pickers and safer connection behavior reduce failed actions and confusion, especially on mobile.
Disabled expensive mouse tracking in GlowingEffect and stopped infinite Spotlight animations to reduce memory and CPU usage on the landing page. (3c41185)
Added @vercel/speed-insights to the layout to enable performance monitoring and measurement. (de943ca)
This matters because reduced runtime overhead and active monitoring help keep the site responsive for users and make it easier for the team to spot regressions.
Added a live status badge iframe to the site footer to surface service status (status.askloyal.com). Minor responsive layout tweaks to keep the badge aligned. (c37f2ab)
This matters because users and operators can quickly see service health without leaving the site.
Stack NLP skill “pills” vertically on small screens for better readability and spacing. (451091c)
Fix Roadmap mobile scrolling by adjusting touchAction from pan-x to pan-y so vertical page scrolling works while preserving horizontal swipes. (404c07e)
This matters because these layout fixes remove friction and accidental trapping of scroll gestures on small devices.
Skills selector integrated into the input area; second-row action button row for explicit action selection. (ab96b14)
Minor responsive and accessibility improvements across wallet and input components. (7ea1a49, 451091c)
Prevent infinite Spotlight animations and disable costly mouse tracking to reduce memory/CPU usage. (3c41185)
Allow changing wallet selection when disconnected (reliably disconnects pending attempts and reopens modal). (2fb6534)
Remove Solflare to avoid cross-origin iframe errors causing crashes. (c8ccaca)
Fix mobile Roadmap scrolling so vertical scroll is not blocked. (404c07e)
Action flows are easier to trigger from the input area — the UI now parses action intents (swap-related NLP) and presents explicit action controls so you can act faster.
Wallet flows are more robust on mobile and during connection attempts; fewer crashes or blocked states caused by embeds.
The site should be noticeably lighter on the landing page and we now have monitoring in place to measure performance gains.
Input/Skills changes: see SkillsSelector and SkillsInput updates. (ab96b14)
NLP parsing & swap support: see NLP commits. (7263473, aa4146d)
Wallet/mobile fixes: see wallet-related commits. (7ea1a49, 2fb6534, c8ccaca)
Performance & monitoring: see Speed Insights and animation/tracking fixes. (de943ca, 3c41185)

Send tokens directly from the chat composer so you can move funds without leaving the conversation. You choose the asset first, then the amount, and the flow validates SOL addresses and amounts in real time. The composer presents only assets you actually hold, and it guides you with clearer states during loading and confirmation. Explorer links appear after submission so you can view the transaction hash without digging through your wallet.
This matters because it turns an interrupt-heavy process into a quick action you can trust. You avoid invalid inputs, decimals are handled predictably, and address formatting is checked early. Available today on all plans. Open the chat composer and type / and select Send.
Swap one asset for another from the same place you write messages. You preview rates, approve the swap, and then open the transaction in an explorer from the confirmation state. The flow improves error handling so approval failures surface clearly, and the UI reflects loading and disabled states as the swap progresses.
This matters because you can rebalance holdings without breaking your focus. You get predictable behavior, clearer statuses, and a fast path to proof via explorer links. Available today on all plans. Open the chat composer and type / and select Swap.
Connect and manage your wallet with a cleaner modal, stronger validation, and better mobile handling. You see accurate titles and helpful affordances, and you can’t send messages until a wallet is connected. The redesign improves the wallet picker styling and prevents misleading empty states on mobile.
This matters because a reliable wallet experience underpins sending and swapping. The redesign reduces friction, clarifies next steps, and avoids accidental actions.
We migrate the frontend from react-md to Streamdown to simplify components and reduce UI overhead in chat. The result is a lighter, more consistent surface that renders faster and is easier to maintain.
View what’s shipped and what’s ahead with a new Roadmap and an About section built with Bento. Cards stay open when focused, and tabs let you scan sections quickly. The layout reorders navigation, adds a footer, and refines links for clearer wayfinding.
This matters because you can follow progress and understand the product direction at a glance. The pages use accessible patterns and minimal design so you can dig in without distraction.
Make the frontend repository public so you can review changes and contribute feedback more easily.
Add icons to Send and Swap so you can identify actions faster.
Link transaction hashes to the explorer so you can verify results in one click.
Improve the select wallet modal styling so you can connect with clearer visual affordances.
Introduce a mobile ticker so you can track key status information on small screens.
Authentication: Prevent messaging when no wallet is connected so you avoid failed actions and confusing drafts.
Frontend: Avoid setTimeout-based form submission so forms submit reliably without timing hacks.
Frontend: Check assets to present only sendable options so you pick from balances you hold.
Frontend: Change order to select asset before amount so you enter valid amounts against the chosen token.
General: Remove unreachable duplicate code to reduce bundle size and cognitive noise.
General: Refine money send flow inspired by task-style steps to make the process easier to follow.
General: Make the frontend repository public to increase transparency and external review.
General: Add chats history on Landing so you can return to previous conversations quickly.
Improvement: Address code review feedback across components to clarify naming, remove dead code, and improve readability.
Improvement: Add rel="noopener noreferrer" to external links so you reduce security risks when opening new tabs.
Improvement: Update submit buttons to reflect loading and disabled states so you avoid duplicate actions.
Improvement: Use epsilon-based float comparisons to avoid rounding edge cases in amount checks.
Improvement: Harden amount parsing and bounds checking so you can’t submit out-of-range values.
Improvement: Strengthen wallet address validation with stricter formatting and network checks.
Improvement: Remove console.log statements from production paths so logs stay clean.
Improvement: Optimize useMemo dependencies to prevent unnecessary re-renders in components with derived state.
Improvement: Normalize useMemo keys across hooks to reduce redundant renders in complex forms.
Interface: Use real timestamps or hide placeholders to avoid misleading date displays.
Interface: Link transaction hashes to the explorer so you can verify transactions in one click.
Interface: Add icons to Send and Swap for faster visual scanning.
Interface: Style the select wallet modal for clearer options and better focus handling.
Interface: Keep roadmap cards open when focused to improve keyboard navigation.
Interface: Rework links for consistent styling and predictable behavior.
Interface: Add a site footer with essential links.
Interface: Add tabs for Bento to organize About content.
Interface: Move testers into a pill component to declutter the layout.
Interface: Reorder the menu for clearer navigation.
Interface: Add Bento as the About page to centralize product context.
Interface: Layout refinements (verstka) for spacing, alignment, and typography.
Interface: Landing: add chevron to Send, show timestamps, and relocate copy for clearer hierarchy.
Interface: Landing: name chats by the first sentence to improve scanning.
Interface: Landing: add a control for creating new chats.
Interface: Landing: add a warning modal for risky actions.
Interface: Landing: textarea grows with content instead of scrolling.
Interface: Landing: add message controls like Copy.
Interface: Landing: update the Send icon for consistency.
Interface: Landing: focus the textarea on entry to reduce clicks.
Mobile: Add a mobile ticker to surface status information on small screens.
Performance: Improve memoization beyond shallow comparisons to reduce unnecessary renders.
Performance: Guard drag gesture handling to avoid race conditions under rapid input.
Performance: Replace hardcoded decimal logic with data-driven precision handling.
Bug: Apply refs to all cards instead of only the first so keyboard and focus behavior remain consistent.
Bug: Add error handling to swap approval so failed approvals surface cleanly.
Bug: Deduplicate error messages so you see each issue only once.
Bug: Fix textarea auto-resize between Send and Swap steps so inputs stay visible.
Bug: Replace magic numbers in dropdown positioning so menus align across viewports.
Bug: Correct Bento tab selected state so the active tab reflects the current view.
Bug: Fix a variable name typo to prevent confusing labels and potential runtime issues.
Bug: Prevent an empty wallet element on mobile when no wallet is selected.
Bug: Align type definitions with rendered elements to avoid UI mismatches.
Bug: Resolve Safari-specific layout and interaction issues.
Bug: Update amount pattern to include the LOYAL token so valid inputs are accepted.
Bug: Add error handling for localStorage access to avoid failures in restricted environments.
Bug: Validate decimal points in amount input to prevent malformed values.
Bug: Fix incorrect ref type passed to SkillDropdown so focus and opening work reliably.
Bug: Stop the frontend from attempting to connect to local devices during Solana transactions.
Bug: Correct the connect wallet title on mobile.
General: Allow conversations to continue after a network reconnection so drafts aren’t lost.
Interface: Fix the desktop menu so navigation works consistently.
Interface: Resolve desktop scrolling issues for smoother navigation.
Interface: Correct a landing page typo.
Interface: Landing: multiple scroll fixes to stabilize message lists.
Mobile: Fix the wallet connection popup button and background on mobile.
Mobile: Correct a mobile title display issue.
Performance: Eliminate a potential infinite loop between detectSlash and recipient suggestions that could freeze the UI.
Performance: Clean up a reInit event listener to fix a memory leak.
Performance: Stop an infinite effect loop caused by a retryCount dependency.
Textarea with >3 rows may cover landing page hero section content.
Roadmap section may prevent scrolling page on mobile.
Wallet connect button on mobile is not active and does not allow for wallet switching.