Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
26 commits
Select commit Hold shift + click to select a range
58058f3
Add GitHub Action to summarize new issues (#4)
JosunLP Nov 13, 2025
0a4d695
Add GitHub Actions workflow for greetings (#5)
JosunLP Nov 13, 2025
ef79449
Add workflow to manage stale issues and PRs (#6)
JosunLP Nov 13, 2025
064b93b
Merge branch 'dev' of https://github.com/Kink-Development-Group/hyp-r…
JosunLP Nov 13, 2025
2ef43d6
Adding Installer (#9)
JosunLP Nov 13, 2025
9daf557
Update version to 1.0.0-rc2 and change edition to 2024 in Cargo.toml …
JosunLP Nov 13, 2025
4e82a63
Refactor code for improved readability and safety in various modules
JosunLP Nov 13, 2025
e3c9133
Update .github/labeler.yml
JosunLP Nov 13, 2025
1bf5ead
Update hypnoscript-cli/src/main.rs
JosunLP Nov 13, 2025
9a072f3
Update scripts/build_linux.ps1
JosunLP Nov 13, 2025
f71efcd
Aktualisiere Labeler-Konfiguration und verbessere Installationsskript…
JosunLP Nov 13, 2025
c14df8f
Füge #[allow(dead_code)] zu InstallMetadata hinzu, um Warnungen zu un…
JosunLP Nov 13, 2025
c6ada80
Verbessere den Code-Stil durch Vereinheitlichung von Importen und Ver…
JosunLP Nov 13, 2025
7cae200
Vereinheitliche die Verwendung von `trim_start_matches` und verbesser…
JosunLP Nov 13, 2025
da8e2bc
Vereinheitliche die Verwendung von `or_else` und verbessere die Lesba…
JosunLP Nov 13, 2025
3d10d8c
Vereinheitliche die Verwendung von `or_else` in der Funktion `handle_…
JosunLP Nov 13, 2025
40d778a
Füge Dokumentation zur Installer-Synchronisation und Update-Automatis…
JosunLP Nov 13, 2025
0fad02e
Entferne den Verweis auf "Rust Edition" aus der Dokumentation und den…
JosunLP Nov 13, 2025
55094b4
Füge neue Lizenzen zur Allowlist hinzu und behandle ungenutzte Einträ…
JosunLP Nov 13, 2025
56e6f74
Update deny.toml
JosunLP Nov 13, 2025
b00ecd4
Verbessere die Windows-Unterstützung im Installer und aktualisiere di…
JosunLP Nov 13, 2025
b264902
Merge branch 'dev' of https://github.com/Kink-Development-Group/hyp-r…
JosunLP Nov 13, 2025
ff4a99a
Aktualisiere Copyright-Jahr auf 2025 in mehreren Dateien und verbesse…
JosunLP Nov 14, 2025
4c26bf7
Verbessere die Lesbarkeit des Codes im Selbstaktualisierungsprozess d…
JosunLP Nov 14, 2025
38e2fac
Aktualisiere Versionsnummer auf 1.0.0-rc2 in mehreren Skripten und de…
JosunLP Nov 14, 2025
00f004e
Vereinheitliche den Code zur Ableitung des Installationspfads im Selb…
JosunLP Nov 14, 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
10 changes: 5 additions & 5 deletions .github/labeler.yml
Original file line number Diff line number Diff line change
Expand Up @@ -73,20 +73,20 @@

'type:feature':
- head-branch:
- '(?i)^(feature|feat)[-/].+'
- '^(?:[Ff][Ee][Aa][Tt][Uu][Rr][Ee]|[Ff][Ee][Aa][Tt])[-/].+'

'type:task':
- head-branch:
- '(?i)^(task|chore)[-/].+'
- '^(?:[Tt][Aa][Ss][Kk]|[Cc][Hh][Oo][Rr][Ee])[-/].+'

'type:release':
- head-branch:
- '(?i)^release[-/].+'
- '^[Rr][Ee][Ll][Ee][Aa][Ss][Ee][-/].+'

'type:bugfix':
- head-branch:
- '(?i)^(bugfix|fix)[-/].+'
- '^(?:[Bb][Uu][Gg][Ff][Ii][Xx]|[Ff][Ii][Xx])[-/].+'

'type:hotfix':
- head-branch:
- '(?i)^hotfix[-/].+'
- '^[Hh][Oo][Tt][Ff][Ii][Xx][-/].+'
114 changes: 98 additions & 16 deletions .github/workflows/rust-build-and-release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,8 @@ name: Rust Build & Release HypnoScript
on:
push:
tags:
- 'v*.*.*'
- 'rust-v*.*.*'
- "v*.*.*"
- "rust-v*.*.*"

jobs:
build-release:
Expand Down Expand Up @@ -66,11 +66,14 @@ jobs:
if [ "${{ runner.os }}" == "Windows" ]; then
cp target/${{ matrix.target }}/release/${{ matrix.artifact_name }} dist/${{ matrix.asset_name }}
cd dist
# Note: install.sh excluded from Windows archives as self-update is not supported on Windows
7z a ../${{ matrix.asset_name }}.zip ${{ matrix.asset_name }}
else
cp target/${{ matrix.target }}/release/${{ matrix.artifact_name }} dist/${{ matrix.asset_name }}
cp install.sh dist/install.sh
chmod +x dist/install.sh
cd dist
tar -czf ../${{ matrix.asset_name }}.tar.gz ${{ matrix.asset_name }}
tar -czf ../${{ matrix.asset_name }}.tar.gz ${{ matrix.asset_name }} install.sh
fi

- name: Compute SHA256
Expand All @@ -91,7 +94,7 @@ jobs:

build-deb-package:
runs-on: ubuntu-latest

steps:
- name: Checkout
uses: actions/checkout@v4
Expand All @@ -107,10 +110,10 @@ jobs:
- name: Create Cargo.toml metadata for debian package
run: |
cat >> hypnoscript-cli/Cargo.toml << 'EOF'

[package.metadata.deb]
maintainer = "HypnoScript Team"
copyright = "2024, HypnoScript Team"
copyright = "2025, HypnoScript Team"
license-file = ["LICENSE", "0"]
extended-description = """\
HypnoScript is a programming language designed for hypnotic induction and trance work.
Expand Down Expand Up @@ -141,6 +144,12 @@ jobs:
- name: Checkout
uses: actions/checkout@v4

- name: Stage installer script
run: |
mkdir -p artifacts/installer
cp install.sh artifacts/installer/install.sh
chmod +x artifacts/installer/install.sh

- name: Download all artifacts
uses: actions/download-artifact@v4
with:
Expand All @@ -156,17 +165,17 @@ jobs:
artifacts/**/*
body: |
# HypnoScript Rust Release

This release contains the Rust-based HypnoScript runtime and CLI tools.

## Features
- ✅ Complete HypnoScript language implementation
- ✅ Full compiler (Lexer, Parser, Type Checker, Interpreter, WASM Codegen)
- ✅ 110+ builtin functions
- ✅ Cross-platform support (Windows, Linux, macOS)
- ✅ Native performance (no GC overhead)
- ✅ Memory safe by design

## Downloads
Choose the appropriate binary for your platform:
- **Linux x64**: hypnoscript-linux-x64.tar.gz
Expand All @@ -175,34 +184,40 @@ jobs:
- **macOS x64**: hypnoscript-macos-x64.tar.gz
- **macOS ARM64**: hypnoscript-macos-arm64.tar.gz
- **Debian/Ubuntu**: hypnoscript_*.deb

## Installation


### Automatisches Setup (Linux/macOS)
```bash
curl -fsSL https://kink-development-group.github.io/hyp-runtime/install.sh | bash
```
Das Skript erkennt System & Architektur, verifiziert Checksums und aktualisiert vorhandene Installationen.

### Linux/macOS
```bash
# Extract the archive
tar -xzf hypnoscript-*.tar.gz

# Move to PATH
sudo mv hypnoscript-* /usr/local/bin/hypnoscript-cli

# Test installation
hypnoscript-cli version
```

### Windows
```powershell
# Extract the zip
# Add to PATH or run directly
.\hypnoscript-windows-x64.exe version
```

### Debian/Ubuntu
```bash
sudo dpkg -i hypnoscript_*.deb
hypnoscript-cli version
```

## Checksums
SHA256 checksums are provided for all binaries. Verify with:
```bash
Expand All @@ -211,6 +226,73 @@ jobs:
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

update-docs:
needs: create-release
runs-on: ubuntu-latest
permissions:
contents: read
pages: write
id-token: write
concurrency:
group: pages
cancel-in-progress: false
env:
RUST_DOC_SRC: target/doc
RUST_DOC_OUTPUT: rust-docs
VITEPRESS_DIST: hypnoscript-docs/docs/.vitepress/dist
RUST_API_SUBDIR: rust-api

steps:
- name: Checkout
uses: actions/checkout@v4
with:
fetch-depth: 0

- name: Setup Rust
uses: actions-rust-lang/setup-rust-toolchain@v1
with:
toolchain: stable

- name: Build Rust documentation
run: cargo doc --no-deps --workspace --release

- name: Copy rustdoc output
run: |
mkdir -p "${RUST_DOC_OUTPUT}"
cp -r "${RUST_DOC_SRC}/." "${RUST_DOC_OUTPUT}/"

- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: "20"
cache: "npm"
cache-dependency-path: hypnoscript-docs/package-lock.json

- name: Setup Pages
uses: actions/configure-pages@v4

- name: Install docs dependencies
working-directory: hypnoscript-docs
run: npm ci

- name: Build VitePress documentation
working-directory: hypnoscript-docs
run: npm run build

- name: Copy Rust docs into site
run: |
mkdir -p "${VITEPRESS_DIST}/${RUST_API_SUBDIR}"
cp -r "${RUST_DOC_OUTPUT}/." "${VITEPRESS_DIST}/${RUST_API_SUBDIR}/"

- name: Upload documentation artifact
uses: actions/upload-pages-artifact@v3
with:
path: ${{ env.VITEPRESS_DIST }}

- name: Deploy documentation
id: deployment
uses: actions/deploy-pages@v4

publish-crates:
needs: create-release
runs-on: ubuntu-latest
Expand Down
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -77,3 +77,4 @@ artifacts/
# Rust
target/
Cargo.lock
hypnoscript-docs/static/install.sh
4 changes: 2 additions & 2 deletions Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -9,8 +9,8 @@ members = [
]

[workspace.package]
version = "1.0.0"
edition = "2021"
version = "1.0.0-rc2"
edition = "2024"
authors = ["Kink Development Group"]
license = "MIT"
repository = "https://github.com/Kink-Development-Group/hyp-runtime"
Expand Down
20 changes: 19 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,21 @@ Zur Dokumentation steht weiterhin `HypnoScript.Dokumentation/` (Docusaurus) bere

- Rust 1.76+ (empfohlen) inkl. `cargo`

### Automatischer Installer

```bash
curl -fsSL https://kink-development-group.github.io/hyp-runtime/install.sh | bash
```

Das Skript erkennt Linux/macOS automatisch, lädt die passende Runtime aus dem aktuellen Release und aktualisiert bestehende Installationen. Wichtige Optionen: `--prefix`, `--version`, `--check`, `--include-prerelease`, `--force`, `--uninstall`.

#### Updates & Deinstallation

- **Updates checken:** `hypnoscript self-update --check` zeigt verfügbare Versionen an.
- **Aktualisieren:** `hypnoscript self-update` zieht die neueste Release-Version inklusive sudo-Handhabung.
- **Neuinstallation erzwingen:** `hypnoscript self-update --force` führt den Installer erneut aus.
- **Deinstallation:** `curl -fsSL https://kink-development-group.github.io/hyp-runtime/install.sh | bash -s -- --uninstall` entfernt Binärdatei und Metadaten.

### Projekt klonen & bauen

```bash
Expand All @@ -65,7 +80,7 @@ cargo run -p hypnoscript-cli -- run test_simple.hyp
```hypnoscript
Focus {
entrance {
observe "Welcome to HypnoScript Rust Edition!";
observe "Welcome to HypnoScript!";
}

induce x: number = 42;
Expand Down Expand Up @@ -103,6 +118,9 @@ hypnoscript-cli builtins

# Version anzeigen
hypnoscript-cli version

# Update auf neue Version prüfen
hypnoscript self-update --check
```

---
Expand Down
27 changes: 27 additions & 0 deletions deny.toml
Original file line number Diff line number Diff line change
Expand Up @@ -101,7 +101,12 @@ allow = [
"Unicode-DFS-2016",
"Unlicense",
"Zlib",
"CDLA-Permissive-2.0",
]
# Treat unused allowlist entries as informational to avoid noisy warnings when
# preparing for future dependencies.
Comment thread
JosunLP marked this conversation as resolved.
# Currently, this is set to "allow" because CDLA-Permissive-2.0 (see line 104) is included in anticipation of future dependencies that may use this license.
Comment thread
JosunLP marked this conversation as resolved.
unused-allowed-license = "allow"
# The confidence threshold for detecting a license from license text.
# The higher the value, the more closely the license text must be to the
# canonical license text of a valid SPDX license file.
Expand Down Expand Up @@ -210,6 +215,28 @@ deny = [
skip = [
#"ansi_term@0.11.0",
#{ crate = "ansi_term@0.11.0", reason = "you can specify a reason why it can't be updated/removed" },
{ crate = "windows-link@0.1.3", reason = "hostname currently constrains this version; harmless duplication" },
{ crate = "windows-link@0.2.1", reason = "newer windows-rs ecosystem requires this version" },
{ crate = "windows-sys@0.52.0", reason = "ring/rustls depends on this older windows-sys" },
{ crate = "windows-sys@0.60.2", reason = "windows-rs 0.62+ stack depends on this version" },
{ crate = "windows-targets@0.52.6", reason = "windows-sys 0.52.x requires this version" },
{ crate = "windows-targets@0.53.5", reason = "windows-sys 0.60.x requires this version" },
{ crate = "windows_aarch64_gnullvm@0.52.6", reason = "windows-targets 0.52.x platform crate" },
{ crate = "windows_aarch64_gnullvm@0.53.1", reason = "windows-targets 0.53.x platform crate" },
{ crate = "windows_aarch64_msvc@0.52.6", reason = "windows-targets 0.52.x platform crate" },
{ crate = "windows_aarch64_msvc@0.53.1", reason = "windows-targets 0.53.x platform crate" },
{ crate = "windows_i686_gnu@0.52.6", reason = "windows-targets 0.52.x platform crate" },
{ crate = "windows_i686_gnu@0.53.1", reason = "windows-targets 0.53.x platform crate" },
{ crate = "windows_i686_gnullvm@0.52.6", reason = "windows-targets 0.52.x platform crate" },
{ crate = "windows_i686_gnullvm@0.53.1", reason = "windows-targets 0.53.x platform crate" },
{ crate = "windows_i686_msvc@0.52.6", reason = "windows-targets 0.52.x platform crate" },
{ crate = "windows_i686_msvc@0.53.1", reason = "windows-targets 0.53.x platform crate" },
{ crate = "windows_x86_64_gnu@0.52.6", reason = "windows-targets 0.52.x platform crate" },
{ crate = "windows_x86_64_gnu@0.53.1", reason = "windows-targets 0.53.x platform crate" },
{ crate = "windows_x86_64_gnullvm@0.52.6", reason = "windows-targets 0.52.x platform crate" },
{ crate = "windows_x86_64_gnullvm@0.53.1", reason = "windows-targets 0.53.x platform crate" },
{ crate = "windows_x86_64_msvc@0.52.6", reason = "windows-targets 0.52.x platform crate" },
{ crate = "windows_x86_64_msvc@0.53.1", reason = "windows-targets 0.53.x platform crate" },
]
# Similarly to `skip` allows you to skip certain crates during duplicate
# detection. Unlike skip, it also includes the entire tree of transitive
Expand Down
5 changes: 5 additions & 0 deletions hypnoscript-cli/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -13,3 +13,8 @@ hypnoscript-compiler = { path = "../hypnoscript-compiler" }
hypnoscript-runtime = { path = "../hypnoscript-runtime" }
anyhow = { workspace = true }
clap = { version = "4.5", features = ["derive"] }
semver = "1.0"
serde = { workspace = true }
serde_json = { workspace = true }
ureq = { version = "2.9", features = ["json"] }
tempfile = "3.10"
Loading
Loading