pi-model-profiles 0.2.0 → 0.3.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -7,7 +7,21 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
7
7
 
8
8
  ## [Unreleased]
9
9
 
10
- No unreleased changes.
10
+ ## [0.3.1] - 2026-05-22
11
+
12
+ ### Changed
13
+ - Reworked debug logging to redact sensitive values and use asynchronous buffered file writes with safe shutdown.
14
+ - Updated Pi peer dependencies and runtime imports to the `@earendil-works` scope.
15
+
16
+ ### Fixed
17
+ - Improved debug log writer lifecycle handling so buffered events flush reliably without opening logs when debug is disabled.
18
+
19
+ ## [0.3.0] - 2026-04-30
20
+
21
+ ### Changed
22
+ - Refined the model profiles modal layout with wider sizing, a single bordered grid, and clearer model table columns.
23
+ - Updated the public README screenshot and usage details.
24
+ - Bumped Pi peer dependency ranges to `^0.70.6`.
11
25
 
12
26
  ## [0.2.0] - 2026-04-26
13
27
 
@@ -18,7 +32,7 @@ No unreleased changes.
18
32
 
19
33
  ### Fixed
20
34
  - Confirmation prompts now accept typed input before update or removal actions run.
21
- - Sort menu keyboard handling now works regardless of focused pane and closes without exiting the modal.
35
+ - Sort menu keyboard handling now works consistently and closes without exiting the modal.
22
36
  - Profile update and removal command handlers now avoid duplicate scans and duplicate removal events.
23
37
 
24
38
  ## [0.1.0] - 2026-04-25
package/README.md CHANGED
@@ -56,7 +56,6 @@ Modal shortcuts:
56
56
  | Shortcut | Action |
57
57
  |----------|--------|
58
58
  | `↑` / `↓` | Move through snapshots |
59
- | `Tab` / `→` | Switch between snapshots and details panes |
60
59
  | `Enter` | Apply selected snapshot |
61
60
  | `s` | Save current agent state as a new snapshot |
62
61
  | `r` | Rename selected snapshot |
