Skip to content

wip: capture renames/helioslite (audit 2026-07-24..08-02) - #128

Closed
KooshaPari wants to merge 6 commits into
mainfrom
renames/helioslite
Closed

wip: capture renames/helioslite (audit 2026-07-24..08-02)#128
KooshaPari wants to merge 6 commits into
mainfrom
renames/helioslite

Conversation

@KooshaPari

@KooshaPari KooshaPari commented Aug 3, 2026

Copy link
Copy Markdown
Owner

User description

Automated audit capture of local dirty state.

  • Branch: renames/helioslite
  • Captured and pushed during the cross-drive audit sessions (2026-07-24 to 2026-08-02).
  • Working tree changes preserved; no destructive operations.

CodeAnt-AI Description

Introduce HeliosLite as the canonical CLI while preserving Forgecode compatibility

What Changed

  • Adds the helioslite command and installation paths for Linux, macOS, and Windows, while keeping forge and forge-dev working as legacy aliases
  • Routes updates and release checks through the HeliosLite website and repository, with fallback to the existing Forgecode sources
  • Supports new HELIOSLITE_* settings, including API keys, logging, repository selection, and installation location, while accepting legacy variables
  • Adds Homebrew, Chocolatey, winget, nightly build, and developer task support for the renamed CLI
  • Adds a HeliosLite landing page plus migration, provenance, licensing, update, and rename documentation

Impact

✅ New HeliosLite installation options
✅ Existing Forgecode commands continue to work
✅ Updates remain available during the repository rename

💡 Usage Guide

Checking Your Pull Request

Every time you make a pull request, our system automatically looks through it. We check for security issues, mistakes in how you're setting up your infrastructure, and common code problems. We do this to make sure your changes are solid and won't cause any trouble later.

Talking to CodeAnt AI

Got a question or need a hand with something in your pull request? You can easily get in touch with CodeAnt AI right here. Just type the following in a comment on your pull request, and replace "Your question here" with whatever you want to ask:

@codeant-ai ask: Your question here

This lets you have a chat with CodeAnt AI about your pull request, making it easier to understand and improve your code.

Example

@codeant-ai ask: Can you suggest a safer alternative to storing this secret?

Preserve Org Learnings with CodeAnt

You can record team preferences so CodeAnt AI applies them in future reviews. Reply directly to the specific CodeAnt AI suggestion (in the same thread) and replace "Your feedback here" with your input:

@codeant-ai: Your feedback here

This helps CodeAnt AI learn and adapt to your team's coding style and standards.

Example

@codeant-ai: Do not flag unused imports.

Retrigger review

Ask CodeAnt AI to review the PR again, by typing:

@codeant-ai: review

Check Your Repository Health

To analyze the health of your code repository, visit our dashboard at https://app.codeant.ai. This tool helps you identify potential issues and areas for improvement in your codebase, ensuring your repository maintains high standards of code health.

Copilot AI review requested due to automatic review settings August 3, 2026 01:10
@gemini-code-assist

Copy link
Copy Markdown

Caution

The consumer version of Gemini Code Assist on GitHub has been sunset. All code review activity has officially ceased.

@codeant-ai

codeant-ai Bot commented Aug 3, 2026

Copy link
Copy Markdown

🤖 CodeAnt AI — Review Status

Status Commit Started (UTC) Finished (UTC)
✅ Reviewed your PR 9b22dc4 Aug 03, 2026 · 01:10 01:14

@codeant-ai

codeant-ai Bot commented Aug 3, 2026

Copy link
Copy Markdown

Thanks for using CodeAnt! 🎉

We're free for open-source projects. if you're enjoying it, help us grow by sharing.

Share on X ·
Reddit ·
LinkedIn

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot was unable to review this pull request because the user who requested the review has reached their quota limit.

@codeant-ai codeant-ai Bot added the size:XXL label Aug 3, 2026
@mergify mergify Bot added rust labels Aug 3, 2026
@mergify

mergify Bot commented Aug 3, 2026

Copy link
Copy Markdown

Large PR Alert: This PR touches 128 files. Consider splitting into smaller PRs for easier review.

