Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
40 commits
Select commit Hold shift + click to select a range
0141932
Merge pull request #161 from mi-examples/develop
sergak01 Jun 8, 2026
024405f
ci(release): switch npm publish to OIDC trusted publishing
sergak01 Jun 8, 2026
71bb205
Merge pull request #162 from mi-examples/pp-3487
sergak01 Jun 8, 2026
e5a370a
Merge pull request #172 from mi-examples/develop
sergak01 Jun 18, 2026
2c03ccc
docs: rename app.kind β†’ app.type, build.images β†’ build.imageOptimisat…
sergak01 Jun 19, 2026
222b4e5
feat: v1.0 grouped PPDevConfig schema, defineConfig helper, pp-dev mi…
sergak01 Jun 22, 2026
a0a30a5
feat(ui): PP-3440 MI brand redesign β€” colors, Inter font, SVG type icons
sergak01 Jun 22, 2026
9fed619
chore: v1.0.0 release prep β€” CHANGELOG, README, version, Node 24+, te…
sergak01 Jun 22, 2026
d49273b
test(e2e): add server lifecycle E2E suite with VCR-style mock MI infr…
sergak01 Jun 22, 2026
79ca61e
fix(e2e): use taskkill /T /F on Windows to kill pp-dev process tree
sergak01 Jun 23, 2026
d4c8a10
fix(security): patch npm/node-gyp undici <=6.26.0 high-severity CVEs
sergak01 Jun 23, 2026
d03bd5e
fix(security): pin undici to ^7.28.0 to fix CVEs without breaking jsdom
sergak01 Jun 23, 2026
9ed1320
fix(ui): align panel bar with Figma spec (PP-3449)
sergak01 Jun 24, 2026
d9466b0
fix(build): run rollup-plugin-dts in child process to prevent Windows…
sergak01 Jun 24, 2026
1fc4700
chore: add .mcp.json for MCP server configuration
sergak01 Jun 24, 2026
ad0b033
fix(mock-mi): fix broken regex and Windows-incompatible spawn in reco…
sergak01 Jun 24, 2026
f64f835
fix(mock-mi): fix TypeScript errors in mock-mi server and record scripts
sergak01 Jun 24, 2026
b538640
fix(mock-mi): fix remaining TS errors in server.ts
sergak01 Jun 24, 2026
c6ee828
fix(mock-mi): store binary responses as base64 in cassettes
sergak01 Jun 24, 2026
74c3142
feat(mock-mi): add PAT support and template API fetch to record-auto
sergak01 Jun 24, 2026
e53fa90
feat(inspector): add Request Inspector with web UI and REST API
sergak01 Jun 24, 2026
9222397
feat(inspector): print inspector URL banner to browser DevTools console
sergak01 Jun 24, 2026
14ab407
chore(lint): add ESLint with curly-brace and blank-line rules; apply …
sergak01 Jun 24, 2026
1a4a640
docs: document Request Inspector in README
sergak01 Jun 24, 2026
6bd468d
ci: cache Playwright browsers between runs
sergak01 Jun 25, 2026
f9a0cbb
ci: skip install-deps on Playwright cache hit
sergak01 Jun 25, 2026
263e7b5
ci: add 10-minute timeout to Playwright install step
sergak01 Jun 25, 2026
f5b234f
ci: fix Playwright install hang on ubuntu-latest (needrestart)
sergak01 Jun 25, 2026
d4f023d
ci: free disk space before Playwright install, add job timeout
sergak01 Jun 25, 2026
a14bd69
ci(deps): resolve CI audit on Node 24
sergak01 Jun 30, 2026
f34def8
ci(e2e): use system Chrome in Playwright CI
sergak01 Jun 30, 2026
04d5b54
ci(e2e): run non-Docker E2E suite
sergak01 Jun 30, 2026
f00f738
test(e2e): replay MI requests with mock cassette
sergak01 Jun 30, 2026
5729786
ci(e2e): install Next.js fixture before tests
sergak01 Jun 30, 2026
a2ddf83
test(e2e): run full browser suite in CI
sergak01 Jun 30, 2026
cddd8a8
test(e2e): stabilize browser CI run
sergak01 Jun 30, 2026
85e2b80
fix: address review feedback defects
sergak01 Jun 30, 2026
d0ea762
fix(ci): restore fixture package install
sergak01 Jun 30, 2026
c734183
fix: address code review defects
sergak01 Jun 30, 2026
e02c79d
chore: apply prettier formatting to src
sergak01 Jun 30, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
48 changes: 36 additions & 12 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -11,16 +11,21 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
uses: actions/checkout@v6
with:
persist-credentials: false

