Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
49 commits
Select commit Hold shift + click to select a range
15100bd
isl plugin for vscode v1
Nov 21, 2025
d09f2d5
improved colors
Nov 21, 2025
31e7e98
feat(plugin): Add VSCode extension package with AI assistant support
Nov 22, 2025
367d94d
feat(plugin): Add GitHub workflows for CI/CD and marketplace publishing
Nov 22, 2025
090ddc1
playground
Nov 23, 2025
8d86297
updated playground
Nov 23, 2025
35d1f44
Fix: Set executable permissions on gradlew for Railway deployment
Nov 23, 2025
1049017
changed to build and deploy together
Nov 23, 2025
c73e452
updated java version
Nov 23, 2025
49e354d
updated config
Nov 23, 2025
16134cb
railway config change
Nov 23, 2025
5c8ef87
set railway java version to 21
Nov 23, 2025
529379f
Use Dockerfile with explicit Java 21 for Railway deployment
Nov 24, 2025
bc123b2
railway config changes
Nov 24, 2025
36aae51
back go nixpack
Nov 24, 2025
be2606f
node version change
Nov 24, 2025
436958a
jdk change
Nov 24, 2025
c1e5b18
changed openjdk
Nov 24, 2025
aa098d5
more nix
Nov 24, 2025
8569fe7
docker
Nov 24, 2025
1fe9005
moved docker
Nov 24, 2025
00f5a52
docs with run button
Nov 24, 2025
a8476d2
Merge commit '5855878559158db34089034c99a5fcbd3fa7008d'
Nov 24, 2025
6041345
fixing playground
Nov 24, 2025
6241a5b
build
Nov 24, 2025
66239de
changed to js
Nov 24, 2025
7f8a400
moved js to footer
Nov 24, 2025
b2e973a
lots of code polish
Nov 24, 2025
3dac93a
improved playground
Nov 24, 2025
c02adf2
polish
Nov 24, 2025
9ba7082
moved copy button
Nov 24, 2025
02b5460
error messages polish
Nov 24, 2025
fe1652a
cleanup
Nov 24, 2025
50da5fb
more polish
Nov 24, 2025
ed0a8ca
improved default wrapper
Nov 24, 2025
f0a9fc9
Merge branch 'main' into playground
corneliutusnea Nov 24, 2025
8f3b92b
fixed unit tests
Nov 24, 2025
3e85b21
Merge branch 'playground' of https://github.com/corneliutusnea/isl in…
Nov 24, 2025
fb26c63
css
Nov 24, 2025
1eddf94
css
Nov 24, 2025
62f3361
css
Nov 24, 2025
d1fa443
added link to playground
Nov 24, 2025
6ac1829
docs improvements
Nov 24, 2025
307daaa
Merge commit '6ac18294be210d234cc7a7092b592147c216058a' into playground
Nov 24, 2025
f3d8aae
Squashed commit of the following:
Nov 25, 2025
eeb4dcf
Merge commit '307daaa61947af7cbc3345816b9be39476c77ef0' into plugin
Nov 25, 2025
1e30363
improved code actions
Nov 25, 2025
9a654c3
lots of improvements for the plugin
Nov 26, 2025
4f2f6b6
added support for custom extensions
Nov 26, 2025
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
41 changes: 34 additions & 7 deletions .github/PUBLISHING.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,8 @@
This document explains how to publish ISL artifacts to Maven Central and GitHub Packages.

## Prerequisites
https://intuit-teams.slack.com/archives/C044PJN2NDR/p1749599979127989?thread_ts=1749145553.673049&cid=C044PJN2NDR


### 1. Maven Central (Sonatype OSSRH) Setup

Expand All @@ -16,24 +18,38 @@ To publish to Maven Central, you need:

```bash
# Generate key
gpg --gen-key
gpg --full-generate-key
# Choose RSA (option 1), key size 3072 or 4096, and set a strong passphrase

# List keys to get the key ID
gpg --list-secret-keys --keyid-format=long

# Export the ASCII-armored secret key (replace KEY_ID with your key ID)
gpg --export-secret-keys --armor KEY_ID
```

**For Windows (PowerShell):**
```powershell
# Generate key
gpg --full-generate-key

# List keys to get the key ID (last 8 characters of the fingerprint)
gpg --list-keys
# List keys
gpg --list-secret-keys --keyid-format=long

# Export the key (replace KEY_ID with your key ID)
gpg --export-secret-keys KEY_ID | base64
# Export and copy to clipboard
gpg --export-secret-keys --armor YOUR_KEY_ID | Set-Clipboard
```

**Note:** You can use the ASCII-armored key directly in the `SIGNING_KEY` secret (starts with `-----BEGIN PGP PRIVATE KEY BLOCK-----`). Base64 encoding is optional.

### 2. GitHub Repository Secrets

Configure the following secrets in your GitHub repository (Settings → Secrets and variables → Actions):

