Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
22 commits
Select commit Hold shift + click to select a range
9f37a8b
Phase 1: Upgrade CI to Node 20 and Actions v4
paranoidi Jun 28, 2026
f574099
Phase 2: Upgrade TypeScript 5 + Prettier 3, reformat codebase
paranoidi Jun 28, 2026
6b2bd19
Phase 3+6: Upgrade React 18 + React Router v6, remove react-hot-loader
paranoidi Jun 28, 2026
64a9cfc
Phase 4: Jest 29 + RTL v14 + Enzyme removal + faker-js migration
paranoidi Jun 28, 2026
48407d8
Phase 5: Emotion v11 + MUI v5 migration
paranoidi Jun 28, 2026
05a0149
Phase 7: Webpack 5 + Monaco 0.50+ + @monaco-editor/react
paranoidi Jun 28, 2026
cc57971
Phase 8: ESLint 9 flat config, Taskfile, nvm
paranoidi Jun 28, 2026
9b3d08e
Add .env support and SERVER proxy docs
paranoidi Jun 28, 2026
573a0af
Fix Taskfile: use fish shell for node tasks
paranoidi Jun 28, 2026
6d0ad53
Fix Taskfile: shell-agnostic nvm sourcing for all node tasks
paranoidi Jun 28, 2026
09f06d6
Fix Taskfile: shell-agnostic, rely on PATH from active nvm node
paranoidi Jun 28, 2026
dc03394
Fix all build errors from modernization phases
paranoidi Jun 28, 2026
a376cdc
proxy: add changeOrigin so Host header matches remote FlexGet server
paranoidi Jun 28, 2026
ecd049e
Fix app failing to start: missing polyfill entries and stale preset-r…
paranoidi Aug 6, 2026
c168811
Fix Config editor "Missing requestHandler or method: doValidation" error
paranoidi Aug 6, 2026
ff257b2
Fix log page stuck at "Connecting"
paranoidi Aug 6, 2026
d2e53c3
Fix log page filter alignment and top padding
paranoidi Aug 6, 2026
038be4f
Fix history filter fields' padding and truncated Sort/Group By text
paranoidi Aug 6, 2026
7f9f09f
Add empty state to history list
paranoidi Aug 6, 2026
4dae272
Fix selected list tab being invisible against AppBar background
paranoidi Aug 6, 2026
766f32a
Fix squished fields in Add Entry / Add Show dialogs
paranoidi Aug 6, 2026
e0fc6e8
Cap movie/series rating display to one decimal place
paranoidi Aug 6, 2026
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
2 changes: 2 additions & 0 deletions .env.example
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
# FlexGet server to proxy API requests to (default: http://localhost:5050)
SERVER=http://localhost:5050
3 changes: 0 additions & 3 deletions .eslintignore

This file was deleted.

106 changes: 0 additions & 106 deletions .eslintrc.js

This file was deleted.

19 changes: 5 additions & 14 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -14,30 +14,21 @@ jobs:
strategy:
matrix:
node:
- 12.x
- 20.x
steps:
- uses: actions/checkout@v2
- uses: actions/checkout@v4
- name: Use Node.js ${{ matrix.node }}
uses: actions/setup-node@v1
uses: actions/setup-node@v4
with:
node-version: ${{ matrix.node }}
- name: Cache Dependencies
id: cache-dependencies
uses: actions/cache@v2
with:
path: node_modules
key: ${{ matrix.node }}-deps-${{ hashFiles('yarn.lock') }}
restore-keys: |
${{ matrix.node }}-deps-
cache: 'yarn'
- name: Install Dependencies
if: steps.cache-dependencies.outputs.cache-hit != 'true'
run: yarn install --frozen-lockfile
- name: Run Linter
run: yarn lint
- name: Run Tests
run: yarn test --ci --coverage -i
- name: Send to Code Cov
uses: codecov/codecov-action@v1
uses: codecov/codecov-action@v4
with:
token: ${{ secrets.CODECOV_TOKEN }}

