@mediadatafusion/pi-workflow-suite 0.0.5 → 0.0.7

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
@@ -2,6 +2,18 @@
2
2
 
3
3
  All notable public releases will be documented in this file.
4
4
 
5
+ ## [0.0.7] - 2026-05-23
6
+
7
+ ### Changed
8
+
9
+ - Reduced published package size by excluding promotional media assets from the install payload while preserving package gallery and README media presentation.
10
+
11
+ ## [0.0.6] - 2026-05-23
12
+
13
+ ### Changed
14
+
15
+ - Updated package media metadata to use versioned package-hosted preview assets.
16
+
5
17
  ## [0.0.5] - 2026-05-23
6
18
 
7
19
  ### Changed
package/README.md CHANGED
@@ -11,7 +11,7 @@
11
11
  <a href="#settings-reference"><img src="https://cdn.jsdelivr.net/npm/@mediadatafusion/pi-workflow-suite@0.0.3/docs/assets/readme-link-settings.svg" alt="Settings" /></a>
12
12
  </p>
13
13
 
14
- **Workflow Suite Version:** `v0.0.5`
14
+ **Workflow Suite Version:** `v0.0.7`
15
15
 
16
16
  ## Overview
17
17
 
@@ -1182,15 +1182,15 @@ See `docs/TROUBLESHOOTING.md` for detailed diagnostics.
1182
1182
 
1183
1183
  ## Versioning
1184
1184
 
1185
- The current public preview version is `v0.0.5`. Version information is intentionally aligned across:
1185
+ The current public preview version is `v0.0.7`. Version information is intentionally aligned across:
1186
1186
 
1187
- - `VERSION` (`v0.0.5`),
1188
- - `package.json` (`0.0.5`),
1187
+ - `VERSION` (`v0.0.7`),
1188
+ - `package.json` (`0.0.7`),
1189
1189
  - `package-lock.json`,
1190
1190
  - this README,
1191
1191
  - Workflow Suite settings/about output.
1192
1192
 
1193
- The suite remains in early public preview versioning. Use `1.0.0` only when the install path, mode behavior, commands, settings, scripts, and packaging are ready to be treated as a public contract.
1193
+ Published package versions should stay aligned across repository metadata, package metadata, documentation, and Workflow Suite settings/about output. Use `1.0.0` only when the install path, mode behavior, commands, settings, scripts, and packaging are ready to be treated as a public contract.
1194
1194
 
1195
1195
  ## License, Trademarks, Security, Support, And Contributions
1196
1196
 
@@ -1217,18 +1217,20 @@ The intended package and repository identities are:
1217
1217
  https://github.com/MediaDataFusion/pi-workflow-suite
1218
1218
  ```
1219
1219
 
1220
- The current release candidate is prepared as `@mediadatafusion/pi-workflow-suite@0.0.5`.
1220
+ The current release candidate is prepared as `@mediadatafusion/pi-workflow-suite@0.0.7`.
1221
+
1222
+ Private DEV, private main, and the clean public release repository should carry the same approved package version before publication.
1221
1223
 
1222
1224
  After npm publication, install with:
1223
1225
 
1224
1226
  ```bash
1225
- pi install npm:@mediadatafusion/pi-workflow-suite@0.0.5
1227
+ pi install npm:@mediadatafusion/pi-workflow-suite@0.0.7
1226
1228
  ```
1227
1229
 
1228
1230
  After npm publication, temporary evaluation in a current Pi run can use:
1229
1231
 
1230
1232
  ```bash
