npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@trytilde/chat-ui

v3.1.1

Published

Embeddable native Tilde conversations, extracted from Dispatch's composer and markdown presentation. Includes paginated history, live updates with reconnect/replay, replies, copying, markdown/code, attachments, typing, stop/resume, queue remove/reorder/st

Downloads

532

Readme

@trytilde/chat-ui

Embeddable native Tilde conversations, extracted from Dispatch's composer and markdown presentation. Includes paginated history, live updates with reconnect/replay, replies, copying, markdown/code, attachments, typing, stop/resume, queue remove/reorder/steer, session creation, search, rename and per-identity read/unread state. Desktop, routines and workspace administration remain outside this package.

'use client';
import { useState } from 'react';
import { Chat, ListSessions } from '@trytilde/chat-ui';
import '@trytilde/chat-ui/style.css';

export function Conversations({ userId }: { userId: string }) {
  const [selected, select] = useState<{ sessionId: string; agentId: string }>();
  return (
    <div style={{ display: 'grid', gridTemplateColumns: '280px 1fr', height: '80vh' }}>
      <ListSessions identity={userId} proxy="/api/chat"
        selectedSessionId={selected?.sessionId} selectedAgentId={selected?.agentId}
        onSelectSession={(sessionId, agentId) => select({ sessionId, agentId })} />
      {selected && <Chat {...selected} identity={userId} proxy="/api/chat" />}
    </div>
  );
}

identity is a stable UI/cache identity, not authorization. The server proxy independently resolves the authenticated user. Change this prop when signing in as another user; unmount the components on sign-out. Chat.agentId is optional for a single-agent proxy; supplying it avoids discovery requests for a multi-agent sidebar.

The components own requests and clean up subscriptions and attachment object URLs on unmount. Mutations invalidate mounted sidebars sharing the proxy and identity; background sidebar refresh also observes other tabs. CSS is scoped to .tilde-chat and does not reset the host page. Its --tc-bg, --tc-ink, --tc-muted, --tc-line, and --tc-accent variables may be overridden. Give Chat a bounded height for history scrolling. React 19 is a peer dependency. No router, API key or Next.js dependency is required in the browser.

Use @trytilde/chat-next for Next.js routes or @trytilde/chat-proxy with any Web Request/Response server. Builds run via task build:chat. Dispatch-derived files retain their MIT attribution in LICENSE.dispatch.

Recorded transcripts

Read-only transcript presentation using the original Dispatch components: ConversationMessage, ToolChipsBlock, TraceBlock, and its Markdown/code renderer. Sources: trytilde/dispatch commit 2ecb27d, packages/ui/src/chat-components.tsx, beautiful-ui/blocks/{tool-chips-block,trace-block}.tsx, markdown-components.tsx, and the matching chat/palette rules from openbot-ui.css and beautiful-ui/upstream/globals.css. See LICENSE.dispatch and LICENSE.beautiful-ui.

The tool-chip and reasoning primitives retain their original component implementations. Message rendering adds optional trace-source navigation and a formatted timestamp label. Chat CSS is scoped to .tilde-chat; the existing Dispatch palette, message geometry, markdown rules and Tailwind utility tokens are preserved within that surface. Transcript adapts recorded entries into these components, groups contiguous execution activity, and includes full captured tool input/output instead of a shortened preview. It never opens live chat subscriptions, sends messages, or fetches markdown images.

Import Transcript and @trytilde/chat-ui/style.css. The stylesheet uses Tailwind 4 and includes a source directive for the component classes. Build with task build:chat-ui. Chat and ListSessions are the live clients in this same package.