From f29ddd7c4c88ebdbf48a641b22f1619d525e74cd Mon Sep 17 00:00:00 2001 From: davidweb3-ctrl Date: Mon, 6 Apr 2026 02:28:54 +0000 Subject: [PATCH 1/4] fix: bump-version.sh correctly handles prerelease versions When bumping from a prerelease version (e.g., 1.0.0-beta.1), the script now correctly transitions to the stable version instead of incrementing and skipping the stable release. Changes: - Detect if current version is a prerelease (contains '-') - For prerelease versions: patch/minor/major bumps now return the base stable version (e.g., 1.0.0-beta.1 -> 1.0.0) - For stable versions: behavior unchanged (normal increment) Fixes: PlatformNetwork/bounty-challenge#47839 --- scripts/bump-version.sh | 27 ++++++++++++++++++++++++--- 1 file changed, 24 insertions(+), 3 deletions(-) diff --git a/scripts/bump-version.sh b/scripts/bump-version.sh index 02acceae7..ccb6f8525 100755 --- a/scripts/bump-version.sh +++ b/scripts/bump-version.sh @@ -139,15 +139,36 @@ compare_versions() { } # Calculate new version +# Check if current version is a prerelease (contains '-') +IS_PRERELEASE=false +if [[ "$CURRENT_VERSION" == *-* ]]; then + IS_PRERELEASE=true +fi + case $BUMP_TYPE in patch) - NEW_VERSION="$MAJOR.$MINOR.$((PATCH + 1))" + # If prerelease, just remove prerelease tag to get stable version + if [ "$IS_PRERELEASE" = true ]; then + NEW_VERSION="$BASE_VERSION" + else + NEW_VERSION="$MAJOR.$MINOR.$((PATCH + 1))" + fi ;; minor) - NEW_VERSION="$MAJOR.$((MINOR + 1)).0" + # If prerelease, just remove prerelease tag to get stable version + if [ "$IS_PRERELEASE" = true ]; then + NEW_VERSION="$BASE_VERSION" + else + NEW_VERSION="$MAJOR.$((MINOR + 1)).0" + fi ;; major) - NEW_VERSION="$((MAJOR + 1)).0.0" + # If prerelease, just remove prerelease tag to get stable version + if [ "$IS_PRERELEASE" = true ]; then + NEW_VERSION="$BASE_VERSION" + else + NEW_VERSION="$((MAJOR + 1)).0.0" + fi ;; *) # Assume it's an exact version - validate format From e82a315335ceb3f8ebfa1c0c17c4f2281654c7c8 Mon Sep 17 00:00:00 2001 From: davidweb3-ctrl Date: Mon, 6 Apr 2026 02:45:00 +0000 Subject: [PATCH 2/4] fix: correct path to cortex-cli Cargo.toml in check-cli-version.sh The script was looking for cortex-cli/Cargo.toml at the repository root, but the crate is actually located at src/cortex-cli/Cargo.toml per the workspace configuration. This caused the version validation check to be silently skipped, as the file existence check failed. Changes: - Updated CORTEX_CLI_CARGO path from cortex-cli/Cargo.toml to src/cortex-cli/Cargo.toml Fixes: PlatformNetwork/bounty-challenge#47866 --- scripts/check-cli-version.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/check-cli-version.sh b/scripts/check-cli-version.sh index db8ebcfde..63f408aa8 100755 --- a/scripts/check-cli-version.sh +++ b/scripts/check-cli-version.sh @@ -48,7 +48,7 @@ WORKSPACE_VERSION=$(grep -A20 '^\[workspace\.package\]' "$CARGO_TOML" | grep '^v echo "Workspace Cargo.toml: $WORKSPACE_VERSION" # Also check cortex-cli/Cargo.toml uses workspace version -CORTEX_CLI_CARGO="$REPO_ROOT/cortex-cli/Cargo.toml" +CORTEX_CLI_CARGO="$REPO_ROOT/src/cortex-cli/Cargo.toml" if [ -f "$CORTEX_CLI_CARGO" ]; then CLI_VERSION_LINE=$(grep '^version' "$CORTEX_CLI_CARGO" | head -1) if [[ "$CLI_VERSION_LINE" == *"workspace = true"* ]]; then From 23a132e099e060c9d055362a57acadd09c121f78 Mon Sep 17 00:00:00 2001 From: davidweb3-ctrl Date: Mon, 6 Apr 2026 03:16:12 +0000 Subject: [PATCH 3/4] fix(cli): improve QUICK START styling - use cyan instead of dim for quoted prompts Fixes: PlatformNetwork/bounty-challenge#47960 --- src/cortex-cli/src/cli/styles.rs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/cortex-cli/src/cli/styles.rs b/src/cortex-cli/src/cli/styles.rs index 4032f94e7..3d78276bb 100644 --- a/src/cortex-cli/src/cli/styles.rs +++ b/src/cortex-cli/src/cli/styles.rs @@ -28,10 +28,10 @@ pub fn get_styles() -> Styles { /// After-help section with environment variables documentation. pub const AFTER_HELP: &str = color_print::cstr!( r#"📚 QUICK START + cortex "fix the bug" Start interactive TUI with initial prompt + cortex run "explain this" Non-interactive single request + cortex exec "run tests" Headless execution for CI/CD cortex Start interactive TUI - cortex "fix the bug" Start TUI with initial prompt - cortex run "explain this" Non-interactive single request - cortex exec "run tests" Headless execution for CI/CD cortex resume --last Continue most recent session 🌍 ENVIRONMENT VARIABLES From 97b58ed6797929b5671811162e817a3e65117b00 Mon Sep 17 00:00:00 2001 From: davidweb3-ctrl Date: Mon, 6 Apr 2026 03:46:24 +0000 Subject: [PATCH 4/4] fix(dag): report corrupted DAGs in compact/json output formats Fixes: PlatformNetwork/bounty-challenge#47965 --- src/cortex-cli/src/dag_cmd/commands.rs | 41 +++++++++++++++++--------- 1 file changed, 27 insertions(+), 14 deletions(-) diff --git a/src/cortex-cli/src/dag_cmd/commands.rs b/src/cortex-cli/src/dag_cmd/commands.rs index dc20992fc..787d02b6a 100644 --- a/src/cortex-cli/src/dag_cmd/commands.rs +++ b/src/cortex-cli/src/dag_cmd/commands.rs @@ -322,26 +322,39 @@ pub async fn run_list(args: DagListArgs) -> Result<()> { DagOutputFormat::Json => { let mut dags = Vec::new(); for id in &ids { - if let Ok(dag) = store.load(id).await { - let counts = dag.status_counts(); - dags.push(serde_json::json!({ - "id": id, - "task_count": dag.len(), - "is_complete": dag.is_complete(), - "all_succeeded": dag.all_succeeded(), - "completed": counts.get(&TaskStatus::Completed).unwrap_or(&0), - "failed": counts.get(&TaskStatus::Failed).unwrap_or(&0) - })); + match store.load(id).await { + Ok(dag) => { + let counts = dag.status_counts(); + dags.push(serde_json::json!({ + "id": id, + "task_count": dag.len(), + "is_complete": dag.is_complete(), + "all_succeeded": dag.all_succeeded(), + "completed": counts.get(&TaskStatus::Completed).unwrap_or(&0), + "failed": counts.get(&TaskStatus::Failed).unwrap_or(&0) + })); + } + Err(_) => { + dags.push(serde_json::json!({ + "id": id, + "error": "error loading" + })); + } } } println!("{}", serde_json::to_string_pretty(&dags)?); } DagOutputFormat::Compact => { for id in &ids { - if let Ok(dag) = store.load(id).await { - let counts = dag.status_counts(); - let completed = counts.get(&TaskStatus::Completed).unwrap_or(&0); - println!("{} {}/{}", id, completed, dag.len()); + match store.load(id).await { + Ok(dag) => { + let counts = dag.status_counts(); + let completed = counts.get(&TaskStatus::Completed).unwrap_or(&0); + println!("{} {}/{}", id, completed, dag.len()); + } + Err(_) => { + println!("? {} (error loading)", id); + } } } }