#### Maven Central Secrets:
- `OSSRH_USERNAME`: Your Sonatype JIRA username
- `OSSRH_PASSWORD`: Your Sonatype JIRA password
- `SIGNING_KEY_ID`: Your GPG key ID (last 8 characters)
- `SIGNING_KEY`: Your base64-encoded GPG private key
- `SIGNING_KEY`: Your ASCII-armored GPG private key (or base64-encoded)
- `SIGNING_PASSWORD`: Your GPG key passphrase

#### GitHub Packages:
Expand Down Expand Up @@ -167,6 +183,17 @@ signing.secretKeyRingFile=/path/to/.gnupg/secring.gpg

## Troubleshooting

### Issue: "Could not read PGP secret key" or "checksum mismatch"
**Solution:**
1. Use the ASCII-armored format directly (recommended):
```bash
gpg --export-secret-keys --armor YOUR_KEY_ID
```
Copy the entire output (including BEGIN/END markers) into the `SIGNING_KEY` secret
2. Ensure `SIGNING_PASSWORD` matches your GPG key passphrase
3. Verify the key exports correctly before adding to GitHub secrets
4. If using base64 encoding, ensure no extra whitespace or line breaks are introduced

### Issue: "Could not find signing key"
**Solution:** Ensure GPG key is properly exported and base64 encoded. Check `SIGNING_KEY` secret.

Expand Down
64 changes: 64 additions & 0 deletions .github/workflows/plugin-ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,64 @@
name: Plugin CI

on:
push:
branches: [ main, plugin ]
paths:
- 'plugin/**'
- '.github/workflows/plugin-ci.yml'
pull_request:
branches: [ main ]
paths:
- 'plugin/**'
- '.github/workflows/plugin-ci.yml'

jobs:
build:
runs-on: ${{ matrix.os }}

strategy:
matrix:
os: [ubuntu-latest, windows-latest, macos-latest]
node-version: [18.x, 20.x]

steps:
- name: Checkout code
uses: actions/checkout@v4

- name: Set up Node.js ${{ matrix.node-version }}
uses: actions/setup-node@v4
with:
node-version: ${{ matrix.node-version }}
cache: 'npm'
cache-dependency-path: plugin/package-lock.json

- name: Install dependencies
working-directory: plugin
run: npm ci

- name: Lint code
working-directory: plugin
run: npm run lint || echo "No lint script configured"
continue-on-error: true

- name: Compile TypeScript
working-directory: plugin
run: npm run compile

- name: Run tests
working-directory: plugin
run: npm test || echo "No tests configured"
continue-on-error: true

- name: Package extension
working-directory: plugin
run: npx vsce package

- name: Upload build artifact
if: matrix.os == 'ubuntu-latest' && matrix.node-version == '18.x'
uses: actions/upload-artifact@v4
with:
name: isl-language-support-build
path: plugin/*.vsix
retention-days: 7

77 changes: 77 additions & 0 deletions .github/workflows/publish-plugin.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,77 @@
name: Publish VSCode Extension

on:
push:
tags:
- 'plugin-v*.*.*'
workflow_dispatch:
inputs:
version:
description: 'Version to publish (e.g., 1.0.0)'
required: true

jobs:
publish:
runs-on: ubuntu-latest

steps:
- name: Checkout code
uses: actions/checkout@v4

- name: Set up Node.js
uses: actions/setup-node@v4
with:
node-version: '18'
cache: 'npm'
cache-dependency-path: plugin/package-lock.json

- name: Install dependencies
working-directory: plugin
run: npm ci

- name: Compile TypeScript
working-directory: plugin
run: npm run compile

- name: Run tests (if available)
working-directory: plugin
run: npm test || echo "No tests configured"
continue-on-error: true

- name: Package extension
working-directory: plugin
run: npx vsce package

- name: Publish to VSCode Marketplace
if: startsWith(github.ref, 'refs/tags/plugin-v')
working-directory: plugin
env:
VSCE_PAT: ${{ secrets.VSCE_TOKEN }}
run: npx vsce publish -p $VSCE_PAT

- name: Publish to Open VSX Registry
if: startsWith(github.ref, 'refs/tags/plugin-v')
working-directory: plugin
env:
OVSX_PAT: ${{ secrets.OVSX_TOKEN }}
run: npx ovsx publish -p $OVSX_PAT
continue-on-error: true

- name: Upload VSIX artifact
uses: actions/upload-artifact@v4
with:
name: isl-language-support-vsix
path: plugin/*.vsix
retention-days: 90

- name: Create GitHub Release
if: startsWith(github.ref, 'refs/tags/plugin-v')
uses: softprops/action-gh-release@v1
with:
files: plugin/*.vsix
generate_release_notes: true
draft: false
prerelease: false
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

49 changes: 38 additions & 11 deletions .github/workflows/publish.yml
Original file line number Diff line number Diff line change
Expand Up @@ -40,23 +40,50 @@ jobs:
sed -i 's/version = ".*"/version = "${{ github.event.inputs.version }}"/' build.gradle.kts

- name: Build artifacts
run: ./gradlew build --no-daemon --stacktrace
run: ./gradlew build --no-daemon --stacktrace -x test

- name: Run tests
run: ./gradlew test --no-daemon --stacktrace
# temp ignore to speed up the build
# - name: Run tests
# run: ./gradlew test --no-daemon --stacktrace

- name: Setup PGP key for signing
run: |
# Write the PGP key to environment variable
# The key can be either base64-encoded or ASCII-armored
if echo "${{ secrets.SIGNING_KEY }}" | grep -q "BEGIN PGP"; then
# Key is already ASCII-armored
echo "SIGNING_KEY<<EOF" >> $GITHUB_ENV
echo "${{ secrets.SIGNING_KEY }}" >> $GITHUB_ENV
echo "EOF" >> $GITHUB_ENV
else
# Key is base64-encoded, decode it
echo "${{ secrets.SIGNING_KEY }}" | tr -d '\n\r' | base64 --decode > signing_key.asc
echo "SIGNING_KEY<<EOF" >> $GITHUB_ENV
cat signing_key.asc >> $GITHUB_ENV
echo "EOF" >> $GITHUB_ENV
rm -f signing_key.asc
fi

- name: Verify OSSRH credentials
env:
OSSRH_USERNAME: ${{ secrets.OSSRH_USERNAME }}
run: |
if [ -z "$OSSRH_USERNAME" ]; then
echo "❌ OSSRH_USERNAME is not set!"
exit 1
fi
echo "✓ OSSRH credentials are configured"

- name: Publish to Maven Central
env:
OSSRH_USERNAME: ${{ secrets.OSSRH_USERNAME }}
OSSRH_PASSWORD: ${{ secrets.OSSRH_PASSWORD }}
SIGNING_KEY_ID: ${{ secrets.SIGNING_KEY_ID }}
SIGNING_KEY: ${{ secrets.SIGNING_KEY }}
SIGNING_PASSWORD: ${{ secrets.SIGNING_PASSWORD }}
run: ./gradlew publish --no-daemon --stacktrace
run: ./gradlew publishMavenPublicationToOSSRHRepository --no-daemon --stacktrace --info

- name: Publish to GitHub Packages
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: ./gradlew publishAllPublicationsToGitHubPackagesRepository --no-daemon --stacktrace
continue-on-error: true
# - name: Publish to GitHub Packages
# env:
# GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
# run: ./gradlew publishAllPublicationsToGitHubPackagesRepository --no-daemon --stacktrace
# continue-on-error: true

13 changes: 11 additions & 2 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,8 @@ out/
dist/
node_modules/
.vscode-test/
*.vsix
# Allow plugin vsix packages
!plugin/*.vsix

# Gradle
.gradle/
Expand Down Expand Up @@ -110,4 +111,12 @@ jacoco.exec
*~

# Kotlin
.kotlin/
.kotlin/


# Outputs from tests
output-*.json

# Test files for extensions
.islextensions
test-extensions.isl
8 changes: 6 additions & 2 deletions build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -117,15 +117,19 @@ subprojects {
}

// Signing configuration for Maven Central
if (System.getenv("SIGNING_KEY_ID") != null || project.hasProperty("signing.keyId")) {
if (System.getenv("SIGNING_KEY") != null || project.hasProperty("signing.keyId")) {
apply(plugin = "signing")
extensions.configure<org.gradle.plugins.signing.SigningExtension> {
if (System.getenv("SIGNING_KEY") != null) {
val signingKey = System.getenv("SIGNING_KEY")
val signingPassword = System.getenv("SIGNING_PASSWORD")
val signingPassword = System.getenv("SIGNING_PASSWORD") ?: ""
// Use 2-parameter version which only needs the key and password (no keyId)
useInMemoryPgpKeys(signingKey, signingPassword)
}
sign(extensions.getByType<PublishingExtension>().publications["maven"])

// Configure signing to be required only when publishing
setRequired({ gradle.taskGraph.hasTask("publish") || gradle.taskGraph.hasTask("publishToMavenLocal") })
}
}
}
Expand Down
10 changes: 4 additions & 6 deletions docs/_data/navigation.yml
Original file line number Diff line number Diff line change
Expand Up @@ -84,12 +84,6 @@ docs:
url: /dev/hosting
- title: "Performance Benchmarks"
url: /dev/benchmark-report
- title: "Release Process"
url: /dev/release
- title: "Contributing"
url: /dev/contributing
- title: "Playground Integration"
url: /dev/playground-integration

- title: More
children:
Expand All @@ -99,6 +93,10 @@ docs:
url: /changelog
- title: "Roadmap"
url: /roadmap
- title: "Contributing"
url: /dev/contributing
- title: "Release Process"
url: /dev/release
- title: "Support"
url: /support

8 changes: 8 additions & 0 deletions docs/assets/css/main.scss
Original file line number Diff line number Diff line change
Expand Up @@ -95,6 +95,14 @@ pre[class*="language-"] {
}
}

/* Override Prism colors - change from #db4c69 to #9cdcfe */
// code.highlighter-rouge.languange-plaintext,
body {
:not(pre) > code[class*="language-"] {
color: #9cdcfe !important;
}
}

/* Override Prism colors - change from #db4c69 to #9cdcfe */
code.highlighter-rouge.languange-plaintext,
body :not(pre) > code[class*="language-"] {
Expand Down
Loading
Loading