v0.1.0
Installation
One-line install (Linux x64):
curl -fsSL https://raw.githubusercontent.com/rhaymisonbetini/Phplay/main/install.sh | bashManual download: grab the .AppImage below, chmod +x it, and run.
Requires PHP 8.1+ installed on your system.
What's Changed
- [UX #1] Design System: tokens de cor, tipografia, espaçamento e Monaco theme by @rhaymisonbetini in #27
- [UX #2,3,4,7,8] Layout completo: split, tab bar, status bar, output panel, welcome screen by @rhaymisonbetini in #28
- [UX #5,6] PHP Selection UI + Project Detection feedback by @rhaymisonbetini in #29
- feat(#19): Framework Detection — Laravel, Symfony, WordPress, PHP puro by @rhaymisonbetini in #30
- feat(#25,#23): Keyboard shortcuts + snippet auto-save persistence by @rhaymisonbetini in #31
- feat(#24): Recent projects — quick-open list with auto-cleanup by @rhaymisonbetini in #32
- feat(#20): Laravel bootstrap — execute snippets in full Laravel context by @rhaymisonbetini in #33
- feat(#26): electron-builder Linux build + GitHub Actions CI by @rhaymisonbetini in #34
- fix(lsp): pathToUri seguro via pathToFileURL nativo by @rhaymisonbetini in #55
- fix(editor): watcher combinado com immediate:true — didOpen sempre dispara by @rhaymisonbetini in #56
- feat(lsp): LSP state machine — stopped/starting/initializing/ready/error by @rhaymisonbetini in #57
- feat(lsp): Logger.ts + lsp:restart + stderr logging by @rhaymisonbetini in #58
- fix(editor): Monaco worker real via Vite ?worker import by @rhaymisonbetini in #59
- feat(workspace): WorkspaceService — identidade SHA-256 e storage isolado por projeto by @rhaymisonbetini in #60
- feat(ipc): IpcResult envelope tipado para handlers LSP críticos by @rhaymisonbetini in #61
- feat(laravel): ComposerMetadataReader — parse composer.json/lock by @rhaymisonbetini in #62
- feat(laravel): LaravelDiscoveryService — routes, commands, models, cache by @rhaymisonbetini in #63
- feat(laravel): LaravelStubGenerator — stubs de facades e models para Intelephense by @rhaymisonbetini in #64
- feat(laravel): LaravelCompletionProvider — completions semânticas de route() e Artisan::call() by @rhaymisonbetini in #65
- feat(execution): PhpExecutionService cancellable + botão Stop + ESC by @rhaymisonbetini in #66
- feat(output): streaming stdout incremental no OutputPanel by @rhaymisonbetini in #67
- feat(output): structured exception parsing — stack frames estruturados by @rhaymisonbetini in #68
- feat(output): empty state compacto + Save + truncagem de output longo by @rhaymisonbetini in #69
- feat(workbench): command palette Ctrl+Shift+P by @rhaymisonbetini in #70
- fix(lsp): ELECTRON_RUN_AS_NODE + race condition no exit handler by @rhaymisonbetini in #71
- fix(editor): completion/hover/signature sempre vazios por model.uri mismatch by @rhaymisonbetini in #72
- feat(workbench): LanguageServerManager — LSP por workspace com restart isolado (#51) by @rhaymisonbetini in #73
- ci: GitHub Actions — typecheck, lint, test e build Linux (#52) by @rhaymisonbetini in #74
- test(fixtures): fixtures completos para testes unitários (#53) by @rhaymisonbetini in #75
- test: unit tests para caminhos críticos — JSON-RPC, PhpExecution, LaravelBootstrap (#54) by @rhaymisonbetini in #76
- feat(ui-theme): Theme Engine — tokens, dracula-neon, theme-provider (#77) by @rhaymisonbetini in #93
- feat(ui-theme): Dracula Neon — paleta, glow system e rounded design (#78) by @rhaymisonbetini in #94
- feat(font): Font System — JetBrains Mono + Inter bundled offline (#80) by @rhaymisonbetini in #95
- feat(workbench): spacing refinement — SidebarRail e SessionTabBar (#79) by @rhaymisonbetini in #96
- feat(runtime): SmartPhpRuntime — auto-wrap última expressão sem echo (#85) by @rhaymisonbetini in #97
- feat(runtime): output serializers — phplay_render estruturado + SmartOutputRenderer (#86) by @rhaymisonbetini in #98
- feat(workbench): smart output renderer — inspectors Vue para output estruturado (#87) by @rhaymisonbetini in #99
- feat(workbench): streaming output — RAF buffer, auto-scroll inteligente (#90) by @rhaymisonbetini in #100
- feat(workbench): Object Tree Viewer — inspector recursivo collapse/expand (#88) by @rhaymisonbetini in #101
- feat(workbench): syntax highlight no output — var_dump, JSON, stack trace (#89) by @rhaymisonbetini in #102
- feat(workbench): History Sidebar — snippets com timestamps, favoritos e busca (#81) by @rhaymisonbetini in #103
- feat(ui-theme): Theme Sidebar — Midnight, Nord e seletor de temas integrado (#82) by @rhaymisonbetini in #104
- feat(editor): Monaco refinement — suggest preview, bracket color pool, hover tokens (#91) by @rhaymisonbetini in #105
- feat(workbench): Logs Sidebar — visualizador de logs internos (#84) by @rhaymisonbetini in #106
- feat(ai): AI Sidebar — Claude chat com streaming, templates Explain/Fix/Refactor (#83) by @rhaymisonbetini in #107
- feat(ui): Microinteractions — fade, sidebar-slide, neon-pulse e running-pulse (#92) by @rhaymisonbetini in #108
- fix(ci): corrigir erros de typecheck e workflow quebrado by @rhaymisonbetini in #109
- feat(runtime): capturar return explícito no snippet (#110) by @rhaymisonbetini in #117
- feat(runtime): structured payload — phplay_serialize, model key, collection full items (#112) by @rhaymisonbetini in #118
- test(runtime): edge cases do LastExpressionDetector (#111) by @rhaymisonbetini in #119
- feat(ui): ModelInspector exibe primary key no header (#113) by @rhaymisonbetini in #120
- feat(ui): CollectionRenderer — auto-expand, atributos inline, empty state (#114) by @rhaymisonbetini in #121
- feat(ui): eliminar flicker do output estruturado (#115) by @rhaymisonbetini in #122
- test(output): expand SmartOutputRenderer coverage — model key, collection items, float, exception (#116) by @rhaymisonbetini in #123
- feat(snippets): save code as snippet — bookmark button + Snippets sidebar (#124) by @rhaymisonbetini in #126
- feat(ai): GPT (OpenAI) provider — tabs Claude/GPT + chaves separadas (#125) by @rhaymisonbetini in #127
- feat(ui): aesthetic redesign — PHP purple accent, logo glow, clean sidebar by @rhaymisonbetini in #128
- Feat/UI aesthetic redesign by @rhaymisonbetini in #129
New Contributors
- @rhaymisonbetini made their first contribution in #27
Full Changelog: https://github.com/rhaymisonbetini/Phplay/commits/v0.1.0