Repository navigation
Releases
Pablitus Prompt Framework (PPF)
🚀 Pablitus Prompt Framework (PPF) v1.5.1 — Prompt modular para PowerShell
Lanzamiento estable — Bootstrap rápido, temas PowerLine, núcleo .NET opt-in, Fase 3C (transient, tooltips, right prompt), Fase 3D (multi-shell, packaging) y Fase 3E (soporte completo para segmentos de Oh My Posh).
Esta versión consolida Pablitus Prompt Framework (PPF) como un framework modular para construir prompts de PowerShell con una arquitectura clara, rápida y personalizable. PPF separa la recolección de datos, la construcción del contexto, el middleware, los segmentos, los temas y el renderizado en capas independientes.
El resultado es un prompt propio, comprensible y extensible, sin depender de servicios externos ni de una configuración opaca.
🔧 Innovaciones técnicas en v1.5.1
- Bootstrap rápido: las fuentes modulares se leen en orden de dependencia, se concatenan y se ejecutan una sola vez. El modo activo se expone en
$global:PPF_BootstrapMode(FastoModular). - Cargador modular de compatibilidad: se puede forzar con
$env:PPF_USE_MODULAR_LOADER = "1"para cobertura con Pester o depuración archivo por archivo. - Omisión de proveedores ocultos:
$global:PPF_SkipHiddenProviders = $trueevita ejecutar proveedores cuyos segmentos están ocultos por el tema activo. - 13 proveedores integrados: Session, WSL, Path, Project, Git, Docker, Python, Node, DotNet, Kubernetes, Battery, CPU y Memory.
- 14 segmentos visuales: Session, Project, Path, Git, Python, Node, Docker, WSL, Battery, CPU, Memory, Kubernetes, DotNet y Time.
- 8 renderers: Plain, Minimal, JSON, ANSI, PowerLine, Markdown, HTML y Rich.
- 12 temas integrados: Default, Nord, Dracula, Catppuccin, Kali, Pablitus, Pablitus Dark, Pablitus Light, Pablitus Neon, Pablitus Matrix, Pablitus Ocean y Pablitus Sunset.
- PowerLine truecolor: bloques con fondos de 24 bits, separadores triangulares y diamantes de apertura/cierre para Dracula, Nord, Catppuccin y Kali.
- Temas personalizados:
Import-PromptThemepermite importar archivos o directorios completos sin modificar el repositorio. - Segmento Time con reloj: el segmento usa el glifo de reloj de Nerd Font (
U+F017). - Caché en memoria y disco: reutilización de información con TTL y persistencia opcional.
- Configuración flexible: importación/exportación JSON y PSD1, además de recarga en caliente.
- Sistema de eventos: hooks para
BeforeRender,AfterRender,ThemeChanged,ConfigurationChangedyModuleLoaded. - Sampler de CPU: recolección en segundo plano respaldado por runspaces.
- Git watcher: seguimiento del estado del repositorio sin bloquear el prompt.
- Diagnóstico y benchmarks:
Get-PromptHealth,Test-PromptFramework,Measure-Prompt,Measure-PromptDetailedyMeasure-PromptCacheComparison. - Multiplataforma: Windows, Linux y macOS con PowerShell 7+.
- Calidad: suite de Pester, pruebas de resiliencia, smoke tests Fast/Modular y PSScriptAnalyzer.
🆕 Fase 3C — Prompt transitorio, tooltips y right prompt
- Right prompt: bloque
type: "rprompt"alineado a la derecha del prompt principal. Soportafiller(texto repetido entre bloques) yoverflow(hideubreak). Se compone con el prompt principal cuando se conoce el ancho de terminal (TerminalWidth). - Prompt transitorio:
template.transientPromptdefine el prompt que se muestra tras aceptar un comando. Soportatemplate,right_template,filler,newline,foregroundybackground. Se expone conGet-PromptString -Transient. - Tooltips:
tooltipsdefine segmentos right-aligned que se muestran al escribir palabras clave (tips).tooltips_actioncontrola si reemplazan (replace, predeterminado), extienden (extend) o anteponen (prepend) el right prompt actual. Se expone conGet-PromptTooltip -Command <cmd>. - Núcleo .NET:
PromptEngine.RenderTransient()yPromptEngine.RenderTooltipAsync()renderizan estas funcionalidades de forma determinista y testeable. - CLI:
ppf render --transient,ppf render --tooltip <comando>,ppf render --terminal-width <n>.
Ejemplos rápidos
# Habilitar el núcleo .NET (requerido para Fase 3C)
$env:PPF_USE_DOTNET_CORE = "1"
Import-Module PablitusPrompt -Force
# Right prompt: se combina con el prompt principal usando TerminalWidth
Get-PromptString -TerminalWidth 80
# Prompt transitorio: se muestra tras aceptar un comando
Get-PromptString -Transient -TerminalWidth 80
# Tooltip activado por la palabra clave "git", alineado a derecha desde la columna 5
Get-PromptTooltip -Command "git" -TerminalWidth 80 -Column 5tooltipsAction controla cómo se combina el tooltip con el right prompt actual: replace (predeterminado, reemplaza), extend (añade al final) o prepend (antepone al inicio).
🆕 Fase 3D — Multi-shell y packaging
- Empaquetado para PowerShell Gallery: el módulo se distribuye como
.nupkgademás del ZIP tradicional. Generado conbuild.ps1. - Instalación desde PowerShell Gallery:
Install-Module -Name PablitusPrompt -Scope CurrentUser. - Multi-shell: scripts de inicialización en
src/ShellInit/para usar PPF desde bash, zsh, fish y cmd invocando apwsh:ppf.bash—sourceen~/.bashrcppf.zsh—sourceen~/.zshrcppf.fish—sourceen~/.config/fish/config.fishppf.cmd— macro o AutoRun en cmd
- CI: validación del
.nuspec, ejecución debuild.ps1, subida de artefactos.nupkgy.zip.
🆕 Fase 3E — Soporte completo para segmentos de Oh My Posh
- 40 proveedores de segmento .NET nuevos para compatibilidad total con temas de Oh My Posh:
- Cloud: aws, az, azure, azd, az_functions, gcp, firebase
- Sistema: battery, cmd_duration
- Contenedores: docker, docker_context
- .NET: dotnet
- Git: gitcommit, gitversion
- Go: go, golang
- Kubernetes: helm, kubernetes, kubectl
- JavaScript/TypeScript: node, npm, npx, pnpm, yarn, bun, deno
- Python: python
- Terraform: terraform, terraform_required_version
- Build tools: gradle, mvn, mvnw
- Ruby/Rust/Cargo: ruby, rust, cargo
- PHP: php, composer
- Swift/Kotlin/Scala: swift, kotlin, scala
- Total: 46 tipos de segmento soportados (6 built-in + 40 de Oh My Posh).
- Nerd Font automática: el instalador (
Instalar-PPF.ps1) descarga e instala JetBrainsMono Nerd Font automáticamente desde el release de GitHub (licencia SIL OFL, distribución libre permitida), eliminando la dependencia de terceros.
Importar temas de Oh My Posh
Import-Module PablitusPrompt -Force
$env:PPF_USE_DOTNET_CORE = "1"
Import-PPFDotNetTheme -Path "ruta\al\tema.omp.json" -Activate -IgnoreUnsupported
Get-PromptString -TerminalWidth 120 -NoColor🆕 Instalador mejorado (Instalar-PPF.ps1)
- Copia
src/completo al módulo de PowerShell - Copia el núcleo .NET compilado (DLL, PDB, deps.json) a
dotnet/publish/ - Descarga e instala JetBrainsMono Nerd Font automáticamente (fuente primaria: release de GitHub, respaldo: nerd-fonts oficial)
- Lista los temas disponibles al finalizar
🚀 Guía de instalación
📦 Requisitos
- PowerShell 7.0 o superior.
- Windows, Linux o macOS.
- El instalador descarga e instala JetBrainsMono Nerd Font automáticamente.
- Git, Node, Python, Docker o Kubernetes son opcionales; sus segmentos se degradan si no están disponibles.
⚡ Importar el módulo
git clone https://github.com/Pablitus666/PablitusPrompt.git
.\Instalar-PPF.ps1
Import-Module PablitusPrompt -ForceTambién se puede usar el bootstrap:
. .\PablitusPrompt\src\Bootstrap.ps1🎨 Configurar el prompt
Agrega un bloque como este a tu $PROFILE y ajusta la ruta:
$PPF = "D:\PablitusPrompt\src"
if (Test-Path (Join-Path $PPF "Bootstrap.ps1")) {
try {
. (Join-Path $PPF "Bootstrap.ps1")
$env:PPF_USE_DOTNET_CORE = "1"
Set-PromptTheme -Name "Pablitus Minimal"
$global:PPF_SkipHiddenProviders = $true
function global:prompt {
try {
$context = Invoke-Prompt
Get-PromptString -Context $context -Renderer "PowerLine"
}
catch {
"PS $($executionContext.SessionState.Path.CurrentLocation)$('>' * ($nestedPromptLevel + 1)) "
}
}
}
catch {
Write-Warning "[PPF] No se pudo cargar el prompt: $_"
}
}El try/catch evita que un fallo de un proveedor o renderer deje la consola sin prompt.
🧩 Cambiar de tema
Set-PromptTheme -Name "Dracula"
Set-PromptTheme -Name "Nord"
Set-PromptTheme -Name "Catppuccin"
Set-PromptTheme -Name "Kali"
Set-PromptTheme -Name "Default"
Set-PromptTheme -Name "Pablitus"
Set-PromptTheme -Name "Pablitus Dark"
Set-PromptTheme -Name "Pablitus Light"
Set-PromptTheme -Name "Pablitus Neon"
Set-PromptTheme -Name "Pablitus Matrix"
Set-PromptTheme -Name "Pablitus Ocean"
Set-PromptTheme -Name "Pablitus Sunset"
Set-PromptTheme -Name "Pablitus Forest"
Set-PromptTheme -Name "Pablitus Cyberpunk"🛠️ Temas personalizados
Import-PromptTheme -Path "$HOME\Documents\PowerShell\Themes\MyTheme.Theme.ps1"
Set-PromptTheme -Name "MyTheme"También se puede importar un directorio completo:
Import-PromptTheme -Path "$HOME\Documents\PowerShell\Themes"El contrato completo está documentado en docs/Themes.md y hay un ejemplo en examples/Themes/Sunset.Theme.ps1.
✨ Especificaciones de software
- Plataforma: Windows, Linux y macOS.
- Motor: PowerShell 7+.
- Arquitectura: modular, con capas para Core, Configuration, Utils, Modules, Themes y Renderers.
-...