From 3f91b22e18016ba9e452c9599e9f993cbaee19c0 Mon Sep 17 00:00:00 2001 From: Shravan Singh Udawat Date: Fri, 28 Aug 2026 23:51:37 +0530 Subject: [PATCH 1/5] updated gitignore --- jcode-intelligence/.gitignore | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/jcode-intelligence/.gitignore b/jcode-intelligence/.gitignore index 4cef36d..e969974 100644 --- a/jcode-intelligence/.gitignore +++ b/jcode-intelligence/.gitignore @@ -38,4 +38,8 @@ src/main/resources/application.properties # Environment variables .env -.env.* \ No newline at end of file +.env.* + +#testing logs +*.log +build.txt From a82caed943f434a2d3ec37473d5a9cbce2381e9f Mon Sep 17 00:00:00 2001 From: Shravan Singh Udawat Date: Fri, 28 Aug 2026 23:51:59 +0530 Subject: [PATCH 2/5] testing console --- .../jcode_intelligence/cli/ui/ConsoleUI.java | 44 +++++++++++++------ 1 file changed, 31 insertions(+), 13 deletions(-) diff --git a/jcode-intelligence/src/main/java/com/shravan/jcode_intelligence/cli/ui/ConsoleUI.java b/jcode-intelligence/src/main/java/com/shravan/jcode_intelligence/cli/ui/ConsoleUI.java index 7227fe1..808af66 100644 --- a/jcode-intelligence/src/main/java/com/shravan/jcode_intelligence/cli/ui/ConsoleUI.java +++ b/jcode-intelligence/src/main/java/com/shravan/jcode_intelligence/cli/ui/ConsoleUI.java @@ -2,17 +2,34 @@ import com.shravan.jcode_intelligence.cli.util.TerminalUtils; -public class ConsoleUI { - private static final String[] ASTRA_LOGO = { - "________ ________ _________ ________ ________ ", - "|\\ __ \\|\\ ____\\|\\___ ___\\\\ __ \\|\\ __ \\ ", - "\\ \\ \\|\\ \\ \\ \\___|\\|___ \\ \\_\\ \\ \\|\\ \\ \\ \\|\\ \\ ", - " \\ \\ __ \\ \\_____ \\ \\ \\ \\ \\ _ _\\ \\ __ \\ ", - " \\ \\ \\ \\ \\|____|\\ \\ \\ \\ \\ \\ \\ \\\\ \\\\ \\ \\ \\ \\ ", - " \\ \\__\\ \\__\\____\\_\\ \\ \\ \\ \\ \\ \\__\\\\ _\\\\ \\__\\ \\__\\", - " \\|__|\\|__|\\_________\\ \\|__| \\|__|\\|__|\\|__|\\|__|", - " \\|_________| " - }; +public class ConsoleUI { + private static final String ANSI_M = "\u001b[35m"; + private static final String ANSI_BM = "\u001b[95m"; + private static final String ANSI_G = "\u001b[37m"; + private static final String ANSI_BGM = "\u001b[45m"; + private static final String ANSI_RESET = "\u001b[0m"; + + private static final String ASTRA_LOGO_TEMPLATE = """ + {M} {R}{G} {R}{M} ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄{R}{G} {R}{M} ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄{R}{G} {R}{M}▄▄▄▄▄▄▄▄▄▄▄▄▄▄{R}{MM}▀{R}{M}▄ {R}{G} {R}{M} {R} + {M} ▀▓{R}{MM}▄▄▄▄{R}{M}█▄▄ {R}{G} {R}{M} ▄{R}{MM}▄██▓█▀▀▀▀▀▓███░{R}{MM}░▓{R}{G} {R}{M}▀{R}{MM}▓{R}{MM}▒▓█▀▓▓████{R}{BM}█{R}{MM}▓▀▀▀▓█▀{R}{MM}▄{R}{G} {R}{M}█{R}{MM}▀███ {R}{M} ░▀{R}{MM}▒▓█▒{R}{M}█{R}{MM}▐{R}{M} {R}{G} {R}{M} ▀▓{R}{MM}▄▄▄▄{R}{M}█▄▄ {R} + {M} ░█{R}{MM}██▌▀▀▀█▄{R}{M}▄ {R}{G} {R}{M} ░{R}{MM}▒{R}{MM}▓▓▒▓{R}{M}█▀ ░{R}{MM}░▓██▒{R}{MM}▓{R}{M}▌{R}{G} {R}{M} ▀{R}{MM}░▄{R}{M}░{R}{MM}▒▓▓{R}{BM}███{R}{MM}░{R}{MM}▄{R}{M}▀▒{R}{MM}░{R}{BM}▓{R}{M}█{R}{MM}▄{R}{M} {R}{G} {R}{M}▓█{R}{MM}▓▓▓{R}{M}█ {R}{MM}▄▓▓▀{R}{MM}▄{R}{M}▀ {R}{G} {R}{M} ░█{R}{MM}██▌▀▀▀█▄{R}{M}▄ {R} + {M} ░▐{R}{MM}▐██{R}{M}█ ▀{R}{MM} {R}{MM}██{R}{M}▌ {R}{G} {R}{M} █{R}{MM} {R}{MM}▒▒▒{R}{M}█▌ ▀▀▀▀▀ {R}{G} {R}{M} ▀ {R}{MM}░▓▓▓▓░{R}{MM}▐{R}{M} ░{R}{MM}▄▄{R}{M}▀ {R}{G} {R}{M}▒█{R}{MM}▄{R}{M}▀{R}{MM}▀{R}{MM}▄▄█▓▓▒{R}{MM}▄{R}{M}▀ {R}{G} {R}{M} ░▐{R}{MM}▐██{R}{M}█ ▀{R}{MM} {R}{MM}██{R}{M}▌ {R} + {M} ░█{R}{MM}▓▓░{R}{M}▌ ▓{R}{MM}▓▓▓{R}{M}▌ {R}{G} {R}{M} ▓{R}{MM} {R}{MM}░░▒░{R}{M}▌ ▄▄▄▄▄▄ {R}{G} {R}{M} {R}{MM}░{R}{MM}▒▒▒▒{R}{M}█{R}{MM}▓{R}{M} {R}{G} {R}{M}░▓░{R}{MM}▄▓{R}{BM}▀{R}{M}▀▀{R}{MM}▀▓▒░{R}{M}▓▄ {R}{G} {R}{M} ░█{R}{MM}▓▓░{R}{M}▌ ▓{R}{MM}▓▓▓{R}{M}▌ {R} + {M} ░▐{R}{MM}░▒▒ {R}{M} ▄▄{R}{MM}▄▓▒▒▒{R}{M}▄▄ {R}{G} {R}{M} {R}{BM}▄{R}{MM} ░░{R}{M}▀{R}{MM}▀{R}{MM}▄█▀▀▀▀■ ░░{R}{M}▄▀▄{R}{G} {R}{M} {R}{MM}▓{R}{MM}░░░░{R}{M}█▓ {R}{G} {R}{M}░▓▌{R}{MM}▒{R}{BM}▌{R}{MM} {R}{M} ░█{R}{MM}▓▒░ {R}{M}▌ {R}{G} {R}{M} ░▐{R}{MM}░▒▒ {R}{M} ▄▄{R}{MM}▄▓▒▒▒{R}{M}▄▄ {R} + {M}▀▄█{R}{MM}░░{R}{MM}░{R}{M}▀▄█{R}{MM}▀{R}{MM}▄{R}{M}▀▓█{R}{MM}░░░{R}{M}▄ {R}{G} {R}{BM}▀{R}{M}█▄{R}{MM}▄{R}{MM}░{R}{M}▓{R}{MM}▌{R}{MM}▓░{R}{MM}▄{R}{M}▀ ▀░▄▀{R}{MM} {R}{MM}░{R}{M}█▌{R}{MM}▓{R}{G} {R}{M} ▓{R}{MM}░░░░{R}{M}█{R}{MM}▓{R}{M} {R}{G} {R}{M}▒█▒░{R}{MM}▀{R}{BM}▄{R}{M} ▒{R}{MM} {R}{MM}░░░ {R}{M}▌ {R}{G} {R}{M}▀▄█{R}{MM}░░{R}{MM}░{R}{M}▀▄█{R}{MM}▀{R}{MM}▄{R}{M}▀▓█{R}{MM}░░░{R}{M}▄ {R} + {M}░▓█{R}{MM}░{R}{M}▀{R}{MM}▄▀{R}{M}▀▀ ░{R}{MM}░{R}{M}████ {R}{G} {R}{M} ▀▀{R}{MM}▄{R}{M}▄▄{R}{MM}▀{R}{MM}░{R}{MM}▐{R}{M} ░{R}{MM}█▀▌ {R}{M}▌{R}{MM}▒{R}{G} {R}{M} ▒{R}{MM}▌{R}{MM}░░░{R}{M}█{R}{MM}▐{R}{M} {R}{G} {R}{M}▓{R}{MM}▀▀░{R}{M}▄▒▀ ░▐█{R}{MM}░░{R}{M}█▌ {R}{G} {R}{M}░▓█{R}{MM}░{R}{M}▀{R}{MM}▄▀{R}{M}▀▀ ░{R}{MM}░{R}{M}████ {R} + {M}░{R}{MM}░{R}{MM}░{R}{M}▌{R}{MM}▒░{R}{M}▌ ▒{R}{MM}░░{R}{M}██▌{R}{G} {R}{M} ▄▄▄ ▀{R}{MM}▄▀{R}{M}▄▄ ▒{R}{MM}▓{R}{M}██{R}{MM}░░{R}{MM}▀░{R}{G} {R}{M} ░{R}{MM}▌{R}{M}▓███{R}{MM}▐{R}{M} {R}{G} {R}{M}▀██{R}{MM}░{R}{MM}░{R}{M}█ ░█{R}{MM}▓▒{R}{MM}▐{R}{M}█▌{R}{G} {R}{M}░{R}{MM}░{R}{MM}░{R}{M}▌{R}{MM}▒░{R}{M}▌ ▒{R}{MM}░░{R}{M}██▌{R} + {M}▐█{R}{MM}▀{R}{MM}▀{R}{M}▄▀ ▓{R}{MM}░░{R}{M}██{R}{G} {R}{M}▄{R}{MM}▓▒░{R}{MM}░{R}{M}█{R}{MM}░{R}{M}▄ ▄▒{R}{MM}░{R}{M}████{R}{MM}▄{R}{M}▀{R}{G} {R}{M} {R}{MM}▌{R}{M}████{R}{MM}▐{R}{M} {R}{G} {R}{M}▒██{R}{MM}░{R}{MM}░{R}{M}█ ▒{R}{MM}▒▒▒{R}{M}██▌{R}{G} {R}{M}▐█{R}{MM}▀{R}{MM}▀{R}{M}▄▀ ▓{R}{MM}░░{R}{M}██{R} + {MM}▀{R}{M}████{R}{MM}▀▓{R}{M} ▄███▓{R}{G} {R}{M} ▀▀{R}{MM}▄██{R}{M}█{R}{MM}░{R}{M}█{R}{MM}▀{R}{M}▄{R}{MM}▀{R}{M}████{R}{MM}▄{R}{M}▀▀ {R}{G} {R}{M} ▄{R}{MM}▀▒{R}{M}█████{R}{MM}▀{R}{M}▄ {R}{G} {R}{M}■▀▒▓██ ▀{R}{MM}▄{R}{MM}░▀{R}{M}██{R}{MM}▄{R}{M} {R}{G} {R}{MM}▀{R}{M}████{R}{MM}▀▓{R}{M} ▄███▓{R} + """ + .replace("{M}", ANSI_M) + .replace("{BM}", ANSI_BM) + .replace("{G}", ANSI_G) + .replace("{MM}", ANSI_M + ANSI_BGM) + .replace("{BMM}", ANSI_BM + ANSI_BGM) + .replace("{R}", ANSI_RESET); + + private static final String[] ASTRA_LOGO = ASTRA_LOGO_TEMPLATE.split("\n"); private static final int STARTUP_BLOCK_GAP = 4; @@ -271,8 +288,9 @@ private int getBunnyWidth(String[] bunnyFrame) { private int getLogoWidth() { int max = 0; for (String line : ASTRA_LOGO) { - if (line.length() > max) { - max = line.length(); + String clean = line.replaceAll("\u001b\\[[;\\d]*[mK]", ""); + if (clean.length() > max) { + max = clean.length(); } } return max; From 22531af2bfb14c956bcb9f8484116dcc769164fa Mon Sep 17 00:00:00 2001 From: Shravan Singh Udawat Date: Sat, 29 Aug 2026 00:42:23 +0530 Subject: [PATCH 3/5] style: update CLI color palette --- .../com/shravan/jcode_intelligence/cli/ui/ColorPalette.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/jcode-intelligence/src/main/java/com/shravan/jcode_intelligence/cli/ui/ColorPalette.java b/jcode-intelligence/src/main/java/com/shravan/jcode_intelligence/cli/ui/ColorPalette.java index de5745b..ee7b046 100644 --- a/jcode-intelligence/src/main/java/com/shravan/jcode_intelligence/cli/ui/ColorPalette.java +++ b/jcode-intelligence/src/main/java/com/shravan/jcode_intelligence/cli/ui/ColorPalette.java @@ -3,13 +3,13 @@ import com.shravan.jcode_intelligence.cli.util.Ansi; public class ColorPalette { - public static final String PRIMARY = Ansi.CYAN; + public static final String PRIMARY = Ansi.MAGENTA; public static final String SECONDARY = Ansi.BLUE; public static final String SUCCESS = Ansi.GREEN; public static final String WARNING = Ansi.YELLOW; public static final String ERROR = Ansi.RED; public static final String TEXT = Ansi.WHITE; public static final String MUTED = Ansi.GRAY; - public static final String ACCENT = Ansi.BOLD + Ansi.CYAN; + public static final String ACCENT = Ansi.BOLD + Ansi.MAGENTA; public static final String RESET = Ansi.RESET; } From 6da409e3bf33bf68a38a6df2dd62fb86bee87cab Mon Sep 17 00:00:00 2001 From: Shravan Singh Udawat Date: Sat, 29 Aug 2026 00:42:28 +0530 Subject: [PATCH 4/5] style: refine CLI landing screen layout --- .../jcode_intelligence/cli/ui/ConsoleUI.java | 157 ++++++++++-------- 1 file changed, 90 insertions(+), 67 deletions(-) diff --git a/jcode-intelligence/src/main/java/com/shravan/jcode_intelligence/cli/ui/ConsoleUI.java b/jcode-intelligence/src/main/java/com/shravan/jcode_intelligence/cli/ui/ConsoleUI.java index 808af66..3795219 100644 --- a/jcode-intelligence/src/main/java/com/shravan/jcode_intelligence/cli/ui/ConsoleUI.java +++ b/jcode-intelligence/src/main/java/com/shravan/jcode_intelligence/cli/ui/ConsoleUI.java @@ -2,7 +2,7 @@ import com.shravan.jcode_intelligence.cli.util.TerminalUtils; -public class ConsoleUI { +public class ConsoleUI { private static final String ANSI_M = "\u001b[35m"; private static final String ANSI_BM = "\u001b[95m"; private static final String ANSI_G = "\u001b[37m"; @@ -42,94 +42,117 @@ public class ConsoleUI { private Thread idleThread; private volatile boolean idleRunning; + private static final String[] BIG_BUNNY_ASCII = { + " , ,", + " /| |\\", + " / | | \\", + " | | | | Neeeah, ready to explore some code?", + " \\ | | /", + " \\|w|/ /", + " /_ _\\ / ,", + " /\\ _:()_():_ /]", + " ||_ : ._=Y=_ : / /", + " [)(_\\, ',__\\W/ _,' / \\", + " [) \\_/\\ _/'='\\ /-/\\)", + " [_| \\ \\ /// \\ '._ / /", + " :; \\ \\/// / | '` /", + " ;:: \\ `|: : |',_.'", + " \"\"\" \\_|: : |", + " |: : |'\".", + " /`._.' \\/", + " / /| /", + " | \\ / /", + " '. '. /", + " '. '", + " / \\ \\", + " / / \\'=,", + " .----' / \\ (\\__", + " (((____/ \\ \\ )", + " '.\\_)" + }; + public void printBanner() { clearScreen(); - BunnyAnimator startupAnimator = new BunnyAnimator(); - startupAnimator.setState(BunnyState.WELCOME); + // Disable line wrap for ASCII art to gracefully clip on narrow screens rather + // than break + System.out.print("\u001b[?7l"); + + try { + // 1. ASTra Logo Block + int logoMaxWidth = 0; + for (String line : ASTRA_LOGO) { + String clean = line.replaceAll("\u001b\\[[;\\d]*[mK]", ""); + if (clean.length() > logoMaxWidth) { + logoMaxWidth = clean.length(); + } + } + int logoPad = Math.max(0, (TerminalUtils.getTerminalWidth() - logoMaxWidth) / 2); + String logoOffset = " ".repeat(logoPad); - int startupHeight = getStartupBlockHeight(); - for (int i = 0; i < startupHeight; i++) { System.out.println(); - } + for (String logoLine : ASTRA_LOGO) { + System.out.println(logoOffset + logoLine); + } - long start = System.currentTimeMillis(); - boolean firstFrame = true; + System.out.println(); + System.out.println(TerminalUtils.center(ColorPalette.ACCENT + "Code Intelligence CLI" + ColorPalette.RESET, + TerminalUtils.getTerminalWidth())); + System.out.println( + TerminalUtils.center(ColorPalette.MUTED + "Understand • Search • Analyze" + ColorPalette.RESET, + TerminalUtils.getTerminalWidth())); + System.out.println(); + System.out.println(); - while (System.currentTimeMillis() - start < 800) { - if (!firstFrame) { - System.out.print("\033[" + startupHeight + "A"); + // 2. Bunny Mascot Block + int bunnyMaxWidth = 0; + for (String line : BIG_BUNNY_ASCII) { + if (line.length() > bunnyMaxWidth) { + bunnyMaxWidth = line.length(); + } } - firstFrame = false; - - renderStartupBlock(startupAnimator.getCurrentFrame()); + int bunnyPad = Math.max(0, (TerminalUtils.getTerminalWidth() - bunnyMaxWidth) / 2); + String bunnyOffset = " ".repeat(bunnyPad); - try { - Thread.sleep(120); - } catch (InterruptedException e) { - Thread.currentThread().interrupt(); - break; + for (String bunnyLine : BIG_BUNNY_ASCII) { + System.out.println(bunnyOffset + ColorPalette.MUTED + bunnyLine + ColorPalette.RESET); } + } finally { + // Re-enable line wrap for normal text blocks and interactive prompts + System.out.print("\u001b[?7h"); } System.out.println(); - System.out.println(TerminalUtils.center(ColorPalette.ACCENT + "Welcome to ASTra" + ColorPalette.RESET, - TerminalUtils.getTerminalWidth())); - System.out.println(); - System.out.println(TerminalUtils.center(ColorPalette.MUTED + "Try:" + ColorPalette.RESET, - TerminalUtils.getTerminalWidth())); - System.out.println(TerminalUtils.center(ColorPalette.TEXT + " help" + ColorPalette.RESET, - TerminalUtils.getTerminalWidth())); System.out.println(); - startIdleAnimation(startupHeight + 6); - } - - public void startIdleAnimation(int linesUp) { - if (idleRunning) { - return; + // 3. Help Box + String[] box = { + "┌───────────────────────────────┐", + "│ Type 'help' to see commands │", + "└───────────────────────────────┘" + }; + for (String boxLine : box) { + System.out.println(TerminalUtils.center(ColorPalette.ACCENT + boxLine + ColorPalette.RESET, + TerminalUtils.getTerminalWidth())); } - idleRunning = true; - BunnyAnimator idleAnimator = new BunnyAnimator(); - idleAnimator.setState(BunnyState.IDLE); - - idleThread = new Thread(() -> { - while (idleRunning) { - try { - Thread.sleep(800); - } catch (InterruptedException e) { - Thread.currentThread().interrupt(); - break; - } - - if (!idleRunning) { - break; - } + System.out.println(); + System.out.println(); - synchronized (renderLock) { - System.out.print("\033[s\033[" + linesUp + "A"); - renderStartupBlock(idleAnimator.getCurrentFrame()); - System.out.print("\033[u"); - System.out.flush(); - } - } - }); + // 4. GitHub Link + System.out.println(TerminalUtils.center(ColorPalette.TEXT + "[ GitHub ]" + ColorPalette.RESET, + TerminalUtils.getTerminalWidth())); + System.out.println(); + System.out.println(TerminalUtils.renderSeparator("")); + System.out.println(); + } - idleThread.setDaemon(true); - idleThread.start(); + public void startIdleAnimation(int linesUp) { + // Idle animation disabled to preserve the new static layout } public void stopIdleAnimation() { - idleRunning = false; - if (idleThread != null) { - idleThread.interrupt(); - try { - idleThread.join(); - } catch (InterruptedException e) { - Thread.currentThread().interrupt(); - } - } + // Idle animation disabled } public void printFarewell() { From b6a96ee9c4f3a914825d5d0cb333d4c1a5b04872 Mon Sep 17 00:00:00 2001 From: Shravan Singh Udawat Date: Sat, 29 Aug 2026 00:42:32 +0530 Subject: [PATCH 5/5] style: update ANSI terminal formatting --- .../main/java/com/shravan/jcode_intelligence/cli/util/Ansi.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/jcode-intelligence/src/main/java/com/shravan/jcode_intelligence/cli/util/Ansi.java b/jcode-intelligence/src/main/java/com/shravan/jcode_intelligence/cli/util/Ansi.java index 4d31921..075afcb 100644 --- a/jcode-intelligence/src/main/java/com/shravan/jcode_intelligence/cli/util/Ansi.java +++ b/jcode-intelligence/src/main/java/com/shravan/jcode_intelligence/cli/util/Ansi.java @@ -10,4 +10,6 @@ public class Ansi { public static final String RED = "\u001B[31m"; public static final String WHITE = "\u001B[37m"; public static final String GRAY = "\u001B[90m"; + public static final String MAGENTA = "\u001B[35m"; + public static final String BRIGHT_MAGENTA = "\u001B[95m"; }