6 changes: 3 additions & 3 deletions .github/workflows/nightly.yml
Original file line number Diff line number Diff line change
Expand Up @@ -8,13 +8,13 @@ jobs:
deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: actions/github-script@0.9.0
- uses: actions/checkout@v4
- uses: actions/github-script@v7
name: Create Deployment
with:
github-token: ${{ secrets.PERSONAL_ACCESS_TOKEN }}
script: |
await github.repos.createDeployment({
await github.rest.repos.createDeployment({
...context.repo,
ref: context.ref.slice(11),
});
23 changes: 8 additions & 15 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -6,13 +6,13 @@ jobs:
runs-on: ubuntu-latest
strategy:
matrix:
node: [12.x]
node: [20.x]
steps:
- uses: actions/checkout@v2
- uses: actions/checkout@v4
with:
token: ${{ secrets.PERSONAL_ACCESS_TOKEN }}
fetch-depth: 0
- uses: actions/checkout@v2
- uses: actions/checkout@v4
name: Checkout Flexget
with:
ref: develop
Expand All @@ -28,21 +28,14 @@ jobs:
GIT_EMAIL: ${{ secrets.GIT_EMAIL }}
GIT_USERNAME: ${{ secrets.GIT_USERNAME }}
- name: Use Node.js
uses: actions/setup-node@v1
uses: actions/setup-node@v4
with:
node-version: ${{ matrix.node }}
- name: Cache Dependencies
id: cache-dependencies
uses: actions/cache@v2
with:
path: node_modules
key: ${{ matrix.node }}-deps-${{ hashFiles('yarn.lock') }}
restore-keys: |
${{ matrix.node }}-deps-
cache: 'yarn'
- name: Install Dependencies
run: yarn install --frozen-lockfile
- name: Set Deployment Status Pending
uses: deliverybot/deployment-status@v1
uses: chrnorm/deployment-status@v2
with:
state: pending
token: ${{ github.token }}
Expand All @@ -55,13 +48,13 @@ jobs:
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Set Deployment Status Success
uses: deliverybot/deployment-status@v1
uses: chrnorm/deployment-status@v2
with:
state: success
token: ${{ github.token }}
- name: Set Deployment Status Failure
if: failure() || cancelled()
uses: deliverybot/deployment-status@v1
uses: chrnorm/deployment-status@v2
with:
state: failure
token: ${{ github.token }}
1 change: 1 addition & 0 deletions .nvmrc
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
20
68 changes: 68 additions & 0 deletions Taskfile.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,68 @@
version: '3'

dotenv: ['.env']

tasks:
setup:
desc: Install project dependencies (run `nvm use` first to activate the correct Node)
preconditions:
- sh: which npm
msg: "npm not found in PATH. Activate the correct Node version first (e.g. 'nvm use')."
cmds:
- npm install -g yarn
- yarn install

install:
desc: Install project dependencies
cmds:
- yarn install
sources:
- package.json
- yarn.lock
generates:
- node_modules/.yarn-integrity

dev:
desc: Start development server
cmds:
- yarn start

build:
desc: Build for production
cmds:
- yarn build

test:
desc: Run test suite
cmds:
- yarn test

test:watch:
desc: Run tests in watch mode
cmds:
- yarn test:watch

test:coverage:
desc: Run tests with coverage report
cmds:
- yarn test --coverage

lint:
desc: Run ESLint
cmds:
- yarn lint

lint:fix:
desc: Fix auto-fixable ESLint errors
cmds:
- yarn lint --fix

typecheck:
desc: Type-check without emitting
cmds:
- ./node_modules/.bin/tsc --noEmit

clean:
desc: Remove build output
cmds:
- rm -rf dist/
9 changes: 4 additions & 5 deletions babel.config.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
module.exports = function config(api) {
api.cache(true);
const presets = [
[
'@babel/preset-env',
Expand All @@ -8,18 +9,16 @@ module.exports = function config(api) {
modules: false,
},
],
'@babel/preset-react',
...(api.env() !== 'test'
? ['@emotion/babel-preset-css-prop', { sourceMap: api.env() !== 'test' }]
: []),
['@babel/preset-react', { runtime: 'automatic', importSource: '@emotion/react' }],
'@babel/preset-typescript',
];
const plugins = [
'@emotion/babel-plugin',
'@babel/plugin-syntax-dynamic-import',
'@babel/plugin-proposal-nullish-coalescing-operator',
'@babel/plugin-proposal-optional-chaining',
'@babel/plugin-proposal-class-properties',
'babel-plugin-polished',
'react-hot-loader/babel',
];

return {
Expand Down
Loading