|
38910
|
PipOS by @srithimahi | Stardance
|
srithimahi
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: PipOS by @srithimahi | Stardance
|
1793893886.8608084
|
1794757886.8608084
|
|
44386
|
Upgraded Personal Website by @srithimahi | Stardan Upgraded Personal Website by @srithimahi | Stardance...
|
srithimahi
|
1
|
10.0
|
47
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-11T04:31:09Z", "hours": 10.0, "multiplier": 4.9, "payout": 47, "blessing": "neutral", "text": "I upgraded my personal website to have a more formal main page, projects page and experiences page while adding new features and animations. This time in building this website, it was the animations that really threw me off, but with some help I did manage to find some ones I really liked. I really love how the website came together and I freaking love my rainbow divider, it is gorgeous plus hover over it and watch it speed up!", "repo": "https://github.com/srithimahi/srithimahi.github.io", "demo": "https://inkedpetal.dev/"}]...
|
[{"post_id": 44974, "ts": "202 [{"post_id": 44974, "ts": "2026-08-11T02:42:35Z", "hours": 1.7794, "text": "Experience and projects page So, its the same formula really, nothing really that new BUT I did have like sections inside sections to make each of the project or experience distinct. But, I did want to add PLENTY of links to really present the projects more credibly."}, {"post_id": 43736, "ts": "2026-08-09T04:37:40Z", "hours": 2.7867, "text": "About page So, I’m done with the about page. This page did go much easier cause I already had the base from the main page. I really got inspired by tags! I really liked the idea of tags, it almost felt like hashtags to me . My most favorite thing in this page IS THE PHOTOS. You see I love pinterest, I once literally spent 5 hours scrolling on pinterest… but I really wanted the photo grid style in the app. I research about it and apparently CSS is perfect for these masonry grids. They were pretty meh in making, it did slightly make me tick. But, seeing the page was ALL TOO SATISFYING!"}, {"post_id": 42969, "ts": "2026-08-07T23:32:38Z", "hours": 5.0231, "text": "AHHHH I SPENT A STUPID AMOUNT OF TIME ON THIS ONE PAGE So, I have had this personal website I made for Hack Club pages that was very playful but still showed what I want others to know about me, But I wanted to be able to present to others like in more formal and professional settings without them having to struggle through ONLY a bunch of posters to know things about me. (future srithi! if you want to know about the initial design for the website, you can click on the poster wall in the current website to know and that was the main page in the original website and nothing else other than the pages you get after clicking the posters) So! I decided to upgrade this into something a bit more functional while still having its charm. Technical Stuff: Didn’t go much fancy here either, this entire page was just HTML and CSS, but CSS is a real pain in the butt. I wanted to have easy to reach buttons that seemed cool and fitting to background with some hover elements, and I wanted the window to look almost like a terminal window in a macbook. Beneath it are a bunch of 88x31 buttons I ADORED… u dont understand I sent a solid hour for these."}]...
|
Title: Upgraded Personal Website by @srithimahi | Title: Upgraded Personal Website by @srithimahi | Stardance
Devlogs:
AHHHH I SPENT A STUPID AMOUNT OF TIME ON THIS ONE PAGE So, I have had this personal website I made for Hack Club pages that was very playful but still showed what I want others to know about me, But I wanted to be able to present to others like in more formal and professional settings without them having to struggle through ONLY a bunch of posters to know things about me. (future srithi! if you want to know about the initial design for the website, you can click on the poster wall in the current website to know and that was the main page in the original website and nothing else other than the pages you get after clicking the posters) So! I decided to upgrade this into something a bit more functional while still having its charm. Technical Stuff: Didn’t go much fancy here either, this entire page was just HTML and CSS, but CSS is a real pain in the butt. I wanted to have easy to reach buttons that seemed cool and fitting to background with some hover elements, and I wanted the window to look almost like a terminal window in a macbook. Beneath it are a bunch of 88x31 buttons I ADORED… u dont understand I sent a solid hour for these.
About page So, I’m done with the about page. This page did go much easier cause I already had the base from the main page. I really got inspired by tags! I really liked the idea of tags, it almost felt like hashtags to me . My most favorite thing in this page IS THE PHOTOS. You see I love pinterest, I once literally spent 5 hours scrolling on pinterest… but I really wanted the photo grid style in the app. I research about it and apparently CSS is perfect for these masonry grids. They were pretty meh in making, it did slightly make me tick. But, seeing the page was ALL TOO SATISFYING!
Experience and projects page So, its the same formula really, nothing really that new BUT I did have like sections inside sections to make each of the project or experience distinct. But, I did want to add PLENTY of links to really present the projects more credibly.
Ships:
I upgraded my personal website to have a more formal main page, projects page and experiences page while adding new features and animations. This time in building this website, it was the animations that really threw me off, but with some help I did manage to find some ones I really liked. I really love how the website came together and I freaking love my rainbow divider, it is gorgeous plus hover over it and watch it speed up!...
|
1793793084.4840715
|
1793879484.4840715
|
|
59944
|
Aster by @srithimahi | Stardance
|
srithimahi
|
1
|
50.0
|
0
|
[{"ship_num": 1, "ts": "2026-1 [{"ship_num": 1, "ts": "2026-10-29T04:57:33Z", "hours": 50.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "ASTER IS DONEEEEE I MADE A TERMINAL. IN RUST. SOMEHOW. Aster is a custom terminal emulator + multiplexer I built basically from scratch while learning Rust. It started with me wondering what actually happens underneath a terminal. Then I learned that a terminal is NOT the shell, discovered PTYs and ANSI escape sequences, built my own terminal grid/parser/renderer, and accidentally entered one of the deepest rabbit holes of my life. Aster now has: PTY-backed PowerShell sessions ANSI/VT parsing + custom terminal rendering tabs and recursive split panes draggable pane resizing + zooming text selection, clipboard, scrollback and search dynamic pane/tab titles a built-in System Monitor process filtering, inspection and safe process killing Aster’s own : command system searchable command palette + shortcuts menu command history + autocomplete runtime themes dynamic theme discovery Stardance, Nebula, Sunshine and Mono themes The coolest architectural change happened when I realized panes didn’t have to contain terminals. I refactored Aster so panes can contain different tools, which is how the System Monitor became a first-class pane. That turned Aster from just a terminal + multiplexer into the beginning of a terminal-centered developer workspace. And OH MY GOD THE BUGS. I had ghost characters because I hadn’t implemented ANSI ECH. ConPTY and my terminal disagreed about their dimensions. I started this project knowing basically no Rust and ended up learning about ownership, PTYs, ANSI/VT sequences, terminal state machines, recursive pane trees, rendering, process management, terminal geometry, and how unbelievably complicated the rectangle I type commands into actually is. For the final test, I cloned Aster into a completely fresh directory and ran: cargo run --release AND IT WORKED. SO YAYYYYYY!!!!", "repo": "https://github.com/srithimahi/Aster", "demo": "https://github.com/srithimahi/Aster/blob/main/README.md"}]...
|
[{"post_id": 84131, "ts": "202 [{"post_id": 84131, "ts": "2026-10-29T04:55:08Z", "hours": 7.2875, "text": "Devlog-7 in the last devlog I said: “AND THENNNNN ASTER IS DONE (for now)” WELLLLLL I DID IT. ASTER IS DONEEEEEEEEE but obviously not before it found 700 new ways to break. THE SYSTEM MONITOR GOT AN UPGRADEEEE The process list is actually useful now instead of being a giant wall of processes. I added process filtering! Press / , type a process name or PID, and Aster filters the list live. You can select a process, inspect it, and kill it. which led to the realization that perhaps my terminal should not casually murder processes with no confirmation. SOOO process killing now has a confirmation screen AND Aster prevents itself from killing its own process. no Aster-on-Aster violence allowed. COMMANDS GOT BETTERRRR The : command system got more polish! It now has command history with the up/down arrows, autocomplete got improved, and themes now support things like: :theme next :theme previous Aster also keeps track of the currently active theme. AND themes are dynamic now! Aster discovers .toml files from the themes/ folder instead of having every theme hardcoded. The final themes are Stardance, Nebula, Sunshine, and Mono. TAB NAMES + TEXT SELECTION Tabs can now have their own names!! I also polished text selection so the mouse becomes a text cursor only when you’re actually hovering over terminal text, and clicking random empty space doesn’t create a mysterious selection from the void. tiny details but they make Aster feel SO much more finished. THE FOREHEAD oh my god. When I resized Aster vertically, sometimes a giant empty region appeared ABOVE all the terminal content. BUT I FIXED IT SO IM DONE FINAL CLEANUP I deleted all the debugging stuff that accumulated while I was fighting these bugs, including my PTY byte debugger. I also discovered a ReloadConfig command that did absolutely nothing except print: Config reload coming next yeahhhhh that got removed. NO FAKE FEATURES ALLOWED. AND THEN THE SCARIEST TEST I pushed everything. Made a completely fresh clone of the GitHub repo. Ran: cargo run --release AND IT WORKED. fonts worked. themes worked. terminal worked. everything launched from the clean clone. SO IT’S NOT JUST WORKING BECAUSE MY COMPUTER HAS DEVELOPED A PERSONAL RELATIONSHIP WITH THE CODEBASE. ASTER IS DONEEEEE I started this project thinking: “wait terminals are cool, what if I make one” while knowing basically no Rust. and somehow ended up learning SOOOOO much Aster started as a terminal emulator + multiplexer and slowly became a terminal-centered developer workspace. There are SO MANY directions I could take it later. BUT NOT TODAY. because if I add another feature I will never ship this thing. NEXTTTT ASTER IS GETTING SHIPPED. I MADE A TERMINAL WHAT THE HELL"}, {"post_id": 76540, "ts": "2026-10-03T21:27:22Z", "hours": 9.3839, "text": "Devlog-6 in the last devlog I ended by saying “Next I want a shortcuts command to show all the shortcuts cause I am STARTING TO FORGET EVERYTHING” …yeahhhh, i made that and an entire command system Aster has COMMANDSSSSS Before this, every action was linked to a keyboard shortcut. That was a mildly questionable. SO i made shortcuts for tabs, panes, zooming, focusing the panes, search, copy, paste, opening the system monitor, blah blah and I was reaching the point where I MADE THE TERMINAL AND EVEN I COULDN’T REMEMBER HOW TO USE IT. So instead of having all those actions just scattered around the keyboard handling code part, so I made a command system So things like NewTab, CloseTab, SplitVertical, SplitHorizontal, and much more are now commands The keyboard shortcuts just execute those commands now instead of each shortcut having its own completely separate logic. whichhhhh also meant I could use those exact same commands from other places… SHORTCUT MENU I did the thing yep! i made the menu There is a shortcuts overlay now that shows the shortcuts for tabs, panes, navigation and other terminal commands. So I no longer need to remember ANYTHING to summon the features. very useful considering this project now has TOOOO MANY CONTROLS COMMAND PALETTE There is also a searchable command palette now. So when you open it and start typing it, it would filter out the available aster commands. Then you can select any one command you like and execute it just by clicking enter ASTER HAS : COMMANDS ok my absolute favourite feature. If you just type : in a fresh terminal input, Aster would intercept and open its OWN COMMAND LINE AHGHHHH. I can now do things like :themes , :monitor, :shortcuts and these are SPECIFICALLY aster command, not for powershell BTW IT ALSO HAS AUTOCOMPLETE when you click tab after you typed some of your commands out. A BUNCH MORE THEMES I have been planning this for too long and NOW THEY EXIST Now Aster has themes like: stardance, nebula, sunshine, mono and you can change them in the shortcuts command line. NEXTTTT Aster is much much closer to where I wanted it to be. I only want some more patches here and there for this iteration of this project FOR THE FINAL STRETCH: Polish the Monitor Make the process killing a bit more safer Polish the theme and command UI Hunt down bugs and make everything feel finished AND THENNNNN ASTER IS DONE (for now)"}, {"post_id": 74299, "ts": "2026-09-27T04:33:19Z", "hours": 9.6747, "text": "Devlog-5 soooooo last devlog, I said I wanted to add some uniquely dedicated panes, something specific like something that could monitor RAM and memory while I was working. … I may have gotten a little too further in that… like a 10 hours too further SO ALL PANES WONT JUST BE TERMINALS Originally every pane in Aster was fundamentally a terminal. That did work just fine, but I wanted something more cause i like torturing myself… and I refactored the pane’s architecture. Instead of a pane directly holding a terminal, panes can now be different types using a rust enum called PaneKind So, a pane is just like a container and anything in it can be different and it took a longggg longggg time to change all the code for this, but i can add SOOO many more stuff cause of this (i will tease them in the coming up section) System Monitor and then i just accidentally made my first specific pane Ctrl+Shift+M now splits the current pane and opens up a super live System Monitor and it displays CPU usage, Memory usage, Disk usage, Network activity, System uptime, Running processes. Both the CPU and memory have cute little bars. (they use sysinfo to update btw) Process List & Process Inspector and Terminator You can select a process and pressing I or Enter to open up a specific process inspector and it shows the process specific stuff like specific things like name, pid, cpu usage and memory usage. and esc or q can get u out of the specific process. You can kill processes now! just by pressing k in the specific process inspector and saying yes to a confirmation. Though the kill still uses the stored pid, finds the corresponding process through sysinfo and it would request the OS terminate it. (I may have killed Aster… with Aster…) Originally I was just going to show the top five processes anddddd that lasted exactly one run, because I couldnt kill a process as it kept shifting as the cpu usage kept changing. So, i made it so u can see all the processes NEXT While making Aster I realised that WINDOWS TERMINAL ALREADY HAVE A LOT OF THE THINGS I WANTED. SO i am changing directions: instead of making aster just another customizable terminal, i want it to be more of a terminal-centered around developer workspace. SO THIS IS THE FIRST STEP. Next, i want a shortcuts command to show all the shortcuts cause i myself am starting to forget everything. AI Agent monitor so you can see what your agents are doing meanwhile u work. AND yes i need to make the themes… and fix the bugs…"}, {"post_id": 72954, "ts": "2026-09-24T03:18:54Z", "hours": 8.6644, "text": "Devlog-4! So last time, we were done with vertical panes, being able to have multiple tabs and plenty of shortcut keys to move through the tabs, cursor and panes much quicker. PANE STUFF I first added borders to each individual pane because it became visually messy without them and the ability to be able to resize the panes because some panes are more important than the other, obvi. I did the resizing using a regular hand dragging motion and using some simple math using the old width and height and the current hand grabbing motion’s position to calculate the new position of the panes. Switching between panes have become much easier with its own shortcuts: ctrl + shift + (any arrow keys) to move between them. Apparently this was called spatial navigation when I was researching abt it. TEXT SELECTION!!! I did add text selection and copy and paste, because I got sick and tired of having to test some long and painful commands by hand, instead of just copy-pasting it from the internet. Paste => Ctrl + Shift + V and to copy just select the text by hovering over the text, and click and drag the text and Copy => Ctrl + C Added a much more accurate scrollback to retrieve your terminal commands from even before you opened aster. SEARCH UR STUFF you can now also search whatever previous commands you typed into using Ctrl + Shift + F. Yes, I did make it run ASTER aster Aster 100 times to test search😭 so it will do the regular selection point from the start to end of the search terms and show the amount of times it has appeared in the terminal it is just a super simple for loop searching for the particular search terms and the thing is rust is fast as hell, even if there are 10000 instances, rust is super fast just like c++… i have a feeling i fell out of love with java and found someone new Moving on by the next devlog, I want to add some uniquely dedicated panes, maybe a pane that would monitor the RAM and memory usage on the side while you are working on your main pane or even a AI agent pane that would update on the progress of your AI agents. I also want to add a lot more themes, and just make the core template aesthetically pleasing while retaining its bare personality. (and fix the bugs… i have too much of them."}, {"post_id": 70885, "ts": "2026-09-19T23:16:46Z", "hours": 9.8094, "text": "Devlog-3 OKAY ASTER IS ACTUALLY BECOMING A TERMINAL NOW Last devlog I finally had the terminal grid rendering, the cursor moving around, and text actually showing up on screen. Which meant obviously the next reasonable step was: MAKE EVERYTHING INTERACTIVE. and then somehow I ended up making a multiplexer too. ⸻ SCROLLINGGGG First I added scrolling. Once the terminal reaches the bottom of the screen, I obviously can’t just let the cursor continue its journey into the void. So now when Aster runs out of rows, the existing terminal content can scroll upward to make space for the next line. I also started keeping the older lines around so I can move through terminal history instead of everything disappearing the second it leaves the visible grid. ⸻ KEYBOARD INPUT THENNN I started making the terminal properly interactive. I added keyboard handling for normal typing, backspace, and special keys. Arrow keys now work too: Up Down Left Right which is important because PowerShell needs those actual key sequences for things like moving around your input and navigating command history. It is VERY satisfying being able to actually type and edit commands inside the terminal I MADE. ⸻ AND THEN I DECIDED ONE TERMINAL WASN’T ENOUGH This is supposed to be a terminal emulator AND multiplexer. SOOOO… TABS. Aster can now have multiple terminal sessions open in the same window. I added shortcuts for creating tabs, switching between them, and closing them. Each tab has its own terminal session, so I can jump between completely separate terminals without opening another Aster window. THIS WAS THE POINT WHERE IT STARTED FEELING LIKE AN ACTUAL APPLICATION. ⸻ BUT APPARENTLY TABS WERE ALSO NOT ENOUGH I STARTED THE MULTIPLEXER. Now a tab can be split into multiple panes so I can have two or more terminals visible at the SAME TIME. Instead of just storing a list of panes, I started representing the layout like a TREE. A node can either be: an actual terminal pane OR a split containing more nodes which means those splits can contain MORE splits. ⸻ RUST UPDATE I am learning an unreasonable amount of Rust from this. Especially ownership and borrowing because now I have tabs containing pane trees containing terminals containing state and Rust would VERY MUCH like to know exactly who owns all of it. Honestly though, it is starting to click. ⸻ ASTER NOW HAS terminal rendering cursor movement scrolling scrollback keyboard input backspace/editing arrow keys multiple tabs multiple terminal sessions split panes recursive pane layouts which is SLIGHTLY more than the suspicious Vec I had a couple devlogs ago. ⸻ NEXTTTT Now that the basic multiplexer exists, I want to make actually USING all these panes feel good. So next: better pane navigation resizing mouse interactions more terminal behavior and inevitably fixing whatever horrifying bugs I have created by making terminals recursively multiply"}, {"post_id": 67738, "ts": "2026-09-13T23:27:08Z", "hours": 3.7961, "text": "Devlog-2 ASTER IS STARTING TO ACTUALLY LOOK LIKE A TERMINAL Last time I had the basic terminal state working, where every character on the screen is stored as a Cell inside a flat Vec. Which is cool and all… but a Vec full of letters is not particularly useful if I cannot actually SEE ANYTHING. SOOO I started working on actually rendering the terminal. ⸻ THE TERMINAL GRID Each cell stores a character and its formatting, and Aster converts an (x, y) position into the correct place in the Vec using: y * width + x So instead of having a giant 2D structure, the terminal screen is basically one long array that Aster interprets as rows and columns. Then the renderer can go through those cells and figure out where each character belongs on the screen. AND IT ACTUALLY DISPLAYS TEXT NOW. ⸻ CURSORRRR I also needed Aster to know where the next character should go. So the terminal keeps track of a cursor position. When a character is written, it gets placed into the cell at the cursor, then the cursor moves forward. When it reaches the end of a line, Aster can move down to the next one. Which sounds extremely obvious until you’re the one who has to tell the rectangle how typing works. ⸻ NEWLINES Then I worked on newline behavior. Instead of just throwing characters into the grid forever, Aster needs to understand when to move to another row and what should happen once the cursor reaches the bottom. This is where it started feeling less like “I rendered some text in a Rust window” and more like I was actually building terminal behavior. ⸻ RUST IS ALSO TRYING TO FIGHT ME Since this is my first actual Rust project, I am learning a LOT of Rust while building this. Ownership and borrowing are starting to make more sense, and I’m using structs/enums way more naturally now. The borrow checker and I still have disagreements. I usually lose. ⸻ NEXTTTT Now that Aster has an actual terminal grid, rendering, cursor movement, and basic writing behavior, I want to make it properly interactive. Next up: scrolling keyboard input editing text arrow keys backspace and eventually MULTIPLE TERMINALS because apparently building one terminal was not enough."}, {"post_id": 64426, "ts": "2026-09-08T19:55:04Z", "hours": 1.5822, "text": "Devlog-1 SOOOO I STARTED ASTER A fully customizable terminal emulator + multiplexer written in Rust. and this is also my first actual Rust project. because apparently I looked at Rust and thought the appropriate beginner project was a TERMINAL EMULATOR. I have done a little bit of Rust before, so I am not going in COMPLETELY blind, but I definitely had to dust up on things like borrowing, ownership, structs and enums before I could actually start building this. ⸻ OK BUT WHAT EVEN IS ASTER The goal with Aster is to build my own terminal emulator that I can customize however I want, while also having multiplexer features so I can eventually have multiple terminal sessions, tabs and split panes inside the same window. But before I can have all the cool multiplexer stuff… I need an actual terminal. SO THAT’S WHERE I STARTED. ⸻ THE CELL The first thing I made was a Cell. Basically every single character you see inside a terminal needs somewhere to exist. So instead of thinking of the terminal as one giant string of text, I’m treating it as a grid of individual cells. Each Cell can store a character and information about how that character should be formatted. So if Aster wants to display something like: hello that’s actually five separate cells containing: h e l l o which is weirdly fun to think about. ⸻ THE TERMINAL GRID Then I needed somewhere to store ALL of those cells. I could’ve represented the screen as a 2D structure, but instead I made the terminal grid using one flat Vec. So even though I think about the terminal as: (x, y) the actual data is stored in one long array. To find the correct cell, I convert the coordinates into an index using: y * width + x So if I know the terminal width and the (x, y) coordinate, I know EXACTLY which cell inside the Vec I need. This is basically the foundation for the entire terminal screen. ⸻ AND THEN THE GUI Once I had the terminal state starting to exist, I started working on the GUI. Because having a beautiful Vec full of characters somewhere in memory is great and all… BUT I WOULD LIKE TO ACTUALLY SEE MY TERMINAL. The next step is getting those cells onto the screen and making Aster actually behave like a terminal instead of just being a suspicious Rust data structure. ⸻ RUST SO FAR I am already getting WAY more comfortable with Rust from this. I already was too, because of C++ I understood what borrowing was before this project, but there is a very large difference between reading about borrowing and having the Rust compiler personally inform you that your plans are unacceptable. Enums are also starting to make a lot more sense now that I’m actually using them for something instead of learning them in isolation."}]...
|
Title: Aster by @srithimahi | Stardance
Devlogs:
Title: Aster by @srithimahi | Stardance
Devlogs:
Devlog-1 SOOOO I STARTED ASTER A fully customizable terminal emulator + multiplexer written in Rust. and this is also my first actual Rust project. because apparently I looked at Rust and thought the appropriate beginner project was a TERMINAL EMULATOR. I have done a little bit of Rust before, so I am not going in COMPLETELY blind, but I definitely had to dust up on things like borrowing, ownership, structs and enums before I could actually start building this. ⸻ OK BUT WHAT EVEN IS ASTER The goal with Aster is to build my own terminal emulator that I can customize however I want, while also having multiplexer features so I can eventually have multiple terminal sessions, tabs and split panes inside the same window. But before I can have all the cool multiplexer stuff… I need an actual terminal. SO THAT’S WHERE I STARTED. ⸻ THE CELL The first thing I made was a Cell. Basically every single character you see inside a terminal needs somewhere to exist. So instead of thinking of the terminal as one giant string of text, I’m treating it as a grid of individual cells. Each Cell can store a character and information about how that character should be formatted. So if Aster wants to display something like: hello that’s actually five separate cells containing: h e l l o which is weirdly fun to think about. ⸻ THE TERMINAL GRID Then I needed somewhere to store ALL of those cells. I could’ve represented the screen as a 2D structure, but instead I made the terminal grid using one flat Vec. So even though I think about the terminal as: (x, y) the actual data is stored in one long array. To find the correct cell, I convert the coordinates into an index using: y * width + x So if I know the terminal width and the (x, y) coordinate, I know EXACTLY which cell inside the Vec I need. This is basically the foundation for the entire terminal screen. ⸻ AND THEN THE GUI Once I had the terminal state starting to exist, I started working on the GUI. Because having a beautiful Vec full of characters somewhere in memory is great and all… BUT I WOULD LIKE TO ACTUALLY SEE MY TERMINAL. The next step is getting those cells onto the screen and making Aster actually behave like a terminal instead of just being a suspicious Rust data structure. ⸻ RUST SO FAR I am already getting WAY more comfortable with Rust from this. I already was too, because of C++ I understood what borrowing was before this project, but there is a very large difference between reading about borrowing and having the Rust compiler personally inform you that your plans are unacceptable. Enums are also starting to make a lot more sense now that I’m actually using them for something instead of learning them in isolation.
Devlog-2 ASTER IS STARTING TO ACTUALLY LOOK LIKE A TERMINAL Last time I had the basic terminal state working, where every character on the screen is stored as a Cell inside a flat Vec. Which is cool and all… but a Vec full of letters is not particularly useful if I cannot actually SEE ANYTHING. SOOO I started working on actually rendering the terminal. ⸻ THE TERMINAL GRID Each cell stores a character and its formatting, and Aster converts an (x, y) position into the correct place in the Vec using: y * width + x So instead of having a giant 2D structure, the terminal screen is basically one long array that Aster interprets as rows and columns. Then the renderer can go through those cells and figure out where each character belongs on the screen. AND IT ACTUALLY DISPLAYS TEXT NOW. ⸻ CURSORRRR I also needed Aster to know where the next character should go. So the terminal keeps track of a cursor position. When a character is written, it gets placed into the cell at the cursor, then the cursor moves forward. When it reaches the end of a line, Aster can move down to the next one. Which sounds extremely obvious until you’re the one who has to tell the rectangle how typing works. ⸻ NEWLINES Then I worked on newline behavior. Instead of just throwing characters into the grid forever, Aster needs to understand when to move to another row and what should happen once the cursor reaches the bottom. This is where it started feeling less like “I rendered some text in a Rust window” and more like I was actually building terminal behavior. ⸻ RUST IS ALSO TRYING TO FIGHT ME Since this is my first actual Rust project, I am learning a LOT of Rust while building this. Ownership and borrowing are starting to make more sense, and I’m using structs/enums way more naturally now. The borrow checker and I still have disagreements. I usually lose. ⸻ NEXTTTT Now that Aster has an actual terminal grid, rendering, cursor movement, and basic writing behavior, I want to make it properly interactive. Next up: scrolling keyboard input editing text arrow keys backspace and eventually MULTIPLE TERMINALS because apparently building one terminal was not enough.
Devlog-3 OKAY ASTER IS ACTUALLY BECOMING A TERMINAL NOW Last devlog I finally had the terminal grid rendering, the cursor moving around, and text actually showing up on screen. Which meant obviously the next reasonable step was: MAKE EVERYTHING INTERACTIVE. and then somehow I ended up making a multiplexer too. ⸻ SCROLLINGGGG First I added scrolling. Once the terminal reaches the bottom of the screen, I obviously can’t just let the cursor continue its journey into the void. So now when Aster runs out of rows, the existing terminal content can scroll upward to make space for the next line. I also started keeping the older lines around so I can move through terminal history instead of everything disappearing the second it leaves the visible grid. ⸻ KEYBOARD INPUT THENNN I started making the terminal properly interactive. I added keyboard handling for normal typing, backspace, and special keys. Arrow keys now work too: Up Down Left Right which is important because PowerShell needs those actual key sequences for things like moving around your input and navigating command history. It is VERY satisfying being able to actually type and edit commands inside the terminal I MADE. ⸻ AND THEN I DECIDED ONE TERMINAL WASN’T ENOUGH This is supposed to be a terminal emulator AND multiplexer. SOOOO… TABS. Aster can now have multiple terminal sessions open in the same window. I added shortcuts for creating tabs, switching between them, and closing them. Each tab has its own terminal session, so I can jump between completely separate terminals without opening another Aster window. THIS WAS THE POINT WHERE IT STARTED FEELING LIKE AN ACTUAL APPLICATION. ⸻ BUT APPARENTLY TABS WERE ALSO NOT ENOUGH I STARTED THE MULTIPLEXER. Now a tab can be split into multiple panes so I can have two or more terminals visible at the SAME TIME. Instead of just storing a list of panes, I started representing the layout like a TREE. A node can either be: an actual terminal pane OR a split containing more nodes which means those splits can contain MORE splits. ⸻ RUST UPDATE I am learning an unreasonable amount of Rust from this. Especially ownership and borrowing because now I have tabs containing pane trees containing terminals containing state and Rust would VERY MUCH like to know exactly who owns all of it. Honestly though, it is starting to click. ⸻ ASTER NOW HAS terminal rendering cursor movement scrolling scrollback keyboard input backspace/editing arrow keys multiple tabs multiple terminal sessions split panes recursive pane layouts which is SLIGHTLY more than the suspicious Vec I had a couple devlogs ago. ⸻ NEXTTTT Now that the basic multiplexer exists, I want to make actually USING all these panes feel good. So next: better pane navigation resizing mouse interactions more terminal behavior and inevitably fixing whatever horrifying bugs I have created by making terminals recursively multiply
Devlog-4! So last time, we were done with vertical panes, being able to have multiple tabs and plenty of shortcut keys to move through the tabs, cursor and panes much quicker. PANE STUFF I first added borders to each individual pane because it became visually messy without them and the ability to be able to resize the panes because some panes are more important than the other, obvi. I did the resizing using a regular hand dragging motion and using some simple math using the old width and height and the current hand grabbing motion’s position to calculate the new position of the panes. Switching between panes have become much easier with its own shortcuts: ctrl + shift + (any arrow keys) to move between them. Apparently this was called spatial navigation when I was researching abt it. TEXT SELECTION!!! I did add text selection and copy and paste, because I got sick and tired of having to test some long and painful commands by hand, instead of just copy-pasting it from the internet. Paste => Ctrl + Shift + V and to copy just select the text by hovering over the text, and click and drag the text and Copy => Ctrl + C Added a much more accurate scrollback to retrieve your terminal commands from even before you opened aster. SEARCH UR STUFF you can now also search whatever previous commands you typed into using Ctrl + Shift + F. Yes, I did make it run ASTER aster Aster 100 times to test search😭 so it will do the regular selection point from the start to end of the search terms and show the amount of times it has appeared in the terminal it is just a super simple for loop searching for the particular search terms and the thing is rust is fast as hell, even if there are 10000 instances, rust is super fast just like c++… i have a feeling i fell out of love with java and found someone new Moving on by the next devlog, I want to add some uniquely dedicated panes, maybe a pane that would monitor the RAM and memory usage on the side while you are working on your main pane or even a AI agent pane that would update on the progress of your AI agents. I also want to add a lot more themes, and just make the core template aesthetically pleasing while retaining its bare personality. (and fix the bugs… i have too much of them.
Devlog-5 soooooo last devlog, I said I wanted to add some uniquely dedicated panes, something specific like something that could monitor RAM and memory while I was working. … I may have gotten a little too further in that… like a 10 hours too further SO ALL PANES WONT JUST BE TERMINALS Originally every pane in Aster was fundamentally a terminal. That did work just fine, but I wanted something more cause i like torturing myself… and I refactored the pane’s architecture. Instead of a pane directly holding a terminal, panes can now be different types using a rust enum called PaneKind So, a pane is just like a container and anything in it can be different and it took a longggg longggg time to change all the code for this, but i can add SOOO many more stuff cause of this (i will tease them in the coming up section) System Monitor and then i just accidentally made my first specific pane Ctrl+Shift+M now splits the current pane and opens up a super live System Monitor and it displays CPU usage, Memory usage, Disk usage, Network activity, System uptime, Running processes. Both the CPU and memory have cute little bars. (they use sysinfo to update btw) Process List & Process Inspector and Terminator You can select a process and pressing I or Enter to open up a specific process inspector and it shows the process specific stuff like specific things like name, pid, cpu usage and memory usage. and esc or q can get u out of the specific process. You can kill processes now! just by pressing k in the specific process inspector and saying yes to a confirmation. Though the kill still uses the stored pid, finds the corresponding process through sysinfo and it would request the OS terminate it. (I may have killed Aster… with Aster…) Originally I was just going to show the top five processes anddddd that lasted exactly one run, because I couldnt kill a process as it kept shifting as the cpu usage kept changing. So, i made it so u can see all the processes NEXT While making Aster I realised that WINDOWS TERMINAL ALREADY HAVE A LOT OF THE THINGS I WANTED. SO i am changing directions: instead of making aster just another customizable terminal, i want it to be more of a terminal-centered around developer workspace. SO THIS IS THE FIRST STEP. Next, i want a shortcuts command to show all the shortcuts cause i myself am starting to forget everything. AI Agent monitor so you can see what your agents are doing meanwhile u work. AND yes i need to make the themes… and fix the bugs…
Devlog-6 in the last devlog I ended by saying “Next I want a shortcuts command to show all the shortcuts cause I am STARTING TO FORGET EVERYTHING” …yeahhhh, i made that and an entire command system Aster has COMMANDSSSSS Before this, every action was linked to a keyboard shortcut. That was a mildly questionable. SO i made shortcuts for tabs, panes, zooming, focusing the panes, search, copy, paste, opening the system monitor, blah blah and I was reaching the point where I MADE THE TERMINAL AND EVEN I COULDN’T REMEMBER HOW TO USE IT. So instead of having all those actions just scattered around the keyboard handling code part, so I made a command system So things like NewTab, CloseTab, SplitVertical, SplitHorizontal, and much more are now commands The keyboard shortcuts just execute those commands now instead of each shortcut having its own completely separate logic. whichhhhh also meant I could use those exact same commands from other places… SHORTCUT MENU I did the thing yep! i made the menu There is a shortcuts overlay now that shows the shortcuts for tabs, panes, navigation and other terminal commands. So I no longer need to remember ANYTHING to summon the features. very useful considering this project now has TOOOO MANY CONTROLS COMMAND PALETTE There is also a searchable command palette now. So when you open it and start typing it, it would filter out the available aster commands. Then you can select any one command you like and execute it just by clicking enter ASTER HAS : COMMANDS ok my absolute favourite feature. If you just type : in a fresh terminal input, Aster would intercept and open its OWN COMMAND LINE AHGHHHH. I can now do things like :themes , :monitor, :shortcuts and these are SPECIFICALLY aster command, not for powershell BTW IT ALSO HAS AUTOCOMPLETE when you click tab after you typed some of your commands out. A BUNCH MORE THEMES I have been planning this for too long and NOW THEY EXIST Now Aster has themes like: stardance, nebula, sunshine, mono and you can change them in the shortcuts command line. NEXTTTT Aster is much much closer to where I wanted it to be. I only want some more patches here and there for this iteration of this project FOR THE FINAL STRETCH: Polish the Monitor Make the process killing a bit more safer Polish the theme and command UI Hunt down bugs and make everything feel finished AND THENNNNN ASTER IS DONE (for now)
Devlog-7 in the last devlog I said: “AND THENNNNN ASTER IS DONE (for now)” WELLLLLL I DID IT. ASTER IS DONEEEEEEEEE but obviously not before it found 700 new ways to break. THE SYSTEM MONITOR GOT AN UPGRADEEEE The process list is actually useful now instead of being a giant wall of processes. I added process filtering! Press / , type a process name or PID, and Aster filters the list live. You can select a process, inspect it, and kill it. which led to the realization that perhaps my terminal should not casually murder processes with no confirmation. SOOO process killing now has a confirmation screen AND Aster prevents itself from killing its own process. no Aster-on-Aster violence allowed. COMMANDS GOT BETTERRRR The : command system got more polish! It now has command history with the up/down arrows, autocomplete got improved, and themes now support things like: :theme next :theme previous Aster also keeps track of the currently active theme. AND themes are dynamic now! Aster discovers .toml files from the themes/ folder instead of having every theme hardcoded. The final themes are Stardance, Nebula, Sunshine, and Mono. TAB NAMES + TEXT SELECTION Tabs can now have their own names!! I also polished text selection so the mouse becomes a text cursor only when you’re actually hovering over terminal text, and clicking random empty space doesn’t create a mysterious selection from the void. tiny details but they make Aster feel SO much more finished. THE FOREHEAD oh my god. When I resized Aster vertically, sometimes a giant empty region appeared ABOVE all the terminal content. BUT I FIXED IT SO IM DONE FINAL CLEANUP I deleted all the debugging stuff that accumulated while I was fighting these bugs, including my PTY byte debugger. I also discovered a ReloadConfig command that did absolutely nothing except print: Config reload coming next yeahhhhh that got removed. NO FAKE FEATURES ALLOWED. AND THEN THE SCARIEST TEST I pushed everything. Made a completely fresh clone of the GitHub repo. Ran: cargo run --release AND IT WORKED. fonts worked. themes worked. terminal worked. everything launched from the clean clone. SO IT’S NOT JUST WORKING BECAUSE MY COMPUTER HAS DEVELOPED A PERSONAL RELATIONSHIP WITH THE CODEBASE. ASTER IS DONEEEEE I started this project thinking: “wait terminals are cool, what if I make one” while knowing basically no Rust. and somehow ended up learning SOOOOO much Aster started as a terminal emulator + multiplexer and slowly became a terminal-centered developer workspace. There are SO MANY directions I could take it later. BUT NOT TODAY. because if I add another feature I will never ship this thing. NEXTTTT ASTER IS GETTING SHIPPED. I MADE A TERMINAL WHAT THE HELL
Ships:
ASTER IS DONEEEEE I MADE A TERMINAL. IN RUST. SOMEHOW. Aster is a custom terminal emulator + multiplexer I built basically from scratch while learning Rust. It started with me wondering what actually happens underneath a terminal. Then I learned that a terminal is NOT the shell, discovered PTYs and ANSI escape sequences, built my own terminal grid/parser/renderer, and accidentally entered one of the deepest rabbit holes of my life. Aster now has: PTY-backed PowerShell sessions ANSI/VT parsing + custom terminal rendering tabs and recursive split panes draggable pane resizing + zooming text selection, clipboard, scrollback and search dynamic pane/tab titles a built-in System Monitor process filtering, inspection and safe process killing Aster’s own : command system searchable command palette + shortcuts menu command history + autocomplete runtime themes dynamic theme discovery Stardance, Nebula, Sunshine and Mono themes The coolest architectural change happened when I realized panes didn’t have to contain terminals. I refactored Aster so panes can contain different tools, which is how the System Monitor became a first-class pane. That turned Aster from just a terminal + multiplexer into the beginning of a terminal-centered developer workspace. And OH MY GOD THE BUGS. I had ghost characters because I hadn’t implemented ANSI ECH. ConPTY and my terminal disagreed about their dimensions. I started this project knowing basically no Rust and ended up learning about ownership, PTYs, ANSI/VT sequences, terminal state machines, recursive pane trees, rendering, process management, terminal geometry, and how unbelievably complicated the rectangle I type commands into actually is. For the final test, I cloned Aster into a completely fresh directory and ran: cargo run --release AND IT WORKED. SO YAYYYYYY!!!!...
|
1793965638.4823945
|
1794052038.4823945
|
|
70416
|
clicksy by @srithimahi | Stardance
|
srithimahi
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: clicksy by @srithimahi | Stardance
|
1793620620.5064468
|
1794225420.5064468
|
|
72246
|
My very own WebOS by @srithanreddyvallela | Starda My very own WebOS by @srithanreddyvallela | Stardance...
|
srithanreddyvallela
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My very own WebOS by @srithanreddyvallela | Title: My very own WebOS by @srithanreddyvallela | Stardance...
|
1793432839.1571891
|
1794037639.1571891
|
|
23897
|
My very own WebOS by @sritan | Stardance
|
sritan
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My very own WebOS by @sritan | Stardance
|
1793480129.5613503
|
1794084929.5613503
|
|
62629
|
coding my robot by @sritan | Stardance
|
sritan
|
0
|
8.6
|
0
|
[]
|
[{"post_id": 69367, "ts": "202 [{"post_id": 69367, "ts": "2026-09-16T22:13:44Z", "hours": 8.5953, "text": "I am currently tuning the values in my project."}]...
|
Title: coding my robot by @sritan | Stardance
Dev Title: coding my robot by @sritan | Stardance
Devlogs:
I am currently tuning the values in my project....
|
1793656339.0446417
|
1794261139.0446417
|
|
62961
|
My own keypad by @sritan | Stardance
|
sritan
|
0
|
4.02
|
0
|
[]
|
[{"post_id": 70338, "ts": "202 [{"post_id": 70338, "ts": "2026-09-18T23:56:58Z", "hours": 0.5447, "text": "I downloaded qmk software but i am confused on how to edit it."}, {"post_id": 69889, "ts": "2026-09-18T00:39:23Z", "hours": 1.0983, "text": "I made my case for the hackpad that i am making. (no holes on top as i will hot glue it on)"}, {"post_id": 69870, "ts": "2026-09-17T23:26:28Z", "hours": 0.4303, "text": "I added mounting holes and made my wires thicker. If anyone knows how to add text pls tell me in the comments"}, {"post_id": 69489, "ts": "2026-09-17T04:44:33Z", "hours": 0.5019, "text": "I added a 4th key to my hackpad!"}, {"post_id": 69405, "ts": "2026-09-17T00:03:48Z", "hours": 1.4444, "text": "I made my very own pcb!"}]...
|
Title: My own keypad by @sritan | Stardance
Devlo Title: My own keypad by @sritan | Stardance
Devlogs:
I made my very own pcb!
I added a 4th key to my hackpad!
I added mounting holes and made my wires thicker. If anyone knows how to add text pls tell me in the comments
I made my case for the hackpad that i am making. (no holes on top as i will hot glue it on)
I downloaded qmk software but i am confused on how to edit it....
|
1793659713.3762414
|
1794264513.3762414
|
|
21198
|
My awesome macropad! by @srishtyconstellation7 | S My awesome macropad! by @srishtyconstellation7 | Stardance...
|
srishtyconstellation7
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My awesome macropad! by @srishtyconstellati Title: My awesome macropad! by @srishtyconstellation7 | Stardance...
|
1793836144.568068
|
1794440944.568068
|
|
4479
|
Srishti's Slack Bot! by @srishtipurohit | Star Srishti's Slack Bot! by @srishtipurohit | Stardance...
|
srishtipurohit
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Srishti's Slack Bot! by @srishtipurohit Title: Srishti's Slack Bot! by @srishtipurohit | Stardance...
|
1793494344.1378736
|
1794099144.1378736
|
|
35100
|
Untitled by @srishtipurohit | Stardance
|
srishtipurohit
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Untitled by @srishtipurohit | Stardance
|
1793404389.164302
|
1794009189.164302
|
|
41051
|
Srishti's Portfolio by @srishtipurohit | Stard Srishti's Portfolio by @srishtipurohit | Stardance...
|
srishtipurohit
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Srishti's Portfolio by @srishtipurohit Title: Srishti's Portfolio by @srishtipurohit | Stardance...
|
1793540850.0255883
|
1794145650.0255883
|
|
55450
|
WarioWare Game by @srisantxz | Stardance
|
srisantxz
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: WarioWare Game by @srisantxz | Stardance
|
1793821790.3054767
|
1794426590.3054767
|
|
11389
|
My awesome macropad! by @srisailaasyamadala | Star My awesome macropad! by @srisailaasyamadala | Stardance...
|
srisailaasyamadala
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My awesome macropad! by @srisailaasyamadala Title: My awesome macropad! by @srisailaasyamadala | Stardance...
|
1793303317.2106814
|
1793908117.2106814
|
|
38012
|
Untitled project by @sriramteja_yerneni | Stardanc Untitled project by @sriramteja_yerneni | Stardance...
|
sriramteja_yerneni
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Untitled project by @sriramteja_yerneni | S Title: Untitled project by @sriramteja_yerneni | Stardance...
|
1793451228.6744926
|
1794056028.6744926
|
|
65713
|
My own site! by @sriramssb | Stardance
|
sriramssb
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My own site! by @sriramssb | Stardance
|
1793703395.5437336
|
1794308195.5437336
|
|
33911
|
Untitled project by @sriramrnaircr7 | Stardance
|
sriramrnaircr7
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Untitled project by @sriramrnaircr7 | Stard Title: Untitled project by @sriramrnaircr7 | Stardance...
|
1793274466.8789093
|
1793879266.8789093
|
|
49164
|
chopped ahh by @sriramm | Stardance
|
sriramm
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: chopped ahh by @sriramm | Stardance
|
1793267584.0958562
|
1793872384.0958562
|
|
57968
|
My own site! by @sriramb0102 | Stardance
|
sriramb0102
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My own site! by @sriramb0102 | Stardance
|
1793465493.0190022
|
1794070293.0190022
|
|
57994
|
S.T.A.L.K.E.R.-clocker by @sriramb0102 | Stardance
|
sriramb0102
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: S.T.A.L.K.E.R.-clocker by @sriramb0102 | St Title: S.T.A.L.K.E.R.-clocker by @sriramb0102 | Stardance...
|
1793465527.8693905
|
1794070327.8693905
|
|
6429
|
A java Tower Defense Game by @sriram_madamanchi | A java Tower Defense Game by @sriram_madamanchi | Stardance...
|
sriram_madamanchi
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: A java Tower Defense Game by @sriram_madama Title: A java Tower Defense Game by @sriram_madamanchi | Stardance...
|
1793393272.1661348
|
1793998072.1661348
|
|
5946
|
My awesome macropad! by @sriram | Stardance
|
sriram
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My awesome macropad! by @sriram | Stardance
|
1793958968.4636264
|
1794563768.4636264
|
|
15791
|
AI by @sripandey0928 | Stardance
|
sripandey0928
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: AI by @sripandey0928 | Stardance
|
1793883172.0392373
|
1794487972.0392373
|
|
29173
|
My own site! by @sripad_katragadda | Stardance
|
sripad_katragadda
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My own site! by @sripad_katragadda | Starda Title: My own site! by @sripad_katragadda | Stardance...
|
1793922758.5328658
|
1794527558.5328658
|
|
29199
|
My awesome macropad! by @sripad_katragadda | Stard My awesome macropad! by @sripad_katragadda | Stardance...
|
sripad_katragadda
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My awesome macropad! by @sripad_katragadda Title: My awesome macropad! by @sripad_katragadda | Stardance...
|
1793292532.5360317
|
1793897332.5360317
|
|
30863
|
My very own WebOS by @sripad_katragadda | Stardanc My very own WebOS by @sripad_katragadda | Stardance...
|
sripad_katragadda
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My very own WebOS by @sripad_katragadda | S Title: My very own WebOS by @sripad_katragadda | Stardance...
|
1793775095.1654785
|
1794379895.1654785
|
|
39784
|
LeadScan by @sripad | Stardance
|
sripad
|
1
|
0.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-07-25T19:15:22Z", "hours": 0.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "What I Made Paste a domain, get back: founder names, founding year, tech stack, emails, hiring signals, revenue estimate, and a personalized cold email you can actually send. Works in 3 seconds. Free, no login. What Was Challenging Wikipedia wikitext templates are evil. {{Unbulleted list|a|b|c}} was leaking raw into the UI. Took forever to build a depth-aware parser that actually works. Also: small businesses hide their data (no /pricing page, phone buried in microdata), so I had to scrape sub-pages in parallel. What I’m Proud Of The conviction score actually works — high score means “this person will probably respond to cold email” because they have modern tech + they’re hiring + they have pricing. The AI outreach is solid too (not template garbage). Most: it works equally well for a dentist clinic and Stripe. How to Test It Go to leadscan-web.vercel.app/scan, paste a domain (try stripe.com or your competitor), wait 3 seconds. Click “Ask AI” to fill in missing founder names or revenue. Export to CSV. That’s it.", "repo": "https://github.com/nadellasripad11/leadscan-web", "demo": "https://leadscan-web.vercel.app"}]...
|
[{"post_id": 34769, "ts": "202 [{"post_id": 34769, "ts": "2026-07-25T19:12:02Z", "hours": 0.0475, "text": "I started with a simple website scraper, but it quickly became clear that it only worked well for tech startups. So I pivoted hard: I added parallel sub-page fetching for contact and about pages, built Wikipedia integration to pull founding data, and spent a lot of time fighting ugly wikitext template parsing bugs. I also expanded industry detection from 5 categories to 20+, which made the scans much more accurate across different kinds of businesses.The UI got a full redesign too, from something vibecoded into something much more editorial, with a dark hero section, Cormorant Garamond serif text, and electric blue accents. The most important addition was the “Ask AI” button: Groq’s llama-3.3-70b now fills in missing founders, revenue, and key products on demand, but only when clicked, so there’s no latency penalty during normal scans. After setting GROQ_API_KEY on Vercel and deploying to production, the project became a full intelligence tool that can generate detailed reports for both Stripe and local businesses. Ship the thing."}]...
|
Title: LeadScan by @sripad | Stardance
Devlogs:
I Title: LeadScan by @sripad | Stardance
Devlogs:
I started with a simple website scraper, but it quickly became clear that it only worked well for tech startups. So I pivoted hard: I added parallel sub-page fetching for contact and about pages, built Wikipedia integration to pull founding data, and spent a lot of time fighting ugly wikitext template parsing bugs. I also expanded industry detection from 5 categories to 20+, which made the scans much more accurate across different kinds of businesses.The UI got a full redesign too, from something vibecoded into something much more editorial, with a dark hero section, Cormorant Garamond serif text, and electric blue accents. The most important addition was the “Ask AI” button: Groq’s llama-3.3-70b now fills in missing founders, revenue, and key products on demand, but only when clicked, so there’s no latency penalty during normal scans. After setting GROQ_API_KEY on Vercel and deploying to production, the project became a full intelligence tool that can generate detailed reports for both Stripe and local businesses. Ship the thing.
Ships:
What I Made Paste a domain, get back: founder names, founding year, tech stack, emails, hiring signals, revenue estimate, and a personalized cold email you can actually send. Works in 3 seconds. Free, no login. What Was Challenging Wikipedia wikitext templates are evil. {{Unbulleted list|a|b|c}} was leaking raw into the UI. Took forever to build a depth-aware parser that actually works. Also: small businesses hide their data (no /pricing page, phone buried in microdata), so I had to scrape sub-pages in parallel. What I’m Proud Of The conviction score actually works — high score means “this person will probably respond to cold email” because they have modern tech + they’re hiring + they have pricing. The AI outreach is solid too (not template garbage). Most: it works equally well for a dentist clinic and Stripe. How to Test It Go to leadscan-web.vercel.app/scan, paste a domain (try stripe.com or your competitor), wait 3 seconds. Click “Ask AI” to fill in missing founder names or revenue. Export to CSV. That’s it....
|
1793775061.7385118
|
1794639061.7385118
|
|
59187
|
MY alarm clock by @sripad | Stardance
|
sripad
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: MY alarm clock by @sripad | Stardance
|
1793919092.4920876
|
1794783092.4920876
|
|
35436
|
Wi-Fi Signal Strength Meter by @srip41755 | Starda Wi-Fi Signal Strength Meter by @srip41755 | Stardance...
|
srip41755
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Wi-Fi Signal Strength Meter by @srip41755 | Title: Wi-Fi Signal Strength Meter by @srip41755 | Stardance...
|
1793303677.336427
|
1793908477.336427
|
|
18583
|
My awesome macropad! by @srip | Stardance
|
srip
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My awesome macropad! by @srip | Stardance
|
1793433129.5084438
|
1794037929.5084438
|
|
69242
|
Neon Breach: Guard Training by @srip | Stardance
|
srip
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Neon Breach: Guard Training by @srip | Star Title: Neon Breach: Guard Training by @srip | Stardance...
|
1793764076.0939293
|
1794368876.0939293
|
|
16283
|
Untitled project by @srinp131 | Stardance
|
srinp131
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Untitled project by @srinp131 | Stardance
|
1793519382.9347997
|
1794124182.9347997
|
|
10486
|
My awesome macropad! by @srinivasvardhancs8 | Star My awesome macropad! by @srinivasvardhancs8 | Stardance...
|
srinivasvardhancs8
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My awesome macropad! by @srinivasvardhancs8 Title: My awesome macropad! by @srinivasvardhancs8 | Stardance...
|
1793904471.367253
|
1794509271.367253
|
|
8093
|
My first slack bot! by @srinivasanikhithakonka | S My first slack bot! by @srinivasanikhithakonka | Stardance...
|
srinivasanikhithakonka
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My first slack bot! by @srinivasanikhithako Title: My first slack bot! by @srinivasanikhithakonka | Stardance...
|
1793516002.0796041
|
1794120802.0796041
|
|
387
|
InfinityAI by @srinivasa07 | Stardance
|
srinivasa07
|
1
|
28.56
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-07-04T22:37:13Z", "hours": 28.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I made InfinityAI, a website where you can log in and talk to an AI. It can remember things, upload files, help with code, use voice buttons, make AI agents, and make workflows. The hard part was making all the buttons and pages work together. To test it, make an account, chat, upload a file, save a memory, and try Jarvis.", "repo": "https://github.com/srinivasagudi0/InfinityAI--Intel", "demo": "https://infinityai-intel.vercel.app"}]...
|
[{"post_id": 33594, "ts": "202 [{"post_id": 33594, "ts": "2026-07-23T17:17:36Z", "hours": 0.5647, "text": "Finishing off"}, {"post_id": 22457, "ts": "2026-07-04T22:33:49Z", "hours": 28.2506, "text": "Forgot to devlog, sorry! But anyways, I built InfinityAI into a simple web app. I added: Login and signup Chat File uploads Memory Code help Voice buttons AI agents Workflows Jarvis Render hosting setup I also fixed the page tabs and UI bugs."}]...
|
Title: InfinityAI by @srinivasa07 | Stardance
Dev Title: InfinityAI by @srinivasa07 | Stardance
Devlogs:
Forgot to devlog, sorry! But anyways, I built InfinityAI into a simple web app. I added: Login and signup Chat File uploads Memory Code help Voice buttons AI agents Workflows Jarvis Render hosting setup I also fixed the page tabs and UI bugs.
Finishing off
Ships:
I made InfinityAI, a website where you can log in and talk to an AI. It can remember things, upload files, help with code, use voice buttons, make AI agents, and make workflows. The hard part was making all the buttons and pages work together. To test it, make an account, chat, upload a file, save a memory, and try Jarvis....
|
1793771586.7822785
|
1794635586.7822785
|
|
38744
|
InfinityAI -lite by @srinivasa07 | Stardance
|
srinivasa07
|
0
|
5.69
|
0
|
[]
|
[{"post_id": 33536, "ts": "202 [{"post_id": 33536, "ts": "2026-07-23T15:58:55Z", "hours": 5.6928, "text": "Today I completed InfinityAI, an AI-powered project that taught me a lot about building modern applications. When I started this project, my goal was simple: build something useful while learning how different AI technologies work together. Instead of only following tutorials, I wanted to create a real project from scratch and solve problems along the way. During development, I learned how to structure a larger codebase, integrate AI features, improve the user experience, and fix many unexpected bugs. Some issues took hours to solve, but each one helped me understand the project better. One of the biggest lessons I learned is that software development is not just about writing code. It is about debugging, testing, reading documentation, and improving the project step by step. Looking back, the project is much better than my first version. There are still many features I want to add, but I’m happy with how far it has come. What I learned: Building a complete AI application from start to finish. Organizing code into a maintainable project. Solving real-world development challenges. The importance of patience and continuous learning. This project has given me more confidence to build bigger and better applications in the future. You can check out the project here! attachment https://github.com/srinivasagudi0/InfinityAI/ Thanks for reading! If you have any suggestions or feedback, I’d love to hear them."}]...
|
Title: InfinityAI -lite by @srinivasa07 | Stardanc Title: InfinityAI -lite by @srinivasa07 | Stardance
Devlogs:
Today I completed InfinityAI, an AI-powered project that taught me a lot about building modern applications. When I started this project, my goal was simple: build something useful while learning how different AI technologies work together. Instead of only following tutorials, I wanted to create a real project from scratch and solve problems along the way. During development, I learned how to structure a larger codebase, integrate AI features, improve the user experience, and fix many unexpected bugs. Some issues took hours to solve, but each one helped me understand the project better. One of the biggest lessons I learned is that software development is not just about writing code. It is about debugging, testing, reading documentation, and improving the project step by step. Looking back, the project is much better than my first version. There are still many features I want to add, but I’m happy with how far it has come. What I learned: Building a complete AI application from start to finish. Organizing code into a maintainable project. Solving real-world development challenges. The importance of patience and continuous learning. This project has given me more confidence to build bigger and better applications in the future. You can check out the project here! attachment https://github.com/srinivasagudi0/InfinityAI/ Thanks for reading! If you have any suggestions or feedback, I’d love to hear them....
|
1793821705.7783751
|
1794685705.7783751
|
|
38796
|
DayMap by @srinivasa07 | Stardance
|
srinivasa07
|
1
|
6.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-07-26T18:02:57Z", "hours": 6.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I made a Day Planner app because I wanted an easy way to keep track of my daily tasks and stay organized. Sometimes I forget things, so I thought it would be fun to build something that could help me and other people plan their day. The hardest part was getting everything to work together and fixing bugs when things didn’t save or show up correctly. I also spent time making the app look clean and easy to use. I’m really happy that I finished a project that people can actually try, and I’d love for others to test it out and tell me what they like or what I can improve.", "repo": "https://github.com/srinivasagudi0/Day-Planner", "demo": "https://day-planner-blond.vercel.app"}]...
|
[{"post_id": 35352, "ts": "202 [{"post_id": 35352, "ts": "2026-07-26T17:59:05Z", "hours": 5.9753, "text": "I finally finished making DayMap, my daily planner app! I made it because I have lots of stuff to do, and sometimes it is hard to remember everything. DayMap helps me put all my tasks in one place and plan my day better. I built it using Python and Streamlit. You can add tasks, edit them, delete them, and mark them as completed. You can also choose the date, time, priority, and whether a task repeats every day or every week. One of my favorite features is quick add. You can type something like: “Do homework tomorrow at 5pm high priority” DayMap will understand the date, time, and priority by itself. It also shows if a task is overdue, due soon, for today, tomorrow, or later. I also added a completed tasks section, a daily schedule, and a database so the tasks can be saved. The app is basically done now, and I am really happy that I got it working. It has not been shipped yet because I still need to deploy it and make sure everything works online. This project taught me more about Python, Streamlit, databases, dates, times, and fixing bugs. Some parts were confusing, but it felt really good when they finally worked. Next, I need to: Deploy the app Test the online version Fix any last bugs Add the real app link DayMap is finished, but not shipped yet. Hopefully I can release it soon!"}]...
|
Title: DayMap by @srinivasa07 | Stardance
Devlogs Title: DayMap by @srinivasa07 | Stardance
Devlogs:
I finally finished making DayMap, my daily planner app! I made it because I have lots of stuff to do, and sometimes it is hard to remember everything. DayMap helps me put all my tasks in one place and plan my day better. I built it using Python and Streamlit. You can add tasks, edit them, delete them, and mark them as completed. You can also choose the date, time, priority, and whether a task repeats every day or every week. One of my favorite features is quick add. You can type something like: “Do homework tomorrow at 5pm high priority” DayMap will understand the date, time, and priority by itself. It also shows if a task is overdue, due soon, for today, tomorrow, or later. I also added a completed tasks section, a daily schedule, and a database so the tasks can be saved. The app is basically done now, and I am really happy that I got it working. It has not been shipped yet because I still need to deploy it and make sure everything works online. This project taught me more about Python, Streamlit, databases, dates, times, and fixing bugs. Some parts were confusing, but it felt really good when they finally worked. Next, I need to: Deploy the app Test the online version Fix any last bugs Add the real app link DayMap is finished, but not shipped yet. Hopefully I can release it soon!
Ships:
I made a Day Planner app because I wanted an easy way to keep track of my daily tasks and stay organized. Sometimes I forget things, so I thought it would be fun to build something that could help me and other people plan their day. The hardest part was getting everything to work together and fixing bugs when things didn’t save or show up correctly. I also spent time making the app look clean and easy to use. I’m really happy that I finished a project that people can actually try, and I’d love for others to test it out and tell me what they like or what I can improve....
|
1793811036.973796
|
1793897436.973796
|
|
51684
|
StarkOS web by @srinivasa07 | Stardance
|
srinivasa07
|
1
|
70.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-27T00:48:19Z", "hours": 70.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "This project was inspired from MCU and think it looks cool and Its an all in one dashboard", "repo": "https://github.com/srinivasagudi0/StarkOS-Web", "demo": "https://stark-os-web-eight.vercel.app/"}]...
|
[{"post_id": 50687, "ts": "202 [{"post_id": 50687, "ts": "2026-08-20T00:18:58Z", "hours": 70.1458, "text": "I am changing this project from another program and so here it is the finished product"}]...
|
Title: StarkOS web by @srinivasa07 | Stardance
De Title: StarkOS web by @srinivasa07 | Stardance
Devlogs:
I am changing this project from another program and so here it is the finished product
Ships:
This project was inspired from MCU and think it looks cool and Its an all in one dashboard...
|
1793771616.481871
|
1794635616.481871
|
|
70863
|
DayMap by @srinivasa07 | Stardance
|
srinivasa07
|
0
|
50.77
|
0
|
[]
|
[{"post_id": 81638, "ts": "202 [{"post_id": 81638, "ts": "2026-10-21T20:57:15Z", "hours": 50.765, "text": "I actually created this project for future, so I didn’t do devlogs but anyways here is how I Used it. I spent my time working on flask router and sql db, I had to create a SQLite tables to make sure nothing gets lost if you change a browser, I had to do task management about separating (overcome, today and upcoming ) and react interface with inputs, fetching flask and state handling. Connecting every button to the flask api. Future room using several things and a timer and I hade to do all this while fixing several bugs and with less than 10% ai usage"}]...
|
Title: DayMap by @srinivasa07 | Stardance
Devlogs Title: DayMap by @srinivasa07 | Stardance
Devlogs:
I actually created this project for future, so I didn’t do devlogs but anyways here is how I Used it. I spent my time working on flask router and sql db, I had to create a SQLite tables to make sure nothing gets lost if you change a browser, I had to do task management about separating (overcome, today and upcoming ) and react interface with inputs, fetching flask and state handling. Connecting every button to the flask api. Future room using several things and a timer and I hade to do all this while fixing several bugs and with less than 10% ai usage...
|
1793321767.2162104
|
1793926567.2162104
|
|
15609
|
Bullish view by @srinitin2009 | Stardance
|
srinitin2009
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Bullish view by @srinitin2009 | Stardance
|
1793238461.1673617
|
1793843261.1673617
|
|
19987
|
My very own WebOS by @srinithasmailbox | Stardance
|
srinithasmailbox
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My very own WebOS by @srinithasmailbox | St Title: My very own WebOS by @srinithasmailbox | Stardance...
|
1793501447.7069888
|
1794106247.7069888
|
|
3042
|
My first slack bot! by @srinikeshk | Stardance
|
srinikeshk
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My first slack bot! by @srinikeshk | Starda Title: My first slack bot! by @srinikeshk | Stardance...
|
1793566346.1836383
|
1794171146.1836383
|
|
43058
|
My own site! by @srinidhinandamuri | Stardance
|
srinidhinandamuri
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My own site! by @srinidhinandamuri | Starda Title: My own site! by @srinidhinandamuri | Stardance...
|
1793926650.1438515
|
1794531450.1438515
|
|
33243
|
My own site! by @srinidhi_nagunuri | Stardance
|
srinidhi_nagunuri
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My own site! by @srinidhi_nagunuri | Starda Title: My own site! by @srinidhi_nagunuri | Stardance...
|
1793289228.20123
|
1793894028.20123
|
|
70049
|
BLARE by @srinehaandluru | Stardance
|
srinehaandluru
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: BLARE by @srinehaandluru | Stardance
|
1793605774.270896
|
1794210574.270896
|
|
69593
|
My awesome macropad! by @srinavsingh | Stardance
|
srinavsingh
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My awesome macropad! by @srinavsingh | Star Title: My awesome macropad! by @srinavsingh | Stardance...
|
1793584328.2312899
|
1794189128.2312899
|
|
31228
|
My own site! by @srimudgal | Stardance
|
srimudgal
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My own site! by @srimudgal | Stardance
|
1793566574.4071105
|
1794171374.4071105
|
|
33267
|
My first slack bot! by @srimaan-gande | Stardance
|
srimaan-gande
|
1
|
1.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-07-12T20:46:27Z", "hours": 1.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I made a Slack bot that works on its own. It is called “houseman” and it offers 3 different functions to use. One of the things challenging was my inexperience with the nest containers, where it would keep crashing. I fixed it by updating my git clone command to new github repository which fixed the issue. Overall, this project was a sucess.", "repo": "https://github.com/tutugoy/slack-bot", "demo": "https://hackclub.enterprise.slack.com/archives/C0P5NE354"}]...
|
[{"post_id": 27331, "ts": "202 [{"post_id": 27331, "ts": "2026-07-12T20:19:44Z", "hours": 0.0, "text": "The first Slack Bot! this is my first project"}]...
|
Title: My first slack bot! by @srimaan-gande | Sta Title: My first slack bot! by @srimaan-gande | Stardance
Devlogs:
The first Slack Bot! this is my first project
Ships:
I made a Slack bot that works on its own. It is called “houseman” and it offers 3 different functions to use. One of the things challenging was my inexperience with the nest containers, where it would keep crashing. I fixed it by updating my git clone command to new github repository which fixed the issue. Overall, this project was a sucess....
|
1793778481.168636
|
1794642481.168636
|
|
33395
|
C/C++ Compilation by @srimaan-gande | Stardance
|
srimaan-gande
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: C/C++ Compilation by @srimaan-gande | Stard Title: C/C++ Compilation by @srimaan-gande | Stardance...
|
1793944495.702552
|
1794808495.702552
|
|
34808
|
Chess Game App in Web by @srimaan-gande | Stardanc Chess Game App in Web by @srimaan-gande | Stardance...
|
srimaan-gande
|
1
|
192.0
|
194
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-07-20T03:07:36Z", "hours": 48.0, "multiplier": 4.28, "payout": 194, "blessing": "neutral", "text": "Javascript Chess Game Credit: Abdul at THE SOLUTION HUB A fully-featured chess game built with vanilla JavaScript, jQuery, and CSS. Features complete standard chess rules plus advanced tournament rules. Features Implemented Core Chess Rules Standard piece movement : King, Queen, Rook, Bishop, Knight, Pawn Capture mechanics : Standard captures with algebraic notation (e.g., exd5 , Nxf3 ) Check detection : Real-time check status display Checkmate detection : Automatic game end with # notation Stalemate detection : Draw when no legal moves and not in check Castling : Kingside (O-O) and Queenside (O-O-O) with full validation King and rook must not have moved Path must be clear King cannot be in, move through, or end in check Pawn promotion : Automatic queen promotion on 8th/1st rank Advanced Rules En Passant : Capture pawn that moved two squares Visual highlight of en passant target square Correct capture mechanics (removes pawn from adjacent rank) Only available immediately after opponent’s double-move Threefold Repetition : Automatic draw detection Tracks full position including castling rights and en passant Draws when same position occurs 3 times Alert notification on draw Fifty-Move Rule : Automatic draw detection Half-move clock resets on pawn moves and captures Draws after 100 half-moves (50 full moves) without progress Alert notification on draw Draw by Agreement : “Offer Draw” button with confirmation Resignation : “Resign” button with confirmation dialog Visual Design (8-bit/Arcade Theme) Fonts : Press Start 2P (headers) + VT323 (monospace) CRT scanline overlay : Subtle horizontal lines Vignette effect : Darkened edges Pixel-perfect borders : 2px solid with inset shadows Neon glow effects : White/amber/red text shadows Hover animations : Scale + glow on squares Valid move pulse : Animated glow on legal destinations Custom scrollbars : Arcade-styled for move list Game over modal : Alert dialogs for checkmate/stalemate/draw User Interface Objects Turn display : “It’s White’s Turn!” / “It’s Black’s Turn” Status display : CHECK, CHECKMATE, STALEMATE, DRAW states with pulsing animations Move list panel : Side panel with numbered moves Control buttons : Restart, Offer Draw, Resign Responsive layout : Flexbox side-by-side (board + move list) Rank/file labels : 1-8 and a-h with grid positioning Controls Click piece → Select (shows legal moves) Click highlighted square → Move piece Click own piece → Switch selection Restart Game → Reset to initial position Offer Draw → Propose draw to opponent Resign → Concede the game", "repo": "https://github.com/tutugoy/chess-game-app", "demo": "https://tutugoy.github.io/chess-game-app/"}]...
|
[{"post_id": 42830, "ts": "202 [{"post_id": 42830, "ts": "2026-08-07T19:27:06Z", "hours": 10.0, "text": "Chess game update I am posting this devlog to save my time that I worked on. I don’t have anything major to report, because currently, I am changing the CSS on the board, and mainly fixed issues related to the buttons and the mood bar because I didn’t connect them properly to the rest of the menu. But with this devlog, I also want to share my idea of what the game will be in the future. Chess is a basic game that anyone can make, so my plan is to make it into an actual single player game . With this, there will be a storyline of sorts, with bosses, quests, and more (similar to the Super Mario deluxe game). My main doubt is should I make it into a game like this and keep the same chess aspect, or if I should I add more modifications, like powerups or smth."}, {"post_id": 41385, "ts": "2026-08-05T15:46:13Z", "hours": 10.0, "text": "Chess game update - mood bar This is yesterdays update because I forgot to post, but this time, I reverted my changes back to the arcade CSS because the menu and promotion wasn’t working correctly, and so I thought going element by element might be more efficient and easier for me to catch bugs. This update adds new button CSS that is sort of like Duolingo’s buttons, but I found some on Uiverse that I liked which I used. ( https://uiverse.io/snooka1/soft-quail-12 ). I also found a range slider on FreeFrontend.com ( https://freefrontend.com/css-range-sliders/ , called Neumorphism - Range Slider) that I modified to keep a face on the top for the difficulty, and then also made a bar behind it with the same color turning from green to red as it increases. I plan on making more changes to the overall CSS today as well."}, {"post_id": 40491, "ts": "2026-08-04T01:55:10Z", "hours": 11.0, "text": "Chess game - CSS Update Today, i removed all the arcade themed CSS. This includes: The game board The font The scanlines (that nobody could rly see) The scanlines on each game board slot (also which nobody could see) The grey and white board color The glow effect on everything So right now, its pretty bare. I do want to note that the promotion dial and the menu are not working properly right now because I removed some CSS. I will fix that tmrw. I am also currently working on making ideas for the duolingo slab design theme, and it will prob include interactive buttons and overall better scheme."}, {"post_id": 39275, "ts": "2026-08-02T04:26:35Z", "hours": 13.0, "text": "Chess game update As mentioned yesterday, I was working on a fairly new update. This time, I took the code for the dial for promotion, and replicated it to make a small menu that fits all of the commands of the following: Resigning Offering a Draw Restarting the game Flipping Board Move takeback (center button) For some reason, the move takeback button also doesn’t work, so I plan on fixing that as well as making the CSS better. I realized that the whole design isn’t as user friendly, and I kind of just did whatever I could to fit the theme, and that takes away from the goal of proper UI. I really like duolingo’s style of buttons and UI, so I will try to replication it in my own way if possible. This obviously will take a long time, so I am guessing this update will finish in 2-3 days optimistically. Btw link to project if you want to test: https://tutugoy.github.io/chess-game-app/"}, {"post_id": 38574, "ts": "2026-08-01T01:47:41Z", "hours": 9.0, "text": "Chess progress I am currently working on more functionality abilities and fixing some newfound bugs in the code. I don’t want to spoil just yet but I really liked the dial for the promotion, so I want to build on that feature with everything else. I understand this will be a difficult task, but by doing this, I can make the app much more functional! (I am currently coding the JS so I don’t have any good pictures to show so here is the old pic) Like I said, tomorrow I will have something good to show!"}, {"post_id": 38150, "ts": "2026-07-31T12:06:34Z", "hours": 9.0, "text": "Chess update - Promotion! I finished the promotion code today! Although I have mentioned it before, here is a summary of how it works. You go to the end, and a dial with 4 pieces appears. Choose yours and you will become that piece. I fixed the issue with the turn ending at the wrong time as well, which is good. But when doing this, I ran into a couple problems. Firstly, the game didn’t count any pieces taken for my pawn to promote. For example, if a white pawn was on g7 and a black rook on h8, the pawn should have the ability to take the rook and promote on the white turn. Although this happens visually, the game counts the rook as still alive. This is an issue I am currently working on right now."}, {"post_id": 37415, "ts": "2026-07-30T03:35:07Z", "hours": 9.0, "text": "Chess game update This is a major advancement in my pawn promotion mechanics. Since yesterday I have been working on pawn promotion, and I figured the best way could be a sort of dial. As you can see in the picture, this is what the dial will look like when trying to promote, and when clicking on one of the pieces, that piece will be selected. Super simple is what I thought at first, but it was much worse than that. Building the dial was an utter pain. The CSS features kept making it into a square that was twisted where it connected to all the sides where the sections split. The center was supposed to be hollow, but I am still unsure on its main use, so I kept it solid for now. The promotion works, but 2 main issues arise. Firstly, if I click out of promotion dial, it ends my turn without me doing anything. So I don’t even get to make a move at all. Secondly, if I click any of the pieces, it is still my turn for some reason. I believe the issue is that my JS counts clicking a legal square to move to as the end of my turn, which is why it is doing this. I will fix the rest tomorrow as I believe taking time to rest might help me think of a solution."}, {"post_id": 36335, "ts": "2026-07-28T11:56:56Z", "hours": 10.0, "text": "Chess game updates I recently got my first ship rated and I understood what mistakes I made and what I needed to fix. I understood that even though the game was well made in terms of how it works, it wasn’t user friendly and the theme made it harder to see. Thanks to all who helped give feedback for this, and my first change is to make the pieces actual vectors. This was an issue all of the users pointed out, so I hope this fixes at least one of the problems. I will continue moving forward with this in mind, and I am currently working on my other changes as well. (This is the only one that properly is working so I wrote about it)"}, {"post_id": 35304, "ts": "2026-07-26T16:57:03Z", "hours": 8.0, "text": "Chess update - bug fixes and initial work on Auto saving I used my time today to just update some other features that had bugs that I haven’t fixed yet, like the clock sometimes doesn’t work between turns. I also started working on Auto Saving so that the game saves in local storage so you could resume later, but it isn’t looking very good right now because I messed with the wrong code and the entire thing broke. I need to fix that tomorrow but overall this was a mostly successful use of time."}, {"post_id": 34601, "ts": "2026-07-25T13:44:43Z", "hours": 9.0, "text": "Chess game update Loading and saving games is now a feature as well. The app will export a JSON file containing data of the match, including time left for both sides, which pieces are still on the board, and the movelist as well. In addition, I have fixed bugs with the take back button, where it was removing pieces from the board entirely. I will focus on addition promotion tomorrow as I haven’t done that yet."}, {"post_id": 34026, "ts": "2026-07-24T13:25:10Z", "hours": 9.0, "text": "Chess game update - functionality I added a game clock (10 mins for now) and the take back move button. These are just functionality changes not anything major. it took a while because I also had to figure out how to make the clocks go around after the board was flipped so it was taking a long time for that. Also the game now has to read the move list and revert changes to the board for the move back so that also took long. I need to fix some issues with the clock, something I am working on now."}, {"post_id": 33846, "ts": "2026-07-24T02:48:00Z", "hours": 2.0, "text": "Chess game update - more functionality I have spent this time fixing the numerous issues that came with flipping the board, including deleting the pieces, changing their positions, making the move list somehow go into the negatives, and more I didn’t even notice but the console did. I had to perform a git restore to remove the changes and recode the entire thing again. It did workout and now it works well."}, {"post_id": 33441, "ts": "2026-07-23T12:10:29Z", "hours": 10.0, "text": "Chess game update I am currently trying to fix some issues when implementing the stockfish engine as it is too strong at level 1. This is proving to be a big challenge but I will be able to complete it soon. While doing so, I also thought of improving some functionality and I have added a feature to flip the board. This feature also has a lot of issues and both will most likely be fixed in the next devlog."}, {"post_id": 33130, "ts": "2026-07-22T19:15:52Z", "hours": 9.0, "text": "Chess Game update - Stockfish Engine Yesterday I started working on a stockfish engine for my game. I finished it today and it has some very strong features. You can now play in 3 modes: PvP PvE (Player plays as white) PvE (Player plays as Black) I used the LiChess stockfish engine to complete this part of the project (Link to release: https://github.com/lichess-org/stockfish.js/releases/tag/ddugovic-250718 ) The engine has all the features to calculate the best moves and complete them. To make it easier, I added a level system from 1-20 so that the bot is easier or harder to beat, but after testing, I found that the bot takes longer to respond with a move when its at level 20 and is still very smart and powerful at level 1. I think I may have integrated the engine incorrectly when connecting it to my current project, so in my next update, I will be fixing this issue."}, {"post_id": 32657, "ts": "2026-07-21T23:05:55Z", "hours": 8.0, "text": "Chess game update I am currently working on building a bot you can play against. It is very tough to find another person to play with especially on the same screen/device so this could fix that issue very easily. The bot will be stockfish and make moves for either black or white. For now, I will code it just for black and make it for white later. This devlog is for me to log my hours, but the bot is nearly finished and will take me a little more time. This also introduces the need to switch from white to black, so in the future I will be adding that feature as well."}, {"post_id": 32121, "ts": "2026-07-21T02:01:49Z", "hours": 0.0, "text": "Chess game fix quick For some reason King + Knight VS King was not working from my last update, which was because I did not properly edit the code. I have fixed the issue and that should be working now. This devlog isn’t major or an update but just a fix."}, {"post_id": 31992, "ts": "2026-07-20T20:34:58Z", "hours": 8.0, "text": "Chess game update Today I added the insufficient material feature. It took me a while to figure out because I was trying to use formulas and math to make the code analyze if a certain set of pieces can lead to a checkmate, but I realized that instead of calculating, I can just find which combinations of pieces cannot lead to checkmate, and then list those pieces in the code for the game to constantly check, and then determine if its a stalemate/draw. Below is the combinations of pieces that cannot lead to a checkmate that my code checks and accounts for: King vs King King + Bishop vs King King + Knight vs King King + Bishop vs King + Bishop (same color squares)"}, {"post_id": 31566, "ts": "2026-07-20T02:23:14Z", "hours": 3.0, "text": "Chess game final update before shipping This is my final update for the chess game. In this update I added sound effects and fixed some final issues before shipping."}, {"post_id": 31232, "ts": "2026-07-19T14:01:17Z", "hours": 7.0, "text": "Chess game fix So far, I worked on fixing the bug in my code which made my pieces disappear as mentioned last time. I am also currently working on trying to add sound effects to make the game more interesting to play and use. This devlog so that I log my hours and I will be posting another one soon."}, {"post_id": 31017, "ts": "2026-07-19T02:30:11Z", "hours": 9.0, "text": "Chess game updates Today, I made some decent functionality changes. It took very long because I couldn’t figure it out for a while because I had to do research on how to, but I figured out how to do the en passant, threefold repetition, and 50 move rule by updating the JS. I also fixed the previous issue where when the player is in check by another, they can’t block it with another piece, even if they should be able to. I was also able to fix this issue as well. Unfortunately, the logic of JS I made for the en passant, threefold repetition and 50 move rule introduced a new problem of erasing any piece that can be taken. For example, if a pawn is able to take another and I click on that pawn to see its possible moves, and then click on another piece, the opposing pawn disappears. I didn’t have enough time to fix the issue and will be working on it another time."}, {"post_id": 30466, "ts": "2026-07-18T01:40:46Z", "hours": 12.0, "text": "Chess game Update BIG I did a lot of work today in my chess engine. I had a lot of time and I was able to do a decent bit of research and use AI to find resources on making an old video game/arcade style design to the game board. Because of this, I spent a lot of time on CSS and JS, coding to fix the prior issues in my code as well as making changes so that it looks as good as it can. Firstly, the pieces can finally be moved only where they should. Before, any piece could move anywhere by clicking the square, unless it was already occupied. Now I fixed the javascript code so that the code checks if that piece can legally move there and stops it otherwise. I also added the ability to castle for both black and white for more functionality. In addition, I also made the resign feature work for both black and white, as it changes who has the ability to resign based on if the current turn is White’s or Black’s. If it is white, for example, the resign button will say Resign (White) so white loses and black wins, and vice versa. Because the game already has so much code on checking pieces and their positions, I figured I could also add a list on the side that says which pieces have been moved so far. I didn’t exactly how to put it in algebric notation so after researching, I had the idea of basically taking the position of the piece’s sqaure, then use javascript to convert into the grid number, and then add the letters in front if the piece moved is any piece other than a pawn. The list also shows castling, checks and checkmates. The board was looking really bland so I did research on ways to make it an arcade/old style like I said before. I first starting to make a scanline on the screen by using CSS and duplicating gradients on the screen. It is very hard to see but it is there. Next, I made the game boxes better by making them seamless when placed next to each other. I also made the hover highlight the boxes instead of making them bigger like before. I also added more diagonal scanlines in them as well. Next, I made as many elements neon to make it bright. As I was making this I also research online that the scroll bar in webpages can be edited. So when the move list is truncated, it shows custom white scroll bars as well. I also found that you can make really cool effects when hovering over buttons, so using CSS I also made the buttons have a horizontal box that goes over to show the animation of the color changing, and I added angled boxes in the back of it that animate and lift, making the button look like its coming up. I will probably add more functionality next time."}, {"post_id": 29649, "ts": "2026-07-16T18:32:03Z", "hours": 5.0, "text": "Chess game Update This is my third update for the chess game. I wanted to add some more functionality to the game with features in more popular chess game engines like Chess.com where it has draw and resign features. I also added a restart game feature since it is single player, but currently there is an issue where the pieces persist at their prior position even though according to the game, they are not there. They button CSS is also not aligned and good compared to the gradient style with the rest of the page, so for the future, I plan on making it one single theme and keeping the page more organized."}, {"post_id": 29265, "ts": "2026-07-16T02:21:42Z", "hours": 5.0, "text": "Chess App Updates Today, I worked on making the app better by making it figure out checks, checkmates, and stalemates. I used AI to understand how to do this, and by using resources online, I also figured out how to input gradients and better CSS functionality for the app to look better. The code for checks and checkmates mainly relies on the JS where it looks at and detects if any legal moves are left for the king to continue in play. I still haven’t added functionality for it to stop pieces from going into positions they shouldn’t be able to. Overall that is the main things I did today."}, {"post_id": 28672, "ts": "2026-07-15T02:11:01Z", "hours": 3.0, "text": "Chess game today I made my first chess game board using this tutorial: https://www.youtube.com/watch?v=SS5amIbX0Mo&list=LL&index=3&t=56s using it I was able to follow along and run the code and use google to understand what each piece of code does to the overall project. Some limits to the project are that the game is able to move the pieces but does not recognize checks or checkmates. I will do more research and try to improve it as much as I can."}]...
|
Title: Chess Game App in Web by @srimaan-gande | S Title: Chess Game App in Web by @srimaan-gande | Stardance
Devlogs:
Chess game today I made my first chess game board using this tutorial: https://www.youtube.com/watch?v=SS5amIbX0Mo&list=LL&index=3&t=56s using it I was able to follow along and run the code and use google to understand what each piece of code does to the overall project. Some limits to the project are that the game is able to move the pieces but does not recognize checks or checkmates. I will do more research and try to improve it as much as I can.
Chess App Updates Today, I worked on making the app better by making it figure out checks, checkmates, and stalemates. I used AI to understand how to do this, and by using resources online, I also figured out how to input gradients and better CSS functionality for the app to look better. The code for checks and checkmates mainly relies on the JS where it looks at and detects if any legal moves are left for the king to continue in play. I still haven’t added functionality for it to stop pieces from going into positions they shouldn’t be able to. Overall that is the main things I did today.
Chess game Update This is my third update for the chess game. I wanted to add some more functionality to the game with features in more popular chess game engines like Chess.com where it has draw and resign features. I also added a restart game feature since it is single player, but currently there is an issue where the pieces persist at their prior position even though according to the game, they are not there. They button CSS is also not aligned and good compared to the gradient style with the rest of the page, so for the future, I plan on making it one single theme and keeping the page more organized.
Chess game Update BIG I did a lot of work today in my chess engine. I had a lot of time and I was able to do a decent bit of research and use AI to find resources on making an old video game/arcade style design to the game board. Because of this, I spent a lot of time on CSS and JS, coding to fix the prior issues in my code as well as making changes so that it looks as good as it can. Firstly, the pieces can finally be moved only where they should. Before, any piece could move anywhere by clicking the square, unless it was already occupied. Now I fixed the javascript code so that the code checks if that piece can legally move there and stops it otherwise. I also added the ability to castle for both black and white for more functionality. In addition, I also made the resign feature work for both black and white, as it changes who has the ability to resign based on if the current turn is White’s or Black’s. If it is white, for example, the resign button will say Resign (White) so white loses and black wins, and vice versa. Because the game already has so much code on checking pieces and their positions, I figured I could also add a list on the side that says which pieces have been moved so far. I didn’t exactly how to put it in algebric notation so after researching, I had the idea of basically taking the position of the piece’s sqaure, then use javascript to convert into the grid number, and then add the letters in front if the piece moved is any piece other than a pawn. The list also shows castling, checks and checkmates. The board was looking really bland so I did research on ways to make it an arcade/old style like I said before. I first starting to make a scanline on the screen by using CSS and duplicating gradients on the screen. It is very hard to see but it is there. Next, I made the game boxes better by making them seamless when placed next to each other. I also made the hover highlight the boxes instead of making them bigger like before. I also added more diagonal scanlines in them as well. Next, I made as many elements neon to make it bright. As I was making this I also research online that the scroll bar in webpages can be edited. So when the move list is truncated, it shows custom white scroll bars as well. I also found that you can make really cool effects when hovering over buttons, so using CSS I also made the buttons have a horizontal box that goes over to show the animation of the color changing, and I added angled boxes in the back of it that animate and lift, making the button look like its coming up. I will probably add more functionality next time.
Chess game updates Today, I made some decent functionality changes. It took very long because I couldn’t figure it out for a while because I had to do research on how to, but I figured out how to do the en passant, threefold repetition, and 50 move rule by updating the JS. I also fixed the previous issue where when the player is in check by another, they can’t block it with another piece, even if they should be able to. I was also able to fix this issue as well. Unfortunately, the logic of JS I made for the en passant, threefold repetition and 50 move rule introduced a new problem of erasing any piece that can be taken. For example, if a pawn is able to take another and I click on that pawn to see its possible moves, and then click on another piece, the opposing pawn disappears. I didn’t have enough time to fix the issue and will be working on it another time.
Chess game fix So far, I worked on fixing the bug in my code which made my pieces disappear as mentioned last time. I am also currently working on trying to add sound effects to make the game more interesting to play and use. This devlog so that I log my hours and I will be posting another one soon.
Chess game final update before shipping This is my final update for the chess game. In this update I added sound effects and fixed some final issues before shipping.
Chess game update Today I added the insufficient material feature. It took me a while to figure out because I was trying to use formulas and math to make the code analyze if a certain set of pieces can lead to a checkmate, but I realized that instead of calculating, I can just find which combinations of pieces cannot lead to checkmate, and then list those pieces in the code for the game to constantly check, and then determine if its a stalemate/draw. Below is the combinations of pieces that cannot lead to a checkmate that my code checks and accounts for: King vs King King + Bishop vs King King + Knight vs King King + Bishop vs King + Bishop (same color squares)
Chess game fix quick For some reason King + Knight VS King was not working from my last update, which was because I did not properly edit the code. I have fixed the issue and that should be working now. This devlog isn’t major or an update but just a fix.
Chess game update I am currently working on building a bot you can play against. It is very tough to find another person to play with especially on the same screen/device so this could fix that issue very easily. The bot will be stockfish and make moves for either black or white. For now, I will code it just for black and make it for white later. This devlog is for me to log my hours, but the bot is nearly finished and will take me a little more time. This also introduces the need to switch from white to black, so in the future I will be adding that feature as well.
Chess Game update - Stockfish Engine Yesterday I started working on a stockfish engine for my game. I finished it today and it has some very strong features. You can now play in 3 modes: PvP PvE (Player plays as white) PvE (Player plays as Black) I used the LiChess stockfish engine to complete this part of the project (Link to release: https://github.com/lichess-org/stockfish.js/releases/tag/ddugovic-250718 ) The engine has all the features to calculate the best moves and complete them. To make it easier, I added a level system from 1-20 so that the bot is easier or harder to beat, but after testing, I found that the bot takes longer to respond with a move when its at level 20 and is still very smart and powerful at level 1. I think I may have integrated the engine incorrectly when connecting it to my current project, so in my next update, I will be fixing this issue.
Chess game update I am currently trying to fix some issues when implementing the stockfish engine as it is too strong at level 1. This is proving to be a big challenge but I will be able to complete it soon. While doing so, I also thought of improving some functionality and I have added a feature to flip the board. This feature also has a lot of issues and both will most likely be fixed in the next devlog.
Chess game update - more functionality I have spent this time fixing the numerous issues that came with flipping the board, including deleting the pieces, changing their positions, making the move list somehow go into the negatives, and more I didn’t even notice but the console did. I had to perform a git restore to remove the changes and recode the entire thing again. It did workout and now it works well.
Chess game update - functionality I added a game clock (10 mins for now) and the take back move button. These are just functionality changes not anything major. it took a while because I also had to figure out how to make the clocks go around after the board was flipped so it was taking a long time for that. Also the game now has to read the move list and revert changes to the board for the move back so that also took long. I need to fix some issues with the clock, something I am working on now.
Chess game update Loading and saving games is now a feature as well. The app will export a JSON file containing data of the match, including time left for both sides, which pieces are still on the board, and the movelist as well. In addition, I have fixed bugs with the take back button, where it was removing pieces from the board entirely. I will focus on addition promotion tomorrow as I haven’t done that yet.
Chess update - bug fixes and initial work on Auto saving I used my time today to just update some other features that had bugs that I haven’t fixed yet, like the clock sometimes doesn’t work between turns. I also started working on Auto Saving so that the game saves in local storage so you could resume later, but it isn’t looking very good right now because I messed with the wrong code and the entire thing broke. I need to fix that tomorrow but overall this was a mostly successful use of time.
Chess game updates I recently got my first ship rated and I understood what mistakes I made and what I needed to fix. I understood that even though the game was well made in terms of how it works, it wasn’t user friendly and the theme made it harder to see. Thanks to all who helped give feedback for this, and my first change is to make the pieces actual vectors. This was an issue all of the users pointed out, so I hope this fixes at least one of the problems. I will continue moving forward with this in mind, and I am currently working on my other changes as well. (This is the only one that properly is working so I wrote about it)
Chess game update This is a major advancement in my pawn promotion mechanics. Since yesterday I have been working on pawn promotion, and I figured the best way could be a sort of dial. As you can see in the picture, this is what the dial will look like when trying to promote, and when clicking on one of the pieces, that piece will be selected. Super simple is what I thought at first, but it was much worse than that. Building the dial was an utter pain. The CSS features kept making it into a square that was twisted where it connected to all the sides where the sections split. The center was supposed to be hollow, but I am still unsure on its main use, so I kept it solid for now. The promotion works, but 2 main issues arise. Firstly, if I click out of promotion dial, it ends my turn without me doing anything. So I don’t even get to make a move at all. Secondly, if I click any of the pieces, it is still my turn for some reason. I believe the issue is that my JS counts clicking a legal square to move to as the end of my turn, which is why it is doing this. I will fix the rest tomorrow as I believe taking time to rest might help me think of a solution.
Chess update - Promotion! I finished the promotion code today! Although I have mentioned it before, here is a summary of how it works. You go to the end, and a dial with 4 pieces appears. Choose yours and you will become that piece. I fixed the issue with the turn ending at the wrong time as well, which is good. But when doing this, I ran into a couple problems. Firstly, the game didn’t count any pieces taken for my pawn to promote. For example, if a white pawn was on g7 and a black rook on h8, the pawn should have the ability to take the rook and promote on the white turn. Although this happens visually, the game counts the rook as still alive. This is an issue I am currently working on right now.
Chess progress I am currently working on more functionality abilities and fixing some newfound bugs in the code. I don’t want to spoil just yet but I really liked the dial for the promotion, so I want to build on that feature with everything else. I understand this will be a difficult task, but by doing this, I can make the app much more functional! (I am currently coding the JS so I don’t have any good pictures to show so here is the old pic) Like I said, tomorrow I will have something good to show!
Chess game update As mentioned yesterday, I was working on a fairly new update. This time, I took the code for the dial for promotion, and replicated it to make a small menu that fits all of the commands of the following: Resigning Offering a Draw Restarting the game Flipping Board Move takeback (center button) For some reason, the move takeback button also doesn’t work, so I plan on fixing that as well as making the CSS better. I realized that the whole design isn’t as user friendly, and I kind of just did whatever I could to fit the theme, and that takes away from the goal of proper UI. I really like duolingo’s style of buttons and UI, so I will try to replication it in my own way if possible. This obviously will take a long time, so I am guessing this update will finish in 2-3 days optimistically. Btw link to project if you want to test: https://tutugoy.github.io/chess-game-app/
Chess game - CSS Update Today, i removed all the arcade themed CSS. This includes: The game board The font The scanlines (that nobody could rly see) The scanlines on each game board slot (also which nobody could see) The grey and white board color The glow effect on everything So right now, its pretty bare. I do want to note that the promotion dial and the menu are not working properly right now because I removed some CSS. I will fix that tmrw. I am also currently working on making ideas for the duolingo slab design theme, and it will prob include interactive buttons and overall better scheme.
Chess game update - mood bar This is yesterdays update because I forgot to post, but this time, I reverted my changes back to the arcade CSS because the menu and promotion wasn’t working correctly, and so I thought going element by element might be more efficient and easier for me to catch bugs. This update adds new button CSS that is sort of like Duolingo’s buttons, but I found some on Uiverse that I liked which I used. ( https://uiverse.io/snooka1/soft-quail-12 ). I also found a range slider on FreeFrontend.com ( https://freefrontend.com/css-range-sliders/ , called Neumorphism - Range Slider) that I modified to keep a face on the top for the difficulty, and then also made a bar behind it with the same color turning from green to red as it increases. I plan on making more changes to the overall CSS today as well.
Chess game update I am posting this devlog to save my time that I worked on. I don’t have anything major to report, because currently, I am changing the CSS on the board, and mainly fixed issues related to the buttons and the mood bar because I didn’t connect them properly to the rest of the menu. But with this devlog, I also want to share my idea of what the game will be in the future. Chess is a basic game that anyone can make, so my plan is to make it into an actual single player game . With this, there will be a storyline of sorts, with bosses, quests, and more (similar to the Super Mario deluxe game). My main doubt is should I make it into a game like this and keep the same chess aspect, or if I should I add more modifications, like powerups or smth.
Ships:
Javascript Chess Game Credit: Abdul at THE SOLUTION HUB A fully-featured chess game built with vanilla JavaScript, jQuery, and CSS. Features complete standard chess rules plus advanced tournament rules. Features Implemented Core Chess Rules Standard piece movement : King, Queen, Rook, Bishop, Knight, Pawn Capture mechanics : Standard captures with algebraic notation (e.g., exd5 , Nxf3 ) Check detection : Real-time check status display Checkmate detection : Automatic game end with # notation Stalemate detection : Draw when no legal moves and not in check Castling : Kingside (O-O) and Queenside (O-O-O) with full validation King and rook must not have moved Path must be clear King cannot be in, move through, or end in check Pawn promotion : Automatic queen promotion on 8th/1st rank Advanced Rules En Passant : Capture pawn that moved two squares Visual highlight of en passant target square Correct capture mechanics (removes pawn from adjacent rank) Only available immediately after opponent’s double-move Threefold Repetition : Automatic draw detection Tracks full position including castling rights and en passant Draws when same position occurs 3 times Alert notification on draw Fifty-Move Rule : Automatic draw detection Half-move clock resets on pawn moves and captures Draws after 100 half-moves (50 full moves) without progress Alert notification on draw Draw by Agreement : “Offer Draw” button with confirmation Resignation : “Resign” button with confirmation dialog Visual Design (8-bit/Arcade Theme) Fonts : Press Start 2P (headers) + VT323 (monospace) CRT scanline overlay : Subtle horizontal lines Vignette effect : Darkened edges Pixel-perfect borders : 2px solid with inset shadows Neon glow effects : White/amber/red text shadows Hover animations : Scale + glow on squares Valid move pulse : Animated glow on legal destinations Custom scrollbars : Arcade-styled for move list Game over modal : Alert dialogs for checkmate/stalemate/draw User Interface Objects Turn display : “It’s White’s Turn!” / “It’s Black’s Turn” Status display : CHECK, CHECKMATE, STALEMATE, DRAW states with pulsing animations Move list panel : Side panel with numbered moves Control buttons : Restart, Offer Draw, Resign Responsive layout : Flexbox side-by-side (board + move list) Rank/file labels : 1-8 and a-h with grid positioning Controls Click piece → Select (shows legal moves) Click highlighted square → Move piece Click own piece → Switch selection Restart Game → Reset to initial position Offer Draw → Propose draw to opponent Resign → Concede the game...
|
1793778463.997899
|
1794642463.997899
|