Chisle
The coding-agent plugin that bills 52% of a bare model across 20 live tasks. Terse persona + tool-output compressor + context diet.
翻訳待ち
No updates detected yet. GitHub releases will appear here.
Strait SDK for Capacitor and Ionic: deep links, deferred deep links and link-open analytics (wraps the native Android and iOS SDKs).
翻訳待ち
Loading the full README.
Read the full README ↗@straitlink/capacitor gives a Capacitor 8 app (Ionic, Vue, React, Angular or plain JS) direct
links (App Links, Universal Links, custom schemes), deferred links that survive the install, and
link-open analytics. It wraps the Strait Android
and iOS SDKs, and its API matches
@straitlink/react-native.
There's no strait init for Capacitor yet: the three steps below are the whole setup. Or let your AI coding tool do it: connect the Strait MCP server and run its get_started prompt with platform capacitor; it pastes the exact setup from the docs. Then check that your link domain lists your app:
npx @straitlink/cli doctor --host <your-handle>.strait.link --android <your.package> --ios <your.bundle.id>
You need: a Capacitor 8 app with android/ and/or ios/ added, and from
Dashboard → Get started your publishable key (st_pub_live_…) and link domain
(https://<your-handle>.strait.link).
Android builds of a Capacitor 8 app need JDK 21 (Capacitor's own requirement; with JDK 17 the
Gradle build fails). Android Studio's bundled JDK is 21; on the command line check java -version.
1. Install and sync
npm install @straitlink/capacitor
npx cap sync
2. Start it when your app starts (for example in main.ts)
import { createStrait } from '@straitlink/capacitor';
const strait = createStrait({
publishableKey: 'st_pub_live_…', // safe in apps; never the secret key
endpoint: 'https://<your-handle>.strait.link',
});
strait.onLink((e) => {
console.log('Strait link:', e.kind, e.route, e.matched, e.path);
if (e.matched && e.path) router.push({ path: e.path, query: e.params }); // your router
});
strait.start();
3. Let the app claim your link domain
Android, android/app/src/main/AndroidManifest.xml, inside the main <activity>:
<intent-filter android:autoVerify="true">
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:scheme="https" android:host="<your-handle>.strait.link" />
</intent-filter>
iOS, Xcode → App target → Signing & Capabilities → + Associated Domains →
applinks:<your-handle>.strait.link.
In Dashboard → Settings → App: your Android package name + signing SHA-256, and your
Apple Team ID + bundle ID. Strait then serves assetlinks.json and the
apple-app-site-association file for you.
You should see: run the app on a phone or emulator, then open one of your links:
adb shell am start -a android.intent.action.VIEW -d "https://<your-handle>.strait.link/<code>"
xcrun simctl openurl booted "https://<your-handle>.strait.link/<code>"
The app opens on the link's screen and the console prints
Strait link: direct app_link true /p/42 (your path). The open shows up in the dashboard's
Analytics within a minute. On a fresh install the first launch prints a deferred event instead.
In a debug build, after start():
const report = await strait.doctor();
for (const f of report.findings) console.log(f.severity, f.id, f.title, f.fix);
You should see ok key.ok, ok app.listed and, on Android, ok cert.listed. Anything marked
error comes with the fix, for example cert.missing: "Add AB:CD:… in Dashboard → Apps & stores.
Debug, release and Play App Signing keys each have their own fingerprint."
If your app asks for consent first (for example under India's DPDP Act or a GDPR consent flow in the EU), call await strait.setEnabled(false) until the person agrees: Strait then sends no open reports or events, does no install matching, and deletes reports waiting on the device (and the install tap behind the day 1 / 7 / 30 "came back" notes, which then never resume). The choice is kept across launches on the phone; setEnabled(true) turns it back on (default: on) and isEnabled() reads it. It works before start(), so a first-launch consent screen can call it first; setEnabled(true) then runs the deferred check.
Links that carry their own destination still open your screens. A Strait short link is looked up through the engine's /v1/lookup, which records nothing (no tap, no open, no tap id), so it still opens the right screen; only if that lookup fails (offline) does it come back matched: false, reason: 'disabled'. Whether you need consent, and for what, is a question for your own legal advice.
| Feature | Status | Notes |
|---|---|---|
| Android: direct links and deferred links | ● Live | Deferred = exact match through the Play Install Referrer (read for you). |
| iPhone links (Universal Links, custom schemes) | ● Live | Through Capacitor's AppDelegate / SceneDelegate proxy: no extra code. |
| iPhone: install matching (deferred links) | Opt-in | Your choice in Dashboard → Settings → iPhone installs, read at runtime. See the iOS SDK. |
| iOS with CocoaPods | – Not yet | Swift Package Manager only (the Capacitor 8 default for new apps). |
| Web | – | Every call resolves a safe default; use @straitlink/web for websites. |
| Published on npm | ● Live | npm install @straitlink/capacitor |
● Live · Opt-in: off until you switch it on · – Not yet. The same words as the platform status page.
This is the beginning of the README. Read the rest at the original. Read the full README ↗