Skip to content

Commit c8a0ec1

Browse files
committed
Bump 0.1.4
1 parent 4970906 commit c8a0ec1

File tree

6 files changed

+125
-46
lines changed

6 files changed

+125
-46
lines changed

CHANGELOG.md

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,21 @@ All notable changes to SuperQode will be documented in this file.
55
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
66
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
77

8+
## [0.1.4] - 2026-01-26
9+
10+
### Fixed
11+
12+
- Fixed slow binary startup time by switching to One-Dir bundle format.
13+
- Resolved Pydantic `OSError` in PyInstaller builds.
14+
- Fixed `install.sh` to work without `sudo` and handle path correctly.
15+
16+
### Changed
17+
18+
- Renamed QIR (Quality Investigation Report) to QR (Quality Report) for consistency.
19+
- Simplified GitHub Action by removing `deep` mode and adding `run-linter` option.
20+
- Added explicit security tester warnings in GitHub Action.
21+
- Updated release packaging script to bundle supporting scripts.
22+
823
## [0.1.3] - 2026-01-25
924

1025
### Changed

pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[project]
22
name = "superqode"
3-
version = "0.1.3"
3+
version = "0.1.4"
44
description = "SuperQode: Super Quality Engineering for Agentic Coding Teams"
55
readme = "README.md"
66
requires-python = ">=3.12"

scripts/install.sh

Lines changed: 53 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -2,73 +2,83 @@
22
set -e
33

44
# Configuration
5-
# Binaries are hosted on GitHub Releases
6-
VERSION="v0.1.3"
7-
BASE_URL="https://github.com/SuperagenticAI/superqode/releases/download/${VERSION}"
8-
BINARY_NAME="superqode"
9-
INSTALL_DIR="/usr/local/bin"
5+
VERSION="0.1.4"
6+
APP_NAME="superqode"
7+
INSTALL_LIB_DIR="$HOME/.local/lib/${APP_NAME}"
8+
INSTALL_BIN_DIR="$HOME/.local/bin"
109

1110
# Detect OS and Architecture
1211
OS="$(uname -s)"
1312
ARCH="$(uname -m)"
1413

1514
case "$OS" in
16-
Linux)
17-
PLATFORM="linux"
18-
;;
19-
Darwin)
20-
PLATFORM="macos"
21-
;;
22-
*)
23-
echo "Unsupported operating system: $OS"
24-
exit 1
25-
;;
15+
Linux) PLATFORM="linux" ;;
16+
Darwin) PLATFORM="macos" ;;
17+
*) echo "Unsupported OS: $OS"; exit 1 ;;
2618
esac
2719

2820
case "$ARCH" in
29-
x86_64)
30-
ARCH_TAG="x86_64"
31-
;;
32-
aarch64|arm64)
33-
ARCH_TAG="arm64"
34-
;;
35-
*)
36-
echo "Unsupported architecture: $ARCH"
37-
exit 1
38-
;;
21+
x86_64) ARCH_TAG="x86_64" ;;
22+
aarch64|arm64) ARCH_TAG="arm64" ;;
23+
*) echo "Unsupported architecture: $ARCH"; exit 1 ;;
3924
esac
4025

41-
ASSET_NAME="${BINARY_NAME}-${PLATFORM}-${ARCH_TAG}.tar.gz"
42-
DOWNLOAD_URL="${BASE_URL}/${ASSET_NAME}"
26+
ARCHIVE_NAME="${APP_NAME}-${VERSION}-${PLATFORM}-${ARCH_TAG}.tar.gz"
27+
DOWNLOAD_URL="https://github.com/SuperagenticAI/superqode/releases/download/v${VERSION}/${ARCHIVE_NAME}"
28+
29+
# --- Installation Logic ---
4330

4431
echo "Detected platform: ${PLATFORM}-${ARCH_TAG}"
45-
echo "Downloading from: ${DOWNLOAD_URL}"
4632

4733
# Create temp directory
4834
TMP_DIR="$(mktemp -d)"
4935
trap 'rm -rf -- "$TMP_DIR"' EXIT
5036

51-
# Download
52-
curl -fsSL "$DOWNLOAD_URL" -o "${TMP_DIR}/${ASSET_NAME}"
37+
# Check if archive exists locally (for testing) or download it
38+
if [ -f "release_builds/${ARCHIVE_NAME}" ]; then
39+
echo "Using local archive for installation..."
40+
cp "release_builds/${ARCHIVE_NAME}" "${TMP_DIR}/"
41+
else
42+
echo "Downloading from: ${DOWNLOAD_URL}"
43+
curl -fsSL "$DOWNLOAD_URL" -o "${TMP_DIR}/${ARCHIVE_NAME}"
44+
fi
5345

5446
# Extract
5547
echo "Extracting..."
56-
tar -xzf "${TMP_DIR}/${ASSET_NAME}" -C "$TMP_DIR"
48+
tar -xzf "${TMP_DIR}/${ARCHIVE_NAME}" -C "$TMP_DIR"
5749

5850
# Install
59-
echo "Installing to ${INSTALL_DIR}..."
60-
if [ -w "$INSTALL_DIR" ]; then
61-
mv "${TMP_DIR}/${BINARY_NAME}" "${INSTALL_DIR}/${BINARY_NAME}"
62-
else
63-
echo "Sudo required to install to ${INSTALL_DIR}"
64-
sudo mv "${TMP_DIR}/${BINARY_NAME}" "${INSTALL_DIR}/${BINARY_NAME}"
51+
echo "Installing to ${INSTALL_LIB_DIR}..."
52+
rm -rf "$INSTALL_LIB_DIR"
53+
mkdir -p "$(dirname "$INSTALL_LIB_DIR")"
54+
mv "${TMP_DIR}/${APP_NAME}" "$INSTALL_LIB_DIR"
55+
56+
# Create symlink
57+
echo "Creating symlink in ${INSTALL_BIN_DIR}..."
58+
mkdir -p "$INSTALL_BIN_DIR"
59+
ln -sf "${INSTALL_LIB_DIR}/${APP_NAME}" "${INSTALL_BIN_DIR}/${APP_NAME}"
60+
61+
# Verify PATH
62+
if [[ ":$PATH:" != ".*:${INSTALL_BIN_DIR}:"* ]]; then
63+
echo ""
64+
echo "⚠️ Warning: ${INSTALL_BIN_DIR} is not in your PATH."
65+
echo "Add it to your shell config (e.g., ~/.bashrc or ~/.zshrc):"
66+
echo " export PATH=\"
67+
.local/bin:$PATH\""
68+
echo ""
6569
fi
6670

67-
# Verify
68-
if command -v "$BINARY_NAME" >/dev/null; then
69-
echo "✅ Successfully installed $("$BINARY_NAME" --version)"
70-
echo "Run '$BINARY_NAME' to get started!"
71+
# Verify installation
72+
if command -v "$APP_NAME" >/dev/null; then
73+
echo "✅ Successfully installed $($APP_NAME --version)"
74+
echo "Run '$APP_NAME' to get started!"
7175
else
72-
echo "❌ Installation failed."
73-
exit 1
76+
# Check if we can run it via absolute path
77+
if [ -x "${INSTALL_BIN_DIR}/${APP_NAME}" ]; then
78+
echo "✅ Successfully installed to ${INSTALL_BIN_DIR}/${APP_NAME}"
79+
echo "Note: You need to add ${INSTALL_BIN_DIR} to your PATH."
80+
else
81+
echo "❌ Installation failed."
82+
exit 1
83+
fi
7484
fi

scripts/package_release.sh

Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
#!/usr/bin/env bash
2+
set -euo pipefail
3+
4+
# 1. Get the project root directory
5+
ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
6+
cd "$ROOT_DIR"
7+
8+
# 2. Determine platform and arch
9+
OS="$(uname -s)"
10+
ARCH="$(uname -m)"
11+
12+
case "$OS" in
13+
Linux) PLATFORM="linux" ;;
14+
Darwin) PLATFORM="macos" ;;
15+
*) echo "Unsupported OS: $OS"; exit 1 ;;
16+
esac
17+
18+
case "$ARCH" in
19+
x86_64) ARCH_TAG="x86_64" ;;
20+
aarch64|arm64) ARCH_TAG="arm64" ;;
21+
*) echo "Unsupported architecture: $ARCH"; exit 1 ;;
22+
esac
23+
24+
# 3. Build the binary (One-Dir mode via updated spec)
25+
echo "Building binary in One-Dir mode..."
26+
scripts/build_binary.sh
27+
28+
# 4. Package the result
29+
BINARY_NAME="superqode"
30+
VERSION=$(python -c "import toml; print(toml.load('pyproject.toml')['project']['version'])")
31+
ARCHIVE_NAME="${BINARY_NAME}-${VERSION}-${PLATFORM}-${ARCH_TAG}.tar.gz"
32+
RELEASE_DIR="release_builds"
33+
34+
echo "Packaging release: ${ARCHIVE_NAME}..."
35+
mkdir -p "$RELEASE_DIR"
36+
37+
# Create a clean staging directory
38+
STAGING_DIR=$(mktemp -d)
39+
trap 'rm -rf -- "$STAGING_DIR"' EXIT
40+
41+
# Copy the application directory (from dist/superqode)
42+
cp -r "dist/${BINARY_NAME}" "$STAGING_DIR/"
43+
44+
# Copy the scripts directory
45+
cp -r "scripts" "$STAGING_DIR/${BINARY_NAME}/"
46+
47+
# Create the final archive
48+
(
49+
cd "$STAGING_DIR"
50+
tar -czf "$ROOT_DIR/$RELEASE_DIR/$ARCHIVE_NAME" "${BINARY_NAME}"
51+
)
52+
53+
echo "✅ Successfully packaged release build:"
54+
echo " $RELEASE_DIR/$ARCHIVE_NAME"

src/superqode/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,4 +30,4 @@
3030
"sidebar",
3131
]
3232

33-
__version__ = "0.1.3"
33+
__version__ = "0.1.4"

uv.lock

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)