From c53acb16fc066ec736264572897d8531e2d3633a Mon Sep 17 00:00:00 2001 From: Uruk Date: Thu, 9 Oct 2025 16:08:59 +0200 Subject: [PATCH] chore: organize .gitignore and add VS Code workspace config Restructures .gitignore with logical sections and comments to improve maintainability and clarity. Groups related patterns under headers like Dependencies, Build Artifacts, Certificates, and Secrets. Adds VS Code workspace configuration to standardize development environment across the team. Includes recommended extensions for React Native/Expo development (Biome, Expo tools, React Native debugger, Tailwind IntelliSense) and comprehensive editor settings for formatting, TypeScript performance, and file navigation. Configures Biome as the default formatter with format-on-save enabled for JavaScript/TypeScript files. Optimizes TypeScript settings for better auto-imports and IntelliSense. Enables file nesting in explorer and excludes build directories from file watcher to improve editor performance. --- .gitignore | 74 ++++++++++------- .vscode/extensions.json | 24 ++++++ .vscode/settings.json | 176 +++++++++++++++++++++++++++++++++++++--- 3 files changed, 234 insertions(+), 40 deletions(-) create mode 100644 .vscode/extensions.json diff --git a/.gitignore b/.gitignore index b6d9c1a0..f75ba12e 100644 --- a/.gitignore +++ b/.gitignore @@ -1,27 +1,16 @@ +# Dependencies and Package Managers node_modules/ -.expo/ -dist/ -npm-debug.* -*.jks -*.p8 -*.p12 -*.key -*.mobileprovision -*.orig.* -web-build/ -modules/vlc-player/android/build - -# macOS -.DS_Store - -expo-env.d.ts - -Streamyfin.app - -*.mp4 -Streamyfin.app +bun.lock +bun.lockb package-lock.json +# Expo and React Native Build Artifacts +.expo/ +dist/ +web-build/ +.tsbuildinfo + +# Platform-specific Build Directories /ios /android /iostv @@ -29,21 +18,48 @@ package-lock.json /androidmobile /androidtv +# Module-specific Builds +modules/vlc-player/android/build modules/player/android +modules/hls-downloader/android/build -pc-api-7079014811501811218-719-3b9f15aeccf8.json -credentials.json +# Generated Applications +Streamyfin.app *.apk *.ipa -.continuerc.json +*.aab +# Certificates and Keys +*.jks +*.p8 +*.p12 +*.key +*.mobileprovision + +# Debug and Temporary Files +npm-debug.* +*.orig.* +*.mp4 + +# OS-specific Files +# macOS +.DS_Store + +# IDE and Editor Files .vscode/ .idea/ .ruby-lsp -modules/hls-downloader/android/build -streamyfin-4fec1-firebase-adminsdk.json + +# Environment and Configuration +expo-env.d.ts +.continuerc.json .env .env.local -*.aab -/version-backup-* -bun.lockb \ No newline at end of file + +# Secrets and Credentials +pc-api-7079014811501811218-719-3b9f15aeccf8.json +credentials.json +streamyfin-4fec1-firebase-adminsdk.json + +# Version and Backup Files +/version-backup-* \ No newline at end of file diff --git a/.vscode/extensions.json b/.vscode/extensions.json new file mode 100644 index 00000000..bf643af9 --- /dev/null +++ b/.vscode/extensions.json @@ -0,0 +1,24 @@ +{ + // ========================================== + // Streamyfin - Recommended VS Code Extensions + // ========================================== + // Essential extensions for working with Streamyfin + // See .github/copilot-instructions.md for coding standards + + "recommendations": [ + // Code Quality & Formatting + "biomejs.biome", // Fast formatter and linter for JavaScript/TypeScript - replaces ESLint + Prettier + + // React Native & Expo + "expo.vscode-expo-tools", // Official Expo extension - provides commands, debugging, and config IntelliSense + "msjsdiag.vscode-react-native", // React Native debugging and IntelliSense - essential for RN development + + // Developer Experience + "bradlc.vscode-tailwindcss", // Tailwind CSS IntelliSense - autocomplete for NativeWind classes + "yoavbls.pretty-ts-errors", // Makes TypeScript error messages human-readable with formatting and highlights + "usernamehw.errorlens", // Shows errors and warnings inline in the editor - faster debugging + + // Bun Support + "oven.bun-vscode" // Official Bun extension - provides debugging and language support for Bun runtime + ] +} diff --git a/.vscode/settings.json b/.vscode/settings.json index b200b485..d1f8a0db 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -1,24 +1,178 @@ { + // ========================================== + // FORMATTING & LINTING + // ========================================== + + // Biome as default formatter + "editor.defaultFormatter": "biomejs.biome", + "editor.formatOnSave": true, + "editor.formatOnPaste": true, + "editor.formatOnType": false, + + // Language-specific formatters "[javascript]": { "editor.defaultFormatter": "biomejs.biome", "editor.formatOnSave": true }, + "[typescript]": { + "editor.defaultFormatter": "biomejs.biome", + "editor.formatOnSave": true + }, "[typescriptreact]": { "editor.defaultFormatter": "biomejs.biome", "editor.formatOnSave": true }, - "prettier.printWidth": 120, - "[swift]": { - "editor.defaultFormatter": "sswg.swift-lang" - }, - "editor.formatOnSave": true, - "editor.defaultFormatter": "biomejs.biome", - "[typescript]": { - "editor.defaultFormatter": "biomejs.biome", - "editor.formatOnSave": true - }, "[javascriptreact]": { "editor.defaultFormatter": "biomejs.biome", "editor.formatOnSave": true - } + }, + "[json]": { + "editor.defaultFormatter": "biomejs.biome", + "editor.formatOnSave": true + }, + "[jsonc]": { + "editor.defaultFormatter": "biomejs.biome", + "editor.formatOnSave": true + }, + "[swift]": { + "editor.insertSpaces": true, + "editor.tabSize": 2 + }, + + // ========================================== + // TYPESCRIPT & JAVASCRIPT + // ========================================== + + // TypeScript performance optimizations + "typescript.preferences.includePackageJsonAutoImports": "auto", + "typescript.suggest.autoImports": true, + "typescript.updateImportsOnFileMove.enabled": "always", + "typescript.preferences.preferTypeOnlyAutoImports": true, + "typescript.preferences.importModuleSpecifier": "relative", + "typescript.preferences.includeCompletionsForImportStatements": true, + "typescript.preferences.includeCompletionsWithSnippetText": true, + + // JavaScript settings + "javascript.preferences.importModuleSpecifier": "relative", + "javascript.suggest.autoImports": true, + "javascript.updateImportsOnFileMove.enabled": "always", + + // ========================================== + // REACT NATIVE & EXPO + // ========================================== + + // File associations for React Native + "files.associations": { + "*.expo.ts": "typescript", + "*.expo.tsx": "typescriptreact", + "*.expo.js": "javascript", + "*.expo.jsx": "javascriptreact", + "metro.config.js": "javascript", + "babel.config.js": "javascript", + "app.config.js": "javascript", + "eas.json": "jsonc" + }, + + // React Native specific settings + "emmet.includeLanguages": { + "typescriptreact": "html", + "javascriptreact": "html" + }, + "emmet.triggerExpansionOnTab": true, + + // Exclude build directories from search + "search.exclude": { + "**/node_modules": true + }, + + // ========================================== + // EDITOR PERFORMANCE & UX + // ========================================== + + // Performance optimizations + "editor.largeFileOptimizations": true, + "files.watcherExclude": { + "**/.git/objects/**": true, + "**/.git/subtree-cache/**": true, + "**/node_modules/**": true, + "**/.expo/**": true, + "**/ios/**": true, + "**/android/**": true, + "**/build/**": true, + "**/dist/**": true + }, + + // Better editor behavior + "editor.suggestSelection": "first", + "editor.quickSuggestions": { + "strings": true, + "comments": true, + "other": true + }, + "editor.snippetSuggestions": "top", + "editor.tabCompletion": "on", + "editor.wordBasedSuggestions": "off", + + // ========================================== + // TERMINAL & DEVELOPMENT + // ========================================== + + // Terminal settings for Bun (Windows-specific) + "terminal.integrated.profiles.windows": { + "Command Prompt": { + "path": "C:\\Windows\\System32\\cmd.exe", + "env": { + "PATH": "${env:PATH};./node_modules/.bin" + } + } + }, + + // ========================================== + // WORKSPACE & NAVIGATION + // ========================================== + + // Better workspace navigation + "explorer.fileNesting.enabled": true, + "explorer.fileNesting.expand": false, + "explorer.fileNesting.patterns": { + "*.ts": "${capture}.js", + "*.tsx": "${capture}.js", + "*.js": "${capture}.js,${capture}.js.map,${capture}.min.js,${capture}.d.ts", + "*.jsx": "${capture}.js", + "package.json": "package-lock.json,yarn.lock,bun.lock,bun.lockb,.yarnrc,.yarnrc.yml", + "tsconfig.json": "tsconfig.*.json", + ".env": ".env.*", + "app.json": "app.config.js,eas.json,expo-env.d.ts", + "README.md": "LICENSE.txt,SECURITY.md,CODE_OF_CONDUCT.md,CONTRIBUTING.md" + }, + + // Better breadcrumbs and navigation + "breadcrumbs.enabled": true, + "outline.showVariables": true, + "outline.showConstants": true, + + // ========================================== + // GIT & VERSION CONTROL + // ========================================== + + // Git integration + "git.autofetch": true, + "git.enableSmartCommit": true, + "git.confirmSync": false, + "git.ignoreLimitWarning": true, + + // ========================================== + // CODE QUALITY & ERRORS + // ========================================== + + // Better error detection + "typescript.validate.enable": true, + "javascript.validate.enable": true, + "editor.codeActionsOnSave": { + "source.fixAll": "explicit", + "source.organizeImports": "explicit" + }, + + // Problem matcher for better error display + "typescript.tsc.autoDetect": "on" }