diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md index b6be7f74..cc320661 100644 --- a/.github/ISSUE_TEMPLATE/bug_report.md +++ b/.github/ISSUE_TEMPLATE/bug_report.md @@ -9,8 +9,8 @@ assignees: '' ### Environment -* **OS**: -* **Version**: +* **OS**: +* **Version**: ### Problem diff --git a/.github/ISSUE_TEMPLATE/feature_request.md b/.github/ISSUE_TEMPLATE/feature_request.md index 809b7b05..83826c66 100644 --- a/.github/ISSUE_TEMPLATE/feature_request.md +++ b/.github/ISSUE_TEMPLATE/feature_request.md @@ -6,5 +6,3 @@ labels: enhancement assignees: '' --- - - diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md index 7b05aecc..7cdd3e30 100644 --- a/.github/PULL_REQUEST_TEMPLATE.md +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -6,7 +6,7 @@ -- +- - - - @@ -21,5 +21,3 @@ Closes # Fixes # - - diff --git a/.github/workflows/bun.yml b/.github/workflows/bun.yml deleted file mode 100644 index c0dda24a..00000000 --- a/.github/workflows/bun.yml +++ /dev/null @@ -1,41 +0,0 @@ -name: Bun CI - -on: - push: - branches: [main, master] - pull_request: - branches: [main, master] - workflow_dispatch: - -concurrency: - group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }} - cancel-in-progress: true - -jobs: - check: - name: check format, types, and lint - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - - - name: Setup Bun - uses: oven-sh/setup-bun@v2 - with: - bun-version: latest - - - name: Cache Bun dependencies - uses: actions/cache@v4 - with: - path: ~/.bun/install/cache - key: ${{ runner.os }}-bun-${{ hashFiles('**/bun.lock') }} - restore-keys: | - ${{ runner.os }}-bun- - - - name: Install dependencies - run: bun install - - - name: Run typecheck - run: bun typecheck - - - name: Run biome check - run: bun check diff --git a/.github/workflows/pre-commit.yml b/.github/workflows/pre-commit.yml new file mode 100644 index 00000000..75e7f112 --- /dev/null +++ b/.github/workflows/pre-commit.yml @@ -0,0 +1,43 @@ +name: Pre-commit + +on: + push: + branches: [main, master] + pull_request: + branches: [main, master] + workflow_dispatch: {} + +jobs: + pre-commit: + runs-on: ubuntu-latest + + steps: + - name: Checkout code + uses: actions/checkout@v4 + + - name: Set up Python + uses: actions/setup-python@v5 + with: + python-version: '3.13' + + - name: Set up Rust + uses: actions-rs/toolchain@v1 + with: + toolchain: stable + components: rustfmt + override: true + + - name: Set up Bun + uses: oven-sh/setup-bun@v2 + + - name: Install dependencies + run: bun install + + - name: Install pre-commit + run: | + pip install pre-commit + pre-commit install -f + pre-commit install --hook-type commit-msg + + - name: Run pre-commit on all files + run: pre-commit run --all-files diff --git a/.github/workflows/rust.yml b/.github/workflows/rust.yml deleted file mode 100644 index 166a94bf..00000000 --- a/.github/workflows/rust.yml +++ /dev/null @@ -1,42 +0,0 @@ -name: Rust CI - -on: - push: - branches: [main, master] - pull_request: - branches: [main, master] - workflow_dispatch: - -concurrency: - group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }} - cancel-in-progress: true - -env: - CARGO_TERM_COLOR: always - -jobs: - check: - name: check format and cargo check - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - - - name: Setup Rust - uses: dtolnay/rust-toolchain@nightly - with: - components: rustfmt - - - name: Cache Rust dependencies - uses: Swatinem/rust-cache@v2 - - - name: Cache APT packages - uses: awalsh128/cache-apt-pkgs-action@latest - with: - packages: libwebkit2gtk-4.1-dev libappindicator3-dev librsvg2-dev patchelf - version: 1.0 - - - name: Check formatting - run: cargo fmt --check --all - - - name: Check - run: cargo check --workspace diff --git a/.gitignore b/.gitignore index 66671dad..4ad90bd7 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,6 @@ # dependency directories node_modules/ +.venv/ # Build output dist/ @@ -58,7 +59,7 @@ TODO.md # claude local settings .claude/settings.local.json -# Tauri gen files +# Tauri gen files src-tauri/gen/ apps/desktop/src-tauri/gen/ **/src-tauri/gen/ diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml new file mode 100644 index 00000000..512b1178 --- /dev/null +++ b/.pre-commit-config.yaml @@ -0,0 +1,52 @@ +# Pre-commit hooks configuration for Rust + TypeScript/React project +# See https://pre-commit.com for more information + +repos: + # Rust hooks + - repo: https://github.com/pre-commit/pre-commit-hooks + rev: v4.6.0 + hooks: + - id: trailing-whitespace + - id: end-of-file-fixer + - id: check-yaml + - id: check-toml + - id: check-json + exclude: 'tsconfig.*\.json$' + - id: check-merge-conflict + + # Rust formatting only (clippy/check too heavy for CI) + - repo: local + hooks: + - id: rust-fmt-workspace + name: Rust format (workspace) + entry: cargo fmt + args: ['--all', '--check'] + language: system + files: '\.rs$' + pass_filenames: false + + # TypeScript/JavaScript with Biome and type checking + - repo: local + hooks: + - id: typescript-check + name: TypeScript check + entry: bun + args: ['typecheck'] + language: system + files: \.(ts|tsx)$ + pass_filenames: false + - id: biome-check + name: Biome check + entry: bun + args: ['check', '--write'] + language: system + files: \.(js|jsx|ts|tsx|json)$ + pass_filenames: false + + # Commit message validation + - repo: https://github.com/alessandrojcm/commitlint-pre-commit-hook + rev: v9.18.0 + hooks: + - id: commitlint + stages: [commit-msg] + additional_dependencies: ['@commitlint/cli'] diff --git a/.tool-versions b/.tool-versions index 20212cb6..99d721d3 100644 --- a/.tool-versions +++ b/.tool-versions @@ -1,2 +1,3 @@ bun 1.1.29 -nodejs 22.11.0 \ No newline at end of file +nodejs 22.11.0 +python 3.8 diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 7fc8df2b..471ade86 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -4,7 +4,7 @@ Welcome! We're happy to have you here. Thank you in advance for your contributio Note: Please check existing issues and pull requests before creating a new one. -# The Basics +## The Basics Athas welcomes contributions in the form of pull requests. @@ -14,20 +14,35 @@ For larger changes (e.g., new lint rules, new functionality, new configuration o If you have suggestions on how we might improve the contributing documentation, let us know! -# Prerequisites +## Prerequisites Athas is a Tauri project using Bun as package manager and Biome for linting/formatting. - [Rust](https://rustup.rs) with `cargo`, `rustfmt`, and `clippy` - [Tauri CLI](https://tauri.app) → `cargo install tauri-cli` - [Bun](https://bun.sh) as package manager -- [Node.js ≥ 18](https://nodejs.org) +- [Node.js ≥ 20.19.0](https://nodejs.org) +- [Python 3.8+](https://www.python.org/downloads/) for `pre-commit` hooks Check with: `node -v`, `cargo --version`, `tauri --version`, `bun --version` -# Development +## Development -After cloning the repository, run Athas locally from the repository root with: +After cloning the repository, install `pre-commit` hooks. It's really important to ensure code quality and consistency across contributions. + +```bash +pip install pre-commit +pre-commit install -f +pre-commit install --hook-type commit-msg +``` + +Test the hooks to ensure they are working correctly: + +```bash +pre-commit run --all-files +``` + +Then, install project dependencies, and run development server: ```bash bun install @@ -51,18 +66,20 @@ Available commands: - `bun run check` - Run both typecheck and biome check - `bun run fix` - Auto-fix formatting and linting issues -# Pull Request Guidelines +## Pull Request Guidelines -## Commit History +### Commit History To maintain a clean commit history: 1. **Squash commits** into logical, compact commits before opening your PR 2. **Rebase on origin/master** to avoid merge conflicts: + ```bash git fetch origin git rebase origin/master ``` + 3. Each commit should represent a single logical change 4. Use descriptive commit messages following conventional commits format diff --git a/LICENSE b/LICENSE index 7d7f531c..7c84e371 100644 --- a/LICENSE +++ b/LICENSE @@ -676,4 +676,4 @@ specific requirements. You should also get your employer (if you work as a programmer) or school, if any, to sign a "copyright disclaimer" for the program, if necessary. For more information on this, and how to apply and follow the GNU AGPL, see -. \ No newline at end of file +. diff --git a/bun.lock b/bun.lock index cca6eeb8..053a0c11 100644 --- a/bun.lock +++ b/bun.lock @@ -43,7 +43,6 @@ "@types/react-dom": "^19.1.6", "@vitejs/plugin-react": "^4.7.0", "concurrently": "^9.2.0", - "simple-git-hooks": "^2.13.0", "typescript": "^5.8.3", "typescript-language-server": "^4.3.4", "vite": "^7.0.5", @@ -681,8 +680,6 @@ "shell-quote": ["shell-quote@1.8.3", "", {}, "sha512-ObmnIF4hXNg1BqhnHmgbDETF8dLPCggZWBjkQfhZpbszZnYur5DUljTcCHii5LC3J5E0yeO/1LIMyH+UvHQgyw=="], - "simple-git-hooks": ["simple-git-hooks@2.13.0", "", { "bin": { "simple-git-hooks": "cli.js" } }, "sha512-N+goiLxlkHJlyaYEglFypzVNMaNplPAk5syu0+OPp/Bk6dwVoXF6FfOw2vO0Dp+JHsBaI+w6cm8TnFl2Hw6tDA=="], - "simple-swizzle": ["simple-swizzle@0.2.2", "", { "dependencies": { "is-arrayish": "^0.3.1" } }, "sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg=="], "sisteransi": ["sisteransi@1.0.5", "", {}, "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg=="], diff --git a/docs/develop/linux.md b/docs/develop/linux.md index 8e7f29d4..94b6fc96 100644 --- a/docs/develop/linux.md +++ b/docs/develop/linux.md @@ -23,4 +23,4 @@ bun install # Start development server bun run tauri dev -``` \ No newline at end of file +``` diff --git a/docs/develop/macos.md b/docs/develop/macos.md index 3ff02e60..34320a9e 100644 --- a/docs/develop/macos.md +++ b/docs/develop/macos.md @@ -13,4 +13,4 @@ bun install # Start development server bun run tauri dev -``` \ No newline at end of file +``` diff --git a/package.json b/package.json index fd8e4eae..f13be1c9 100644 --- a/package.json +++ b/package.json @@ -14,8 +14,6 @@ "check:all": "bun typecheck && bun lint", "check:fix": "biome check --write --unsafe", "clean": "concurrently --names \"node,rust\" --prefix-colors \"cyan,yellow\" \"rimraf dist build node_modules bun.lockb && bun install\" \"cargo clean && cargo build\"", - "prepare": "simple-git-hooks", - "commitlint": "commitlint --edit", "setup": "chmod +x scripts/linux/setup.sh && ./scripts/linux/setup.sh", "setup:linux": "chmod +x scripts/linux/setup.sh && ./scripts/linux/setup.sh", "setup-win": "./scripts/windows/setup.ps1", @@ -61,15 +59,10 @@ "@types/react-dom": "^19.1.6", "@vitejs/plugin-react": "^4.7.0", "concurrently": "^9.2.0", - "simple-git-hooks": "^2.13.0", "typescript": "^5.8.3", "typescript-language-server": "^4.3.4", "vite": "^7.0.5" }, - "simple-git-hooks": { - "pre-commit": "bun check:all", - "commit-msg": "bun commitlint --edit $1" - }, "lint-staged": { "*.{ts,tsx,js,jsx,json}": [ "biome check --no-errors-on-unmatched" diff --git a/src-tauri/src/commands/terminal.rs b/src-tauri/src/commands/terminal.rs index 8b137891..500aeade 100644 --- a/src-tauri/src/commands/terminal.rs +++ b/src-tauri/src/commands/terminal.rs @@ -1 +1 @@ - +// Terminal-related commands diff --git a/src-tauri/src/commands/tokens.rs b/src-tauri/src/commands/tokens.rs index 2a14ca4c..3f36c583 100644 --- a/src-tauri/src/commands/tokens.rs +++ b/src-tauri/src/commands/tokens.rs @@ -476,15 +476,15 @@ std = []"#; fn test_tokenize_java() { let code = r#"public class HelloWorld { private String message; - + public HelloWorld(String message) { this.message = message; } - + public void greet() { System.out.println("Hello, " + message + "!"); } - + public static void main(String[] args) { HelloWorld app = new HelloWorld("World"); app.greet(); @@ -495,10 +495,19 @@ std = []"#; println!("Found {} Java tokens", tokens.len()); let token_types: Vec<&str> = tokens.iter().map(|t| t.token_type.as_str()).collect(); - assert!(token_types.contains(&"keyword"), "Should have keyword tokens"); + assert!( + token_types.contains(&"keyword"), + "Should have keyword tokens" + ); assert!(token_types.contains(&"string"), "Should have string tokens"); - assert!(token_types.contains(&"identifier"), "Should have identifier tokens"); - assert!(token_types.contains(&"function"), "Should have function tokens"); + assert!( + token_types.contains(&"identifier"), + "Should have identifier tokens" + ); + assert!( + token_types.contains(&"function"), + "Should have function tokens" + ); } #[test] @@ -515,9 +524,15 @@ int main() { println!("Found {} C tokens", tokens.len()); let token_types: Vec<&str> = tokens.iter().map(|t| t.token_type.as_str()).collect(); - assert!(token_types.contains(&"keyword"), "Should have keyword tokens"); + assert!( + token_types.contains(&"keyword"), + "Should have keyword tokens" + ); assert!(token_types.contains(&"string"), "Should have string tokens"); - assert!(token_types.contains(&"identifier"), "Should have identifier tokens"); + assert!( + token_types.contains(&"identifier"), + "Should have identifier tokens" + ); assert!(token_types.contains(&"number"), "Should have number tokens"); } @@ -529,10 +544,10 @@ int main() { class Greeter { private: std::string name; - + public: Greeter(const std::string& n) : name(n) {} - + void greet() const { std::cout << "Hello, " << name << "!" << std::endl; } @@ -549,8 +564,14 @@ int main() { let token_types: Vec<&str> = tokens.iter().map(|t| t.token_type.as_str()).collect(); assert!(!tokens.is_empty(), "Should have tokens"); - assert!(token_types.contains(&"keyword"), "Should have keyword tokens"); - assert!(token_types.contains(&"function") || token_types.contains(&"identifier"), "Should have function or identifier tokens"); + assert!( + token_types.contains(&"keyword"), + "Should have keyword tokens" + ); + assert!( + token_types.contains(&"function") || token_types.contains(&"identifier"), + "Should have function or identifier tokens" + ); } #[test] @@ -559,12 +580,12 @@ int main() { class User { private $name; private $email; - + public function __construct($name, $email) { $this->name = $name; $this->email = $email; } - + public function greet() { echo "Hello, {$this->name}! Your email is {$this->email}"; } @@ -578,10 +599,19 @@ $user->greet(); println!("Found {} PHP tokens", tokens.len()); let token_types: Vec<&str> = tokens.iter().map(|t| t.token_type.as_str()).collect(); - assert!(token_types.contains(&"keyword"), "Should have keyword tokens"); + assert!( + token_types.contains(&"keyword"), + "Should have keyword tokens" + ); assert!(token_types.contains(&"string"), "Should have string tokens"); - assert!(token_types.contains(&"identifier"), "Should have identifier tokens"); - assert!(token_types.contains(&"function"), "Should have function tokens"); + assert!( + token_types.contains(&"identifier"), + "Should have identifier tokens" + ); + assert!( + token_types.contains(&"function"), + "Should have function tokens" + ); } #[test] diff --git a/src/components/ai-chat/tool-call-display.css b/src/components/ai-chat/tool-call-display.css index 50386063..6d149aeb 100644 --- a/src/components/ai-chat/tool-call-display.css +++ b/src/components/ai-chat/tool-call-display.css @@ -83,4 +83,4 @@ opacity: 1; transform: translateY(0); } -} \ No newline at end of file +} diff --git a/src/components/editor/editor-stylesheet.tsx b/src/components/editor/editor-stylesheet.tsx index d00c4561..02c8ab62 100644 --- a/src/components/editor/editor-stylesheet.tsx +++ b/src/components/editor/editor-stylesheet.tsx @@ -45,12 +45,12 @@ export function EditorStylesheet() { font-family: 'Noto Sans Mono'; font-display: swap; } - + /* Force font override class */ .code-editor-font-override { font-family: var(--editor-font-family) !important; } - + .code-editor-content { font-family: inherit; background: transparent; @@ -98,19 +98,19 @@ export function EditorStylesheet() { .line-numbers-container::-webkit-scrollbar { display: none; } - + /* Ensure line numbers use tabular figures for consistent width */ .line-numbers-container { font-variant-numeric: tabular-nums; -webkit-font-feature-settings: "tnum"; font-feature-settings: "tnum"; } - + /* Force line numbers font override */ .line-numbers-container.font-override { font-family: var(--editor-font-family) !important; } - + /* Disable selection on breadcrumbs */ .breadcrumb, .breadcrumb-container, @@ -120,24 +120,24 @@ export function EditorStylesheet() { -webkit-user-select: none; -moz-user-select: none; } - + /* Search highlighting */ .search-highlight { background-color: rgba(255, 255, 0, 0.3); } - + .search-highlight-current { background-color: rgba(255, 165, 0, 0.5); outline: 1px solid rgba(255, 165, 0, 0.8); } - + /* Remove focus rings on all inputs in find bar */ input[type="text"]:focus { outline: none !important; box-shadow: none !important; border: none !important; } - + /* Specifically target find bar input */ .find-bar input:focus { outline: none !important; @@ -145,16 +145,16 @@ export function EditorStylesheet() { border: none !important; ring: none !important; } - + /* Remove border radius from find bar */ .find-bar { border-radius: 0 !important; } - + .find-bar input { border-radius: 0 !important; } - + .find-bar button { border-radius: 0 !important; } diff --git a/src/components/resizable-sidebar/resizable-sidebar.css b/src/components/resizable-sidebar/resizable-sidebar.css index b75a28e6..300dc590 100644 --- a/src/components/resizable-sidebar/resizable-sidebar.css +++ b/src/components/resizable-sidebar/resizable-sidebar.css @@ -25,4 +25,4 @@ .resize-handle:hover .resize-handle__indicator { @apply opacity-100; -} \ No newline at end of file +} diff --git a/src/extensions/themes/builtin/README.md b/src/extensions/themes/builtin/README.md index 4871ee95..38d8e2ca 100644 --- a/src/extensions/themes/builtin/README.md +++ b/src/extensions/themes/builtin/README.md @@ -83,7 +83,7 @@ See `example-custom-theme.toml` for a complete example of how to create custom t The following themes are included with Athas: - **GitHub**: Light, Dark, and Dark Dimmed variants -- **VS Code**: Light and Dark variants +- **VS Code**: Light and Dark variants - **One Dark**: Original and Pro variants - **Tokyo Night**: Original, Storm, and Moon variants - **Dracula**: Original and Soft variants @@ -118,7 +118,7 @@ name = "Theme One" # ... theme configuration [[themes]] -id = "theme-two" +id = "theme-two" name = "Theme Two" # ... theme configuration -``` \ No newline at end of file +``` diff --git a/src/extensions/themes/builtin/catppuccin.toml b/src/extensions/themes/builtin/catppuccin.toml index c7c60f67..081c8199 100644 --- a/src/extensions/themes/builtin/catppuccin.toml +++ b/src/extensions/themes/builtin/catppuccin.toml @@ -104,4 +104,4 @@ is_dark = true "--color-syntax-null" = "#f5a97f" "--color-syntax-regex" = "#a6da95" "--color-syntax-jsx" = "#f5bde6" -"--color-syntax-jsx-attribute" = "#c6a0f6" \ No newline at end of file +"--color-syntax-jsx-attribute" = "#c6a0f6" diff --git a/src/extensions/themes/builtin/contrast-themes.toml b/src/extensions/themes/builtin/contrast-themes.toml index f3d5e323..2fe0d388 100644 --- a/src/extensions/themes/builtin/contrast-themes.toml +++ b/src/extensions/themes/builtin/contrast-themes.toml @@ -104,4 +104,4 @@ is_dark = true "--color-syntax-null" = "#aaaaaa" "--color-syntax-regex" = "#cccccc" "--color-syntax-jsx" = "#ffffff" -"--color-syntax-jsx-attribute" = "#ffffff" \ No newline at end of file +"--color-syntax-jsx-attribute" = "#ffffff" diff --git a/src/extensions/themes/builtin/dracula.toml b/src/extensions/themes/builtin/dracula.toml index 30bc6759..3622f003 100644 --- a/src/extensions/themes/builtin/dracula.toml +++ b/src/extensions/themes/builtin/dracula.toml @@ -68,4 +68,4 @@ is_dark = true "--color-syntax-null" = "#bd93f9" "--color-syntax-regex" = "#f1fa8c" "--color-syntax-jsx" = "#ff79c6" -"--color-syntax-jsx-attribute" = "#50fa7b" \ No newline at end of file +"--color-syntax-jsx-attribute" = "#50fa7b" diff --git a/src/extensions/themes/builtin/example-custom-theme.toml b/src/extensions/themes/builtin/example-custom-theme.toml index 5df282dd..0696ceaa 100644 --- a/src/extensions/themes/builtin/example-custom-theme.toml +++ b/src/extensions/themes/builtin/example-custom-theme.toml @@ -71,4 +71,4 @@ is_dark = true "--color-syntax-null" = "#06b6d4" "--color-syntax-regex" = "#22d3ee" "--color-syntax-jsx" = "#0ea5e9" -"--color-syntax-jsx-attribute" = "#06b6d4" \ No newline at end of file +"--color-syntax-jsx-attribute" = "#06b6d4" diff --git a/src/extensions/themes/builtin/github.toml b/src/extensions/themes/builtin/github.toml index 5ddc264f..51a10eb0 100644 --- a/src/extensions/themes/builtin/github.toml +++ b/src/extensions/themes/builtin/github.toml @@ -104,4 +104,4 @@ is_dark = true "--color-syntax-null" = "#6cb6ff" "--color-syntax-regex" = "#96d0ff" "--color-syntax-jsx" = "#8ddb8c" -"--color-syntax-jsx-attribute" = "#dcbdfb" \ No newline at end of file +"--color-syntax-jsx-attribute" = "#dcbdfb" diff --git a/src/extensions/themes/builtin/nord.toml b/src/extensions/themes/builtin/nord.toml index b9742da9..c6e772fd 100644 --- a/src/extensions/themes/builtin/nord.toml +++ b/src/extensions/themes/builtin/nord.toml @@ -68,4 +68,4 @@ is_dark = true "--color-syntax-null" = "#d08770" "--color-syntax-regex" = "#a3be8c" "--color-syntax-jsx" = "#bf616a" -"--color-syntax-jsx-attribute" = "#5e81ac" \ No newline at end of file +"--color-syntax-jsx-attribute" = "#5e81ac" diff --git a/src/extensions/themes/builtin/one-dark.toml b/src/extensions/themes/builtin/one-dark.toml index 41fae45c..27a77950 100644 --- a/src/extensions/themes/builtin/one-dark.toml +++ b/src/extensions/themes/builtin/one-dark.toml @@ -68,4 +68,4 @@ is_dark = true "--color-syntax-null" = "#d19a66" "--color-syntax-regex" = "#98c379" "--color-syntax-jsx" = "#e06c75" -"--color-syntax-jsx-attribute" = "#d19a66" \ No newline at end of file +"--color-syntax-jsx-attribute" = "#d19a66" diff --git a/src/extensions/themes/builtin/solarized.toml b/src/extensions/themes/builtin/solarized.toml index 61b49e11..81a5d844 100644 --- a/src/extensions/themes/builtin/solarized.toml +++ b/src/extensions/themes/builtin/solarized.toml @@ -68,4 +68,4 @@ is_dark = true "--color-syntax-null" = "#d33682" "--color-syntax-regex" = "#2aa198" "--color-syntax-jsx" = "#859900" -"--color-syntax-jsx-attribute" = "#268bd2" \ No newline at end of file +"--color-syntax-jsx-attribute" = "#268bd2" diff --git a/src/extensions/themes/builtin/tokyo-night.toml b/src/extensions/themes/builtin/tokyo-night.toml index 037a3529..9dcff20d 100644 --- a/src/extensions/themes/builtin/tokyo-night.toml +++ b/src/extensions/themes/builtin/tokyo-night.toml @@ -104,4 +104,4 @@ is_dark = true "--color-syntax-null" = "#ff966c" "--color-syntax-regex" = "#c3e88d" "--color-syntax-jsx" = "#ff757f" -"--color-syntax-jsx-attribute" = "#fca7ea" \ No newline at end of file +"--color-syntax-jsx-attribute" = "#fca7ea" diff --git a/src/extensions/themes/builtin/vscode.toml b/src/extensions/themes/builtin/vscode.toml index 02eaa50f..d4367dfb 100644 --- a/src/extensions/themes/builtin/vscode.toml +++ b/src/extensions/themes/builtin/vscode.toml @@ -68,4 +68,4 @@ is_dark = true "--color-syntax-null" = "#569cd6" "--color-syntax-regex" = "#d16969" "--color-syntax-jsx" = "#569cd6" -"--color-syntax-jsx-attribute" = "#92c5f8" \ No newline at end of file +"--color-syntax-jsx-attribute" = "#92c5f8" diff --git a/src/styles.css b/src/styles.css index ac8ac0a6..bc4c4814 100644 --- a/src/styles.css +++ b/src/styles.css @@ -37,7 +37,7 @@ /* Accent color */ --tw-accent: #3b82f6; - + /* Cursor color */ --tw-cursor: #1a1a1a; @@ -112,7 +112,7 @@ /* Accent color - Dark */ --tw-accent: #60a5fa; - + /* Cursor color - Dark */ --tw-cursor: #e5e5e5; @@ -189,7 +189,7 @@ /* Accent color */ --color-accent: var(--tw-accent); - + /* Cursor color */ --color-cursor: var(--tw-cursor); @@ -309,7 +309,7 @@ button { /* Font defaults */ --app-font-family: "JetBrains Mono", monospace; --editor-font-family: "JetBrains Mono", monospace; - + /* Default light theme colors */ --tw-primary-bg: #ffffff; --tw-secondary-bg: #f8f8f8; @@ -337,7 +337,7 @@ button { /* Accent color */ --tw-accent: #3b82f6; - + /* Cursor color */ --tw-cursor: #1a1a1a; @@ -414,7 +414,7 @@ button { /* Accent color - Dark */ --tw-accent: #60a5fa; - + /* Cursor color - Dark */ --tw-cursor: #e5e5e5; diff --git a/src/styles/editor-line-based.css b/src/styles/editor-line-based.css index 8522cff6..8203ecc8 100644 --- a/src/styles/editor-line-based.css +++ b/src/styles/editor-line-based.css @@ -221,4 +221,4 @@ .token-class { color: #267f99; font-weight: bold; -} \ No newline at end of file +} diff --git a/src/styles/token-theme.css b/src/styles/token-theme.css index 4a724580..bde108e1 100644 --- a/src/styles/token-theme.css +++ b/src/styles/token-theme.css @@ -93,4 +93,4 @@ .token-jsx-text { color: var(--color-text); -} \ No newline at end of file +} diff --git a/src/styles/utils.css b/src/styles/utils.css index fe5b07d1..e8982f39 100644 --- a/src/styles/utils.css +++ b/src/styles/utils.css @@ -39,4 +39,3 @@ transform: translateY(0); } } -