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
12 changes: 6 additions & 6 deletions .github/workflows/lint.yml
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ on:
- unlocked
paths:
- "src/extension/**"
- "src/web-view/**"
- "src/view/**"
- "**/*.json"
- "**/*.yml"
- "**/*.yaml"
Expand All @@ -19,7 +19,7 @@ on:
- main
paths:
- "src/extension/**"
- "src/web-view/**"
- "src/view/**"
- "**/*.json"
- "**/*.yml"
- "**/*.yaml"
Expand Down Expand Up @@ -52,8 +52,8 @@ jobs:
- name: Lint Extension
run: just lint extension

lint-web-view:
name: Lint Web View Code
lint-view:
name: Lint View Code
runs-on: ubuntu-latest
steps:
- name: Checkout
Expand All @@ -74,8 +74,8 @@ jobs:
- name: Install dependencies
run: just deps

- name: Lint Web View
run: just lint web-view
- name: Lint View
run: just lint view

lint-config:
name: Lint Config Files
Expand Down
2 changes: 1 addition & 1 deletion .lintstagedrc.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
module.exports = {
"src/extension/**/*.ts": () => "just lint extension",
"src/web-view/**/*.{ts,tsx}": () => "just lint web-view",
"src/view/**/*.{ts,tsx}": () => "just lint view",
"**/*.{json,yml,yaml,md}": () => "just lint config",
justfile: () => "just lint justfile",
};
25 changes: 13 additions & 12 deletions .vscodeignore
Original file line number Diff line number Diff line change
@@ -1,13 +1,21 @@
# Source code files - only include compiled output
src/extension/src/
src/extension/main.ts
src/extension/__mocks__/
src/extension/*.test.ts
src/extension/*.test.js
src/extension/*.spec.ts
src/extension/*.spec.js
src/internal/
src/pkg/
src/shared/
src/tests/

# Development dependencies
src/web-view/node_modules/
src/view/node_modules/
src/node_modules/
src/package.json
src/pnpm-lock.yaml
src/eslint.config.js

# Exclude dev dependencies from extension package
src/extension/node_modules/@jest/
Expand All @@ -30,16 +38,8 @@ src/extension/.gitignore
src/extension/yarn.lock
src/extension/package-lock.json

# Web view source (keep only built output)
src/web-view/src/
src/web-view/public/
src/web-view/node_modules/
src/web-view/package.json
src/web-view/package-lock.json
src/web-view/yarn.lock
src/web-view/tsconfig.json
src/web-view/vite.config.ts
src/web-view/.gitignore
# View source (keep only built output in view-dist)
src/view/

# Root public folder - exclude large screenshots but keep logo
public/screenshots/
Expand All @@ -48,6 +48,7 @@ public/*.gif

# Root level dependencies
node_modules/
.pnpm-store/
frontend/

# Development files
Expand Down
4 changes: 2 additions & 2 deletions CLAUDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -61,7 +61,7 @@ npm run ovsx-publish # Publish to Open VSX Registry

```bash
# React + Vite configuration UI
cd src/web-view
cd src/view
npm run dev # Start dev server
npm run build # Build for production
npm run lint # Run ESLint
Expand Down Expand Up @@ -144,7 +144,7 @@ src/extension/src/ # TypeScript extension code
command-executor.ts # Command execution logic
keyboard-layout-converter.ts # Multi-language support

src/web-view/src/ # React configuration UI
src/view/src/ # React configuration UI
app.tsx # Root component
core/ # Reusable UI components
components/ # Feature-specific components
Expand Down
40 changes: 22 additions & 18 deletions justfile
Original file line number Diff line number Diff line change
@@ -1,46 +1,50 @@
set dotenv-load := true

root_dir := justfile_directory()
extension_dir := root_dir + "/src/extension"
web_view_dir := root_dir + "/src/web-view"
src_dir := root_dir + "/src"
extension_dir := src_dir + "/extension"
view_dir := src_dir + "/view"

deps: deps-root deps-extension deps-web-view
deps: deps-root deps-src deps-extension deps-view

deps-root:
cd "{{ root_dir }}" && pnpm install

deps-src:
cd "{{ src_dir }}" && pnpm install

deps-extension:
cd "{{ extension_dir }}" && pnpm install

deps-web-view:
cd "{{ web_view_dir }}" && pnpm install
deps-view:
cd "{{ view_dir }}" && pnpm install

install-package:
cd "{{ root_dir }}" && pnpm install-package

clean-build:
rm -rf "{{ web_view_dir }}/dist"
rm -rf "{{ extension_dir }}/web-view-dist"
rm -rf "{{ root_dir }}/out"
rm -rf "{{ view_dir }}/dist"
rm -rf "{{ extension_dir }}/view-dist"
rm -rf "{{ extension_dir }}/out"

lint target="all":
#!/usr/bin/env bash
set -euox pipefail
case "{{ target }}" in
all)
just lint extension
just lint web-view
just lint view
just lint config
just lint justfile
;;
extension)
npx prettier --write "{{ extension_dir }}/src/**/*.ts"
cd "{{ extension_dir }}"
pnpm lint
npx prettier --write "{{ src_dir }}/{extension,internal,pkg,shared,tests}/**/*.ts"
cd "{{ src_dir }}"
npx eslint --fix extension/main.ts internal pkg shared tests
;;
web-view)
npx prettier --write "{{ web_view_dir }}/src/**/*.{ts,tsx}"
cd "{{ web_view_dir }}"
view)
npx prettier --write "{{ view_dir }}/src/**/*.{ts,tsx}"
cd "{{ view_dir }}"
pnpm lint
;;
config)
Expand All @@ -56,8 +60,8 @@ lint target="all":
esac