@mergify mergify Bot added the typescript label Aug 3, 2026
Comment on lines +34 to +36
console.log(`[deprecate-forge-dev] would run: cargo yank --version '*' on ${LEGACY}`);
console.log(`[deprecate-forge-dev] deprecation reason: "renamed to ${NEW_NAME}; legacy install path is keg_only"`);
console.log("[deprecate-forge-dev] dry-run complete; nothing was actually yanked.");

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggestion: The deprecation step never performs the migration it advertises: it only searches crates.io and logs hypothetical yank output, then exits successfully. If this script is used as the release/deprecation operation, forge-dev remains active, no redirect README is published, and legacy users receive none of the promised migration behavior. Implement the authenticated crates.io operations or fail explicitly instead of reporting a successful dry run. [incomplete implementation]

Severity Level: Major ⚠️
- ❌ crates.io `forge-dev` remains active and unchanged.
- ⚠️ Gate 4b packaging migration remains incomplete.
- ⚠️ Legacy users receive no crates.io migration notice.

Fix in Cursor Fix in VSCode Claude

(Use Cmd/Ctrl + Click for best experience)

Prompt for AI Agent 🤖
This is a comment left during a code review.

**Path:** packaging/crates/deprecate-forge-dev.mjs
**Line:** 34:36
**Comment:**
	*Incomplete Implementation: The deprecation step never performs the migration it advertises: it only searches crates.io and logs hypothetical yank output, then exits successfully. If this script is used as the release/deprecation operation, `forge-dev` remains active, no redirect README is published, and legacy users receive none of the promised migration behavior. Implement the authenticated crates.io operations or fail explicitly instead of reporting a successful dry run.

Validate the correctness of the flagged issue. If correct, How can I resolve this? If you propose a fix, implement it and please make it concise.
Once fix is implemented, also check other comments on the same PR, and ask user if the user wants to fix the rest of the comments as well. if said yes, then fetch all the comments validate the correctness and implement a minimal fix
👍 | 👎

Comment on lines +18 to +19
let primary = std::env::var("HELIOSLITE_UPDATE_URL")
.unwrap_or_else(|_| "https://helioslite.dev/cli".to_string());

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggestion: HELIOSLITE_UPDATE_URL is inserted directly into a command executed through a raw shell. A value containing shell metacharacters such as command separators or substitutions changes the command executed during automatic updates, allowing arbitrary commands to run whenever the update path is invoked. Validate the URL strictly and pass it as an argument rather than interpolating it into shell source. [security]

Severity Level: Major ⚠️
- ❌ Update execution can run unintended local shell commands.
- ⚠️ Automatic updates inherit the CLI process privileges.

Fix in Cursor Fix in VSCode Claude

(Use Cmd/Ctrl + Click for best experience)

Prompt for AI Agent 🤖
This is a comment left during a code review.

**Path:** crates/forge_main/src/update.rs
**Line:** 18:19
**Comment:**
	*Security: `HELIOSLITE_UPDATE_URL` is inserted directly into a command executed through a raw shell. A value containing shell metacharacters such as command separators or substitutions changes the command executed during automatic updates, allowing arbitrary commands to run whenever the update path is invoked. Validate the URL strictly and pass it as an argument rather than interpolating it into shell source.

Validate the correctness of the flagged issue. If correct, How can I resolve this? If you propose a fix, implement it and please make it concise.
Once fix is implemented, also check other comments on the same PR, and ask user if the user wants to fix the rest of the comments as well. if said yes, then fetch all the comments validate the correctness and implement a minimal fix
👍 | 👎

Comment on lines +22 to +31
let output = match api
.execute_shell_command_raw(&format!("curl -fsSL {primary} | sh"))
.await
{
Ok(o) => o,
Err(_) => api
.execute_shell_command_raw(&format!("curl -fsSL {fallback} | sh"))
.await
.unwrap_or_else(|e| e),
};

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggestion: The fallback runs only when spawning or waiting for the shell returns an error. A failed curl -f in curl ... | sh normally still yields an Ok(ExitStatus) because the shell pipeline exits with the final sh status, so an unreachable or HTTP-failing primary endpoint can be treated as a successful update and the legacy URL is never attempted. Check the returned exit status and retry when it is unsuccessful. [incorrect condition logic]

Severity Level: Major ⚠️
- ❌ Legacy update URL is not attempted when primary HTTP access fails.
- ⚠️ Users can receive no update despite the documented fallback.

Fix in Cursor Fix in VSCode Claude

(Use Cmd/Ctrl + Click for best experience)

Prompt for AI Agent 🤖
This is a comment left during a code review.

