Skip to content
Merged

Ci #1

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
27 changes: 27 additions & 0 deletions .eslintignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
## Modules and libraries
node_modules/
dist/
build/

## Build files
pnpm-lock.json

## Environment
src/vite-env.d.ts
env.d.ts

## Linter / Formatter
.prettierrc
.eslintrc
.stylelintrc

## Config files
vite.config.ts
tailwind.config.cjs
postcss.config.cjs

## Tauri
src-tauri/

## Lua
src-lua/
115 changes: 115 additions & 0 deletions .eslintrc
Original file line number Diff line number Diff line change
@@ -0,0 +1,115 @@
{
"env": {
"browser": true,
"es2022": true,
"node": true
},
"settings": {
"import/parsers": {
"@typescript-eslint/parser": [".ts", ".tsx"]
},
"import/resolver": {
"node": {
"extensions": [".js", ".jsx", ".ts", ".tsx"]
},
"typescript": {}
},
"react": {
"version": "detect"
}
},
"overrides": [
{
"files": ["**/*.test.ts", "**/*.test.tsx"],
"env": {
"jest": true
}
}
],
"parser": "@typescript-eslint/parser",
"parserOptions": {
"ecmaVersion": "latest",
"sourceType": "module",
"project": ["./tsconfig.json", "./tsconfig.node.json"],
"tsconfigRootDir": "./"
},
"ignorePatterns": ["dist", ".eslintrc"],
"plugins": [
"@typescript-eslint",
"react",
"prettier",
"tailwindcss",
"react-hooks",
"jsx-a11y",
"promise",
"import",
"unicorn",
"testing-library",
"react-refresh"
],
"extends": [
"eslint:recommended",
"plugin:prettier/recommended",
"plugin:@typescript-eslint/recommended-type-checked",
"plugin:react/recommended",
"plugin:react/jsx-runtime",
"plugin:jsx-a11y/recommended",
"plugin:unicorn/recommended",
"plugin:react-hooks/recommended",
"plugin:security/recommended",
"plugin:promise/recommended",
"plugin:import/recommended",
"plugin:n/recommended",
"plugin:tailwindcss/recommended",
"prettier"
],
"rules": {
"@typescript-eslint/no-unsafe-assignment": "warn",
"@typescript-eslint/no-unsafe-member-access": "warn",
"@typescript-eslint/no-unsafe-return": "warn",
"@typescript-eslint/no-unused-vars": "off",
"@typescript-eslint/no-misused-promises": [
2,
{
"checksVoidReturn": {
"attributes": false
}
}
],
"n/no-missing-import": "off",
"no-unused-vars": "off",
"no-unused-expressions": [
"error",
{
"allowTernary": true
}
],

"jsx-a11y/anchor-is-valid": "warn",
"prettier/prettier": "warn",
"promise/catch-or-return": "error",
"promise/no-new-statics": "error",
"promise/no-return-wrap": "error",
"promise/param-names": "error",
"promise/avoid-new": "warn",
"promise/no-callback-in-promise": "warn",
"promise/no-nesting": "warn",
"promise/no-promise-in-callback": "warn",
"promise/no-return-in-finally": "warn",
"promise/valid-params": "warn",
"promise/always-return": "off",
"promise/no-native": "off",
"react/prop-types": "off",
"react/react-in-jsx-scope": "off",
"react-hooks/rules-of-hooks": "error",
"react-hooks/exhaustive-deps": "warn",
"react-refresh/only-export-components": [
"warn",
{ "allowConstantExport": true }
],
"unicorn/expiring-todo-comments": "off",
"unicorn/filename-case": "off",
"unicorn/no-useless-undefined": "warn",
"unicorn/prevent-abbreviations": "warn"
}
}
3 changes: 3 additions & 0 deletions .github/FUNDING.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
# These are supported funding model platforms

github: kyonru
57 changes: 57 additions & 0 deletions .github/workflows/lint.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
name: Lint

on:
push:
branches: [main, dev]
pull_request:
branches: [main, dev]

jobs:
lint:
name: Run TypeScript Linting
runs-on: ubuntu-latest
timeout-minutes: 10

steps:
- name: Checkout code
uses: actions/checkout@v4

- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: 20
cache: 'npm'

- name: Install dependencies
run: npm ci

- name: Run TypeScript checks
run: npm run typecheck:web

- name: Run linting
run: npm run lint
lint-lua:
name: Run Lua (Love2D) Linting
runs-on: ubuntu-latest
timeout-minutes: 10
if: |
contains(github.event_name, 'pull_request') ||
contains(github.event.head_commit.message, 'src-lua/') ||
github.event_name == 'push'
steps:
- name: Checkout code
uses: actions/checkout@v4

- name: Install Lua & luarocks
run: |
sudo apt-get update
sudo apt-get install -y lua5.4 luarocks

- name: Install luacheck
run: luarocks install luacheck --local

- name: Add local LuaRocks bin to PATH
run: echo "$HOME/.luarocks/bin" >> $GITHUB_PATH

- name: Run luacheck with Love2D globals
run: luacheck src-lua --globals love
37 changes: 37 additions & 0 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
name: LuaRocks release
on:
push:
tags: # Will upload to luarocks.org when a tag is pushed
- '*'
pull_request: # Will test a local install without uploading to luarocks.org

jobs:
luarocks-release:
runs-on: ubuntu-latest
name: LuaRocks upload
steps:
- name: Checkout
uses: actions/checkout@v3
# - name: Fail if changelog entry does not exist
# run: grep -q "${{ github.ref_name }}" CHANGELOG.md
- name: LuaRocks Upload
uses: nvim-neorocks/luarocks-tag-release@v7
with:
license: Feather License
labels: |
love2d
löve
debug
copy_directories: |
src-lua/feather
summary: Debug & Inspect Tool for LÖVE (love2d)
detailed_description: |
Feather is a debugger tool with a plugin system for Love2D projects.
fail_on_duplicate: true
env:
LUAROCKS_API_KEY: ${{ secrets.LUAROCKS_API_KEY }}
- name: GitHub Release
uses: ncipollo/release-action@v1
with:
bodyFile: 'CHANGELOG.md'
allowUpdates: true
19 changes: 19 additions & 0 deletions .luacheckrc
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
files['.luacheckrc'].global = false
std = 'max+busted'
max_line_length = false

globals = {
'love',
'getVersion',
'getTitle'
}

exclude_files = {
'./lua_install/*',
'./src-lua/feather/lib/*'
}

ignore = {
'/self',
'121'
}
27 changes: 27 additions & 0 deletions .prettierignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
## Modules and libraries
node_modules/
dist/
build/

## Build files
pnpm-lock.json

## Environment
src/vite-env.d.ts
env.d.ts

## Linter / Formatter
.prettierrc
.eslintrc
.stylelintrc

## Config files
vite.config.ts
tailwind.config.js
postcss.config.js

## Tauri
src-tauri/

## Lua
src-lua/
9 changes: 9 additions & 0 deletions .prettierrc
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
{
"trailingComma": "all",
"tabWidth": 2,
"semi": true,
"singleQuote": true,
"printWidth": 120,
"bracketSpacing": true,
"endOfLine": "lf"
}
27 changes: 27 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
# Changelog

All notable changes to this project 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).

## [Unreleased]

### Added

### Changed

### Removed

## [v0.1.0] - 2025-08-10

### Added

- Feather library.
- React frontend.
- README and LICENSE.
- LuaRocks package.
- GitHub Actions CI.

[unreleased]: https://github.com/Kyonru/feather/compare/v0.1.0...HEAD
[v0.1.0]: https://github.com/Kyonru/feather/releases/tag/v0.1.0
4 changes: 3 additions & 1 deletion LICENSE.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,11 +13,13 @@ Use, copy, modify, and distribute the Licensed Work in source and/or compiled fo

Use the Licensed Work for personal, educational, or non-commercial purposes, including open source projects that comply with the restrictions below.

Use the Licensed Work for commercial purposes only if your product or service is not a derivative or direct copy of this Licensed Work (for example, you may use it as part of building a different kind of product or game, but not to create another debugger or substantially similar competing product).

## Restrictions

You may not:

Commercial Products – Use the Licensed Work, in whole or in part, to create or offer any commercial product or service without prior written approval from the Licensor.
Commercial Products – Use the Licensed Work, in whole or in part, to create or offer any commercial product or service that is a derivative or direct copy of this Licensed Work (e.g., another debugger or substantially similar competing product) without prior written approval from the Licensor. Commercial use is allowed for other types of products or services that are not substantially similar to the Licensed Work.

Open Source Derivatives – Create or distribute a free/open source product based on the Licensed Work if that product’s license or terms would allow others to commercially use, sell, or license it, unless prior written approval from the Licensor is obtained.

Expand Down
Loading
Loading