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
19 changes: 19 additions & 0 deletions .github/workflows/pr-pipeline.yml
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,25 @@ jobs:
contents: write
issues: read
steps:
# Step 0: Check Linting and Code Formatting Integrity
- name: Checkout Repository
uses: actions/checkout@v4

- name: Install Node.js Environment
uses: actions/setup-node@v4
with:
node-version: 20
cache: "npm"

- name: Install Project Dependencies
run: npm ci

- name: Verify src/ Code Style Formatting
run: npm run format:check

- name: Run src/ ESLint Verification Analysis
run: npm run lint

# Step 1: Validate Title Formats
- name: Verify PR Title Format
uses: actions/github-script@v7
Expand Down
20 changes: 18 additions & 2 deletions .github/workflows/publish.yml
Original file line number Diff line number Diff line change
Expand Up @@ -22,10 +22,26 @@ jobs:
node-version: 26
registry-url: https://registry.npmjs.org

- name: Install Dependencies
# Check Linting and Code Formatting Integrity
- name: Checkout Repository
uses: actions/checkout@v4

- name: Install Node.js Environment
uses: actions/setup-node@v4
with:
node-version: 20
cache: "npm"

- name: Install Project Dependencies
run: npm ci

# 4. Compile the TS source into the optimized executable bundle
- name: Verify src/ Code Style Formatting
run: npm run format:check

- name: Run src/ ESLint Verification Analysis
run: npm run lint

# Compile the TS source into the optimized executable bundle
- name: Build Executables
run: npm run build

Expand Down
8 changes: 8 additions & 0 deletions .prettierrc
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
{
"semi": true,
"trailingComma": "es5",
"singleQuote": true,
"printWidth": 85,
"tabWidth": 4,
"endOfLine": "lf"
}
11 changes: 7 additions & 4 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ labeled/

### Component Guidelines
1. **Adding Package Managers (`src/managers/`)**: Avoid creating deep `if-else` branching conditions inside the execution loop. If you are adding support for a new manager (like Snap or Flatpak), implement the common interface declared in `src/managers/index.ts` and drop your mapping strategy into its own class file.
2. **State Mutation Safety (`src/utils/`)**: All mutations interacting with your target storage layers must use unified wrappers through `getData.ts` and `saveData.ts`. This protects the engine from runtime synchronization corruption.
2. **State Mutation Safety (`src/utils/`)**: All mutations interacting with your target storage layers must use unified wrappers through `getData.ts` and `setData.ts`. This protects the engine from runtime synchronization corruption.
3. **Output Standardization (`src/utils/logger.ts`)**: Do not call raw `console.log` arrays directly inside deep logic layers. Use the unified terminal styling framework to keep user-facing telemetry outputs consistent.

---
Expand Down Expand Up @@ -91,13 +91,16 @@ type-issue_id-issue_name-fixed_x_y_z
### 2. Scope Containment
- **One issue per Pull Request.** Multi-issue mega-PRs will be automatically blocked. Keep your changes focused entirely on solving your assigned issue.

### 3. PR Naming Convention
### 3. Do Linting and Formatting
Before submitting for PR you must run `npm run lint` and fix the issues then run the `npm run format`.

### 4. PR Naming Convention
PR titles must follow the exact same bracket prefix rules used for issues (e.g., `[FEATURE]: add flatpak tracking backend`).

### 4. Complete the Verification Checklist
### 5. Complete the Verification Checklist
When you open a PR, our template displays a checklist tracking system requirements. You must read through the text and change every single empty checkbox from `[ ]` to `[x]` to confirm your local verification passes. Leaving any box empty triggers an automatic CI failure.

### 5. Link Your Assigned Issue
### 6. Link Your Assigned Issue
You must explicitly link your assigned issue inside the PR body description using standard closing keywords (e.g., `close #12`, `fixes #42`, `resolves #11`).

Our validation engine parses this link to double-check that you are the registered assignee of that issue. If the ownership check does not pass, the workflow blocks execution.
Expand Down
26 changes: 26 additions & 0 deletions eslint.config.mts
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
import eslint from "@eslint/js";
import tseslint from "typescript-eslint";
import eslintConfigPrettier from "eslint-config-prettier";

export default tseslint.config(
eslint.configs.recommended,
...tseslint.configs.recommended,
eslintConfigPrettier,
{
// Explicitly scope type checking and linting to the src directory
files: ["src/**/*.ts"],
languageOptions: {
parserOptions: {
project: "./tsconfig.json",
},
},
rules: {
"@typescript-eslint/no-explicit-any": "warn",
"@typescript-eslint/no-unused-vars": [
"error",
{ argsIgnorePattern: "^_" },
],
"no-console": ["warn", { allow: ["warn", "error", "log"] }],
},
},
);
Loading
Loading