- name: Setup Node.js
uses: actions/setup-node@v4
uses: actions/setup-node@v6
with:
node-version: 22
node-version: 24
cache: 'npm'

- name: Install dependencies
run: npm ci
run: npm ci --no-audit

- name: Audit dependencies
run: npm run audit:all

- name: Build
run: npm run build
Expand All @@ -36,25 +41,44 @@ jobs:
test:
runs-on: ubuntu-latest
needs: build
timeout-minutes: 30
steps:
- name: Checkout
uses: actions/checkout@v4
uses: actions/checkout@v6
with:
persist-credentials: false

- name: Setup Node.js
uses: actions/setup-node@v4
uses: actions/setup-node@v6
with:
node-version: 22
node-version: 24
cache: 'npm'

- name: Install dependencies
run: npm ci
run: npm ci --no-audit

- name: Free disk space
run: |
df -h
sudo rm -rf /usr/share/dotnet /usr/local/lib/android /opt/ghc /opt/hostedtoolcache/CodeQL
df -h

- name: Build
run: npm run build

- name: Install Playwright browsers
run: npx playwright install --with-deps chromium
- name: Install E2E fixture dependencies
run: |
npm install --prefix tests/test-nextjs --no-audit --package-lock=false
npm install --prefix tests/test-commonjs --no-audit --package-lock=false
npm install --prefix tests/test-nextjs-cjs --no-audit --package-lock=false

- name: Run unit and integration tests
run: npm run test

- name: Run E2E tests
run: npx playwright test
continue-on-error: true
run: npm run test:e2e

- name: Run browser E2E tests
env:
PLAYWRIGHT_USE_SYSTEM_CHROME: '1'
run: npm run test:e2e:browser
8 changes: 4 additions & 4 deletions .github/workflows/release-beta.yml
Original file line number Diff line number Diff line change
Expand Up @@ -14,19 +14,19 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
uses: actions/checkout@v6
with:
fetch-depth: 0
persist-credentials: false

- name: Setup Node.js
uses: actions/setup-node@v4
uses: actions/setup-node@v6
with:
node-version: 22
node-version: 24
cache: 'npm'

- name: Install dependencies
run: npm ci
run: npm ci --no-audit

- name: Build
run: npm run build
Expand Down
16 changes: 9 additions & 7 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -7,20 +7,21 @@ on:

permissions:
contents: write
id-token: write

jobs:
release:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
uses: actions/checkout@v6
with:
fetch-depth: 0

- name: Setup Node.js
uses: actions/setup-node@v4
uses: actions/setup-node@v6
with:
node-version: 22
node-version: 24
registry-url: https://registry.npmjs.org/
cache: 'npm'

Expand All @@ -32,7 +33,7 @@ jobs:
echo "Releasing version: $VERSION"

- name: Install dependencies
run: npm ci
run: npm ci --no-audit

- name: Build
run: npm run build
Expand All @@ -48,13 +49,14 @@ jobs:
- name: Update package version
run: npm version ${{ steps.version.outputs.version }} --no-git-tag-version

- name: Upgrade npm for OIDC trusted publishing
run: npm install -g npm@latest --no-audit

- name: Publish to npm
env:
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
run: npm publish --access public

- name: Create GitHub Release
uses: softprops/action-gh-release@v1
uses: softprops/action-gh-release@v3
with:
tag_name: ${{ github.ref_name }}
name: Release ${{ github.ref_name }}
Expand Down
11 changes: 11 additions & 0 deletions .mcp.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
{
"mcpServers": {
"Framelink MCP for Figma": {
"command": "npx",
"args": ["-y", "figma-developer-mcp@0.13.2", "--stdio"],
"env": {
"FIGMA_API_KEY": "${FIGMA_API_KEY}"
}
}
}
}
100 changes: 100 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,103 @@
# [1.0.0](https://github.com/mi-examples/pp-dev/compare/v0.19.0-beta.2...v1.0.0) (2026-06-19)

