NPSharp Desktop e Mobile
July 21, 2026 ยท View on GitHub
O NPSharp usa a mesma base renderer para Electron, Capacitor e fallback web. A camada src/renderer/services/platform.ts detecta o ambiente e src/renderer/services/api.ts escolhe a implementacao correta para filesystem, settings, Git, terminal, runtimes e Live Server.
Plataformas
- Electron Desktop: usa
window.npsharpApiouwindow.npsharpvindo do preload. Tem filesystem nativo, Git real, terminal real, runtimes locais, diagnosticos Java e Live Server Node. - Capacitor Mobile: usa
Capacitor.isNativePlatform()e@capacitor/filesystem. Tem workspace mobile no sandbox do app, Notes, settings, temas e preview HTML. Git, terminal real, runtimes locais e Live Server Node ficam em modo limitado. - Web/dev fallback: usa memoria/localStorage para settings, sessao e arquivos basicos. Serve para desenvolvimento do renderer sem Electron nem app nativo.
Mobile Workspace
No mobile nao existe um workspace arbitrario do sistema como no desktop. O NPSharp separa dados internos da area de arquivos do usuario:
Directory.Data/NPSharp/settings.json
Directory.Data/NPSharp/session.json
Documents/NPSharp/notes.nps.md
Documents/NPSharp/workspaces/
Settings, sessao e configuracoes internas usam Directory.Data e nao dependem da permissao publica de armazenamento. Notes, Explorer, busca e workspaces usam Documents/NPSharp; antes da primeira operacao o app chama Filesystem.checkPermissions()/Filesystem.requestPermissions(). Se a permissao for negada, a operacao e interrompida com uma mensagem clara ao usuario.
O Command Center mostra "Abrir workspace mobile" e cria/abre pastas dentro de Documents/NPSharp/workspaces apos a autorizacao do sistema.
Recursos
- Desktop: Command Center, Notes, Source Control/Git, terminal, Live Server, Run, Theme Lab, settings, diagnosticos e filesystem completo seguem pelo backend Electron/Node.
- Mobile: Command Center, Notes, Theme Lab, settings, editor, Explorer, busca local no sandbox e preview HTML funcionam sem backend Node.
- Mobile limitado: Source Control mostra modo limitado; Git nativo completo depende de backend futuro. Terminal vira Output/Command Log. Run nao tenta executar Node/Python/Java locais. Live Server nao inicia servidor Node e usa preview HTML quando possivel.
Scripts
npm run typecheck
npm run build:renderer
npm run build:electron
npm run build:mobile
npm run cap:sync
npm run android:open
npm run build continua sendo o build/package desktop existente. Para mobile, prefira npm run build:mobile ou npm run cap:sync, que geram o renderer e sincronizam o Android sem empacotar Electron.
Android
O Android usa:
appId/applicationId: br.com.corelabs.npsharp
appName: NPSharp
webDir: dist
O manifesto declara READ_EXTERNAL_STORAGE ate Android 12L, WRITE_EXTERNAL_STORAGE ate Android 10 e requestLegacyExternalStorage para compatibilidade com Android 10. Em Android 11 ou superior, Directory.Documents continua limitado pelo proprio sistema aos arquivos/pastas que o app criou.
Depois de alterar assets ou dependencias Capacitor:
npm run cap:sync
Abra o projeto nativo com:
npm run android:open
Builds Gradle/APK/AAB nao devem ser versionados.
Limitacoes atuais
- Git nativo no mobile ainda nao esta implementado.
- Terminal real no mobile ainda nao existe.
- Runtimes locais para Java, Python, Node e outras linguagens dependem de backend nativo futuro.
- Live Server Node e PHP continuam desktop-only; HTML usa preview local no mobile.