بنقرة واحدة
tauri-debugger
ARCHIVED — Tauri has been replaced by Electron. This skill is no longer active.
التثبيت باستخدام Codex أو Claude انسخ هذا Prompt والصقه في Codex أو Claude أو مساعد آخر ليراجع صفحة Skill ويثبّتها لك.
القائمة
ARCHIVED — Tauri has been replaced by Electron. This skill is no longer active.
التثبيت باستخدام Codex أو Claude انسخ هذا Prompt والصقه في Codex أو Claude أو مساعد آخر ليراجع صفحة Skill ويثبّتها لك.
استنادا إلى تصنيف SOC المهني
FlowState-safe auto-router for selected Superpowers workflows. Use at the start of bugs, fixes, behavior changes, reviews, planning, and completion checks to choose the relevant superpowers-* support skill without overriding FlowState rules.
FlowState-local Superpowers support skill for evaluating code-review feedback before implementing it. Existing FlowState rules remain authoritative.
FlowState-local Superpowers support skill for requesting focused review on substantial work. Existing FlowState rules remain authoritative.
FlowState-local Superpowers support skill for root-cause debugging bugs, test failures, and unexpected behavior. Existing FlowState rules remain authoritative.
FlowState-local Superpowers support skill for adding focused regression tests before feature or bugfix implementation. Existing FlowState rules remain authoritative.
FlowState-local Superpowers support skill for evidence-based completion checks before claiming work is complete. Existing FlowState rules remain authoritative.
| name | tauri-debugger |
| description | ARCHIVED — Tauri has been replaced by Electron. This skill is no longer active. |
ARCHIVED: Tauri has been replaced by Electron. This skill is no longer active. For Electron desktop app work, use the
electronskill instead. Historical reference kept below for context.
Debug Tauri 2.x desktop app issues including dialogs, CSP, plugins, and Vite integration.
virtual:pwa-register errors// vite.config.ts should have:
const isTauri =
process.env.TAURI_ENV_PLATFORM !== undefined || // Build
process.env.TAURI_DEV !== undefined // Dev
// tauri.conf.json must set TAURI_DEV in dev:
"beforeDevCommand": "TAURI_DEV=true npm run dev"
# Portal service running?
systemctl --user status xdg-desktop-portal
# zenity installed (fallback)?
which zenity || echo "INSTALL: sudo apt install zenity"
# FileChooser portal working?
gdbus call --session \
--dest org.freedesktop.portal.Desktop \
--object-path /org/freedesktop/portal/desktop \
--method org.freedesktop.DBus.Properties.Get \
org.freedesktop.portal.FileChooser version
WRONG (causes CSP errors):
!isTauri && VitePWA({ ... }) // No stub modules provided!
CORRECT:
VitePWA({
disable: isTauri, // Provides empty stub modules
...
})
# For Linux with XDG Portal support:
tauri-plugin-dialog = { version = "2.6", default-features = false, features = ["xdg-portal"] }
# NOTE: Can't enable both gtk3 AND xdg-portal - they conflict!
{
"permissions": [
"dialog:default",
"dialog:allow-save",
"dialog:allow-open",
"fs:default",
{
"identifier": "fs:allow-write-text-file",
"allow": [
{ "path": "$DOWNLOAD/**" },
{ "path": "$HOME/**" }
]
}
]
}
virtual:pwa-register/vueSymptoms:
Root Cause: PWA plugin conditionally excluded but import statements still exist in code. No stub modules provided.
Solution:
// vite.config.ts
VitePWA({
disable: isTauri, // This provides empty stub modules
...
})
isTauri is false during tauri devSymptoms:
Root Cause: TAURI_ENV_PLATFORM only set during tauri build, not tauri dev.
Solution:
// tauri.conf.json
{
"build": {
"beforeDevCommand": "TAURI_DEV=true npm run dev"
}
}
Symptoms:
dialog.save() returns immediately with no dialogChecklist:
sudo apt install zenitysystemctl --user status xdg-desktop-portalSymptoms:
blocking_save_file()Root Cause: Blocking API can't acquire GTK MainContext from certain threads.
Solution: Use async API instead:
#[tauri::command(async)]
async fn save_file(app: AppHandle) -> Option<PathBuf> {
app.dialog()
.file()
.save_file()
.await
.map(|p| p.into_path())
.flatten()
}
| File | Purpose |
|---|---|
vite.config.ts | Tauri detection, PWA disable |
src-tauri/tauri.conf.json | beforeDevCommand, CSP, devUrl |
src-tauri/Cargo.toml | Plugin versions and features |
src-tauri/capabilities/default.json | Permissions for dialogs, fs |
src-tauri/src/lib.rs | Rust commands |
| Package | Minimum Version | Notes |
|---|---|---|
@tauri-apps/plugin-dialog | 2.6.0 | XDG Portal support |
@tauri-apps/plugin-fs | 2.4.5 | Better error messages |
tauri-plugin-dialog (Rust) | 2.6 | xdg-portal feature |
zenity (Linux) | any | Fallback dialog renderer |
WebKitGTK bugs only appear in Tauri — NOT in Chrome/Firefox/Safari. Deploying fixes without testing in WebKitGTK leads to wasted build cycles. Use these testing methods:
Uses the exact same engine as Tauri's wry (libwebkit2gtk-4.1). Injects .tauri-app class for CSS parity.
# Start Vite on port 6366
npx vite --port 6366 &
# Open WebKitGTK 4.1 window with Tauri CSS parity
python3 scripts/webkit-dev.py
tauri:// protocol bugs (uses http://localhost)# Terminal 1: Start Vite manually
TAURI_DEV=true npm run dev
# Terminal 2: Run Tauri (skip beforeDevCommand)
cargo tauri dev --no-dev-server-wait
Epiphany uses WebKitGTK 6.0 (GTK4), Tauri uses WebKitGTK 4.1 (GTK3). Different rendering behavior. DO NOT rely on Epiphany for Tauri bug reproduction.
| Issue Type | Python Wrapper | cargo tauri dev | Production Build |
|---|---|---|---|
| CSS layout/clipping | ✅ | ✅ | ✅ |
CSS with .tauri-app overrides | ✅ (injected) | ✅ | ✅ |
| CSP blocking styles | ❌ | ❌ (no CSP in dev) | ✅ only |
tauri:// protocol issues | ❌ | ❌ | ✅ only |
| NPopover/dropdown visibility | ✅ | ✅ | may differ (CSP) |
cargo tauri dev): Loads from http://localhost:5546 — no CSP nonce injectioncargo tauri build): Loads from tauri://localhost/ — CSP nonces added to all <style> tags at compile time<style> tags (from CSS-in-JS like Naive UI's css-render) get silently blocked in productionNaive UI uses css-render which injects <style> tags at runtime via document.head.appendChild(). In Tauri production builds, the CSP nonce system blocks these runtime-injected styles because they lack the compile-time nonce. This makes components like NPopover, NDropdown, NSelect invisible (DOM exists but has zero styling).
// src-tauri/tauri.conf.json → app.security
{
"dangerousDisableAssetCspModification": ["style-src"],
"csp": {
"style-src": "'self' 'unsafe-inline' https://fonts.googleapis.com",
...
}
}
dangerousDisableAssetCspModification: ["style-src"] tells Tauri NOT to add nonces to style-src, so 'unsafe-inline' actually works for css-render's runtime style injection.
Reference: Tauri Discussion #8578
Build with devtools enabled to see CSP violation errors:
cargo tauri build --debug
# Then right-click → Inspect → Console
# Look for: "Refused to apply inline style because it violates..."
raw prop is fine — strips Naive UI wrapper, uses custom stylingto="body" teleport works correctly with CSP fixraw is missing (Naive UI wrapper adds its own background/shadow)| Issue | Cause | Fix |
|---|---|---|
| Sidebar items 24px wide | contain: layout on parent | Remove layout from contain |
overflow: clip hides content | Not supported in WebKitGTK | Use overflow: hidden + /* WebKitGTK-safe */ |
display: inline-flex collapses in flex chains | WebKitGTK sizes to intrinsic content | Use display: flex; width: 100% |
| Fonts show as "serif" | False positive in test — "sans-serif" contains "serif" | Use regex /(?<![a-z-])serif/ |
Nested <button> breaks clicks | Invalid HTML per spec | Use <span role="button" tabindex="0"> |
supabase-debugger - For Supabase connection issues in Tauridev-debugging - General Vue/Pinia debuggingtauri - Build, sign, deploy pipeline