@selesai/code 0.9.14 → 0.10.0
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 +27 -0
- package/README.md +6 -9
- package/dist/defaults/models.json +79 -29
- package/dist/defaults/settings.json +3 -7
- package/dist/extensions/package.json +3 -4
- package/dist/extensions/pi-zentui/.editorconfig +12 -0
- package/dist/extensions/pi-zentui/.github/CODEOWNERS +1 -0
- package/dist/extensions/pi-zentui/.github/ISSUE_TEMPLATE/bug_report.yml +110 -0
- package/dist/extensions/pi-zentui/.github/ISSUE_TEMPLATE/config.yml +8 -0
- package/dist/extensions/pi-zentui/.github/ISSUE_TEMPLATE/config_question.yml +56 -0
- package/dist/extensions/pi-zentui/.github/ISSUE_TEMPLATE/feature_request.yml +63 -0
- package/dist/extensions/pi-zentui/.github/ISSUE_TEMPLATE/rendering_issue.yml +106 -0
- package/dist/extensions/pi-zentui/.github/ISSUE_TEMPLATE/runtime_detection.yml +103 -0
- package/dist/extensions/pi-zentui/.github/dependabot.yml +47 -0
- package/dist/extensions/pi-zentui/.github/pull_request_template.md +34 -0
- package/dist/extensions/pi-zentui/.github/release.yml +18 -0
- package/dist/extensions/pi-zentui/.github/workflows/ci.yml +79 -0
- package/dist/extensions/pi-zentui/.github/workflows/publish.yml +63 -0
- package/dist/extensions/pi-zentui/AGENTS.md +107 -0
- package/dist/extensions/pi-zentui/CONTRIBUTING.md +68 -0
- package/dist/extensions/pi-zentui/LICENSE +21 -0
- package/dist/extensions/pi-zentui/README.md +188 -0
- package/dist/extensions/pi-zentui/SECURITY.md +18 -0
- package/dist/extensions/pi-zentui/assets/main-cover.png +0 -0
- package/dist/extensions/pi-zentui/assets/screenshots/editor-accent-rail.png +0 -0
- package/dist/extensions/pi-zentui/assets/screenshots/editor-minimalist.png +0 -0
- package/dist/extensions/pi-zentui/assets/screenshots/editor-opencode-copy-friendly.png +0 -0
- package/dist/extensions/pi-zentui/assets/screenshots/editor-opencode.png +0 -0
- package/dist/extensions/pi-zentui/assets/screenshots/user-message-compact.png +0 -0
- package/dist/extensions/pi-zentui/assets/screenshots/user-message-framed-copy-friendly.png +0 -0
- package/dist/extensions/pi-zentui/assets/screenshots/user-message-framed.png +0 -0
- package/dist/extensions/pi-zentui/assets/screenshots/user-message-labeled.png +0 -0
- package/dist/extensions/pi-zentui/assets/zentui.png +0 -0
- package/dist/extensions/pi-zentui/biome.json +31 -0
- package/dist/extensions/pi-zentui/docs/configuration.md +509 -0
- package/dist/extensions/pi-zentui/docs/footer-format.md +162 -0
- package/dist/extensions/pi-zentui/extensions/zentui/accent-rail-editor.ts +99 -0
- package/dist/extensions/pi-zentui/extensions/zentui/accent-rail-layout-patch.ts +457 -0
- package/dist/extensions/pi-zentui/extensions/zentui/completion-menu.ts +157 -0
- package/dist/extensions/pi-zentui/extensions/zentui/config.ts +2100 -0
- package/dist/extensions/pi-zentui/extensions/zentui/editor-metadata-format.ts +321 -0
- package/dist/extensions/pi-zentui/extensions/zentui/editor-transfer.ts +73 -0
- package/dist/extensions/pi-zentui/extensions/zentui/extension-status.ts +89 -0
- package/dist/extensions/pi-zentui/extensions/zentui/footer-format.ts +364 -0
- package/dist/extensions/pi-zentui/extensions/zentui/footer-layout.ts +122 -0
- package/dist/extensions/pi-zentui/extensions/zentui/footer.ts +812 -0
- package/dist/extensions/pi-zentui/extensions/zentui/format.ts +568 -0
- package/dist/extensions/pi-zentui/extensions/zentui/git.ts +384 -0
- package/dist/extensions/pi-zentui/extensions/zentui/icons.ts +252 -0
- package/dist/extensions/pi-zentui/extensions/zentui/index.ts +1406 -0
- package/dist/extensions/pi-zentui/extensions/zentui/interaction-summary.ts +1049 -0
- package/dist/extensions/pi-zentui/extensions/zentui/live-context.ts +75 -0
- package/dist/extensions/pi-zentui/extensions/zentui/minimalist-editor.ts +463 -0
- package/dist/extensions/pi-zentui/extensions/zentui/package-version.ts +651 -0
- package/dist/extensions/pi-zentui/extensions/zentui/project-refresh.ts +120 -0
- package/dist/extensions/pi-zentui/extensions/zentui/project-state.ts +59 -0
- package/dist/extensions/pi-zentui/extensions/zentui/prototype-patch-registry.ts +166 -0
- package/dist/extensions/pi-zentui/extensions/zentui/repository-root.ts +98 -0
- package/dist/extensions/pi-zentui/extensions/zentui/runtime.ts +841 -0
- package/dist/extensions/pi-zentui/extensions/zentui/selector-border.ts +93 -0
- package/dist/extensions/pi-zentui/extensions/zentui/session-lifecycle.ts +60 -0
- package/dist/extensions/pi-zentui/extensions/zentui/settings-command.ts +1796 -0
- package/dist/extensions/pi-zentui/extensions/zentui/settings-previews.ts +128 -0
- package/dist/extensions/pi-zentui/extensions/zentui/state.ts +94 -0
- package/dist/extensions/pi-zentui/extensions/zentui/style.ts +424 -0
- package/dist/extensions/pi-zentui/extensions/zentui/telemetry.ts +82 -0
- package/dist/extensions/pi-zentui/extensions/zentui/ui.ts +1290 -0
- package/dist/extensions/pi-zentui/extensions/zentui/user-message-osc.ts +248 -0
- package/dist/extensions/pi-zentui/extensions/zentui/user-message-styles.ts +215 -0
- package/dist/extensions/pi-zentui/extensions/zentui/user-message.ts +206 -0
- package/dist/extensions/pi-zentui/extensions/zentui/working-line-messages.ts +24 -0
- package/dist/extensions/pi-zentui/extensions/zentui/working-line-spinners.ts +54 -0
- package/dist/extensions/pi-zentui/extensions/zentui/working-line.ts +1433 -0
- package/dist/extensions/pi-zentui/package-lock.json +5311 -0
- package/dist/extensions/pi-zentui/package.json +60 -0
- package/dist/extensions/pi-zentui/test/accent-rail-editor.test.ts +232 -0
- package/dist/extensions/pi-zentui/test/accent-rail-layout-patch.test.ts +669 -0
- package/dist/extensions/pi-zentui/test/completion-menu.test.ts +265 -0
- package/dist/extensions/pi-zentui/test/config.test.ts +3119 -0
- package/dist/extensions/pi-zentui/test/editor-metadata-format.test.ts +405 -0
- package/dist/extensions/pi-zentui/test/editor-transfer.test.ts +260 -0
- package/dist/extensions/pi-zentui/test/editor-viewport-indicators.test.ts +1286 -0
- package/dist/extensions/pi-zentui/test/extension-compliance.test.ts +7196 -0
- package/dist/extensions/pi-zentui/test/extension-status.test.ts +182 -0
- package/dist/extensions/pi-zentui/test/fixtures/starship-nerd-font-symbols.toml +172 -0
- package/dist/extensions/pi-zentui/test/footer-format.test.ts +431 -0
- package/dist/extensions/pi-zentui/test/footer-layout.test.ts +113 -0
- package/dist/extensions/pi-zentui/test/footer-repository-path.test.ts +123 -0
- package/dist/extensions/pi-zentui/test/format.test.ts +865 -0
- package/dist/extensions/pi-zentui/test/git.test.ts +212 -0
- package/dist/extensions/pi-zentui/test/icons.test.ts +69 -0
- package/dist/extensions/pi-zentui/test/interaction-summary.test.ts +1402 -0
- package/dist/extensions/pi-zentui/test/live-context-integration.test.ts +378 -0
- package/dist/extensions/pi-zentui/test/live-context.test.ts +139 -0
- package/dist/extensions/pi-zentui/test/minimalist-editor.test.ts +811 -0
- package/dist/extensions/pi-zentui/test/package-version.test.ts +321 -0
- package/dist/extensions/pi-zentui/test/project-refresh.test.ts +250 -0
- package/dist/extensions/pi-zentui/test/project-state.test.ts +159 -0
- package/dist/extensions/pi-zentui/test/repository-root.test.ts +108 -0
- package/dist/extensions/pi-zentui/test/responsive-dependencies.test.ts +825 -0
- package/dist/extensions/pi-zentui/test/runtime.test.ts +183 -0
- package/dist/extensions/pi-zentui/test/session-lifecycle.test.ts +40 -0
- package/dist/extensions/pi-zentui/test/settings-command.test.ts +1381 -0
- package/dist/extensions/pi-zentui/test/settings-previews.test.ts +347 -0
- package/dist/extensions/pi-zentui/test/state.test.ts +84 -0
- package/dist/extensions/pi-zentui/test/telemetry-lifecycle-integration.test.ts +276 -0
- package/dist/extensions/pi-zentui/test/telemetry.test.ts +105 -0
- package/dist/extensions/pi-zentui/test/turn-summary-lifecycle.integration.test.ts +327 -0
- package/dist/extensions/pi-zentui/test/user-message-osc.test.ts +164 -0
- package/dist/extensions/pi-zentui/test/user-message-styles.test.ts +292 -0
- package/dist/extensions/pi-zentui/test/working-line-lifecycle.integration.test.ts +730 -0
- package/dist/extensions/pi-zentui/test/working-line-messages.test.ts +34 -0
- package/dist/extensions/pi-zentui/test/working-line.test.ts +1990 -0
- package/dist/extensions/pi-zentui/tsconfig.json +16 -0
- package/dist/extensions/tps.test.ts +38 -0
- package/dist/extensions/{pi-powerline-footer/tps.ts → tps.ts} +4 -0
- package/dist/skills/design-references/SKILL.md +31 -0
- package/dist/skills/design-references/references/clickhouse/DESIGN.md +544 -0
- package/dist/themes/adventure.json +84 -0
- package/dist/themes/adwaita-dark.json +84 -0
- package/dist/themes/arcoiris.json +84 -0
- package/dist/themes/arthur.json +84 -0
- package/dist/themes/atom.json +84 -0
- package/dist/themes/aura.json +84 -0
- package/dist/themes/black-metal-bathory.json +84 -0
- package/dist/themes/black-metal-burzum.json +84 -0
- package/dist/themes/black-metal-khold.json +84 -0
- package/dist/themes/box.json +84 -0
- package/dist/themes/brogrammer.json +84 -0
- package/dist/themes/carbonfox.json +84 -0
- package/dist/themes/catppuccin-mocha.json +84 -0
- package/dist/themes/citruszest.json +84 -0
- package/dist/themes/cursor-dark.json +84 -0
- package/dist/themes/cutie-pro.json +84 -0
- package/dist/themes/dark-modern.json +84 -0
- package/dist/themes/dark-pastel.json +84 -0
- package/dist/themes/dimmed-monokai.json +84 -0
- package/dist/themes/doom-peacock.json +84 -0
- package/dist/themes/dracula-plus.json +84 -0
- package/dist/themes/dracula.json +80 -0
- package/dist/themes/earthsong.json +84 -0
- package/dist/themes/everforest-dark-hard.json +84 -0
- package/dist/themes/everforest-dark.json +80 -0
- package/dist/themes/fahrenheit.json +84 -0
- package/dist/themes/flatland.json +84 -0
- package/dist/themes/flexoki-dark.json +84 -0
- package/dist/themes/front-end-delight.json +84 -0
- package/dist/themes/fun-forrest.json +84 -0
- package/dist/themes/galizur.json +84 -0
- package/dist/themes/github-dark-colorblind.json +84 -0
- package/dist/themes/github-dark-high-contrast.json +84 -0
- package/dist/themes/glacier.json +84 -0
- package/dist/themes/gruber-darker.json +84 -0
- package/dist/themes/gruvbox-dark-hard.json +84 -0
- package/dist/themes/gruvbox-dark.json +84 -0
- package/dist/themes/gruvbox-material.json +84 -0
- package/dist/themes/guezwhoz.json +84 -0
- package/dist/themes/hacktober.json +84 -0
- package/dist/themes/hardcore.json +84 -0
- package/dist/themes/havn-skumring.json +84 -0
- package/dist/themes/ic-orange-ppl.json +84 -0
- package/dist/themes/iterm2-smoooooth.json +84 -0
- package/dist/themes/iterm2-tango-dark.json +84 -0
- package/dist/themes/japanesque.json +84 -0
- package/dist/themes/jellybeans.json +84 -0
- package/dist/themes/kanagawa-wave.json +84 -0
- package/dist/themes/kurokula.json +84 -0
- package/dist/themes/later-this-evening.json +84 -0
- package/dist/themes/lovelace.json +84 -0
- package/dist/themes/material-darker.json +84 -0
- package/dist/themes/matte-black.json +84 -0
- package/dist/themes/mellow.json +84 -0
- package/dist/themes/miasma.json +84 -0
- package/dist/themes/nord.json +80 -0
- package/dist/themes/nvim-dark.json +84 -0
- package/dist/themes/one-dark.json +80 -0
- package/dist/themes/popping-and-locking.json +84 -0
- package/dist/themes/rose-pine.json +80 -0
- package/dist/themes/sea-shells.json +84 -0
- package/dist/themes/sleepy-hollow.json +84 -0
- package/dist/themes/smyck.json +84 -0
- package/dist/themes/solarized-dark.json +80 -0
- package/dist/themes/tokyo-night.json +80 -0
- package/dist/themes/tomorrow-night-bright.json +84 -0
- package/dist/themes/tomorrow-night-burns.json +84 -0
- package/dist/themes/tomorrow-night.json +84 -0
- package/dist/themes/twilight.json +84 -0
- package/dist/themes/vague.json +84 -0
- package/dist/themes/vesper.json +84 -0
- package/dist/themes/xcode-dark-hc.json +84 -0
- package/docs/custom-provider.md +0 -1
- package/docs/plans/auto-model-routing-extension.md +490 -0
- package/package.json +3 -3
- package/dist/extensions/pi-powerline-footer/.github/workflows/test.yml +0 -27
- package/dist/extensions/pi-powerline-footer/CHANGELOG.md +0 -687
- package/dist/extensions/pi-powerline-footer/CONTRIBUTING.md +0 -16
- package/dist/extensions/pi-powerline-footer/README.md +0 -513
- package/dist/extensions/pi-powerline-footer/banner.png +0 -0
- package/dist/extensions/pi-powerline-footer/bash-mode/completion.ts +0 -586
- package/dist/extensions/pi-powerline-footer/bash-mode/editor.ts +0 -583
- package/dist/extensions/pi-powerline-footer/bash-mode/history.ts +0 -204
- package/dist/extensions/pi-powerline-footer/bash-mode/shell-session.ts +0 -286
- package/dist/extensions/pi-powerline-footer/bash-mode/transcript.ts +0 -108
- package/dist/extensions/pi-powerline-footer/bash-mode/types.ts +0 -60
- package/dist/extensions/pi-powerline-footer/cd-command.ts +0 -190
- package/dist/extensions/pi-powerline-footer/colors.ts +0 -70
- package/dist/extensions/pi-powerline-footer/context-usage.ts +0 -156
- package/dist/extensions/pi-powerline-footer/currency-rates.ts +0 -142
- package/dist/extensions/pi-powerline-footer/editor-composition.ts +0 -32
- package/dist/extensions/pi-powerline-footer/editor-performance.ts +0 -99
- package/dist/extensions/pi-powerline-footer/git-status.ts +0 -329
- package/dist/extensions/pi-powerline-footer/guide.ts +0 -220
- package/dist/extensions/pi-powerline-footer/icons.ts +0 -190
- package/dist/extensions/pi-powerline-footer/index.ts +0 -3428
- package/dist/extensions/pi-powerline-footer/lifecycle.ts +0 -10
- package/dist/extensions/pi-powerline-footer/package.json +0 -49
- package/dist/extensions/pi-powerline-footer/paths.ts +0 -22
- package/dist/extensions/pi-powerline-footer/powerline-config.ts +0 -446
- package/dist/extensions/pi-powerline-footer/presets.ts +0 -102
- package/dist/extensions/pi-powerline-footer/queue/store.ts +0 -313
- package/dist/extensions/pi-powerline-footer/queue/types.ts +0 -53
- package/dist/extensions/pi-powerline-footer/render-scheduler.ts +0 -29
- package/dist/extensions/pi-powerline-footer/segments.ts +0 -570
- package/dist/extensions/pi-powerline-footer/separators.ts +0 -57
- package/dist/extensions/pi-powerline-footer/session-usage.ts +0 -44
- package/dist/extensions/pi-powerline-footer/shortcuts.ts +0 -61
- package/dist/extensions/pi-powerline-footer/tests/bash-mode.test.ts +0 -1905
- package/dist/extensions/pi-powerline-footer/tests/cd-command.test.ts +0 -144
- package/dist/extensions/pi-powerline-footer/tests/context-usage.test.ts +0 -156
- package/dist/extensions/pi-powerline-footer/tests/custom-items.test.ts +0 -344
- package/dist/extensions/pi-powerline-footer/tests/editor-composition.test.ts +0 -48
- package/dist/extensions/pi-powerline-footer/tests/editor-performance.test.ts +0 -43
- package/dist/extensions/pi-powerline-footer/tests/editor-responsiveness.test.ts +0 -136
- package/dist/extensions/pi-powerline-footer/tests/fixed-editor-border.test.ts +0 -39
- package/dist/extensions/pi-powerline-footer/tests/git-optional-locks.test.ts +0 -64
- package/dist/extensions/pi-powerline-footer/tests/git-status.test.ts +0 -92
- package/dist/extensions/pi-powerline-footer/tests/guide.test.ts +0 -129
- package/dist/extensions/pi-powerline-footer/tests/jump-shortcuts.test.ts +0 -116
- package/dist/extensions/pi-powerline-footer/tests/mode-aware-trigger.test.ts +0 -79
- package/dist/extensions/pi-powerline-footer/tests/paths.test.ts +0 -63
- package/dist/extensions/pi-powerline-footer/tests/queue-store.test.ts +0 -65
- package/dist/extensions/pi-powerline-footer/tests/quit-cursor.test.ts +0 -14
- package/dist/extensions/pi-powerline-footer/tests/remaining-regressions.test.ts +0 -173
- package/dist/extensions/pi-powerline-footer/tests/session-usage.test.ts +0 -47
- package/dist/extensions/pi-powerline-footer/tests/stash-shortcut.test.ts +0 -37
- package/dist/extensions/pi-powerline-footer/tests/thinking-segment.test.ts +0 -76
- package/dist/extensions/pi-powerline-footer/tests/token-stats.test.ts +0 -249
- package/dist/extensions/pi-powerline-footer/tests/tps.test.ts +0 -39
- package/dist/extensions/pi-powerline-footer/tests/usage-display.test.ts +0 -237
- package/dist/extensions/pi-powerline-footer/tests/welcome.test.ts +0 -199
- package/dist/extensions/pi-powerline-footer/tests/working-vibes.test.ts +0 -317
- package/dist/extensions/pi-powerline-footer/theme.example.json +0 -24
- package/dist/extensions/pi-powerline-footer/theme.json +0 -12
- package/dist/extensions/pi-powerline-footer/theme.ts +0 -241
- package/dist/extensions/pi-powerline-footer/token-stats.ts +0 -304
- package/dist/extensions/pi-powerline-footer/tsconfig.json +0 -13
- package/dist/extensions/pi-powerline-footer/types.ts +0 -235
- package/dist/extensions/pi-powerline-footer/welcome-dismiss.ts +0 -34
- package/dist/extensions/pi-powerline-footer/welcome.ts +0 -709
- package/dist/extensions/pi-powerline-footer/working-vibes.ts +0 -721
- package/dist/extensions/preview-tools-disabled.test.ts +0 -37
- package/dist/extensions/preview-tools-disabled.ts +0 -11
- package/dist/themes/powerline-footer/theme.json +0 -33
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
name: Runtime/language detection
|
|
2
|
+
description: Request or report runtime/language detection behavior
|
|
3
|
+
title: "runtime: "
|
|
4
|
+
labels: ["runtime", "needs-triage"]
|
|
5
|
+
body:
|
|
6
|
+
- type: markdown
|
|
7
|
+
attributes:
|
|
8
|
+
value: |
|
|
9
|
+
Use this for Zentui footer runtime/language segments: missing runtimes, incorrect detection, version display, or new runtime support.
|
|
10
|
+
|
|
11
|
+
- type: checkboxes
|
|
12
|
+
id: preflight
|
|
13
|
+
attributes:
|
|
14
|
+
label: Pre-flight checks
|
|
15
|
+
options:
|
|
16
|
+
- label: I searched existing issues before opening this one.
|
|
17
|
+
required: true
|
|
18
|
+
- label: I checked whether the relevant runtime/version command is available in the same shell where Pi runs.
|
|
19
|
+
required: true
|
|
20
|
+
|
|
21
|
+
- type: dropdown
|
|
22
|
+
id: kind
|
|
23
|
+
attributes:
|
|
24
|
+
label: Request type
|
|
25
|
+
options:
|
|
26
|
+
- Existing runtime not detected
|
|
27
|
+
- Existing runtime detected incorrectly
|
|
28
|
+
- Add a new runtime/language
|
|
29
|
+
- Version command/display issue
|
|
30
|
+
validations:
|
|
31
|
+
required: true
|
|
32
|
+
|
|
33
|
+
- type: input
|
|
34
|
+
id: runtime
|
|
35
|
+
attributes:
|
|
36
|
+
label: Runtime or language
|
|
37
|
+
placeholder: "Node.js, Python, Rust, Zig, etc."
|
|
38
|
+
validations:
|
|
39
|
+
required: true
|
|
40
|
+
|
|
41
|
+
- type: textarea
|
|
42
|
+
id: project-files
|
|
43
|
+
attributes:
|
|
44
|
+
label: Project files and detection signals
|
|
45
|
+
description: List relevant files in the project root and subdirectories that should influence detection.
|
|
46
|
+
placeholder: |
|
|
47
|
+
package.json
|
|
48
|
+
.node-version
|
|
49
|
+
pyproject.toml
|
|
50
|
+
src/...
|
|
51
|
+
validations:
|
|
52
|
+
required: true
|
|
53
|
+
|
|
54
|
+
- type: textarea
|
|
55
|
+
id: version-output
|
|
56
|
+
attributes:
|
|
57
|
+
label: Version command output
|
|
58
|
+
description: Include the command and output, if applicable.
|
|
59
|
+
placeholder: |
|
|
60
|
+
$ node --version
|
|
61
|
+
v20.11.1
|
|
62
|
+
render: shell
|
|
63
|
+
|
|
64
|
+
- type: textarea
|
|
65
|
+
id: expected
|
|
66
|
+
attributes:
|
|
67
|
+
label: Expected Zentui segment
|
|
68
|
+
placeholder: "via v20.11.1"
|
|
69
|
+
validations:
|
|
70
|
+
required: true
|
|
71
|
+
|
|
72
|
+
- type: textarea
|
|
73
|
+
id: actual
|
|
74
|
+
attributes:
|
|
75
|
+
label: Actual Zentui segment
|
|
76
|
+
validations:
|
|
77
|
+
required: true
|
|
78
|
+
|
|
79
|
+
- type: input
|
|
80
|
+
id: zentui-version
|
|
81
|
+
attributes:
|
|
82
|
+
label: Zentui version
|
|
83
|
+
placeholder: "0.2.7 / main@abc123 / local checkout"
|
|
84
|
+
validations:
|
|
85
|
+
required: true
|
|
86
|
+
|
|
87
|
+
- type: input
|
|
88
|
+
id: pi-version
|
|
89
|
+
attributes:
|
|
90
|
+
label: Pi version
|
|
91
|
+
placeholder: "0.74.x"
|
|
92
|
+
validations:
|
|
93
|
+
required: true
|
|
94
|
+
|
|
95
|
+
- type: textarea
|
|
96
|
+
id: environment
|
|
97
|
+
attributes:
|
|
98
|
+
label: Environment
|
|
99
|
+
placeholder: |
|
|
100
|
+
OS:
|
|
101
|
+
Shell:
|
|
102
|
+
Terminal app:
|
|
103
|
+
Install source:
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
version: 2
|
|
2
|
+
|
|
3
|
+
updates:
|
|
4
|
+
# npm dependencies in this package
|
|
5
|
+
- package-ecosystem: "npm"
|
|
6
|
+
directory: "/"
|
|
7
|
+
schedule:
|
|
8
|
+
interval: "weekly"
|
|
9
|
+
target-branch: "main"
|
|
10
|
+
open-pull-requests-limit: 5
|
|
11
|
+
groups:
|
|
12
|
+
# Low-noise grouped PRs for minor and patch updates.
|
|
13
|
+
minor-and-patch:
|
|
14
|
+
patterns:
|
|
15
|
+
- "*"
|
|
16
|
+
update-types:
|
|
17
|
+
- "minor"
|
|
18
|
+
- "patch"
|
|
19
|
+
# Major npm updates are intentionally not auto-merged; keep them visible
|
|
20
|
+
# as a separate stream so reviewers can evaluate breaking changes.
|
|
21
|
+
major:
|
|
22
|
+
patterns:
|
|
23
|
+
- "*"
|
|
24
|
+
update-types:
|
|
25
|
+
- "major"
|
|
26
|
+
|
|
27
|
+
# GitHub Actions workflow versions
|
|
28
|
+
- package-ecosystem: "github-actions"
|
|
29
|
+
directory: "/"
|
|
30
|
+
schedule:
|
|
31
|
+
interval: "weekly"
|
|
32
|
+
target-branch: "main"
|
|
33
|
+
open-pull-requests-limit: 5
|
|
34
|
+
groups:
|
|
35
|
+
first-party-and-known:
|
|
36
|
+
patterns:
|
|
37
|
+
- "actions/*"
|
|
38
|
+
- "github/*"
|
|
39
|
+
update-types:
|
|
40
|
+
- "minor"
|
|
41
|
+
- "patch"
|
|
42
|
+
third-party-actions:
|
|
43
|
+
patterns:
|
|
44
|
+
- "*"
|
|
45
|
+
update-types:
|
|
46
|
+
- "minor"
|
|
47
|
+
- "patch"
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
## Summary
|
|
2
|
+
|
|
3
|
+
<!--
|
|
4
|
+
Briefly describe what this PR changes and why.
|
|
5
|
+
Focus on user-facing behavior: footer, editor, user-message styling, runtime/git detection, `/zentui` settings, config, or packaging.
|
|
6
|
+
Link related issues with "Closes #123" or "Refs #123" where applicable.
|
|
7
|
+
-->
|
|
8
|
+
|
|
9
|
+
## Screenshots / recordings
|
|
10
|
+
|
|
11
|
+
<!--
|
|
12
|
+
Required for footer, editor, user-message, or rendering changes whenever practical.
|
|
13
|
+
A short terminal recording (asciinema, GIF, or video) is preferred over a still image.
|
|
14
|
+
If the change is purely internal (build, types, tests, docs), say "N/A" and explain.
|
|
15
|
+
-->
|
|
16
|
+
|
|
17
|
+
## Testing
|
|
18
|
+
|
|
19
|
+
<!--
|
|
20
|
+
Run these locally before requesting review. Tick everything that applies.
|
|
21
|
+
-->
|
|
22
|
+
|
|
23
|
+
- [ ] `npm run verify`
|
|
24
|
+
- [ ] `npm run pack:check`
|
|
25
|
+
- [ ] Manual Pi test via `npm run pi:dev` (required for UI behavior changes)
|
|
26
|
+
- [ ] Added or updated tests where practical
|
|
27
|
+
|
|
28
|
+
## Checklist
|
|
29
|
+
|
|
30
|
+
- [ ] Preserved Nerd Font / private-use icon glyphs (no empty strings or replaced characters).
|
|
31
|
+
- [ ] Updated `README.md` or config docs if user-facing behavior changed.
|
|
32
|
+
- [ ] Kept the diff surgical: no unrelated refactors, formatting, or dependency churn.
|
|
33
|
+
- [ ] `extensions/zentui/index.ts` stays mostly orchestration; new logic lives in a focused module.
|
|
34
|
+
- [ ] Used a conventional commit-style PR title (e.g. `feat: add ...`, `fix: handle ...`).
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
name: CI
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
pull_request:
|
|
5
|
+
push:
|
|
6
|
+
branches:
|
|
7
|
+
- main
|
|
8
|
+
|
|
9
|
+
concurrency:
|
|
10
|
+
group: ci-${{ github.ref }}
|
|
11
|
+
cancel-in-progress: true
|
|
12
|
+
|
|
13
|
+
jobs:
|
|
14
|
+
verify:
|
|
15
|
+
runs-on: ubuntu-latest
|
|
16
|
+
|
|
17
|
+
steps:
|
|
18
|
+
- name: Checkout
|
|
19
|
+
uses: actions/checkout@v7
|
|
20
|
+
|
|
21
|
+
- name: Setup Node
|
|
22
|
+
uses: actions/setup-node@v7
|
|
23
|
+
with:
|
|
24
|
+
node-version: 24
|
|
25
|
+
cache: npm
|
|
26
|
+
|
|
27
|
+
- name: Install dependencies
|
|
28
|
+
run: npm ci
|
|
29
|
+
|
|
30
|
+
- name: Verify
|
|
31
|
+
run: npm run verify
|
|
32
|
+
|
|
33
|
+
- name: Dry-run pack
|
|
34
|
+
run: npm run pack:check
|
|
35
|
+
|
|
36
|
+
supported-pi-compatibility:
|
|
37
|
+
runs-on: ubuntu-latest
|
|
38
|
+
timeout-minutes: 20
|
|
39
|
+
strategy:
|
|
40
|
+
fail-fast: false
|
|
41
|
+
matrix:
|
|
42
|
+
pi-version: ["0.80.5", "0.82.1", "0.83.0"]
|
|
43
|
+
|
|
44
|
+
steps:
|
|
45
|
+
- name: Checkout
|
|
46
|
+
uses: actions/checkout@v7
|
|
47
|
+
|
|
48
|
+
- name: Setup Node
|
|
49
|
+
uses: actions/setup-node@v7
|
|
50
|
+
with:
|
|
51
|
+
node-version: 24
|
|
52
|
+
cache: npm
|
|
53
|
+
|
|
54
|
+
- name: Pin matching Pi package versions
|
|
55
|
+
env:
|
|
56
|
+
PI_VERSION: ${{ matrix.pi-version }}
|
|
57
|
+
run: |
|
|
58
|
+
npm pkg set "devDependencies.@earendil-works/pi-ai=$PI_VERSION"
|
|
59
|
+
npm pkg set "devDependencies.@earendil-works/pi-coding-agent=$PI_VERSION"
|
|
60
|
+
npm pkg set "devDependencies.@earendil-works/pi-tui=$PI_VERSION"
|
|
61
|
+
|
|
62
|
+
- name: Install dependencies
|
|
63
|
+
run: npm install --no-audit --no-fund
|
|
64
|
+
|
|
65
|
+
- name: Attest Pi package versions
|
|
66
|
+
env:
|
|
67
|
+
PI_VERSION: ${{ matrix.pi-version }}
|
|
68
|
+
run: |
|
|
69
|
+
npm ls --depth=0 @earendil-works/pi-ai @earendil-works/pi-coding-agent @earendil-works/pi-tui
|
|
70
|
+
node - <<'NODE'
|
|
71
|
+
for (const name of ["pi-ai", "pi-coding-agent", "pi-tui"]) {
|
|
72
|
+
const pkg = require(`./node_modules/@earendil-works/${name}/package.json`)
|
|
73
|
+
if (pkg.version !== process.env.PI_VERSION) throw new Error(`${pkg.name}: ${pkg.version}`)
|
|
74
|
+
console.log(pkg.name, pkg.version)
|
|
75
|
+
}
|
|
76
|
+
NODE
|
|
77
|
+
|
|
78
|
+
- name: Test supported Pi version
|
|
79
|
+
run: timeout --signal=TERM --kill-after=30s 15m npm test
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
name: Publish
|
|
2
|
+
run-name: Publish ${{ github.ref_name }}
|
|
3
|
+
|
|
4
|
+
on:
|
|
5
|
+
push:
|
|
6
|
+
tags:
|
|
7
|
+
- "v*.*.*"
|
|
8
|
+
|
|
9
|
+
permissions:
|
|
10
|
+
contents: read
|
|
11
|
+
id-token: write
|
|
12
|
+
|
|
13
|
+
jobs:
|
|
14
|
+
publish:
|
|
15
|
+
runs-on: ubuntu-latest
|
|
16
|
+
environment: npm-publish
|
|
17
|
+
|
|
18
|
+
steps:
|
|
19
|
+
- name: Checkout
|
|
20
|
+
uses: actions/checkout@v7
|
|
21
|
+
|
|
22
|
+
- name: Setup Node
|
|
23
|
+
uses: actions/setup-node@v7
|
|
24
|
+
with:
|
|
25
|
+
node-version: 24
|
|
26
|
+
registry-url: https://registry.npmjs.org
|
|
27
|
+
cache: npm
|
|
28
|
+
|
|
29
|
+
- name: Install dependencies
|
|
30
|
+
run: npm ci
|
|
31
|
+
|
|
32
|
+
- name: Verify
|
|
33
|
+
run: npm run verify
|
|
34
|
+
|
|
35
|
+
- name: Dry-run pack
|
|
36
|
+
run: npm run pack:check
|
|
37
|
+
|
|
38
|
+
- name: Check tag matches package version
|
|
39
|
+
run: |
|
|
40
|
+
VERSION=$(node -p "require('./package.json').version")
|
|
41
|
+
TAG="${GITHUB_REF_NAME#v}"
|
|
42
|
+
test "$VERSION" = "$TAG"
|
|
43
|
+
|
|
44
|
+
- name: Publish to npm
|
|
45
|
+
run: npm publish
|
|
46
|
+
|
|
47
|
+
release:
|
|
48
|
+
needs: publish
|
|
49
|
+
runs-on: ubuntu-latest
|
|
50
|
+
permissions:
|
|
51
|
+
contents: write
|
|
52
|
+
|
|
53
|
+
steps:
|
|
54
|
+
- name: Create GitHub release
|
|
55
|
+
env:
|
|
56
|
+
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
57
|
+
run: |
|
|
58
|
+
REPO="${{ github.repository }}"
|
|
59
|
+
if gh release view "${GITHUB_REF_NAME}" --repo "$REPO" >/dev/null 2>&1; then
|
|
60
|
+
echo "Release ${GITHUB_REF_NAME} already exists; skipping."
|
|
61
|
+
else
|
|
62
|
+
gh release create "${GITHUB_REF_NAME}" --repo "$REPO" --generate-notes --title "${GITHUB_REF_NAME}"
|
|
63
|
+
fi
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
## What this app is
|
|
2
|
+
|
|
3
|
+
Zentui is a Pi extension package that gives Pi a Starship-inspired footer and an Opencode-style input UI.
|
|
4
|
+
|
|
5
|
+
It shows useful session/project state at a glance:
|
|
6
|
+
|
|
7
|
+
- current directory
|
|
8
|
+
- git branch and git status
|
|
9
|
+
- detected runtime/language and version
|
|
10
|
+
- context usage
|
|
11
|
+
- input/output token counts
|
|
12
|
+
- running session cost
|
|
13
|
+
- model/provider in the editor frame
|
|
14
|
+
|
|
15
|
+
## How it works
|
|
16
|
+
|
|
17
|
+
Pi loads the package from `package.json` via:
|
|
18
|
+
|
|
19
|
+
```json
|
|
20
|
+
"pi": {
|
|
21
|
+
"extensions": ["./extensions"]
|
|
22
|
+
}
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
The extension entry point is:
|
|
26
|
+
|
|
27
|
+
```text
|
|
28
|
+
extensions/zentui/index.ts
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
On `session_start`, Zentui installs:
|
|
32
|
+
|
|
33
|
+
- a custom footer (`footer.ts`)
|
|
34
|
+
- a custom editor (`ui.ts`)
|
|
35
|
+
- custom user-message styling (`user-message.ts`)
|
|
36
|
+
- a project refresh timer for git/runtime status
|
|
37
|
+
|
|
38
|
+
Most updates happen by syncing shared footer state and asking the TUI to re-render after Pi events like model changes, message completion, tool completion, and compaction.
|
|
39
|
+
|
|
40
|
+
## Product decision: TUI composability
|
|
41
|
+
|
|
42
|
+
Zentui is a set of independently selectable TUI components, not a bundled UI mode. Users can adopt User messages, Editor, Working line, selector borders, Footer, or future surfaces individually while leaving every other surface native or controlled by another extension.
|
|
43
|
+
|
|
44
|
+
- Enabling or configuring one component must never require, toggle, restyle, or silently rewrite another. Each feature needs its own canonical config choice (`enabled` and/or `style` as appropriate), settings control, install/reconcile/dispose lifecycle, and ownership boundary.
|
|
45
|
+
- Disabled or native must leave that surface alone. Shared infrastructure must remain behavior-neutral.
|
|
46
|
+
- Prefer public Pi APIs. Safely decorate, aggregate, or delegate where possible; clean up only owned state; and fail open to native or predecessor UI.
|
|
47
|
+
- Treat the unkeyed Working line as controlled exclusivity with best-effort release, not true aggregation.
|
|
48
|
+
- Keep `index.ts` orchestration-only.
|
|
49
|
+
|
|
50
|
+
## Important files
|
|
51
|
+
|
|
52
|
+
- `extensions/zentui/index.ts` — extension orchestration and Pi event wiring.
|
|
53
|
+
- `extensions/zentui/config.ts` — config file path, defaults, and config merging.
|
|
54
|
+
- `extensions/zentui/footer.ts` — footer/statusline rendering.
|
|
55
|
+
- `extensions/zentui/style.ts` — Starship-style terminal style rendering (`bold purple`, `fg:202`, `bg:blue`, etc.).
|
|
56
|
+
- `extensions/zentui/format.ts` — small formatting helpers for counts, labels, context, cwd, and runtime segments.
|
|
57
|
+
- `extensions/zentui/state.ts` — footer state shape and sync logic.
|
|
58
|
+
- `extensions/zentui/git.ts` — git porcelain parsing and status summary.
|
|
59
|
+
- `extensions/zentui/runtime.ts` — runtime/language detection and version lookup.
|
|
60
|
+
- `extensions/zentui/settings-command.ts` — `/zentui` settings UI for color-source preferences.
|
|
61
|
+
- `extensions/zentui/ui.ts` — custom editor frame.
|
|
62
|
+
- `extensions/zentui/user-message.ts` — prompt-box-style user message rendering.
|
|
63
|
+
|
|
64
|
+
## Config
|
|
65
|
+
|
|
66
|
+
User config is created at:
|
|
67
|
+
|
|
68
|
+
```text
|
|
69
|
+
~/.pi/agent/zentui.json
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
Use `colors` for Starship-style color strings, hex/256-color values, or Pi theme tokens. Canonical color-source ownership is independent through `components.editor.colorSource`, `components.userMessages.colorSource`, `components.selectorBorders.colorSource`, and `components.footer.colorSource`. `/zentui` exposes separate controls for Editor, previous User messages, selector borders, and—while Starship is selected—the Footer; changing one does not change the others.
|
|
73
|
+
|
|
74
|
+
## Things to preserve
|
|
75
|
+
|
|
76
|
+
- Keep `index.ts` mostly orchestration; put rendering/formatting logic in focused modules.
|
|
77
|
+
- Preserve Nerd Font icons. Many are private-use Unicode characters and can be easy to accidentally replace with empty strings.
|
|
78
|
+
- Runtime color values should follow Starship's terminal style strings.
|
|
79
|
+
- `user-message.ts` intentionally patches `UserMessageComponent`; treat it as fragile and avoid changing it unless necessary.
|
|
80
|
+
- Silent fallbacks are intentional for git/runtime/config failures so the UI does not break the session.
|
|
81
|
+
|
|
82
|
+
## Development
|
|
83
|
+
|
|
84
|
+
Use these commands before shipping changes:
|
|
85
|
+
|
|
86
|
+
```bash
|
|
87
|
+
npm run fmt
|
|
88
|
+
npm run verify
|
|
89
|
+
npm run pack:check
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
For local Pi testing:
|
|
93
|
+
|
|
94
|
+
```bash
|
|
95
|
+
npm run pi:dev
|
|
96
|
+
npm run pi:install-local
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
## Commit style
|
|
100
|
+
|
|
101
|
+
Use conventional commit messages that match the existing history:
|
|
102
|
+
|
|
103
|
+
```text
|
|
104
|
+
feat: add user-facing capability
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
Keep the subject lowercase after the type, imperative, and concise. Do not use a trailing period.
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
# Contributing to pi-zentui
|
|
2
|
+
|
|
3
|
+
Thanks for your interest in pi-zentui. This document covers the workflow and conventions used in this repository.
|
|
4
|
+
|
|
5
|
+
## Development setup
|
|
6
|
+
|
|
7
|
+
Requirements: Node.js and npm. pi-zentui is a Pi extension package, so you'll also want a working `pi` binary for local testing.
|
|
8
|
+
|
|
9
|
+
```bash
|
|
10
|
+
npm install
|
|
11
|
+
npm run verify # biome check + tsc --noEmit + vitest run
|
|
12
|
+
npm run pack:check # npm pack --dry-run, sanity-checks published contents
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
Before opening a pull request, please run `npm run fmt` and then `npm run verify` again.
|
|
16
|
+
|
|
17
|
+
## Local Pi testing
|
|
18
|
+
|
|
19
|
+
The package is loaded by Pi from `package.json` via the `pi.extensions` field. Use the dev scripts to iterate without publishing:
|
|
20
|
+
|
|
21
|
+
```bash
|
|
22
|
+
npm run pi:dev # runs pi with only this extension loaded
|
|
23
|
+
npm run pi:install-local # installs the local checkout into your pi extensions
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
If your `pi` binary is not at the default path, override it:
|
|
27
|
+
|
|
28
|
+
```bash
|
|
29
|
+
PI_BIN=/absolute/path/to/pi npm run pi:dev
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
Manual testing is required for any change that affects the footer, editor, user-message styling, runtime/git detection, colors, or `/zentui` settings.
|
|
33
|
+
|
|
34
|
+
## Coding expectations
|
|
35
|
+
|
|
36
|
+
Please follow the conventions already in this repo. The most important ones:
|
|
37
|
+
|
|
38
|
+
- **Preserve Nerd Font / private-use icon glyphs.** Many of the icons are private-use Unicode characters; it is easy to replace them with empty strings by accident.
|
|
39
|
+
- **Keep `extensions/zentui/index.ts` orchestration-focused.** Rendering, formatting, and parsing logic belong in focused modules such as `footer.ts`, `format.ts`, `style.ts`, `git.ts`, `runtime.ts`, `ui.ts`, or `user-message.ts`.
|
|
40
|
+
- **Use focused modules.** New rendering or formatting code should generally go into the matching module rather than being inlined.
|
|
41
|
+
- **Silent fallbacks are intentional.** Git, runtime detection, and config lookups fail silently so that a broken environment does not break the session. Do not add throws or noisy errors for these paths without a strong reason.
|
|
42
|
+
- **`user-message.ts` patches `UserMessageComponent`.** Treat it as fragile and avoid changes unless they are necessary.
|
|
43
|
+
- **Runtime color values follow Starship's terminal style strings** (e.g. `bold purple`, `fg:202`, `bg:blue`).
|
|
44
|
+
|
|
45
|
+
## Pull request expectations
|
|
46
|
+
|
|
47
|
+
- Describe the user-facing behavior change in the PR summary.
|
|
48
|
+
- Include screenshots or a short recording for footer, editor, user-message, or rendering changes.
|
|
49
|
+
- Run `npm run verify` and `npm run pack:check` locally.
|
|
50
|
+
- Keep the diff surgical. Don't refactor adjacent code, reformat unrelated files, or upgrade dependencies that aren't part of the fix.
|
|
51
|
+
- Use a conventional commit-style subject (e.g. `feat: add ...`, `fix: handle ...`), lowercase after the type, imperative, and concise. No trailing period.
|
|
52
|
+
- Reviews are assigned to `@lmilojevicc` via `CODEOWNERS`.
|
|
53
|
+
|
|
54
|
+
## Reporting issues
|
|
55
|
+
|
|
56
|
+
Please use the GitHub issue forms in [`.github/ISSUE_TEMPLATE/`](.github/ISSUE_TEMPLATE/) so reports include the environment, config, and Pi/Zentui version context needed to triage them:
|
|
57
|
+
|
|
58
|
+
- Bug report
|
|
59
|
+
- Rendering, icon, or color issue
|
|
60
|
+
- Feature request
|
|
61
|
+
- Runtime/language detection
|
|
62
|
+
- Config or usage question
|
|
63
|
+
|
|
64
|
+
For core Pi issues outside Zentui's footer, editor, and message styling, please open the issue upstream in the Pi project instead.
|
|
65
|
+
|
|
66
|
+
## License
|
|
67
|
+
|
|
68
|
+
By contributing, you agree that your contributions will be licensed under the MIT license that covers this project. See [`LICENSE`](LICENSE) for the full text.
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2025-2026 Luka
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|