You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
.PHONY: all build frontend backend dev dev-backend dev-frontend dev-expose clean test help themes-fetch themes-clean
21
+
.PHONY: all build frontend backend dev dev-backend dev-frontend dev-expose clean test help themes-fetch themes-clean lint lint-full lint-json lint-fix fmt modern deps
22
22
23
23
# Default target
24
24
all: build
@@ -100,7 +100,7 @@ clean: themes-clean
100
100
# Run tests
101
101
test:
102
102
@echo "Running tests..."
103
-
go test -race -v ./...
103
+
go test -race -count=3 -v ./...
104
104
105
105
# Validate OpenAPI specification
106
106
test-openapi:
@@ -113,12 +113,32 @@ fmt:
113
113
go fmt ./...
114
114
cd$(WEB_DIR)&& pnpm format
115
115
116
-
# Lint code
116
+
# Lint code (changed files only - fast feedback for AI iteration)
117
117
lint:
118
-
@echo "Linting code..."
119
-
golangci-lint run
118
+
@echo "Linting changed Go code..."
119
+
golangci-lint run --new-from-merge-base=main --timeout=5m
120
+
@echo "Linting frontend..."
120
121
cd$(WEB_DIR)&& pnpm lint
121
122
123
+
# Full lint (entire codebase - use before commits/PRs)
124
+
lint-full:
125
+
@echo "Linting entire Go codebase..."
126
+
golangci-lint run --timeout=10m
127
+
@echo "Linting frontend..."
128
+
cd$(WEB_DIR)&& pnpm lint
129
+
130
+
# Lint with JSON output (for AI agent consumption)
131
+
lint-json:
132
+
@echo "Generating lint report..."
133
+
golangci-lint run --new-from-merge-base=main --output.json.path=./lint-report.json --timeout=5m ||true
134
+
@echo "Lint report saved to lint-report.json"
135
+
136
+
# Lint with auto-fix where possible
137
+
lint-fix:
138
+
@echo "Running linters with auto-fix..."
139
+
golangci-lint run --fix --timeout=10m
140
+
cd$(WEB_DIR)&& pnpm lint --fix
141
+
122
142
# Modernize Go code (interface{} -> any, etc)
123
143
modern:
124
144
@echo "Modernizing Go code..."
@@ -133,20 +153,36 @@ deps:
133
153
# Help
134
154
help:
135
155
@echo "Available targets:"
136
-
@echo " make build - Build both frontend and backend"
137
-
@echo " make frontend - Build frontend only"
138
-
@echo " make backend - Build backend only"
139
-
@echo " make themes-fetch - Fetch premium themes from private repository"
140
-
@echo " make themes-clean - Clean premium themes"
141
-
@echo " make dev - Run development servers"
142
-
@echo " make dev-backend - Run backend with hot reload"
143
-
@echo " make dev-frontend - Run frontend development server"
144
-
@echo " make dev-expose - Run frontend dev server exposed on 0.0.0.0"
145
-
@echo " make clean - Clean build artifacts"
146
-
@echo " make test - Run all tests"
147
-
@echo " make test-openapi - Validate OpenAPI specification"
148
-
@echo " make fmt - Format code"
149
-
@echo " make lint - Lint code"
150
-
@echo " make modern - Modernize Go code (interface{} -> any, etc)"
151
-
@echo " make deps - Install dependencies"
152
-
@echo " make help - Show this help message"
156
+
@echo ""
157
+
@echo "Build:"
158
+
@echo " make build - Build both frontend and backend"
159
+
@echo " make frontend - Build frontend only"
160
+
@echo " make backend - Build backend only"
161
+
@echo " make build/docker - Build Docker image"
162
+
@echo ""
163
+
@echo "Development:"
164
+
@echo " make dev - Run development servers (air + pnpm dev)"
165
+
@echo " make dev-backend - Run backend with hot reload"
166
+
@echo " make dev-frontend - Run frontend development server"
167
+
@echo " make dev-expose - Run frontend dev server exposed on 0.0.0.0"
168
+
@echo ""
169
+
@echo "Testing:"
170
+
@echo " make test - Run all tests with race detection"
171
+
@echo " make test-openapi - Validate OpenAPI specification"
172
+
@echo ""
173
+
@echo "Linting:"
174
+
@echo " make lint - Lint changed files only (fast, for iteration)"
175
+
@echo " make lint-full - Lint entire codebase"
176
+
@echo " make lint-json - Generate JSON lint report for AI agents"
177
+
@echo " make lint-fix - Auto-fix linting issues where possible"
178
+
@echo ""
179
+
@echo "Formatting:"
180
+
@echo " make fmt - Format Go and frontend code"
181
+
@echo " make modern - Modernize Go code (interface{} -> any)"
182
+
@echo ""
183
+
@echo "Other:"
184
+
@echo " make themes-fetch - Fetch premium themes from private repository"
Copy file name to clipboardExpand all lines: README.md
+2-1Lines changed: 2 additions & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -40,7 +40,8 @@ A fast, modern web interface for qBittorrent. Supports managing multiple qBittor
40
40
-**OIDC Single Sign-On**: Authenticate through your OpenID Connect provider
41
41
-**External Programs**: Launch custom scripts from the torrent context menu ([guide](internal/api/handlers/EXTERNAL_PROGRAMS.md))
42
42
-**Tracker Reannounce**: Automatically fix stalled torrents when qBittorrent doesn't retry fast enough ([info](internal/services/reannounce/REANNOUNCE.md))
43
-
-**Tracker Rules**: Apply per-tracker speed limits, ratio caps, and seeding time limits automatically ([info](internal/services/trackerrules/TRACKER_RULES.md))
43
+
-**Automations**: Rule-based torrent management with conditions, actions (delete, pause, tag, limit speeds), and cross-seed awareness ([info](internal/services/automations/AUTOMATIONS.md))
44
+
-**Orphan Scan**: Find and remove files not associated with any torrent ([info](internal/services/orphanscan/ORPHANSCAN.md))
44
45
-**Backups & Restore**: Scheduled snapshots with incremental, overwrite, and complete restore modes ([info](#backups--restore-modes))
45
46
-**Cross-Seed**: Automatically find and add matching torrents across trackers with autobrr webhook integration ([info](#cross-seed))
46
47
-**Reverse Proxy**: Transparent qBittorrent proxy for external apps like autobrr, Sonarr, and Radarr—no credential sharing needed ([info](#reverse-proxy-for-external-applications))
0 commit comments