Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
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
4 changes: 4 additions & 0 deletions .Jules/palette.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,3 +5,7 @@
## 2026-06-30 - Added Emojis to CLI Output Messages
**Learning:** Adding subtle emojis to informative CLI output headers (like "Created/updated files" and "Next steps") provides clearer visual cues for developers scanning long CLI output.
**Action:** Always include relevant emojis in summary output text to make success and informational messages more visually distinguishable from routine command logs.

## 2024-07-01 - Add emojis to CLI messages for better DX
**Learning:** Adding subtle emojis to informational headers (e.g., '✨ Created', 'πŸš€ This workflow runs') provides clearer visual cues and makes success/informational messages more distinguishable from routine logs, significantly improving the Developer Experience (DX) in terminal outputs.
**Action:** Consistently use emojis in CLI outputs to enhance readability and structure, making it easier for users to quickly scan and understand the information presented.
18 changes: 9 additions & 9 deletions scanner/cli/appguardrail.py
Original file line number Diff line number Diff line change
Expand Up @@ -1224,7 +1224,7 @@ def cmd_scan(args):
sys.exit(1)

if scan_arg.is_symlink():
print(f"Skipping symlink path: {scan_arg}")
print(f"⏭️ Skipping symlink path: {scan_arg}")
return 0

print(f"\nπŸ” AppGuardrail scanning: {scan_path}\n")
Expand Down Expand Up @@ -1384,10 +1384,10 @@ def cmd_monitor(args):
workflow_file.write_text(MONITOR_WORKFLOW)

print("\nβœ… AppGuardrail monitor workflow installed!\n")
print(f"Created/updated: {workflow_file.relative_to(project_root)}")
print(f"✨ Created/updated: {workflow_file.relative_to(project_root)}")
print()
print(
"This workflow runs `appguardrail scan .` on pull requests, pushes, and manual dispatches."
"πŸš€ This workflow runs `appguardrail scan .` on pull requests, pushes, and manual dispatches."
)
return 0

Expand Down Expand Up @@ -1460,10 +1460,10 @@ def cmd_hook(args):
)
hook_scan_command = f"appguardrail scan{scan_flags} ."
print(
f"This will run '{hook_scan_command}' before every commit and block commits if vulnerabilities are found."
f"πŸ›‘οΈ This will run '{hook_scan_command}' before every commit and block commits if vulnerabilities are found."
)
if run_codegraph:
print("CodeGraph mode is enabled for this hook.")
print("🧭 CodeGraph mode is enabled for this hook.")
return 0


Expand Down Expand Up @@ -1873,7 +1873,9 @@ def _run_bandit_scan(scan_path: Path):

if process.returncode not in {0, 1}:
detail = (process.stderr or process.stdout).strip().splitlines()
raise RuntimeError("Bandit scan failed" + (f": {detail[-1]}" if detail else "."))
raise RuntimeError(
"Bandit scan failed" + (f": {detail[-1]}" if detail else ".")
)

try:
report = json.loads(process.stdout or "{}")
Expand Down Expand Up @@ -1972,9 +1974,7 @@ def _semgrep_findings(report: dict, base_path: Path):
for item in report.get("results") or []:
extra = item.get("extra") or {}
start = item.get("start") or {}
path = _sanitize_terminal_output(
_trivy_target(item.get("path", ""), base_path)
)
path = _sanitize_terminal_output(_trivy_target(item.get("path", ""), base_path))
check_id = item.get("check_id") or "semgrep"
findings.append(
_build_finding(
Expand Down