package/package.json CHANGED
@@ -1,66 +1,66 @@
1
- {
2
- "name": "pi-model-profiles",
3
- "version": "0.2.0",
4
- "private": false,
5
- "description": "Pi extension for saving, importing, and applying agent model frontmatter profiles.",
6
- "type": "module",
7
- "main": "./index.ts",
8
- "exports": {
9
- ".": "./index.ts"
10
- },
11
- "files": [
12
- "index.ts",
13
- "src",
14
- "README.md",
15
- "CHANGELOG.md",
16
- "config/config.example.json",
17
- "LICENSE"
18
- ],
19
- "scripts": {
20
- "build": "npx --yes -p typescript@5.9.2 tsc -p tsconfig.json",
21
- "lint": "npm run build",
22
- "test:clean": "node -e \"require('node:fs').rmSync('.test-dist', { recursive: true, force: true })\"",
23
- "prepublishOnly": "npm run test",
24
- "pretest": "npm run test:clean",
25
- "test": "npx --yes -p typescript@5.9.2 tsc --strict --skipLibCheck --module nodenext --moduleResolution nodenext --target ES2022 --outDir .test-dist src/types-shims.d.ts src/errors.ts src/types.ts src/constants.ts src/atomic-write.ts src/profile-fields.ts src/frontmatter-parser.ts src/profile-store.ts src/agent-writer.ts src/import-service.ts test/frontmatter-parser.test.ts test/import-service.test.ts test/agent-writer.test.ts test/profile-store.test.ts && node --test .test-dist/test/frontmatter-parser.test.js .test-dist/test/import-service.test.js .test-dist/test/agent-writer.test.js .test-dist/test/profile-store.test.js",
26
- "posttest": "npm run test:clean",
27
- "check": "npm run build && npm run test",
28
- "package:dry-run": "npm pack --dry-run"
29
- },
30
- "keywords": [
31
- "pi-package",
32
- "pi",
33
- "pi-extension",
34
- "pi-coding-agent",
35
- "coding-agent",
36
- "model-profiles",
37
- "frontmatter",
38
- "agent-configuration",
39
- "profiles"
40
- ],
41
- "author": "MasuRii",
42
- "license": "MIT",
43
- "homepage": "https://github.com/MasuRii/pi-model-profiles#readme",
44
- "repository": {
45
- "type": "git",
46
- "url": "git+https://github.com/MasuRii/pi-model-profiles.git"
47
- },
48
- "bugs": {
49
- "url": "https://github.com/MasuRii/pi-model-profiles/issues"
50
- },
51
- "engines": {
52
- "node": ">=20"
53
- },
54
- "pi": {
55
- "extensions": [
56
- "./index.ts"
57
- ]
58
- },
59
- "peerDependencies": {
60
- "@mariozechner/pi-coding-agent": "^0.70.5",
61
- "@mariozechner/pi-tui": "^0.70.5"
62
- },
63
- "publishConfig": {
64
- "access": "public"
65
- }
66
- }
1
+ {
2
+ "name": "pi-model-profiles",
3
+ "version": "0.3.1",
4
+ "private": false,
5
+ "description": "Pi extension for saving, importing, and applying agent model frontmatter profiles.",
6
+ "type": "module",
7
+ "main": "./index.ts",
8
+ "exports": {
9
+ ".": "./index.ts"
10
+ },
11
+ "files": [
12
+ "index.ts",
13
+ "src",
14
+ "README.md",
15
+ "CHANGELOG.md",
16
+ "config/config.example.json",
17
+ "LICENSE"
18
+ ],
19
+ "scripts": {
20
+ "build": "npx --yes -p typescript@5.9.2 tsc -p tsconfig.json",
21
+ "lint": "npm run build",
22
+ "test:clean": "node -e \"require('node:fs').rmSync('.test-dist', { recursive: true, force: true })\"",
23
+ "prepublishOnly": "npm run test",
24
+ "pretest": "npm run test:clean",
25
+ "test": "npx --yes -p typescript@5.9.2 tsc --strict --skipLibCheck --module nodenext --moduleResolution nodenext --target ES2022 --outDir .test-dist src/types-shims.d.ts src/errors.ts src/types.ts src/constants.ts src/atomic-write.ts src/profile-fields.ts src/frontmatter-parser.ts src/profile-store.ts src/agent-writer.ts src/import-service.ts src/config.ts src/debug-logger.ts test/frontmatter-parser.test.ts test/import-service.test.ts test/agent-writer.test.ts test/profile-store.test.ts test/debug-logger.test.ts && node --test .test-dist/test/frontmatter-parser.test.js .test-dist/test/import-service.test.js .test-dist/test/agent-writer.test.js .test-dist/test/profile-store.test.js .test-dist/test/debug-logger.test.js",
26
+ "posttest": "npm run test:clean",
27
+ "check": "npm run build && npm run test",
28
+ "package:dry-run": "npm pack --dry-run"
29
+ },
30
+ "keywords": [
31
+ "pi-package",
32
+ "pi",
33
+ "pi-extension",
34
+ "pi-coding-agent",
35
+ "coding-agent",
36
+ "model-profiles",
37
+ "frontmatter",
38
+ "agent-configuration",
39
+ "profiles"
40
+ ],
41
+ "author": "MasuRii",
42
+ "license": "MIT",
43
+ "homepage": "https://github.com/MasuRii/pi-model-profiles#readme",
44
+ "repository": {
45
+ "type": "git",
46
+ "url": "git+https://github.com/MasuRii/pi-model-profiles.git"
47
+ },
48
+ "bugs": {
49
+ "url": "https://github.com/MasuRii/pi-model-profiles/issues"
50
+ },
51
+ "engines": {
52
+ "node": ">=20"
53
+ },
54
+ "pi": {
55
+ "extensions": [
56
+ "./index.ts"
57
+ ]
58
+ },
59
+ "peerDependencies": {
60
+ "@earendil-works/pi-coding-agent": "^0.75.4",
61
+ "@earendil-works/pi-tui": "^0.75.4"
62
+ },
63
+ "publishConfig": {
64
+ "access": "public"
65
+ }
66
+ }
package/src/constants.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { getAgentDir } from "@mariozechner/pi-coding-agent";
1
+ import { getAgentDir } from "@earendil-works/pi-coding-agent";
2
2
  import { join } from "node:path";
3
3
  import { CONFIG_PATH, DEBUG_DIR, DEBUG_LOG_PATH, EXTENSION_ROOT } from "./config.js";
4
4
 
@@ -77,21 +77,21 @@ export function calculateModalHeight(agentCount: number): number {
77
77
  /**
78
78
  * Minimum modal width in columns
79
79
  */
80
- export const MODAL_MIN_WIDTH = 80;
80
+ export const MODAL_MIN_WIDTH = 100;
81
81
 
82
82
  /**
83
83
  * Maximum modal width in columns
84
84
  */
85
- export const MODAL_MAX_WIDTH = 140;
85
+ export const MODAL_MAX_WIDTH = 160;
86
86
 
87
87
  /**
88
88
  * Base width for modal (borders, padding, labels)
89
89
  */
90
- export const MODAL_BASE_WIDTH = 80;
90
+ export const MODAL_BASE_WIDTH = 100;
91
91
 
92
92
  /**
93
93
  * Calculate dynamic modal width based on content.
94
- * Formula: base width (80) + maxAgentNameLength clamped to min 80, max 140
94
+ * Formula: base width (100) + maxAgentNameLength clamped to min 100, max 160
95
95
  */
96
96
  export function calculateModalWidth(maxAgentNameLength: number): number {
97
97
  const calculatedWidth = MODAL_BASE_WIDTH + maxAgentNameLength;