Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
48 changes: 48 additions & 0 deletions .github/ISSUE_TEMPLATE/bug_report.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
---
name: Bug Report
about: Report a bug or unexpected behavior
title: '[BUG] '
labels: bug
assignees: ''
---

## Bug Description
<!-- A clear and concise description of what the bug is -->

## Steps to Reproduce
1.
2.
3.

## Expected Behavior
<!-- What you expected to happen -->

## Actual Behavior
<!-- What actually happened -->

## Environment
- **OS**: <!-- e.g., Ubuntu 22.04, macOS 13.0 -->
- **Compiler**: <!-- e.g., gcc 11.3, clang 14.0 -->
- **Branch**: <!-- e.g., main, feature/new-feature -->
- **Commit**: <!-- git commit hash if known -->

## Scene File
<!-- If applicable, paste the .rt scene file content that triggers the bug -->
```
[paste scene file here if relevant]
```

## Error Output
<!-- Paste any error messages or unexpected output -->
```
[paste error output here]
```

## Screenshots
<!-- If applicable, add screenshots to help explain the problem -->

## Additional Context
<!-- Add any other context about the problem here -->

## Possible Solution
<!-- Optional: suggest a fix or reason for the bug -->
48 changes: 48 additions & 0 deletions .github/ISSUE_TEMPLATE/documentation.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
---
name: Documentation
about: Report documentation issues or suggest improvements
title: '[DOCS] '
labels: documentation
assignees: ''
---

## Documentation Issue
<!-- Describe the documentation problem or improvement -->

## Location
<!-- Where is the documentation issue located? -->
- **File**: <!-- e.g., README.md, docs/rendering.md -->
- **Section**: <!-- e.g., Installation, Usage, API Reference -->
- **Line**: <!-- If applicable -->

## Type of Issue
- [ ] Missing documentation
- [ ] Incorrect information
- [ ] Unclear explanation
- [ ] Typo or formatting
- [ ] Outdated content
- [ ] Translation needed
- [ ] Other:

## Current Documentation
<!-- Quote or screenshot the problematic documentation -->
```
[paste current documentation here]
```

## Suggested Improvement
<!-- How should the documentation be changed? -->
```
[paste suggested documentation here]
```

## Context
<!-- Why is this change important? Who would benefit? -->

## Additional Resources
<!-- Links to related documentation, references, or examples -->

## Language
- [ ] English
- [ ] Korean (한국어)
- [ ] Both
49 changes: 49 additions & 0 deletions .github/ISSUE_TEMPLATE/feature_request.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
---
name: Feature Request
about: Suggest a new feature or enhancement
title: '[FEATURE] '
labels: enhancement
assignees: ''
---

## Feature Description
<!-- A clear and concise description of the feature you'd like to see -->

## Problem Statement
<!-- What problem does this feature solve? -->

## Proposed Solution
<!-- How would you like this feature to work? -->

## Alternative Solutions
<!-- Are there any alternative approaches you've considered? -->

## Use Cases
<!-- Describe specific scenarios where this feature would be useful -->
1.
2.
3.

## Implementation Ideas
<!-- Optional: technical suggestions for implementation -->

## Examples
<!-- Optional: code snippets, mockups, or references to similar features -->

## Impact
<!-- How would this feature benefit the project? -->
- [ ] Improves performance
- [ ] Enhances user experience
- [ ] Adds new functionality
- [ ] Improves code quality
- [ ] Other:

## Priority
<!-- How important is this feature to you? -->
- [ ] Critical - blocks important work
- [ ] High - significantly improves workflow
- [ ] Medium - nice to have
- [ ] Low - minor improvement

## Additional Context
<!-- Add any other context, screenshots, or references -->
78 changes: 78 additions & 0 deletions .github/PULL_REQUEST_TEMPLATE.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,78 @@
## Description
<!-- Provide a clear and concise description of what this PR does -->

## Related Issue
<!-- Link to the issue this PR addresses -->
Closes #

## Type of Change
<!-- Mark the relevant option with an 'x' -->
- [ ] Bug fix (non-breaking change that fixes an issue)
- [ ] New feature (non-breaking change that adds functionality)
- [ ] Breaking change (fix or feature that would cause existing functionality to change)
- [ ] Documentation update
- [ ] Code refactoring
- [ ] Performance improvement
- [ ] Build/CI improvement

## Changes
<!-- List the main changes made in this PR -->
-
-
-

## Testing
<!-- Describe how you tested these changes -->

### Test Environment
- **OS**: <!-- e.g., Ubuntu 22.04, macOS 13.0 -->
- **Compiler**: <!-- e.g., gcc 11.3, clang 14.0 -->

### Test Steps
1.
2.
3.

### Test Results
- [ ] All existing tests pass
- [ ] New tests added and passing
- [ ] Manual testing completed
- [ ] Norminette check passed
- [ ] No memory leaks (valgrind/leaks)

## Screenshots
<!-- If applicable, add screenshots to demonstrate the changes -->

