{"id":"paseo-feishu-ui","repo":"Laokashouji/paseo-feishu-ui","url":"https://github.com/Laokashouji/paseo-feishu-ui","name":"paseo-feishu-ui","description":"Feishu themes and desktop skin for Paseo 0.8; native mobile palette support","categories":["theme"],"platforms":["macos"],"caveats":["Requires Paseo 0.8.x on both the app and daemon; install on every conversation host for thinking previews.","Full skin uses a version-specific desktop/web DOM adapter; official iOS and Android receive theme colors only.","UI labels are Chinese. Windows and Linux desktop have not been tested.","Gallery images are fictional design references, not app screenshots."],"images":["https://raw.githubusercontent.com/Laokashouji/paseo-feishu-ui/c50f96b01bdb1ffe39b1f87af512d48b482ac618/images/design-reference-dark.png","https://raw.githubusercontent.com/Laokashouji/paseo-feishu-ui/c50f96b01bdb1ffe39b1f87af512d48b482ac618/images/design-reference-light.png"],"health":{"manifestValid":true,"hasReadme":true,"hasLicense":true,"hasTests":true,"hasTypecheckScript":true,"updatedRecently":true},"scannedAt":"2026-09-14T08:28:56.471Z","addedAt":"2026-09-14T11:26:15+03:00","version":"0.3.2","security":{"status":"passed","blockingFindings":0,"advisoryFindings":0,"scannedAt":"2026-09-14T08:27:38.731Z","commit":"c50f96b01bdb1ffe39b1f87af512d48b482ac618"},"license":"MIT","paseoVersionRequirement":">=0.8.0 <0.9.0","manifest":{"id":"paseo-feishu-ui","requirements":{"paseo":">=0.8.0 <0.9.0"}},"repoMeta":{"stars":0,"defaultBranch":"main","pushedAt":"2026-09-14T06:43:38Z"},"owner":{"login":"Laokashouji","avatarUrl":"https://avatars.githubusercontent.com/u/63091032?v=4"},"installNotesHtml":"<p>Requires <strong>Paseo 0.8.x on both the app and daemon</strong>. The plugin manifest accepts <code>>=0.8.0 &#x3C;0.9.0</code>; older and newer major API revisions are not supported.</p>\n<pre><code class=\"language-sh\">paseo plugin install Laokashouji/paseo-feishu-ui --ref main\n</code></pre>\n<p>Select <strong>飞书 · 浅色</strong> (light) or <strong>飞书 · 暗黑</strong> (dark) in Settings → Appearance. Install on every daemon whose conversations should receive thinking previews; timeline contributions belong to the conversation's host.</p>\n<pre><code class=\"language-sh\">paseo plugin update paseo-feishu-ui\npaseo plugin disable paseo-feishu-ui\npaseo plugin enable paseo-feishu-ui\npaseo plugin remove paseo-feishu-ui\n</code></pre>\n<p>Git pushes do not automatically update installed copies. For local source development, run <code>paseo plugin reload paseo-feishu-ui</code> after changes; no daemon restart is needed.</p>","readmeText":"# Paseo Feishu UI\n\nEnglish | [简体中文](README.zh-CN.md)\n\nFeishu-inspired light and dark themes for [Paseo](https://paseo.sh), with a desktop workspace layout, continuous assistant bubbles, compact tool cards, and first-line thinking previews.\n\nAn independent community project. It is not affiliated with Feishu/Lark, ByteDance, or the Paseo maintainers, and does not integrate with Feishu services.\n\n## Install\n\nRequires **Paseo 0.8.x on both the app and daemon**. The plugin manifest accepts `>=0.8.0 <0.9.0`; older and newer major API revisions are not supported.\n\n```sh\npaseo plugin install Laokashouji/paseo-feishu-ui --ref main\n```\n\nSelect **飞书 · 浅色** (light) or **飞书 · 暗黑** (dark) in Settings → Appearance. Install on every daemon whose conversations should receive thinking previews; timeline contributions belong to the conversation's host.\n\n```sh\npaseo plugin update paseo-feishu-ui\npaseo plugin disable paseo-feishu-ui\npaseo plugin enable paseo-feishu-ui\npaseo plugin remove paseo-feishu-ui\n```\n\nGit pushes do not automatically update installed copies. For local source development, run `paseo plugin reload paseo-feishu-ui` after changes; no daemon restart is needed.\n\n## Features\n\n- Light/dark palettes selected through native Appearance settings.\n- Responsive desktop navigation, workspace groups, native workspace list, and a separated chat pane.\n- A continuous visual bubble for adjacent thinking, tool, and assistant body rows, with one avatar gutter. Native rows retain their identity and virtualization.\n- Command cards show the first command line. Thinking cards show the first nonempty line of text exposed by the provider, with expand/collapse and full-text copy.\n- Read, Edit and Write cards show the native icon and path on one line, with ellipsis for long paths. The action name stays accessible to screen readers; missing paths keep the heading.\n- Native tool details, file actions, permissions, attachments, composer and agent execution remain owned by Paseo.\n- Exact theme gating and shared adapter cleanup across connected hosts.\n\n## Platform support and limitations\n\n| Client | Support |\n| --- | --- |\n| macOS desktop, Paseo 0.8.0 | Layout, bubbles, thinking/tool cards; exercised in the installed app |\n| Browser | DOM adapter and compact layouts; Chrome fixture tests at 1342px and 390px |\n| Official iOS / Android | **Theme colors only**; native bubbles, tools and thinking are unchanged |\n| Windows / Linux desktop | Not tested |\n\nThe desktop adapter depends on version-specific Paseo DOM structure. It is not a public host styling API; verify it after a Paseo upgrade. The UI labels are currently Chinese.\n\nNative mobile appearance requires additional upstream APIs: [compatibility details](docs/native-mobile-support.md), [upstream request #4697](https://github.com/getpaseo/paseo/issues/4697). The mobile HTML prototype in `design/` is a design reference, not an implemented iOS feature.\n\nThinking previews use only provider-exposed text; the plugin cannot make a provider disclose otherwise unavailable reasoning. Switching away from the Feishu theme restores native reasoning and resets that row's expansion state. Tool status is inferred from native visual state; idle calls show a neutral details hint because the DOM cannot reliably distinguish completed from canceled calls.\n\n## Preview\n\nThese are **design references with fictional data**, not captures of a user's conversations. The implementation preserves native controls and differs in some details; the current thinking and command headings show first-line content.\n\n![Dark desktop design reference](images/design-reference-dark.png)\n![Light desktop design reference](images/design-reference-light.png)\n\n[Interactive design](design/index.html) · [Thinking/tool design](design/thinking-tools/index.html)\n\n## Data access\n\nThe plugin is client-only: no server entry, extra network connection, telemetry, credentials, model requests or workspace-file access. It reads Paseo's local appearance preference and rendered transcript structure to apply styles. The public reasoning transformer receives provider-exposed thought text; copy buttons write that text to the clipboard only when clicked. Dependencies are public npm packages, and `package-lock.json` uses `registry.npmjs.org` exclusively.\n\nPaseo plugins execute trusted code inside the app. Inspect [the adapter contract](docs/desktop-adapter.md) and [the publication audit](docs/publication-audit.md) for the exact boundaries.\n\n## Development\n\nNode.js 20.19.4+ and npm:\n\n```sh\nnpm ci --registry=https://registry.npmjs.org\nnpm run typecheck\nnpm test\nnpm run test:browser\n```\n\nBrowser tests require an installed Chrome; set `CHROME_PATH=/path/to/chrome` outside the default macOS path. Tests use fictional RNW-shaped content and do not count as iPhone verification. See [verification](docs/verification.md) for native checks and coverage limits. The historical `message-grouping.browser.js` check is superseded by `response-bubble.browser.js` for shared bubbles.\n\n`index.client.tsx` registers themes and settings. `client/web.ts` isolates browser integration and lifecycle cleanup. `client/thinking.tsx` renders exposed reasoning only while the web adapter's exact theme gate is active. Native iOS/Android exit before browser integration or reasoning replacement.\n\n## License\n\n[MIT](LICENSE). Product names belong to their respective owners.\n"}