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
55 changes: 55 additions & 0 deletions .github/ISSUE_TEMPLATE/bug.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
name: Bug report
description: Report reproducible UnityScraper behavior
title: "[Bug]: "
labels: ["bug"]
body:
- type: input
id: version
attributes:
label: UnityScraper version
placeholder: 0.10.0-beta.1 or commit SHA
validations:
required: true
- type: input
id: environment
attributes:
label: Environment
placeholder: Windows 11, packaged executable or Python 3.12
validations:
required: true
- type: dropdown
id: area
attributes:
label: Area
options:
- Desktop interface
- XboxUnity metadata or downloads
- Knowledge import
- Backup scan or verification
- Package or ZIP import
- FTP transfer
- REST API
- Packaging or setup
- Other
validations:
required: true
- type: textarea
id: description
attributes:
label: What happened?
description: Include expected behavior and a minimal reproduction.
validations:
required: true
- type: textarea
id: logs
attributes:
label: Sanitized diagnostics
description: Remove credentials, private paths, keys, and copyrighted data.
render: text
- type: checkboxes
id: safety
attributes:
label: Data safety
options:
- label: I removed credentials, keys, copyrighted payloads, and private information.
required: true
5 changes: 5 additions & 0 deletions .github/ISSUE_TEMPLATE/config.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
blank_issues_enabled: false
contact_links:
- name: Private security report
url: https://github.com/TrapEmAll/UnityScraper/security/advisories/new
about: Report archive, filesystem, credential, or remote-access vulnerabilities privately.
31 changes: 31 additions & 0 deletions .github/ISSUE_TEMPLATE/feature.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
name: Feature request
description: Suggest a focused UnityScraper improvement
title: "[Feature]: "
labels: ["enhancement"]
body:
- type: textarea
id: problem
attributes:
label: Problem
description: What workflow or community need is not handled well today?
validations:
required: true
- type: textarea
id: proposal
attributes:
label: Proposed experience
description: Describe the user-facing behavior, not only an implementation.
validations:
required: true
- type: textarea
id: sources
attributes:
label: Sources or formats
description: Link public specifications and state relevant licenses.
- type: checkboxes
id: boundary
attributes:
label: Project boundary
options:
- label: This request does not require distributing game images, firmware, keys, leaked SDK files, or circumvention tooling.
required: true
22 changes: 22 additions & 0 deletions .github/PULL_REQUEST_TEMPLATE.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
## Summary

Describe the user-visible change and why it is needed.

## Validation

- [ ] `python -m ruff check .`
- [ ] `python -m compileall -q .`
- [ ] `python tests.py`
- [ ] Windows build checked when packaging or GUI imports changed

## Compatibility

- [ ] Existing SQLite data remains compatible
- [ ] XboxUnity remains HTTP-only
- [ ] New source content retains provenance and licensing information
- [ ] No copyrighted game payloads, firmware, keys, or SDK files are included

## Documentation

- [ ] README or focused documentation updated
- [ ] CHANGELOG updated for user-visible changes
12 changes: 12 additions & 0 deletions .github/dependabot.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
version: 2
updates:
- package-ecosystem: pip
directory: /
schedule:
interval: monthly
open-pull-requests-limit: 5
- package-ecosystem: github-actions
directory: /
schedule:
interval: monthly
open-pull-requests-limit: 5
82 changes: 82 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,82 @@
name: CI

on:
push:
branches: [main]
pull_request:

permissions:
contents: read

concurrency:
group: ci-${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true

jobs:
test:
name: Python ${{ matrix.python }} on ${{ matrix.os }}
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os: [ubuntu-latest, windows-latest]
python: ["3.10", "3.12"]

steps:
- uses: actions/checkout@v4

- uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python }}
cache: pip

- name: Install dependencies
run: python -m pip install -r requirements.txt -r requirements-dev.txt

- name: Check high-confidence Python errors
run: python -m ruff check .

- name: Compile Python modules
run: python -m compileall -q .

- name: Check version consistency
run: python scripts/check_version.py

- name: Run tests
run: python tests.py

- name: Run legacy integration tests
run: python integration_tests.py

windows-build:
name: Windows executable
runs-on: windows-latest
needs: test

steps:
- uses: actions/checkout@v4

- uses: actions/setup-python@v5
with:
python-version: "3.12"
cache: pip

- name: Install build dependencies
run: python -m pip install -r requirements.txt pyinstaller

- name: Build
run: python -m PyInstaller --clean --noconfirm UnityScraper.spec

- name: Generate checksum
shell: pwsh
run: |
$hash = (Get-FileHash dist\UnityScraper.exe -Algorithm SHA256).Hash.ToLower()
"$hash *UnityScraper.exe" | Set-Content dist\UnityScraper.exe.sha256

- uses: actions/upload-artifact@v4
with:
name: UnityScraper-Windows-x64
path: |
dist/UnityScraper.exe
dist/UnityScraper.exe.sha256
if-no-files-found: error
62 changes: 62 additions & 0 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,62 @@
name: Release

on:
push:
tags:
- "v*"

permissions:
contents: write

jobs:
release:
runs-on: windows-latest

steps:
- uses: actions/checkout@v4

- uses: actions/setup-python@v5
with:
python-version: "3.12"
cache: pip

- name: Install build dependencies
run: python -m pip install -r requirements.txt pyinstaller

- name: Test
shell: pwsh
run: |
python scripts/check_version.py --tag "${{ github.ref_name }}"
python tests.py
python integration_tests.py

- name: Build executable
run: python -m PyInstaller --clean --noconfirm UnityScraper.spec

- name: Package release
shell: pwsh
run: |
Copy-Item README.md, CHANGELOG.md, LICENSE dist\
Compress-Archive `
-Path dist\UnityScraper.exe, dist\README.md, dist\CHANGELOG.md, dist\LICENSE `
-DestinationPath UnityScraper-Windows-x64.zip
$hash = (Get-FileHash UnityScraper-Windows-x64.zip -Algorithm SHA256).Hash.ToLower()
"$hash *UnityScraper-Windows-x64.zip" | Set-Content UnityScraper-Windows-x64.zip.sha256

- name: Publish GitHub release
shell: pwsh
env:
GH_TOKEN: ${{ github.token }}
run: |
$arguments = @(
"release", "create", "${{ github.ref_name }}",
"UnityScraper-Windows-x64.zip",
"UnityScraper-Windows-x64.zip.sha256",
"--title", "UnityScraper ${{ github.ref_name }}",
"--generate-notes",
"--verify-tag"
)
if ("${{ github.ref_name }}" -match "-") {
$arguments += "--prerelease"
}
& gh @arguments
73 changes: 34 additions & 39 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,60 +1,55 @@
################################################################################
# This .gitignore file was automatically created by Microsoft(R) Visual Studio.
################################################################################

/GUI.zip
/.vs
/__pycache__

# Documentation and Reports (not part of core codebase)
COMPLETION_REPORT.md
FEATURES_IMPLEMENTED.md
IMPLEMENTATION_DETAILS.md
IMPLEMENTATION_SUMMARY.md
QUICKREF.md
QUICKSTART_V2.md
INDEX.md
.github/copilot-instructions.md

# Python
__pycache__/
*.py[cod]
*$py.class
*.so
.Python
env/
venv/
.pytest_cache/
.mypy_cache/
.ruff_cache/
.coverage
coverage.xml
htmlcov/

# Environments
.venv/
*.log
venv/
env/

# Database and local files
# Runtime data
UnityScraperData/
unityscrape/
downloads/
exports/
diagnostics/
logs/
*.db
*.db-shm
*.db-wal
*.sqlite
unityscraper.log
unityscraper_gui.log
*.sqlite3
*.log
config.json
unityscrape/
download_queue.json
portable.mode

# Build intermediates
build/

# Temporary and partial files
*.tmp
# Partial and temporary files
*.partial
*.meta
*.tmp
*.bak

# OS files
.DS_Store
Thumbs.db
# Build output
build/
dist/
*.spec.bak
*.zip

# IDE
# IDE and operating system
.vs/
.vscode/
.idea/
*.swp
*.swo

# IDE Extensions
/.vs/
.vscode/settings.json
.idea/
.DS_Store
Thumbs.db
Loading
Loading