## Checklist
<!-- Ensure all items are completed before submitting PR -->
- [ ] Code follows project style guidelines (norminette)
- [ ] Self-review of code completed
- [ ] Comments added for complex logic
- [ ] Documentation updated (if needed)
- [ ] No new warnings generated
- [ ] Tests added for new functionality
- [ ] All tests passing locally
- [ ] Branch is up to date with base branch
- [ ] Commit messages follow conventional format
- [ ] No sensitive data included

## Constitution Compliance
<!-- Verify compliance with project constitution -->
- [ ] 42 Norminette compliance verified
- [ ] Code readability prioritized
- [ ] Unit tests created and passing
- [ ] Documentation updated (English + Korean if applicable)
- [ ] Build verification completed
- [ ] Git branch strategy followed
- [ ] Logs stored in logs/ directory

## Performance Impact
<!-- If applicable, describe any performance implications -->
- [ ] No performance impact
- [ ] Performance improved
- [ ] Performance decreased (justified below)

<!-- If performance decreased, explain why and provide benchmarks -->

## Additional Notes
<!-- Any other information that reviewers should know -->
3 changes: 3 additions & 0 deletions .github/agents/copilot-instructions.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,8 @@
Auto-generated from all feature plans. Last updated: 2025-12-15

## Active Technologies
- C (C99 standard), Makefile, YAML (GitHub Actions), Shell scripts (Bash) (001-cicd-pipeline-github-workflow)
- Git repository, GitHub Actions artifacts for build logs and releases (001-cicd-pipeline-github-workflow)

- C (C99 or later with -std=c99 or compatible) + MinilibX (X11/XQuartz graphics library), libm (math library), optional libft (001-raytracer)

Expand All @@ -22,6 +24,7 @@ tests/
C (C99 or later with -std=c99 or compatible): Follow standard conventions

## Recent Changes
- 001-cicd-pipeline-github-workflow: Added C (C99 standard), Makefile, YAML (GitHub Actions), Shell scripts (Bash)

- 001-raytracer: Added C (C99 or later with -std=c99 or compatible) + MinilibX (X11/XQuartz graphics library), libm (math library), optional libft

Expand Down
136 changes: 136 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,136 @@
name: CI

on:
push:
branches: [ main, develop, 'feature/**', '**-**' ]
pull_request:
branches: [ main, develop ]

jobs:
norminette:
name: Norminette Check
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4

- name: Install Norminette
run: |
python3 -m pip install --upgrade pip setuptools
python3 -m pip install norminette

- name: Run Norminette on sources
run: |
norminette src/ includes/
echo "✓ Norminette check passed"

build-linux:
name: Build on Linux
runs-on: ubuntu-latest
needs: norminette
steps:
- name: Checkout code
uses: actions/checkout@v4

- name: Install dependencies
run: |
sudo apt-get update
sudo apt-get install -y gcc make xorg libxext-dev libbsd-dev

- name: Setup MinilibX for Linux
run: |
if [ ! -f lib/minilibx-linux/Makefile ]; then
echo "Cloning minilibx-linux..."
rm -rf lib/minilibx-linux
git clone https://github.com/42Paris/minilibx-linux.git lib/minilibx-linux
fi

- name: Build MinilibX
run: |
cd lib/minilibx-linux
make

- name: Build miniRT
run: |
make
ls -lh miniRT

- name: Upload Linux artifact
uses: actions/upload-artifact@v4
with:
name: miniRT-linux
path: miniRT
retention-days: 7

build-macos:
name: Build on MacOS
runs-on: macos-latest
needs: norminette
steps:
- name: Checkout code
uses: actions/checkout@v4

- name: Build miniRT
run: |
make
ls -lh miniRT

- name: Upload MacOS artifact
uses: actions/upload-artifact@v4
with:
name: miniRT-macos
path: miniRT
retention-days: 7

test-linux:
name: Test on Linux
runs-on: ubuntu-latest
needs: build-linux
steps:
- name: Checkout code
uses: actions/checkout@v4

- name: Download Linux artifact
uses: actions/download-artifact@v4
with:
name: miniRT-linux

- name: Install X11 for testing
run: |
sudo apt-get update
sudo apt-get install -y xvfb libxext-dev libx11-dev

- name: Make executable
run: chmod +x miniRT

- name: Test scene file parsing
run: |
# Test with valid scene file
timeout 5s xvfb-run -a ./miniRT scenes/test_all_objects.rt || true
echo "✓ Scene file parsing test completed"

- name: Test error handling
run: |
# Test with invalid file (should fail gracefully)
./miniRT nonexistent.rt 2>&1 | grep -q "Error" && echo "✓ Error handling works" || exit 1

test-macos:
name: Test on MacOS
runs-on: macos-latest
needs: build-macos
steps:
- name: Checkout code
uses: actions/checkout@v4

- name: Download MacOS artifact
uses: actions/download-artifact@v4
with:
name: miniRT-macos

- name: Make executable
run: chmod +x miniRT

- name: Test error handling
run: |
# Test with invalid file (should fail gracefully)
./miniRT nonexistent.rt 2>&1 | grep -q "Error" && echo "✓ Error handling works" || exit 1
Loading
Loading