1231
- pi -e npm:@mediadatafusion/pi-workflow-suite@0.0.5
1233
+ pi -e npm:@mediadatafusion/pi-workflow-suite@0.0.7
1232
1234
  ```
1233
1235
 
1234
1236
  ## Planned Enhancements
package/VERSION CHANGED
@@ -1 +1 @@
1
- v0.0.5
1
+ v0.0.7
package/package.json CHANGED
@@ -1 +1,109 @@
1
- {"name":"@mediadatafusion/pi-workflow-suite","version":"0.0.5","description":"Structured workflow orchestration suite for Pi with Standard, Plan, Mission, compaction, diagrams, web access, repo lock, and safety gates.","license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/MediaDataFusion/pi-workflow-suite.git"},"homepage":"https://github.com/MediaDataFusion/pi-workflow-suite#readme","bugs":{"url":"https://github.com/MediaDataFusion/pi-workflow-suite/issues"},"keywords":["pi-package","pi-extension","pi-skill","pi-theme","pi-prompt","pi","pi-coding-agent","workflow","workflows","workflow-suite","workflow-orchestration","agent-workflow","plan-mode","mission-mode","standard-mode","subagents","skills","prompts","extensions","themes"],"type":"module","files":["extensions/","skills/","agents/","config/","docs/assets/","themes/","scripts/install-to-live.sh","scripts/verify-live.sh","scripts/audit-live.sh","scripts/quarantine-live-junk.sh","scripts/backup-live.sh","scripts/audit-settings.sh","scripts/bootstrap-project.sh","README.md","LICENSE.md","NOTICE","TRADEMARKS.md","CHANGELOG.md","SECURITY.md","SUPPORT.md","CONTRIBUTING.md","VERSION","package-lock.json"],"pi":{"extensions":["./extensions/workflow-modes.ts","./extensions/subagent/index.ts"],"skills":["./skills"],"prompts":["./config/prompts"],"themes":["./themes"],"image":"https://cdn.jsdelivr.net/npm/@mediadatafusion/pi-workflow-suite@0.0.5/docs/assets/pi-workflow-suite-header.png","video":"https://github.com/user-attachments/assets/9782fefc-5349-4cc9-b4ea-20b4c916a8b9"},"peerDependencies":{"@earendil-works/pi-agent-core":"*","@earendil-works/pi-ai":"*","@earendil-works/pi-coding-agent":"*","@earendil-works/pi-tui":"*","typebox":"*"},"dependencies":{"@mermaid-js/mermaid-cli":"^11.14.0","beautiful-mermaid":"^1.1.3","sharp":"^0.34.5"},"private":false,"devDependencies":{"@earendil-works/pi-agent-core":"^0.74.0","@earendil-works/pi-ai":"^0.74.0","@earendil-works/pi-coding-agent":"^0.74.0","@earendil-works/pi-tui":"^0.74.0","@types/node":"^25.6.2","typebox":"^1.1.38","typescript":"^6.0.3"},"scripts":{"check:ts":"tsc --noEmit --noCheck","typecheck":"tsc --noEmit","validate":"npm run check:ts && ./scripts/check-clean-release-tree.sh && git diff --check"}}
1
+ {
2
+ "name": "@mediadatafusion/pi-workflow-suite",
3
+ "version": "0.0.7",
4
+ "description": "Structured workflow orchestration suite for Pi with Standard, Plan, Mission, compaction, diagrams, web access, repo lock, and safety gates.",
5
+ "license": "Apache-2.0",
6
+ "repository": {
7
+ "type": "git",
8
+ "url": "git+https://github.com/MediaDataFusion/pi-workflow-suite.git"
9
+ },
10
+ "homepage": "https://github.com/MediaDataFusion/pi-workflow-suite#readme",
11
+ "bugs": {
12
+ "url": "https://github.com/MediaDataFusion/pi-workflow-suite/issues"
13
+ },
14
+ "keywords": [
15
+ "pi-package",
16
+ "pi-extension",
17
+ "pi-skill",
18
+ "pi-theme",
19
+ "pi-prompt",
20
+ "pi",
21
+ "pi-coding-agent",
22
+ "workflow",
23
+ "workflows",
24
+ "workflow-suite",
25
+ "workflow-orchestration",
26
+ "agent-workflow",
27
+ "plan-mode",
28
+ "mission-mode",
29
+ "standard-mode",
30
+ "subagents",
31
+ "skills",
32
+ "prompts",
33
+ "extensions",
34
+ "themes"
35
+ ],
36
+ "type": "module",
37
+ "files": [
38
+ "extensions/",
39
+ "skills/",
40
+ "agents/",
41
+ "config/",
42
+ "themes/",
43
+ "scripts/install-to-live.sh",
44
+ "scripts/verify-live.sh",
45
+ "scripts/audit-live.sh",
46
+ "scripts/quarantine-live-junk.sh",
47
+ "scripts/backup-live.sh",
48
+ "scripts/audit-settings.sh",
49
+ "scripts/bootstrap-project.sh",
50
+ "scripts/check-clean-release-tree.sh",
51
+ "scripts/check-package-size.mjs",
52
+ "scripts/build-package-export.mjs",
53
+ "README.md",
54
+ "LICENSE.md",
55
+ "NOTICE",
56
+ "TRADEMARKS.md",
57
+ "CHANGELOG.md",
58
+ "SECURITY.md",
59
+ "SUPPORT.md",
60
+ "CONTRIBUTING.md",
61
+ "VERSION",
62
+ "package-lock.json"
63
+ ],
64
+ "pi": {
65
+ "extensions": [
66
+ "./extensions/workflow-modes.ts",
67
+ "./extensions/subagent/index.ts"
68
+ ],
69
+ "skills": [
70
+ "./skills"
71
+ ],
72
+ "prompts": [
73
+ "./config/prompts"
74
+ ],
75
+ "themes": [
76
+ "./themes"
77
+ ],
78
+ "image": "https://cdn.jsdelivr.net/npm/@mediadatafusion/pi-workflow-suite@0.0.6/docs/assets/pi-workflow-suite-header.png",
79
+ "video": "https://cdn.jsdelivr.net/npm/@mediadatafusion/pi-workflow-suite@0.0.6/docs/assets/pi-workflow-suite-demo.mp4"
80
+ },
81
+ "peerDependencies": {
82
+ "@earendil-works/pi-agent-core": "*",
83
+ "@earendil-works/pi-ai": "*",
84
+ "@earendil-works/pi-coding-agent": "*",
85
+ "@earendil-works/pi-tui": "*",
86
+ "typebox": "*"
87
+ },
88
+ "dependencies": {
89
+ "@mermaid-js/mermaid-cli": "^11.14.0",
90
+ "beautiful-mermaid": "^1.1.3",
91
+ "sharp": "^0.34.5"
92
+ },
93
+ "private": false,
94
+ "devDependencies": {
95
+ "@earendil-works/pi-agent-core": "^0.74.0",
96
+ "@earendil-works/pi-ai": "^0.74.0",
97
+ "@earendil-works/pi-coding-agent": "^0.74.0",
98
+ "@earendil-works/pi-tui": "^0.74.0",
99
+ "@types/node": "^25.6.2",
100
+ "typebox": "^1.1.38",
101
+ "typescript": "^6.0.3"
102
+ },
103
+ "scripts": {
104
+ "check:ts": "tsc --noEmit --noCheck",
105
+ "typecheck": "tsc --noEmit",
106
+ "validate": "npm run check:ts && ./scripts/check-clean-release-tree.sh && npm run check:package-size && git diff --check",
107
+ "check:package-size": "node scripts/check-package-size.mjs"
108
+ }
109
+ }
@@ -0,0 +1,111 @@
1
+ #!/usr/bin/env node
2
+ import { mkdtempSync, rmSync } from 'node:fs';
3
+ import { copyFile, mkdir, readFile, rename, writeFile } from 'node:fs/promises';
4
+ import { tmpdir } from 'node:os';
5
+ import { dirname, join, resolve } from 'node:path';
6
+ import { fileURLToPath } from 'node:url';
7
+ import { spawnSync } from 'node:child_process';
8
+
9
+ const scriptDir = dirname(fileURLToPath(import.meta.url));
10
+ const repoRoot = resolve(scriptDir, '..');
11
+
12
+ function run(command, args, options = {}) {
13
+ const result = spawnSync(command, args, {
14
+ cwd: options.cwd ?? repoRoot,
15
+ encoding: 'utf8',
16
+ stdio: options.stdio ?? ['ignore', 'pipe', 'inherit'],
17
+ });
18
+ if (result.status !== 0) {
19
+ throw new Error(`${command} ${args.join(' ')} failed with exit code ${result.status}`);
20
+ }
21
+ return result.stdout ?? '';
22
+ }
23
+
24
+ function parseArgs(argv) {
25
+ const args = { out: undefined, keepPack: false };
26
+ for (let index = 0; index < argv.length; index += 1) {
27
+ const arg = argv[index];
28
+ if (arg === '--out') {
29
+ args.out = resolve(argv[index + 1] ?? '');
30
+ index += 1;
31
+ continue;
32
+ }
33
+ if (arg === '--keep-pack') {
34
+ args.keepPack = true;
35
+ continue;
36
+ }
37
+ throw new Error(`Unknown argument: ${arg}`);
38
+ }
39
+ return args;
40
+ }
41
+
42
+ const mediaVersion = '0.0.6';
43
+
44
+ function mediaCdn(assetPath) {
45
+ return `https://cdn.jsdelivr.net/npm/@mediadatafusion/pi-workflow-suite@${mediaVersion}/${assetPath}`;
46
+ }
47
+
48
+ function buildPackageReadme(sourceReadme, version) {
49
+ const headerBlock = `# Pi Workflow Suite\n\n${
50
+ `![Pi Workflow Suite — structured workflow orchestration for Pi](${mediaCdn('docs/assets/pi-workflow-suite-header.png')})`
51
+ }\n\n${[
52
+ `[![Install](${mediaCdn('docs/assets/readme-link-install.svg')})](#installation)`,
53
+ `[![Quick Start](${mediaCdn('docs/assets/readme-link-quick-start.svg')})](#quick-start)`,
54
+ `[![Commands](${mediaCdn('docs/assets/readme-link-commands.svg')})](#core-commands)`,
55
+ `[![Settings](${mediaCdn('docs/assets/readme-link-settings.svg')})](#settings-reference)`,
56
+ ].join(' ')}\n\n**Workflow Suite Version:** `;
57
+
58
+ let readme = sourceReadme.replace(
59
+ /^# Pi Workflow Suite\n\n<p align="center">[\s\S]*?\*\*Workflow Suite Version:\*\* /,
60
+ headerBlock,
61
+ );
62
+
63
+ const packageMediaBlock = `## Quick Demo\n\nSee Pi Workflow Suite in action: structured workflow modes, settings, runtime status, and guided execution inside Pi.\n\n[![Watch the Pi Workflow Suite quick demo](${mediaCdn('docs/assets/pi-workflow-suite-demo.gif')})](${mediaCdn('docs/assets/pi-workflow-suite-demo.mp4')})\n\n## Screenshots\n\n${[
64
+ ['Pi Workflow Suite Mission Home with workflow graphs', 'docs/assets/screenshots/00-mission-home.png'],
65
+ ['Pi Workflow Suite startup logo', 'docs/assets/screenshots/01-startup-Logo.png'],
66
+ ['Workflow Suite theme settings', 'docs/assets/screenshots/02-theme-settings.png'],
67
+ ['Workflow Suite global safety settings', 'docs/assets/screenshots/03-GlobalSafetySettings.png'],
68
+ ['Workflow Suite shared sub-agent settings', 'docs/assets/screenshots/04-SharedSubAgentsSettings.png'],
69
+ ['Mission Mode milestone progress', 'docs/assets/screenshots/05-mission-mode.png'],
70
+ ['Workflow Suite Mermaid diagram output', 'docs/assets/screenshots/06-diagram-mermaid.png'],
71
+ ].map(([alt, path]) => `![${alt}](${mediaCdn(path)})`).join('\n\n')}\n\n`;
72
+
73
+ readme = readme.replace(/## Quick Demo[\s\S]*?## Contents\n/, `${packageMediaBlock}## Contents\n`);
74
+ return readme;
75
+ }
76
+
77
+ async function main() {
78
+ const args = parseArgs(process.argv.slice(2));
79
+ const workDir = mkdtempSync(join(tmpdir(), 'pi-workflow-suite-export-'));
80
+ const packDir = join(workDir, 'pack');
81
+ await mkdir(packDir, { recursive: true });
82
+
83
+ const packOutput = run('npm', ['pack', '--pack-destination', packDir]);
84
+ const tarballName = packOutput.trim().split('\n').filter(Boolean).at(-1);
85
+ if (!tarballName) {
86
+ throw new Error('npm pack did not report a tarball name');
87
+ }
88
+
89
+ run('tar', ['-xzf', join(packDir, tarballName), '-C', workDir]);
90
+ const extractedDir = join(workDir, 'package');
91
+ const packageJson = JSON.parse(await readFile(join(extractedDir, 'package.json'), 'utf8'));
92
+ const sourceReadme = await readFile(join(repoRoot, 'README.md'), 'utf8');
93
+ await writeFile(join(extractedDir, 'README.md'), buildPackageReadme(sourceReadme, packageJson.version));
94
+
95
+ const outputDir = args.out ?? join(workDir, 'export');
96
+ rmSync(outputDir, { recursive: true, force: true });
97
+ await mkdir(dirname(outputDir), { recursive: true });
98
+ await rename(extractedDir, outputDir);
99
+
100
+ if (args.keepPack) {
101
+ await mkdir(join(outputDir, '.pack-source'), { recursive: true });
102
+ await copyFile(join(packDir, tarballName), join(outputDir, '.pack-source', tarballName));
103
+ }
104
+
105
+ console.log(outputDir);
106
+ }
107
+
108
+ main().catch((error) => {
109
+ console.error(error instanceof Error ? error.message : String(error));
110
+ process.exit(1);
111
+ });
@@ -0,0 +1,45 @@
1
+ #!/usr/bin/env bash
2
+ set -euo pipefail
3
+
4
+ ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
5
+ cd "$ROOT"
6
+
7
+ fail=0
8
+ report() {
9
+ printf 'ERROR: %s\n' "$1" >&2
10
+ fail=1
11
+ }
12
+
13
+ if [[ -e AGENTS.md && -n "$(git ls-files AGENTS.md)" ]]; then report 'AGENTS.md must not be present on clean release main'; fi
14
+ if [[ -e .github && -n "$(git ls-files .github)" ]]; then report '.github/ must not be tracked on clean release main'; fi
15
+ if [[ -e .factory && -n "$(git ls-files .factory)" ]]; then report '.factory/ must not be tracked on clean release main'; fi
16
+ if [[ -e .kilo && -n "$(git ls-files .kilo)" ]]; then report '.kilo/ must not be tracked on clean release main'; fi
17
+ if [[ -e .cursor && -n "$(git ls-files .cursor)" ]]; then report '.cursor/ must not be tracked on clean release main'; fi
18
+
19
+ while IFS= read -r path; do
20
+ case "$path" in
21
+ agents/*|config/*|extensions/*|skills/*|docs/assets/*|themes/*|scripts/install-to-live.sh|scripts/verify-live.sh|scripts/audit-live.sh|scripts/quarantine-live-junk.sh|scripts/backup-live.sh|scripts/audit-settings.sh|scripts/bootstrap-project.sh|scripts/check-clean-release-tree.sh|scripts/check-package-size.mjs|scripts/build-package-export.mjs|README.md|CHANGELOG.md|CONTRIBUTING.md|LICENSE.md|NOTICE|SECURITY.md|SUPPORT.md|TRADEMARKS.md|VERSION|package.json|package-lock.json|tsconfig.json|.gitignore)
22
+ ;;
23
+ docs/*)
24
+ report "non-asset docs file is not allowed: $path"
25
+ ;;
26
+ scripts/test-*|scripts/sync-from-live.sh)
27
+ report "internal script is not allowed: $path"
28
+ ;;
29
+ .github/*|AGENTS.md|.factory/*|.kilo/*|.cursor/*)
30
+ report "internal path is not allowed: $path"
31
+ ;;
32
+ *auth.json|*settings.json|*workflow-settings.json|*active.json|workflows/*|*sessions/*|*missions/*|*plans/*|*logs/*|*.env|*.env.*|*.DS_Store)
33
+ report "runtime/private path is not allowed: $path"
34
+ ;;
35
+ *)
36
+ report "path is outside clean release allowlist: $path"
37
+ ;;
38
+ esac
39
+ done < <(git ls-files | sort)
40
+
41
+ if [[ "$fail" -ne 0 ]]; then
42
+ exit 1
43
+ fi
44
+
45
+ printf 'OK: clean release tree allowlist passed\n'
@@ -0,0 +1,30 @@
1
+ #!/usr/bin/env node
2
+ import { spawnSync } from 'node:child_process';
3
+
4
+ const maxTarballBytes = 1_000_000;
5
+ const forbiddenPrefix = 'docs/assets/';
6
+
7
+ const result = spawnSync('npm', ['pack', '--dry-run', '--json'], {
8
+ encoding: 'utf8',
9
+ stdio: ['ignore', 'pipe', 'inherit'],
10
+ });
11
+
12
+ if (result.status !== 0) {
13
+ process.exit(result.status ?? 1);
14
+ }
15
+
16
+ const [pack] = JSON.parse(result.stdout);
17
+ const forbidden = pack.files.filter((file) => file.path.startsWith(forbiddenPrefix));
18
+
19
+ if (forbidden.length > 0) {
20
+ console.error(`ERROR: package includes promotional assets under ${forbiddenPrefix}`);
21
+ for (const file of forbidden) console.error(`- ${file.path}`);
22
+ process.exit(1);
23
+ }
24
+
25
+ if (pack.size > maxTarballBytes) {
26
+ console.error(`ERROR: package tarball is ${pack.size} bytes, above ${maxTarballBytes} bytes`);
27
+ process.exit(1);
28
+ }
29
+
30
+ console.log(`OK: package tarball ${pack.size} bytes, ${pack.files.length} files, no ${forbiddenPrefix} entries`);
@@ -1,10 +0,0 @@
1
- <svg xmlns="http://www.w3.org/2000/svg" width="144" height="42" viewBox="0 0 144 42" role="img" aria-label="Commands">
2
- <defs>
3
- <linearGradient id="g" x1="0" y1="0" x2="1" y2="1">
4
- <stop offset="0" stop-color="#781d6b"/>
5
- <stop offset="1" stop-color="#217598"/>
6
- </linearGradient>
7
- </defs>
8
- <rect x="1" y="1" width="142" height="40" rx="20" fill="url(#g)" stroke="#1a3c57" stroke-width="2"/>
9
- <text x="72.0" y="27" text-anchor="middle" font-family="Arial, Helvetica, sans-serif" font-size="16" font-weight="700" fill="#ffffff">Commands</text>
10
- </svg>
@@ -1,10 +0,0 @@
1
- <svg xmlns="http://www.w3.org/2000/svg" width="112" height="42" viewBox="0 0 112 42" role="img" aria-label="Install">
2
- <defs>
3
- <linearGradient id="g" x1="0" y1="0" x2="1" y2="1">
4
- <stop offset="0" stop-color="#781d6b"/>
5
- <stop offset="1" stop-color="#217598"/>
6
- </linearGradient>
7
- </defs>
8
- <rect x="1" y="1" width="110" height="40" rx="20" fill="url(#g)" stroke="#1a3c57" stroke-width="2"/>
9
- <text x="56.0" y="27" text-anchor="middle" font-family="Arial, Helvetica, sans-serif" font-size="16" font-weight="700" fill="#ffffff">Install</text>
10
- </svg>
@@ -1,10 +0,0 @@
1
- <svg xmlns="http://www.w3.org/2000/svg" width="156" height="42" viewBox="0 0 156 42" role="img" aria-label="Quick Start">
2
- <defs>
3
- <linearGradient id="g" x1="0" y1="0" x2="1" y2="1">
4
- <stop offset="0" stop-color="#781d6b"/>
5
- <stop offset="1" stop-color="#217598"/>
6
- </linearGradient>
7
- </defs>
8
- <rect x="1" y="1" width="154" height="40" rx="20" fill="url(#g)" stroke="#1a3c57" stroke-width="2"/>
9
- <text x="78.0" y="27" text-anchor="middle" font-family="Arial, Helvetica, sans-serif" font-size="16" font-weight="700" fill="#ffffff">Quick Start</text>
10
- </svg>
@@ -1,10 +0,0 @@
1
- <svg xmlns="http://www.w3.org/2000/svg" width="126" height="42" viewBox="0 0 126 42" role="img" aria-label="Settings">
2
- <defs>
3
- <linearGradient id="g" x1="0" y1="0" x2="1" y2="1">
4
- <stop offset="0" stop-color="#781d6b"/>
5
- <stop offset="1" stop-color="#217598"/>
6
- </linearGradient>
7
- </defs>
8
- <rect x="1" y="1" width="124" height="40" rx="20" fill="url(#g)" stroke="#1a3c57" stroke-width="2"/>
9
- <text x="63.0" y="27" text-anchor="middle" font-family="Arial, Helvetica, sans-serif" font-size="16" font-weight="700" fill="#ffffff">Settings</text>
10
- </svg>
@@ -1 +0,0 @@
1
-