## ⚠ BREAKING CHANGES

This release replaces the flat configuration API with a grouped schema. All existing `pp-dev.config.*` files must be updated β€” use `pp-dev migrate` to do it automatically.

### Configuration schema

The flat `VitePPDevOptions` object is replaced by `PPDevConfig` with five grouped sections:

```ts
// BEFORE (0.x)
export default {
backendBaseURL: 'https://mi.company.com',
personalAccessToken: 'YOUR_TOKEN',
miHudLess: true,
v7Features: true,
appId: 937,
templateLess: false,
};

// AFTER (1.0)
import { defineConfig } from '@metricinsights/pp-dev';

export default defineConfig({
mi: { url: 'https://mi.company.com', token: 'YOUR_TOKEN', mode: 'standalone', apiVersion: 7 },
app: { id: 937, type: 'template' },
});
```

| 0.x field | 1.0 field |
|---|---|
| `backendBaseURL` | `mi.url` |
| `personalAccessToken` | `mi.token` |
| `miHudLess: true` | `mi.mode: 'standalone'` |
| `miHudLess: false` | `mi.mode: 'embedding'` |
| `integrateMiTopBar: true` | `mi.mode: 'standalone'`, `mi.include: 'top-bar'` |
| `integrateMiTopBar: { addSharedComponentsScripts: true }` | `mi.include: 'shared-components'` |
| `v7Features: true` | `mi.apiVersion: 7` |
| `v7Features: false` | `mi.apiVersion: 6` |
| `appId` / `portalPageId` | `app.id` |
| `templateName` | `app.name` (auto-resolved from `package.json#name` β€” usually omit) |
| `templateLess: true` | `app.type: 'page'` |
| `templateLess: false` | `app.type: 'template'` |
| `enableProxyCache` | `proxy.cache` |
| `proxyCacheTTL` | `proxy.cacheTtl` |
| `disableSSLValidation: true` | `proxy.tls.allowSelfSigned: true` |
| `distZip` | `build.zip` |
| `versionPlugin` | `build.versionFile` |
| `imageOptimizer` | `build.imageOptimisations` |
| `outDir` | `build.outDir` |
| `syncBackupsDir` | `sync.backupsDir` |

### Removed

- `pp-watch.config.*` / `.pp-watch.config.*` config files β€” use `pp-dev.config.*` instead
- `PPWatchConfig` type
- `VitePPDevOptions` type β€” use `PPDevConfig`
- `normalizeVitePPDevConfig()` β€” internal, use `normalizePPDevConfig()`

### Defaults

| Field | Default |
|---|---|
| `mi.mode` | `'standalone'` |
| `mi.apiVersion` | `7` |
| `app.type` | `'template'` |
| `app.name` | resolved from `package.json#name` |

### Validation

Startup validation now throws meaningful errors instead of silently ignoring bad config. Key rules:

- `mi.include` requires `mi.mode: 'standalone'`
- `mi.url` is required when `mi.mode: 'embedding'` or `app.type: 'template'`
- `app.id` is required for templates and standalone pages

### Migration

Run the built-in codemod to upgrade your config automatically:

```bash
npx @metricinsights/pp-dev migrate
# Preview changes first:
npx @metricinsights/pp-dev migrate --dry-run
# Force output format:
npx @metricinsights/pp-dev migrate --format ts
```

The command detects flat 0.x configs and `pp-watch.config.*` files, migrates them to the new grouped format, and writes a `.bak` backup before overwriting.

## Features

* **config:** grouped `PPDevConfig` schema with `mi`, `app`, `proxy`, `build`, `sync` sections
* **config:** `defineConfig()` helper for full TypeScript intellisense
* **cli:** `pp-dev migrate` codemod β€” auto-migrates 0.x flat and `pp-watch` configs to 1.0 format, supports `--dry-run`, `--format ts|js|json`, `--output`, `--no-backup`
* **ui:** redesigned dev panel β€” MI brand colors (`#075B7E`), Inter font, bordered buttons, updated toast and confirm modal styles

---

# [0.19.0-beta.2](https://github.com/mi-examples/pp-dev/compare/v0.19.0-beta.1...v0.19.0-beta.2) (2026-06-18)


Expand Down
Loading