|
266
|
NULL
|
NULL
|
0
|
0.0
|
0
|
[]
|
[]
|
|
1792929247.5750747
|
1793793247.5750747
|
|
267
|
Gitindex by @Matthias | Stardance
|
Matthias
|
0
|
4.47
|
0
|
[]
|
[{"post_id": 46810, "ts": "202 [{"post_id": 46810, "ts": "2026-08-14T10:09:39Z", "hours": 0.3667, "text": "Today I’m working on implementing an iconset for the github filetree, I asked myself where the best place was to get a bunch of developer icons and decided to use the vscode ones, wrote a helper to extract the extension -> icon manifest and set up a quick css query to make the icons monochrome for light and dark mode, like the one below"}, {"post_id": 46241, "ts": "2026-08-13T10:45:36Z", "hours": 1.0611, "text": "I added a new feature that makes the header sticky along with some polish"}, {"post_id": 46199, "ts": "2026-08-13T08:11:24Z", "hours": 1.9131, "text": "Ok, so after quite some time off I thought why not get back to hackclubbing and so I am continuing Gitindex, in the last commit I implemented an animation for the language diagram and adjusted some DOM-selectors so the extension doesn’t break. Honestly I am preparing for CWS release: implementing last features and polishing, bye"}, {"post_id": 321, "ts": "2026-06-01T16:33:16Z", "hours": 1.1294, "text": "Am currently building a prototype for the all actions menu, let’s see how this goes, will continue to develop now."}]...
|
Title: Gitindex by @Matthias | Stardance
Devlogs: Title: Gitindex by @Matthias | Stardance
Devlogs:
Am currently building a prototype for the all actions menu, let’s see how this goes, will continue to develop now.
Ok, so after quite some time off I thought why not get back to hackclubbing and so I am continuing Gitindex, in the last commit I implemented an animation for the language diagram and adjusted some DOM-selectors so the extension doesn’t break. Honestly I am preparing for CWS release: implementing last features and polishing, bye
I added a new feature that makes the header sticky along with some polish
Today I’m working on implementing an iconset for the github filetree, I asked myself where the best place was to get a bunch of developer icons and decided to use the vscode ones, wrote a helper to extract the extension -> icon manifest and set up a quick css query to make the icons monochrome for light and dark mode, like the one below...
|
1792565472.422445
|
1793170272.422445
|
|
268
|
Untitled project by @siemvk | Stardance
|
siemvk
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Untitled project by @siemvk | Stardance
|
1792921663.6644623
|
1793785663.6644623
|
|
269
|
School Manager by @xarber | Stardance
|
xarber
|
0
|
30.26
|
0
|
[]
|
[{"post_id": 50991, "ts": "202 [{"post_id": 50991, "ts": "2026-08-20T14:12:00Z", "hours": 1.1489, "text": "SideStore / LiveContainer source! Do you want to try School Manager yourself? You can now install the development builds through an AltSource, that you can add yourself from the School Manager github repo! You can also download the .ipa files manually from GitHub Releases. Just open the app and try it yourself!"}, {"post_id": 37594, "ts": "2026-07-30T13:03:30Z", "hours": 10.2097, "text": "Improved server-side security A few adjustments were made server-side: Tokens now expire much earlier, with a refresh token to keep users signed in. Other database endpoint updates were made to ensure safer data handling. Account security updates Together with the server side security enhancements, I also added a session management section in the Sign In & Security page: You can now manage your signed in devices, recognize them with their model or OS + browser, last seen date, and app version. You can easily sign out any of those devices, requiring another sign in. Passkey Renaming As mentioned in the previous devlog, I did add passkey renaming. Now passkeys detect the device you saved the passkey on to give a suggested name, which you can edit at any time. Fixed app themes For some reason app themes broke with an SDK update. I restored functionality, and extended it to the welcome screen. Multiple changes conventional commits I updated the workflow scripts to allow multiple changes inside of one commit: feat: Feature 1; fix: Fix 1; fix: Fix2 All inside of the same commit! These will then be parsed in the github release by the workflow. Switch app building to GitHub Actions server EAS Cloud was disabled. Now all app builds are ran through the GitHub Actions server. I also added an unsigned iOS build, which is installable with SideStore, LiveContainer, or any other similar sideloading app. The iOS builds are compiled with X-Code 27 beta, so the dynamic app resizing is enabled for iOS 27 (You can test by using iPhone mirroring, launching the sideloaded app, and trying to resize the window). Small reminder: You can either install the development build, OR, you can test the app by installing the PWA when opening the website version!"}, {"post_id": 32495, "ts": "2026-07-21T18:31:27Z", "hours": 4.8581, "text": "Passkeys are live! This took me a while to develop, but passkeys are finally live! There’s a passkey management screen in settings, with a list of all saved passkeys, when they were last used and when they were added. You can delete them, or add new ones using web authentication. This is a temporary workaround since Apple requires you to have a paid developer license to use passkeys in-app. What’s next? I’d like to add passkey renaming in settings (and regular passkey naming in the registration screen), OR a database with automatically detected names for each Passkey handler ID. I’m currently trying to get the app to build on X-Code 27 beta. This would use the new SDK and allow apps to dynamically resize when using iPhone mirroring or the xcode device hub. It would be a huge improvement for testing, since I would be able to test everything 100% from my mac without having an ipad simulator or have to bring a physical device around."}, {"post_id": 31140, "ts": "2026-07-19T09:45:17Z", "hours": 13.7719, "text": "Passkeys I’ve been working on this for a while. I’m currently adding passkeys and security keys support to the app! The app has been based on OTP codes since release, I’m also adding passkey support so that no waiting for emails is needed. You will still need a verified email in order to sign up, but you will be able to use passkeys for future authentications. I also think about adding an authenticator app OTP generator to replace email OTPs altogether (for added security in case of a stolen email account), but it’s a work in progress (PS: Again, you will still need a verified email address to sign up). GitHub Workflows! This took me ages to build. I implemented workflows and multiple branches: Master (Release) Beta Alpha Development Testing (no workflows here) On every push, two jobs run: One updates the website (only on master pushes), and also runs eas update to the specified update branch. The other job is the most interesting: It checks for version changes in the app.json file, and if the version changed, it starts building a new binary for the app: Signed iOS Simulator (.tar.gz app file), “Signed” Android APK (or AAB if the branch is Beta/Master), and unsigned iOS .ipa file (since I have no paid developer license yet). The first two are ran through EAS Cloud, and then downloaded by the workflow. The unsigned build runs directly on GitHub Actions’s servers. After having the artifacts, they get renamed to human readable names, and release notes are automatically generated with the adoption of conventional commits (fix: … | ci: … | feat: … | etc). The script later proceeds to create a release and a tag for said update, and draft it to the github repo. This means I no longer have to manage builds myself, which sometimes took several hours to fix environment issues and more. It also means that whenever I push an update, the app automatically reflects said update in an appropriate branch (we don’t like testing in production, right?)."}, {"post_id": 945, "ts": "2026-06-02T18:26:17Z", "hours": 0.2667, "text": "Now on Stardance! Hi everyone! Welcome to Stardance! I can’t wait to start seeing everyone’s amazing projects, and to start coding my own! I actually have a few ideas boiling in the pot, many of which I’ve already created projects for. Good coding to everyone! About School Manager The development of the app will be continued in Stardance! There aren’t many updates since the last devlog in Flavortown, I’m trying to organize my ideas and clean some code before continuing development. Have fun everyone!"}]...
|
Title: School Manager by @xarber | Stardance
Devl Title: School Manager by @xarber | Stardance
Devlogs:
Now on Stardance! Hi everyone! Welcome to Stardance! I can’t wait to start seeing everyone’s amazing projects, and to start coding my own! I actually have a few ideas boiling in the pot, many of which I’ve already created projects for. Good coding to everyone! About School Manager The development of the app will be continued in Stardance! There aren’t many updates since the last devlog in Flavortown, I’m trying to organize my ideas and clean some code before continuing development. Have fun everyone!
Passkeys I’ve been working on this for a while. I’m currently adding passkeys and security keys support to the app! The app has been based on OTP codes since release, I’m also adding passkey support so that no waiting for emails is needed. You will still need a verified email in order to sign up, but you will be able to use passkeys for future authentications. I also think about adding an authenticator app OTP generator to replace email OTPs altogether (for added security in case of a stolen email account), but it’s a work in progress (PS: Again, you will still need a verified email address to sign up). GitHub Workflows! This took me ages to build. I implemented workflows and multiple branches: Master (Release) Beta Alpha Development Testing (no workflows here) On every push, two jobs run: One updates the website (only on master pushes), and also runs eas update to the specified update branch. The other job is the most interesting: It checks for version changes in the app.json file, and if the version changed, it starts building a new binary for the app: Signed iOS Simulator (.tar.gz app file), “Signed” Android APK (or AAB if the branch is Beta/Master), and unsigned iOS .ipa file (since I have no paid developer license yet). The first two are ran through EAS Cloud, and then downloaded by the workflow. The unsigned build runs directly on GitHub Actions’s servers. After having the artifacts, they get renamed to human readable names, and release notes are automatically generated with the adoption of conventional commits (fix: … | ci: … | feat: … | etc). The script later proceeds to create a release and a tag for said update, and draft it to the github repo. This means I no longer have to manage builds myself, which sometimes took several hours to fix environment issues and more. It also means that whenever I push an update, the app automatically reflects said update in an appropriate branch (we don’t like testing in production, right?).
Passkeys are live! This took me a while to develop, but passkeys are finally live! There’s a passkey management screen in settings, with a list of all saved passkeys, when they were last used and when they were added. You can delete them, or add new ones using web authentication. This is a temporary workaround since Apple requires you to have a paid developer license to use passkeys in-app. What’s next? I’d like to add passkey renaming in settings (and regular passkey naming in the registration screen), OR a database with automatically detected names for each Passkey handler ID. I’m currently trying to get the app to build on X-Code 27 beta. This would use the new SDK and allow apps to dynamically resize when using iPhone mirroring or the xcode device hub. It would be a huge improvement for testing, since I would be able to test everything 100% from my mac without having an ipad simulator or have to bring a physical device around.
Improved server-side security A few adjustments were made server-side: Tokens now expire much earlier, with a refresh token to keep users signed in. Other database endpoint updates were made to ensure safer data handling. Account security updates Together with the server side security enhancements, I also added a session management section in the Sign In & Security page: You can now manage your signed in devices, recognize them with their model or OS + browser, last seen date, and app version. You can easily sign out any of those devices, requiring another sign in. Passkey Renaming As mentioned in the previous devlog, I did add passkey renaming. Now passkeys detect the device you saved the passkey on to give a suggested name, which you can edit at any time. Fixed app themes For some reason app themes broke with an SDK update. I restored functionality, and extended it to the welcome screen. Multiple changes conventional commits I updated the workflow scripts to allow multiple changes inside of one commit: feat: Feature 1; fix: Fix 1; fix: Fix2 All inside of the same commit! These will then be parsed in the github release by the workflow. Switch app building to GitHub Actions server EAS Cloud was disabled. Now all app builds are ran through the GitHub Actions server. I also added an unsigned iOS build, which is installable with SideStore, LiveContainer, or any other similar sideloading app. The iOS builds are compiled with X-Code 27 beta, so the dynamic app resizing is enabled for iOS 27 (You can test by using iPhone mirroring, launching the sideloaded app, and trying to resize the window). Small reminder: You can either install the development build, OR, you can test the app by installing the PWA when opening the website version!
SideStore / LiveContainer source! Do you want to try School Manager yourself? You can now install the development builds through an AltSource, that you can add yourself from the School Manager github repo! You can also download the .ipa files manually from GitHub Releases. Just open the app and try it yourself!...
|
1792511264.6086454
|
1793116064.6086454
|
|
271
|
Pathway by @xarber | Stardance
|
xarber
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Pathway by @xarber | Stardance
|
1792716706.067727
|
1793321506.067727
|
|
272
|
Untitled by @ishowspeed | Stardance
|
ishowspeed
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Untitled by @ishowspeed | Stardance
|
1792936275.519974
|
1793800275.519974
|
|
273
|
Unmasked by @xarber | Stardance
|
xarber
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Unmasked by @xarber | Stardance
|
1792684106.8443542
|
1793288906.8443542
|
|
274
|
Echo by @xarber | Stardance
|
xarber
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Echo by @xarber | Stardance
|
1792605009.5089886
|
1793209809.5089886
|
|
275
|
Fetch by @xarber | Stardance
|
xarber
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Fetch by @xarber | Stardance
|
1792637567.6617815
|
1793242367.6617815
|
|
276
|
Tempo by @xarber | Stardance
|
xarber
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Tempo by @xarber | Stardance
|
1792518904.6851594
|
1793123704.6851594
|
|
277
|
Kadent by @hacha-mouse | Stardance
|
hacha-mouse
|
1
|
231.72
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-01T15:24:36Z", "hours": 229.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "Kadent Kadent is a cross-platform DAW featuring KASL, a domain-specific audio language, and node-graph processing system. Features Create music with familiar track-based UI Two track types: Note Track & Audio Track Node graph for every track KASL language with syntax similar to Swift The node graph allows you to combine multiple KASL programs to perform much more complex processing. What Is a Node Graph? Kadent uses node graph for track processing. A Node is a processing unit that calculates the output. In node graph, an output of one node can be connected to an input of another node. This allows you to connect multiple inputs and outputs freely to other nodes to create sound. Then, why did I adopt node graph? KASL programs can have multiple inputs and outputs, and their types may also vary. So placing them in order does not work because the DAW cannot know which output is connected to the specific input. That’s why Kadent uses node graph. Characteristics of KASL Utilizes Cranelift as a backend for quicker JIT compilation Specialized type of variables such as input , output and state Supports fixed-length arrays and structs Fixed-count loop syntax for predictable execution time Module system influenced by Python Custom infix/prefix/postfix operators (even normal arithmetic operators are defined and provided by std ) KASL Sample Program audio module is built-in module provided by Kadent. Note that these programs below won’t work outside the DAW. Gain Node import audio import std input in = audio.zero_sample() input gain = 0.0 output out = audio.zero_sample() func main() { out = in * [gain; audio.max_channels] } Mix Node import std import std/math/float as f import audio input input_1 = audio.zero_sample() input input_2 = audio.zero_sample() input factor = 0.0 output out = audio.zero_sample() func main() { let clamped_factor = f.clamp(factor, 0.0, 1.0) let multiplied_input_1: audio.Sample = input_1 * [clamped_factor; audio.max_channels] let multiplied_input_2: audio.Sample = input_2 * [1.0 - clamped_factor; audio.max_channels] out = multiplied_input_1 + multiplied_input_2 } Sawtooth Wave Synthesizer import audio as a import std import std/math/float as f input notes = a.EventSlot() input pitch = 1.0 output out = a.zero_sample() state allocator = a.Allocator() let base_freq = 440.0 let volume = 0.1 func main() { allocator.update(notes) var i = 0 loop a.max_voices { let voice = allocator.voices[i] let freq = pitch * base_freq * f.pow(2.0, (voice.pitch - 69.0) / 12.0) if voice.is_active { let t = voice.age let sample = saw(freq: freq, time: t) out = out + [sample * volume; a.max_channels] } i = i + 1 } } func saw(freq f = 440.0, time t: Float) -> Float { return 2.0 * (t * f) % 1.0 - 1.0 } Installation Go to the Releases page of my GitHub repository to download the latest precompiled binary, or compile the binary yourself. Detailed installation steps are described in README .", "repo": "https://github.com/hatya-mouse/kadent", "demo": "https://github.com/hatya-mouse/kadent/releases/tag/v0.1.1"}]...
|
[{"post_id": 81784, "ts": "202 [{"post_id": 81784, "ts": "2026-10-22T14:10:13Z", "hours": 0.8664, "text": "How to add Note Region You can add note region by double-clicking in the timeline. To add notes to it, you need to select the region by clicking it first. Code Editor Error .kdp files are serialized project files, not a source code. You can create a new source file by clicking the src/ directory in the Code Editor. To add a source code to the note track, first open a node graph and add a KASL node to it. In the Inspector, you can specify the path to the source code (e.g. src/example.kasl). Added Some More Documentation I’ve added documentation with screenshots of each panels: Timeline Inspector Automation Node Graph Piano Roll Code Editor"}, {"post_id": 81773, "ts": "2026-10-22T13:18:48Z", "hours": 1.8489, "text": "Added Documentation I saw that the reviewer tried to open the binary project file in the code editor and failed so I’ve decided to add a some sort of tutorial or a documentation. I really wanted to add an interactive tutorial so that the reviewers and the users can know how Kadent works, but I didn’t have time to do so so I’ve just added a few documentation."}, {"post_id": 59408, "ts": "2026-09-01T06:49:17Z", "hours": 17.1803, "text": "Added License Browser It’s been a while since my last devlog! During this time I’ve added an Acknowledgements view where you can look at license text and other informations of the Fonts and Crates that I’ve used. It was a bit difficult to implement because there are so many crates, but I’m satisfied with the result."}, {"post_id": 56435, "ts": "2026-08-28T06:22:03Z", "hours": 41.4536, "text": "Improved code editor I’ve implemented error highlighting in the code editor. I also added a list of errors at the bottom of the code editor, and I can jump to the position of the error by clicking the error. TextEdit in egui does not support highlighting character by character and instead it only highlighting by each sections, so red underlined part may be bigger than the actual error range, but I guess it still looks nice."}, {"post_id": 52794, "ts": "2026-08-23T04:24:09Z", "hours": 10.9353, "text": "sode I’ve created a simple binary serialization crate called “sode” for Kadent. This guarantees that the output binary won’t change even if the struct is modified so I thought it would be better than serde or that sort of serialization library. impl Encode for Note { fn encode ( & self , e : & mut Encoder ) -> Result < (), EncodeError > { e .field ( 0 , & self .start ) ? ; e .field ( 1 , & self .duration ) ? ; e .field ( 2 , & self .pitch ) ? ; e .field ( 3 , & self .velocity ) ? ; Ok (()) } } impl Decode for Note { fn decode ( d : & mut ValueDecoder ) -> Result < Self , DecodeError > { let d = d .to_field_decoder () ? ; Ok ( Note :: new ( d .field ( 0 ) ? .ok_or ( DecodeError :: InvalidData ) ? , d .field ( 1 ) ? .ok_or ( DecodeError :: InvalidData ) ? , d .field ( 2 ) ? .ok_or ( DecodeError :: InvalidData ) ? , d .field ( 3 ) ? .ok_or ( DecodeError :: InvalidData ) ? , )) } }"}, {"post_id": 51188, "ts": "2026-08-20T18:06:44Z", "hours": 4.3567, "text": "Curve type selection I’ve implemented a selection dropdown for three curve types: linear, step, and smooth. Next thing to do is to add a text field to adjust the curve tension"}, {"post_id": 50847, "ts": "2026-08-20T09:11:52Z", "hours": 8.7028, "text": "Automation Automation is here. I’ve implemented an automation node, which is associated with an automation track that you can add keyframes to value that changes over time. You can even connect automation nodes to KASL Node to use the value for calculation!"}, {"post_id": 49569, "ts": "2026-08-18T13:30:07Z", "hours": 4.8889, "text": "Refactored codebase It looks exactly the same as the previous devlog, but I refactored the codebase, primarily the EditorUiState. I separated many members of EditorUiState to multiple small structs for better readability"}, {"post_id": 48851, "ts": "2026-08-17T12:25:43Z", "hours": 7.1642, "text": "Added ruler to piano roll I’ve added the ruler to the piano roll. This will make note placement easier and more intuitive than before. Also I refactored the codebase a little bit, but honestly I thought the previous implementation would be better so I may be putting it back soon."}, {"post_id": 47876, "ts": "2026-08-16T04:17:12Z", "hours": 11.8714, "text": "Add seconds support for region placement I’ve added TimePosition and TimeBounds to store the position of the region. They have two modes: one stores the position in Ticks, and another one stores it in seconds. Ticks and seconds can be calculated from each other using TempoMap."}, {"post_id": 46767, "ts": "2026-08-14T08:06:59Z", "hours": 11.5078, "text": "On-demamd resampling for audio tracks Audio regions require resampling because the sample rate of the source data may differ from the required sample rate. So far, the audio engine for Kadent has been resampling the entire audio data before playback or exporting. However, resampling audio data in advance takes a lot of CPU and increases the time it takes to prepare for playback. This time I made it resample the audio data on demand during playback. This makes audio thread not to store the massive resampled audio data. *sample rate: a value that indicates how many samples are in a single second *sample: a value that represents the sound wave’s loudness at a specific moment in time"}, {"post_id": 45991, "ts": "2026-08-12T20:39:49Z", "hours": 49.1206, "text": "Waveform Rendering & Scroll Bar This time, I’ve mainly implemented two features: waveform rendering and timeline scroll bar. Waveform I’ve added a waveform rendering logic to the timeline. I handled it by generating peak value data to render it quicker than calculating the peak value while rendering. After all, it looks pretty nice and scales perfectly when zooming with my trackpad. Timeline Scroll Bar Another feature I’ve added is a timeline scroll bar. It may not look appealing, but its calculation was quite hard actually. I had to calculate the ratio of the visible area and the entire timeline to get the width of the scroll bar. I think it is lot better than egui’s builtin scroll bar, so I’m quite satisfied with the outcome!"}, {"post_id": 20035, "ts": "2026-07-01T15:15:14Z", "hours": 1.9881, "text": "Ability to adjust project range I’ve implemented a feature that the user can adjust the project’s export range just by dragging the handle in the ruler. Also the actual number is shown in the status bar while the handle is being dragged so the user can know the exact beat where is going to be exported."}, {"post_id": 19709, "ts": "2026-07-01T03:15:36Z", "hours": 23.7522, "text": "Refactored the audio engine I’ve streamlined the note processing logic in the audio engine. So far, the audio engine handled sequenced notes (notes that you can see in the editor) and the realtime MIDI notes that you can play using some MIDI controllers differently. It also lacked maintainability. That’s why I’ve completely rebuilt the logic to unify the process. It also contributed to reduce the amount of code, and I’m happy with that."}, {"post_id": 16801, "ts": "2026-06-27T08:53:19Z", "hours": 3.0306, "text": "Added Status Bar I’ve added a new status bar, which shows some informations such as sample rate, buffer size and the selected content, at the bottom of the window. Fixed Node Graph Rendering Bug The node graph used to be rendered on the front of the header, but I finally fixed this by using Panel to limit the area where painter can draw the graph."}, {"post_id": 15135, "ts": "2026-06-24T16:22:43Z", "hours": 7.1325, "text": "Improved menu design I’ve improved the design of the menu by adjusting the button style. It took quite a long time because of egui’s a little bit confusing styling API. Refactor and optimize the audio engine I’ve refactored the audio engine by using integer ticks to manage time instead of f32 beats. By using integer ticks, it can be calculated even faster and more accurately."}, {"post_id": 12564, "ts": "2026-06-20T14:55:28Z", "hours": 1.1906, "text": "Nested dropdown menu for device selection I’ve improved a device selection feature by nesting the menu. Thanks to this, users can click a single headphones button to change the MIDI ports and output devices. Also I added some icons for these."}, {"post_id": 12510, "ts": "2026-06-20T13:06:52Z", "hours": 1.2117, "text": "Selectable audio output I’ve added a feature to select audio output! It may seem simple but it actually needed refactoring the audio engine and it took a lot of time."}, {"post_id": 12455, "ts": "2026-06-20T10:23:24Z", "hours": 2.4333, "text": "Replacing audio stream when switching devices I’ve implemented a logic in the audio engine, that allows the Kadent DAW to switch the output device. It was challenging because Mixer and MPSC consumers cannot be cloned. Finally I used Arc and Mutex in order to share the context with multiple threads. let callback_ctx = Arc::new(Mutex::new(OutputCallbackContext { mixer, command_cons, midi_cons, vu_prod, pending_project: pending_arc, })); I used try_lock instead of normal lock , which may block the thread, as you can see in the screenshot."}, {"post_id": 9312, "ts": "2026-06-15T16:59:09Z", "hours": 5.6553, "text": "KASL module system improvement So far, KASL compiler didn’t allow us to import external programs with the same name, because the name of the namespace conflicts. Today I have added new alias feature, which can be used like this: import foo as bar With this syntax, you can import a program named foo.kasl and refer to it with bar . This can also improve readability when importing a file with a long name! Streamline compilation I wanted to try compiling Kadent to application that can be installed using an installer, instead of a simple executable binary. I found Taskfile, which is a build tool similar to make but uses a yaml file to define workflows. I found it very useful so I adopted it and it worked very well! Currently I only have workflow for macOS compilation but I want to add Windows and Linux support soon!"}, {"post_id": 8724, "ts": "2026-06-14T14:21:32Z", "hours": 2.6775, "text": "Project creation dialog I’ve implemented new project creation dialog. You can specify the name of the project and select the folder using a picker from the system."}, {"post_id": 8532, "ts": "2026-06-14T06:06:41Z", "hours": 2.6142, "text": "Implemented splash screen I’ve finally finished implementing the splash screen for Kadent. On the left side, there are two buttons for creating or opening a project. The right panel shows the recent projects. Challenge The biggest challenge in implementing the splash screen was to layout UI components. It was quite hard to center the logo and the buttons. I spent around 1hrs dealing with that problem. Here’s how I solved it: const BUTTON_WIDTH : f32 = 300.0 ; const BUTTON_HEIGHT : f32 = 42.0 ; const CONTENT_HEIGHT : f32 = 60.0 + 12.0 + 16.0 + 24.0 + 12.0 + BUTTON_HEIGHT * 2.0 ; impl SplashUi { pub ( super ) fn splash_controls ( & mut self , ui : & mut egui :: Ui ) -> Option < EditorTransition > { ui .vertical_centered (| ui | { // Add space to vertically center the UI parts ui .add_space ( full_height / 2.0 - CONTENT_HEIGHT / 2.0 ); // UI Components }) .inner } } Since centering both horizontally and vertically while calculating the height of the inner content is painful, I eventually hardcoded the height of the UI components in order to center the UI vertically. Logo I’ve also designed a logo for Kadent in the meantime. I tweaked the font called “Inter”, which is available on Google Fonts, for the logo."}, {"post_id": 8172, "ts": "2026-06-13T16:50:03Z", "hours": 7.3775, "text": "Kadent — A DAW with custom language to create synths and effects Refactored project strucure As my codebase became bigger, it started to be a bit complicated, so I’ve refactored the codebase. New folder structure is consist of four directories in src/ directory: commands , core , storage , and ui . commands directory contains the audio engine communication logic. It has some functions like add_note that adds a new note to the specified track and sends the updated project to the audio thread. core directory contains KASLNode implementation and some metadata. KASLNode is a specific node that can literally execute KASL programs. Metadata is a data that are not necessarily tied to audio engine. It includes track colors, track names, region names, etc. storage directory contains some implementation for storing and loading files. It has a logic to save and load the Kadent project file. ui directory contains the UI implementation. Inside the ui directory, there are components , theme , and workspaces directories. components directory has some common UI parts used in various parts of the DAW. theme defines colors and size used in the UI. workspaces contains the UI implementation for the editor and the splash screen. Splash screen I’m currently implementing a splash screen for Kadent. It used to have just two buttons to create or open a project. I’ve just finished implementing “Recent Projects” list. (shown on the right side)"}, {"post_id": 4027, "ts": "2026-06-07T06:23:01Z", "hours": 1.4083, "text": "Implemented multithread track processing for the audio engine using Rayon ! I used to think implementing multithreading would be a nightmare, but I utilized Rayon which was actually very intuitive and easy to use. The screenshot shows the exact code where the tracks are being processed in parallel."}, {"post_id": 30, "ts": "2026-05-31T09:44:30Z", "hours": 1.7811, "text": "I am working on a WASM backend for my KASL language!"}]...
|
Title: Kadent by @hacha-mouse | Stardance
Devlogs Title: Kadent by @hacha-mouse | Stardance
Devlogs:
I am working on a WASM backend for my KASL language!
Implemented multithread track processing for the audio engine using Rayon ! I used to think implementing multithreading would be a nightmare, but I utilized Rayon which was actually very intuitive and easy to use. The screenshot shows the exact code where the tracks are being processed in parallel.
Kadent — A DAW with custom language to create synths and effects Refactored project strucure As my codebase became bigger, it started to be a bit complicated, so I’ve refactored the codebase. New folder structure is consist of four directories in src/ directory: commands , core , storage , and ui . commands directory contains the audio engine communication logic. It has some functions like add_note that adds a new note to the specified track and sends the updated project to the audio thread. core directory contains KASLNode implementation and some metadata. KASLNode is a specific node that can literally execute KASL programs. Metadata is a data that are not necessarily tied to audio engine. It includes track colors, track names, region names, etc. storage directory contains some implementation for storing and loading files. It has a logic to save and load the Kadent project file. ui directory contains the UI implementation. Inside the ui directory, there are components , theme , and workspaces directories. components directory has some common UI parts used in various parts of the DAW. theme defines colors and size used in the UI. workspaces contains the UI implementation for the editor and the splash screen. Splash screen I’m currently implementing a splash screen for Kadent. It used to have just two buttons to create or open a project. I’ve just finished implementing “Recent Projects” list. (shown on the right side)
Implemented splash screen I’ve finally finished implementing the splash screen for Kadent. On the left side, there are two buttons for creating or opening a project. The right panel shows the recent projects. Challenge The biggest challenge in implementing the splash screen was to layout UI components. It was quite hard to center the logo and the buttons. I spent around 1hrs dealing with that problem. Here’s how I solved it: const BUTTON_WIDTH : f32 = 300.0 ; const BUTTON_HEIGHT : f32 = 42.0 ; const CONTENT_HEIGHT : f32 = 60.0 + 12.0 + 16.0 + 24.0 + 12.0 + BUTTON_HEIGHT * 2.0 ; impl SplashUi { pub ( super ) fn splash_controls ( & mut self , ui : & mut egui :: Ui ) -> Option < EditorTransition > { ui .vertical_centered (| ui | { // Add space to vertically center the UI parts ui .add_space ( full_height / 2.0 - CONTENT_HEIGHT / 2.0 ); // UI Components }) .inner } } Since centering both horizontally and vertically while calculating the height of the inner content is painful, I eventually hardcoded the height of the UI components in order to center the UI vertically. Logo I’ve also designed a logo for Kadent in the meantime. I tweaked the font called “Inter”, which is available on Google Fonts, for the logo.
Project creation dialog I’ve implemented new project creation dialog. You can specify the name of the project and select the folder using a picker from the system.
KASL module system improvement So far, KASL compiler didn’t allow us to import external programs with the same name, because the name of the namespace conflicts. Today I have added new alias feature, which can be used like this: import foo as bar With this syntax, you can import a program named foo.kasl and refer to it with bar . This can also improve readability when importing a file with a long name! Streamline compilation I wanted to try compiling Kadent to application that can be installed using an installer, instead of a simple executable binary. I found Taskfile, which is a build tool similar to make but uses a yaml file to define workflows. I found it very useful so I adopted it and it worked very well! Currently I only have workflow for macOS compilation but I want to add Windows and Linux support soon!
Replacing audio stream when switching devices I’ve implemented a logic in the audio engine, that allows the Kadent DAW to switch the output device. It was challenging because Mixer and MPSC consumers cannot be cloned. Finally I used Arc and Mutex in order to share the context with multiple threads. let callback_ctx = Arc::new(Mutex::new(OutputCallbackContext { mixer, command_cons, midi_cons, vu_prod, pending_project: pending_arc, })); I used try_lock instead of normal lock , which may block the thread, as you can see in the screenshot.
Selectable audio output I’ve added a feature to select audio output! It may seem simple but it actually needed refactoring the audio engine and it took a lot of time.
Nested dropdown menu for device selection I’ve improved a device selection feature by nesting the menu. Thanks to this, users can click a single headphones button to change the MIDI ports and output devices. Also I added some icons for these.
Improved menu design I’ve improved the design of the menu by adjusting the button style. It took quite a long time because of egui’s a little bit confusing styling API. Refactor and optimize the audio engine I’ve refactored the audio engine by using integer ticks to manage time instead of f32 beats. By using integer ticks, it can be calculated even faster and more accurately.
Added Status Bar I’ve added a new status bar, which shows some informations such as sample rate, buffer size and the selected content, at the bottom of the window. Fixed Node Graph Rendering Bug The node graph used to be rendered on the front of the header, but I finally fixed this by using Panel to limit the area where painter can draw the graph.
Refactored the audio engine I’ve streamlined the note processing logic in the audio engine. So far, the audio engine handled sequenced notes (notes that you can see in the editor) and the realtime MIDI notes that you can play using some MIDI controllers differently. It also lacked maintainability. That’s why I’ve completely rebuilt the logic to unify the process. It also contributed to reduce the amount of code, and I’m happy with that.
Ability to adjust project range I’ve implemented a feature that the user can adjust the project’s export range just by dragging the handle in the ruler. Also the actual number is shown in the status bar while the handle is being dragged so the user can know the exact beat where is going to be exported.
Waveform Rendering & Scroll Bar This time, I’ve mainly implemented two features: waveform rendering and timeline scroll bar. Waveform I’ve added a waveform rendering logic to the timeline. I handled it by generating peak value data to render it quicker than calculating the peak value while rendering. After all, it looks pretty nice and scales perfectly when zooming with my trackpad. Timeline Scroll Bar Another feature I’ve added is a timeline scroll bar. It may not look appealing, but its calculation was quite hard actually. I had to calculate the ratio of the visible area and the entire timeline to get the width of the scroll bar. I think it is lot better than egui’s builtin scroll bar, so I’m quite satisfied with the outcome!
On-demamd resampling for audio tracks Audio regions require resampling because the sample rate of the source data may differ from the required sample rate. So far, the audio engine for Kadent has been resampling the entire audio data before playback or exporting. However, resampling audio data in advance takes a lot of CPU and increases the time it takes to prepare for playback. This time I made it resample the audio data on demand during playback. This makes audio thread not to store the massive resampled audio data. *sample rate: a value that indicates how many samples are in a single second *sample: a value that represents the sound wave’s loudness at a specific moment in time
Add seconds support for region placement I’ve added TimePosition and TimeBounds to store the position of the region. They have two modes: one stores the position in Ticks, and another one stores it in seconds. Ticks and seconds can be calculated from each other using TempoMap.
Added ruler to piano roll I’ve added the ruler to the piano roll. This will make note placement easier and more intuitive than before. Also I refactored the codebase a little bit, but honestly I thought the previous implementation would be better so I may be putting it back soon.
Refactored codebase It looks exactly the same as the previous devlog, but I refactored the codebase, primarily the EditorUiState. I separated many members of EditorUiState to multiple small structs for better readability
Automation Automation is here. I’ve implemented an automation node, which is associated with an automation track that you can add keyframes to value that changes over time. You can even connect automation nodes to KASL Node to use the value for calculation!
Curve type selection I’ve implemented a selection dropdown for three curve types: linear, step, and smooth. Next thing to do is to add a text field to adjust the curve tension
sode I’ve created a simple binary serialization crate called “sode” for Kadent. This guarantees that the output binary won’t change even if the struct is modified so I thought it would be better than serde or that sort of serialization library. impl Encode for Note { fn encode ( & self , e : & mut Encoder ) -> Result < (), EncodeError > { e .field ( 0 , & self .start ) ? ; e .field ( 1 , & self .duration ) ? ; e .field ( 2 , & self .pitch ) ? ; e .field ( 3 , & self .velocity ) ? ; Ok (()) } } impl Decode for Note { fn decode ( d : & mut ValueDecoder ) -> Result < Self , DecodeError > { let d = d .to_field_decoder () ? ; Ok ( Note :: new ( d .field ( 0 ) ? .ok_or ( DecodeError :: InvalidData ) ? , d .field ( 1 ) ? .ok_or ( DecodeError :: InvalidData ) ? , d .field ( 2 ) ? .ok_or ( DecodeError :: InvalidData ) ? , d .field ( 3 ) ? .ok_or ( DecodeError :: InvalidData ) ? , )) } }
Improved code editor I’ve implemented error highlighting in the code editor. I also added a list of errors at the bottom of the code editor, and I can jump to the position of the error by clicking the error. TextEdit in egui does not support highlighting character by character and instead it only highlighting by each sections, so red underlined part may be bigger than the actual error range, but I guess it still looks nice.
Added License Browser It’s been a while since my last devlog! During this time I’ve added an Acknowledgements view where you can look at license text and other informations of the Fonts and Crates that I’ve used. It was a bit difficult to implement because there are so many crates, but I’m satisfied with the result.
Added Documentation I saw that the reviewer tried to open the binary project file in the code editor and failed so I’ve decided to add a some sort of tutorial or a documentation. I really wanted to add an interactive tutorial so that the reviewers and the users can know how Kadent works, but I didn’t have time to do so so I’ve just added a few documentation.
How to add Note Region You can add note region by double-clicking in the timeline. To add notes to it, you need to select the region by clicking it first. Code Editor Error .kdp files are serialized project files, not a source code. You can create a new source file by clicking the src/ directory in the Code Editor. To add a source code to the note track, first open a node graph and add a KASL node to it. In the Inspector, you can specify the path to the source code (e.g. src/example.kasl). Added Some More Documentation I’ve added documentation with screenshots of each panels: Timeline Inspector Automation Node Graph Piano Roll Code Editor
Ships:
Kadent Kadent is a cross-platform DAW featuring KASL, a domain-specific audio language, and node-graph processing system. Features Create music with familiar track-based UI Two track types: Note Track & Audio Track Node graph for every track KASL language with syntax similar to Swift The node graph allows you to combine multiple KASL programs to perform much more complex processing. What Is a Node Graph? Kadent uses node graph for track processing. A Node is a processing unit that calculates the output. In node graph, an output of one node can be connected to an input of another node. This allows you to connect multiple inputs and outputs freely to other nodes to create sound. Then, why did I adopt node graph? KASL programs can have multiple inputs and outputs, and their types may also vary. So placing them in order does not work because the DAW cannot know which output is connected to the specific input. That’s why Kadent uses node graph. Characteristics of KASL Utilizes Cranelift as a backend for quicker JIT compilation Specialized type of variables such as input , output and state Supports fixed-length arrays and structs Fixed-count loop syntax for predictable execution time Module system influenced by Python Custom infix/prefix/postfix operators (even normal arithmetic operators are defined and provided by std ) KASL Sample Program audio module is built-in module provided by Kadent. Note that these programs below won’t work outside the DAW. Gain Node import audio import std input in = audio.zero_sample() input gain = 0.0 output out = audio.zero_sample() func main() { out = in * [gain; audio.max_channels] } Mix Node import std import std/math/float as f import audio input input_1 = audio.zero_sample() input input_2 = audio.zero_sample() input factor = 0.0 output out = audio.zero_sample() func main() { let clamped_factor = f.clamp(factor, 0.0, 1.0) let multiplied_input_1: audio.Sample = input_1 * [clamped_factor; audio.max_channels] let multiplied_input_2: audio.Sample = input_2 * [1.0 - clamped_factor; audio.max_channels] out = multiplied_input_1 + multiplied_input_2 } Sawtooth Wave Synthesizer import audio as a import std import std/math/float as f input notes = a.EventSlot() input pitch = 1.0 output out = a.zero_sample() state allocator = a.Allocator() let base_freq = 440.0 let volume = 0.1 func main() { allocator.update(notes) var i = 0 loop a.max_voices { let voice = allocator.voices[i] let freq = pitch * base_freq * f.pow(2.0, (voice.pitch - 69.0) / 12.0) if voice.is_active { let t = voice.age let sample = saw(freq: freq, time: t) out = out + [sample * volume; a.max_channels] } i = i + 1 } } func saw(freq f = 440.0, time t: Float) -> Float { return 2.0 * (t * f) % 1.0 - 1.0 } Installation Go to the Releases page of my GitHub repository to download the latest precompiled binary, or compile the binary yourself. Detailed installation steps are described in README ....
|
1793084139.471328
|
1793170539.471328
|
|
278
|
six seven by @qcoral | Stardance
|
qcoral
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: six seven by @qcoral | Stardance
|
1792691341.2436485
|
1793296141.2436485
|
|
279
|
My first slack bot! by @Will | Stardance
|
Will
|
0
|
0.44
|
0
|
[]
|
[{"post_id": 8776, "ts": "2026 [{"post_id": 8776, "ts": "2026-06-14T16:14:23Z", "hours": 0.4419, "text": "Start working"}]...
|
Title: My first slack bot! by @Will | Stardance
D Title: My first slack bot! by @Will | Stardance
Devlogs:
Start working...
|
1792594508.6439064
|
1793199308.6439064
|
|
281
|
Pond Extended by @hatya-mouse | Stardance
|
hatya-mouse
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Pond Extended by @hatya-mouse | Stardance
|
1792936381.185834
|
1793800381.185834
|
|
282
|
Hlack by @ee | Stardance
|
ee
|
0
|
0.67
|
0
|
[]
|
[{"post_id": 2699, "ts": "2026 [{"post_id": 2699, "ts": "2026-06-05T12:17:47Z", "hours": 0.2544, "text": "i hate websockets. i hate websockets. i hate websockets geniunely why does ts need to be this complicated. First I needed to make a venv bcz the download was being weird, that’s fine. THEN THEN THEN when i started running the extremely basic chat app, it just kept immediatly dropping the connection, which is normal cuz chrome right? BUT THEN i download the extension that’s supposed to make it work and it jst doesn’t uh what i made wise, I followed a W3 schools guide to make a basic websockets chat app."}, {"post_id": 737, "ts": "2026-06-02T11:13:45Z", "hours": 0.4197, "text": "hiya! I’ve decided what “framework” I will be using and I’m here to share. I won’t be using one! I went through like 5 of them, and none of them worked. Flutter - Demoing didn’t work React Native - Started deleting files Lynx - Demo was crashing my computer Sparkling (lynx kotlin ig) - Same as before So uh yeah! I’ll be using python to take and send requests to a database, then I’ll probably make the actual application with html/css or use tkui or wtv it’s called. So uh, yeah! I don’t really have a screenshot but uh this is the amount of times i tried to download the lynx explorer :c"}]...
|
Title: Hlack by @ee | Stardance
Devlogs:
hiya! I’ Title: Hlack by @ee | Stardance
Devlogs:
hiya! I’ve decided what “framework” I will be using and I’m here to share. I won’t be using one! I went through like 5 of them, and none of them worked. Flutter - Demoing didn’t work React Native - Started deleting files Lynx - Demo was crashing my computer Sparkling (lynx kotlin ig) - Same as before So uh yeah! I’ll be using python to take and send requests to a database, then I’ll probably make the actual application with html/css or use tkui or wtv it’s called. So uh, yeah! I don’t really have a screenshot but uh this is the amount of times i tried to download the lynx explorer :c
i hate websockets. i hate websockets. i hate websockets geniunely why does ts need to be this complicated. First I needed to make a venv bcz the download was being weird, that’s fine. THEN THEN THEN when i started running the extremely basic chat app, it just kept immediatly dropping the connection, which is normal cuz chrome right? BUT THEN i download the extension that’s supposed to make it work and it jst doesn’t uh what i made wise, I followed a W3 schools guide to make a basic websockets chat app....
|
1792572561.4086773
|
1793177361.4086773
|
|
283
|
Welle by @lumentae | Stardance
|
lumentae
|
0
|
33.46
|
0
|
[]
|
[{"post_id": 43224, "ts": "202 [{"post_id": 43224, "ts": "2026-08-08T11:14:05Z", "hours": 0.61, "text": "I updated the artist list and the song list to look better by adding margin between each entry and rounding the images a bit!"}, {"post_id": 39465, "ts": "2026-08-02T13:03:47Z", "hours": 2.0208, "text": "The artists page is now implemented! Also I kinda forgot about this project lol"}, {"post_id": 27904, "ts": "2026-07-13T20:34:56Z", "hours": 1.2594, "text": "I added some code to request all the playlists for the current user and also wrote some QML to display it in the sidebar! Currently they don’t have any icons or cover art, but I’m going to implement that soon™"}, {"post_id": 27747, "ts": "2026-07-13T16:04:28Z", "hours": 2.4331, "text": "I kinda forgot to post a devlog, but I have implemented support for a database and now they’re loaded from there first instead of having to request them all the time from the Navidrome server. Also I fixed the annoying QML error that a class couldn’t be instantiated if it didn’t match the constructor or something like that (I forgot…)"}, {"post_id": 21794, "ts": "2026-07-03T22:13:19Z", "hours": 1.3036, "text": "I have implemented a simple queue list at the right side! It’s still pretty useless and only serves the purpose of being able to see what will be played, but it’s still nice to have and expanded on in the future! Also sorry again for a long time between updates…"}, {"post_id": 17313, "ts": "2026-06-28T01:14:48Z", "hours": 0.6122, "text": "I added a simple context menu! (I’m way more productive with the todo list…)"}, {"post_id": 17256, "ts": "2026-06-27T23:37:42Z", "hours": 1.3014, "text": "I added a volume slider! Not much to add but that I was working on another project the last few days so development was halted for a short bit, but will now pick up again!"}, {"post_id": 13307, "ts": "2026-06-21T19:43:59Z", "hours": 3.0239, "text": "I added support for MPRIS and I found out that it’s actually a quite interesting protocol (uses microseconds instead of milliseconds, which I found out the hard way…). Also I moved everything audio related to medialib so I can reuse most code for a future TUI or web interface!"}, {"post_id": 13030, "ts": "2026-06-21T09:39:29Z", "hours": 0.8406, "text": "I fixed a bug with cmake downloading the Material Symbols font as a css stylesheet and QML was trying to load it as a font, but kept failing… Also I made a todo list with a few entries so I don’t forget what to work on 😭"}, {"post_id": 11972, "ts": "2026-06-19T15:22:31Z", "hours": 0.6294, "text": "I added a repeat and shuffle button! I also fixed the queue, since it didn’t add new songs when scrolling and only the first 100 songs were loaded!"}, {"post_id": 11536, "ts": "2026-06-18T20:41:36Z", "hours": 1.2825, "text": "I added a really simple queue that you cant view anywhere and not add songs right now, but works and the pause button now shows the current state of the song (playing and paused). Also I added skip buttons to play the previous or next song!"}, {"post_id": 10766, "ts": "2026-06-17T17:53:20Z", "hours": 2.0261, "text": "There’s now a pause and play button and I fixed a bug that crashed the program after playing another song after one finished 😭. I’ll add more media buttons like skipping or shuffle/repeat next!"}, {"post_id": 8415, "ts": "2026-06-13T23:57:44Z", "hours": 1.0186, "text": "Dragging works for seeking now. Also I’m sorry for not posting any devlogs the last week since I’ve been really busy with school lately (due to having to run shows…)"}, {"post_id": 3426, "ts": "2026-06-06T11:10:26Z", "hours": 1.2039, "text": "The text is now being elided correctly and the progress bar is finally centered! Also I started working on showing the song progress, but haven’t made it interactive yet"}, {"post_id": 3229, "ts": "2026-06-06T01:50:59Z", "hours": 2.5819, "text": "I improved the bottom bar, but the progress bar is still not how I like it. This has also made me realise how much I HATE layouts in QML"}, {"post_id": 2793, "ts": "2026-06-05T16:35:09Z", "hours": 2.2756, "text": "Music can now be played and I added an incomplete player bar at the bottom that doesn’t show much yet 😭. I first started working on the bottom bar without having done the player before so I was kinda stuck and had to implement the player so I could add the media controls like seek, current media information or the pause, play and stop buttons aswell as the volume slider (which I really need…)"}, {"post_id": 2483, "ts": "2026-06-05T00:09:40Z", "hours": 2.0244, "text": "The song list now infinitely scrolls and song cover art is now shown!"}, {"post_id": 2026, "ts": "2026-06-04T09:42:51Z", "hours": 0.9128, "text": "I remade the songlist and was inspired from Feishin’s design. I’ll implement the song covers and the home page next!"}, {"post_id": 1753, "ts": "2026-06-03T22:50:33Z", "hours": 1.9433, "text": "I added a simple sidebar which currently only shows the song list because I haven’t added page switching yet, but content pages can be loaded dynamically now!!"}, {"post_id": 1001, "ts": "2026-06-02T19:44:19Z", "hours": 2.1475, "text": "I reworked the OpenSubsonic API, added support for QML and created a simple song list. It was really hard to implement QML models and found out that QList::fromVector does not convert a std::vector to a QList 😭"}, {"post_id": 427, "ts": "2026-06-01T20:38:24Z", "hours": 1.5978, "text": "I got the authentication working and also its now possible to search for songs, artists and albums. Still no GUI or music player yet… 😅"}, {"post_id": 114, "ts": "2026-05-31T20:20:28Z", "hours": 0.4119, "text": "I created the rough project structure and already included dependencies for the Open Subsonic client, but have not written any code for it yet 😭. I will work on it tomorrow when I have more time and focus on getting the authorization and other things to work!"}]...
|
Title: Welle by @lumentae | Stardance
Devlogs:
I Title: Welle by @lumentae | Stardance
Devlogs:
I created the rough project structure and already included dependencies for the Open Subsonic client, but have not written any code for it yet 😭. I will work on it tomorrow when I have more time and focus on getting the authorization and other things to work!
I got the authentication working and also its now possible to search for songs, artists and albums. Still no GUI or music player yet… 😅
I reworked the OpenSubsonic API, added support for QML and created a simple song list. It was really hard to implement QML models and found out that QList::fromVector does not convert a std::vector to a QList 😭
I added a simple sidebar which currently only shows the song list because I haven’t added page switching yet, but content pages can be loaded dynamically now!!
I remade the songlist and was inspired from Feishin’s design. I’ll implement the song covers and the home page next!
The song list now infinitely scrolls and song cover art is now shown!
Music can now be played and I added an incomplete player bar at the bottom that doesn’t show much yet 😭. I first started working on the bottom bar without having done the player before so I was kinda stuck and had to implement the player so I could add the media controls like seek, current media information or the pause, play and stop buttons aswell as the volume slider (which I really need…)
I improved the bottom bar, but the progress bar is still not how I like it. This has also made me realise how much I HATE layouts in QML
The text is now being elided correctly and the progress bar is finally centered! Also I started working on showing the song progress, but haven’t made it interactive yet
Dragging works for seeking now. Also I’m sorry for not posting any devlogs the last week since I’ve been really busy with school lately (due to having to run shows…)
There’s now a pause and play button and I fixed a bug that crashed the program after playing another song after one finished 😭. I’ll add more media buttons like skipping or shuffle/repeat next!
I added a really simple queue that you cant view anywhere and not add songs right now, but works and the pause button now shows the current state of the song (playing and paused). Also I added skip buttons to play the previous or next song!
I added a repeat and shuffle button! I also fixed the queue, since it didn’t add new songs when scrolling and only the first 100 songs were loaded!
I fixed a bug with cmake downloading the Material Symbols font as a css stylesheet and QML was trying to load it as a font, but kept failing… Also I made a todo list with a few entries so I don’t forget what to work on 😭
I added support for MPRIS and I found out that it’s actually a quite interesting protocol (uses microseconds instead of milliseconds, which I found out the hard way…). Also I moved everything audio related to medialib so I can reuse most code for a future TUI or web interface!
I added a volume slider! Not much to add but that I was working on another project the last few days so development was halted for a short bit, but will now pick up again!
I added a simple context menu! (I’m way more productive with the todo list…)
I have implemented a simple queue list at the right side! It’s still pretty useless and only serves the purpose of being able to see what will be played, but it’s still nice to have and expanded on in the future! Also sorry again for a long time between updates…
I kinda forgot to post a devlog, but I have implemented support for a database and now they’re loaded from there first instead of having to request them all the time from the Navidrome server. Also I fixed the annoying QML error that a class couldn’t be instantiated if it didn’t match the constructor or something like that (I forgot…)
I added some code to request all the playlists for the current user and also wrote some QML to display it in the sidebar! Currently they don’t have any icons or cover art, but I’m going to implement that soon™
The artists page is now implemented! Also I kinda forgot about this project lol
I updated the artist list and the song list to look better by adding margin between each entry and rounding the images a bit!...
|
1792770758.5210757
|
1793375558.5210757
|
|
284
|
Untitled by @SeradedStripes | Stardance
|
SeradedStripes
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Untitled by @SeradedStripes | Stardance
|
1792533264.9991643
|
1793138064.9991643
|
|
285
|
Garden Produce Checker by @Ventengo | Stardance
|
Ventengo
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Garden Produce Checker by @Ventengo | Stard Title: Garden Produce Checker by @Ventengo | Stardance...
|
1792522250.6616337
|
1793127050.6616337
|
|
287
|
NULL
|
NULL
|
0
|
0.0
|
0
|
[]
|
[]
|
|
1792925249.726891
|
1793789249.726891
|
|
288
|
stardisco by @simonpth | Stardance
|
simonpth
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: stardisco by @simonpth | Stardance
|
1792687659.249788
|
1793292459.249788
|
|
289
|
Untitled project by @technodot | Stardance
|
technodot
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Untitled project by @technodot | Stardance
|
1792608874.4977226
|
1793213674.4977226
|
|
290
|
Dawn of space by @abtheinnovator | Stardance
|
abtheinnovator
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Dawn of space by @abtheinnovator | Stardanc Title: Dawn of space by @abtheinnovator | Stardance...
|
1792479038.7145078
|
1793083838.7145078
|
|
293
|
Server Dashboard by @hardikgupta2232 | Stardance
|
hardikgupta2232
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Server Dashboard by @hardikgupta2232 | Star Title: Server Dashboard by @hardikgupta2232 | Stardance...
|
1792533216.052642
|
1793138016.052642
|
|
294
|
redaptcha by @redac1ed | Stardance
|
redac1ed
|
0
|
0.53
|
0
|
[]
|
[{"post_id": 857, "ts": "2026- [{"post_id": 857, "ts": "2026-06-02T15:49:32Z", "hours": 0.5281, "text": "Heya! This is the starting of this captcha that I am making in Rust! Changes: added a frontend to test the captcha added a backend to make the prototype Commits: cbad970 Now, I am going to lock in to make a plan for the backend."}]...
|
Title: redaptcha by @redac1ed | Stardance
Devlogs Title: redaptcha by @redac1ed | Stardance
Devlogs:
Heya! This is the starting of this captcha that I am making in Rust! Changes: added a frontend to test the captcha added a backend to make the prototype Commits: cbad970 Now, I am going to lock in to make a plan for the backend....
|
1792522300.2747133
|
1793127100.2747133
|
|
295
|
kasl.hatya.dev by @hatya-mouse | Stardance
|
hatya-mouse
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: kasl.hatya.dev by @hatya-mouse | Stardance
|
1792932725.286906
|
1793796725.286906
|
|
296
|
Realistic Sticky Notes by @rx76d | Stardance
|
rx76d
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Realistic Sticky Notes by @rx76d | Stardanc Title: Realistic Sticky Notes by @rx76d | Stardance...
|
1792932545.6712625
|
1793796545.6712625
|
|
297
|
Eye classifier by @miku | Stardance
|
miku
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Eye classifier by @miku | Stardance
|
1792907439.5785377
|
1793771439.5785377
|
|
298
|
Personal Website by @shravs | Stardance
|
shravs
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Personal Website by @shravs | Stardance
|
1792767215.3303115
|
1793372015.3303115
|
|
299
|
Signal.fm by @shravs | Stardance
|
shravs
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Signal.fm by @shravs | Stardance
|
1792590879.9595098
|
1793195679.9595098
|
|
300
|
cool project by @zvan | Stardance
|
zvan
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: cool project by @zvan | Stardance
|
1792493719.05231
|
1793098519.05231
|
|
302
|
beans by @MMK21_Spam2 | Stardance
|
MMK21_Spam2
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: beans by @MMK21_Spam2 | Stardance
|
1792532979.7868414
|
1793137779.7868414
|
|
303
|
A productivity tool by @ezechukwumiracle52 | Stard A productivity tool by @ezechukwumiracle52 | Stardance...
|
ezechukwumiracle52
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: A productivity tool by @ezechukwumiracle52 Title: A productivity tool by @ezechukwumiracle52 | Stardance...
|
1792518849.197014
|
1793123649.197014
|
|
304
|
Untitled by @imu | Stardance
|
imu
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Untitled by @imu | Stardance
|
1792932663.0595
|
1793796663.0595
|
|
305
|
Untitled by @imu | Stardance
|
imu
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Untitled by @imu | Stardance
|
1792939648.34226
|
1793803648.34226
|
|
306
|
My first slack bot! by @SSLTunezz | Stardance
|
SSLTunezz
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My first slack bot! by @SSLTunezz | Stardan Title: My first slack bot! by @SSLTunezz | Stardance...
|
1792752529.9190128
|
1793357329.9190128
|
|
307
|
Idk by @pratikkumararyan | Stardance
|
pratikkumararyan
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Idk by @pratikkumararyan | Stardance
|
1792568863.1016521
|
1793173663.1016521
|
|
308
|
Apollo Accord by @alien | Stardance
|
alien
|
1
|
49.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-11T12:42:36Z", "hours": 49.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I built a shooter-RPG ish game where you fight invading aliens that are seeking to take over your ship. As the captain, you must fight your way against the overpowering enemies, and send clear signals of surrender before your entire ship is taken over. I wanted to finish this project up until the player can communicate with other alien civilizations other than the invading one, but due to time constraints and my busier than ever schedule I won’t be able to work on this project much more, at least for the time being. I’ll be shipping this project and packing up. You can try the project by downloading the appropriate zip file for your system. Linux and the web package is still unverified, so potential players are advised to stick to the MacOS and Windows releases. Thank you for your understanding.", "repo": "https://github.com/SoHiEarth/Apollo-Accord", "demo": "https://sohiearth.itch.io/apollo-accord"}]...
|
[{"post_id": 65938, "ts": "202 [{"post_id": 65938, "ts": "2026-09-11T12:36:46Z", "hours": 1.3, "text": "Build Update. Worked on building releases for Linux, Mac, Windows and web (html). Not much on the technical side either, just baking light maps and polishing up some stuff in the game. This is because I have some priorities that are higher than Stardance, unfortunately, and I think I won’t be able to finish this project to the level I was expecting. I appreciate your understanding."}, {"post_id": 59140, "ts": "2026-08-31T19:23:39Z", "hours": 3.3025, "text": "Lights Out. Major Doom 3 vibes happening Explore the Unknown, and sometimes, terrifying. Decided to lean in a bit more on the “explore” factor and made many rooms darker overall. The capsules you see here are the enemies you fight, multiplied by the difficulty set in the settings. I’m thinking of adding red, glowing eyes or something to make it a bit scarier. I plan to not lean too much on this aspect, though. This is only for the first chapter of the story. PSA on the lighting. The reflections on the gun is a bit off, I know, I’m fixing it right now. Anyway, that’s the update for today! Going to work on some more story content soon."}, {"post_id": 57188, "ts": "2026-08-29T09:21:04Z", "hours": 2.8056, "text": "Apollo Accord: Gameplay and story updates, finally! After multiple delays, I started working on expanding the next chapter of the story. Story areas! First, I made the mess hall area where the player goes to support their teammates and fight the boss. I’ve started noticing the similarities between my combat system and the combat systems of arena style shooters, so I intentionally made this area larger so the player has a lot of space to move around (foreshadowing) I’ve finished the interaction system where the player can interact with in-game objects to trigger story changes, etc. Nothing too special to see here. Major movement updates! I made a GRAPPLING SYSTEM . It works by pressing right mouse button, and a circle shows up at where the target is. Simple, but it allows for more dynamic combat, and lets players take advantage of height. So, simple stuff! I have a lot of smaller updates like showing damage dealt when shooting enemies and stuff like that packed into this update, be tuned for more!"}, {"post_id": 54316, "ts": "2026-08-25T08:22:20Z", "hours": 2.0378, "text": "Apollo Accord: Finishing up the main menu. I was working on the SaveManager system, and thought, Hey, why don’t I just finish up the options menu using this interface? , and voila , 2 hours later I finished up the partially done main menu. This update includes very minor changes to the game itself, only the main menu, so nothing to note of gameplay changes here… I feel like the main menu looks pretty good and functional, the only complaint I have right now is the visibly low-poly moon (the moon is NOT supposed to look like that lol) Also, I had to make a work-around for Unity’s default JSON utility not being compatible with Dictionary structures, made my own custom format instead which is MUCH more space efficient than JSON and suits my needs perfectly. Well, what happened to the game itself? Will continue working on the story and gameplay after this little tangent. P.S. Tysm for the super star!!"}, {"post_id": 46763, "ts": "2026-08-14T07:54:46Z", "hours": 2.1783, "text": "APOLLO ACCORD: Spherical enemies, In-Game UI Combat Primitive enemy combat implementation, but it works. Stylizing will come later. The sensitivity’s a bit low, so I will have to investigate that. In addition, the enemies are all capsules atm, which is 100% temporary ( obviously ). With this update I also started laying down the groundwork for the next step, which is a world space control panel for communicating with aliens. This is probably the most challenging part of this game, since I have very little experience in Unity’s Canvas system and I don’t like it too much."}, {"post_id": 45357, "ts": "2026-08-11T19:14:32Z", "hours": 3.0819, "text": "APOLLO ACCORD: Official website is now open! Minor update that isn’t directly linked to the game. Made a website for the page advertising its promised features. Also added a news section that will bring more frequent updates to the project, based on GitHub commits. Development Update Things are going smoothly. Enemy combat need some reworking, but other than that I still have plenty of time to finish this game."}, {"post_id": 42810, "ts": "2026-08-07T18:36:08Z", "hours": 1.0667, "text": "APOLLO ACCORD: Honing in Specific Parts Working on improving the movement, creating scripts for future gameplay and changing the lighting to feel less intrusive. Graphics Graphically, this update isn’t much different compared to the previous update. I added localized post process volumes that make each area look different and cleaner. In addition, this allowed me to make some areas brighter , letting me do cool scenes like screenshot #1 . (I wish they weren’t T-posing) Scripting and Behaviour In the real world, you’ll be fired from the military as soon as you point a rifle to an ally, in a safe place. This is why I implemented safe zones , where health recovers and the gun is holstered (pointed down in a M4’s case) so that they aren’t always pointing towards someone. Plus, I made use of the localized post process areas to only enable DOF in the command center, so the gun is out of focus. Take a look at screenshot #2 for reference. Next Up: Storytime I keep procastinating making the story, but I’ll do it this time. The foundations are all set and everything non-story related is pretty polished, such as scripts and movement. This is where I: Implement enemies (and create assets) so that they block the player’s path to the tech module. Implement a scene equipment interaction script/UI so the player can communicate to alien civilizations. Implement a tutorial system so the player doesn’t get lost. Phew! That’s quite a lot to finish. I guess I’ll start cracking at it then. Quote of the Update: Motivation is key. Enjoying what you’re doing is the best way to put in more effort and make a better product."}, {"post_id": 41242, "ts": "2026-08-05T10:16:08Z", "hours": 3.8, "text": "Apollo Accord: Refining graphics, improving gameplay, expanding the story. Minor upgrades that span across all aspects of the game Story Wrote the script up to the point where the player interacts with the communication system. Improved the fading in/out of dialouge by removing the hardcoded wait times and making it into a integrated animation system. I also added the ability for the dialouge system to know when the player has exited the speaker’s range of influence, and quits speaking after. Graphical changes I think I hit peak with this one. Performance-wise, it’s not much different compared to earlier builds and it looks much more colorful and interesting. The blue undertones give it a much more colder and space-like look. Next steps Working on the assets, fleshing out boxes (theres alot of them) and making the communication system. I hope to be able to integrate procedural generation when making aliens, making for a fun gameplay loop."}, {"post_id": 40421, "ts": "2026-08-03T22:17:57Z", "hours": 1.3, "text": "Apollo Accord Minor Update TL;DR: Minor updates that improve the UX Focused on cleaning up the lighting and improving legibility. Removed excessive effects like film grain and motion blur that reduces clarity and bogs down performance. Added stylized backgrounds to the quest HUD so there’s more contrast between the scene and text. Colors are matched to the 70’s - 80’s retro kind of color scheme (I think it was called supergraphics ) that I feel like represents the golden age of space. Again, HDR screenshots look overly bright, explaining the blinding white of the screenshot attached. Next Steps I am going to work more on the story next, up until the player interacts with the aliens. After that, I’m going to implement gameplay mechanics for communicating with external civilizations, which will mark a departure from the first person camera for a bit."}, {"post_id": 40267, "ts": "2026-08-03T18:00:05Z", "hours": 0.7333, "text": "Changing the project’s goals Just a ramble on how the project is gonna be made for the future. First, graphically I’m going to try to achieve a matte, clean look since I don’t have access to tools (cameras, money for 3d model websites, etc) that would let me get high quality, realistic textures/models in order to maintain a uniform look throughout the game. Going to focus more on shaders and world details, and also adding more handmade models to the game. Update on the project Other than that, I improved the stability of dialouges now, they trigger consistently and don’t get confused when the player enters multiple dialouge trigger spaces. PS Had to go through exam stuff and formatting my computer because Asahi Linux messed it up hard. Working on recovering my data and reinstalling Unity, etc."}, {"post_id": 4035, "ts": "2026-06-07T06:46:03Z", "hours": 2.1025, "text": "Apollo Accord Movement Update TL;DR Crouching works! Snappier movement Leaning in the works; conflicts with mouse yaw. Raycasted bullets Long Version So I was somehow able to get crouching working. It’s more of a semi-crouch , since I haven’t implemented the humanoid animator yet and it works by moving the camera down. (Yikes) In addition, I’m currently working on leaning, but it’s not really stable yet and conflicts with the mouse yaw. I think it’ll be fixed by the next devlog. ?? Last, I got a comment on the last devlog suggesting a raycast + physics based solution for bullets and implemented that."}, {"post_id": 3484, "ts": "2026-06-06T13:17:41Z", "hours": 1.0453, "text": "[RANT] Character Animation Woes I have ALOT to say about Unity’s Humanoid animation system. Like, why do I have to go through the Animator thing that has wayy too much parameters, that override each other and create a jumbled mess?? And WHY actually WHY??? does the character dip through the floor when it’s idle??? Who in the world decided that humanoids should ignore all boundaries and start dipping through the floor when there’s nothing playing??? Why is the default animation like that??? I literally have no idea. [^1] [^1]: I eventually got it working somehow. Really frustrating process. Edit: I just noticed that the video looks really bright. That’s because I’m recording in SDR while the game is in HDR. In reality, the game looks much darker."}, {"post_id": 3388, "ts": "2026-06-06T09:01:31Z", "hours": 0.6489, "text": "Very minor update. I changed the weapon script so it fires physical bullets instead of raycasting. Shooting moveable stuff like chairs now interact with the bullet upon collision, and also bump into other objects in the process which creates a domino effect. Very cool to see. In addition, I added a flash light to the underbarrel of the gun so players can navigate dark environments (which I predict will be a lot of)"}, {"post_id": 3370, "ts": "2026-06-06T08:10:22Z", "hours": 3.0089, "text": "Apollo Accord Minor Update Finally finished the (temporary) control center. Control center made! Performance & Color Improvements Also detailed some other parts of the ship The main idea was to have a bright, high-tech command & control center, so I took reference from a lot of NASA and Sci-Fi media and made this. It’s supposed to encompass the people inside it. In addition, the control center has chairs that are moveable. Since this is in space, I turned down the gravity quite a lot so now they float when you bump into them, and settle onto the ground after some time. Feels more like a physics simulator now. Next Steps I’m going to start working on the storytelling next. While development has definitely slowed over the past week, I hope to maintain this pace, and accumulate small improvements over time to make this into something I’m proud of."}, {"post_id": 2125, "ts": "2026-06-04T13:36:53Z", "hours": 1.5869, "text": "Apollo Accord Minor Update: Main Menu Changes Added Features Added Earth, Mars and Moon ( Luna ) to the main menu’s background. (With animated clouds and rotation!) Added a options menu that allows the player to change the planet in the background, or set it to random on start. Comments Just a minor update. More settings to tweak coming soon. Planned Features DLSS/FSR upscaler support Ability to change enemy difficulty Ability to change volume Probably delaying these features for more important stuff, like storybuilding, etc."}, {"post_id": 1479, "ts": "2026-06-03T15:01:54Z", "hours": 2.6597, "text": "Apollo Accord Update #5: Curing Loneliness The Premise & Changes Decided I was lonely so I added some background characters and a “colleague” character to spice things up a bit. While not fully AI, these guys can say stuff and makes the atmosphere a bit more grounded. Added dudes talking military lingo Changed up the environment lighting a bit more so it looks more like a emergency and not just a house on fire. Assisted the player a bit by shining spotlights onto path signs. The guys also act as blockades to assist player navigation. Next up: More environment building Expand the right side of the base a bit more Clean up messy geometry I STILL HAVEN’T WORKED ON THE MAIN MENU Detail the control center. Script systems for campaign flow & to make it a true RPG, a inventory system Quote of the Update Animating these guys is DEFINITELY something I am NOT looking forward to."}, {"post_id": 1348, "ts": "2026-06-03T09:32:22Z", "hours": 5.0986, "text": "Apollo Accord Minor Update: HDRP Changes Finished the dialouge thingy Changed rendering pipeline from URP to HDRP (mostly for volumetric effects) It was a pretty daunting task, and as you can see from the time I spent just changing the rendering pipeline, was painstakingly buggy. Major Issues Solved Exposure being weird, everything was either white or black. Materials not being ported from URP to HDRP - I had to create them from scratch . Artifacting when backing lighting. The Earth disappearing?!?!?! Emissions and lighting combined made things really complicated. To make it easier to maintain, I decided to only use material emissions for baked environment lights and actual lights for dynamic lights. Quote of the Update It’s really hard to debug visually"}, {"post_id": 1227, "ts": "2026-06-03T02:36:24Z", "hours": 3.2822, "text": "Apollo Accord Update 4 What’s New Lots of animations for jumping and shooting, all smoothly transitioning between movement animations. More work on the environment. Showcasing the power of baked lighting. Optimizations to improve performance. ~150k vertices in total, around 200 FPS on my Mac rn. Next Steps Expanding and detailing environment (mostly blocking, textures later) Finishing up the main menu Working on game characters & HUD Animating the character model DLSS? Maybe? Quote of the Update Don’t want to get close to C#"}, {"post_id": 783, "ts": "2026-06-02T13:27:05Z", "hours": 1.0147, "text": "Let There Be Light! Long Version Small update onto the development of Apollo Accord. Implemented baked lighting to optmize performance early on. Had trouble deciding which light type to use (directional, spot, point, area) but ultimately I decided on a option E - emissive materials . Basically, emissive materials make the material itself a light. The downside is that it’s only baked, so non-static objects, like the gun and player, isn’t affected by it. So in short, it makes non-static objects unlit. To resolve this, I had to use Adaptive Probe Volumes , which are basically version 2 of Light Probes . These take data from baked lights to approximately light moving objects. In combination with reflection probes, these make great visuals - or at least visuals better than my last devlog, w/o sacrificing performance. TL;DR: Baked lighting beautiful computer go brrr"}, {"post_id": 756, "ts": "2026-06-02T12:04:16Z", "hours": 3.9294, "text": "Apollo Accord Update 3 What’s New Major refinements to UI. Found a way to combine in-world text (weapon ammo, etc) and on-screen text. Animations for walking, running and idling Wrote scripts for core gameplay systems, like weapon switching and character communication (putting alot of emphasis on the RPG mechanics this time around) Next Steps Incremental changes over time for the shooting system. Getting started on the environment. Adding a core story. Finishing the UI/Load+Save systems Thoughts I’m trying to get things right the first time, so I’m putting a lot more work into my initial “draft” for the game. I’ll work on hud legibility, procedural recoil, and more afterwards, once the core gameplay mechanics are pretty tidy. Quote of the Update I really don’t like C#"}, {"post_id": 92, "ts": "2026-05-31T18:01:51Z", "hours": 1.4375, "text": "Apollo Accord: Assets & Envisioning Roadmap Summary Started moving forward into the start screen. Thinking of a soldier on the ground w/ a M4 to their left, and then being helped up to fight the offensive. During that, the player listens to the main character speaking about the past. Then, FF a few days and the player is promoted to commander, where then the main gameplay starts. New Changes Added spacesuit model (player) Added M4A1 model Scripted & animated scene Performance improvements here and there (player settings, using Vulkan, etc.) Early HDR Support"}, {"post_id": 62, "ts": "2026-05-31T15:36:11Z", "hours": 1.3606, "text": "Space is calling! Started work on Apollo Accord , a game where you command Earth and discover new aliens. You can trade, fight or form alliances with aliens, and lead Earth to become a galactic empire. What I did today Created the banner and logotype for promotion purposes. Finished a temporary main menu with a cool little animation. Made a rather detailed README.md"}]...
|
Title: Apollo Accord by @alien | Stardance
Devlog Title: Apollo Accord by @alien | Stardance
Devlogs:
Space is calling! Started work on Apollo Accord , a game where you command Earth and discover new aliens. You can trade, fight or form alliances with aliens, and lead Earth to become a galactic empire. What I did today Created the banner and logotype for promotion purposes. Finished a temporary main menu with a cool little animation. Made a rather detailed README.md
Apollo Accord: Assets & Envisioning Roadmap Summary Started moving forward into the start screen. Thinking of a soldier on the ground w/ a M4 to their left, and then being helped up to fight the offensive. During that, the player listens to the main character speaking about the past. Then, FF a few days and the player is promoted to commander, where then the main gameplay starts. New Changes Added spacesuit model (player) Added M4A1 model Scripted & animated scene Performance improvements here and there (player settings, using Vulkan, etc.) Early HDR Support
Apollo Accord Update 3 What’s New Major refinements to UI. Found a way to combine in-world text (weapon ammo, etc) and on-screen text. Animations for walking, running and idling Wrote scripts for core gameplay systems, like weapon switching and character communication (putting alot of emphasis on the RPG mechanics this time around) Next Steps Incremental changes over time for the shooting system. Getting started on the environment. Adding a core story. Finishing the UI/Load+Save systems Thoughts I’m trying to get things right the first time, so I’m putting a lot more work into my initial “draft” for the game. I’ll work on hud legibility, procedural recoil, and more afterwards, once the core gameplay mechanics are pretty tidy. Quote of the Update I really don’t like C#
Let There Be Light! Long Version Small update onto the development of Apollo Accord. Implemented baked lighting to optmize performance early on. Had trouble deciding which light type to use (directional, spot, point, area) but ultimately I decided on a option E - emissive materials . Basically, emissive materials make the material itself a light. The downside is that it’s only baked, so non-static objects, like the gun and player, isn’t affected by it. So in short, it makes non-static objects unlit. To resolve this, I had to use Adaptive Probe Volumes , which are basically version 2 of Light Probes . These take data from baked lights to approximately light moving objects. In combination with reflection probes, these make great visuals - or at least visuals better than my last devlog, w/o sacrificing performance. TL;DR: Baked lighting beautiful computer go brrr
Apollo Accord Update 4 What’s New Lots of animations for jumping and shooting, all smoothly transitioning between movement animations. More work on the environment. Showcasing the power of baked lighting. Optimizations to improve performance. ~150k vertices in total, around 200 FPS on my Mac rn. Next Steps Expanding and detailing environment (mostly blocking, textures later) Finishing up the main menu Working on game characters & HUD Animating the character model DLSS? Maybe? Quote of the Update Don’t want to get close to C#
Apollo Accord Minor Update: HDRP Changes Finished the dialouge thingy Changed rendering pipeline from URP to HDRP (mostly for volumetric effects) It was a pretty daunting task, and as you can see from the time I spent just changing the rendering pipeline, was painstakingly buggy. Major Issues Solved Exposure being weird, everything was either white or black. Materials not being ported from URP to HDRP - I had to create them from scratch . Artifacting when backing lighting. The Earth disappearing?!?!?! Emissions and lighting combined made things really complicated. To make it easier to maintain, I decided to only use material emissions for baked environment lights and actual lights for dynamic lights. Quote of the Update It’s really hard to debug visually
Apollo Accord Update #5: Curing Loneliness The Premise & Changes Decided I was lonely so I added some background characters and a “colleague” character to spice things up a bit. While not fully AI, these guys can say stuff and makes the atmosphere a bit more grounded. Added dudes talking military lingo Changed up the environment lighting a bit more so it looks more like a emergency and not just a house on fire. Assisted the player a bit by shining spotlights onto path signs. The guys also act as blockades to assist player navigation. Next up: More environment building Expand the right side of the base a bit more Clean up messy geometry I STILL HAVEN’T WORKED ON THE MAIN MENU Detail the control center. Script systems for campaign flow & to make it a true RPG, a inventory system Quote of the Update Animating these guys is DEFINITELY something I am NOT looking forward to.
Apollo Accord Minor Update: Main Menu Changes Added Features Added Earth, Mars and Moon ( Luna ) to the main menu’s background. (With animated clouds and rotation!) Added a options menu that allows the player to change the planet in the background, or set it to random on start. Comments Just a minor update. More settings to tweak coming soon. Planned Features DLSS/FSR upscaler support Ability to change enemy difficulty Ability to change volume Probably delaying these features for more important stuff, like storybuilding, etc.
Apollo Accord Minor Update Finally finished the (temporary) control center. Control center made! Performance & Color Improvements Also detailed some other parts of the ship The main idea was to have a bright, high-tech command & control center, so I took reference from a lot of NASA and Sci-Fi media and made this. It’s supposed to encompass the people inside it. In addition, the control center has chairs that are moveable. Since this is in space, I turned down the gravity quite a lot so now they float when you bump into them, and settle onto the ground after some time. Feels more like a physics simulator now. Next Steps I’m going to start working on the storytelling next. While development has definitely slowed over the past week, I hope to maintain this pace, and accumulate small improvements over time to make this into something I’m proud of.
Very minor update. I changed the weapon script so it fires physical bullets instead of raycasting. Shooting moveable stuff like chairs now interact with the bullet upon collision, and also bump into other objects in the process which creates a domino effect. Very cool to see. In addition, I added a flash light to the underbarrel of the gun so players can navigate dark environments (which I predict will be a lot of)
[RANT] Character Animation Woes I have ALOT to say about Unity’s Humanoid animation system. Like, why do I have to go through the Animator thing that has wayy too much parameters, that override each other and create a jumbled mess?? And WHY actually WHY??? does the character dip through the floor when it’s idle??? Who in the world decided that humanoids should ignore all boundaries and start dipping through the floor when there’s nothing playing??? Why is the default animation like that??? I literally have no idea. [^1] [^1]: I eventually got it working somehow. Really frustrating process. Edit: I just noticed that the video looks really bright. That’s because I’m recording in SDR while the game is in HDR. In reality, the game looks much darker.
Apollo Accord Movement Update TL;DR Crouching works! Snappier movement Leaning in the works; conflicts with mouse yaw. Raycasted bullets Long Version So I was somehow able to get crouching working. It’s more of a semi-crouch , since I haven’t implemented the humanoid animator yet and it works by moving the camera down. (Yikes) In addition, I’m currently working on leaning, but it’s not really stable yet and conflicts with the mouse yaw. I think it’ll be fixed by the next devlog. ?? Last, I got a comment on the last devlog suggesting a raycast + physics based solution for bullets and implemented that.
Changing the project’s goals Just a ramble on how the project is gonna be made for the future. First, graphically I’m going to try to achieve a matte, clean look since I don’t have access to tools (cameras, money for 3d model websites, etc) that would let me get high quality, realistic textures/models in order to maintain a uniform look throughout the game. Going to focus more on shaders and world details, and also adding more handmade models to the game. Update on the project Other than that, I improved the stability of dialouges now, they trigger consistently and don’t get confused when the player enters multiple dialouge trigger spaces. PS Had to go through exam stuff and formatting my computer because Asahi Linux messed it up hard. Working on recovering my data and reinstalling Unity, etc.
Apollo Accord Minor Update TL;DR: Minor updates that improve the UX Focused on cleaning up the lighting and improving legibility. Removed excessive effects like film grain and motion blur that reduces clarity and bogs down performance. Added stylized backgrounds to the quest HUD so there’s more contrast between the scene and text. Colors are matched to the 70’s - 80’s retro kind of color scheme (I think it was called supergraphics ) that I feel like represents the golden age of space. Again, HDR screenshots look overly bright, explaining the blinding white of the screenshot attached. Next Steps I am going to work more on the story next, up until the player interacts with the aliens. After that, I’m going to implement gameplay mechanics for communicating with external civilizations, which will mark a departure from the first person camera for a bit.
Apollo Accord: Refining graphics, improving gameplay, expanding the story. Minor upgrades that span across all aspects of the game Story Wrote the script up to the point where the player interacts with the communication system. Improved the fading in/out of dialouge by removing the hardcoded wait times and making it into a integrated animation system. I also added the ability for the dialouge system to know when the player has exited the speaker’s range of influence, and quits speaking after. Graphical changes I think I hit peak with this one. Performance-wise, it’s not much different compared to earlier builds and it looks much more colorful and interesting. The blue undertones give it a much more colder and space-like look. Next steps Working on the assets, fleshing out boxes (theres alot of them) and making the communication system. I hope to be able to integrate procedural generation when making aliens, making for a fun gameplay loop.
APOLLO ACCORD: Honing in Specific Parts Working on improving the movement, creating scripts for future gameplay and changing the lighting to feel less intrusive. Graphics Graphically, this update isn’t much different compared to the previous update. I added localized post process volumes that make each area look different and cleaner. In addition, this allowed me to make some areas brighter , letting me do cool scenes like screenshot #1 . (I wish they weren’t T-posing) Scripting and Behaviour In the real world, you’ll be fired from the military as soon as you point a rifle to an ally, in a safe place. This is why I implemented safe zones , where health recovers and the gun is holstered (pointed down in a M4’s case) so that they aren’t always pointing towards someone. Plus, I made use of the localized post process areas to only enable DOF in the command center, so the gun is out of focus. Take a look at screenshot #2 for reference. Next Up: Storytime I keep procastinating making the story, but I’ll do it this time. The foundations are all set and everything non-story related is pretty polished, such as scripts and movement. This is where I: Implement enemies (and create assets) so that they block the player’s path to the tech module. Implement a scene equipment interaction script/UI so the player can communicate to alien civilizations. Implement a tutorial system so the player doesn’t get lost. Phew! That’s quite a lot to finish. I guess I’ll start cracking at it then. Quote of the Update: Motivation is key. Enjoying what you’re doing is the best way to put in more effort and make a better product.
APOLLO ACCORD: Official website is now open! Minor update that isn’t directly linked to the game. Made a website for the page advertising its promised features. Also added a news section that will bring more frequent updates to the project, based on GitHub commits. Development Update Things are going smoothly. Enemy combat need some reworking, but other than that I still have plenty of time to finish this game.
APOLLO ACCORD: Spherical enemies, In-Game UI Combat Primitive enemy combat implementation, but it works. Stylizing will come later. The sensitivity’s a bit low, so I will have to investigate that. In addition, the enemies are all capsules atm, which is 100% temporary ( obviously ). With this update I also started laying down the groundwork for the next step, which is a world space control panel for communicating with aliens. This is probably the most challenging part of this game, since I have very little experience in Unity’s Canvas system and I don’t like it too much.
Apollo Accord: Finishing up the main menu. I was working on the SaveManager system, and thought, Hey, why don’t I just finish up the options menu using this interface? , and voila , 2 hours later I finished up the partially done main menu. This update includes very minor changes to the game itself, only the main menu, so nothing to note of gameplay changes here… I feel like the main menu looks pretty good and functional, the only complaint I have right now is the visibly low-poly moon (the moon is NOT supposed to look like that lol) Also, I had to make a work-around for Unity’s default JSON utility not being compatible with Dictionary structures, made my own custom format instead which is MUCH more space efficient than JSON and suits my needs perfectly. Well, what happened to the game itself? Will continue working on the story and gameplay after this little tangent. P.S. Tysm for the super star!!
Apollo Accord: Gameplay and story updates, finally! After multiple delays, I started working on expanding the next chapter of the story. Story areas! First, I made the mess hall area where the player goes to support their teammates and fight the boss. I’ve started noticing the similarities between my combat system and the combat systems of arena style shooters, so I intentionally made this area larger so the player has a lot of space to move around (foreshadowing) I’ve finished the interaction system where the player can interact with in-game objects to trigger story changes, etc. Nothing too special to see here. Major movement updates! I made a GRAPPLING SYSTEM . It works by pressing right mouse button, and a circle shows up at where the target is. Simple, but it allows for more dynamic combat, and lets players take advantage of height. So, simple stuff! I have a lot of smaller updates like showing damage dealt when shooting enemies and stuff like that packed into this update, be tuned for more!
Lights Out. Major Doom 3 vibes happening Explore the Unknown, and sometimes, terrifying. Decided to lean in a bit more on the “explore” factor and made many rooms darker overall. The capsules you see here are the enemies you fight, multiplied by the difficulty set in the settings. I’m thinking of adding red, glowing eyes or something to make it a bit scarier. I plan to not lean too much on this aspect, though. This is only for the first chapter of the story. PSA on the lighting. The reflections on the gun is a bit off, I know, I’m fixing it right now. Anyway, that’s the update for today! Going to work on some more story content soon.
Build Update. Worked on building releases for Linux, Mac, Windows and web (html). Not much on the technical side either, just baking light maps and polishing up some stuff in the game. This is because I have some priorities that are higher than Stardance, unfortunately, and I think I won’t be able to finish this project to the level I was expecting. I appreciate your understanding.
Ships:
I built a shooter-RPG ish game where you fight invading aliens that are seeking to take over your ship. As the captain, you must fight your way against the overpowering enemies, and send clear signals of surrender before your entire ship is taken over. I wanted to finish this project up until the player can communicate with other alien civilizations other than the invading one, but due to time constraints and my busier than ever schedule I won’t be able to work on this project much more, at least for the time being. I’ll be shipping this project and packing up. You can try the project by downloading the appropriate zip file for your system. Linux and the web package is still unverified, so potential players are advised to stick to the MacOS and Windows releases. Thank you for your understanding....
|
1793004646.3935244
|
1793091046.3935244
|
|
309
|
My first slack bot! by @ | Stardance
|
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My first slack bot! by @ | Stardance
|
1792795664.3341215
|
1793400464.3341215
|
|
310
|
WarioWare Game by @clutch | Stardance
|
clutch
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: WarioWare Game by @clutch | Stardance
|
1792770507.905792
|
1793375307.905792
|
|
311
|
Telescope Control System by @Enigma_124 | Stardanc Telescope Control System by @Enigma_124 | Stardance...
|
Enigma_124
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Telescope Control System by @Enigma_124 | S Title: Telescope Control System by @Enigma_124 | Stardance...
|
1792766937.7263062
|
1793371737.7263062
|
|
312
|
Epoch by @alien | Stardance
|
alien
|
0
|
1.0
|
0
|
[]
|
[{"post_id": 19005, "ts": "202 [{"post_id": 19005, "ts": "2026-06-30T05:09:51Z", "hours": 1.0, "text": "Epoch Engine New Changes: Added project boilerplate Separated subsystems etc into separate libraries for dynamic linking, improving testability and a swap in-out mechanic. Some comments Took a hiatus to play DMC5, Persona, and Cyberpunk but now I’m back on the grind again. Will work on Apollo Accord soon, but since Unity seems too performance demanding and bloat for my needs, I am considering moving over to Godot at an early stage of development. Epoch will be sort of a hobby since I made multiple game engines with various structures but I never used Vulkan. It also serves as a opportunity to learn multithreading and make my own job system. I hope this improves my C++ skills."}]...
|
Title: Epoch by @alien | Stardance
Devlogs:
Epoch Title: Epoch by @alien | Stardance
Devlogs:
Epoch Engine New Changes: Added project boilerplate Separated subsystems etc into separate libraries for dynamic linking, improving testability and a swap in-out mechanic. Some comments Took a hiatus to play DMC5, Persona, and Cyberpunk but now I’m back on the grind again. Will work on Apollo Accord soon, but since Unity seems too performance demanding and bloat for my needs, I am considering moving over to Godot at an early stage of development. Epoch will be sort of a hobby since I made multiple game engines with various structures but I never used Vulkan. It also serves as a opportunity to learn multithreading and make my own job system. I hope this improves my C++ skills....
|
1792925365.0406446
|
1793789365.0406446
|
|
313
|
. by @Enigma_124 | Stardance
|
Enigma_124
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: . by @Enigma_124 | Stardance
|
1792742100.6478474
|
1793346900.6478474
|
|
314
|
My first slack bot! by @MAYAchondria | Stardance
|
MAYAchondria
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My first slack bot! by @MAYAchondria | Star Title: My first slack bot! by @MAYAchondria | Stardance...
|
1792558233.0716755
|
1793163033.0716755
|
|
315
|
Frictionless by @ashmildax | Stardance
|
ashmildax
|
1
|
2.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-01T07:53:00Z", "hours": 2.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I built a cli chatbot for retrieving information from your documents, the challenging part was setting up the RAG , I am a beginner in python and iam proud I made this working using groq api and langchain , try project lets you see the working demo.if you want to try it out you should go to source code and read Readme for more information.Thank you -Ashmil", "repo": "https://github.com/ashmilgit15/RAG_DOCS_Q-A", "demo": "https://asciinema.org/a/oyTxudgQWvh1HFY5"}]...
|
[{"post_id": 200, "ts": "2026- [{"post_id": 200, "ts": "2026-06-01T07:47:05Z", "hours": 0.2858, "text": "Finally pushed latest changes and shipping…"}, {"post_id": 65, "ts": "2026-05-31T16:00:54Z", "hours": 0.5092, "text": "I finsished my DOCS-Q&A this will be my first project in hackclub and stardance heres the url for github repo : https://github.com/ashmilgit15/RAG_DOCS_Q-A#features"}, {"post_id": 58, "ts": "2026-05-31T15:23:22Z", "hours": 1.0103, "text": "iam working on an AI_CLI tool for retrieving info from docs through RAG , no guesses , no hallucination"}]...
|
Title: Frictionless by @ashmildax | Stardance
Dev Title: Frictionless by @ashmildax | Stardance
Devlogs:
iam working on an AI_CLI tool for retrieving info from docs through RAG , no guesses , no hallucination
I finsished my DOCS-Q&A this will be my first project in hackclub and stardance heres the url for github repo : https://github.com/ashmilgit15/RAG_DOCS_Q-A#features
Finally pushed latest changes and shipping…
Ships:
I built a cli chatbot for retrieving information from your documents, the challenging part was setting up the RAG , I am a beginner in python and iam proud I made this working using groq api and langchain , try project lets you see the working demo.if you want to try it out you should go to source code and read Readme for more information.Thank you -Ashmil...
|
1792979607.8022416
|
1793066007.8022416
|
|
317
|
My first slack bot! by @Starrry_Suhaan | Stardance
|
Starrry_Suhaan
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My first slack bot! by @Starrry_Suhaan | St Title: My first slack bot! by @Starrry_Suhaan | Stardance...
|
1792561844.866033
|
1793166644.866033
|
|
318
|
My first slack bot! by @freddie | Stardance
|
freddie
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My first slack bot! by @freddie | Stardance
|
1792939737.2400339
|
1793803737.2400339
|
|
319
|
My first slack bot! by @Aiman | Stardance
|
Aiman
|
0
|
2.62
|
0
|
[]
|
[{"post_id": 13572, "ts": "202 [{"post_id": 13572, "ts": "2026-06-22T07:00:09Z", "hours": 2.6153, "text": "OMGGGG my first devlog YAYAYAYAY. so basically its just a simple slackbot but i could NOT figure it out it was honestly the hardest ever so pleaseee be easy on me. Oh and i would lovee some advice on how i can improve myself :)"}]...
|
Title: My first slack bot! by @Aiman | Stardance
Title: My first slack bot! by @Aiman | Stardance
Devlogs:
OMGGGG my first devlog YAYAYAYAY. so basically its just a simple slackbot but i could NOT figure it out it was honestly the hardest ever so pleaseee be easy on me. Oh and i would lovee some advice on how i can improve myself :)...
|
1792774499.9103646
|
1793379299.9103646
|
|
320
|
My first slack bot! by @Anson | Stardance
|
Anson
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My first slack bot! by @Anson | Stardance
|
1792562029.9150553
|
1793166829.9150553
|
|
321
|
Frictionless by @yehor | Stardance
|
yehor
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Frictionless by @yehor | Stardance
|
1792943640.6702797
|
1793807640.6702797
|
|
322
|
Frictionless by @eithe0r | Stardance
|
eithe0r
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Frictionless by @eithe0r | Stardance
|
1792759779.387164
|
1793364579.387164
|