|
18454
|
astrOS by @urged-st | Stardance
|
urged-st
|
2
|
32.0
|
302
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-07-16T18:06:53Z", "hours": 27.0, "multiplier": 11.44, "payout": 302, "blessing": "neutral", "text": "astrOS is a fullscreen web OS with nine astronomy apps built in vanilla JS: Sky Map uses real star positions calculated from your location, ISS Tracker polls live satellite data with haversine distance, Stargazing Conditions combines weather and moon phase into a seeing score, Solar System renders Keplerian orbits with clickable planets, Meteor Shower Tracker handles year-boundary showers correctly with proper countdown logic, plus NGC Catalogue, APOD, Mission Log, and Wallpaper Changer. I’m most proud of the Sky Map actually calculating real positions rather than faking it, and the ISS Tracker being genuinely useful for knowing whether the station is overhead. To test: open on desktop in fullscreen (geolocation needs permission and fullscreen mode to work), try dragging windows to screen edges to see snapping, check the meteor tracker during an active shower, click planets in Solar System to see their stats, and the Mission Log text persists across refreshes via localStorage. yes, i know it said 3 new features from webos1, but I got a bit too excited. have fun!", "repo": "https://github.com/urged-st/astrOS", "demo": "https://astr-os.vercel.app/"}, {"ship_num": 2, "ts": "2026-06-18T09:59:21Z", "hours": 5.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I have made a functional astronomy focused WebOS called astrOS. It currently features a custom programmed sky map which takes your location and shows you what is currently in the sky near you, and a simple in-session notepad. It also has a right-click context menu featuring my socials and projects (project links will be added when they are done lol) You can minimise windows as well. Please put any suggestions for new features you have in comments, I’d appreciate it a lot.", "repo": "https://github.com/urged-st/astrOS", "demo": "https://astr-os.vercel.app/"}]...
|
[{"post_id": 29628, "ts": "202 [{"post_id": 29628, "ts": "2026-07-16T18:02:48Z", "hours": 3.6972, "text": "Meteor Shower Tracker finished the last feature, a year-round meteor shower schedule with active/upcoming status so you actually know when to set an alarm. 11 major showers baked in (Quadrantids through Ursids), and everything’s calculated client-side, no API needed. stores absolute peak dates for each shower and works out the active window locally, correctly handles the year-boundary ones (Quadrantids starts Dec 28, Ursids ends Dec 26) without breaking on Jan 1st sorts active showers first, then whoever’s next peak is soonest countdown properly distinguishes “peak in Xd” from “peaked Xd ago” for showers you’re still inside the window for but already past peak on, caught that bug and fixed it before shipping by testing across multiple dates including exact-peak day (Aug 12 for Perseids) renders as a compact list with radiant constellation, ZHR (~Zenith Hourly Rate), and the peak countdown, all colour-coded so active showers pop no polling, just recomputes fresh every time you open it Bug Fixes & Polish went through all three files line-by-line before shipping. found and fixed two bugs plus some cleanup: window snapping corners were broken — getSnapZone() detected top-left/top-right when you dragged to a corner, but showSnapPreview() and applySnap() never had rect definitions for those zones, so the preview showed nothing and the drop silently failed. added proper quarter-tile rects for both corners so you can now snap to all four quadrants APOD toggle IDs — getElementById() calls for apod explanation/toggle buttons were working but the elements weren’t explicitly in the HTML, they were created at render-time by innerHTML, so the id references were technically fine but fragile. left them as-is since they work, but flagged it as something to refactor if we add more dynamic content later also ik its been shown in an earlier devlog, but the taskbar on the bottom isn’t exactly empty lol, you can minimise apps to it (third pic). maybe i’ll add a pin to taskbar feature? what’s left SHIPPPPPPPPPPPPPPPPPPPPPPPPP"}, {"post_id": 28122, "ts": "2026-07-14T06:30:28Z", "hours": 0.7539, "text": "Tiny fix lol I stopped good ol’ neptune being cut off on the solar system map, and also made it so that the contents of the notepad/mission log are saved in localStorage"}, {"post_id": 27936, "ts": "2026-07-13T21:28:34Z", "hours": 3.2881, "text": "Solar System Viewer Thought it’d be cool to have something you could just leave open on the desktop, so I added a little live Solar System app. Every planet sits where it actually should be today rather than looping around on some fake animation. Planet positions come from simplified J2000 Keplerian elements (semi-major axis, eccentricity, orbital period, etc.) and get advanced from the current date, so they’re calculated fresh instead of being hardcoded. Conveniently I’d already written a Newton-Raphson solver for Kepler’s equation while making Umbra, so I shamelessly reused it here to solve the eccentric anomaly before converting that into the planet’s true anomaly and distance from the Sun. Nice when old suffering becomes reusable code lol. Biggest headache honestly wasn’t the orbital maths, it was the scale. If you draw everything linearly then Neptune disappears off the edge of the canvas, but if you squash everything too much then the inner planets all merge together. Ended up scaling the orbital radius by √r instead, which keeps the angular positions correct while compressing the distances enough that the whole Solar System fits on one screen. Made every planet clickable as well because a static diagram felt a bit dead. Clicking one gives its current distance from the Sun and orbital period, with Earth getting a little highlight ring so it’s easy to spot where we are. It redraws once a minute since the planets barely move on human timescales anyway, and it’s definitely not accurate enough to navigate a spacecraft with, but it’s surprisingly close considering it’s just running a handful of orbital equations in the browser lol. deffo gonna play around with the window sizing cause its kinda weird right now… also neptune is STILL SQUASHED (genuine annoyance btw) so will do this TOMORROW."}, {"post_id": 27585, "ts": "2026-07-13T09:25:48Z", "hours": 3.4686, "text": "Stargazing Conditions New app, tells you whether tonight’s actually worth setting up a telescope for. pulls cloud cover, humidity and wind from Open-Meteo using the location I already grab on boot, no key needed which is nice the moon phase bit doesn’t touch an API at all, did it properly with the synodic month (29.53 days) against a known reference new moon, so it’s just maths running locally combined cloud cover and moon brightness into a rough seeing score out of 10, heavier cloud and a brighter moon both drag it down, then a one-line verdict underneath so you don’t have to interpret the number yourself was gonna render an actual crescent/gibbous moon on canvas for this but after the ISS ground track thing broke last time I didn’t wanna ship more clipping/arc geometry I couldn’t properly test, so it’s just the phase emoji + name + illumination % instead. honestly looks fine, might revisit the canvas version later if I’m bored"}, {"post_id": 26790, "ts": "2026-07-11T19:46:07Z", "hours": 3.5022, "text": "ISS Tracker New app, tracks the ISS live using wheretheiss.at (no key needed, CORS-open, genuinely such a nice API to work with). Polls every 5 seconds for lat/lon/altitude/velocity Keeping the last 20 fixes so there’s a fading trail behind the current position instead of just a dot that teleports every update Drew my own little world map for this since I didn’t want to deal with map tile assets, just lat/lon gridlines every 30°, equator and prime meridian slightly brighter. I reused the geolocation I already grab on boot for the sky map, so this app also shows your distance from the ISS via a haversineKm() calc, and flags when it’s within ~2000km with a little “nearby!” tag. Not a proper overhead check (that’d need elevation angle above your horizon) but good enough for now Added a stopIssTracker() call on window close so the polling interval actually dies instead of running forever in the background, learnt that lesson the hard way after leaving a tab open for way too long testing this At the time of writing this I had just the idea to implement a trail that shows the future path, will do this now lol."}, {"post_id": 26626, "ts": "2026-07-11T15:37:59Z", "hours": 2.4692, "text": "APOD Viewer Added the Astronomy Picture of the Day app, pulls straight from NASA’s API and shows today’s pic with the write-up tucked behind a toggle so the image gets to be the main object first. Cached in localStorage per calendar day, so reopening the window doesn’t burn another call for the same picture Nearly got got by this one: NASA sometimes serves a video instead of an image for the day, and my first pass just shoved the url into an <img> tag, broken image icon staring back at me lol Added a media_type check so videos link out instead of trying to embed Also handled the fetch failing outright, just shows a “try again later” message instead of leaving a blank window, DEMO_KEY ’s rate limit is gonna trip this eventually so it needed to fail gracefully lol what’s next? either stargazing conditions or the ISS tracker, we’ll see which one I go for"}, {"post_id": 22333, "ts": "2026-07-04T19:10:32Z", "hours": 9.3625, "text": "Okay, yes I forgot to devlog… or commit This was an absolute lock-in but I don’t wanna rank low on storytelling, so I’ll make this one detailed lol. Wallpaper Switcher Six presets, default plus five gradients: nebula, deep blue, solar flare, aurora, mono Clicking a swatch fades the desktop background over 0.6s instead of snapping Choice persists via localStorage so it survives a refresh markActiveWallpaperSwatch re-reads storage and re-marks the active swatch every time the window reopens NGC Catalogue Browser Started as a hardcoded Messier list, which I scrapped once I found Datastro’s public deep sky objects dataset (~220k NGC/IC/Messier entries, CORS-open, no key) Search input debounces 350ms before hitting the API, results sort by magnitude Clicking a result fills the detail panel: type, constellation, magnitude, coordinates Dataset uses the Historically Corrected NGC scheme ( GPair , OCl , SNR , Cl+N ), so I wrote a bucket function that checks substrings to map raw types into galaxy, nebula, cluster, or other for the filter dropdown Built an 8-object offline fallback (Andromeda, Orion Nebula, Ring Nebula, Pleiades, etc) that kicks in silently if the fetch fails, with a small offline warning shown in the list Did You Know Notifications Toast-style pings slide in from the right with a random space fact First one fires after 4 seconds, then every 60-120 seconds at random 18 facts in the pool right now, the neutron star teaspoon one still gets me Caught a bug where fast in/out window clicks could call scheduleNotifications twice and stack two loops, doubling the ping rate Fixed it with a notifStarted flag so the loop only ever starts once Window Resizing And Snapping Built right before the wallpaper stuff, resize first then snap Every window gets a drag handle in the bottom right corner, clamped to a minimum width and height Handle calls stopPropagation on mousedown so resizing doesn’t also trigger the window drag Snap shows a dashed preview box near screen edges, locks into that rect on release Found a bug writing this up: a top-right zone gets detected but has no rect defined for it, so it falls back to snapping full width across the top instead of a proper quadrant."}, {"post_id": 11193, "ts": "2026-06-18T09:52:09Z", "hours": 1.0806, "text": "WebOS 1 - Finished! Sure it took longer than it should’ve, but at least the sky map is quality Today I finished off the final parts for the first mission. I added a coords toggle so you don’t doxx yourself while taking screenshots of the map. I also fixed up the minimising animation and changed the taskbar to host the app icons instead of the usual app name (this had an ugly white bg lol so I had to change it no matter what) I also added a custom background (yes this is reused from my g-lens project sue me) I’m gonna ship this now for WebOS 1, the finished, polished product will be shipped for WebOS 2 (so if anything can be improved, dm me or comment and I’ll fix it then!)"}, {"post_id": 10856, "ts": "2026-06-17T20:07:29Z", "hours": 0.5308, "text": "Small update added a basic notepad app, it does not save between sessions though. added an animation to minimising windows [FIX] made star names not rotate with the star map (this was annoying me lol) what’s next? add icons to taskbar and not just names for minimised apps hide the coords on sky map lol dont doxx yourself a review of the guidelines so I can get webOS 2!"}, {"post_id": 9505, "ts": "2026-06-15T21:22:49Z", "hours": 2.37, "text": "MAJORRR Update First app, context menu, and a LOT of stars 😭 Today I wanted to add an app. Not a standard one like notepad, music, file explorer… something that is different. So, naturally, I spent two hours coding my own star map using a ton of stars from the yale bright star catalogue (okay maybe not a ton but you get the idea). It takes the users location, calculates the chunk of sky above them (yes, you can do this) and shows the major stars visible to the naked eye on a turntable style minimap. What the heck am I gonna do next for one, the text on the map rotates with everything so i gotta fix that THEN i’ll add a normal app like notepad lol a background needs to be added too, also I might add a bg switcher. ohhhh yeah and i added stuff from the guide like the topbar and time, that’s not the star of the show for this log though lol."}, {"post_id": 8666, "ts": "2026-06-14T12:13:02Z", "hours": 0.7083, "text": "astrOS day 1: I want to finish this project really efficiently, so I have mapped out what features I want (you will see as they come). Today, I finished the boot screen and styling for it, and made the file structure. Not much, only 40 mins, but since its a roughly 2hr 30m project, 30m a day means I finish in 5 days. Next devlog should hopefully be finishing the desktop design, probably ~1hr."}]...
|
Title: astrOS by @urged-st | Stardance
Devlogs:
a Title: astrOS by @urged-st | Stardance
Devlogs:
astrOS day 1: I want to finish this project really efficiently, so I have mapped out what features I want (you will see as they come). Today, I finished the boot screen and styling for it, and made the file structure. Not much, only 40 mins, but since its a roughly 2hr 30m project, 30m a day means I finish in 5 days. Next devlog should hopefully be finishing the desktop design, probably ~1hr.
MAJORRR Update First app, context menu, and a LOT of stars 😭 Today I wanted to add an app. Not a standard one like notepad, music, file explorer… something that is different. So, naturally, I spent two hours coding my own star map using a ton of stars from the yale bright star catalogue (okay maybe not a ton but you get the idea). It takes the users location, calculates the chunk of sky above them (yes, you can do this) and shows the major stars visible to the naked eye on a turntable style minimap. What the heck am I gonna do next for one, the text on the map rotates with everything so i gotta fix that THEN i’ll add a normal app like notepad lol a background needs to be added too, also I might add a bg switcher. ohhhh yeah and i added stuff from the guide like the topbar and time, that’s not the star of the show for this log though lol.
Small update added a basic notepad app, it does not save between sessions though. added an animation to minimising windows [FIX] made star names not rotate with the star map (this was annoying me lol) what’s next? add icons to taskbar and not just names for minimised apps hide the coords on sky map lol dont doxx yourself a review of the guidelines so I can get webOS 2!
WebOS 1 - Finished! Sure it took longer than it should’ve, but at least the sky map is quality Today I finished off the final parts for the first mission. I added a coords toggle so you don’t doxx yourself while taking screenshots of the map. I also fixed up the minimising animation and changed the taskbar to host the app icons instead of the usual app name (this had an ugly white bg lol so I had to change it no matter what) I also added a custom background (yes this is reused from my g-lens project sue me) I’m gonna ship this now for WebOS 1, the finished, polished product will be shipped for WebOS 2 (so if anything can be improved, dm me or comment and I’ll fix it then!)
Okay, yes I forgot to devlog… or commit This was an absolute lock-in but I don’t wanna rank low on storytelling, so I’ll make this one detailed lol. Wallpaper Switcher Six presets, default plus five gradients: nebula, deep blue, solar flare, aurora, mono Clicking a swatch fades the desktop background over 0.6s instead of snapping Choice persists via localStorage so it survives a refresh markActiveWallpaperSwatch re-reads storage and re-marks the active swatch every time the window reopens NGC Catalogue Browser Started as a hardcoded Messier list, which I scrapped once I found Datastro’s public deep sky objects dataset (~220k NGC/IC/Messier entries, CORS-open, no key) Search input debounces 350ms before hitting the API, results sort by magnitude Clicking a result fills the detail panel: type, constellation, magnitude, coordinates Dataset uses the Historically Corrected NGC scheme ( GPair , OCl , SNR , Cl+N ), so I wrote a bucket function that checks substrings to map raw types into galaxy, nebula, cluster, or other for the filter dropdown Built an 8-object offline fallback (Andromeda, Orion Nebula, Ring Nebula, Pleiades, etc) that kicks in silently if the fetch fails, with a small offline warning shown in the list Did You Know Notifications Toast-style pings slide in from the right with a random space fact First one fires after 4 seconds, then every 60-120 seconds at random 18 facts in the pool right now, the neutron star teaspoon one still gets me Caught a bug where fast in/out window clicks could call scheduleNotifications twice and stack two loops, doubling the ping rate Fixed it with a notifStarted flag so the loop only ever starts once Window Resizing And Snapping Built right before the wallpaper stuff, resize first then snap Every window gets a drag handle in the bottom right corner, clamped to a minimum width and height Handle calls stopPropagation on mousedown so resizing doesn’t also trigger the window drag Snap shows a dashed preview box near screen edges, locks into that rect on release Found a bug writing this up: a top-right zone gets detected but has no rect defined for it, so it falls back to snapping full width across the top instead of a proper quadrant.
APOD Viewer Added the Astronomy Picture of the Day app, pulls straight from NASA’s API and shows today’s pic with the write-up tucked behind a toggle so the image gets to be the main object first. Cached in localStorage per calendar day, so reopening the window doesn’t burn another call for the same picture Nearly got got by this one: NASA sometimes serves a video instead of an image for the day, and my first pass just shoved the url into an <img> tag, broken image icon staring back at me lol Added a media_type check so videos link out instead of trying to embed Also handled the fetch failing outright, just shows a “try again later” message instead of leaving a blank window, DEMO_KEY ’s rate limit is gonna trip this eventually so it needed to fail gracefully lol what’s next? either stargazing conditions or the ISS tracker, we’ll see which one I go for
ISS Tracker New app, tracks the ISS live using wheretheiss.at (no key needed, CORS-open, genuinely such a nice API to work with). Polls every 5 seconds for lat/lon/altitude/velocity Keeping the last 20 fixes so there’s a fading trail behind the current position instead of just a dot that teleports every update Drew my own little world map for this since I didn’t want to deal with map tile assets, just lat/lon gridlines every 30°, equator and prime meridian slightly brighter. I reused the geolocation I already grab on boot for the sky map, so this app also shows your distance from the ISS via a haversineKm() calc, and flags when it’s within ~2000km with a little “nearby!” tag. Not a proper overhead check (that’d need elevation angle above your horizon) but good enough for now Added a stopIssTracker() call on window close so the polling interval actually dies instead of running forever in the background, learnt that lesson the hard way after leaving a tab open for way too long testing this At the time of writing this I had just the idea to implement a trail that shows the future path, will do this now lol.
Stargazing Conditions New app, tells you whether tonight’s actually worth setting up a telescope for. pulls cloud cover, humidity and wind from Open-Meteo using the location I already grab on boot, no key needed which is nice the moon phase bit doesn’t touch an API at all, did it properly with the synodic month (29.53 days) against a known reference new moon, so it’s just maths running locally combined cloud cover and moon brightness into a rough seeing score out of 10, heavier cloud and a brighter moon both drag it down, then a one-line verdict underneath so you don’t have to interpret the number yourself was gonna render an actual crescent/gibbous moon on canvas for this but after the ISS ground track thing broke last time I didn’t wanna ship more clipping/arc geometry I couldn’t properly test, so it’s just the phase emoji + name + illumination % instead. honestly looks fine, might revisit the canvas version later if I’m bored
Solar System Viewer Thought it’d be cool to have something you could just leave open on the desktop, so I added a little live Solar System app. Every planet sits where it actually should be today rather than looping around on some fake animation. Planet positions come from simplified J2000 Keplerian elements (semi-major axis, eccentricity, orbital period, etc.) and get advanced from the current date, so they’re calculated fresh instead of being hardcoded. Conveniently I’d already written a Newton-Raphson solver for Kepler’s equation while making Umbra, so I shamelessly reused it here to solve the eccentric anomaly before converting that into the planet’s true anomaly and distance from the Sun. Nice when old suffering becomes reusable code lol. Biggest headache honestly wasn’t the orbital maths, it was the scale. If you draw everything linearly then Neptune disappears off the edge of the canvas, but if you squash everything too much then the inner planets all merge together. Ended up scaling the orbital radius by √r instead, which keeps the angular positions correct while compressing the distances enough that the whole Solar System fits on one screen. Made every planet clickable as well because a static diagram felt a bit dead. Clicking one gives its current distance from the Sun and orbital period, with Earth getting a little highlight ring so it’s easy to spot where we are. It redraws once a minute since the planets barely move on human timescales anyway, and it’s definitely not accurate enough to navigate a spacecraft with, but it’s surprisingly close considering it’s just running a handful of orbital equations in the browser lol. deffo gonna play around with the window sizing cause its kinda weird right now… also neptune is STILL SQUASHED (genuine annoyance btw) so will do this TOMORROW.
Tiny fix lol I stopped good ol’ neptune being cut off on the solar system map, and also made it so that the contents of the notepad/mission log are saved in localStorage
Meteor Shower Tracker finished the last feature, a year-round meteor shower schedule with active/upcoming status so you actually know when to set an alarm. 11 major showers baked in (Quadrantids through Ursids), and everything’s calculated client-side, no API needed. stores absolute peak dates for each shower and works out the active window locally, correctly handles the year-boundary ones (Quadrantids starts Dec 28, Ursids ends Dec 26) without breaking on Jan 1st sorts active showers first, then whoever’s next peak is soonest countdown properly distinguishes “peak in Xd” from “peaked Xd ago” for showers you’re still inside the window for but already past peak on, caught that bug and fixed it before shipping by testing across multiple dates including exact-peak day (Aug 12 for Perseids) renders as a compact list with radiant constellation, ZHR (~Zenith Hourly Rate), and the peak countdown, all colour-coded so active showers pop no polling, just recomputes fresh every time you open it Bug Fixes & Polish went through all three files line-by-line before shipping. found and fixed two bugs plus some cleanup: window snapping corners were broken — getSnapZone() detected top-left/top-right when you dragged to a corner, but showSnapPreview() and applySnap() never had rect definitions for those zones, so the preview showed nothing and the drop silently failed. added proper quarter-tile rects for both corners so you can now snap to all four quadrants APOD toggle IDs — getElementById() calls for apod explanation/toggle buttons were working but the elements weren’t explicitly in the HTML, they were created at render-time by innerHTML, so the id references were technically fine but fragile. left them as-is since they work, but flagged it as something to refactor if we add more dynamic content later also ik its been shown in an earlier devlog, but the taskbar on the bottom isn’t exactly empty lol, you can minimise apps to it (third pic). maybe i’ll add a pin to taskbar feature? what’s left SHIPPPPPPPPPPPPPPPPPPPPPPPPP
Ships:
I have made a functional astronomy focused WebOS called astrOS. It currently features a custom programmed sky map which takes your location and shows you what is currently in the sky near you, and a simple in-session notepad. It also has a right-click context menu featuring my socials and projects (project links will be added when they are done lol) You can minimise windows as well. Please put any suggestions for new features you have in comments, I’d appreciate it a lot.
astrOS is a fullscreen web OS with nine astronomy apps built in vanilla JS: Sky Map uses real star positions calculated from your location, ISS Tracker polls live satellite data with haversine distance, Stargazing Conditions combines weather and moon phase into a seeing score, Solar System renders Keplerian orbits with clickable planets, Meteor Shower Tracker handles year-boundary showers correctly with proper countdown logic, plus NGC Catalogue, APOD, Mission Log, and Wallpaper Changer. I’m most proud of the Sky Map actually calculating real positions rather than faking it, and the ISS Tracker being genuinely useful for knowing whether the station is overhead. To test: open on desktop in fullscreen (geolocation needs permission and fullscreen mode to work), try dragging windows to screen edges to see snapping, check the meteor tracker during an active shower, click planets in Solar System to see their stats, and the Mission Log text persists across refreshes via localStorage. yes, i know it said 3 new features from webos1, but I got a bit too excited. have fun!...
|
1793775151.660149
|
1794639151.660149
|
|
18497
|
Helyx by @lix | Stardance
|
lix
|
2
|
325.0
|
5556
|
[{"ship_num": 1, "ts": "2026-1 [{"ship_num": 1, "ts": "2026-10-24T19:15:11Z", "hours": 16.0, "multiplier": 19.92, "payout": 379, "blessing": "neutral", "text": "NEW THINGS: Hackatime integration Fixed bugs Edited README.md Added GitHub Issues/PRs events rendering more What I made Helyx is a terminal app for Windows that keeps every local Git repository you own in one place and lets you commit, branch, resolve conflicts, repair broken repositories and answer GitHub Issues and Pull Requests without opening anything else. I spent a lot of time thinking about what kind of project I wanted to build. I wanted something that would be genuinely useful to developers in many different ways, and that is how I came up with Helyx, a TUI application that brings many Git and GitHub tasks into one place. What was challenging Learning new libraries, keeping the code organized as it grew, and designing every screen so it looks and feels as polished as I could get it. Deciding what to build next was harder than it sounds, because there was always more that could go in. What I am proud of It has everything I originally planned to include. The diagnostics screen finds what is wrong with a repository and offers the fix instead of just reporting it, the conflict resolver opens the conflicted block in its own editor, and the whole app speaks 8 languages. Now it even has new things that were mentioned at the top of this shipping message! How to try it Download the latest release from Helyx’s GitHub and run it. It installs into your user folder and adds Helyx to your PATH , so you can start it by typing helyx in any terminal (Windows Terminal recommended). Then pick Add project and choose any folder that contains your project. Helyx is open source, so you can also read the code or build it yourself. Just click See source code below.", "repo": "https://github.com/lixtheyt/Helyx", "demo": "https://github.com/lixtheyt/Helyx/releases/latest"}, {"ship_num": 2, "ts": "2026-08-22T22:08:55Z", "hours": 309.0, "multiplier": 19.45, "payout": 5177, "blessing": "neutral", "text": "What I made Helyx is a terminal app for Windows that keeps every local Git repository you own in one place and lets you commit, branch, resolve conflicts, repair broken repositories and answer GitHub Issues and Pull Requests without opening anything else. I spent a lot of time thinking about what kind of project I wanted to build. I wanted something that would be genuinely useful to developers in many different ways, and that is how I came up with Helyx, a TUI application that brings many Git and GitHub tasks into one place. What was challenging Learning new libraries, keeping the code organized as it grew, and designing every screen so it looks and feels as polished as I could get it. Deciding what to build next was harder than it sounds, because there was always more that could go in. What I am proud of It has everything I originally planned to include. The diagnostics screen finds what is wrong with a repository and offers the fix instead of just reporting it, the conflict resolver opens the conflicted block in its own editor, and the whole app speaks 8 languages. How to try it Download the latest release from Helyx’s GitHub and run it. It installs into your user folder and adds Helyx to your PATH , so you can start it by typing helyx in any terminal. No administrator rights are needed, and the .NET runtime is bundled inside. Then pick Add project and choose any folder that contains your project. Helyx is open source, so you can also read the code or build it yourself. Just click See source code below.", "repo": "https://github.com/lixtheyt/Helyx", "demo": "https://github.com/lixtheyt/Helyx/releases/latest"}]...
|
[{"post_id": 82417, "ts": "202 [{"post_id": 82417, "ts": "2026-10-24T19:10:02Z", "hours": 0.3264, "text": "Mysterious bug I solving some bug with UpdateHandler that my friend has been experiencing. It was that you could only check for updates for Helyx if you authorized your GitHub. Otherwise, you couldn’t! I was taking the update checking through a function that sent a HTTP request with a key that Helyx receives by authorization, in this situation it isn’t needed, but when not given in that function, it returns an error. So now you can freely check for updates for Helyx even without authorizing with GitHub!"}, {"post_id": 68799, "ts": "2026-09-15T19:30:38Z", "hours": 4.4892, "text": "Hackatime integration Hello there! A guy made a feature suggestion on Helyx’s GitHub, that I should add a Hackatime integration into it. So I was thinking… and thinking… and thinking and woah… I ADDED IT! It is not 1:1 like the web interface, that one is better & shows you more things but sadly this was everything that I could request from API (at least I think): Total Seconds Languages Repo URL Total Heartbeats First Heartbeat (DateTime) Last Heartbeat (DateTime) and when combining all of these information, I created a screen where you can see all of this specifically for your project. It works on the principe of authorization. You put in your Hackatime token which authorizes you and then when you go to your project and go on Hackatime Info, it prompts you to select the project from a list of projects that are assigned to your Hackatime account/token."}, {"post_id": 62263, "ts": "2026-09-05T15:31:03Z", "hours": 1.14, "text": "Fixed User Scripts bug So, every path block used Path.GetFullPath(path) instead of Path.GetFullPath(path, script.ProjectPath) . That means it was resolving relative paths against Helyx’s own directory, not your project’s. This is now fixed."}, {"post_id": 60348, "ts": "2026-09-02T17:13:41Z", "hours": 2.7431, "text": "Reviewing my codebase and fixing bugs Since all of the features that Helyx was supposed to be finished with are almost all done (maybe even all are done), I will now change my view to another projects for Stardance such as ThetaNexus . But that does not mean that now I will just forget about Helyx. I will be reviewing the codebase sometimes to find some bugs and fix them. You can help me with this, by making an Issue request on Helyx’s GitHub. So what bugs did I fix since the last devlog? I fixed line breaking in badge/status README editor. When you were inserting your badge/status into your README via Helyx’s README editor, it done… messy stuff to the README, not something like really bad what couldn’t be fixed by manually doing it, but it should now insert the badge/status exactly as you see it in the editor. I also introduced a new ‘Found state’ text instead of ‘Found’ text in IDE settings to avoid confusion. To avoid confusion because if an editor was found and you clicked on it… it wrote this: Found Found Found Not Found Found Set by user Now it writes this: Found state Found Found state Not Found Found state Set by user Most of the time, I was reviewing the codebase via Claude Code to actually check everything precisely."}, {"post_id": 56815, "ts": "2026-08-28T18:55:16Z", "hours": 1.7133, "text": "Replaced hardcoded string colors with Color members for code safety, fixed line breaking while assigning a status/badge Okay so Markup texts (those are the texts with color) were formatted in this format: \"[red]Hello World![/]\" So it was string-based. And if you accidentally added some character to it for instance: \"[redd]Hello World![/]\" <- Exception Helyx would crash. I mainly added this, because it is an open-source project. So if someone tried to edit it, they would only have to edit the string and they might have misspelled it. But now, when he goes into the codebase, he will see Color members and he just can’t misspell that, and if he would, compiler would alert him. Basically, now it is like this: $\"[{Color.Red}]Hello World![/]\" Okay so next I fixed line breaking. What does that mean? Well… In Helyx native README editor, so when you try to assign a status/badge, you’ll get that editor, when you try to add a status/badge to that line, you might have thought that it would be on the same line as the tags above it. But it didn’t… This was happening due to the comment markers for Helyx so Helyx knows where this status/badge is located and which status/badge it is. Now Helyx will put those comment markers in a way that prevents the line from breaking."}, {"post_id": 56645, "ts": "2026-08-28T14:17:12Z", "hours": 2.1092, "text": "Added GitHub Issues/PRs events rendering Originally, when you selected Manage GitHub Issues or PRs and opened some issues/PR. You could have only seen messages posted by users, but not when a label was assigned or when the issue/PR was closed. Well… Now you can! Now it displays the exact action that happened and when it happened! Of course, it is also translated to all languages that Helyx supports. Just making sure you didn’t think it wasn’t! I also cleaned up the code a little bit. Removed some useless usings and some files were in the wrong namespace, so that is fixed too."}, {"post_id": 54407, "ts": "2026-08-25T12:34:33Z", "hours": 1.2639, "text": "Edited README.md, again I was again editing the whole README.md, because reviewers weren’t happy with the current one. Well after spending another hour of editing the whole README.md file, I hope they won’t ask me to rewrite the whole README.md file again, because I don’t even know what else to add/remove/edit."}, {"post_id": 53900, "ts": "2026-08-24T16:30:00Z", "hours": 2.0894, "text": "Edited README.md I rewrote the README.md because of the ship review. I also added a couple of recommendations that are worth knowing when you use Helyx. I also removed the <summary> comments that Claude Code wrote for the documentation, I don’t think that anyone would have used them anyway."}, {"post_id": 52656, "ts": "2026-08-22T22:04:08Z", "hours": 0.4681, "text": "README.md update I replaced the title in README.md with a banner that contains the text Helyx. I tried a few versions I made and, well, I landed on the one you can see in Helyx’s README.md, or below!"}, {"post_id": 52636, "ts": "2026-08-22T21:23:40Z", "hours": 1.4575, "text": "Experimenting with the conflict solver I was thinking about adding a simpler conflict solver, where you wouldn’t have to delete the <<<<<<< , ======= and >>>>>>> markers yourself but would just pick either the first or the second version. But I realized it would be messier than I thought, so in the end I kept it as a basic editor where you remove the version you don’t want by hand."}, {"post_id": 52516, "ts": "2026-08-22T17:40:41Z", "hours": 4.2228, "text": "GitHub done, shipping Helyx today! Today I was messing with the GitHub page for Helyx, fixing the last bugs we found and working on the installer. For the installer I used Inno Setup, because it is the most recognized and the most used one. The point of using an installer is simple: it adds Helyx to PATH. Of course there were other options, but this one seemed like the best fit. We were fighting with the script for a while, because it was doing really weird things, like staying in the background after the installation finished. But those bugs are fixed now! README.md is done, all of those GIFs and screenshots are in it too, and I have to say it looks really good! I was also setting up the GitHub side of things, so the description, the tags, a GitHub Action and so on. With the help of Claude Code, we created the logo and the banner for the installer as well. The installer uses the same logo as Helyx. It’s just a basic H, because nothing else came to mind haha. I also asked Claude Code to review the codebase one last time, and yep, it looks fine! I told it to add the basic documentation comments as well, the <summary> kind. Let’s be real here, nobody does this, and if they do, something else writes it for them, usually an AI, because it understands the function better than the person who wrote it (I know that from my own experience hahaha)."}, {"post_id": 51969, "ts": "2026-08-21T23:29:24Z", "hours": 9.8508, "text": "New features, new languages, new problems. A new feature that I added is GitHub Actions! It is on the same principle as Manage Issues and Manage PRs, so you have a list of GitHub Actions, you pick one and you can control it, check its log, observe information about it. You can even run an action! I also added a refresh keybind to Manage Issues, Manage PRs and GitHub Actions. Before, you had to go back from the details of an issue/PR/action to the list and then return to the details. Now you don’t have to. You just have to press the keybind displayed in the footer that belongs to refresh. Yes! The Helyx Language System is finally complete! Italian & Portuguese are now available in Helyx! Lately I’ve been working on the README.md file. I was mainly making more GIFs & designing screenshots for it so it will look pretty and futuristic (in my opinion)! As I have mentioned in the title, NEW… PROBLEMS! People… you won’t believe what happened to me today… I use Helyx’s Git & GitHub for testing, so there is no official one yet, and I rarely commit changes or push them. Only when I test something. And it looks like it got back at me. Well… I told Claude Code to remove comments all over my codebase, because they were mainly scrapped code and some temporary information that I had there, that wasn’t used anymore. Okay, so I told it to remove them, and for some reason instead of removing comments, it deleted Helyx’s whole codebase. Thank god README.md was untouched haha. We had to decompile the .dll that was left over from testing Helyx’s latest version, and actually check the diff and rewrite it. We still don’t know if everything was brought back since for some reason Claude Code’s memory got wiped instantly when it realized that it deleted my whole codebase. There were no backups, no restore, no nothing. The only possible thing was to use the forgotten stash that I created and use the .dll as a map to restore Helyx’s outdated codebase and rewrite it again. So that’s what we did. Yeah, so I hope everything was brought back. Claude says it was, but after what it has done I don’t know if I trust it. Just kidding, everything should be back, because it compared the .dll with the rewritten code 1:1 and everything matched."}, {"post_id": 51403, "ts": "2026-08-21T02:37:22Z", "hours": 10.1656, "text": "More bugs fixed, new functions, README & Language System updates! Hello guys, once again at 4 AM! Bugs: As the title says, there are more fixed bugs. Diagnostics crashed Helyx if you ran a rebase in a terminal and hit a conflict. Now it doesn’t! Another fixed bug is that when you opened an issue in Helyx, the footer vanished. At first I was shocked, but it was a simple fix so now your footer doesn’t vanish. Another vanishing bug! The Languages row from the header vanished when you entered a tab where Layout class was being used. Now you will see your sweet programming languages used in your selected project. Guess what! Another vanishing bug! This time the whole header vanished when you exited .Live()! Now it is okay! New behaviour: I unified some color codes with some type of info. E.g. SHA is Dark Orange everywhere, Stash is Yellow, Date is Cadet Blue and Issue Number is Aqua. The README.md editor, when inserting badges/status now has a new keybind: backspace! It is different from DEL! DEL deletes the badges/status but backspace deletes the whole line, including the badge/status that was on that line. README The README is almost done! At least I hope! Claude was a big help here, because I wanted to create an insane README and we really did. Guys, you should be excited about the README file haha! Language System Translations for these languages are already done: English French German Russian Slovak Spanish So basically every language translation is already done. BUT I decided to add even more languages! The new languages that Helyx will support are: Italian Portuguese"}, {"post_id": 50335, "ts": "2026-08-19T14:33:20Z", "hours": 8.0847, "text": "Languages almost done, moving onto GitHub & README.md Well guys, Language System is almost done. It is powered by a Resources file that stores all of the translated strings. More bugs were found! But now, all of the bugs should be fixed with also many failsafes! Now, I want to complete the Language System because I am really close to finishing it. I also want to make the README.md for Helyx’s GitHub Repository. Originally I wanted to make it via Obsidian app, but it doesn’t have direct support for Wakatime, so I have to use VS 2026 native Markdown editor with the support of Markdown Editor v2 extension from Mads Kristensen. (not sponsored lol) I also heard that Obsidian app doesn’t use the same Markdown as GitHub does so there would be some things mistyped or not even rendered, but VS 2026 should be fully compatible with GitHub’s Markdown renderer, so we will see!"}, {"post_id": 49506, "ts": "2026-08-18T11:50:08Z", "hours": 6.5236, "text": "Fixing more bugs I fix bugs mainly with use of Claude Code, because hunting for bugs is not easy and this project is not a small one haha. I had to run MANY code review tools for this, because every time it kept finding new bugs. No idea how but it did. So what we fixed? If a GitHub comment had bold text split across two lines, opening that issue crashed Helyx before it drew anything. A file with a square bracket in its name (e.g. data[1].json) crashed Status, Diff, Commit, Stashes and Log. If anything held config.json open for even a moment, Helyx assumed it was corrupt, reset it, then crashed everywhere that looked for a project. If config.json was missing its Badges section, the startup migration quietly deleted every badge from every project. Committing saved a copy of the project taken before the confirmation prompts, so anything changed in between was silently thrown away. If you linked a GitHub repo during Push, the remote was created with an empty name. Syncing a status that had since been deleted crashed in the middle of a push. A commit message containing a square bracket crashed “View Full Message” (those are just bugs that were missing Markup.Escape() function). Applying a stash said “applied successfully” even when it conflicted. One bad path stored in config.json crashed “Add Project”. This is just a snippet of the amount of fixed bugs. I won’t write all of them here since it would take a lot of text and I am pretty sure that this is enough for you to understand that we fixed a lot of bugs haha. Right now I am going to do the Language System. I am not sure if I mentioned in some devlog, the list of languages that Helyx will support. If not… there it is: English Slovak Spanish French German Russian"}, {"post_id": 48471, "ts": "2026-08-16T20:37:52Z", "hours": 9.3269, "text": "Adding new features & fixing bugs I finished making “Analyze Project” which analyzes your whole project and prints stuff such as: Number of files Number of folders Size of the project on disk Number of lines Also you can now see what amount of what programming language makes your project. It also shows you the biggest files in your project directory. And also you can see Git information such as: Branch Number of commits First commit (date) Last commit Working tree .git size So it displays some maybe important and basic information that you may check sometimes or might be interested in. There were like 6 revisions of this because I was testing different styles & designs. I also found a lot of hidden bugs with help of Claude! Before talking about bugs, I will tell you something about new features that I added. Now, when you assign a badge or change a status and you don’t have markers in README.md yet in it, then it will ask you if you want to add them manually or via Helyx. What does that mean? Well, it opens a “text editor” in Helyx which displays README.md and you can insert the badges/statuses where you want instead of opening the file in notepad and inserting the markers manually. Overall it is way quicker to do it now via Helyx. Helyx’s Generic Text Editor is now even better! You can now use all of the arrows, before you could just use Left/Right Arrow to move cursor left or right. Now you can move between lines. Now you can also open your project’s wiki via Helyx. Be aware that it doesn’t check anything, if you have wiki or not. It directly opens the website for the wiki where it should have been for the current linked GitHub Repository. Let’s talk about bugs now! Open an issue called the Markdown handler function and it was accidentally calling GitHub 101 times, when it needed some info. Now it doesn’t. 🆒 Notes have an encryption system, so if you put some sensitive info into it, it couldn’t be directly taken from the file. Only via Helyx. There was a bug, where when you enabled encryption and edit notes of 2 projects, then you turn off encryption globally and open the first project’s notes, it decrypts… but after that you open second project’s notes, it won’t. This was due to having a global bool instead of per project bool when saving if it was encrypted. Fixeddd! Another bug! Sync Status & Sync Badges was deleting staging index. Funny that I was thinking about to restore the staging index whenever using it, but at the end… the logic was wrong 😭 Now it isn’t. Then there was a bug that when you unassigned a badge, it unassigned ALL badges. Fixed! Another bug linked to badges… Unassigning a badge didn’t remove it from GitHub. Yeah… fixed!!"}, {"post_id": 47110, "ts": "2026-08-14T19:16:58Z", "hours": 10.0108, "text": "Manage PRs done! Added few new things… I finally finished making Manage PRs. So now you can: Delete Comment Merge Review Close PR Reopen PR I also had to fix some design flaws and function flaws but now it should be all good. Before doing all of this, there was a bunch of GET requests… now? Now it is also a bunch of PATCH & PUT requests. Also, now when you’ll try to link your GitHub Repository with the local one, you will just select the one that is on your GitHub account. Another thing! When you have conflicts between the local repository and the remote one (GitHub) and you try to sync them, a lot of the time Notepad pops us and tells you to remove the version of the text that you don’t want. Well now Helyx does it too and doesn’t open notepad, but lets you do it directly in TUI interface in my very own notepad. Conflict solver also uses alternate screen for this. (there’s sadly no showoff image for this, because currently I don’t have anything to create a conflict on) I am not sure what to do next in a next devlog, since everything I really wanted to do is already done… well… not everything but everything around the main things is. Maybe I’ll move on another refactoring? Or finishing the language settings? Well, we will see!"}, {"post_id": 46111, "ts": "2026-08-13T03:18:59Z", "hours": 9.2472, "text": "Manage PRs displaying and some logic done After pulling another all-nighter I finished making the Pull Request display functions. List and details about each Pull Request is done and paging also works too (took it from manage issues ;] ). Pull Requests also contain filters such as: Open Drafts Assigned Reviewed and we can’t forget their counterparts either: Closed Ready Unassigned No reviewers Pull Requests now have comment selection and Markdown formatting, but functions to manage Pull Requests are not done yet. The only ones I managed to finish are: Comment Open Browser The biggest problem with PRs is going to be, that their functions and methods for executing those functions are more complex than the ones for Issues. I plan to add these functions for PRs: Delete Comment Merge Review Close PR Reopen PR I am pretty sure that all of this will be done in next devlog, so stay updated! This is going to be very cool, I think. Well, now I am going to sleep so good night everyone!"}, {"post_id": 45830, "ts": "2026-08-12T15:39:18Z", "hours": 8.5531, "text": "Manage Issues, completed! PRs, incoming… Manage Issues is now fully completed. I still had a few issues with paging and rendering but now they are fixed. Now you can select a message and delete it & edit it. But also now you can create a comment, lock an issue, unlock an issue and create an issue. I also added a thing that I hope will be appreciated, Helyx renders Markdown from GitHub Issue comment and when you comment via Helyx, Helyx gives you Markdown options such as: Bold Text Italic Text Code Text List Quote Also, when you don’t provide a text to a comment in GitHub, Helyx will say that “No description was provided.” So the same thing as GitHub already does, but in Helyx you must provide text. Why? Because why would you create a comment with no text? So I banned adding a comment with no text. Okay, that would be everything! It was fun to create this because everything was working so well, except the paging system… that was painful to make even with Claude’s help. As I said in past devlogs, after Issues I am going to move to PRs. So yeah, let’s work on PR. I hope it won’t be harder to make, because a PR is a type of Issue in GitHub, so I hope I will use the same function logic and functions and callbacks to make it."}, {"post_id": 45232, "ts": "2026-08-11T15:56:35Z", "hours": 9.2425, "text": "Paging done, functions almost! I finished making the logic for rendering issues. In the last devlog it was just displaying all of the issues at the same time. No paging system so if there was a lot of issues or long issues, they would simply… not appear. It took me a really long time to work this out. I was mainly switching back and forth the rendering logic all the time and it went so far, that I had to use Claude to help me with it. At the end, I ended up with a rendering logic that I am not really keen on, but it is the best one that can be used in Helyx and TUI environment. Main obstacles were the Spectre.Console rendering functions and classes that were under IRenderable interface. And also the limitations of Panels, Grids… Layout had everything I needed . I wanted to cut the part which couldn’t be rendered and it should have looked like, like an unfinished Panel. Well, this was impossible. Without changing the core code of Spectre.Console or creating own system for making Panels it was impossible. Also, I haven’t seen it as something that WOULD NEED an own system that would render comments. So I just made it when a comment cuts, it creates whole Panel with part of the comment that can be rendered and at the bottom is text saying that it continues on the next page… and on the other page at the top there’s text that, hey, it continues here! Let’s finally talk about the Issue functions! I finished some simple one like: Close Reopen and create an issue… But I still have to create a system that can let you: Comment Edit comments Delete comments Lock issue Unlock issue Those are currently in WIP, but in the next devlog they’ll be most probably finished and after everything is done with issues, I will move to Pull Requests!"}, {"post_id": 44672, "ts": "2026-08-10T16:18:14Z", "hours": 9.8836, "text": "Manage Issues, at your service. After a painful development period I am again here, writing devlog! What changed? Good question! Manage Issues is partly done! I still have to finish making the actual actions but displaying is somewhat finished. When you go to ‘Manage Issues’, you will firstly see a list of issues that are on your GitHub repository. From there you can already see some details about the issues such as: Number State Title Labels Comments (number) Updated (time) Above them are filters, currently those are the available filters: All -> All Commented -> Issues has some comments Assigned -> Issues that have some assignees Labels -> Issues that have some labels But that is not all! There are also their counterparts: No comments Unassigned Unlabeled (there’s no inversion of All because why would you need filter None) Yeah, so you can invert your filters… When you select an issue at the very top you will see its number, then you will have a panel with details about the issue with its title and: State Author Opened (time) Labels Assignees Right under these details are all of the comments in chronological order. When it is done, it will also show the whole timeline of each issue. So when this and this label was added/removed… when was this assignee assigned/unassigned… when was this issue closed/opened…. Of course I am going to add actions so you can add a comment, close issue, open issue, etc… When I’ll finish Manage Issues, I will go to work on Manage Pull Requests. It shouldn’t be that different because Pull Requests are by GitHub a kind of Issue but they are also not the same, so different classes, types, etc… Well, wish me luck people… or should I say… Stardancers?? P.S.: Sorry for the grammar in images in comments. I did it very quick for the preview."}, {"post_id": 44020, "ts": "2026-08-09T14:52:22Z", "hours": 9.7869, "text": "Diagnostics done, other stuff too and some changes! Diagnostics are now fully done! When something messes up, it will give you options to fix it! Some time ago I created GitHub Synchronization settings for managing what to sync with GitHub, so what to retrieve and send with those options: Sync status with GitHub repository Sync badges with GitHub repository Fetch GitHub repository topics Fetch GitHub repository stats Use GitHub’s language detection instead of Helyx’s I created a brand new tab called ‘GitHub Actions’ where this setting is. GitHub Actions is meant to contain all of the actions that are mainly linked with GitHub endpoints. I kept few such as Push, Pull, Sync in Git Actions due to how the layout is already created. Also I added when you are rebasing and it fails, it automatically gives you a prompt to cancel it. So repair it… GitHub Actions will contain a new stuff that will come to Helyx! Managing Issues and Pull Requests!! Maybe also workspaces/actions but I will see how difficult that is and how it is needed/useful in Helyx. Another new function is, that when there’s an update for Helyx and I change the GitHub OAuth scope because of new features… Helyx will warn you and tell you to reauthorize to make sure every function will work correctly. Before this change, Helyx was using its folder name as a name of the project and as a repository name for GitHub. Now, when you add a project to Helyx, Helyx will ask you what’s its name and when you will try to use some GitHub function for the first time on your newly added project on Helyx, it will request a GitHub Repository name from you. ;) There’s still a lot of things to add. Honestly I thought that Helyx was at the very end like 50 hours ago and look! There are many more functions to add haha!"}, {"post_id": 43404, "ts": "2026-08-08T17:00:23Z", "hours": 8.0208, "text": "Doctor Git As you may know, right now I am working on Diagnostics. I am almost done with fully displaying all of the health checks about your Git repository. But I still have to finish all of the fixing actions that it will have. Diagnostics will mainly be for a case where something happens in Helyx and it will need to be fixed. The main idea of it is not aimed at resolving issues with your Git repository outside Helyx. But it may resolve some because you may run into the same issue as you had in Helyx of course. In the last devlog I said that I put GitHub Topics off. Well, that did not happen! I finished displaying GitHub Topics!! I think in some devlogs I said that it was for managing GitHub Topics. Managing meant like adding, removing, editing. Well, that wasn’t actually my main point. I just wanted it to show you your currently assigned topics in GitHub. I also didn’t see a big reason in adding Add, Remove, Edit functions for topics. Topics rarely changed, honestly and the most intuitive way would be doing it via GitHub web interface."}, {"post_id": 42869, "ts": "2026-08-07T20:34:12Z", "hours": 3.6694, "text": "More bugs are appearing, and being fixed!! So since Helyx is already far and has many advanced functions, it also has some bugs. Today when I was experimenting with assigning a project and syncing it with GitHub, I found out, that if you try to sync the projects in a wrong way… it will not work. For that reason I added more fail-safes to make sure that this will be eliminated. I can’t confirm yet if those fail-safes work, because I am also working on a new Diagnostics action in Git Actions so if something goes wrong, you can fix it by the error Helyx gives you. Right now my testing project is in a state of “Git corrupted” (no idea what I should call it) where rebase was aborted. Because of this, I had to put the “GitHub Sync Topics” synchronization off until later, so I can focus on fixing these major bugs. Also another bug came to my mind that I fixed… Helyx works on a principle of directory paths. Each project is saved in config file under its own unique GUID and its path. The bug is that when you try to rename the directory, the project won’t be found and it will be removed from Helyx. Now, you can either let Helyx find it automatically (sadly can easily fail) or you can select project manually in explorer (recommended!!!)."}, {"post_id": 42404, "ts": "2026-08-07T02:57:49Z", "hours": 4.2367, "text": "Sync finally done!! It’s 5 AM and I finished “Sync badges with GitHub Repository” and “Sync the status with GitHub repository” (this was already done, but with the enum version of status). I added also a few fail-safes so when you assign some badge or status and then delete it, it will also delete it from GitHub and project. Now it won’t be a ghost that you cannot get rid of haha. This was a little more difficult than I expected to do, the fail-safes because the local changing mechanism and syncing mechanism were written inline in the same function. The only thing that was dividing them was an if statement. It was interesting to make this. To make sure everything will work fine. Even though it didn’t MANY TIMES. Now I will focus on syncing GitHub topics. Wish me luck! P.S.: Forgot to mention, that I have to add this “On Status/Badge Edit, ASAP sync with GitHub” with Edit. I almost forgot lol, just came into my mind. I hope that COPY+PASTE will be enough and I won’t have to create another syncing system specifically for edits…"}, {"post_id": 42259, "ts": "2026-08-06T21:43:48Z", "hours": 8.6897, "text": "Never expected it to be this hard So the last days I was again changing the structure of my solution and trying to get on with it. It took me a while to create one that Claude agrees with and is good for such open-source projects. Anyways, this was the easy part. In my last devlog I said that I completed Custom Statuses & Custom Badges. Well… I did! But then I found out, that my system was bad… and when I say bad I mean it wasn’t thought out. I found out about all of this when I finished the edit action for both. Originally I used Dictionary<string, TagDefinition>. Key was name of the Status/Badge and TagDefinition was the class of one of them which also has name property. But Helyx was not prepared for this, so for the last days I redid the whole system eight times. Once I used Dictionary, once I used List, then HashSet, then Dictionary, then Dictionary with other types and so on. I just couldn’t settle on the correct type for it. Until now, it took so long even though it is so primitive because it simply didn’t come to my mind and when I was asking Claude for suggestions of how could it be made, it didn’t think of using this type. The final type is simply… Dictionary<Guid, TagDefinition> AND A LOT OF CHANGES. Yeah… don’t worry guys! I am totally devastated by doing this over and over even though it was so simple & primitive to do. Well… maybe not really primitive because the changes were also difficult to do. I mainly didn’t want to use the GUID system because I have Custom Statuses but also Built-in Statuses and I was really worried about Built-in statuses having GUID assigned to them. Those sync options with GitHub are still in work, but I finished the GitHub Repository Stats viewer after a lot of experimenting with layouts and designs/effects/colors. I’m looking forward to the next devlog guys! I hope Helyx will be your good coworker that will actually count for something hah! P.S.: I also made that text of colors is grammatically formatted. At least it should be…"}, {"post_id": 40755, "ts": "2026-08-04T14:24:15Z", "hours": 6.5064, "text": "Adding Custom Statuses, Custom Badges and even more! Here we are again! Today I added: Custom Statuses Custom Badges WIP: Sync badges with GitHub repository Sync topics with GitHub repository My original status system for projects was a hardcoded enum with statuses “Active”, “Inactive”, “Paused” and “Archived”. Then I had a lot of switches which determined color of markup based on which enum it is hah. As you may already know, enums cannot be changed in runtime :) What does that mean? That users cannot add their own statuses in Helyx directly… They would have to hardcode into Helyx their own statuses and that’s just impractical, no? That’s why I spent below mentioned amount of hours redoing so many things to make it actually work and I even learned something from this! That JSON Parsers and Colors are NOT huge friends! (genuinely, I HAD NO IDEA why it wasn’t working until AI told me that JSON parsers cannot translate Color structs). Custom Statuses/Badges currently have Add/Delete functions and right now I am going to add also Edit function, so when you accidentally create a status/badge with wrong color, you don’t have to delete it and create it again :) (just saved 10seconds of your life). I also recategorized my whole codebase with help of Claude Code. I told him to review my whole codebase and suggest what classes, enums, interfaces should be in which files and those files in which folders. It was fun, finally something where I did not have to concentrate much and chill and watch something when doing it. Well, now it is not much fun when functions that I was using are in different files and some classes have different names. But at least my codebase looks more professional! (before this I had like 10 files with a bunch of lines where classes were stacked…) Also, about the WIP stuff above… Sync badges with GitHub repository is going to be something like the Sync status with GitHub repository. It will just pop up in your README.md based on where you put the headers which Helyx will give you for that specific badge. Sync topics on the other hand are classic topics of the repository which you can see in top right corner of your repository page. It will mostly show you which topics are assigned to your repository in Helyx but I’ll make it also so you can assign/unassign topics from your repository. I’m thinking of adding more GitHub Synchronization options, but none are currently coming to my mind. Maybe something with actions, no idea yet, or local AI that will explain to you errors given by Helyx when you will be trying to do something. We will see!"}, {"post_id": 40227, "ts": "2026-08-03T17:05:06Z", "hours": 5.3314, "text": "Settings and Git pages are receiving more stuff! I added for Settings page: Notes Settings Updates and for Git page: Undo Commit Redo Commit as the name says, Notes Settings are for changing properties of global Notes on every project. There is only one setting that came to my mind and that is encryption. Some of you might paste into it something personal or confidential. Well, this makes sure that these info CANNOT be taken from raw file, but from Helyx directly. (thinking about adding password mechanism lol) Updates, yeah, it looks for updates for Helyx . Undo Commit is a special one, when you commit something and for some reason you want to go back you just undo it. On the other hand, if you somehow accidentaly clicked on Undo Commit or now you want to redo the undo, you can with Redo Commit. My plan now is to add again more functions, such as Custom Badges, option to sync the Custom Badges with your GitHub repo (it will pop up in README.md) and also add Tags sync, so you can edit your repository’s Tags via Helyx. Oh yeah, also going to add custom project status because some people may say that having statuses such as “Active”, “Inactive”, “Paused”, “Archived” is limiting (custom ones will yes, also be synced with GitHub). :) I also mustn’t forget to add the translations for other languages. I am going to do this at the end due to new text appearing every time I add something new."}, {"post_id": 39660, "ts": "2026-08-02T19:45:40Z", "hours": 6.2036, "text": "Slowly, but surely We are almost at the end (if no other function to add will come to my mind) and I was messing with access modifiers, accessors, refactoring names of variables, Tasks, voids, properties. I was adding exception handling keywords and many ifs to make sure there will be no bugs and that almost every exception will be caught. I was doing this manually so I might have missed some places where the exception handler is needed but yeah we shall see! I also enabled a search bar, so when you will be looking for your project in Helyx and you have many projects added, you can search for yours! I was also changing styles of my old menus and theirs logic because they weren’t done very well in comparison with style that I am using now… Funny story: while I was messing with the access modifiers and accessors I actually bricked the whole Helyx, because functions that were supposed to resolve configuration file and read/write into it couldn’t. I thought I accidentally removed something important but at the end it was just that, that I was changing the access modifiers and accessors."}, {"post_id": 39059, "ts": "2026-08-01T18:54:21Z", "hours": 9.4842, "text": "Added new setting, finished overwrite languages and still working on show stats I have finished the overwrite languages function which uses GitHub’s programming languages detection system over Helyx’s one. I added a setting where you can choose your identity (Git -> local, GitHub -> remote). Local is based on Git’s settings and remote one is accessible after authorization with GitHub. I am currently working on retrieving and displaying the GitHub repository statistics. I am using charts to display it nicely and simply. Currently it is showing only Stars, Watchers, Forks and chart of used languages. I also added a few informative labels that tell you that something is actually happening and the program did not freeze. If I didn’t add this you would be looking at an empty black screen. One of the last things I added is active GitHub Authorization Token checker and resolver. Before this if you revoked your OAuth with Helyx on GitHub page, Helyx would think that it is still authorized to your GitHub account, now it checks it and if you revoke it online, Helyx will disable functions that are only accessible when you are authorized via GitHub."}, {"post_id": 37815, "ts": "2026-07-30T19:23:03Z", "hours": 4.9556, "text": "User Scripts done? What next?? As written above, I have finished User Scripts. Yeah, they don’t have that many functions as before, but I am going to add some, that will actually be useful and will stay in Helyx. Right after that I’d want to move to add more things to GitHub Synchronization settings that are per project. This is mainly to make the Helyx project dashboard look better with more interesting info about your current repository. Be aware that you have to be authorized in Helyx via GitHub to access those settings. This may sound funny, but I was thinking about adding Add-on manager to Helyx. No idea how I would make it yet or what packages would even Helyx have, but I hope that after some brainstorming I will have an answer. Before that, I will again think for a while if it is a good idea and if it is even needed. But surely it sounds cool to me, to someone who has never made an add-on manager for his program. At the end I want to transfer my view to hardening the code. Many checkings, many dialog boxes what’s wrong, and such things, so your Helyx window just doesn’t close after you mess up with configuration file or you do something that no one would ever do in his lifetime. ;)"}, {"post_id": 37545, "ts": "2026-07-30T10:56:21Z", "hours": 10.0053, "text": "Changing my mind over User Scripts So I have finished all of these User Scripts functions and I found out something interesting, that made me remove some of them after I finished them. In the devlog before, I wrote a list of actions that are in Helyx such as… Wait Until, If, Loop, Set/Get Variable, etc… . Well, I found out that making some that I have mentioned would be useless, because I imagined User Scripts mainly as an automatic actions for testing your project, but how could your program get script’s variable from Helyx or set/change it. The same applies for If, If would be also complex to set. With each If Action there would be x^2 (if my calculations are correct) more node pathways and without making some really good UX in TUI environment, it would be difficult to find your way around."}, {"post_id": 36457, "ts": "2026-07-28T16:14:12Z", "hours": 9.1958, "text": "Making User Scripts I am currently working on the User Scripts as I have mentioned in older devlogs. I must say that this is one of my first interactions with interfaces in C# because there was not a huge reason to use it in my code… until now. I must say that User Scripts is the most difficult thing in all Helyx to make because you have to think on everything… how this will work, how shall we display it, how to make it versatile so other actions work with it too, etc… I made the system for adding Blocks (Actions = Blocks) to Scripts and right now I am implementing dialogs to insert properties for each action, such as Duration for Wait Action. These are current actions that are in Helyx (you can suggest new ones in comments) : Wait Wait Until If Loop (should be something like while(), might change the idea of it) End (ends script, so like return/break) Set Variable Get Variable Compare Random Log (logs text) Execute (executes command) Open (opens directory) Create File Create Folder Delete File Delete Folder Right after that I would want to move to make the UI look overall better and function better. Welp, we will see in my next devlog the progress I will make."}, {"post_id": 35822, "ts": "2026-07-27T14:40:58Z", "hours": 5.6561, "text": "Backup system, done!! I finished the Backup system and also had to fix some major issues I had in helper functions due to the “project looking up system” migration… yeah… awkward name, I know. Now that the Backup system is done, let me continue and begin to work on User Scripts. Just realized that I have to come up with how it will work…"}, {"post_id": 34093, "ts": "2026-07-24T15:52:43Z", "hours": 8.3447, "text": "Losing sanity is not fun I honestly think I’ll go insane soon. I have changed the whole system of how Helyx saves Projects to its config file and how every function… EVERY FUNCTION works with it. I just have to say that I’ll try my best to make the code better than the one I am currently editing because 18h spent on redoing the whole codebase (revamping included from devlog before) is 1. crazy and 2. even more crazy. It’s wild how a tiny thing can ruin your whole codebase, I hope I will finish it quickly, because I want to continue working on the Backup system and after that on the User Scripts."}, {"post_id": 31940, "ts": "2026-07-20T19:06:16Z", "hours": 9.93, "text": "Cleanup time! I have completely revamped my code… I removed a lot of unused code that was either used for experimenting or was scrapped and I forgot to remove it. Before removing some of the code, I actually tried something with it… but then I realized that they were commented for some reason. I refactored parts of my code to look overall simpler with lambda expressions and LINQ. Not sure if it is more readable now, but it works so it’s fine. If anything, I’ll just add a comment so I know what it does instead of looking at it and brainstorming what it could be. I decided to mainly work on the Backup system because I think that User Scripts will be more complicated to make."}, {"post_id": 31333, "ts": "2026-07-19T17:11:07Z", "hours": 6.3575, "text": "Local & Remote Repository status I just finished making the status manager, so now you can change your status locally… but also remotely! Remotely means on GitHub, not like via some controller. Because of this, I created a tab called GitHub Synchronization, where you can enable/disable settings that are linked with GitHub and retrieve/push from/to GitHub. Now, I am planning to work on Backup system and User Scripts."}, {"post_id": 29735, "ts": "2026-07-16T20:33:20Z", "hours": 9.7861, "text": "Git Actions family is getting EVEN bigger! I have finally finished a lot of major stuff and also tried to make some additional things that MAY be added in the future. I finally added Stashes, Pull, Push and Sync to the Git Actions, so now they work! Also, all of Git functions have some automatic repair, so if you do something you shouldn’t, it should be alright… but it is not 100% so don’t try your luck! I still have to finish and a bunch of stuff with it so you can do whatever you want with it without editing the code itself! I was thinking of adding some label for your GitHub repository which you can control via Helyx. Like status… yeah… let’s add a badge that will act as a status info of your project!"}, {"post_id": 26717, "ts": "2026-07-11T17:47:55Z", "hours": 12.8578, "text": "Git Actions family is getting bigger! We’ve made a lot of progress! More of the Git Actions are done such as… Status Stage Commit Diff Create Branch Switch Branch Delete Branch Right now I am working on another: Pull Push Sync Stashes I hope they will be done soon! Stay updated!"}, {"post_id": 21798, "ts": "2026-07-03T22:31:34Z", "hours": 45.9456, "text": "Huge updates!! Since it is my first time working with Spectre.Console library, I was trying a lot of stuff with it. When I was somewhat happy with what I learned, I cleaned up the code due to the amount of useless lines and duplicated/not used variables . 1, Updated UI/UX I have updated the UI/UX so it looks more modern-ish. This new UI/UX design is for now only on the main pages of Helyx… but I plan to add it to every page very soon! 2, More actions! (even more will be available in the future) I have added more Git Actions that are still in WIP. I also created templates in code of what actions I’d want to add later. I’ll tell you more about them when they will be finished (SOON). 3, More stuff in Settings! I have added more settings into Settings :D Now you can select Default IDE, see if your IDE was found in your system, if not you can manually select the .exe of it. You can also manage the configuration file, well, reset it. 4, Projects sorting Projects are now sorted based on its status. 5, You can manage the projects for Helyx You can now delete the projects and change the status. 6, Future bugs & lots of if statements My code was completely unsafe up to this point, so I had to add many of try/catch and if statements to make it safe. I was experimenting with Spectre.Console, because I have never worked with it. I made some cool stuff that I will add in the future to Helyx! I understand it now better! All of this was quite difficult for me to do, since as I said, on such project where I am using C# with its basic types… I was mostly a Unity C# Developer, where Unity had its own classes and functions and callers that were standard."}, {"post_id": 10796, "ts": "2026-06-17T18:25:25Z", "hours": 14.0269, "text": "Helyx, the IDE detective I’ve been working on the IDE detection system. This took me a long time because I was testing many different ways of how to detect it and then sort them from most probable to least. At the end I have selected the one that uses points based on what the Project includes in its path… so files, extensions and directories. I was experimenting with the Language system that I will make in the future. I just want to be sure what I am doing so later, I won’t be in panic what now and what was my original plan. I have also refactored the code to some point but it is still not great after all of these things I have done above … so still need to do this. I redesigned the menus and made it more universal and made the menu easier to navigate in. I think my progress is going kinda good so far and it looks promising for me. I also added some basic Git function like “git status” but I am about to add more. I’d appreciate if you would write into comments some functions that I should add to Helyx. Not sure if I already mentioned this but I am also planning to add a feature so you can create your own shortcuts for your projects like… some testing shortcut. For instance, you have some project you want to test and you need to build it, then tweak some settings and at the end you actually test. With this, you can do all of this just by one click… Well, that’s at least my imagination and I am not sure if it will get to such point where you can do such tasks but we’ll see Wish me luck!"}, {"post_id": 9561, "ts": "2026-06-15T22:44:15Z", "hours": 4.0336, "text": "Project handler, done for now I was thinking of adding a translation system for Helyx. I was experimenting with a lot of systems how to do it… well, I might keep this for the end of Helyx so at the end I translate all of the strings. I added the “Add Project” system and some basic detection systems for it such as… Project Name Path Languages (used programming language in project) Used IDE for the project then it will ask you if you really, but REALLY want to add the project and if you proceed it will be added to your Projects menu. After that you can open your Project and see such basic info as… Status Last modified Languages Used IDE Is a GIT Repo I am thinking about adding more, removing some and making it overall more versatile because versatile applications are just the best ones. For now, I created some basic functions for your Projects such as… Open in VS Code Git Status Remove Project (from Helyx) but these are the ones already working, but I am still trying to make them more versatile :p … but there’s more functions that I am currently working on, that I hope won’t be scrapped and I will mention them in next devlog!"}, {"post_id": 9329, "ts": "2026-06-15T17:24:04Z", "hours": 7.76, "text": "Lots of new ideas, lots of scrapped ideas Lately I’ve been working on a way to search for projects automatically but I had to scrap the idea because I didn’t like it at the end… so now I am making it so you can add your own projects and some IDE integrations. I was also trying multiple libraries for TUI interface integration and GUI support with other libraries and input devices. These hours were full of scrapping & making new ideas, but that’s what programming is about!"}, {"post_id": 8639, "ts": "2026-06-14T11:15:51Z", "hours": 1.3039, "text": "The beginning… So I have finally begun to work on this! I was thinking a lot what to create for Stardance and it looks like this might be something I want to create! Originally I wanted to create this in Python but then I really quickly found out that my Python skills wouldn’t be enough to create something like this and I didn’t want this to be a vibe-coding project… SO HERE WE ARE… using C#! So far so good, I guess… Currently I am working on the configuration handler which will have functions for implementing and retrieving info from the configuration file. After that, I am planning to make the interface somewhat versatile, so it is possible to adjust it for yourself or add some new options and such."}]...
|
Title: Helyx by @lix | Stardance
Devlogs:
The beg Title: Helyx by @lix | Stardance
Devlogs:
The beginning… So I have finally begun to work on this! I was thinking a lot what to create for Stardance and it looks like this might be something I want to create! Originally I wanted to create this in Python but then I really quickly found out that my Python skills wouldn’t be enough to create something like this and I didn’t want this to be a vibe-coding project… SO HERE WE ARE… using C#! So far so good, I guess… Currently I am working on the configuration handler which will have functions for implementing and retrieving info from the configuration file. After that, I am planning to make the interface somewhat versatile, so it is possible to adjust it for yourself or add some new options and such.
Lots of new ideas, lots of scrapped ideas Lately I’ve been working on a way to search for projects automatically but I had to scrap the idea because I didn’t like it at the end… so now I am making it so you can add your own projects and some IDE integrations. I was also trying multiple libraries for TUI interface integration and GUI support with other libraries and input devices. These hours were full of scrapping & making new ideas, but that’s what programming is about!
Project handler, done for now I was thinking of adding a translation system for Helyx. I was experimenting with a lot of systems how to do it… well, I might keep this for the end of Helyx so at the end I translate all of the strings. I added the “Add Project” system and some basic detection systems for it such as… Project Name Path Languages (used programming language in project) Used IDE for the project then it will ask you if you really, but REALLY want to add the project and if you proceed it will be added to your Projects menu. After that you can open your Project and see such basic info as… Status Last modified Languages Used IDE Is a GIT Repo I am thinking about adding more, removing some and making it overall more versatile because versatile applications are just the best ones. For now, I created some basic functions for your Projects such as… Open in VS Code Git Status Remove Project (from Helyx) but these are the ones already working, but I am still trying to make them more versatile :p … but there’s more functions that I am currently working on, that I hope won’t be scrapped and I will mention them in next devlog!
Helyx, the IDE detective I’ve been working on the IDE detection system. This took me a long time because I was testing many different ways of how to detect it and then sort them from most probable to least. At the end I have selected the one that uses points based on what the Project includes in its path… so files, extensions and directories. I was experimenting with the Language system that I will make in the future. I just want to be sure what I am doing so later, I won’t be in panic what now and what was my original plan. I have also refactored the code to some point but it is still not great after all of these things I have done above … so still need to do this. I redesigned the menus and made it more universal and made the menu easier to navigate in. I think my progress is going kinda good so far and it looks promising for me. I also added some basic Git function like “git status” but I am about to add more. I’d appreciate if you would write into comments some functions that I should add to Helyx. Not sure if I already mentioned this but I am also planning to add a feature so you can create your own shortcuts for your projects like… some testing shortcut. For instance, you have some project you want to test and you need to build it, then tweak some settings and at the end you actually test. With this, you can do all of this just by one click… Well, that’s at least my imagination and I am not sure if it will get to such point where you can do such tasks but we’ll see Wish me luck!
Huge updates!! Since it is my first time working with Spectre.Console library, I was trying a lot of stuff with it. When I was somewhat happy with what I learned, I cleaned up the code due to the amount of useless lines and duplicated/not used variables . 1, Updated UI/UX I have updated the UI/UX so it looks more modern-ish. This new UI/UX design is for now only on the main pages of Helyx… but I plan to add it to every page very soon! 2, More actions! (even more will be available in the future) I have added more Git Actions that are still in WIP. I also created templates in code of what actions I’d want to add later. I’ll tell you more about them when they will be finished (SOON). 3, More stuff in Settings! I have added more settings into Settings :D Now you can select Default IDE, see if your IDE was found in your system, if not you can manually select the .exe of it. You can also manage the configuration file, well, reset it. 4, Projects sorting Projects are now sorted based on its status. 5, You can manage the projects for Helyx You can now delete the projects and change the status. 6, Future bugs & lots of if statements My code was completely unsafe up to this point, so I had to add many of try/catch and if statements to make it safe. I was experimenting with Spectre.Console, because I have never worked with it. I made some cool stuff that I will add in the future to Helyx! I understand it now better! All of this was quite difficult for me to do, since as I said, on such project where I am using C# with its basic types… I was mostly a Unity C# Developer, where Unity had its own classes and functions and callers that were standard.
Git Actions family is getting bigger! We’ve made a lot of progress! More of the Git Actions are done such as… Status Stage Commit Diff Create Branch Switch Branch Delete Branch Right now I am working on another: Pull Push Sync Stashes I hope they will be done soon! Stay updated!
Git Actions family is getting EVEN bigger! I have finally finished a lot of major stuff and also tried to make some additional things that MAY be added in the future. I finally added Stashes, Pull, Push and Sync to the Git Actions, so now they work! Also, all of Git functions have some automatic repair, so if you do something you shouldn’t, it should be alright… but it is not 100% so don’t try your luck! I still have to finish and a bunch of stuff with it so you can do whatever you want with it without editing the code itself! I was thinking of adding some label for your GitHub repository which you can control via Helyx. Like status… yeah… let’s add a badge that will act as a status info of your project!
Local & Remote Repository status I just finished making the status manager, so now you can change your status locally… but also remotely! Remotely means on GitHub, not like via some controller. Because of this, I created a tab called GitHub Synchronization, where you can enable/disable settings that are linked with GitHub and retrieve/push from/to GitHub. Now, I am planning to work on Backup system and User Scripts.
Cleanup time! I have completely revamped my code… I removed a lot of unused code that was either used for experimenting or was scrapped and I forgot to remove it. Before removing some of the code, I actually tried something with it… but then I realized that they were commented for some reason. I refactored parts of my code to look overall simpler with lambda expressions and LINQ. Not sure if it is more readable now, but it works so it’s fine. If anything, I’ll just add a comment so I know what it does instead of looking at it and brainstorming what it could be. I decided to mainly work on the Backup system because I think that User Scripts will be more complicated to make.
Losing sanity is not fun I honestly think I’ll go insane soon. I have changed the whole system of how Helyx saves Projects to its config file and how every function… EVERY FUNCTION works with it. I just have to say that I’ll try my best to make the code better than the one I am currently editing because 18h spent on redoing the whole codebase (revamping included from devlog before) is 1. crazy and 2. even more crazy. It’s wild how a tiny thing can ruin your whole codebase, I hope I will finish it quickly, because I want to continue working on the Backup system and after that on the User Scripts.
Backup system, done!! I finished the Backup system and also had to fix some major issues I had in helper functions due to the “project looking up system” migration… yeah… awkward name, I know. Now that the Backup system is done, let me continue and begin to work on User Scripts. Just realized that I have to come up with how it will work…
Making User Scripts I am currently working on the User Scripts as I have mentioned in older devlogs. I must say that this is one of my first interactions with interfaces in C# because there was not a huge reason to use it in my code… until now. I must say that User Scripts is the most difficult thing in all Helyx to make because you have to think on everything… how this will work, how shall we display it, how to make it versatile so other actions work with it too, etc… I made the system for adding Blocks (Actions = Blocks) to Scripts and right now I am implementing dialogs to insert properties for each action, such as Duration for Wait Action. These are current actions that are in Helyx (you can suggest new ones in comments) : Wait Wait Until If Loop (should be something like while(), might change the idea of it) End (ends script, so like return/break) Set Variable Get Variable Compare Random Log (logs text) Execute (executes command) Open (opens directory) Create File Create Folder Delete File Delete Folder Right after that I would want to move to make the UI look overall better and function better. Welp, we will see in my next devlog the progress I will make.
Changing my mind over User Scripts So I have finished all of these User Scripts functions and I found out something interesting, that made me remove some of them after I finished them. In the devlog before, I wrote a list of actions that are in Helyx such as… Wait Until, If, Loop, Set/Get Variable, etc… . Well, I found out that making some that I have mentioned would be useless, because I imagined User Scripts mainly as an automatic actions for testing your project, but how could your program get script’s variable from Helyx or set/change it. The same applies for If, If would be also complex to set. With each If Action there would be x^2 (if my calculations are correct) more node pathways and without making some really good UX in TUI environment, it would be difficult to find your way around.
User Scripts done? What next?? As written above, I have finished User Scripts. Yeah, they don’t have that many functions as before, but I am going to add some, that will actually be useful and will stay in Helyx. Right after that I’d want to move to add more things to GitHub Synchronization settings that are per project. This is mainly to make the Helyx project dashboard look better with more interesting info about your current repository. Be aware that you have to be authorized in Helyx via GitHub to access those settings. This may sound funny, but I was thinking about adding Add-on manager to Helyx. No idea how I would make it yet or what packages would even Helyx have, but I hope that after some brainstorming I will have an answer. Before that, I will again think for a while if it is a good idea and if it is even needed. But surely it sounds cool to me, to someone who has never made an add-on manager for his program. At the end I want to transfer my view to hardening the code. Many checkings, many dialog boxes what’s wrong, and such things, so your Helyx window just doesn’t close after you mess up with configuration file or you do something that no one would ever do in his lifetime. ;)
Added new setting, finished overwrite languages and still working on show stats I have finished the overwrite languages function which uses GitHub’s programming languages detection system over Helyx’s one. I added a setting where you can choose your identity (Git -> local, GitHub -> remote). Local is based on Git’s settings and remote one is accessible after authorization with GitHub. I am currently working on retrieving and displaying the GitHub repository statistics. I am using charts to display it nicely and simply. Currently it is showing only Stars, Watchers, Forks and chart of used languages. I also added a few informative labels that tell you that something is actually happening and the program did not freeze. If I didn’t add this you would be looking at an empty black screen. One of the last things I added is active GitHub Authorization Token checker and resolver. Before this if you revoked your OAuth with Helyx on GitHub page, Helyx would think that it is still authorized to your GitHub account, now it checks it and if you revoke it online, Helyx will disable functions that are only accessible when you are authorized via GitHub.
Slowly, but surely We are almost at the end (if no other function to add will come to my mind) and I was messing with access modifiers, accessors, refactoring names of variables, Tasks, voids, properties. I was adding exception handling keywords and many ifs to make sure there will be no bugs and that almost every exception will be caught. I was doing this manually so I might have missed some places where the exception handler is needed but yeah we shall see! I also enabled a search bar, so when you will be looking for your project in Helyx and you have many projects added, you can search for yours! I was also changing styles of my old menus and theirs logic because they weren’t done very well in comparison with style that I am using now… Funny story: while I was messing with the access modifiers and accessors I actually bricked the whole Helyx, because functions that were supposed to resolve configuration file and read/write into it couldn’t. I thought I accidentally removed something important but at the end it was just that, that I was changing the access modifiers and accessors.
Settings and Git pages are receiving more stuff! I added for Settings page: Notes Settings Updates and for Git page: Undo Commit Redo Commit as the name says, Notes Settings are for changing properties of global Notes on every project. There is only one setting that came to my mind and that is encryption. Some of you might paste into it something personal or confidential. Well, this makes sure that these info CANNOT be taken from raw file, but from Helyx directly. (thinking about adding password mechanism lol) Updates, yeah, it looks for updates for Helyx . Undo Commit is a special one, when you commit something and for some reason you want to go back you just undo it. On the other hand, if you somehow accidentaly clicked on Undo Commit or now you want to redo the undo, you can with Redo Commit. My plan now is to add again more functions, such as Custom Badges, option to sync the Custom Badges with your GitHub repo (it will pop up in README.md) and also add Tags sync, so you can edit your repository’s Tags via Helyx. Oh yeah, also going to add custom project status because some people may say that having statuses such as “Active”, “Inactive”, “Paused”, “Archived” is limiting (custom ones will yes, also be synced with GitHub). :) I also mustn’t forget to add the translations for other languages. I am going to do this at the end due to new text appearing every time I add something new.
Adding Custom Statuses, Custom Badges and even more! Here we are again! Today I added: Custom Statuses Custom Badges WIP: Sync badges with GitHub repository Sync topics with GitHub repository My original status system for projects was a hardcoded enum with statuses “Active”, “Inactive”, “Paused” and “Archived”. Then I had a lot of switches which determined color of markup based on which enum it is hah. As you may already know, enums cannot be changed in runtime :) What does that mean? That users cannot add their own statuses in Helyx directly… They would have to hardcode into Helyx their own statuses and that’s just impractical, no? That’s why I spent below mentioned amount of hours redoing so many things to make it actually work and I even learned something from this! That JSON Parsers and Colors are NOT huge friends! (genuinely, I HAD NO IDEA why it wasn’t working until AI told me that JSON parsers cannot translate Color structs). Custom Statuses/Badges currently have Add/Delete functions and right now I am going to add also Edit function, so when you accidentally create a status/badge with wrong color, you don’t have to delete it and create it again :) (just saved 10seconds of your life). I also recategorized my whole codebase with help of Claude Code. I told him to review my whole codebase and suggest what classes, enums, interfaces should be in which files and those files in which folders. It was fun, finally something where I did not have to concentrate much and chill and watch something when doing it. Well, now it is not much fun when functions that I was using are in different files and some classes have different names. But at least my codebase looks more professional! (before this I had like 10 files with a bunch of lines where classes were stacked…) Also, about the WIP stuff above… Sync badges with GitHub repository is going to be something like the Sync status with GitHub repository. It will just pop up in your README.md based on where you put the headers which Helyx will give you for that specific badge. Sync topics on the other hand are classic topics of the repository which you can see in top right corner of your repository page. It will mostly show you which topics are assigned to your repository in Helyx but I’ll make it also so you can assign/unassign topics from your repository. I’m thinking of adding more GitHub Synchronization options, but none are currently coming to my mind. Maybe something with actions, no idea yet, or local AI that will explain to you errors given by Helyx when you will be trying to do something. We will see!
Never expected it to be this hard So the last days I was again changing the structure of my solution and trying to get on with it. It took me a while to create one that Claude agrees with and is good for such open-source projects. Anyways, this was the easy part. In my last devlog I said that I completed Custom Statuses & Custom Badges. Well… I did! But then I found out, that my system was bad… and when I say bad I mean it wasn’t thought out. I found out about all of this when I finished the edit action for both. Originally I used Dictionary<string, TagDefinition>. Key was name of the Status/Badge and TagDefinition was the class of one of them which also has name property. But Helyx was not prepared for this, so for the last days I redid the whole system eight times. Once I used Dictionary, once I used List, then HashSet, then Dictionary, then Dictionary with other types and so on. I just couldn’t settle on the correct type for it. Until now, it took so long even though it is so primitive because it simply didn’t come to my mind and when I was asking Claude for suggestions of how could it be made, it didn’t think of using this type. The final type is simply… Dictionary<Guid, TagDefinition> AND A LOT OF CHANGES. Yeah… don’t worry guys! I am totally devastated by doing this over and over even though it was so simple & primitive to do. Well… maybe not really primitive because the changes were also difficult to do. I mainly didn’t want to use the GUID system because I have Custom Statuses but also Built-in Statuses and I was really worried about Built-in statuses having GUID assigned to them. Those sync options with GitHub are still in work, but I finished the GitHub Repository Stats viewer after a lot of experimenting with layouts and designs/effects/colors. I’m looking forward to the next devlog guys! I hope Helyx will be your good coworker that will actually count for something hah! P.S.: I also made that text of colors is grammatically formatted. At least it should be…
Sync finally done!! It’s 5 AM and I finished “Sync badges with GitHub Repository” and “Sync the status with GitHub repository” (this was already done, but with the enum version of status). I added also a few fail-safes so when you assign some badge or status and then delete it, it will also delete it from GitHub and project. Now it won’t be a ghost that you cannot get rid of haha. This was a little more difficult than I expected to do, the fail-safes because the local changing mechanism and syncing mechanism were written inline in the same function. The only thing that was dividing them was an if statement. It was interesting to make this. To make sure everything will work fine. Even though it didn’t MANY TIMES. Now I will focus on syncing GitHub topics. Wish me luck! P.S.: Forgot to mention, that I have to add this “On Status/Badge Edit, ASAP sync with GitHub” with Edit. I almost forgot lol, just came into my mind. I hope that COPY+PASTE will be enough and I won’t have to create another syncing system specifically for edits…
More bugs are appearing, and being fixed!! So since Helyx is already far and has many advanced functions, it also has some bugs. Today when I was experimenting with assigning a project and syncing it with GitHub, I found out, that if you try to sync the projects in a wrong way… it will not work. For that reason I added more fail-safes to make sure that this will be eliminated. I can’t confirm yet if those fail-safes work, because I am also working on a new Diagnostics action in Git Actions so if something goes wrong, you can fix it by the error Helyx gives you. Right now my testing project is in a state of “Git corrupted” (no idea what I should call it) where rebase was aborted. Because of this, I had to put the “GitHub Sync Topics” synchronization off until later, so I can focus on fixing these major bugs. Also another bug came to my mind that I fixed… Helyx works on a principle of directory paths. Each project is saved in config file under its own unique GUID and its path. The bug is that when you try to rename the directory, the project won’t be found and it will be removed from Helyx. Now, you can either let Helyx find it automatically (sadly can easily fail) or you can select project manually in explorer (recommended!!!).
Doctor Git As you may know, right now I am working on Diagnostics. I am almost done with fully displaying all of the health checks about your Git repository. But I still have to finish all of the fixing actions that it will have. Diagnostics will mainly be for a case where something happens in Helyx and it will need to be fixed. The main idea of it is not aimed at resolving issues with your Git repository outside Helyx. But it may resolve some because you may run into the same issue as you had in Helyx of course. In the last devlog I said that I put GitHub Topics off. Well, that did not happen! I finished displaying GitHub Topics!! I think in some devlogs I said that it was for managing GitHub Topics. Managing meant like adding, removing, editing. Well, that wasn’t actually my main point. I just wanted it to show you your currently assigned topics in GitHub. I also didn’t see a big reason in adding Add, Remove, Edit functions for topics. Topics rarely changed, honestly and the most intuitive way would be doing it via GitHub web interface.
Diagnostics done, other stuff too and some changes! Diagnostics are now fully done! When something messes up, it will give you options to fix it! Some time ago I created GitHub Synchronization settings for managing what to sync with GitHub, so what to retrieve and send with those options: Sync status with GitHub repository Sync badges with GitHub repository Fetch GitHub repository topics Fetch GitHub repository stats Use GitHub’s language detection instead of Helyx’s I created a brand new tab called ‘GitHub Actions’ where this setting is. GitHub Actions is meant to contain all of the actions that are mainly linked with GitHub endpoints. I kept few such as Push, Pull, Sync in Git Actions due to how the layout is already created. Also I added when you are rebasing and it fails, it automatically gives you a prompt to cancel it. So repair it… GitHub Actions will contain a new stuff that will come to Helyx! Managing Issues and Pull Requests!! Maybe also workspaces/actions but I will see how difficult that is and how it is needed/useful in Helyx. Another new function is, that when there’s an update for Helyx and I change the GitHub OAuth scope because of new features… Helyx will warn you and tell you to reauthorize to make sure every function will work correctly. Before this change, Helyx was using its folder name as a name of the project and as a repository name for GitHub. Now, when you add a project to Helyx, Helyx will ask you what’s its name and when you will try to use some GitHub function for the first time on your newly added project on Helyx, it will request a GitHub Repository name from you. ;) There’s still a lot of things to add. Honestly I thought that Helyx was at the very end like 50 hours ago and look! There are many more functions to add haha!
Manage Issues, at your service. After a painful development period I am again here, writing devlog! What changed? Good question! Manage Issues is partly done! I still have to finish making the actual actions but displaying is somewhat finished. When you go to ‘Manage Issues’, you will firstly see a list of issues that are on your GitHub repository. From there you can already see some details about the issues such as: Number State Title Labels Comments (number) Updated (time) Above them are filters, currently those are the available filters: All -> All Commented -> Issues has some comments Assigned -> Issues that have some assignees Labels -> Issues that have some labels But that is not all! There are also their counterparts: No comments Unassigned Unlabeled (there’s no inversion of All because why would you need filter None) Yeah, so you can invert your filters… When you select an issue at the very top you will see its number, then you will have a panel with details about the issue with its title and: State Author Opened (time) Labels Assignees Right under these details are all of the comments in chronological order. When it is done, it will also show the whole timeline of each issue. So when this and this label was added/removed… when was this assignee assigned/unassigned… when was this issue closed/opened…. Of course I am going to add actions so you can add a comment, close issue, open issue, etc… When I’ll finish Manage Issues, I will go to work on Manage Pull Requests. It shouldn’t be that different because Pull Requests are by GitHub a kind of Issue but they are also not the same, so different classes, types, etc… Well, wish me luck people… or should I say… Stardancers?? P.S.: Sorry for the grammar in images in comments. I did it very quick for the preview.
Paging done, functions almost! I finished making the logic for rendering issues. In the last devlog it was just displaying all of the issues at the same time. No paging system so if there was a lot of issues or long issues, they would simply… not appear. It took me a really long time to work this out. I was mainly switching back and forth the rendering logic all the time and it went so far, that I had to use Claude to help me with it. At the end, I ended up with a rendering logic that I am not really keen on, but it is the best one that can be used in Helyx and TUI environment. Main obstacles were the Spectre.Console rendering functions and classes that were under IRenderable interface. And also the limitations of Panels, Grids… Layout had everything I needed . I wanted to cut the part which couldn’t be rendered and it should have looked like, like an unfinished Panel. Well, this was impossible. Without changing the core code of Spectre.Console or creating own system for making Panels it was impossible. Also, I haven’t seen it as something that WOULD NEED an own system that would render comments. So I just made it when a comment cuts, it creates whole Panel with part of the comment that can be rendered and at the bottom is text saying that it continues on the next page… and on the other page at the top there’s text that, hey, it continues here! Let’s finally talk about the Issue functions! I finished some simple one like: Close Reopen and create an issue… But I still have to create a system that can let you: Comment Edit comments Delete comments Lock issue Unlock issue Those are currently in WIP, but in the next devlog they’ll be most probably finished and after everything is done with issues, I will move to Pull Requests!
Manage Issues, completed! PRs, incoming… Manage Issues is now fully completed. I still had a few issues with paging and rendering but now they are fixed. Now you can select a message and delete it & edit it. But also now you can create a comment, lock an issue, unlock an issue and create an issue. I also added a thing that I hope will be appreciated, Helyx renders Markdown from GitHub Issue comment and when you comment via Helyx, Helyx gives you Markdown options such as: Bold Text Italic Text Code Text List Quote Also, when you don’t provide a text to a comment in GitHub, Helyx will say that “No description was provided.” So the same thing as GitHub already does, but in Helyx you must provide text. Why? Because why would you create a comment with no text? So I banned adding a comment with no text. Okay, that would be everything! It was fun to create this because everything was working so well, except the paging system… that was painful to make even with Claude’s help. As I said in past devlogs, after Issues I am going to move to PRs. So yeah, let’s work on PR. I hope it won’t be harder to make, because a PR is a type of Issue in GitHub, so I hope I will use the same function logic and functions and callbacks to make it.
Manage PRs displaying and some logic done After pulling another all-nighter I finished making the Pull Request display functions. List and details about each Pull Request is done and paging also works too (took it from manage issues ;] ). Pull Requests also contain filters such as: Open Drafts Assigned Reviewed and we can’t forget their counterparts either: Closed Ready Unassigned No reviewers Pull Requests now have comment selection and Markdown formatting, but functions to manage Pull Requests are not done yet. The only ones I managed to finish are: Comment Open Browser The biggest problem with PRs is going to be, that their functions and methods for executing those functions are more complex than the ones for Issues. I plan to add these functions for PRs: Delete Comment Merge Review Close PR Reopen PR I am pretty sure that all of this will be done in next devlog, so stay updated! This is going to be very cool, I think. Well, now I am going to sleep so good night everyone!
Manage PRs done! Added few new things… I finally finished making Manage PRs. So now you can: Delete Comment Merge Review Close PR Reopen PR I also had to fix some design flaws and function flaws but now it should be all good. Before doing all of this, there was a bunch of GET requests… now? Now it is also a bunch of PATCH & PUT requests. Also, now when you’ll try to link your GitHub Repository with the local one, you will just select the one that is on your GitHub account. Another thing! When you have conflicts between the local repository and the remote one (GitHub) and you try to sync them, a lot of the time Notepad pops us and tells you to remove the version of the text that you don’t want. Well now Helyx does it too and doesn’t open notepad, but lets you do it directly in TUI interface in my very own notepad. Conflict solver also uses alternate screen for this. (there’s sadly no showoff image for this, because currently I don’t have anything to create a conflict on) I am not sure what to do next in a next devlog, since everything I really wanted to do is already done… well… not everything but everything around the main things is. Maybe I’ll move on another refactoring? Or finishing the language settings? Well, we will see!
Adding new features & fixing bugs I finished making “Analyze Project” which analyzes your whole project and prints stuff such as: Number of files Number of folders Size of the project on disk Number of lines Also you can now see what amount of what programming language makes your project. It also shows you the biggest files in your project directory. And also you can see Git information such as: Branch Number of commits First commit (date) Last commit Working tree .git size So it displays some maybe important and basic information that you may check sometimes or might be interested in. There were like 6 revisions of this because I was testing different styles & designs. I also found a lot of hidden bugs with help of Claude! Before talking about bugs, I will tell you something about new features that I added. Now, when you assign a badge or change a status and you don’t have markers in README.md yet in it, then it will ask you if you want to add them manually or via Helyx. What does that mean? Well, it opens a “text editor” in Helyx which displays README.md and you can insert the badges/statuses where you want instead of opening the file in notepad and inserting the markers manually. Overall it is way quicker to do it now via Helyx. Helyx’s Generic Text Editor is now even better! You can now use all of the arrows, before you could just use Left/Right Arrow to move cursor left or right. Now you can move between lines. Now you can also open your project’s wiki via Helyx. Be aware that it doesn’t check anything, if you have wiki or not. It directly opens the website for the wiki where it should have been for the current linked GitHub Repository. Let’s talk about bugs now! Open an issue called the Markdown handler function and it was accidentally calling GitHub 101 times, when it needed some info. Now it doesn’t. 🆒 Notes have an encryption system, so if you put some sensitive info into it, it couldn’t be directly taken from the file. Only via Helyx. There was a bug, where when you enabled encryption and edit notes of 2 projects, then you turn off encryption globally and open the first project’s notes, it decrypts… but after that you open second project’s notes, it won’t. This was due to having a global bool instead of per project bool when saving if it was encrypted. Fixeddd! Another bug! Sync Status & Sync Badges was deleting staging index. Funny that I was thinking about to restore the staging index whenever using it, but at the end… the logic was wrong 😭 Now it isn’t. Then there was a bug that when you unassigned a badge, it unassigned ALL badges. Fixed! Another bug linked to badges… Unassigning a badge didn’t remove it from GitHub. Yeah… fixed!!
Fixing more bugs I fix bugs mainly with use of Claude Code, because hunting for bugs is not easy and this project is not a small one haha. I had to run MANY code review tools for this, because every time it kept finding new bugs. No idea how but it did. So what we fixed? If a GitHub comment had bold text split across two lines, opening that issue crashed Helyx before it drew anything. A file with a square bracket in its name (e.g. data[1].json) crashed Status, Diff, Commit, Stashes and Log. If anything held config.json open for even a moment, Helyx assumed it was corrupt, reset it, then crashed everywhere that looked for a project. If config.json was missing its Badges section, the startup migration quietly deleted every badge from every project. Committing saved a copy of the project taken before the confirmation prompts, so anything changed in between was silently thrown away. If you linked a GitHub repo during Push, the remote was created with an empty name. Syncing a status that had since been deleted crashed in the middle of a push. A commit message containing a square bracket crashed “View Full Message” (those are just bugs that were missing Markup.Escape() function). Applying a stash said “applied successfully” even when it conflicted. One bad path stored in config.json crashed “Add Project”. This is just a snippet of the amount of fixed bugs. I won’t write all of them here since it would take a lot of text and I am pretty sure that this is enough for you to understand that we fixed a lot of bugs haha. Right now I am going to do the Language System. I am not sure if I mentioned in some devlog, the list of languages that Helyx will support. If not… there it is: English Slovak Spanish French German Russian
Languages almost done, moving onto GitHub & README.md Well guys, Language System is almost done. It is powered by a Resources file that stores all of the translated strings. More bugs were found! But now, all of the bugs should be fixed with also many failsafes! Now, I want to complete the Language System because I am really close to finishing it. I also want to make the README.md for Helyx’s GitHub Repository. Originally I wanted to make it via Obsidian app, but it doesn’t have direct support for Wakatime, so I have to use VS 2026 native Markdown editor with the support of Markdown Editor v2 extension from Mads Kristensen. (not sponsored lol) I also heard that Obsidian app doesn’t use the same Markdown as GitHub does so there would be some things mistyped or not even rendered, but VS 2026 should be fully compatible with GitHub’s Markdown renderer, so we will see!
More bugs fixed, new functions, README & Language System updates! Hello guys, once again at 4 AM! Bugs: As the title says, there are more fixed bugs. Diagnostics crashed Helyx if you ran a rebase in a terminal and hit a conflict. Now it doesn’t! Another fixed bug is that when you opened an issue in Helyx, the footer vanished. At first I was shocked, but it was a simple fix so now your footer doesn’t vanish. Another vanishing bug! The Languages row from the header vanished when you entered a tab where Layout class was being used. Now you will see your sweet programming languages used in your selected project. Guess what! Another vanishing bug! This time the whole header vanished when you exited .Live()! Now it is okay! New behaviour: I unified some color codes with some type of info. E.g. SHA is Dark Orange everywhere, Stash is Yellow, Date is Cadet Blue and Issue Number is Aqua. The README.md editor, when inserting badges/status now has a new keybind: backspace! It is different from DEL! DEL deletes the badges/status but backspace deletes the whole line, including the badge/status that was on that line. README The README is almost done! At least I hope! Claude was a big help here, because I wanted to create an insane README and we really did. Guys, you should be excited about the README file haha! Language System Translations for these languages are already done: English French German Russian Slovak Spanish So basically every language translation is already done. BUT I decided to add even more languages! The new languages that Helyx will support are: Italian Portuguese
New features, new languages, new problems. A new feature that I added is GitHub Actions! It is on the same principle as Manage Issues and Manage PRs, so you have a list of GitHub Actions, you pick one and you can control it, check its log, observe information about it. You can even run an action! I also added a refresh keybind to Manage Issues, Manage PRs and GitHub Actions. Before, you had to go back from the details of an issue/PR/action to the list and then return to the details. Now you don’t have to. You just have to press the keybind displayed in the footer that belongs to refresh. Yes! The Helyx Language System is finally complete! Italian & Portuguese are now available in Helyx! Lately I’ve been working on the README.md file. I was mainly making more GIFs & designing screenshots for it so it will look pretty and futuristic (in my opinion)! As I have mentioned in the title, NEW… PROBLEMS! People… you won’t believe what happened to me today… I use Helyx’s Git & GitHub for testing, so there is no official one yet, and I rarely commit changes or push them. Only when I test something. And it looks like it got back at me. Well… I told Claude Code to remove comments all over my codebase, because they were mainly scrapped code and some temporary information that I had there, that wasn’t used anymore. Okay, so I told it to remove them, and for some reason instead of removing comments, it deleted Helyx’s whole codebase. Thank god README.md was untouched haha. We had to decompile the .dll that was left over from testing Helyx’s latest version, and actually check the diff and rewrite it. We still don’t know if everything was brought back since for some reason Claude Code’s memory got wiped instantly when it realized that it deleted my whole codebase. There were no backups, no restore, no nothing. The only possible thing was to use the forgotten stash that I created and use the .dll as a map to restore Helyx’s outdated codebase and rewrite it again. So that’s what we did. Yeah, so I hope everything was brought back. Claude says it was, but after what it has done I don’t know if I trust it. Just kidding, everything should be back, because it compared the .dll with the rewritten code 1:1 and everything matched.
GitHub done, shipping Helyx today! Today I was messing with the GitHub page for Helyx, fixing the last bugs we found and working on the installer. For the installer I used Inno Setup, because it is the most recognized and the most used one. The point of using an installer is simple: it adds Helyx to PATH. Of course there were other options, but this one seemed like the best fit. We were fighting with the script for a while, because it was doing really weird things, like staying in the background after the installation finished. But those bugs are fixed now! README.md is done, all of those GIFs and screenshots are in it too, and I have to say it looks really good! I was also setting up the GitHub side of things, so the description, the tags, a GitHub Action and so on. With the help of Claude Code, we created the logo and the banner for the installer as well. The installer uses the same logo as Helyx. It’s just a basic H, because nothing else came to mind haha. I also asked Claude Code to review the codebase one last time, and yep, it looks fine! I told it to add the basic documentation comments as well, the <summary> kind. Let’s be real here, nobody does this, and if they do, something else writes it for them, usually an AI, because it understands the function better than the person who wrote it (I know that from my own experience hahaha).
Experimenting with the conflict solver I was thinking about adding a simpler conflict solver, where you wouldn’t have to delete the <<<<<<< , ======= and >>>>>>> markers yourself but would just pick either the first or the second version. But I realized it would be messier than I thought, so in the end I kept it as a basic editor where you remove the version you don’t want by hand.
README.md update I replaced the title in README.md with a banner that contains the text Helyx. I tried a few versions I made and, well, I landed on the one you can see in Helyx’s README.md, or below!
Edited README.md I rewrote the README.md because of the ship review. I also added a couple of recommendations that are worth knowing when you use Helyx. I also removed the <summary> comments that Claude Code wrote for the documentation, I don’t think that anyone would have used them anyway.
Edited README.md, again I was again editing the whole README.md, because reviewers weren’t happy with the current one. Well after spending another hour of editing the whole README.md file, I hope they won’t ask me to rewrite the whole README.md file again, because I don’t even know what else to add/remove/edit.
Added GitHub Issues/PRs events rendering Originally, when you selected Manage GitHub Issues or PRs and opened some issues/PR. You could have only seen messages posted by users, but not when a label was assigned or when the issue/PR was closed. Well… Now you can! Now it displays the exact action that happened and when it happened! Of course, it is also translated to all languages that Helyx supports. Just making sure you didn’t think it wasn’t! I also cleaned up the code a little bit. Removed some useless usings and some files were in the wrong namespace, so that is fixed too.
Replaced hardcoded string colors with Color members for code safety, fixed line breaking while assigning a status/badge Okay so Markup texts (those are the texts with color) were formatted in this format: "[red]Hello World![/]" So it was string-based. And if you accidentally added some character to it for instance: "[redd]Hello World![/]" <- Exception Helyx would crash. I mainly added this, because it is an open-source project. So if someone tried to edit it, they would only have to edit the string and they might have misspelled it. But now, when he goes into the codebase, he will see Color members and he just can’t misspell that, and if he would, compiler would alert him. Basically, now it is like this: $"[{Color.Red}]Hello World![/]" Okay so next I fixed line breaking. What does that mean? Well… In Helyx native README editor, so when you try to assign a status/badge, you’ll get that editor, when you try to add a status/badge to that line, you might have thought that it would be on the same line as the tags above it. But it didn’t… This was happening due to the comment markers for Helyx so Helyx knows where this status/badge is located and which status/badge it is. Now Helyx will put those comment markers in a way that prevents the line from breaking.
Reviewing my codebase and fixing bugs Since all of the features that Helyx was supposed to be finished with are almost all done (maybe even all are done), I will now change my view to another projects for Stardance such as ThetaNexus . But that does not mean that now I will just forget about Helyx. I will be reviewing the codebase sometimes to find some bugs and fix them. You can help me with this, by making an Issue request on Helyx’s GitHub. So what bugs did I fix since the last devlog? I fixed line breaking in badge/status README editor. When you were inserting your badge/status into your README via Helyx’s README editor, it done… messy stuff to the README, not something like really bad what couldn’t be fixed by manually doing it, but it should now insert the badge/status exactly as you see it in the editor. I also introduced a new ‘Found state’ text instead of ‘Found’ text in IDE settings to avoid confusion. To avoid confusion because if an editor was found and you clicked on it… it wrote this: Found Found Found Not Found Found Set by user Now it writes this: Found state Found Found state Not Found Found state Set by user Most of the time, I was reviewing the codebase via Claude Code to actually check everything precisely.
Fixed User Scripts bug So, every path block used Path.GetFullPath(path) instead of Path.GetFullPath(path, script.ProjectPath) . That means it was resolving relative paths against Helyx’s own directory, not your project’s. This is now fixed.
Hackatime integration Hello there! A guy made a feature suggestion on Helyx’s GitHub, that I should add a Hackatime integration into it. So I was thinking… and thinking… and thinking and woah… I ADDED IT! It is not 1:1 like the web interface, that one is better & shows you more things but sadly this was everything that I could request from API (at least I think): Total Seconds Languages Repo URL Total Heartbeats First Heartbeat (DateTime) Last Heartbeat (DateTime) and when combining all of these information, I created a screen where you can see all of this specifically for your project. It works on the principe of authorization. You put in your Hackatime token which authorizes you and then when you go to your project and go on Hackatime Info, it prompts you to select the project from a list of projects that are assigned to your Hackatime account/token.
Mysterious bug I solving some bug with UpdateHandler that my friend has been experiencing. It was that you could only check for updates for Helyx if you authorized your GitHub. Otherwise, you couldn’t! I was taking the update checking through a function that sent a HTTP request with a key that Helyx receives by authorization, in this situation it isn’t needed, but when not given in that function, it returns an error. So now you can freely check for updates for Helyx even without authorizing with GitHub!
Ships:
What I made Helyx is a terminal app for Windows that keeps every local Git repository you own in one place and lets you commit, branch, resolve conflicts, repair broken repositories and answer GitHub Issues and Pull Requests without opening anything else. I spent a lot of time thinking about what kind of project I wanted to build. I wanted something that would be genuinely useful to developers in many different ways, and that is how I came up with Helyx, a TUI application that brings many Git and GitHub tasks into one place. What was challenging Learning new libraries, keeping the code organized as it grew, and designing every screen so it looks and feels as polished as I could get it. Deciding what to build next was harder than it sounds, because there was always more that could go in. What I am proud of It has everything I originally planned to include. The diagnostics screen finds what is wrong with a repository and offers the fix instead of just reporting it, the conflict resolver opens the conflicted block in its own editor, and the whole app speaks 8 languages. How to try it Download the latest release from Helyx’s GitHub and run it. It installs into your user folder and adds Helyx to your PATH , so you can start it by typing helyx in any terminal. No administrator rights are needed, and the .NET runtime is bundled inside. Then pick Add project and choose any folder that contains your project. Helyx is open source, so you can also read the code or build it yourself. Just click See source code below.
NEW THINGS: Hackatime integration Fixed bugs Edited README.md Added GitHub Issues/PRs events rendering more What I made Helyx is a terminal app for Windows that keeps every local Git repository you own in one place and lets you commit, branch, resolve conflicts, repair broken repositories and answer GitHub Issues and Pull Requests without opening anything else. I spent a lot of time thinking about what kind of project I wanted to build. I wanted something that would be genuinely useful to developers in many different ways, and that is how I came up with Helyx, a TUI application that brings many Git and GitHub tasks into one place. What was challenging Learning new libraries, keeping the code organized as it grew, and designing every screen so it looks and feels as polished as I could get it. Deciding what to build next was harder than it sounds, because there was always more that could go in. What I am proud of It has everything I originally planned to include. The diagnostics screen finds what is wrong with a repository and offers the fix instead of just reporting it, the conflict resolver opens the conflicted block in its own editor, and the whole app speaks 8 languages. Now it even has new things that were mentioned at the top of this shipping message! How to try it Download the latest release from Helyx’s GitHub and run it. It installs into your user folder and adds Helyx to your PATH , so you can start it by typing helyx in any terminal (Windows Terminal recommended). Then pick Add project and choose any folder that contains your project. Helyx is open source, so you can also read the code or build it yourself. Just click See source code below....
|
1793825389.0840154
|
1793911789.0840154
|