package: clean-build
cd "{{ web_view_dir }}" && pnpm build
cp -r "{{ web_view_dir }}/dist" "{{ extension_dir }}/web-view-dist"
cd "{{ view_dir }}" && pnpm build
cp -r "{{ view_dir }}/dist" "{{ extension_dir }}/view-dist"
cd "{{ extension_dir }}" && pnpm compile
cd "{{ root_dir }}" && pnpm package

Expand Down Expand Up @@ -100,7 +104,7 @@ release:
@echo "📊 Check progress: https://github.com/KubrickCode/quick-command-buttons/actions"

run-view:
cd "{{ web_view_dir }}" && pnpm dev
cd "{{ view_dir }}" && pnpm dev

test mode="":
#!/usr/bin/env bash
Expand Down
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@
"activationEvents": [
"onStartupFinished"
],
"main": "./src/extension/out/src/main.js",
"main": "./src/extension/out/extension/main.js",
"contributes": {
"commands": [
{
Expand Down
46 changes: 43 additions & 3 deletions src/extension/eslint.config.js → src/eslint.config.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,16 +4,18 @@ import perfectionist from "eslint-plugin-perfectionist";
import tseslint from "typescript-eslint";

export default [
{
ignores: ["**/out/**", "**/__mocks__/**", "**/*.config.*", "**/node_modules/**", "**/view/**", "**/coverage/**"],
},
js.configs.recommended,
...tseslint.configs.recommended,
{
files: ["src/**/*.ts", "test/**/*.ts"],
ignores: ["dist", "node_modules"],
files: ["extension/main.ts", "internal/**/*.ts", "pkg/**/*.ts", "shared/**/*.ts"],
languageOptions: {
parser: tseslint.parser,
parserOptions: {
ecmaVersion: "latest",
project: "./tsconfig.json",
project: "./extension/tsconfig.json",
sourceType: "module",
tsconfigRootDir: import.meta.dirname,
},
Expand Down Expand Up @@ -77,4 +79,42 @@ export default [
],
},
},
{
files: ["tests/**/*.ts"],
languageOptions: {
parser: tseslint.parser,
parserOptions: {
ecmaVersion: "latest",
sourceType: "module",
},
},
plugins: {
"@typescript-eslint": tseslint.plugin,
import: importPlugin,
perfectionist,
},
rules: {
"@typescript-eslint/consistent-type-definitions": ["error", "type"],
"@typescript-eslint/explicit-function-return-type": "off",
"@typescript-eslint/explicit-module-boundary-types": "off",
"@typescript-eslint/no-explicit-any": "off",
"@typescript-eslint/no-unused-vars": [
"error",
{
argsIgnorePattern: "^_",
caughtErrorsIgnorePattern: "^_",
varsIgnorePattern: "^_",
},
],
"import/order": [
"error",
{
alphabetize: {
caseInsensitive: true,
order: "asc",
},
},
],
},
},
];
2 changes: 1 addition & 1 deletion src/extension/.gitignore
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
node_modules
out
web-view-dist
view-dist
1 change: 0 additions & 1 deletion src/extension/.npmrc
Original file line number Diff line number Diff line change
@@ -1,2 +1 @@
node-linker=hoisted
shamefully-hoist=true
13 changes: 10 additions & 3 deletions src/extension/jest.config.js → src/extension/jest.config.cjs
Original file line number Diff line number Diff line change
Expand Up @@ -2,15 +2,22 @@
module.exports = {
preset: "ts-jest",
testEnvironment: "node",
roots: ["<rootDir>/src"],
testMatch: ["**/*.test.ts"],
roots: ["<rootDir>/../tests"],
testMatch: ["**/*.spec.ts"],
transform: {
"^.+\\.ts$": "ts-jest",
},
collectCoverageFrom: ["src/**/*.ts", "!src/**/*.d.ts", "!src/**/*.test.ts"],
collectCoverageFrom: [
"../extension/**/*.ts",
"../internal/**/*.ts",
"../pkg/**/*.ts",
"!**/*.d.ts",
"!**/*.spec.ts",
],
coverageDirectory: "coverage",
coverageReporters: ["text", "lcov", "html"],
moduleFileExtensions: ["ts", "js", "json"],
moduleDirectories: ["node_modules", "<rootDir>/node_modules"],
verbose: true,
clearMocks: true,
restoreMocks: true,
Expand Down
20 changes: 10 additions & 10 deletions src/extension/src/main.ts → src/extension/main.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,16 +3,16 @@ import {
createVSCodeConfigReader,
createVSCodeStatusBarCreator,
createVSCodeQuickPickCreator,
} from "./adapters";
import { executeButtonCommand } from "./command-executor";
import { CommandTreeProvider, CommandTreeItem } from "./command-tree-provider";
import { CONFIGURATION_TARGETS } from "./config-constants";
import { ConfigManager } from "./config-manager";
import { createShowAllCommandsCommand } from "./show-all-commands";
import { StatusBarManager } from "./status-bar-manager";
import { TerminalManager } from "./terminal-manager";
import { ButtonConfig } from "./types";
import { ConfigWebviewProvider } from "./webview-provider";
} from "../internal/adapters";
import { executeButtonCommand } from "../internal/command-executor";
import { ConfigManager } from "../internal/managers/config-manager";
import { StatusBarManager } from "../internal/managers/status-bar-manager";
import { TerminalManager } from "../internal/managers/terminal-manager";
import { CommandTreeProvider, CommandTreeItem } from "../internal/providers/command-tree-provider";
import { ConfigWebviewProvider } from "../internal/providers/webview-provider";
import { createShowAllCommandsCommand } from "../internal/show-all-commands";
import { CONFIGURATION_TARGETS } from "../pkg/config-constants";
import { ButtonConfig } from "../pkg/types";

export const registerCommands = (
context: vscode.ExtensionContext,
Expand Down
2 changes: 1 addition & 1 deletion src/extension/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
"description": "Extension source code for Quick Command Buttons",
"scripts": {
"compile": "tsc -p ./",
"lint": "eslint --fix src/**/*.ts",
"lint": "cd .. && npx eslint --fix extension/main.ts internal pkg shared tests",
"test": "jest",
"test:watch": "jest --watch",
"test:coverage": "jest --coverage",
Expand Down
15 changes: 13 additions & 2 deletions src/extension/tsconfig.json
Original file line number Diff line number Diff line change
Expand Up @@ -3,15 +3,26 @@
"module": "commonjs",
"target": "ES2020",
"outDir": "./out",
"rootDir": "..",
"lib": ["ES2020", "dom"],
"sourceMap": true,
"strict": true,
"esModuleInterop": true,
"skipLibCheck": true,
"forceConsistentCasingInFileNames": true,
"resolveJsonModule": true,
"types": ["node", "jest", "vscode"]
"types": ["node", "jest", "vscode"],
"baseUrl": "..",
"paths": {
"*": ["extension/node_modules/*", "node_modules/*"]
}
},
"include": ["src/**/*", "../shared/**/*"],
"include": [
"../extension/**/*",
"../internal/**/*",
"../pkg/**/*",
"../shared/**/*",
"../tests/**/*"
],
"exclude": ["node_modules", ".vscode-test", "coverage"]
}
1 change: 1 addition & 0 deletions src/extension/view-dist/assets/index-DaHakWf7.css

Large diffs are not rendered by default.

Loading