v1.0.0 Rebirth — Implementation Plan¶
For agentic workers: REQUIRED SUB-SKILL: Use superpowers:subagent-driven-development (recommended) or superpowers:executing-plans to implement this plan task-by-task. Steps use checkbox (
- [ ]) syntax for tracking.
Goal: Squash entire git history into a single v1.0.0 commit, restructure directories (src/, docs/plans/, docs/research/, scripts/), add all open source documentation, and force-push as a fresh public project.
Architecture: Move core code under src/ (lib/ → src/lib/, modes/ → src/modes/), relocate plans and research into docs/, move ai-router utilities to scripts/. Update all shell script paths. Create standard open source docs. Orphan commit + force push.
Tech Stack: Bash 4.0+, Git, GitHub CLI
Global Constraints¶
- No new features — only restructuring and documentation
- All existing functionality must remain identical
bash -nmust pass on all .sh files after restructuring- ShellCheck must pass on all .sh files after restructuring
- Test suite must pass after restructuring
- Single orphan commit: "v1.0.0: Initial public release"
- Tag: v1.0.0
- Old tags v33.9, v33.10, v35.0 deleted from GitHub remote
- No secrets committed (verify with grep scan)
Task 1: Local Backup¶
Files: - None
Interfaces: - Produces: tag archive/pre-v1.0.0 on HEAD
- Step 1: Create local backup tag
- Step 2: Verify tag exists
archive/pre-v1.0.0 - Step 3: Delete old tags from GitHub remote
Task 2: Restructure Directories¶
Files: - Move: lib/ → src/lib/ - Move: modes/ → src/modes/ - Move: plans/ → docs/plans/ - Move: research/ → docs/research/ - Move: ai-router.sh → scripts/ai-router.sh - Move: ai-router.json → scripts/ai-router.json
- Step 1: Create target directories
- Step 2: Move lib/ to src/lib/
- Step 3: Move modes/ to src/modes/
- Step 4: Move plans/ to docs/plans/
- Step 5: Move research/ to docs/research/
- Step 6: Move ai-router files to scripts/
- Step 7: Verify new structure
ls src/lib/helpers.sh && ls src/modes/health.sh && ls docs/plans/ && ls docs/research/ && ls scripts/ai-router.sh
Task 3: Update Paths in setup.sh¶
Files: - Modify: setup.sh
Interfaces: - Consumes: src/lib/, src/modes/ directories from Task 2
- Step 1: Update all
lib/→src/lib/references
Replace all 24 occurrences of lib/ with src/lib/ in setup.sh:
sed -i 's|lib/helpers\.sh|src/lib/helpers.sh|g' setup.sh
sed -i 's|lib/00-core\.sh|src/lib/00-core.sh|g' setup.sh
sed -i 's|lib/01-system\.sh|src/lib/01-system.sh|g' setup.sh
sed -i 's|lib/02-docker\.sh|src/lib/02-docker.sh|g' setup.sh
sed -i 's|lib/03-chrome\.sh|src/lib/03-chrome.sh|g' setup.sh
sed -i 's|lib/04-zsh\.sh|src/lib/04-zsh.sh|g' setup.sh
sed -i 's|lib/05-java\.sh|src/lib/05-java.sh|g' setup.sh
sed -i 's|lib/06-node\.sh|src/lib/06-node.sh|g' setup.sh
sed -i 's|lib/07-python\.sh|src/lib/07-python.sh|g' setup.sh
sed -i 's|lib/08-go\.sh|src/lib/08-go.sh|g' setup.sh
sed -i 's|lib/09-rust\.sh|src/lib/09-rust.sh|g' setup.sh
sed -i 's|lib/10-dotnet\.sh|src/lib/10-dotnet.sh|g' setup.sh
sed -i 's|lib/11-opencode\.sh|src/lib/11-opencode.sh|g' setup.sh
sed -i 's|lib/12-mcp-lsp\.sh|src/lib/12-mcp-lsp.sh|g' setup.sh
sed -i 's|lib/13-chromadb\.sh|src/lib/13-chromadb.sh|g' setup.sh
sed -i 's|lib/14-shokunin\.sh|src/lib/14-shokunin.sh|g' setup.sh
sed -i 's|lib/15-security\.sh|src/lib/15-security.sh|g' setup.sh
sed -i 's|lib/16-llm\.sh|src/lib/16-llm.sh|g' setup.sh
sed -i 's|lib/17-project\.sh|src/lib/17-project.sh|g' setup.sh
sed -i 's|lib/18-opencode-json\.sh|src/lib/18-opencode-json.sh|g' setup.sh
sed -i 's|lib/19-finalize\.sh|src/lib/19-finalize.sh|g' setup.sh
sed -i 's|lib/20-autoupdate\.sh|src/lib/20-autoupdate.sh|g' setup.sh
- Step 2: Update all
modes/→src/modes/references
sed -i 's|modes/health\.sh|src/modes/health.sh|g' setup.sh
sed -i 's|modes/fix-zshrc\.sh|src/modes/fix-zshrc.sh|g' setup.sh
sed -i 's|modes/upgrade\.sh|src/modes/upgrade.sh|g' setup.sh
sed -i 's|modes/interactive\.sh|src/modes/interactive.sh|g' setup.sh
- Step 3: Verify no old paths remain
grep -n 'lib/0[0-9]\|lib/1[0-9]\|lib/2[0-9]\|lib/helpers\|lib/pre-session\|lib/version-check\|modes/' setup.sh && echo "OLD PATHS FOUND" || echo "CLEAN"
- Step 4: Syntax check setup.sh
Task 4: Update Paths in dev.sh¶
Files: - Modify: dev.sh
- Step 1: Update paths in dev.sh
sed -i 's|lib/helpers\.sh|src/lib/helpers.sh|g' dev.sh
sed -i 's|lib/version-check\.sh|src/lib/version-check.sh|g' dev.sh
sed -i 's|"$SCRIPTS_DIR/lib"|"$SCRIPTS_DIR/src/lib"|g' dev.sh
- Step 2: Syntax check dev.sh
- Step 3: Verify no old paths remain
Task 5: Update Paths in lib/ Files (now src/lib/)¶
Files: - Modify: src/lib/helpers.sh - Modify: src/lib/version-check.sh - Modify: src/lib/pre-session-check.sh - Modify: src/lib/19-finalize.sh
- Step 1: Update helpers.sh SCRIPT_DIR for new depth
src/lib/helpers.sh line 12: dirname now needs ../.. instead of ..
sed -i 's|dirname "\${BASH_SOURCE\[0\]}")/\.\."|dirname "${BASH_SOURCE[0]}")/../.."|' src/lib/helpers.sh
- Step 2: Update version-check.sh comment
- Step 3: Update pre-session-check.sh comment
sed -i 's|~/opencode_initializer/lib/pre-session-check\.sh|~/opencode_initializer/src/lib/pre-session-check.sh|g' src/lib/pre-session-check.sh
- Step 4: Update 19-finalize.sh DEV_SRC path
sed -i 's|opencode_initializer}/dev\.sh"|opencode_initializer}/dev.sh" --no change-needed-check|' src/lib/19-finalize.sh
Note: 19-finalize.sh uses SCRIPTS_DIR which is set by setup.sh — no path changes needed in this file.
- Step 5: Syntax check all src/lib files
for f in src/lib/*.sh; do bash -n "$f" && echo "OK: $(basename "$f")" || echo "FAIL: $(basename "$f")"; done
Task 6: Update Paths in modes/ Files (now src/modes/)¶
Files: - Modify: src/modes/health.sh - Modify: src/modes/fix-zshrc.sh - Modify: src/modes/upgrade.sh - Modify: src/modes/interactive.sh
- Step 1: Update mode file comments (informational only — no functional change needed)
Mode files use the comment header # modes/NAME.sh — ... and # Sources: lib/helpers.sh, lib/00-core.sh. Update these comments:
sed -i 's|modes/health\.sh|src/modes/health.sh|g' src/modes/health.sh
sed -i 's|modes/fix-zshrc\.sh|src/modes/fix-zshrc.sh|g' src/modes/fix-zshrc.sh
sed -i 's|modes/upgrade\.sh|src/modes/upgrade.sh|g' src/modes/upgrade.sh
sed -i 's|modes/interactive\.sh|src/modes/interactive.sh|g' src/modes/interactive.sh
sed -i 's|lib/helpers\.sh|src/lib/helpers.sh|g' src/modes/health.sh src/modes/fix-zshrc.sh src/modes/upgrade.sh src/modes/interactive.sh
sed -i 's|lib/00-core\.sh|src/lib/00-core.sh|g' src/modes/health.sh src/modes/upgrade.sh src/modes/interactive.sh
- Step 2: Syntax check all src/modes files
for f in src/modes/*.sh; do bash -n "$f" && echo "OK: $(basename "$f")" || echo "FAIL: $(basename "$f")"; done
Task 7: Update Paths in All Test Files¶
Files: - Modify: tests/run_tests.sh - Modify: tests/e2e/test_critical_path.sh - Modify: tests/e2e/test_full_install.sh - Modify: tests/e2e/test_finalize.sh - Modify: tests/e2e/test_dev_cli.sh - Modify: tests/integration/test_modules.sh - Modify: tests/integration/test_opencode_json_gen.sh - Modify: tests/unit/test_mirrors.sh - Modify: tests/unit/test_helpers.sh - Modify: tests/unit/test_core.sh - Modify: tests/unit/test_mcp_registry.sh
- Step 1: Update tests/run_tests.sh
sed -i 's|"$PROJECT_DIR/lib/"|"$PROJECT_DIR/src/lib/"|g' tests/run_tests.sh
sed -i 's|"$PROJECT_DIR/modes/"|"$PROJECT_DIR/src/modes/"|g' tests/run_tests.sh
- Step 2: Update tests/e2e/test_critical_path.sh
sed -i 's|"$SCRIPTS_DIR/lib/"|"$SCRIPTS_DIR/src/lib/"|g' tests/e2e/test_critical_path.sh
sed -i 's|"$SCRIPTS_DIR/modes/"|"$SCRIPTS_DIR/src/modes/"|g' tests/e2e/test_critical_path.sh
- Step 3: Update tests/e2e/test_full_install.sh
sed -i 's|source.*lib/|source.*src/lib/|g' tests/e2e/test_full_install.sh
sed -i 's|"$SETUP" "$PROJECT_DIR/lib/"|"$SETUP" "$PROJECT_DIR/src/lib/"|g' tests/e2e/test_full_install.sh
sed -i 's|"$PROJECT_DIR/lib/"\*.sh|"$PROJECT_DIR/src/lib/"*.sh|g' tests/e2e/test_full_install.sh
sed -i 's|"$PROJECT_DIR/modes/"|"$PROJECT_DIR/src/modes/"|g' tests/e2e/test_full_install.sh
sed -i 's|lib/helpers\.sh|src/lib/helpers.sh|g' tests/e2e/test_full_install.sh
sed -i 's|lib/00-core\.sh|src/lib/00-core.sh|g' tests/e2e/test_full_install.sh
- Step 4: Update tests/e2e/test_finalize.sh
sed -i 's|lib/19-finalize\.sh|src/lib/19-finalize.sh|g' tests/e2e/test_finalize.sh
sed -i 's|lib/11-opencode\.sh|src/lib/11-opencode.sh|g' tests/e2e/test_finalize.sh
- Step 5: Update tests/e2e/test_dev_cli.sh
- Step 6: Update tests/integration/test_modules.sh
sed -i 's|"$PROJECT_DIR/lib/"|"$PROJECT_DIR/src/lib/"|g' tests/integration/test_modules.sh
sed -i 's|"$PROJECT_DIR/modes/"|"$PROJECT_DIR/src/modes/"|g' tests/integration/test_modules.sh
sed -i 's|lib/helpers\.sh|src/lib/helpers.sh|g' tests/integration/test_modules.sh
sed -i 's|lib/00-core\.sh|src/lib/00-core.sh|g' tests/integration/test_modules.sh
- Step 7: Update tests/integration/test_opencode_json_gen.sh
sed -i 's|lib/18-opencode-json\.sh|src/lib/18-opencode-json.sh|g' tests/integration/test_opencode_json_gen.sh
- Step 8: Update tests/unit/test_mirrors.sh
- Step 9: Update tests/unit/test_helpers.sh
- Step 10: Update tests/unit/test_core.sh
- Step 11: Update tests/unit/test_mcp_registry.sh
sed -i 's|"$PROJECT_DIR/lib/|"$PROJECT_DIR/src/lib/|g' tests/unit/test_mcp_registry.sh
sed -i 's|"$PROJECT_DIR/modes/|"$PROJECT_DIR/src/modes/|g' tests/unit/test_mcp_registry.sh
- Step 12: Syntax check all test files
Task 8: Update .gitignore¶
Files: - Modify: .gitignore
- Step 1: Remove plans/ and research/ exclusion (now in docs/)
sed -i '/^# Internal plans/d' .gitignore
sed -i '/^plans\/$/d' .gitignore
sed -i '/^research\/$/d' .gitignore
- Step 2: Exclude ai-router files (moved to scripts/)
- Step 3: Verify final .gitignore
plans/ or research/ lines present Task 9: Create CHANGELOG.md¶
Files: - Create: CHANGELOG.md
- Step 1: Write CHANGELOG.md
# Changelog
All notable changes to opencode_initializer will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
## [1.0.0] — 2026-06-22
### Added
- Initial public release of OpenCode Initializer
- 8 programming languages (Java 25, Node.js 24, Python 3.14, Go 1.26, Rust 1.96, .NET 10, Kotlin, Zig)
- 21 MCP servers for AI-assisted development
- 15+ OpenCode plugins (token-tracker, dcp, swarm, goal-mode, vibeguard, orchestrator, notify, pty, snip, snippets, envsitter-guard, command-inject, ignore, auto-fallback)
- 13 LSP servers (gopls, rust-analyzer, tsserver, pyright, omnisharp, yaml, marksman, taplo, lua, zls, bash, dockerfile, css/html/json)
- Infrastructure: Docker, ChromaDB + Muninn, GPU/LLM runtimes (Ollama, vLLM, SGLang, Open WebUI)
- ZSH + Oh My Zsh + Powerlevel10k with 18 plugins
- Google Chrome + ChromeDriver (WSL2-aware)
- CLI `dev` tool for post-install management
- Auto-update via systemd weekly timer + topgrade
- Cross-distro support (apt/dnf/pacman/apk/zypper/brew)
- Russian mirrors for network-constrained environments
- Progress tracking with retry logic and exponential backoff
- WSL2 optimization (DNS fix, memory limits, mirrored networking)
- Comprehensive test suite (unit, integration, E2E)
- ShellCheck CI on every push/PR
- Full documentation (guide, reference, FAQ, troubleshooting)
[1.0.0]: https://github.com/AlexanderNarbaev/opencode_initializer/releases/tag/v1.0.0
- Step 2: Verify file
Task 10: Create .editorconfig¶
Files: - Create: .editorconfig
- Step 1: Write .editorconfig
# EditorConfig — https://editorconfig.org
root = true
[*]
end_of_line = lf
charset = utf-8
trim_trailing_whitespace = true
insert_final_newline = true
[*.sh]
indent_style = space
indent_size = 2
[*.md]
indent_style = space
indent_size = 4
[*.json]
indent_style = space
indent_size = 2
[*.yml,*.yaml]
indent_style = space
indent_size = 2
[Makefile]
indent_style = tab
indent_size = 4
- Step 2: Verify
Task 11: Create .gitattributes¶
Files: - Create: .gitattributes
- Step 1: Write .gitattributes
# Auto-detect text files, normalize to LF
* text=auto eol=lf
# Shell scripts — always LF
*.sh text eol=lf
# Documentation — always LF
*.md text eol=lf
# Config files
*.json text eol=lf
*.yml text eol=lf
*.yaml text eol=lf
# OpenCode architecture files — vendored (not our code)
.opencode/* linguist-vendored
# Excluded from release archives
tests/ export-ignore
docs/ export-ignore
migrations/ export-ignore
- Step 2: Verify
Task 12: Create Issue and PR Templates¶
Files: - Create: .github/ISSUE_TEMPLATE/bug_report.md - Create: .github/ISSUE_TEMPLATE/feature_request.md - Create: .github/PULL_REQUEST_TEMPLATE.md
- Step 1: Create directory and bug_report.md
---
name: Bug Report
about: Report a bug in opencode_initializer
title: "[Bug]: "
labels: bug
assignees: AlexanderNarbaev
---
## Description
<!-- Clearly describe the bug -->
## Steps to Reproduce
1.
2.
3.
## Expected Behavior
<!-- What should have happened -->
## Actual Behavior
<!-- What actually happened, with error messages -->
## Environment
- OS: [e.g., Ubuntu 24.04, WSL2, macOS]
- Shell: [e.g., zsh 5.9, bash 5.2]
- Installer version: [e.g., v1.0.0]
## Additional Context
<!-- Logs, screenshots, etc. -->
- Step 2: Create feature_request.md
---
name: Feature Request
about: Suggest a feature for opencode_initializer
title: "[Feature]: "
labels: enhancement
assignees: AlexanderNarbaev
---
## Problem Statement
<!-- What problem are you trying to solve? -->
## Proposed Solution
<!-- What would you like to see? -->
## Alternatives Considered
<!-- Any alternative approaches you've thought about -->
## Additional Context
<!-- Any other context, screenshots, etc. -->
- Step 3: Create PULL_REQUEST_TEMPLATE.md
## Description
<!-- Briefly describe the changes -->
## Type of Change
- [ ] Bug fix
- [ ] New feature
- [ ] Documentation
- [ ] Test addition/fix
- [ ] Refactoring
- [ ] CI / maintenance
## Checklist
- [ ] Code follows [style guide](../../CONTRIBUTING.md#code-style) (2-space indent, snake_case)
- [ ] No hardcoded secrets
- [ ] New features have corresponding tests
- [ ] `bash -n` passes on all modified files
- [ ] `bash tests/run_tests.sh` passes
- [ ] `AGENTS.md` updated if architecture changes
- [ ] Commit messages follow [conventional format](https://www.conventionalcommits.org/)
## Related Issues
<!-- Link related issues: Closes #123, Relates to #456 -->
- Step 4: Verify files exist
ls .github/ISSUE_TEMPLATE/bug_report.md .github/ISSUE_TEMPLATE/feature_request.md .github/PULL_REQUEST_TEMPLATE.md
Task 13: Create FUNDING.yml and CITATION.cff¶
Files: - Create: FUNDING.yml - Create: CITATION.cff
- Step 1: Write FUNDING.yml
- Step 2: Write CITATION.cff
cff-version: 1.2.0
title: OpenCode Initializer
message: "If you use this software, please cite it as below."
type: software
authors:
- given-names: Alexander
family-names: Narbaev
email: alexander.narbayev@gmail.com
orcid: ""
repository-code: "https://github.com/AlexanderNarbaev/opencode_initializer"
abstract: "One-command AI-enhanced development environment setup for WSL2, Linux, and macOS."
keywords:
- dev-machine
- bootstrap
- opencode
- ai
- wsl2
- linux
license: MIT
version: 1.0.0
date-released: 2026-06-22
- Step 3: Verify files
Task 14: Update README.md for v1.0.0¶
Files: - Modify: README.md
- Step 1: Update architecture diagram in README.md
Replace the ASCII directory tree (lines 141-178) with the new src/ structure:
- Step 2: Update version references
# Ensure all bash commands reference correct paths
grep -q 'lib/' README.md && echo "Check README for old paths" || echo "OK"
- Step 3: Update badges if needed
Badges should remain as-is (they point to the repo, not local paths).
Task 15: Update CONTRIBUTING.md and AGENTS.md¶
Files: - Modify: CONTRIBUTING.md - Modify: AGENTS.md
- Step 1: Update CONTRIBUTING.md paths
sed -i 's|lib/|src/lib/|g' CONTRIBUTING.md
sed -i 's|modes/|src/modes/|g' CONTRIBUTING.md
sed -i 's|for f in setup.sh dev.sh lib/|for f in setup.sh dev.sh src/lib/|g' CONTRIBUTING.md
- Step 2: Update AGENTS.md structure diagrams
Update the two ASCII tree diagrams in AGENTS.md (lines 11-22 and lines 143-166):
First diagram (lines 11-22):
opencode_initializer/ ├── setup.sh ← оркестратор (284 строки, source модули из src/lib/) ├── src/ │ ├── lib/ ← 24 модуля (00-core.sh … 20-autoupdate.sh + helpers.sh + version-check.sh + pre-session-check.sh) │ └── modes/ ← 4 режимных скрипта (+ 6 встроенных режимов) ├── dev.sh ← CLI ├── scripts/ ← утилиты (ai-router) ├── tests/ ← unit, integration, e2e ├── migrations/ ← timestamped, idempotent ├── docs/ ← документация + plans + research ├── .github/ ← CI + issue/PR шаблоны ├── README.md └── AGENTS.md ← этот файлSecond diagram (lines 143-166):
opencode_initializer/ ├── setup.sh ← оркестратор (284 строки) ├── dev.sh ← CLI ├── opencode.json ← конфиг OpenCode ├── src/ │ ├── lib/ │ │ ├── helpers.sh ← _curl, _retry, _npm_install │ │ ├── pre-session-check.sh │ │ └── version-check.sh │ └── modes/ │ └── health.sh ... ← режимные скрипты ├── tests/ ← unit / integration / e2e ├── migrations/ ├── scripts/ ← утилиты ├── docs/ ← документация + plans + research ├── .github/workflows/ ← CI ├── README.md ├── CONTRIBUTING.md └── AGENTS.md- Step 3: Update paths in AGENTS.md section references
- Step 4: Update version references
- Step 5: Verify
Task 16: Update setup.sh Version String¶
Files: - Modify: setup.sh
- Step 1: Update version header
- Step 2: Verify
# Ultimate Dev Machine Bootstrap v1.0.0 — Modular Task 17: Run Full Verification¶
Files: - None (verification only)
- Step 1: Syntax check all shell files
for f in setup.sh dev.sh src/lib/*.sh src/modes/*.sh tests/**/*.sh tests/*.sh migrations/*.sh scripts/*.sh; do
[ -f "$f" ] || continue
bash -n "$f" || echo "FAIL: $f"
done
echo "Syntax check complete"
- Step 2: Run test suite
- Step 3: Run ShellCheck
- Step 4: Secret scan
grep -rni 'sk-[a-zA-Z0-9]\{20,\}' setup.sh src/lib/*.sh src/modes/*.sh 2>/dev/null && echo "WARNING: API keys found" || echo "CLEAN"
grep -rni 'ghp_[a-zA-Z0-9]\{20,\}' setup.sh src/lib/*.sh src/modes/*.sh 2>/dev/null && echo "WARNING: tokens found" || echo "CLEAN"
grep -rni 'xai-[a-zA-Z0-9]\{20,\}' setup.sh src/lib/*.sh src/modes/*.sh 2>/dev/null && echo "WARNING: keys found" || echo "CLEAN"
- Step 5: Check for remaining old paths
grep -rn 'lib/0[0-9]\|lib/1[0-9]\|lib/2[0-9]' setup.sh dev.sh src/ tests/ docs/ scripts/ 2>/dev/null | grep -v '.git' | grep -v 'node_modules' && echo "OLD PATHS FOUND" || echo "CLEAN"
grep -rn 'modes/' setup.sh dev.sh src/ tests/ 2>/dev/null | grep -v '.git' | grep -v 'node_modules' | grep -v 'src/modes/' && echo "OLD MODES PATHS FOUND" || echo "CLEAN"
Task 18: Orphan Commit, Tag, and Force Push¶
Files: - None (git operations)
Interfaces: - Consumes: all previous tasks must be complete and verified - Produces: single commit on main, tag v1.0.0, force-pushed to GitHub
- Step 1: Stage ALL files from repo root
- Step 2: Verify staged content (spot check)
- Step 3: Check for any unintended files
git diff --cached --name-only | grep -v -E '(src/|docs/|scripts/|tests/|migrations/|.github/|.opencode/|setup\.sh|dev\.sh|opencode\.json|README\.md|AGENTS\.md|CONTRIBUTING\.md|CHANGELOG\.md|CODE_OF_CONDUCT\.md|SECURITY\.md|LICENSE|\.editorconfig|\.gitattributes|\.gitignore|FUNDING\.yml|CITATION\.cff)'
- Step 4: Create orphan branch and commit
git checkout --orphan temp-main
git add -A
git commit -m "v1.0.0: Initial public release
Universal Dev Machine Bootstrap — one-command AI-enhanced
development environment setup for WSL2, Linux, and macOS.
- 8 programming languages, 21 MCP servers, 15+ plugins, 13 LSPs
- Cross-distro support (6 package managers), amd64 + arm64
- ZSH + Oh My Zsh + Powerlevel10k, Docker, ChromaDB
- GPU/LLM runtimes (Ollama, vLLM, SGLang, Open WebUI)
- Auto-update via systemd timer, CLI 'dev' tool
- Comprehensive test suite (unit, integration, E2E)
- ShellCheck CI, MIT license
Result of 36 internal development iterations."
- Step 5: Tag v1.0.0
- Step 6: Verify orphan history
- Step 7: Replace main with temp-main
- Step 8: Force push to GitHub
- Step 9: Verify GitHub remote
- Step 10: Verify no old tags remain on GitHub
git ls-remote --tags github | grep -E 'v33\.|v35\.' && echo "OLD TAGS STILL PRESENT" || echo "CLEAN"
Task 19: Cleanup and Final Checks¶
- Step 1: Remove stale local refs
- Step 2: Verify final state
v1.0.0 (HEAD -> main, tag: v1.0.0, github/main), tag list includes v1.0.0 and archive/pre-v1.0.0 - Step 3: Final structure verification
ls -la setup.sh dev.sh opencode.json src/lib/helpers.sh src/modes/health.sh docs/plans/ docs/research/ scripts/ai-router.sh CHANGELOG.md .editorconfig .gitattributes FUNDING.yml CITATION.cff .github/PULL_REQUEST_TEMPLATE.md .github/ISSUE_TEMPLATE/bug_report.md .github/ISSUE_TEMPLATE/feature_request.md
- Step 4: Commit (if any cleanup changes needed)
Only if post-push adjustments needed after review.