**Path:** crates/forge_main/src/update.rs
**Line:** 22:31
**Comment:**
	*Incorrect Condition Logic: The fallback runs only when spawning or waiting for the shell returns an error. A failed `curl -f` in `curl ... | sh` normally still yields an `Ok(ExitStatus)` because the shell pipeline exits with the final `sh` status, so an unreachable or HTTP-failing primary endpoint can be treated as a successful update and the legacy URL is never attempted. Check the returned exit status and retry when it is unsuccessful.

Validate the correctness of the flagged issue. If correct, How can I resolve this? If you propose a fix, implement it and please make it concise.
Once fix is implemented, also check other comments on the same PR, and ask user if the user wants to fix the rest of the comments as well. if said yes, then fetch all the comments validate the correctness and implement a minimal fix
👍 | 👎

Comment on lines +113 to +117
// HeliosLite rename (2026-07-06): FORGE_API_KEY -> HELIOSLITE_API_KEY.
// Users on the legacy KooshaPari/forgecode pre-rename build keep working
// until they rotate their env. Symmetric with the OLLAMA/VLLM/LM_STUDIO
// fallbacks above. Will be removed in a future major.
"HELIOSLITE_API_KEY" => Some("FORGE_API_KEY"),

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggestion: The new legacy mapping is only applied to URL parameters, while the Forge provider declares HELIOSLITE_API_KEY as api_key_vars and retrieves it directly. Therefore users who only have FORGE_API_KEY set still receive env_var_not_found and cannot migrate their credentials; apply the fallback to API-key lookup as well. [api mismatch]

Severity Level: Major ⚠️
- ❌ Legacy `FORGE_API_KEY` users cannot authenticate to the Forge provider.
- ⚠️ Rename compatibility works for URL parameters but not credentials.

Fix in Cursor Fix in VSCode Claude

(Use Cmd/Ctrl + Click for best experience)

Prompt for AI Agent 🤖
This is a comment left during a code review.

**Path:** crates/forge_repo/src/provider/provider_repo.rs
**Line:** 113:117
**Comment:**
	*Api Mismatch: The new legacy mapping is only applied to URL parameters, while the Forge provider declares `HELIOSLITE_API_KEY` as `api_key_vars` and retrieves it directly. Therefore users who only have `FORGE_API_KEY` set still receive `env_var_not_found` and cannot migrate their credentials; apply the fallback to API-key lookup as well.

Validate the correctness of the flagged issue. If correct, How can I resolve this? If you propose a fix, implement it and please make it concise.
Once fix is implemented, also check other comments on the same PR, and ask user if the user wants to fix the rest of the comments as well. if said yes, then fetch all the comments validate the correctness and implement a minimal fix
👍 | 👎

Comment on lines +33 to +40
tracing_subscriber::EnvFilter::try_from_env(
// Additive rename: HELIOSLITE_LOG wins, falls back to FORGE_LOG
// (which is the upstream / pre-rename env name).
std::env::var("HELIOSLITE_LOG")
.or_else(|_| std::env::var("FORGE_LOG"))
.ok()
.as_deref(),
)

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggestion: EnvFilter::try_from_env expects an environment-variable name as a string reference, but this passes Option<&str> containing the environment variable's value. This causes the tracker crate to fail its type checking; use the filter constructor intended for an optional filter expression instead. [api mismatch]

Severity Level: Critical 🚨
- ❌ Workspace builds fail in the tracker crate.
- ❌ CLI binaries cannot compile with the changed logging code.

Fix in Cursor Fix in VSCode Claude

(Use Cmd/Ctrl + Click for best experience)

Prompt for AI Agent 🤖
This is a comment left during a code review.

**Path:** crates/forge_tracker/src/log.rs
**Line:** 33:40
**Comment:**
	*Api Mismatch: `EnvFilter::try_from_env` expects an environment-variable name as a string reference, but this passes `Option<&str>` containing the environment variable's value. This causes the tracker crate to fail its type checking; use the filter constructor intended for an optional filter expression instead.

Validate the correctness of the flagged issue. If correct, How can I resolve this? If you propose a fix, implement it and please make it concise.
Once fix is implemented, also check other comments on the same PR, and ask user if the user wants to fix the rest of the comments as well. if said yes, then fetch all the comments validate the correctness and implement a minimal fix
👍 | 👎

