Skip to content

feat: optional .NET SDK install (Desktop & Server) - #19

Open
brunovicenteb wants to merge 6 commits into
promovaweb:mainfrom
brunovicenteb:main
Open

feat: optional .NET SDK install (Desktop & Server)#19
brunovicenteb wants to merge 6 commits into
promovaweb:mainfrom
brunovicenteb:main

Conversation

@brunovicenteb

Copy link
Copy Markdown

Summary

This PR adds an optional .NET SDK installation path to SetupVibe Desktop and Server, controlled by CLI flags, with Linux (APT + fallback script) and macOS (dotnet-install.sh) support. It also fixes line endings for shell scripts, improves roadmap / final summary labels when .NET is requested or already present, and bumps documentation and version metadata.

What’s included

.NET installation

  • --install-dotnet — installs the .NET SDK with default channel aligned to .NET 10 (LTS).
  • --install-dotnet=8|9|10 — installs the chosen major SDK series.
  • Server: flag is compatible with existing --manager (any order).
  • Linux: Microsoft APT repo via packages-microsoft-prod when possible; fallback to official dotnet-install.sh to ~/.dotnet.
  • macOS (Desktop): SDK via dotnet-install.sh under ~/.dotnet.
  • Execution point: Desktop — end of step 5 (Languages); Server — start of step 7 (before Node / AI CLI tools).

Shell environment

  • conf/zshrc-*.zsh: if ~/.dotnet exists, sets DOTNET_ROOT and extends PATH (~/.dotnet, ~/.dotnet/tools).

Roadmap & installation summary

  • update_steps_dotnet_labels() runs before the interactive roadmap so step titles reflect .NET when:
    • --install-dotnet is passed, or
    • an existing dotnet is detected (paths such as ~/.dotnet/dotnet, /usr/bin/dotnet, /usr/share/dotnet/dotnet, plus bash -c with PATH including snap/bin — avoids fragile bash -l / missed APT installs).

Repository hygiene

  • .gitattributes: *.sh text eol=lf so Bash on Linux/macOS does not hit $'\r': command not found.
  • Shell scripts normalized to LF where needed.

Versioning & docs

  • Version bumped (current: v0.41.9 in scripts and synced docs).
  • CHANGELOG.md entries for the feature, roadmap labels, and .NET detection fix.
  • README, docs/**, AGENTS.md / CLAUDE.md / GEMINI.md updated for flags, behaviour, and version.

How to test

Desktop (local clone):

bash desktop.sh --install-dotnet
bash desktop.sh --install-dotnet=8

Server:

bash server.sh --install-dotnet
bash server.sh --manager --install-dotnet

Piped install:

curl -sSL desktop.setupvibe.dev | bash -s -- --install-dotnet

After install: dotnet --version and confirm roadmap / summary show the .NET note when applicable.

WSL / clean machine: reset distro or use a fresh VM to re-run the full flow.

Add --install-dotnet and --install-dotnet=8|9|10 to desktop.sh and server.sh (default .NET 10), APT path with dotnet-install fallback, zsh PATH for ~/.dotnet, docs and version bump to v0.41.7. Add .gitattributes (eol=lf for *.sh) and normalize shell scripts to LF.

Made-with: Cursor
Update STEPS titles via update_steps_dotnet_labels() before show_roadmap_and_wait on desktop (step 5) and server (AI CLI Tools). Bump version to v0.41.8, CHANGELOG, and docs.

Made-with: Cursor
Probe ~/.dotnet, /usr/bin/dotnet, and /usr/share/dotnet/dotnet; use bash -c with snap/bin in PATH instead of bash -l. Bump version to v0.41.9 and update CHANGELOG and docs.

Made-with: Cursor
Consolidate CHANGELOG into one v0.41.7 release; align desktop.sh, server.sh, and documentation (remove intermediate v0.41.8/v0.41.9 version strings).

Made-with: Cursor
@brunovicenteb
brunovicenteb marked this pull request as draft April 18, 2026 15:49
@brunovicenteb
brunovicenteb marked this pull request as ready for review April 18, 2026 15:50

luizeof commented Jul 18, 2026

Copy link
Copy Markdown
Contributor

Olá, @brunovicenteb! Obrigado pela contribuição e pelo cuidado em cobrir Desktop, Server, ambiente de shell e documentação.

O PR está com conflitos em relação à main atual. Os conflitos efetivos estão em desktop.sh, server.sh, CHANGELOG.md, docs/desktop/README.md e nas skills de documentação/CHANGELOG. Também há conflitos de exclusão porque GEMINI.md e .gemini/skills/** não fazem mais parte da estrutura atual.

Você poderia, por favor, atualizar a branch e reaplicar a funcionalidade de .NET sobre a estrutura vigente? Sugestão de caminho:

  1. Fazer rebase com a main atual:
git fetch https://github.com/promovaweb/setupvibe.git main
git rebase FETCH_HEAD
  1. Não restaurar GEMINI.md nem .gemini/**. O projeto mantém atualmente apenas AGENTS.md/.codex/skills e CLAUDE.md/.claude/skills; mudanças compartilhadas entre esses dois contextos devem permanecer sincronizadas.
  2. Em desktop.sh, preservar as 14 etapas e as constantes atuais de versões. O ponto compatível para a instalação opcional continua sendo o final da step_5().
  3. Em server.sh, preservar as 9 etapas e o parsing atual de --manager; integrar --install-dotnet ao mesmo case de argumentos e executar a instalação no início da step_7(), antes do Node.js/AI CLIs.
  4. Manter a política atual de limpeza de APT, que remove apenas arquivos explicitamente gerenciados pelo SetupVibe. Evite voltar ao grep por conteúdo (packages.microsoft), pois isso pode apagar um repositório Microsoft criado pelo usuário ou por outro instalador.
  5. Manter o suporte de PATH em conf/zshrc-{macos,linux,server}.zsh e ajustar os rótulos de STEPS antes de show_roadmap_and_wait.
  6. Separar a mudança funcional do ruído de versionamento nas skills e exemplos. Se o PR realmente alterar a versão, siga a lista completa da seção de versionamento em AGENTS.md/CLAUDE.md; caso contrário, mantenha a versão atual e registre apenas a entrada adequada no CHANGELOG.md.
  7. Validar ao menos a sintaxe após resolver os conflitos:
bash -n desktop.sh
bash -n server.sh

Após o rebase:

git add -A
git rebase --continue
git push --force-with-lease

Agradeço novamente pela colaboração e pelo trabalho dedicado nesta funcionalidade!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants