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

@xlaunch/client-ui-open-in-app

v0.2.0-beta.1

Published

Web Session-header "Open In..." split button opening the session workspace directory in a locally installed application

Readme


description: "Web Session-header "Open In..." split button: launches the remembered application on the session workspace directory and lists every application the host probed as installed." kind: "package-reference"

@xlaunch/client-ui-open-in-app

Summary

This package provides the browser surface of the open-in-app feature: a Session-header split button whose main button opens the current session's workspace directory (the summary's cwd) in the remembered application, and whose chevron lists every catalog application the host probed as installed. Availability, icons, and launches come from the host routes of xlaunch-host-open-in-app; mount the two packages together. A session without a workspace directory, or a host where nothing nameable is installed, renders no button at all.

Table of Contents


Use this package

Mount this plugin in the Web composition beside xlaunch-host-open-in-app; the pair composes the whole feature in two cordis.yml rows and this row takes no config. The Session header grows an "Open In..." split button whenever the host probed at least one installed catalog application and the session has a known workspace directory.

What to expect

The main button shows the remembered application's icon — the real application icon wherever the host extracts one (macOS bundle icons, Windows executable icons, Linux theme icons), a generic glyph where it serves none — and a design-system tooltip ("Open locally"); clicking launches immediately. The chevron opens a dense menu of the installed applications with the remembered one marked by a filled row. Availability is read once per page from the host; the last chosen application persists in the browser (xlaunch.open-in-app.choice), and a choice that is no longer installed falls back to the first available entry. A launch that finishes quickly leaves the button untouched — the dimmed busy treatment appears only after 250 ms in flight — and a failed launch shows the error tooltip and a red outline for two seconds. All copy lives in the bilingual open-in-app locale namespace; an application id the dictionaries cannot name is not offered.


Understand the implementation

The plugin registers the split button on conversation.session.header.utilities through the standard slot/inject currency and registers the open-in-app dictionaries as one effect. A page-lifetime controller (src/client/controller.ts) owns the once-per-page availability read, the persisted choice snapshot store, and the launch POST; the component receives both stores through the inject hooks compartment, so every Session header shares one truth. Route paths and wire payload types are inlined from the host package's browser-safe @xlaunch/host-open-in-app/shared subpath. In-flight launches are guarded by a ref — repeat clicks and menu picks during a launch are ignored whole (a pick would otherwise persist a choice the gesture never opened) — and the busy/error dress is timer-driven around the launch promise. The node half is an empty apply that keeps the plugin on the host roster.


Further Exploration


Model Experience

None, as the split button is browser chrome; nothing here reaches a model request.

KV Cache effect

None; this package neither assembles nor sends a provider request.

Known Limitations and Deferred Work

  • The dictionaries gate the menu. A host catalog extension without a matching app.<id> entry in both dictionaries stays invisible instead of showing a raw id; extending the catalog means extending xlaunch-host-open-in-app and this package's locales together.
  • Availability is read once per page. An application installed while the page is open appears after a reload (and, host-side, after a host restart).

Dev Note

The feature-level decisions, including the split into the host package and this surface, are recorded in the promotion Agent Note.

Runtime invariant: No companion is published. The plugin registers one dictionary effect and one header-slot entry whose disposal the HMR-safety spec proves; availability and choice live in the controller's snapshot stores with no second copy to diverge.