Comment thread install.sh
Comment on lines +79 to +82
pushd "$(cd "$(dirname "$0")" && pwd)/.." >/dev/null
cargo build --release --bin helioslite
popd >/dev/null
cp "target/release/helioslite" "$INSTALL_DIR/helioslite"

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggestion: The documented --local invocation from the repository root changes into the parent of the script directory before running Cargo. Since the script is at the repository root, this points outside the workspace, so Cargo cannot find the workspace manifest and the local installation fails. Build from the script's directory or locate the repository root explicitly. [state/lifecycle]

Severity Level: Major ⚠️
- ❌ Documented local installation fails from the repository root.
- ⚠️ Developers cannot use the source-build installation path.

Fix in Cursor Fix in VSCode Claude

(Use Cmd/Ctrl + Click for best experience)

Prompt for AI Agent 🤖
This is a comment left during a code review.

**Path:** install.sh
**Line:** 79:82
**Comment:**
	*State Lifecycle: The documented `--local` invocation from the repository root changes into the parent of the script directory before running Cargo. Since the script is at the repository root, this points outside the workspace, so Cargo cannot find the workspace manifest and the local installation fails. Build from the script's directory or locate the repository root explicitly.

Validate the correctness of the flagged issue. If correct, How can I resolve this? If you propose a fix, implement it and please make it concise.
Once fix is implemented, also check other comments on the same PR, and ask user if the user wants to fix the rest of the comments as well. if said yes, then fetch all the comments validate the correctness and implement a minimal fix
👍 | 👎

Comment thread install.ps1
Write-Err "cargo not on PATH — install rustup: https://rustup.rs/"
exit 1
}
Push-Location (Resolve-Path "$PSScriptRoot\..")

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggestion: When the documented pwsh ./install.ps1 -Local command is run from the repository root, $PSScriptRoot already points to that root. Appending .. moves Cargo to the parent directory, where the workspace manifest and target\release\helioslite.exe do not exist, so the local build and copy fail. [logic error]

Severity Level: Major ⚠️
- ❌ Documented local Windows installation fails.
- ⚠️ Users cannot build and install from a checkout.

Fix in Cursor Fix in VSCode Claude

(Use Cmd/Ctrl + Click for best experience)

Prompt for AI Agent 🤖
This is a comment left during a code review.

**Path:** install.ps1
**Line:** 56:56
**Comment:**
	*Logic Error: When the documented `pwsh ./install.ps1 -Local` command is run from the repository root, `$PSScriptRoot` already points to that root. Appending `..` moves Cargo to the parent directory, where the workspace manifest and `target\release\helioslite.exe` do not exist, so the local build and copy fail.

Validate the correctness of the flagged issue. If correct, How can I resolve this? If you propose a fix, implement it and please make it concise.
Once fix is implemented, also check other comments on the same PR, and ask user if the user wants to fix the rest of the comments as well. if said yes, then fetch all the comments validate the correctness and implement a minimal fix
👍 | 👎

header_up X-Forwarded-Proto {scheme}
}
rate_limit helioslite_public_rl
header /strict-transport-security "max-age=31536000; includeSubDomains"

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggestion: The HSTS header is configured with /strict-transport-security as the first argument, which is interpreted as a path matcher rather than the Strict-Transport-Security header field. Consequently, the public site will not emit the intended HSTS header; specify the actual header name and value, optionally with a separate matcher. [security]

Severity Level: Major ⚠️
- ⚠️ Public HeliosLite site lacks configured HSTS.
- ⚠️ HTTPS downgrade protection is not provided.

Fix in Cursor Fix in VSCode Claude

(Use Cmd/Ctrl + Click for best experience)

Prompt for AI Agent 🤖
This is a comment left during a code review.

**Path:** ops/caddy/Caddyfile.helioslite
**Line:** 24:24
**Comment:**
	*Security: The HSTS header is configured with `/strict-transport-security` as the first argument, which is interpreted as a path matcher rather than the `Strict-Transport-Security` header field. Consequently, the public site will not emit the intended HSTS header; specify the actual header name and value, optionally with a separate matcher.

Validate the correctness of the flagged issue. If correct, How can I resolve this? If you propose a fix, implement it and please make it concise.
Once fix is implemented, also check other comments on the same PR, and ask user if the user wants to fix the rest of the comments as well. if said yes, then fetch all the comments validate the correctness and implement a minimal fix
👍 | 👎

Comment on lines +12 to +15
Write-Host "[helioslite installer] download from https://github.com/KooshaPari/heliosLite/releases"
Write-Host "[helioslite installer] verifying sha256 sum against published checksums"
Write-Host "[helioslite installer] running in legacy mode (OMNIROUTE_LEGACY=1) — set to 0 for the renamed CLI"
return 0

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggestion: This Chocolatey install script only prints messages claiming that a release will be downloaded and verified, then returns success without downloading, extracting, or installing any executable. Chocolatey will report a successful installation while leaving helioslite unavailable. [incomplete implementation]

Severity Level: Major ⚠️
- ❌ Chocolatey installation cannot install HeliosLite.
- ❌ Users receive no usable `helioslite` executable.

Fix in Cursor Fix in VSCode Claude

(Use Cmd/Ctrl + Click for best experience)

Prompt for AI Agent 🤖
This is a comment left during a code review.

**Path:** packaging/chocolatey/tools/chocolateyinstall.ps1
**Line:** 12:15
**Comment:**
	*Incomplete Implementation: This Chocolatey install script only prints messages claiming that a release will be downloaded and verified, then returns success without downloading, extracting, or installing any executable. Chocolatey will report a successful installation while leaving `helioslite` unavailable.

Validate the correctness of the flagged issue. If correct, How can I resolve this? If you propose a fix, implement it and please make it concise.
Once fix is implemented, also check other comments on the same PR, and ask user if the user wants to fix the rest of the comments as well. if said yes, then fetch all the comments validate the correctness and implement a minimal fix
👍 | 👎

desc "KooshaPari/forgecode → HeliosLite. AI-DD/HITL-less coding agent."
homepage "https://helioslite.dev"
url "https://github.com/KooshaPari/heliosLite/archive/refs/tags/v#{version}.tar.gz"
sha256 "<set at tag time>"

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggestion: The formula leaves the source checksum as a literal placeholder. Homebrew validates sha256 against the downloaded archive, so every installation from this formula will fail checksum validation until the checksum for the referenced tag is supplied. [api mismatch]

Severity Level: Major ⚠️
- ❌ Homebrew archive validation fails.
- ❌ HeliosLite cannot install from this formula.

Fix in Cursor Fix in VSCode Claude

(Use Cmd/Ctrl + Click for best experience)

Prompt for AI Agent 🤖
This is a comment left during a code review.

**Path:** packaging/homebrew/helioslite.rb
**Line:** 5:5
**Comment:**
	*Api Mismatch: The formula leaves the source checksum as a literal placeholder. Homebrew validates `sha256` against the downloaded archive, so every installation from this formula will fail checksum validation until the checksum for the referenced tag is supplied.

Validate the correctness of the flagged issue. If correct, How can I resolve this? If you propose a fix, implement it and please make it concise.
Once fix is implemented, also check other comments on the same PR, and ask user if the user wants to fix the rest of the comments as well. if said yes, then fetch all the comments validate the correctness and implement a minimal fix
👍 | 👎


# Renamed binary `helioslite`. Legacy aliases `forge` and `forge-dev`
# remain installed so existing automations keep working.
kegg_only :versioned_formula if (ARGV.named["as"].nil? && tap_git?(formula["tap"])) || ARGV.named["as"].to_s == formula["name"]

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggestion: kegg_only is not the Homebrew Formula DSL method; the method is keg_only. Loading this formula therefore fails before Homebrew can install it. [api mismatch]

Severity Level: Major ⚠️
- ❌ Homebrew cannot load the HeliosLite formula.
-`brew install helioslite` never reaches compilation.

Fix in Cursor Fix in VSCode Claude

(Use Cmd/Ctrl + Click for best experience)

Prompt for AI Agent 🤖
This is a comment left during a code review.

**Path:** packaging/homebrew/helioslite.rb
**Line:** 11:11
**Comment:**
	*Api Mismatch: `kegg_only` is not the Homebrew Formula DSL method; the method is `keg_only`. Loading this formula therefore fails before Homebrew can install it.

Validate the correctness of the flagged issue. If correct, How can I resolve this? If you propose a fix, implement it and please make it concise.
Once fix is implemented, also check other comments on the same PR, and ask user if the user wants to fix the rest of the comments as well. if said yes, then fetch all the comments validate the correctness and implement a minimal fix
👍 | 👎

def install
system "cargo", "install", *std_cargo_args(
path: "crates/forge_main",
bins: ["helioslite", "forge", "forge-dev", "pheno-shell", "pheno-winterminal"],

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggestion: The forge_pheno_shell manifest defines only a library target, and forge_pheno_winterminal has no binary target at all. Passing both names through bins makes cargo install request nonexistent binaries and abort the formula installation before the smoke tests run. [api mismatch]

Severity Level: Major ⚠️
- ❌ Homebrew compilation aborts on nonexistent binary targets.
- ❌ No HeliosLite binaries are installed.

Fix in Cursor Fix in VSCode Claude

(Use Cmd/Ctrl + Click for best experience)

Prompt for AI Agent 🤖
This is a comment left during a code review.

**Path:** packaging/homebrew/helioslite.rb
**Line:** 20:20
**Comment:**
	*Api Mismatch: The `forge_pheno_shell` manifest defines only a library target, and `forge_pheno_winterminal` has no binary target at all. Passing both names through `bins` makes `cargo install` request nonexistent binaries and abort the formula installation before the smoke tests run.

Validate the correctness of the flagged issue. If correct, How can I resolve this? If you propose a fix, implement it and please make it concise.
Once fix is implemented, also check other comments on the same PR, and ask user if the user wants to fix the rest of the comments as well. if said yes, then fetch all the comments validate the correctness and implement a minimal fix
👍 | 👎

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 9b22dc4622

ℹ️ About Codex in GitHub

Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".

{
"id": "forge",
"api_key_vars": "FORGE_API_KEY",
"api_key_vars": "HELIOSLITE_API_KEY",

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Badge Preserve FORGE_API_KEY during provider migration

For users who already configured the default forge provider with only FORGE_API_KEY, this rename makes credential migration fail because create_credential_from_env still looks up only the configured api_key_vars value directly; the new legacy_env_var_fallback is only consulted for URL parameters, not API keys. Until the API-key path checks the legacy fallback too, existing installations lose access to the provider unless they manually duplicate the env var as HELIOSLITE_API_KEY.

Useful? React with 👍 / 👎.

Comment on lines +22 to +28
let output = match api
.execute_shell_command_raw(&format!("curl -fsSL {primary} | sh"))
.await
{
Ok(o) => o,
Err(_) => api
.execute_shell_command_raw(&format!("curl -fsSL {fallback} | sh"))

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Retry the legacy updater after failed downloads

When helioslite.dev/cli is missing or returns a curl failure, execute_shell_command_raw still returns Ok(ExitStatus) once the shell spawned, so this match never reaches the forgecode.dev/cli fallback for normal download failures. In the rename window where the primary endpoint can 404 or be unavailable, updates silently fail instead of using the advertised legacy bootstrap URL; retry based on an unsuccessful status or download before invoking sh.

Useful? React with 👍 / 👎.

Comment thread install.sh
Comment on lines +79 to +82
pushd "$(cd "$(dirname "$0")" && pwd)/.." >/dev/null
cargo build --release --bin helioslite
popd >/dev/null
cp "target/release/helioslite" "$INSTALL_DIR/helioslite"

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Keep POSIX local installs in the repository root

With the documented ./install.sh --local path from the repo root, this pushd moves to the parent of the repository, so cargo build --bin helioslite runs outside the workspace and fails; even if invoked through another path, the later cp target/release/helioslite is relative to the caller after popd. Build and copy from the script directory/repo root so local source installs work.

Useful? React with 👍 / 👎.

Comment thread install.ps1
Comment on lines +56 to +58
Push-Location (Resolve-Path "$PSScriptRoot\..")
try {
cargo build --release --bin helioslite

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Keep PowerShell local installs in the repository root

The documented pwsh ./install.ps1 -Local flow has the same path issue on Windows: when the script lives at the repository root, Resolve-Path "$PSScriptRoot\.." enters the parent directory before running Cargo, so the local install cannot find this workspace and fails before copying helioslite.exe. Use $PSScriptRoot as the build root for this root-level script.

Useful? React with 👍 / 👎.

@@ -0,0 +1,51 @@
class HeliosLiteFormula < Formula

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Use Homebrew's expected formula class

For a formula file named helioslite.rb, Homebrew resolves the class it should load from the file name, but this defines HeliosLiteFormula instead, so brew install helioslite cannot load the formula before it ever reaches the Cargo build. Rename the class to the file-derived formula class and keep the rest of the DSL under that class.

Useful? React with 👍 / 👎.

Comment on lines +1 to +4
Class Program
{
[Microsoft.PowerShell.Commands.WebRequestPSCmdlet]
static int Main(string[] args)

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Replace the invalid Chocolatey PowerShell entry point

Chocolatey runs tools/chocolateyinstall.ps1 as PowerShell, but this file starts with C#-style method syntax (static int Main(string[] args)) and // comments, which PowerShell will not parse as an install script. Any choco install helioslite package built from this nuspec fails before doing the advertised download or checksum verification.

Useful? React with 👍 / 👎.

Comment thread Taskfile.yml
env:
HELIOSLITE_REPO: "{{.GITEA_REPOSITORY | default \"KooshaPari/heliosLite\"}}"
HELIOSLITE_CARGO_PROFILE:
sh: 'cargo info --quiet 2>/dev/null && echo dev || echo release'

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

WARNING: cargo info is not a valid Cargo subcommand

cargo info does not exist in stock Cargo, so HELIOSLITE_CARGO_PROFILE always falls through to release. Use a real check to detect the dev environment.


Reply with @kilocode-bot fix it to have Kilo Code address this issue.

- helioslite
- forge-dev
FileExtensions: []
ManifestType: singleton

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

WARNING: Duplicate ManifestType keys

A winget manifest must declare exactly one ManifestType. This file declares both versioned (line 21) and singleton (line 34); YAML parsers take the last value, but winget validation rejects duplicate keys. Remove one declaration.


Reply with @kilocode-bot fix it to have Kilo Code address this issue.

# phenomonitor is gated by mTLS upstream; basicauth is a
# pre-flight deny for clients that don't present a valid
# phenomonitor bearer.
phenomonitor_admin $2a$14$1V6k0hlIW2dqh8.fAOj6duXJu7qdtWi6P1jj1DcPVRlg5Yr0VoVoK

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

WARNING: Bcrypt password hash stored in plaintext in source control

The phenomonitor_admin password hash is embedded directly in the Caddyfile. Storing hashes in source control prevents credential rotation without a code change and exposes the credential to anyone with repository access. Move the hash to a secret manager or environment variable.


Reply with @kilocode-bot fix it to have Kilo Code address this issue.

</metadata>
<files>
<file src="tools\**" target="tools" />
<file src="legal\**" target="legal" />

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

WARNING: legal\** references a non-existent directory

The <file src="legal\**" target="legal" /> glob points to a directory that does not exist in this repository. Chocolatey will fail when building the package. Remove the entry or add the missing directory.


Reply with @kilocode-bot fix it to have Kilo Code address this issue.

timeout-minutes: 60
env:
HELIOSLITE_REPO: ${{ github.repository }}
HELIOSLITE_RELEASES_BACKEND: "github"

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

SUGGESTION: Unused environment variable

HELIOSLITE_RELEASES_BACKEND is set at line 26 but never referenced in any workflow step. Remove it or wire it into the build to avoid dead configuration.


Reply with @kilocode-bot fix it to have Kilo Code address this issue.

"headers": [
{ "key": "X-Frame-Options", "value": "DENY" },
{ "key": "X-Content-Type-Options", "value": "nosniff" },
{ "key": "Referrer-Policy", "value": "strict-origin-when-cross-origin" }

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

SUGGESTION: Missing Strict-Transport-Security header

The Vercel headers block includes X-Frame-Options, X-Content-Type-Options, and Referrer-Policy, but omits Strict-Transport-Security. The Caddy reverse proxy attempts HSTS (though misconfigured per the existing review comment), but the Vercel-deployed site has no HSTS at all. Add Strict-Transport-Security: max-age=31536000; includeSubDomains.


Reply with @kilocode-bot fix it to have Kilo Code address this issue.

Comment thread README.md
> # Migrate in 30 seconds
> cargo install helioslite --locked
> helioslite --version # canonical
> FORGE_LEGACY=1 forge-dev --version # legacy alias still works

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

WARNING: Undocumented and inconsistent legacy-silence env var

FORGE_LEGACY=1 is not implemented anywhere in the codebase and is inconsistent with HELIOSLITE_LEGACY=1 in docs/RENAMES-STRATEGY.md and HELIOSLITE_LEGACY_OFF=1 in docs/FORK.md. Remove the reference or implement the silencing flag and document it consistently.


Reply with @kilocode-bot fix it to have Kilo Code address this issue.

Comment thread docs/RENAMES-STRATEGY.md
exposed as `[[bin]] name = "helioslite"` in `crates/forge_main/Cargo.toml`).
- **Legacy**: `forge`, `forge-dev` (kept in the same crate, same entry
point). The first invocation of either prints a one-time deprecation
notice (silence with `HELIOSLITE_LEGACY=1`).

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

WARNING: Undocumented and inconsistent legacy-silence env var

HELIOSLITE_LEGACY=1 is not implemented anywhere in the codebase and is inconsistent with HELIOSLITE_LEGACY_OFF=1 in docs/FORK.md and FORGE_LEGACY=1 in README.md. Remove the reference or implement the silencing flag and document it consistently.


Reply with @kilocode-bot fix it to have Kilo Code address this issue.

Comment thread docs/FORK.md
fallback in `crates/forge_repo/src/provider/provider_repo.rs`
(`legacy_env_var_fallback` mirrors the upstream `OLLAMA_HOST`
pattern); a one-time stderr notice recommends migrating to
`HELIOSLITE_API_KEY`. Set `HELIOSLITE_LEGACY_OFF=1` to silence.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

WARNING: Undocumented and inconsistent legacy-silence env var

HELIOSLITE_LEGACY_OFF=1 is not implemented anywhere in the codebase and is inconsistent with HELIOSLITE_LEGACY=1 in docs/RENAMES-STRATEGY.md and FORGE_LEGACY=1 in README.md. Remove the reference or implement the silencing flag and document it consistently.


Reply with @kilocode-bot fix it to have Kilo Code address this issue.

@kilo-code-bot

kilo-code-bot Bot commented Aug 3, 2026

Copy link
Copy Markdown

Code Review Summary

Status: 9 Issues Found | Recommendation: Address before merge

Overview

Severity Count
CRITICAL 0
WARNING 7
SUGGESTION 2
Issue Details (click to expand)

WARNING

File Line Issue
Taskfile.yml 31 cargo info is not a valid Cargo subcommand; HELIOSLITE_CARGO_PROFILE always resolves to release
packaging/winget/README.md 34 Duplicate ManifestType keys (versioned and singleton) — winget manifests must have exactly one
ops/caddy/Caddyfile.helioslite 37 Bcrypt password hash stored in plaintext in source control, preventing credential rotation
packaging/chocolatey/helioslite.nuspec 50 <file src="legal\**" target="legal" /> references a non-existent directory
README.md 26 FORGE_LEGACY=1 is not implemented and is inconsistent with HELIOSLITE_LEGACY=1 and HELIOSLITE_LEGACY_OFF=1
docs/RENAMES-STRATEGY.md 54 HELIOSLITE_LEGACY=1 is not implemented and is inconsistent with HELIOSLITE_LEGACY_OFF=1
docs/FORK.md 137 HELIOSLITE_LEGACY_OFF=1 is not implemented and is inconsistent with HELIOSLITE_LEGACY=1

SUGGESTION

File Line Issue
.github/workflows/helios-lite-nightly.yml 26 HELIOSLITE_RELEASES_BACKEND env var is set but never used in workflow steps
apps/landing-helioslite/vercel.json 18 Missing Strict-Transport-Security header on Vercel deployment
Files Reviewed (9 files)
  • Taskfile.yml - 1 issue
  • packaging/winget/README.md - 1 issue
  • ops/caddy/Caddyfile.helioslite - 1 issue
  • packaging/chocolatey/helioslite.nuspec - 1 issue
  • README.md - 1 issue
  • docs/RENAMES-STRATEGY.md - 1 issue
  • docs/FORK.md - 1 issue
  • .github/workflows/helios-lite-nightly.yml - 1 issue
  • apps/landing-helioslite/vercel.json - 1 issue

Note: packaging/homebrew/helioslite.rb line 11 already has an inline comment about kegg_only, but the same line also uses formula["tap"] which is not valid Homebrew Ruby DSL.

Fix these issues in Kilo Cloud

@KooshaPari

Copy link
Copy Markdown
Owner Author

Closing as superseded (stale WIP capture from 2026-07-26).

Since this branch was captured, fork main has moved substantially:

All additive content this branch introduced (packaging/, apps/landing-helioslite/, docs/, install.sh/ps1, Taskfile.yml) already exists in main. The two-dot diff vs main deletes CI workflows (codeql/fuzz/scorecard/stale), assets, and audit docs while regressing merged fixes.

Recreate from current main if the helioslite rename still needs to move forward.

@KooshaPari KooshaPari closed this Aug 3, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants