Skip to content

Commit 799a7fb

Browse files
authored
Merge pull request #52 from CodeByBryant/copilot/create-releases-and-cleanup
Add CI/CD workflows, GitHub Pages deployment, and documentation
2 parents 7e11c09 + 04ed545 commit 799a7fb

File tree

11 files changed

+1138
-21
lines changed

11 files changed

+1138
-21
lines changed

.github/workflows/ci.yml

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
# Continuous Integration
2+
name: CI
3+
4+
on:
5+
push:
6+
branches: [main]
7+
pull_request:
8+
branches: [main]
9+
10+
permissions:
11+
contents: read
12+
13+
jobs:
14+
lint-and-build:
15+
runs-on: ubuntu-latest
16+
steps:
17+
- name: Checkout
18+
uses: actions/checkout@v4
19+
20+
- name: Setup Node.js
21+
uses: actions/setup-node@v4
22+
with:
23+
node-version: '20'
24+
cache: 'npm'
25+
26+
- name: Install dependencies
27+
run: npm ci
28+
29+
- name: Run linting
30+
run: npm run lint
31+
32+
- name: Run type checking
33+
run: npm run typecheck
34+
35+
- name: Build web version
36+
run: npm run build:web

.github/workflows/deploy-web.yml

Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
# Deploy web version to GitHub Pages
2+
name: Deploy to GitHub Pages
3+
4+
on:
5+
push:
6+
branches: [main]
7+
workflow_dispatch:
8+
9+
permissions:
10+
contents: read
11+
pages: write
12+
id-token: write
13+
14+
concurrency:
15+
group: "pages"
16+
cancel-in-progress: false
17+
18+
jobs:
19+
build:
20+
runs-on: ubuntu-latest
21+
steps:
22+
- name: Checkout
23+
uses: actions/checkout@v4
24+
25+
- name: Setup Node.js
26+
uses: actions/setup-node@v4
27+
with:
28+
node-version: '20'
29+
cache: 'npm'
30+
31+
- name: Install dependencies
32+
run: npm ci
33+
34+
- name: Build web version
35+
run: npm run build:web
36+
37+
- name: Setup Pages
38+
uses: actions/configure-pages@v4
39+
40+
- name: Upload artifact
41+
uses: actions/upload-pages-artifact@v3
42+
with:
43+
path: './dist'
44+
45+
deploy:
46+
environment:
47+
name: github-pages
48+
url: ${{ steps.deployment.outputs.page_url }}
49+
runs-on: ubuntu-latest
50+
needs: build
51+
steps:
52+
- name: Deploy to GitHub Pages
53+
id: deployment
54+
uses: actions/deploy-pages@v4

.github/workflows/release.yml

Lines changed: 135 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,135 @@
1+
# Build and release desktop apps
2+
name: Build & Release
3+
4+
on:
5+
release:
6+
types: [published]
7+
workflow_dispatch:
8+
inputs:
9+
version:
10+
description: 'Version tag (e.g., v1.0.0)'
11+
required: false
12+
default: ''
13+
14+
permissions:
15+
contents: write
16+
17+
jobs:
18+
build-windows:
19+
runs-on: windows-latest
20+
steps:
21+
- name: Checkout
22+
uses: actions/checkout@v4
23+
24+
- name: Setup Node.js
25+
uses: actions/setup-node@v4
26+
with:
27+
node-version: '20'
28+
cache: 'npm'
29+
30+
- name: Install dependencies
31+
run: npm ci
32+
33+
- name: Build Windows app
34+
run: npm run build:win
35+
env:
36+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
37+
38+
- name: Upload Windows artifacts
39+
uses: actions/upload-artifact@v4
40+
with:
41+
name: windows-release
42+
path: |
43+
release/*.exe
44+
release/*.msi
45+
retention-days: 30
46+
47+
- name: Upload to Release
48+
if: github.event_name == 'release'
49+
uses: softprops/action-gh-release@v1
50+
with:
51+
files: |
52+
release/*.exe
53+
release/*.msi
54+
env:
55+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
56+
57+
build-linux:
58+
runs-on: ubuntu-latest
59+
steps:
60+
- name: Checkout
61+
uses: actions/checkout@v4
62+
63+
- name: Setup Node.js
64+
uses: actions/setup-node@v4
65+
with:
66+
node-version: '20'
67+
cache: 'npm'
68+
69+
- name: Install dependencies
70+
run: npm ci
71+
72+
- name: Build Linux app
73+
run: npm run build:linux
74+
env:
75+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
76+
77+
- name: Upload Linux artifacts
78+
uses: actions/upload-artifact@v4
79+
with:
80+
name: linux-release
81+
path: |
82+
release/*.AppImage
83+
release/*.deb
84+
release/*.snap
85+
retention-days: 30
86+
87+
- name: Upload to Release
88+
if: github.event_name == 'release'
89+
uses: softprops/action-gh-release@v1
90+
with:
91+
files: |
92+
release/*.AppImage
93+
release/*.deb
94+
release/*.snap
95+
env:
96+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
97+
98+
build-macos:
99+
runs-on: macos-latest
100+
steps:
101+
- name: Checkout
102+
uses: actions/checkout@v4
103+
104+
- name: Setup Node.js
105+
uses: actions/setup-node@v4
106+
with:
107+
node-version: '20'
108+
cache: 'npm'
109+
110+
- name: Install dependencies
111+
run: npm ci
112+
113+
- name: Build macOS app
114+
run: npm run build:mac
115+
env:
116+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
117+
118+
- name: Upload macOS artifacts
119+
uses: actions/upload-artifact@v4
120+
with:
121+
name: macos-release
122+
path: |
123+
release/*.dmg
124+
release/*.zip
125+
retention-days: 30
126+
127+
- name: Upload to Release
128+
if: github.event_name == 'release'
129+
uses: softprops/action-gh-release@v1
130+
with:
131+
files: |
132+
release/*.dmg
133+
release/*.zip
134+
env:
135+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

.gitignore

Lines changed: 49 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,21 +7,68 @@ yarn-error.log*
77
pnpm-debug.log*
88
lerna-debug.log*
99

10+
# Dependencies
1011
node_modules
12+
.pnp
13+
.pnp.js
14+
15+
# Build outputs
1116
dist
1217
dist-ssr
13-
*.local
1418
out
19+
release
20+
*.local
1521

1622
# Editor directories and files
1723
.vscode/*
1824
!.vscode/extensions.json
25+
!.vscode/settings.json
1926
.idea
20-
.DS_Store
2127
*.suo
2228
*.ntvs*
2329
*.njsproj
2430
*.sln
2531
*.sw?
2632

33+
# OS files
34+
.DS_Store
35+
.DS_Store?
36+
._*
37+
.Spotlight-V100
38+
.Trashes
39+
ehthumbs.db
40+
Thumbs.db
41+
desktop.ini
42+
43+
# Environment files
44+
.env
45+
.env.local
46+
.env.development.local
47+
.env.test.local
48+
.env.production.local
49+
50+
# Testing
51+
coverage
52+
*.lcov
53+
.nyc_output
54+
55+
# Temporary files
56+
tmp
57+
temp
58+
*.tmp
59+
*.temp
60+
*.bak
61+
*.swp
62+
*~
63+
64+
# Electron
65+
*.asar
66+
67+
# TypeScript cache
68+
*.tsbuildinfo
69+
70+
# Misc
71+
*.pid
72+
*.seed
73+
*.pid.lock
2774

README.md

Lines changed: 39 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,38 @@
1-
# Evo
1+
<div align="center">
2+
3+
# 🧬 Evo
4+
5+
**Neural Evolution Sandbox**
6+
7+
[![CI](https://github.com/CodeByBryant/Evo/actions/workflows/ci.yml/badge.svg)](https://github.com/CodeByBryant/Evo/actions/workflows/ci.yml)
8+
[![Deploy](https://github.com/CodeByBryant/Evo/actions/workflows/deploy-web.yml/badge.svg)](https://github.com/CodeByBryant/Evo/actions/workflows/deploy-web.yml)
9+
[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
10+
[![TypeScript](https://img.shields.io/badge/TypeScript-5.5-blue.svg)](https://www.typescriptlang.org/)
11+
[![React](https://img.shields.io/badge/React-19-61dafb.svg)](https://react.dev/)
12+
13+
[**🎮 Play Online**](https://codebybryant.github.io/Evo/)[**📥 Download**](https://github.com/CodeByBryant/Evo/releases)[**📖 Documentation**](./docs/README.md)
14+
15+
</div>
16+
17+
---
218

319
**Evo** is an advanced neural network-based evolutionary sandbox where AI agents evolve through natural selection. Agents navigate an **infinite 2D world**, sense their environment using raycasting, and make autonomous decisions using neural networks. Watch species emerge, compete for resources, and evolve over generations in real-time!
420

5-
Built with **React**, **TypeScript**, and inspired by **Cell Lab**, **Thrive**, **The Life Engine**, and **Bionic Chaos Evolution**.
21+
Built with **React**, **TypeScript**, and **Electron**. Inspired by **Cell Lab**, **Thrive**, **The Life Engine**, and **Bionic Chaos Evolution**.
22+
23+
## 🚀 Quick Start
24+
25+
### Play Online (No Installation)
26+
27+
👉 **[Launch Evo in Your Browser](https://codebybryant.github.io/Evo/)**
28+
29+
### Download Desktop App
30+
31+
| Platform | Download |
32+
|:--------:|:--------:|
33+
| **Windows** | [📥 Download .exe](https://github.com/CodeByBryant/Evo/releases/latest) |
34+
| **macOS** | [📥 Download .dmg](https://github.com/CodeByBryant/Evo/releases/latest) |
35+
| **Linux** | [📥 Download .AppImage](https://github.com/CodeByBryant/Evo/releases/latest) |
636

737
## ✨ Features
838

@@ -58,25 +88,13 @@ Built with **React**, **TypeScript**, and inspired by **Cell Lab**, **Thrive**,
5888
- **React Optimization**: Memoized callbacks and proper state management
5989
- **60 FPS Target**: Smooth animations even with many agents
6090

61-
## 🚀 Getting Started
62-
63-
### Replit (Recommended)
64-
65-
This project is optimized for Replit:
66-
67-
```bash
68-
npm run dev:web
69-
```
70-
71-
Access the sandbox at `http://localhost:5000`
91+
## 💻 Development
7292

73-
### Local Development
74-
75-
#### Prerequisites
93+
### Prerequisites
7694
- Node.js (v18 or later)
7795
- npm or yarn
7896

79-
#### Installation
97+
### Installation
8098

8199
1. Clone the repository:
82100
```bash
@@ -99,6 +117,8 @@ Access the sandbox at `http://localhost:5000`
99117
npm run dev
100118
```
101119

120+
For detailed development instructions, see the [Development Guide](./docs/development.md).
121+
102122
## 🎮 How to Use
103123

104124
### Mouse Controls
@@ -189,12 +209,12 @@ When you click an agent, view:
189209
## 🛠️ Available Scripts
190210

191211
```bash
192-
# Web development (Replit)
212+
# Web development
193213
npm run dev:web # Start Vite dev server
194214
npm run build:web # Build for production
195215
npm run preview:web # Preview production build
196216

197-
# Desktop development (Local only)
217+
# Desktop development
198218
npm run dev # Start Electron app
199219
npm run build # Build Electron app
200220
npm run build:win # Build for Windows

0 commit comments

Comments
 (0)