メインコンテンツへスキップ
R

dsh-pwa-plugin

raullazaro/dsh-pwa-plugin

DSH 用 PWA プラグイン — オフライン対応、サービスワーカーのキャッシュ、アプリとしてのインストール機能を追加。

インストール

dsh plugin --profile web add github:raullazaro/dsh-pwa-plugin

README

DSH PWA Plugin

PWA plugin for DeepSeek Harness that adds offline support and install-as-app capability.

Features

  • Service Worker with smart caching strategy
  • PWA Manifest with proper maskable icons
  • Automatic updates — silently activates new versions
  • Offline-first for static assets
  • Official DSH whale icon — derived from the upstream SVG favicon

Installation

1. Add as a dependency

In your DSH web profile's package.json:

{
  "dependencies": {
    "dsh-pwa-plugin": "file:~/workspace/dsh-pwa-plugin"
  }
}

2. Register the plugin

In your profile's cordis.patch.yml:

- insert:
    - id: dsh-pwa
      name: 'dsh-pwa-plugin'

3. Restart DSH

dsh web

Generate PNG Icons

The plugin ships pre-built PNG icons. To regenerate (requires sharp):

cd dsh-pwa-plugin
node scripts/generate-icons.js

This reads the official public/favicon.svg and produces:

FileSizePurpose
icon-192.png192×192Regular (any)
icon-192-maskable.png192×192Maskable (20% safe zone)
icon-512.png512×512Regular (any)
icon-512-maskable.png512×512Maskable (20% safe zone)

How It Works

  1. The host plugin serves /sw.js, /manifest.webmanifest, and icon files
  2. It injects a service worker registration script into the HTML
  3. The service worker caches static assets (including icons) for offline use
  4. The manifest enables installing the app as a PWA
  5. Updates are detected automatically and silently activated
  6. DSH's built-in /favicon.svg is used as-is (not overridden)

Caching Strategy

Resource TypeStrategyDescription
HTMLNetwork-firstAlways tries to fetch the latest version
JS/CSS/Fonts/ImagesCache-firstServes from cache if available
API callsNot cachedAlways goes to the network

Limitations

  • Requires HTTPS to work (except localhost)
  • Service worker cannot cache API calls
  • Updates require a page reload (automatic after detection)

Project Structure

dsh-pwa-plugin/
├── src/
│   ├── host/
│   │   └── index.js          # Host plugin (Node.js)
│   └── sw.js                 # Service Worker
├── public/
│   ├── manifest.webmanifest  # PWA Manifest
│   ├── favicon.svg           # DSH whale icon (same as upstream)
│   └── icons/                # PWA icons (maskable + regular)
├── scripts/
│   ├── generate-icons.js     # Icon generator (sharp)
│   ├── install.js            # Verification script
│   └── verify.js             # Verification
├── cordis.patch.yml          # Plugin registration
├── LICENSE
└── package.json

License

MIT

関連プラグイン