|
23154
|
My very own WebOS by @reagan_wray | Stardance
|
reagan_wray
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My very own WebOS by @reagan_wray | Stardan Title: My very own WebOS by @reagan_wray | Stardance...
|
1793347039.1528614
|
1793951839.1528614
|
|
57140
|
Visora by @Amadev | Stardance
|
Amadev
|
1
|
31.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-10T17:29:23Z", "hours": 31.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "Built Visora, an MCP server that gives AI agents reliable high-level control over the Unity Editor. The hardest part was making animation and editor workflows safe and predictable: IK, gaze, retargeting, animation QA, bridge reload recovery, prefab inspection, rollback, and reproducible preview artifacts. I’m most proud of how much of the Unity-side behavior is covered by real EditMode/integration tests instead of only mocked Python tests. To test it, use the GitHub release/source, follow the setup guide, connect Visora to a Unity project, and try the MCP tools for animation, scene inspection, previews, or prefab inspection.", "repo": "https://github.com/AmaLS367/Visora", "demo": "https://github.com/AmaLS367/Visora/releases/tag/v0.1.3"}]...
|
[{"post_id": 65482, "ts": "202 [{"post_id": 65482, "ts": "2026-09-10T17:21:38Z", "hours": 5.3419, "text": "Preview Artifacts, Bridge Recovery & Prefab Workflows Added reproducible animation preview artifacts with stored records and comparison tools for repeatable QA.Improved Unity bridge recovery during reloads/recompiles, added retry hints and safer timeout handling. Added real Unity E2E animation fixtures and reorganized the test suite.Finished the v0.1.3 release, refreshed the README/docs, and started v0.1.4 prefab workflows. Added inspect_prefab_asset and inspect_prefab_overrides with native Unity services, support for nested/variant/model prefabs, structured override inspection, stable IDs, and Python/integration/EditMode test coverage."}, {"post_id": 64760, "ts": "2026-09-09T12:27:18Z", "hours": 8.7661, "text": "Worked on a large animation/character workflow update for Visora. Added dedicated agent workflows for animation authoring, camera/action sequences, rig retargeting, IK, gaze, motion polishing, contact handling and animation QA. Updated the MCP instructions and project docs so agents have a clear workflow for checking rigs, previewing animation, validating motion and handling Humanoid/Generic fallback cases. Implemented new animation tooling around Two-Bone IK, viewport-based effector placement and character gaze. Added support for solving and baking IK/gaze into animation clips, including parameter validation and Unity capability checks.Added a bigger QA layer for animation. This includes temporal motion analysis, curve discontinuity diagnostics, self-intersection checks and comparison of animation previews. Also added contact baking for things like planted feet/hands and camera-subject action tooling for synchronizing character motion with camera impacts. Added atomic animation transactions and improved rollback/backup handling so multiple animation edits can be applied together and reverted safely when something fails. Refactored the Unity-side animation services around shared sampling, curve writing and rollback helpers. Spent a good amount of time hardening all of this against actual Unity edge cases: Edit Mode requirements, unsupported bridge capabilities, invalid parameters, unknown diagnostic values, quaternion discontinuities, tangent preservation and proper exception handling. Added a Unity EditMode integration test suite covering IK, gaze, contact baking and atomic animation transactions, together with a runner script. Expanded the Python unit tests for the new animation tools and failure cases as well.Also reworked Visora’s visual output. Screenshots, animation previews and video frames now use multimodal MCP image blocks and file artifacts instead of dumping Base64 data into the response. Multi-frame previews can generate contact sheets, and full-resolution artifacts stay on disk. After that I focused heavily on MCP context usage. Compact tool definitions reduced the tool catalog payload significantly, diagnostic tools now have limits/filtering for large skeletons and clips, tool results are compacted, duplicate structured output is removed, and several redundant tools/wrappers were merged or deleted. The tool catalog went from 55 tools down to 44. Merged the two separate video capture tools into a single capture_video workflow and reduced the default screenshot resolution to 720p. Inline images are now automatically downscaled while keeping the full-resolution artifact available separately. Finally tuned the default diagnostic dump sizes further so normal tool calls consume much less agent context and larger detailed dumps are requested only when they are actually needed."}, {"post_id": 62172, "ts": "2026-09-05T13:09:04Z", "hours": 2.9436, "text": "Editing Animation Clips & Events Hey everyone, continue working on it. Up until now, the agent could only really watch animations—taking previews and checking poses. If a keyframe was off or a transition looked janky, you still had to go into Unity and fix it by hand. Now, the agent can actually edit AnimationClip assets directly. It can add, move, or delete keyframes, tweak curves, and set tangent modes like smooth, linear, or step holds. Giving an AI write access to your animation files is honestly a bit scary—one bad curve and your character turns into a noodle. To keep things safe, Visora now takes an automatic backup of the clip before touching it, and hooks every edit into Unity’s native Undo system. If the agent makes a mess, you can roll it back with a tool call or just hit Ctrl + Z right in the editor. We also added tools to create and remove animation events. This makes it way easier to sync things like hit-stops, camera shake, or footstep sounds to exact frames on the timeline instead of guessing with timers."}, {"post_id": 61583, "ts": "2026-09-04T15:45:13Z", "hours": 5.5072, "text": "Visora v0.1.3 — Giving Agents Eyes on Unity Animations So, we just fixed a massive problem. Once I hit merge, a huge weight lifted off my shoulders. It feels like the raw volume of code I write is getting smaller each time, but what actually lands has a massive, cascading impact on the entire system.Until now, whenever an AI agent needed to inspect an animation in Unity, it was basically flying blind. The old approach was either pulling raw curve data (which tells an agent nothing about clipping, silhouette, or visual feel) or recording full video dumps over the HTTP bridge. Video was heavy, expensive on tokens, slow to transfer, and worse: if the camera wasn’t manually lined up in the scene, the character would just walk right out of frame or get clipped halfway through. With Visora v0.1.3, we tackled this head-on by building preview_animation. It’s not just a snapshot tool — it’s a complete visual pipeline designed specifically for agent context budgets. What Actually Changed Under the Hood Trajectory-Aware Auto-Framing (C# Engine Side) Instead of relying on whatever camera happens to be in the scene, Visora now spins up a transient preview camera. Before snapping a single frame, it samples the clip across its timeline, collects every active skinned and mesh renderer, and computes a union bounding sphere for the entire motion trajectory. It places the camera at an ideal 45° vantage point, automatically calculates the optimal distance based on camera FOV, and dynamically compensates for vertical vs. horizontal aspect ratios so tall or wide aspect ratios don’t clip the character’s head or limbs. Smart Keyframe Selection (Python Side) Agents can’t look at 120 raw frames — that would incinerate context windows and latency. We built an intelligent keyframe extractor (preview_keyframes.py) that analyzes the clip curves to find where actual motion happens: curve extrema, zero-crossings, sudden velocity changes, and animation event timestamps. It pins the start and end poses, then fits the most informative frames within a strict frame budget (e.g. 4 to 8 images). Zero-Side-Effect Scene Safety One of the hardest parts of building agent tooling for Unity is engine hygiene. The preview system samples the animation, renders offscreen to a custom RenderTexture, encodes directly to PNG byte buffers, and cleans up after itself. No dummy cameras left in the hierarchy, no dirty scene flags, and character poses are strictly restored to their pre-sampling state. Hardened CI & The Unity Package Gate We also tightened our pre-commit and CI gates. We introduced scripts/check_unity_package.py, compiling the C# package directly against real Unity assemblies with Microsoft.Unity.Analyzers in headless Linux containers. If there’s an obsolete API, a loose memory allocation, or a CA analyzer warning, the build fails before it ever touches a project. It feels great to have this merged and rock-solid. With animation visual inspection out of the way, I’m heading straight to the next item on the Roadmap: Typed Clip, Event, and Camera Authoring!"}, {"post_id": 60781, "ts": "2026-09-03T11:33:29Z", "hours": 2.2286, "text": "Visora devlog — v0.1.1 & v0.1.2 Shipped two releases back to back. Visora now has a proper open-source foundation: an Apache-2.0 license, full contributor and security docs, a hardened Docker image, and a complete CI pipeline that tests every change and publishes releases automatically. v0.1.1 was about infrastructure — agents can now search the web for 3D models, environments and rigs and import them straight into a live Unity project, plus all the CI/CD and Docker groundwork. v0.1.2 was about packaging and community — licensing, PyPI metadata, issue templates, contributor guides, and release integrity checks. You can now just pip install visora. And here’s the first real demo. A 2-second shot: a Rover-style character from Wuthering Waves throws a flying kick straight into the camera in a desert wasteland. The environment, the rig, the animation and the capture were all built by an AI agent driving a live Unity Editor through Visora — nothing hand-placed. The whole thing was made by Claude Sonnet 5, using about 20% of the 5-hour limit on the $20 plan. So a mid-tier model, for a fraction of a cheap subscription, can already take a scene from empty to finished shot on its own. Right now it’s 2 seconds — deliberately small, to set the floor. The goal is for Visora to grow into something where AI can build full, directed animation sequences: minute-long shots, multiple characters, real rigging, proper timelines. “Make me a cutscene” turning into an actual cutscene. This dropkick is just the starting line."}, {"post_id": 60717, "ts": "2026-09-03T08:42:43Z", "hours": 0.915, "text": "Production CI/CD and MCP 2.0 are now complete for Visora. The project now has a parallel GitHub Actions pipeline covering formatting, Ruff linting, strict mypy checks, unit and integration tests, lockfile validation, Unity package validation, distribution builds, and an enforced 80% coverage threshold. The workflows use uv caching, cancel outdated runs automatically, and skip runs for documentation-only changes. All GitHub Actions are pinned by commit SHA. A release pipeline now validates version tags, runs the full verification suite, builds the package, publishes it to PyPI, and creates a GitHub Release. Dependabot was added to update GitHub Actions and Python dependencies weekly. Funding configuration was added as well. Visora was migrated from MCP 1.x to MCP 2.1.1, replacing FastMCP with MCPServer and updating the related tests and documentation. The updated Dependabot pull request passed every CI check and was merged. The Production CI/CD roadmap item is now marked as completed."}, {"post_id": 60695, "ts": "2026-09-03T07:39:13Z", "hours": 3.4883, "text": "Visora devlog — asset pipeline & Unity native bridge (18 commits) Asset pipeline: from broken to trustworthy Built out the 3D-asset workflow (search → download → import → verify) and then spent most of the effort hardening it against silent failures: Added asset search/download/Unity-import tools (1a0bcd3, bf6a7d9), then refactored out dead backward-compat aliases (dda6c17). Fixed real bugs found by actually running it: ambientCG downloads being wrongly rejected and Sketchfab results silently hidden (99d3f15), a wrong ambientCG download URL for 3D models (1d6e2ce), a crash on comma-separated port lists plus missing env-var docs (117e6e3), and .bin/.mtl companion files being incorrectly stripped out of glTF/OBJ archives (5cb1afa). Discovered Sketchfab’s own search API ignores the query text entirely (verified live) — added web_search_assets, a SearXNG-primary/DuckDuckGo-fallback real web search to find a specific named model and extract its Sketchfab UID (4489725). Biggest find: download_and_import_asset was reporting success=true even when Unity couldn’t actually parse the file (glTF with no importer installed → empty placeholder asset). Fixed to detect and reject that case explicitly instead of lying about success (8c4241b). Native Unity bridge: first real compile & runtime test com.visora.editor had apparently never been compiled in a real Unity Editor before. Opening it in Unity 6.6 surfaced a chain of genuine bugs, fixed one at a time: A broken float field that Unity’s JSON deserializer can’t handle, flattened to float on both C# and Python sides (08f502e, 4d05468). Unity 6.6 API removals: GetInstanceID() → GetEntityId() (c8c8905), then GetEntityId()’s own obsolete int-conversion operator → GetRawData() (027e39c). Two HTTP handlers (/api/editor/state, /api/visora/info) and a log-callback subscription were calling Unity APIs off the main thread, causing runtime errors — dispatched onto the main thread (d27e03f, 5e3069b). Dynamic C# snippet compilation was missing a reference to UnityEditor.CoreModule, breaking any snippet touching EditorApplication/EditorSceneManager (a8689a9). Agent guidance Shipped documentation aimed at other agents driving Visora, not just humans: an always-on MCP instructions block plus a copyable Claude Code skill (visora-asset-workflow) covering Sketchfab’s broken search, supported import formats, and how to actually verify an import worked (4e8cd5c). Housekeeping Committed the 29 .meta files Unity generated on first real import of the package — standard Unity convention, and further confirmation the package had never been opened in a real editor before this round of testing (b9e4f01). Net effect: the asset import pipeline no longer lies about success, Sketchfab search actually works for named models, and the native Unity bridge compiles and runs cleanly on Unity 6.6 — all verified end-to-end (ambientCG apple + a Sketchfab character model imported, inspected, and visually confirmed in-scene)."}, {"post_id": 60167, "ts": "2026-09-02T11:47:32Z", "hours": 1.5803, "text": "Building Visora: Teaching AI agents to actually see and fix Unity scenes (v0.1.0 update) Quick update on what I’ve been hacking on for Visora since adding the project banner. The problem I ran into: If you try to let an AI agent (like Claude or Cursor) work inside Unity, it’s usually a disaster. Current bridges just let the model run raw C# strings and read console logs.The agent is completely blind. It doesn’t know if a 3D character spawned behind the camera, if an animation is flying off into infinity, or if a model looks like a spiky mess because bone weights are broken. Even worse, agents love to edit things during Play Mode or hit save while Unity is recompiling, completely wrecking the scene files.I got tired of babysitting that, so I built Visora — a Python MCP server and a companion Unity package that gives agents actual eyes, rigging smarts, and guardrails so they don’t break your project. V0.1.0 — Here is what I’ve coded and got working over the last few days: Gave the agent actual vision. The agent can now render screenshots from any camera in the scene, check if a character is cut off by the screen edges or clipping planes (project_world_points and diagnose_camera_framing), compare before/after images, and even record short MP4/WebP video clips to inspect physics and animations over time. Made it understand rigs and animations. Instead of guessing why an animation looks wrong: It inspects AnimationClip curves directly and catches unwanted position or scale drift. It can sample any character’s pose at a specific second, inspect the transforms, and immediately restore the original pose so nothing stays messed up. Added a skeleton mapper with fuzzy bone search that understands both standard Humanoid rigs and messy Japanese MMD bone chains (like 全ての親, センター, 下半身, D-bones). Skinned mesh diagnostics Added tools to inspect SkinnedMeshRenderers. It detects inverted or zero-sized bounding boxes, missing root bones, and broken bone weights. It also tells you whether a glitch is just a missing material/texture or an actual broken mesh deformation. Made scene edits safe (undo & transaction rollback). Every script the agent runs now happens inside an isolated Undo group. If the C# code crashes or throws an exception, Visora automatically rolls back the entire scene to before the run. It also blocks saving during Play Mode so your scene never gets corrupted. Native Unity package + 24 typed tools Built a native Unity Editor package (com.visora.editor) using HttpListener hooked directly into Unity’s main editor update loop. On the Python side, I implemented 24 clean MCP tools with strict Pydantic schemas, auto-discovery for ports 8080-8085, and async queue polling for long tasks. Tagged and released v0.1.0 on GitHub with complete setup guides, agent recipes, and test coverage. What I’m building next for v0.1.1: Auto 3D model web search & download: I want the agent to search the web, find 3D models, textures, and environments, and download/import them directly into the Unity project so it can build and animate entire scenes on its own. Clean GitHub Actions CI/CD: Automatic linting, typing, and test runners on every commit. Docker support: A lightweight Dockerfile to easily run the MCP server anywhere in a headless container. You can check out the code and the v0.1.0 release here: https://github.com/AmaLS367/Visora"}]...
|
Title: Visora by @Amadev | Stardance
Devlogs:
Bui Title: Visora by @Amadev | Stardance
Devlogs:
Building Visora: Teaching AI agents to actually see and fix Unity scenes (v0.1.0 update) Quick update on what I’ve been hacking on for Visora since adding the project banner. The problem I ran into: If you try to let an AI agent (like Claude or Cursor) work inside Unity, it’s usually a disaster. Current bridges just let the model run raw C# strings and read console logs.The agent is completely blind. It doesn’t know if a 3D character spawned behind the camera, if an animation is flying off into infinity, or if a model looks like a spiky mess because bone weights are broken. Even worse, agents love to edit things during Play Mode or hit save while Unity is recompiling, completely wrecking the scene files.I got tired of babysitting that, so I built Visora — a Python MCP server and a companion Unity package that gives agents actual eyes, rigging smarts, and guardrails so they don’t break your project. V0.1.0 — Here is what I’ve coded and got working over the last few days: Gave the agent actual vision. The agent can now render screenshots from any camera in the scene, check if a character is cut off by the screen edges or clipping planes (project_world_points and diagnose_camera_framing), compare before/after images, and even record short MP4/WebP video clips to inspect physics and animations over time. Made it understand rigs and animations. Instead of guessing why an animation looks wrong: It inspects AnimationClip curves directly and catches unwanted position or scale drift. It can sample any character’s pose at a specific second, inspect the transforms, and immediately restore the original pose so nothing stays messed up. Added a skeleton mapper with fuzzy bone search that understands both standard Humanoid rigs and messy Japanese MMD bone chains (like 全ての親, センター, 下半身, D-bones). Skinned mesh diagnostics Added tools to inspect SkinnedMeshRenderers. It detects inverted or zero-sized bounding boxes, missing root bones, and broken bone weights. It also tells you whether a glitch is just a missing material/texture or an actual broken mesh deformation. Made scene edits safe (undo & transaction rollback). Every script the agent runs now happens inside an isolated Undo group. If the C# code crashes or throws an exception, Visora automatically rolls back the entire scene to before the run. It also blocks saving during Play Mode so your scene never gets corrupted. Native Unity package + 24 typed tools Built a native Unity Editor package (com.visora.editor) using HttpListener hooked directly into Unity’s main editor update loop. On the Python side, I implemented 24 clean MCP tools with strict Pydantic schemas, auto-discovery for ports 8080-8085, and async queue polling for long tasks. Tagged and released v0.1.0 on GitHub with complete setup guides, agent recipes, and test coverage. What I’m building next for v0.1.1: Auto 3D model web search & download: I want the agent to search the web, find 3D models, textures, and environments, and download/import them directly into the Unity project so it can build and animate entire scenes on its own. Clean GitHub Actions CI/CD: Automatic linting, typing, and test runners on every commit. Docker support: A lightweight Dockerfile to easily run the MCP server anywhere in a headless container. You can check out the code and the v0.1.0 release here: https://github.com/AmaLS367/Visora
Visora devlog — asset pipeline & Unity native bridge (18 commits) Asset pipeline: from broken to trustworthy Built out the 3D-asset workflow (search → download → import → verify) and then spent most of the effort hardening it against silent failures: Added asset search/download/Unity-import tools (1a0bcd3, bf6a7d9), then refactored out dead backward-compat aliases (dda6c17). Fixed real bugs found by actually running it: ambientCG downloads being wrongly rejected and Sketchfab results silently hidden (99d3f15), a wrong ambientCG download URL for 3D models (1d6e2ce), a crash on comma-separated port lists plus missing env-var docs (117e6e3), and .bin/.mtl companion files being incorrectly stripped out of glTF/OBJ archives (5cb1afa). Discovered Sketchfab’s own search API ignores the query text entirely (verified live) — added web_search_assets, a SearXNG-primary/DuckDuckGo-fallback real web search to find a specific named model and extract its Sketchfab UID (4489725). Biggest find: download_and_import_asset was reporting success=true even when Unity couldn’t actually parse the file (glTF with no importer installed → empty placeholder asset). Fixed to detect and reject that case explicitly instead of lying about success (8c4241b). Native Unity bridge: first real compile & runtime test com.visora.editor had apparently never been compiled in a real Unity Editor before. Opening it in Unity 6.6 surfaced a chain of genuine bugs, fixed one at a time: A broken float field that Unity’s JSON deserializer can’t handle, flattened to float on both C# and Python sides (08f502e, 4d05468). Unity 6.6 API removals: GetInstanceID() → GetEntityId() (c8c8905), then GetEntityId()’s own obsolete int-conversion operator → GetRawData() (027e39c). Two HTTP handlers (/api/editor/state, /api/visora/info) and a log-callback subscription were calling Unity APIs off the main thread, causing runtime errors — dispatched onto the main thread (d27e03f, 5e3069b). Dynamic C# snippet compilation was missing a reference to UnityEditor.CoreModule, breaking any snippet touching EditorApplication/EditorSceneManager (a8689a9). Agent guidance Shipped documentation aimed at other agents driving Visora, not just humans: an always-on MCP instructions block plus a copyable Claude Code skill (visora-asset-workflow) covering Sketchfab’s broken search, supported import formats, and how to actually verify an import worked (4e8cd5c). Housekeeping Committed the 29 .meta files Unity generated on first real import of the package — standard Unity convention, and further confirmation the package had never been opened in a real editor before this round of testing (b9e4f01). Net effect: the asset import pipeline no longer lies about success, Sketchfab search actually works for named models, and the native Unity bridge compiles and runs cleanly on Unity 6.6 — all verified end-to-end (ambientCG apple + a Sketchfab character model imported, inspected, and visually confirmed in-scene).
Production CI/CD and MCP 2.0 are now complete for Visora. The project now has a parallel GitHub Actions pipeline covering formatting, Ruff linting, strict mypy checks, unit and integration tests, lockfile validation, Unity package validation, distribution builds, and an enforced 80% coverage threshold. The workflows use uv caching, cancel outdated runs automatically, and skip runs for documentation-only changes. All GitHub Actions are pinned by commit SHA. A release pipeline now validates version tags, runs the full verification suite, builds the package, publishes it to PyPI, and creates a GitHub Release. Dependabot was added to update GitHub Actions and Python dependencies weekly. Funding configuration was added as well. Visora was migrated from MCP 1.x to MCP 2.1.1, replacing FastMCP with MCPServer and updating the related tests and documentation. The updated Dependabot pull request passed every CI check and was merged. The Production CI/CD roadmap item is now marked as completed.
Visora devlog — v0.1.1 & v0.1.2 Shipped two releases back to back. Visora now has a proper open-source foundation: an Apache-2.0 license, full contributor and security docs, a hardened Docker image, and a complete CI pipeline that tests every change and publishes releases automatically. v0.1.1 was about infrastructure — agents can now search the web for 3D models, environments and rigs and import them straight into a live Unity project, plus all the CI/CD and Docker groundwork. v0.1.2 was about packaging and community — licensing, PyPI metadata, issue templates, contributor guides, and release integrity checks. You can now just pip install visora. And here’s the first real demo. A 2-second shot: a Rover-style character from Wuthering Waves throws a flying kick straight into the camera in a desert wasteland. The environment, the rig, the animation and the capture were all built by an AI agent driving a live Unity Editor through Visora — nothing hand-placed. The whole thing was made by Claude Sonnet 5, using about 20% of the 5-hour limit on the $20 plan. So a mid-tier model, for a fraction of a cheap subscription, can already take a scene from empty to finished shot on its own. Right now it’s 2 seconds — deliberately small, to set the floor. The goal is for Visora to grow into something where AI can build full, directed animation sequences: minute-long shots, multiple characters, real rigging, proper timelines. “Make me a cutscene” turning into an actual cutscene. This dropkick is just the starting line.
Visora v0.1.3 — Giving Agents Eyes on Unity Animations So, we just fixed a massive problem. Once I hit merge, a huge weight lifted off my shoulders. It feels like the raw volume of code I write is getting smaller each time, but what actually lands has a massive, cascading impact on the entire system.Until now, whenever an AI agent needed to inspect an animation in Unity, it was basically flying blind. The old approach was either pulling raw curve data (which tells an agent nothing about clipping, silhouette, or visual feel) or recording full video dumps over the HTTP bridge. Video was heavy, expensive on tokens, slow to transfer, and worse: if the camera wasn’t manually lined up in the scene, the character would just walk right out of frame or get clipped halfway through. With Visora v0.1.3, we tackled this head-on by building preview_animation. It’s not just a snapshot tool — it’s a complete visual pipeline designed specifically for agent context budgets. What Actually Changed Under the Hood Trajectory-Aware Auto-Framing (C# Engine Side) Instead of relying on whatever camera happens to be in the scene, Visora now spins up a transient preview camera. Before snapping a single frame, it samples the clip across its timeline, collects every active skinned and mesh renderer, and computes a union bounding sphere for the entire motion trajectory. It places the camera at an ideal 45° vantage point, automatically calculates the optimal distance based on camera FOV, and dynamically compensates for vertical vs. horizontal aspect ratios so tall or wide aspect ratios don’t clip the character’s head or limbs. Smart Keyframe Selection (Python Side) Agents can’t look at 120 raw frames — that would incinerate context windows and latency. We built an intelligent keyframe extractor (preview_keyframes.py) that analyzes the clip curves to find where actual motion happens: curve extrema, zero-crossings, sudden velocity changes, and animation event timestamps. It pins the start and end poses, then fits the most informative frames within a strict frame budget (e.g. 4 to 8 images). Zero-Side-Effect Scene Safety One of the hardest parts of building agent tooling for Unity is engine hygiene. The preview system samples the animation, renders offscreen to a custom RenderTexture, encodes directly to PNG byte buffers, and cleans up after itself. No dummy cameras left in the hierarchy, no dirty scene flags, and character poses are strictly restored to their pre-sampling state. Hardened CI & The Unity Package Gate We also tightened our pre-commit and CI gates. We introduced scripts/check_unity_package.py, compiling the C# package directly against real Unity assemblies with Microsoft.Unity.Analyzers in headless Linux containers. If there’s an obsolete API, a loose memory allocation, or a CA analyzer warning, the build fails before it ever touches a project. It feels great to have this merged and rock-solid. With animation visual inspection out of the way, I’m heading straight to the next item on the Roadmap: Typed Clip, Event, and Camera Authoring!
Editing Animation Clips & Events Hey everyone, continue working on it. Up until now, the agent could only really watch animations—taking previews and checking poses. If a keyframe was off or a transition looked janky, you still had to go into Unity and fix it by hand. Now, the agent can actually edit AnimationClip assets directly. It can add, move, or delete keyframes, tweak curves, and set tangent modes like smooth, linear, or step holds. Giving an AI write access to your animation files is honestly a bit scary—one bad curve and your character turns into a noodle. To keep things safe, Visora now takes an automatic backup of the clip before touching it, and hooks every edit into Unity’s native Undo system. If the agent makes a mess, you can roll it back with a tool call or just hit Ctrl + Z right in the editor. We also added tools to create and remove animation events. This makes it way easier to sync things like hit-stops, camera shake, or footstep sounds to exact frames on the timeline instead of guessing with timers.
Worked on a large animation/character workflow update for Visora. Added dedicated agent workflows for animation authoring, camera/action sequences, rig retargeting, IK, gaze, motion polishing, contact handling and animation QA. Updated the MCP instructions and project docs so agents have a clear workflow for checking rigs, previewing animation, validating motion and handling Humanoid/Generic fallback cases. Implemented new animation tooling around Two-Bone IK, viewport-based effector placement and character gaze. Added support for solving and baking IK/gaze into animation clips, including parameter validation and Unity capability checks.Added a bigger QA layer for animation. This includes temporal motion analysis, curve discontinuity diagnostics, self-intersection checks and comparison of animation previews. Also added contact baking for things like planted feet/hands and camera-subject action tooling for synchronizing character motion with camera impacts. Added atomic animation transactions and improved rollback/backup handling so multiple animation edits can be applied together and reverted safely when something fails. Refactored the Unity-side animation services around shared sampling, curve writing and rollback helpers. Spent a good amount of time hardening all of this against actual Unity edge cases: Edit Mode requirements, unsupported bridge capabilities, invalid parameters, unknown diagnostic values, quaternion discontinuities, tangent preservation and proper exception handling. Added a Unity EditMode integration test suite covering IK, gaze, contact baking and atomic animation transactions, together with a runner script. Expanded the Python unit tests for the new animation tools and failure cases as well.Also reworked Visora’s visual output. Screenshots, animation previews and video frames now use multimodal MCP image blocks and file artifacts instead of dumping Base64 data into the response. Multi-frame previews can generate contact sheets, and full-resolution artifacts stay on disk. After that I focused heavily on MCP context usage. Compact tool definitions reduced the tool catalog payload significantly, diagnostic tools now have limits/filtering for large skeletons and clips, tool results are compacted, duplicate structured output is removed, and several redundant tools/wrappers were merged or deleted. The tool catalog went from 55 tools down to 44. Merged the two separate video capture tools into a single capture_video workflow and reduced the default screenshot resolution to 720p. Inline images are now automatically downscaled while keeping the full-resolution artifact available separately. Finally tuned the default diagnostic dump sizes further so normal tool calls consume much less agent context and larger detailed dumps are requested only when they are actually needed.
Preview Artifacts, Bridge Recovery & Prefab Workflows Added reproducible animation preview artifacts with stored records and comparison tools for repeatable QA.Improved Unity bridge recovery during reloads/recompiles, added retry hints and safer timeout handling. Added real Unity E2E animation fixtures and reorganized the test suite.Finished the v0.1.3 release, refreshed the README/docs, and started v0.1.4 prefab workflows. Added inspect_prefab_asset and inspect_prefab_overrides with native Unity services, support for nested/variant/model prefabs, structured override inspection, stable IDs, and Python/integration/EditMode test coverage.
Ships:
Built Visora, an MCP server that gives AI agents reliable high-level control over the Unity Editor. The hardest part was making animation and editor workflows safe and predictable: IK, gaze, retargeting, animation QA, bridge reload recovery, prefab inspection, rollback, and reproducible preview artifacts. I’m most proud of how much of the Unity-side behavior is covered by real EditMode/integration tests instead of only mocked Python tests. To test it, use the GitHub release/source, follow the setup guide, connect Visora to a Unity project, and try the MCP tools for animation, scene inspection, previews, or prefab inspection....
|
1793347040.1110332
|
1793433440.1110332
|
|
20707
|
My awesome macropad! by @Sanyam | Stardance
|
Sanyam
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My awesome macropad! by @Sanyam | Stardance
|
1793347041.3945637
|
1793951841.3945637
|
|
564
|
My awesome macropad! by @andrea_zambolin09 | Stard My awesome macropad! by @andrea_zambolin09 | Stardance...
|
andrea_zambolin09
|
0
|
0.57
|
0
|
[]
|
[{"post_id": 28914, "ts": "202 [{"post_id": 28914, "ts": "2026-07-15T14:53:09Z", "hours": 0.5669, "text": "done both the pcb and the case (I kinda forgot to record the first time so I speedrun the whole project again)"}]...
|
Title: My awesome macropad! by @andrea_zambolin09 Title: My awesome macropad! by @andrea_zambolin09 | Stardance
Devlogs:
done both the pcb and the case (I kinda forgot to record the first time so I speedrun the whole project again)...
|
1793347042.3180103
|
1793951842.3180103
|
|
13237
|
Intellix by @izzi_the_dino | Stardance
|
izzi_the_dino
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Intellix by @izzi_the_dino | Stardance
|
1793347043.3014064
|
1793951843.3014064
|
|
37021
|
The Most Advanced Iron Man Helmet With a Real Life The Most Advanced Iron Man Helmet With a Real Life HUD by @Kep | Stardance...
|
Kep
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: The Most Advanced Iron Man Helmet With a Re Title: The Most Advanced Iron Man Helmet With a Real Life HUD by @Kep | Stardance...
|
1793347044.242254
|
1793951844.242254
|
|
31596
|
Console Orpheus Pico by @ekrutsch | Stardance
|
ekrutsch
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Console Orpheus Pico by @ekrutsch | Stardan Title: Console Orpheus Pico by @ekrutsch | Stardance...
|
1793347045.1382155
|
1793951845.1382155
|
|
33010
|
Untitled by @bhargavTheDev | Stardance
|
bhargavTheDev
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Untitled by @bhargavTheDev | Stardance
|
1793347046.0566304
|
1793951846.0566304
|
|
52019
|
Pointer Fighter (C based) by @nano | Stardance
|
nano
|
1
|
58.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-24T20:19:08Z", "hours": 58.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "A roguelike room crawler completely built in C! What is in it? Randomly generated rooms with a fog of war for you to explore Three different enemy types with scaling difficulty Boss fights with unique item drop RPG Style fighting An interactive inventory that can be used during battle A battle log that tracks everything that happens in battle Items, pickups and a persistent highscore What am I proud of? The enemy pursuit and fleeing system. It was somewhat hard to implement but I think it made the game wayyyy better than before. I’m also proud of how the state machine turned out in the end. The game has strict separations between the different game states and first handles what the player/the game did during the game loop iteration and then after that is done draws it to the screen. That state machine was very prone to bugs and I had to spend a bunch of time to fix (fallthrough bug, etc. all talked about in devlogs). But I think the result that turned out at the end was great and I am very content with it How is it built? As said its completely built in C using ncurses as its graphics library using 12 source files (currently) with each one having a specific task only it does. The build is released using GitHub workflows and the binary can easily be downloaded and used on (almost) all glibc linux distros (the project was compiled for Ubuntu and you will have to install ncurses though) What I learned The game was actually my first real coding project ever apart from a few simple websites so I learned a bunch. I learned how to separate state transitions, I learned the importance of good and bad switch statements, bounds checking (really rough path) and I think most importantly: The power of code separation and making every file do its designated task. I often caught myself picking the easy and sloppy path and then fixing it properly and in retrospect helped with preventing a bunch of bugs Known limitations / plans for the future It’s my first project, so there are likely still issues I haven’t found. Even though I tried to find everything (a.e. using Valgrind told me there are no memory blocks definitely lost) there are still potentially memory safety issues or potential segfaults. It’s possible some edge cases might have slipped through. I’ve tested the project thoroughly and haven’t found any crashes since the last few debugging sessions but I cannot safely say it’s perfect. I think if I will find the time I will maybe add some new features like new special item related enemies or player status effects though I cannot safely say if i can Closing word I think building a game for my first real project was the right decision for me because I really had a bunch of fun building this project. I currently have some ideas for unrelated new projects (one is up on my profile check it out (; ) and I think this project was a really good pathway into coding for me. Check the GitHub and the demo video out and I hope you like the project", "repo": "https://github.com/skibidi-nano/Stardance-roguelike", "demo": "https://github.com/skibidi-nano/Stardance-roguelike/releases/tag/v1.0.1"}]...
|
[{"post_id": 73295, "ts": "202 [{"post_id": 73295, "ts": "2026-09-24T19:37:40Z", "hours": 3.1092, "text": "LOG 26: FINAL DEVLOG MAINLY BUG FIXES AND SOME MINOR CHANGES CHANGES Enemies previously scaled to strongly and beat you too hard after the boss fight. Also because it was hard to scale the opponents down i decided to make the hp of everyone higher (everything got stronger in theory, player has 100 starting hp, does 20 damage etc.) LATE ADDITIONS LICENSE I licensed the project under the MIT licesne because it seemed fitting BUILD FILE I added a build file for the repo so i could upload a release binary (ncurses is required tho) BUG FIXES HIGHSCORE BUG There was a bug with the highscore not being displayed when there was no highscore.txt file. I needed to change the handling of the fact that the open function returned NULL, because NULL either meant, no file was there or no file could be found which resulted in no file being created because the function exited when the open function returned NULL, the fix was pretty simple overall tho (just adding an extra if conditional to check) FULL INVENTORY BUG Previously when having a full inventory, you couldnt pick up new items, issue was when using items that state didnt reset so one full inventory meant no items anymore :( . The fix was just to reset the state after using items BOSS ITEM INVENTORY BUG I forgot to make the boss item return the correct state which resulted in the item sometimes not being put in the inventory. The fix was just to add return ENTER_LEGAL to the boss items if statement SET ROOM ISSUE Because of random rooms sometimes boss room dimensions where bigger than current room which resulted in bugs (see previous devlogs). My previous fix worked in theory but had more affinity for potential bugs so i changed the set room function from two static values to two values that get passed into the function"}, {"post_id": 71417, "ts": "2026-09-20T19:47:13Z", "hours": 5.0142, "text": "LOG 25: FLEEING ENEMIES (CONTAINS MANY CHANGES), BOSS ITEM REFACTOR FLEEING ENEMIES Enemies (except the boss) now have the ability to run away if the enemy would get killed by the next attack. The chance for this to happen is 10% and when they run away, they gain 1 HP per step they take and return to chasing the enemy if their hp is back at half of their max HP. FLEEING REWORK Before adding this feature, fleeing was the same practically as winning (the return type of the fight was STATE_VICTORY), i changed that to the proper STATE _FLED. Also before when fleeing, if you fled and another enemy of another type collided with you, he had normal stats but the enemy before that also got his stats reset. The same went for enemies of the same type. When fleeing from enemy A from type A and then colliding with enemy B from type A, he would have the stats of enemy A. The fix for both was to make a 2D Array of all enemies and their types, so each individual enemy stores its stats, not the battle function. PLAYER POSITION STRUCT Previously the player had ~ 8 different position variables, which was pretty clunky if i wanted to transport the player position to another function. Because of that i put all player positions into a singular struct, so i could pass all the player positions at once if i needed to. ENEMY PURSUIT FUNCTION REWORK Because enemies have to run away instead of chasing i had to rework the pursuit function a bit so it could also work in a reverse way. I had to make the function branch between the two states which took a bit more work than originally anticipated because i had a bunch of wrong ideas for how the function should work. Overall the function implementation was essentially to just use the inverse vector of the normal vector for the direction function BOSS ITEM FUNCTION/ITEM FUNCTION REFACTOR Because previously the boss item detection function and the item detection were separate the code didnt feel clean at all (felt like a lazy implementation for me), so i made the item function work with the boss item which makes the item function overall more open for new item types (if i will add any more)"}, {"post_id": 69703, "ts": "2026-09-17T16:40:29Z", "hours": 4.2308, "text": "LOG 24: BOSS ITEM DROP, CONTROLS SCREEN, NEW IN-GAME BANNER, ITEM TO INVENTORY REFACTOR, BUG FIXES FEATURES BOSS ITEM DROP I added an item that only the boss drops, when killed. Its ability is to make the enemy unable to attack for one turn. You will always get it when defeating the boss and has the ‘?’ glyph compare to regular items (‘+’). Its also the only item that can always be picked up (with normal items, if your inventory is full you cannot pick them up, with the boss item your first slot gets overwritten). CONTROLS SCREEN I added a basic controls screen so people that try the game out (now or when it ships), know what to do when playing. Currently most things are really straightforward but i added it just in case. The most important aspect will probably how to end the game because thats the most unintuitive one (even though i hope anyone testing the game doesnt want to quit it) ITEM TO INVENTORY REFACTOR I thought that the previous state of my item to inventory were pretty lazy so i changed the logic up a bit. Previously when picking up items the items would go into the spot after the last item that was picked up and when the inventory ran full the first item was swappped with the newly picked up item. I didnt like that looking back and because of that the logic now scans through the inventory until it finds an empty spot and puts the item in that empty slot. If the inventory is full no item can be picked up (except the boss item) and the player gets a message on their screen. They can then leave the item screen using ESC and the item is not removed and can be picked up later if you somehow make space in your inventory NEW IN-GAME BANNER Also pretty straightforward, i added a banner so the menu looks a little bit prettier :) BUG FIXES BOSS ROOM BUG Because of map and gamestates and me forgetting to implement a feature in the door collision checks, there was a bug when defeating the boss (the map stayed as it was, but had the usual visible map ‘#’ everywhere you hadnt already explored (you cant really explore much so there where many ‘#’ ’s around the map which was really ugly. The fix was to move a mapstate change from the function that is responsible for handling victory to the function handling doors BOSS BUG There was a bug after defeating the boss which resulted from the previous bug and its fix. Because i forgot an additional check in my door function when defeating the boss the boss would spawn again and overwrite your boss item. The boss also chased you (which normally doesnt happen) and you couldnt leave the room. The fix was just to add another condition to the if statement in the door function responsible for the boss room ENEMY REMOVAL BUG For some reason (i dont know how i made the bug happen), when defeating enemies the visible map lagged behind the normal map which resulted in defeated enemies appearing to still exist on the map for one iteration of the loop (pressing any button made them vanish). The fix was to add a call to the visible_map_init function after defeating enemies"}, {"post_id": 68741, "ts": "2026-09-15T17:34:46Z", "hours": 2.2667, "text": "LOG 23: BATTLE LOG FOR ITEMS, BUG FIXES, BUG FIXES, BUG FIXES, BUG FIXES FEATURE BATTLE LOG FOR ITEMS The previous battle log only logged attacks and the damage dealt, now the log also tracks if items are used or items deal damage BUG FIXES SEGFAULT There was a segfault when trying to render the bottom of deeper rooms because the render guard had a major fault (only disjunctions no conjunctions). Because of that the game tried to reach spaces of the visible_map array out of reach of the array which resulted in a segfault when trying to go into spaces out of reach of the array. The fix was changing the guard from if ((player_y + y) < MAX_HEIGHT || (player_x + x) < MAX_WIDTH || (player_y + y ) >= 0 || (player_x + x >= 0)) to if ((player_y + y) < MAX_HEIGHT && (player_x + x) < MAX_WIDTH && (player_y + y ) >= 0 && (player_x + x >= 0)) which fixed the issue BATTLE LOG NULL TERMINATOR FIX There was a bug with the battle log, where ^ were printed (NUL ascii in ncurses) because the battle log printed out every part of the string character by character (including the \\0 terminator). The fix was to just not print out the \\0 terminator to the screen BATTLE SELECTION BUG There was a bug with conflicting selection variables (multiple variables where named selection which resulted in wrong selections being displayed). The fix was to give every function their own selection variable which fixed the issue VISIBLE MAP GLITCH Because the visible map only updated itself in the perimeter you are standing in if you moved fast enough some characters lagged behind and made it look like there were way more enemies than there actually were. The fix was to update not only the perimeter on every movement but also update everything that had already been explored"}, {"post_id": 68208, "ts": "2026-09-14T18:13:59Z", "hours": 4.045, "text": "LOG 22: POISON ITEM, BATTLE LOG, MAIN LOOP AND ITEM SELECTION REWORK POISON ITEM A new item that does 3 tick damage every enemy turn, for 2 turns. Its the rarest item in the game as of right now and was somewhat complex to add (because of the tick damage and tracking how many turns have passed) BATTLE LOG A log that tracks the last two actions that have happened in the game. It currently only tracks damage and attacks but will track item usage and more detailed information in the future. It was a real headache to implement because i had contradictory logic between the log and my main loop and i had to reimplement it multiple times. But went well overall :) REWORKS MAIN LOOP REWORK I reworked the main loop a bit because even though it worked well in theory it was not really optimized and it was prone to bugs in the future which is why i felt like redoing it a bit. Now instead of every function handling their own init, every changing gamestate instantly also inits the state it was changed to. Because of this there are less possible bugs and its overall easier to do for future gamestates ITEM PICKUP REWORK I noticed that the logic for my items wasn’t really perfect and seemed unoptimized which is why i felt like changing it a bit. Because when picking up items there are only two possible things to do (which both result in the same exit scenario) i swapped my if/else if logic for a switch statement which made the code shorter, and more optimal"}, {"post_id": 67326, "ts": "2026-09-13T12:07:21Z", "hours": 3.1628, "text": "LOG 21: FOG OF WAR, HOMING ENEMIES, BATTLE LOGIC OVERALL AND BUG FIXES FEATURES HOMING ENEMIES The enemies now home on you with every step you take, meaning you actually have to think about where you will go or the enemies will catch up to you. This was implemented by adding a sign function that decide whether the enemy should move +1 or -1 and then moving the enemy by that value. There were some bugs regarding enemies in previous rooms which got fixed by resetting the whole array during map init FOG OF WAR I added a fog of war feature that obstructs everything in the map you haven’t explored yet. This also pairs very well with the homing enemies feature. You have to go around the map to look out for items and enemies which now also walk towards you, so every step matters now BATTLE LOGIC OVERHAUL After revisiting most of my code for commenting i realized how terrible most of my battle logic was so i made it a bit more efficient and most importantly more readable. Overall i realized how great switch statements are in the last few logs BUG FIXES DOOR BUG There was a bug with the map that was somewhat useful when testing but still was a bug. The issue was that if you tried to step into the door the game let you step onto that char. The issue was that i forgot to make the game think that the door (when closed) should behave exactly like a wall. So the fix was just to add the door char to the wall collision check function"}, {"post_id": 66634, "ts": "2026-09-12T14:15:36Z", "hours": 1.4594, "text": "LOG 20: DYNAMIC STATS, BUG FIXES, SMALL UPDATE TO DEBUG MODE AND MORE COMMENTS DYNAMIC STATS The stats of all enemies are now connected to the boss counter which is the number of boss fights that have been fought during the current run so there is real progression and you dont just get stupidly overpowered DEBUG MODE I basically just added the boss to the debug mode nothing much BUG FIXES There was a glitch with the boss room being cut off because the randomly generated room was smaller than the boss room. I had to push a few things around and put every type of map generation (standard, debug, boss) into a switch statement to make it work properly COMMENTS I pretty much forgot most of the comments in the game so i started adding way more comments where they should be so the code is hopefully more intuitive to follow NOTE I think the next update will be pretty big so watch out when it finally drops!!!"}, {"post_id": 66094, "ts": "2026-09-11T17:53:56Z", "hours": 3.0956, "text": "LOG 19: NEW ENEMY TYPE: BOSS FIGHTS, BETTER DOOR LOGIC, NEW SPRITES NEW ENEMY TYPE Because i thought that the normal enemies would be too easy to beat down the run i added the main boss (the pointer which stole the star sprite from the address enemy) and he will always be fought every 5-10 rooms (im not sure on the number) . Currently his stats are static but i plan on making them dynamic based on the number of rooms you went through. BOSS ROOM/BETTER DOOR LOGIC The old door logic practically only worked with a normal room and needed the regular enemies to all be defeated. I tweaked it a little so it works with boss triggers/defeating the boss NEW SPRITE(s) As i said the boss got the star sprite because he is the true pointer so i gave the address an ampersand sprite (which is way more fitting btw). But i am not completely satisfied with the current ampersand sprite (i will maybe change it sometime) NOTE This time there werent really any bugs except during building the boss logic but they got fixed along the way. This time it actually went rather smoothly :) Also ignore the absurd stats of the player"}, {"post_id": 65457, "ts": "2026-09-10T16:29:10Z", "hours": 1.7283, "text": "LOG 18: NEW ITEM AND BUG FIXES BUG FIXES BUG FIXES NEW ITEM DAMAGE POTION I added a new item that can be used in the inventory during battle which deals (currently) 4 damage to the opponent. Its the rarest item in the game right now (i think 1 in 11). Because of the new item i had to make a bunch of code more modular in the inventory logic (a trend in my code). But overall this was the reimplementation that went the smoothest BUG FIXES BATTLE INPUT BUG There was a bug in the battle screen that made the overall input very clunky and previously was only fixed by letting another bug happen but i fixed it by changing something in the switch statements of the battle logic INVENTORY ACCESS AND SELECTION BUG A bug that mainly happened because of the previous bug: When trying to access the inventory in battle the game automatically selected the first item and returned to battle and only after the second time accessing the inventory you could really use your items as you wished INVENTORY SELECTION BUG In the inventory itself a bug was caused by a lazy implementation which caused the display (not the real logic behind the inventory actually) to become very glitched out and very confusing. I just fixed this by fixing my old and bad implementation for a better more modular one (an overall trend in my code to be not that modular lol)"}, {"post_id": 64879, "ts": "2026-09-09T16:10:45Z", "hours": 2.0467, "text": "LOG 17: DEBUG MODE FOR FASTER TESTING DEBUG MODE I added a debug mode because i found that most of my testing time was wasted finding items or players in rooms (which was very annoying most of the time), so i added a debug room so that goes way faster. Though it is very useful it was somewhat hard to implement but it made the code modular the same way the enemy logic is modular now which is an improvement in two ways"}, {"post_id": 63783, "ts": "2026-09-07T18:59:06Z", "hours": 3.6586, "text": "LOG 16: NEW NPC, BETTER CODE MODULARITY, FIXED SOME BUGS NEW FEATURES New “Modulo” / % enemy (based on the modulo operator in c)! It has weaker stats but is way stronger in terms of attack power BETTER CODE MODULARITY Because at the start of the game my main idea was to only implement one enemy type (which was pretty dumb tbh), i had to rework most of the map and battle logic so it was more generic and welcoming to multiple entities (and will help me add more enemies in the future). BUG FIXES VISUAL GLITCH There was a bug for the most of the time in the game (an issue with unititialized variables being printed, which resulted in a visual glitch), which was actually a pretty easy fix (i had to change the switch statements that handle state input and drawing output a bit so that changing the gamestate doesn’t skip to drawing instantly) MEMORY LEAK Because of a dumb implementation of a function that was supposed to carry over the value of a variable in file A to file B which used pointers allocated with malloc i had a memory issue because in a common case i forgot to implement free which resulted in lost memory (the fix was actually just switching over to passing by value because it was just a single char being transported from file A to file B and passing by reference wasn’t necessary)"}, {"post_id": 62408, "ts": "2026-09-05T19:04:09Z", "hours": 2.9256, "text": "LOG 15: MAINLY BUG FIXES AND SOME MINOR NEW FEATURES NEW FEATURES Better life/strength display A feature that was originally used for debugging has turned out as a good feature for the game overall. It always displays your and the enemies HP, and attack power (even though the attack damage is partly random which i have to note somewhere so there will be no confusion) An item descriptor that tells you what the item you are looking at currently does There is only one item to be used in the inventory right now so you can only see what the heal item does but more will be added in the future. BUG FIXES Memory unsafety fixed There was an issue with unsafe memory access if the items in the inventory where bigger than 10. My fix is that if you have more than 10 items and you pick up a new one, the new item will replace the first item, the next one the second one etc. It also resolved a smaller issue with blank inventory space that ate up inventory space even though it was empty. Items not working fixed The functions responsible for changing your hp, healing you or making you stronger hat an issue with their pointer assignment (they were pointing to the wrong variable) which i fixed for all function which work great now. Bug with doors acting the same as item pickups Because of something what seemed to be a typo (a function returned 1 instead of 0), if you tried to go through a door and you haven’t beaten every enemy, instead of nothing happening you got a free item (which turned out to be a great testing feature for items, because i can get many items fast and easily). The fix was really easy (just swap the 1 for a 0) Health bar not drawing properly Because of a badly implemented function i added in the past which turned out to be completely redundant (got cut out) the current hp weren’t imported properly to the function that handles printing out the health bar which i fixed by using another variable responsible for storing the current hp of the player Misc fixes After having to audit most of the code again i noticed that there were some issues with the code (partly because it was fine as it was when it was written, part was just sloppy implementation) which i also fixed even though most of it was minor. CURRENT PLANS FOR THE FUTURE More items that can be used in battle MORE ENEMIES!!! Im planning to add more and stronger enemies in the future even though that will probably will be one of the biggest newfeatures as it requires rewriting most of the battle and map logic Enemies getting stronger if you get farther for better progression Overall some more optimization and bug fixes (there is always something to be fixed ;) )"}, {"post_id": 61748, "ts": "2026-09-04T20:04:49Z", "hours": 4.0994, "text": "LOG 14: Made the items more interactive and functional (items can now be picked up or ignored and will vanish if either is done) and i built a somewhat functional inventory accessible only in battle as of right now. I also had to clean up a bunch of code and had to re-implement some stuff as i implemented some things rather poorly before. There are still some things to be made a bit cleaner which will come in the next few devlogs but i felt like posting one for the current state of the game."}, {"post_id": 60461, "ts": "2026-09-02T19:58:48Z", "hours": 2.5567, "text": "LOG 13: Added items that are supposed to give you power-ups in the future. currently they dont really do anything except open a screen with a sprite for the corresponding item (SPRITES ARE AI GENERATED). The plan for the future is to deicde between regular and activatable items (the first give permanent buffs, the second can be activated) and to be able to choose the items while in battle. For now they can spawn on the map (anywhere except 1|1 and spots where enemies are) and open a random sprite of the 3 that are available right now!"}, {"post_id": 59815, "ts": "2026-09-01T19:33:57Z", "hours": 0.7692, "text": "LOG 12: This came quicker than i thought it would lol. I implemented the two things i spoke about in the last log. I added a highscore system so you can always see how far you came with beating the evil pointers and i also “locked” the rooms until youve beaten every enemy in the room. I plan on adding power ups and some other features (read the README in the repo). STAY UPDATED!!!"}, {"post_id": 59787, "ts": "2026-09-01T18:38:08Z", "hours": 1.3131, "text": "LOG 11: Im Back. After a short break i started to implement that enemies really “die” if you beat them! Now there is some kind of progress added into the game as you can actually beat the enemies!!! The next features will probably be a real highscore and restricitions in leaving the room until youve beaten every enemy. Till then stay updated!!!!"}, {"post_id": 55276, "ts": "2026-08-27T00:06:09Z", "hours": 1.4606, "text": "LOG 10: Added multiple enemies (dynamic based on room size) and stats get reset after battle. Battle still issnt finished yet as i think of two more things to add for every one thing i implement. Stay updated !!!"}, {"post_id": 54777, "ts": "2026-08-25T21:47:45Z", "hours": 1.3933, "text": "LOG 9: Battle now works better and you can see enemy h now. Code is way less tangled (though some stuff still needs to be improved and the battle still isnt fully polished). There are some bugs regarding memory right now (will be fixed ASAP). But as of now you can finally really battle the evil evil evil pointer!"}, {"post_id": 54087, "ts": "2026-08-24T21:27:57Z", "hours": 2.0, "text": "added the first implementation of working battle (taking and dealing damage, working health bar)! The main issues right now are that the code is a bit tangled and that the logic isnt polished at all. But after 2 hours of work i felt like i had to post a log so this is the current state (you can attack or try to run) (winning and running have the same effect as of now)"}, {"post_id": 52721, "ts": "2026-08-23T01:22:10Z", "hours": 1.3925, "text": "Kinda added a battle screen (not reactive yet but will happen soon) and made the ASCII designs for my characters with AI (i cannot make any good ASCII art sadly :( … yet). In the top left is what is supposed to resemble a health bar which also still needs to be implemented. Also made the code a bit cleaner added a few header guards and most importantly i added structs for the entities so their stats could be recorded. Thats it :)"}, {"post_id": 52658, "ts": "2026-08-22T22:08:53Z", "hours": 1.2631, "text": "Added a (somewhat) functional menu screen to view highscore and start the game (highscore function will be implemented soon!!!!. Also built the first prototype of the battle screen though it is no where near finished. I will probably make the menu screen a bit prettier in the future but the current design has to suffice for now. :)"}, {"post_id": 51911, "ts": "2026-08-21T20:21:08Z", "hours": 0.9469, "text": "Added “Npcs” (evil pointers/ampersands). Collision yet have to do something relevant (right now they only trigger a new room). Also fixed a few memory unsafeties."}, {"post_id": 51814, "ts": "2026-08-21T17:36:52Z", "hours": 1.5833, "text": "Implemented doors (currently a minus sign probably going to change that). If you collide with said door/minus sign you will enter a new, different sized room. I did that by choosing a random wall, a random spot on that wall which is the spot where the door will be and if you make contact with the door a new room will be initialized."}, {"post_id": 51346, "ts": "2026-08-20T23:28:52Z", "hours": 0.9203, "text": "Added collision checks for walls so you cant escape the rooms"}, {"post_id": 51318, "ts": "2026-08-20T22:03:55Z", "hours": 1.0767, "text": "Implemented functional Walking (even though there is no real border yet). I also fragmented the code a bit so its more readable!"}, {"post_id": 51226, "ts": "2026-08-20T19:16:10Z", "hours": 0.4381, "text": "“Roguelike” “Game” in C (neither of them has begun to be implemented. But i guess i have set up the very basics as of now"}]...
|
Title: Pointer Fighter (C based) by @nano | Starda Title: Pointer Fighter (C based) by @nano | Stardance
Devlogs:
“Roguelike” “Game” in C (neither of them has begun to be implemented. But i guess i have set up the very basics as of now
Implemented functional Walking (even though there is no real border yet). I also fragmented the code a bit so its more readable!
Added collision checks for walls so you cant escape the rooms
Implemented doors (currently a minus sign probably going to change that). If you collide with said door/minus sign you will enter a new, different sized room. I did that by choosing a random wall, a random spot on that wall which is the spot where the door will be and if you make contact with the door a new room will be initialized.
Added “Npcs” (evil pointers/ampersands). Collision yet have to do something relevant (right now they only trigger a new room). Also fixed a few memory unsafeties.
Added a (somewhat) functional menu screen to view highscore and start the game (highscore function will be implemented soon!!!!. Also built the first prototype of the battle screen though it is no where near finished. I will probably make the menu screen a bit prettier in the future but the current design has to suffice for now. :)
Kinda added a battle screen (not reactive yet but will happen soon) and made the ASCII designs for my characters with AI (i cannot make any good ASCII art sadly :( … yet). In the top left is what is supposed to resemble a health bar which also still needs to be implemented. Also made the code a bit cleaner added a few header guards and most importantly i added structs for the entities so their stats could be recorded. Thats it :)
added the first implementation of working battle (taking and dealing damage, working health bar)! The main issues right now are that the code is a bit tangled and that the logic isnt polished at all. But after 2 hours of work i felt like i had to post a log so this is the current state (you can attack or try to run) (winning and running have the same effect as of now)
LOG 9: Battle now works better and you can see enemy h now. Code is way less tangled (though some stuff still needs to be improved and the battle still isnt fully polished). There are some bugs regarding memory right now (will be fixed ASAP). But as of now you can finally really battle the evil evil evil pointer!
LOG 10: Added multiple enemies (dynamic based on room size) and stats get reset after battle. Battle still issnt finished yet as i think of two more things to add for every one thing i implement. Stay updated !!!
LOG 11: Im Back. After a short break i started to implement that enemies really “die” if you beat them! Now there is some kind of progress added into the game as you can actually beat the enemies!!! The next features will probably be a real highscore and restricitions in leaving the room until youve beaten every enemy. Till then stay updated!!!!
LOG 12: This came quicker than i thought it would lol. I implemented the two things i spoke about in the last log. I added a highscore system so you can always see how far you came with beating the evil pointers and i also “locked” the rooms until youve beaten every enemy in the room. I plan on adding power ups and some other features (read the README in the repo). STAY UPDATED!!!
LOG 13: Added items that are supposed to give you power-ups in the future. currently they dont really do anything except open a screen with a sprite for the corresponding item (SPRITES ARE AI GENERATED). The plan for the future is to deicde between regular and activatable items (the first give permanent buffs, the second can be activated) and to be able to choose the items while in battle. For now they can spawn on the map (anywhere except 1|1 and spots where enemies are) and open a random sprite of the 3 that are available right now!
LOG 14: Made the items more interactive and functional (items can now be picked up or ignored and will vanish if either is done) and i built a somewhat functional inventory accessible only in battle as of right now. I also had to clean up a bunch of code and had to re-implement some stuff as i implemented some things rather poorly before. There are still some things to be made a bit cleaner which will come in the next few devlogs but i felt like posting one for the current state of the game.
LOG 15: MAINLY BUG FIXES AND SOME MINOR NEW FEATURES NEW FEATURES Better life/strength display A feature that was originally used for debugging has turned out as a good feature for the game overall. It always displays your and the enemies HP, and attack power (even though the attack damage is partly random which i have to note somewhere so there will be no confusion) An item descriptor that tells you what the item you are looking at currently does There is only one item to be used in the inventory right now so you can only see what the heal item does but more will be added in the future. BUG FIXES Memory unsafety fixed There was an issue with unsafe memory access if the items in the inventory where bigger than 10. My fix is that if you have more than 10 items and you pick up a new one, the new item will replace the first item, the next one the second one etc. It also resolved a smaller issue with blank inventory space that ate up inventory space even though it was empty. Items not working fixed The functions responsible for changing your hp, healing you or making you stronger hat an issue with their pointer assignment (they were pointing to the wrong variable) which i fixed for all function which work great now. Bug with doors acting the same as item pickups Because of something what seemed to be a typo (a function returned 1 instead of 0), if you tried to go through a door and you haven’t beaten every enemy, instead of nothing happening you got a free item (which turned out to be a great testing feature for items, because i can get many items fast and easily). The fix was really easy (just swap the 1 for a 0) Health bar not drawing properly Because of a badly implemented function i added in the past which turned out to be completely redundant (got cut out) the current hp weren’t imported properly to the function that handles printing out the health bar which i fixed by using another variable responsible for storing the current hp of the player Misc fixes After having to audit most of the code again i noticed that there were some issues with the code (partly because it was fine as it was when it was written, part was just sloppy implementation) which i also fixed even though most of it was minor. CURRENT PLANS FOR THE FUTURE More items that can be used in battle MORE ENEMIES!!! Im planning to add more and stronger enemies in the future even though that will probably will be one of the biggest newfeatures as it requires rewriting most of the battle and map logic Enemies getting stronger if you get farther for better progression Overall some more optimization and bug fixes (there is always something to be fixed ;) )
LOG 16: NEW NPC, BETTER CODE MODULARITY, FIXED SOME BUGS NEW FEATURES New “Modulo” / % enemy (based on the modulo operator in c)! It has weaker stats but is way stronger in terms of attack power BETTER CODE MODULARITY Because at the start of the game my main idea was to only implement one enemy type (which was pretty dumb tbh), i had to rework most of the map and battle logic so it was more generic and welcoming to multiple entities (and will help me add more enemies in the future). BUG FIXES VISUAL GLITCH There was a bug for the most of the time in the game (an issue with unititialized variables being printed, which resulted in a visual glitch), which was actually a pretty easy fix (i had to change the switch statements that handle state input and drawing output a bit so that changing the gamestate doesn’t skip to drawing instantly) MEMORY LEAK Because of a dumb implementation of a function that was supposed to carry over the value of a variable in file A to file B which used pointers allocated with malloc i had a memory issue because in a common case i forgot to implement free which resulted in lost memory (the fix was actually just switching over to passing by value because it was just a single char being transported from file A to file B and passing by reference wasn’t necessary)
LOG 17: DEBUG MODE FOR FASTER TESTING DEBUG MODE I added a debug mode because i found that most of my testing time was wasted finding items or players in rooms (which was very annoying most of the time), so i added a debug room so that goes way faster. Though it is very useful it was somewhat hard to implement but it made the code modular the same way the enemy logic is modular now which is an improvement in two ways
LOG 18: NEW ITEM AND BUG FIXES BUG FIXES BUG FIXES NEW ITEM DAMAGE POTION I added a new item that can be used in the inventory during battle which deals (currently) 4 damage to the opponent. Its the rarest item in the game right now (i think 1 in 11). Because of the new item i had to make a bunch of code more modular in the inventory logic (a trend in my code). But overall this was the reimplementation that went the smoothest BUG FIXES BATTLE INPUT BUG There was a bug in the battle screen that made the overall input very clunky and previously was only fixed by letting another bug happen but i fixed it by changing something in the switch statements of the battle logic INVENTORY ACCESS AND SELECTION BUG A bug that mainly happened because of the previous bug: When trying to access the inventory in battle the game automatically selected the first item and returned to battle and only after the second time accessing the inventory you could really use your items as you wished INVENTORY SELECTION BUG In the inventory itself a bug was caused by a lazy implementation which caused the display (not the real logic behind the inventory actually) to become very glitched out and very confusing. I just fixed this by fixing my old and bad implementation for a better more modular one (an overall trend in my code to be not that modular lol)
LOG 19: NEW ENEMY TYPE: BOSS FIGHTS, BETTER DOOR LOGIC, NEW SPRITES NEW ENEMY TYPE Because i thought that the normal enemies would be too easy to beat down the run i added the main boss (the pointer which stole the star sprite from the address enemy) and he will always be fought every 5-10 rooms (im not sure on the number) . Currently his stats are static but i plan on making them dynamic based on the number of rooms you went through. BOSS ROOM/BETTER DOOR LOGIC The old door logic practically only worked with a normal room and needed the regular enemies to all be defeated. I tweaked it a little so it works with boss triggers/defeating the boss NEW SPRITE(s) As i said the boss got the star sprite because he is the true pointer so i gave the address an ampersand sprite (which is way more fitting btw). But i am not completely satisfied with the current ampersand sprite (i will maybe change it sometime) NOTE This time there werent really any bugs except during building the boss logic but they got fixed along the way. This time it actually went rather smoothly :) Also ignore the absurd stats of the player
LOG 20: DYNAMIC STATS, BUG FIXES, SMALL UPDATE TO DEBUG MODE AND MORE COMMENTS DYNAMIC STATS The stats of all enemies are now connected to the boss counter which is the number of boss fights that have been fought during the current run so there is real progression and you dont just get stupidly overpowered DEBUG MODE I basically just added the boss to the debug mode nothing much BUG FIXES There was a glitch with the boss room being cut off because the randomly generated room was smaller than the boss room. I had to push a few things around and put every type of map generation (standard, debug, boss) into a switch statement to make it work properly COMMENTS I pretty much forgot most of the comments in the game so i started adding way more comments where they should be so the code is hopefully more intuitive to follow NOTE I think the next update will be pretty big so watch out when it finally drops!!!
LOG 21: FOG OF WAR, HOMING ENEMIES, BATTLE LOGIC OVERALL AND BUG FIXES FEATURES HOMING ENEMIES The enemies now home on you with every step you take, meaning you actually have to think about where you will go or the enemies will catch up to you. This was implemented by adding a sign function that decide whether the enemy should move +1 or -1 and then moving the enemy by that value. There were some bugs regarding enemies in previous rooms which got fixed by resetting the whole array during map init FOG OF WAR I added a fog of war feature that obstructs everything in the map you haven’t explored yet. This also pairs very well with the homing enemies feature. You have to go around the map to look out for items and enemies which now also walk towards you, so every step matters now BATTLE LOGIC OVERHAUL After revisiting most of my code for commenting i realized how terrible most of my battle logic was so i made it a bit more efficient and most importantly more readable. Overall i realized how great switch statements are in the last few logs BUG FIXES DOOR BUG There was a bug with the map that was somewhat useful when testing but still was a bug. The issue was that if you tried to step into the door the game let you step onto that char. The issue was that i forgot to make the game think that the door (when closed) should behave exactly like a wall. So the fix was just to add the door char to the wall collision check function
LOG 22: POISON ITEM, BATTLE LOG, MAIN LOOP AND ITEM SELECTION REWORK POISON ITEM A new item that does 3 tick damage every enemy turn, for 2 turns. Its the rarest item in the game as of right now and was somewhat complex to add (because of the tick damage and tracking how many turns have passed) BATTLE LOG A log that tracks the last two actions that have happened in the game. It currently only tracks damage and attacks but will track item usage and more detailed information in the future. It was a real headache to implement because i had contradictory logic between the log and my main loop and i had to reimplement it multiple times. But went well overall :) REWORKS MAIN LOOP REWORK I reworked the main loop a bit because even though it worked well in theory it was not really optimized and it was prone to bugs in the future which is why i felt like redoing it a bit. Now instead of every function handling their own init, every changing gamestate instantly also inits the state it was changed to. Because of this there are less possible bugs and its overall easier to do for future gamestates ITEM PICKUP REWORK I noticed that the logic for my items wasn’t really perfect and seemed unoptimized which is why i felt like changing it a bit. Because when picking up items there are only two possible things to do (which both result in the same exit scenario) i swapped my if/else if logic for a switch statement which made the code shorter, and more optimal
LOG 23: BATTLE LOG FOR ITEMS, BUG FIXES, BUG FIXES, BUG FIXES, BUG FIXES FEATURE BATTLE LOG FOR ITEMS The previous battle log only logged attacks and the damage dealt, now the log also tracks if items are used or items deal damage BUG FIXES SEGFAULT There was a segfault when trying to render the bottom of deeper rooms because the render guard had a major fault (only disjunctions no conjunctions). Because of that the game tried to reach spaces of the visible_map array out of reach of the array which resulted in a segfault when trying to go into spaces out of reach of the array. The fix was changing the guard from if ((player_y + y) < MAX_HEIGHT || (player_x + x) < MAX_WIDTH || (player_y + y ) >= 0 || (player_x + x >= 0)) to if ((player_y + y) < MAX_HEIGHT && (player_x + x) < MAX_WIDTH && (player_y + y ) >= 0 && (player_x + x >= 0)) which fixed the issue BATTLE LOG NULL TERMINATOR FIX There was a bug with the battle log, where ^ were printed (NUL ascii in ncurses) because the battle log printed out every part of the string character by character (including the \0 terminator). The fix was to just not print out the \0 terminator to the screen BATTLE SELECTION BUG There was a bug with conflicting selection variables (multiple variables where named selection which resulted in wrong selections being displayed). The fix was to give every function their own selection variable which fixed the issue VISIBLE MAP GLITCH Because the visible map only updated itself in the perimeter you are standing in if you moved fast enough some characters lagged behind and made it look like there were way more enemies than there actually were. The fix was to update not only the perimeter on every movement but also update everything that had already been explored
LOG 24: BOSS ITEM DROP, CONTROLS SCREEN, NEW IN-GAME BANNER, ITEM TO INVENTORY REFACTOR, BUG FIXES FEATURES BOSS ITEM DROP I added an item that only the boss drops, when killed. Its ability is to make the enemy unable to attack for one turn. You will always get it when defeating the boss and has the ‘?’ glyph compare to regular items (‘+’). Its also the only item that can always be picked up (with normal items, if your inventory is full you cannot pick them up, with the boss item your first slot gets overwritten). CONTROLS SCREEN I added a basic controls screen so people that try the game out (now or when it ships), know what to do when playing. Currently most things are really straightforward but i added it just in case. The most important aspect will probably how to end the game because thats the most unintuitive one (even though i hope anyone testing the game doesnt want to quit it) ITEM TO INVENTORY REFACTOR I thought that the previous state of my item to inventory were pretty lazy so i changed the logic up a bit. Previously when picking up items the items would go into the spot after the last item that was picked up and when the inventory ran full the first item was swappped with the newly picked up item. I didnt like that looking back and because of that the logic now scans through the inventory until it finds an empty spot and puts the item in that empty slot. If the inventory is full no item can be picked up (except the boss item) and the player gets a message on their screen. They can then leave the item screen using ESC and the item is not removed and can be picked up later if you somehow make space in your inventory NEW IN-GAME BANNER Also pretty straightforward, i added a banner so the menu looks a little bit prettier :) BUG FIXES BOSS ROOM BUG Because of map and gamestates and me forgetting to implement a feature in the door collision checks, there was a bug when defeating the boss (the map stayed as it was, but had the usual visible map ‘#’ everywhere you hadnt already explored (you cant really explore much so there where many ‘#’ ’s around the map which was really ugly. The fix was to move a mapstate change from the function that is responsible for handling victory to the function handling doors BOSS BUG There was a bug after defeating the boss which resulted from the previous bug and its fix. Because i forgot an additional check in my door function when defeating the boss the boss would spawn again and overwrite your boss item. The boss also chased you (which normally doesnt happen) and you couldnt leave the room. The fix was just to add another condition to the if statement in the door function responsible for the boss room ENEMY REMOVAL BUG For some reason (i dont know how i made the bug happen), when defeating enemies the visible map lagged behind the normal map which resulted in defeated enemies appearing to still exist on the map for one iteration of the loop (pressing any button made them vanish). The fix was to add a call to the visible_map_init function after defeating enemies
LOG 25: FLEEING ENEMIES (CONTAINS MANY CHANGES), BOSS ITEM REFACTOR FLEEING ENEMIES Enemies (except the boss) now have the ability to run away if the enemy would get killed by the next attack. The chance for this to happen is 10% and when they run away, they gain 1 HP per step they take and return to chasing the enemy if their hp is back at half of their max HP. FLEEING REWORK Before adding this feature, fleeing was the same practically as winning (the return type of the fight was STATE_VICTORY), i changed that to the proper STATE _FLED. Also before when fleeing, if you fled and another enemy of another type collided with you, he had normal stats but the enemy before that also got his stats reset. The same went for enemies of the same type. When fleeing from enemy A from type A and then colliding with enemy B from type A, he would have the stats of enemy A. The fix for both was to make a 2D Array of all enemies and their types, so each individual enemy stores its stats, not the battle function. PLAYER POSITION STRUCT Previously the player had ~ 8 different position variables, which was pretty clunky if i wanted to transport the player position to another function. Because of that i put all player positions into a singular struct, so i could pass all the player positions at once if i needed to. ENEMY PURSUIT FUNCTION REWORK Because enemies have to run away instead of chasing i had to rework the pursuit function a bit so it could also work in a reverse way. I had to make the function branch between the two states which took a bit more work than originally anticipated because i had a bunch of wrong ideas for how the function should work. Overall the function implementation was essentially to just use the inverse vector of the normal vector for the direction function BOSS ITEM FUNCTION/ITEM FUNCTION REFACTOR Because previously the boss item detection function and the item detection were separate the code didnt feel clean at all (felt like a lazy implementation for me), so i made the item function work with the boss item which makes the item function overall more open for new item types (if i will add any more)
LOG 26: FINAL DEVLOG MAINLY BUG FIXES AND SOME MINOR CHANGES CHANGES Enemies previously scaled to strongly and beat you too hard after the boss fight. Also because it was hard to scale the opponents down i decided to make the hp of everyone higher (everything got stronger in theory, player has 100 starting hp, does 20 damage etc.) LATE ADDITIONS LICENSE I licensed the project under the MIT licesne because it seemed fitting BUILD FILE I added a build file for the repo so i could upload a release binary (ncurses is required tho) BUG FIXES HIGHSCORE BUG There was a bug with the highscore not being displayed when there was no highscore.txt file. I needed to change the handling of the fact that the open function returned NULL, because NULL either meant, no file was there or no file could be found which resulted in no file being created because the function exited when the open function returned NULL, the fix was pretty simple overall tho (just adding an extra if conditional to check) FULL INVENTORY BUG Previously when having a full inventory, you couldnt pick up new items, issue was when using items that state didnt reset so one full inventory meant no items anymore :( . The fix was just to reset the state after using items BOSS ITEM INVENTORY BUG I forgot to make the boss item return the correct state which resulted in the item sometimes not being put in the inventory. The fix was just to add return ENTER_LEGAL to the boss items if statement SET ROOM ISSUE Because of random rooms sometimes boss room dimensions where bigger than current room which resulted in bugs (see previous devlogs). My previous fix worked in theory but had more affinity for potential bugs so i changed the set room function from two static values to two values that get passed into the function
Ships:
A roguelike room crawler completely built in C! What is in it? Randomly generated rooms with a fog of war for you to explore Three different enemy types with scaling difficulty Boss fights with unique item drop RPG Style fighting An interactive inventory that can be used during battle A battle log that tracks everything that happens in battle Items, pickups and a persistent highscore What am I proud of? The enemy pursuit and fleeing system. It was somewhat hard to implement but I think it made the game wayyyy better than before. I’m also proud of how the state machine turned out in the end. The game has strict separations between the different game states and first handles what the player/the game did during the game loop iteration and then after that is done draws it to the screen. That state machine was very prone to bugs and I had to spend a bunch of time to fix (fallthrough bug, etc. all talked about in devlogs). But I think the result that turned out at the end was great and I am very content with it How is it built? As said its completely built in C using ncurses as its graphics library using 12 source files (currently) with each one having a specific task only it does. The build is released using GitHub workflows and the binary can easily be downloaded and used on (almost) all glibc linux distros (the project was compiled for Ubuntu and you will have to install ncurses though) What I learned The game was actually my first real coding project ever apart from a few simple websites so I learned a bunch. I learned how to separate state transitions, I learned the importance of good and bad switch statements, bounds checking (really rough path) and I think most importantly: The power of code separation and making every file do its designated task. I often caught myself picking the easy and sloppy path and then fixing it properly and in retrospect helped with preventing a bunch of bugs Known limitations / plans for the future It’s my first project, so there are likely still issues I haven’t found. Even though I tried to find everything (a.e. using Valgrind told me there are no memory blocks definitely lost) there are still potentially memory safety issues or potential segfaults. It’s possible some edge cases might have slipped through. I’ve tested the project thoroughly and haven’t found any crashes since the last few debugging sessions but I cannot safely say it’s perfect. I think if I will find the time I will maybe add some new features like new special item related enemies or player status effects though I cannot safely say if i can Closing word I think building a game for my first real project was the right decision for me because I really had a bunch of fun building this project. I currently have some ideas for unrelated new projects (one is up on my profile check it out (; ) and I think this project was a really good pathway into coding for me. Check the GitHub and the demo video out and I hope you like the project...
|
1793347046.9769483
|
1793433446.9769483
|
|
40471
|
Business website by @bentley_osullivan1 | Stardanc Business website by @bentley_osullivan1 | Stardance...
|
bentley_osullivan1
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Business website by @bentley_osullivan1 | S Title: Business website by @bentley_osullivan1 | Stardance...
|
1793347048.270221
|
1793951848.270221
|
|
18073
|
Fingerprint door lock by @sriyank | Stardance
|
sriyank
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Fingerprint door lock by @sriyank | Stardan Title: Fingerprint door lock by @sriyank | Stardance...
|
1793347049.2384176
|
1793951849.2384176
|
|
25754
|
Creator Launchpad by @NexBlade-Studios | Stardance
|
NexBlade-Studios
|
1
|
10.0
|
126
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-18T22:42:25Z", "hours": 10.0, "multiplier": 10.96, "payout": 126, "blessing": "neutral", "text": "This is Creator Launchpad, the platform that streamlines content creation, from video ideas to content creation. I created this app because content creation has grown so much in the past few years, and it can sometimes feel like it is too competitive. I though it would be cool to create a way to speed up parts of the process that aren’t necessarily the most fun, for example thumbnail creation. By picking a category, either generating an idea or writing your own, Creator Launchpad utilises Gemini API to create a customized thumbnail, save it to your personal gallery and then share it. I have already found myself just using the app to see how different thumbnail prompts would turn out, and it is quite cool to see ideas being turned into usable concepts.", "repo": "https://github.com/NexBlade-Studios/Creator-Launchpad", "demo": "https://github.com/NexBlade-Studios/Creator-Launchpad/releases/tag/v1.0.0"}]...
|
[{"post_id": 70261, "ts": "202 [{"post_id": 70261, "ts": "2026-09-18T20:29:56Z", "hours": 1.305, "text": "This is now the final stretch of the project before I ship!!! I have finished the gallery section of the app, and it enables users to save their generated thumbnails, manage and delete them. This means that if there’s a thumbnail that you want to keep, you can save it to your gallery instead of needing to share or export it. Also, the prompt used to generate the thumbnail is listed at the bottom so that you could use the prompt to generate the thumbnail again."}, {"post_id": 68290, "ts": "2026-09-14T21:15:35Z", "hours": 0.7803, "text": "I wanted to put a quick number of updates before shipping the project because it isn’t in a state that I am satisfied with yet. I have added dark mode support because I know that without it the app is very bright (it is practically a flashlight). I am now working on implementing a gallery system where thumbnails you have generated can be saved to the thumbnail gallery with the prompt attached. Currently you would have to share the thumbnail and then save it to your phone, so this makes it more convenient. I also added some more categories, hopefully this covers all the key areas of content creation now."}, {"post_id": 27583, "ts": "2026-07-13T09:17:01Z", "hours": 4.2972, "text": "#TESTERS NEEDED The project is now complete! Creators can now use Creator Launchpad for their content creation, being able to generate video ideas and thumbnails, all straight from the app. I want to put the project on Google Play, so I require at least 12 game testers before publishing. If you want to help with my project, please email me at [email protected]"}, {"post_id": 15844, "ts": "2026-06-25T19:18:43Z", "hours": 1.5361, "text": "I have now implemented Gemini using Supabase to my project, enabling a user to generate video ideas. I was originally using Firebase but turns out the Spark tier didn’t let me run functions direct from the command line. Anyway, now I aim to use Stable Diffusion or some other image generator to generate the thumbnails."}, {"post_id": 15615, "ts": "2026-06-25T12:17:04Z", "hours": 1.6783, "text": "I have decided to make an app for content creators, where you can input your next video idea (or even ask AI) and then get a fully generated thumbnail ready to use. Currently I have worked on the simple UI screens, with text input and category selection. There isn’t really anything interesting to show for the app so far. The next step is to integrate the AI. This project should be fully complete by the end of the day, and I will be releasing it on Google Play."}]...
|
Title: Creator Launchpad by @NexBlade-Studios | St Title: Creator Launchpad by @NexBlade-Studios | Stardance
Devlogs:
I have decided to make an app for content creators, where you can input your next video idea (or even ask AI) and then get a fully generated thumbnail ready to use. Currently I have worked on the simple UI screens, with text input and category selection. There isn’t really anything interesting to show for the app so far. The next step is to integrate the AI. This project should be fully complete by the end of the day, and I will be releasing it on Google Play.
I have now implemented Gemini using Supabase to my project, enabling a user to generate video ideas. I was originally using Firebase but turns out the Spark tier didn’t let me run functions direct from the command line. Anyway, now I aim to use Stable Diffusion or some other image generator to generate the thumbnails.
#TESTERS NEEDED The project is now complete! Creators can now use Creator Launchpad for their content creation, being able to generate video ideas and thumbnails, all straight from the app. I want to put the project on Google Play, so I require at least 12 game testers before publishing. If you want to help with my project, please email me at [email protected]
I wanted to put a quick number of updates before shipping the project because it isn’t in a state that I am satisfied with yet. I have added dark mode support because I know that without it the app is very bright (it is practically a flashlight). I am now working on implementing a gallery system where thumbnails you have generated can be saved to the thumbnail gallery with the prompt attached. Currently you would have to share the thumbnail and then save it to your phone, so this makes it more convenient. I also added some more categories, hopefully this covers all the key areas of content creation now.
This is now the final stretch of the project before I ship!!! I have finished the gallery section of the app, and it enables users to save their generated thumbnails, manage and delete them. This means that if there’s a thumbnail that you want to keep, you can save it to your gallery instead of needing to share or export it. Also, the prompt used to generate the thumbnail is listed at the bottom so that you could use the prompt to generate the thumbnail again.
Ships:
This is Creator Launchpad, the platform that streamlines content creation, from video ideas to content creation. I created this app because content creation has grown so much in the past few years, and it can sometimes feel like it is too competitive. I though it would be cool to create a way to speed up parts of the process that aren’t necessarily the most fun, for example thumbnail creation. By picking a category, either generating an idea or writing your own, Creator Launchpad utilises Gemini API to create a customized thumbnail, save it to your personal gallery and then share it. I have already found myself just using the app to see how different thumbnail prompts would turn out, and it is quite cool to see ideas being turned into usable concepts....
|
1793347050.1963928
|
1793433450.1963928
|
|
30634
|
skipline by @zeroaragamer | Stardance
|
zeroaragamer
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: skipline by @zeroaragamer | Stardance
|
1793347051.4247255
|
1793951851.4247255
|
|
52081
|
My own site! by @AE | Stardance
|
AE
|
1
|
6.0
|
7
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-26T20:09:26Z", "hours": 6.0, "multiplier": 1.28, "payout": 7, "blessing": "neutral", "text": "Este es mi pagina personal. Aunque tiene un diseño simple para mi no fue tan fácil hacerla porque soy muy mala diseñando, estuve cambiando , moviendo y agregando cosas constantemente. Siento que he avanzado un poco en mi habilidad de diseño y por eso quiero compartir este pequeño pero importante proyecto.", "repo": "https://github.com/MANDCHELLE/stardance", "demo": "https://mandchelle.github.io/stardance/"}]...
|
[{"post_id": 74139, "ts": "202 [{"post_id": 74139, "ts": "2026-09-26T19:03:42Z", "hours": 5.6372, "text": "El sitio web que construí es simple pero lo veo bonito. No soy buena diseñando por eso considero que esto es un gran avance ."}]...
|
Title: My own site! by @AE | Stardance
Devlogs:
E Title: My own site! by @AE | Stardance
Devlogs:
El sitio web que construí es simple pero lo veo bonito. No soy buena diseñando por eso considero que esto es un gran avance .
Ships:
Este es mi pagina personal. Aunque tiene un diseño simple para mi no fue tan fácil hacerla porque soy muy mala diseñando, estuve cambiando , moviendo y agregando cosas constantemente. Siento que he avanzado un poco en mi habilidad de diseño y por eso quiero compartir este pequeño pero importante proyecto....
|
1793347052.3384018
|
1793433452.3384018
|
|
72015
|
Overt by @RishitJain | Stardance
|
RishitJain
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Overt by @RishitJain | Stardance
|
1793350042.6841214
|
1793954842.6841214
|
|
72016
|
AVAPbot by @aadistech1 | Stardance
|
aadistech1
|
0
|
0.8
|
0
|
[]
|
[{"post_id": 84770, "ts": "202 [{"post_id": 84770, "ts": "2026-10-30T08:10:34Z", "hours": 0.8003, "text": "Devlog 1 — I worked on this bot on implementing certain simple fetures and loved the output ….Looking forward to expand it"}]...
|
Title: AVAPbot by @aadistech1 | Stardance
Devlogs Title: AVAPbot by @aadistech1 | Stardance
Devlogs:
Devlog 1 — I worked on this bot on implementing certain simple fetures and loved the output ….Looking forward to expand it...
|
1793350044.0997536
|
1793954844.0997536
|
|
72017
|
Frictionless by @notaherobut | Stardance
|
notaherobut
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Frictionless by @notaherobut | Stardance
|
1793350045.071347
|
1793954845.071347
|
|
8938
|
My first slack bot! by @Hilmi | Stardance
|
Hilmi
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My first slack bot! by @Hilmi | Stardance
|
1793350048.4918156
|
1793954848.4918156
|
|
57158
|
WarioWare Game by @Trion17fft | Stardance
|
Trion17fft
|
1
|
16.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-26T00:22:11Z", "hours": 16.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I made TheSpideyWare. The game has 3 differents Mini-games, with some secrets. You can play it on https://trion17fft.itch.io/thespideyware . Have fun!!", "repo": "https://github.com/Trion17fft/SpiderWareGame", "demo": "https://trion17fft.itch.io/thespideyware"}]...
|
[{"post_id": 73777, "ts": "202 [{"post_id": 73777, "ts": "2026-09-25T22:51:10Z", "hours": 1.3569, "text": "I finished my Minigames, but I want to add a shop. I add animation, zoom and some secrets"}, {"post_id": 69855, "ts": "2026-09-17T22:37:43Z", "hours": 0.5358, "text": "Death screen I finished my end screen and fixed a bunch of bugs."}, {"post_id": 69840, "ts": "2026-09-17T21:43:43Z", "hours": 13.8536, "text": "First #Devlog sorry ;) First of all, I created my start screen, then several games. The first one is about collecting all the webs, the goal of the second is to crush all the vilains, and the third is a maze that is still under construction. I have also create a win screen."}]...
|
Title: WarioWare Game by @Trion17fft | Stardance
Title: WarioWare Game by @Trion17fft | Stardance
Devlogs:
First #Devlog sorry ;) First of all, I created my start screen, then several games. The first one is about collecting all the webs, the goal of the second is to crush all the vilains, and the third is a maze that is still under construction. I have also create a win screen.
Death screen I finished my end screen and fixed a bunch of bugs.
I finished my Minigames, but I want to add a shop. I add animation, zoom and some secrets
Ships:
I made TheSpideyWare. The game has 3 differents Mini-games, with some secrets. You can play it on https://trion17fft.itch.io/thespideyware . Have fun!!...
|
1793350051.6748202
|
1793436451.6748202
|
|
30052
|
My first slack bot! by @sheep_boy17 | Stardance
|
sheep_boy17
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My first slack bot! by @sheep_boy17 | Stard Title: My first slack bot! by @sheep_boy17 | Stardance...
|
1793350052.8983676
|
1793954852.8983676
|
|
22368
|
My awesome macropad! by @MrBunnyh3 | Stardance
|
MrBunnyh3
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My awesome macropad! by @MrBunnyh3 | Starda Title: My awesome macropad! by @MrBunnyh3 | Stardance...
|
1793350053.8064485
|
1793954853.8064485
|
|
57162
|
Racer by @benny | Stardance
|
benny
|
1
|
7.0
|
47
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-20T01:28:36Z", "hours": 7.0, "multiplier": 6.37, "payout": 47, "blessing": "neutral", "text": "I made a car racing game that essentially was inspired by F1. The code based is done in python and then in order to deploy it onto the web I used something called pygbag. The entire point of the game is that you have to navigate through the course’s loops and turns in order to beat the computer car in a race. There are a variety of difficulty options for you to select, as well as a settings menu so that you can change your own speed and wall bounciness. I learned a lot about debugging during this process because as I was trying to deploy to to both local host and github pages there were many errors that prevented the game from loading in so I had to try to analyze all the console errors and correct them. I really love the game that I made and I feel like I’ve learned a lot from building this game. I hope you guys enjoy it as well!", "repo": "https://github.com/bangzishu-huang/Racer", "demo": "https://bangzishu-huang.github.io/Racer/"}]...
|
[{"post_id": 70720, "ts": "202 [{"post_id": 70720, "ts": "2026-09-19T17:29:11Z", "hours": 0.6328, "text": "The rest of the time spent on Racer was trying to get it deployed onto my localhost first through pygbag. It took a long time just trying to debug everything because pygbag deployment is harder than hosting python through python’s own application. I had to do a lot of async def through my functions in order to bypass some restrictions and have the game work. Also, I had to make the deploy.yml file in order for github to execute the workflow to deploy my page to github and the actual web."}, {"post_id": 70292, "ts": "2026-09-18T21:44:11Z", "hours": 3.2625, "text": "So throughout the 3 hours I worked on just heavily developing all aspects of the racing game. First I implemented different levels, more specifically 3 levels each with a different speed that the computer car would drive to. Then there is also a settings option where the user can adjust their own speed for their car and also the bouciness of the wall when hit. A lap counter and also a lap timer was added as a HUD at the top left of the screen when you are racing, and also I implemented basically a sort of countdown mechanism to start off each seperate game. The entire game is coming together and the next steps is trying to deploy it through the web with pygbag."}, {"post_id": 64239, "ts": "2026-09-08T14:27:33Z", "hours": 1.5697, "text": "I have been fixing the computer path tracing and adjusting it because a lot of times they go off the loop and cut corners of the race track. The red dots below (left image) show me trying to conduct coordinate testing for the path following of the computer car. Then, after the car path was working for the computer car, I went to make the end screens for when you win or lose in the game. I was also thinking of implementing varios different levels, which I might do in my next session."}, {"post_id": 62630, "ts": "2026-09-06T03:01:52Z", "hours": 1.4433, "text": "Now for the car game I started to add the opponent cars and was working on the components and trying to see how they would actually move. I was also trying to implement a click to move feature for the player car, as well as kind of reducing the bouce when hitting the side of the track."}, {"post_id": 60050, "ts": "2026-09-02T04:57:35Z", "hours": 0.4072, "text": "Today I started a new racing game and start to set up the base environment and the map for the game. This was relatively easy to set up and get started. There were just a some simple debugging in order to fix some few case sensitive errors. Tomorrow, I will probably start working on implementing the race car mechanism and the entire working game."}]...
|
Title: Racer by @benny | Stardance
Devlogs:
Today Title: Racer by @benny | Stardance
Devlogs:
Today I started a new racing game and start to set up the base environment and the map for the game. This was relatively easy to set up and get started. There were just a some simple debugging in order to fix some few case sensitive errors. Tomorrow, I will probably start working on implementing the race car mechanism and the entire working game.
Now for the car game I started to add the opponent cars and was working on the components and trying to see how they would actually move. I was also trying to implement a click to move feature for the player car, as well as kind of reducing the bouce when hitting the side of the track.
I have been fixing the computer path tracing and adjusting it because a lot of times they go off the loop and cut corners of the race track. The red dots below (left image) show me trying to conduct coordinate testing for the path following of the computer car. Then, after the car path was working for the computer car, I went to make the end screens for when you win or lose in the game. I was also thinking of implementing varios different levels, which I might do in my next session.
So throughout the 3 hours I worked on just heavily developing all aspects of the racing game. First I implemented different levels, more specifically 3 levels each with a different speed that the computer car would drive to. Then there is also a settings option where the user can adjust their own speed for their car and also the bouciness of the wall when hit. A lap counter and also a lap timer was added as a HUD at the top left of the screen when you are racing, and also I implemented basically a sort of countdown mechanism to start off each seperate game. The entire game is coming together and the next steps is trying to deploy it through the web with pygbag.
The rest of the time spent on Racer was trying to get it deployed onto my localhost first through pygbag. It took a long time just trying to debug everything because pygbag deployment is harder than hosting python through python’s own application. I had to do a lot of async def through my functions in order to bypass some restrictions and have the game work. Also, I had to make the deploy.yml file in order for github to execute the workflow to deploy my page to github and the actual web.
Ships:
I made a car racing game that essentially was inspired by F1. The code based is done in python and then in order to deploy it onto the web I used something called pygbag. The entire point of the game is that you have to navigate through the course’s loops and turns in order to beat the computer car in a race. There are a variety of difficulty options for you to select, as well as a settings menu so that you can change your own speed and wall bounciness. I learned a lot about debugging during this process because as I was trying to deploy to to both local host and github pages there were many errors that prevented the game from loading in so I had to try to analyze all the console errors and correct them. I really love the game that I made and I feel like I’ve learned a lot from building this game. I hope you guys enjoy it as well!...
|
1793350055.2556627
|
1793436455.2556627
|
|
4587
|
My first slack bot! by @nishukumari25 | Stardance
|
nishukumari25
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My first slack bot! by @nishukumari25 | Sta Title: My first slack bot! by @nishukumari25 | Stardance...
|
1793350057.683133
|
1793954857.683133
|
|
57165
|
Mysite by @AlextheGr3at | Stardance
|
AlextheGr3at
|
1
|
1.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-20T15:45:39Z", "hours": 1.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I made my first real website. It wasn’t that challenging. I have a navbar with links that don’t show underlines, an about me section, and a section with a list of my current projects. I also have a footer with social links, so you can follow me, should you want to :)", "repo": "https://github.com/Longing-Ingernot/Mysite", "demo": "https://longing-ingernot.github.io/Mysite/"}]...
|
[{"post_id": 71268, "ts": "202 [{"post_id": 71268, "ts": "2026-09-20T15:33:58Z", "hours": 0.4431, "text": "Devlog #2 Made the navbar links black with no underline, added a footer with socials so you can follow me :), added two more projects I’m actively working on."}, {"post_id": 71032, "ts": "2026-09-20T07:21:58Z", "hours": 0.8319, "text": "Made the structure and almost all content of the website. Added a navbar"}]...
|
Title: Mysite by @AlextheGr3at | Stardance
Devlog Title: Mysite by @AlextheGr3at | Stardance
Devlogs:
Made the structure and almost all content of the website. Added a navbar
Devlog #2 Made the navbar links black with no underline, added a footer with socials so you can follow me :), added two more projects I’m actively working on.
Ships:
I made my first real website. It wasn’t that challenging. I have a navbar with links that don’t show underlines, an about me section, and a section with a list of my current projects. I also have a footer with social links, so you can follow me, should you want to :)...
|
1793350061.7503479
|
1793436461.7503479
|
|
55751
|
Untitled project by @haninaza | Stardance
|
haninaza
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Untitled project by @haninaza | Stardance
|
1793350062.9127336
|
1793954862.9127336
|
|
57199
|
Crowbit by @Gizzi | Stardance
|
Gizzi
|
1
|
43.19
|
81
|
[{"ship_num": 1, "ts": "2026-1 [{"ship_num": 1, "ts": "2026-10-03T20:33:22Z", "hours": 35.0, "multiplier": 2.31, "payout": 81, "blessing": "neutral", "text": "to whom it may CAWcern, this is my silly little social media app that is missing an entire backend. however I spent a considerable amount of hours just designing and making the UI for it and I’m still working on improving it but for now, I like what I have come up with and I’ll likely add a few more things before I start work on the backend also since there’s no backend, just go to /home because the login/signup screen doesn’t actually do anything yet. do let me know what you like and don’t like about the ui design, it’s essentially supposed to be a twitter + reddit + discord thing.", "repo": "https://github.com/Crowbit-dev/Crowbit", "demo": "https://crowbit.vercel.app/"}]...
|
[{"post_id": 77547, "ts": "202 [{"post_id": 77547, "ts": "2026-10-07T12:21:32Z", "hours": 1.0125, "text": "and on the 43rd hour, god said: “let there be profiles” and there was profiles… also some other ui fixes like centering the text inside the notification badge. what comes next is probably the backend now and maybe some other ui changes along the way. I made a todo list on the readme with everything i can remember that needs to be put on it, so i’ll probably end up adding other stuff to the readme again as i go and remember what else i wanted to make"}, {"post_id": 77332, "ts": "2026-10-06T15:46:56Z", "hours": 7.1811, "text": "I made some minor ui changes + added a help center and a wip profiles page, but most of the work went into refactoring the code, I split alot of the code into different files and changed the way url paths are handled"}, {"post_id": 76523, "ts": "2026-10-03T20:12:53Z", "hours": 6.9214, "text": "finished settings ui, this marks most of the ui design done except for a few things that aren’t added yet"}, {"post_id": 75912, "ts": "2026-10-01T16:11:05Z", "hours": 4.6442, "text": "woo new cool stuff searching ui and whatever, i’m close to my first ship which will likely just be a standalone frontend and mvp for ui. not really much backend work yet"}, {"post_id": 75281, "ts": "2026-09-29T17:05:04Z", "hours": 3.6833, "text": "made proper notifications ui + a somewhat acceptable ui for communities chat"}, {"post_id": 74578, "ts": "2026-09-27T17:37:13Z", "hours": 10.3875, "text": "changed up the way dms look + added comments to the feed… gulp…"}, {"post_id": 69818, "ts": "2026-09-17T20:48:37Z", "hours": 6.8364, "text": "changed the ui big time"}, {"post_id": 61050, "ts": "2026-09-03T19:19:50Z", "hours": 1.5347, "text": "really early design of the home page, not a super big fan of it atm so i might make more changes"}, {"post_id": 59889, "ts": "2026-09-01T21:33:53Z", "hours": 0.9419, "text": "i added some cool crow graphics to my auth pages"}, {"post_id": 59699, "ts": "2026-09-01T16:56:06Z", "hours": 0.2992, "text": "barebones signup page… good things to come mayhaps 😰😰"}]...
|
Title: Crowbit by @Gizzi | Stardance
Devlogs:
bar Title: Crowbit by @Gizzi | Stardance
Devlogs:
barebones signup page… good things to come mayhaps 😰😰
i added some cool crow graphics to my auth pages
really early design of the home page, not a super big fan of it atm so i might make more changes
changed the ui big time
changed up the way dms look + added comments to the feed… gulp…
made proper notifications ui + a somewhat acceptable ui for communities chat
woo new cool stuff searching ui and whatever, i’m close to my first ship which will likely just be a standalone frontend and mvp for ui. not really much backend work yet
finished settings ui, this marks most of the ui design done except for a few things that aren’t added yet
I made some minor ui changes + added a help center and a wip profiles page, but most of the work went into refactoring the code, I split alot of the code into different files and changed the way url paths are handled
and on the 43rd hour, god said: “let there be profiles” and there was profiles… also some other ui fixes like centering the text inside the notification badge. what comes next is probably the backend now and maybe some other ui changes along the way. I made a todo list on the readme with everything i can remember that needs to be put on it, so i’ll probably end up adding other stuff to the readme again as i go and remember what else i wanted to make
Ships:
to whom it may CAWcern, this is my silly little social media app that is missing an entire backend. however I spent a considerable amount of hours just designing and making the UI for it and I’m still working on improving it but for now, I like what I have come up with and I’ll likely add a few more things before I start work on the backend also since there’s no backend, just go to /home because the login/signup screen doesn’t actually do anything yet. do let me know what you like and don’t like about the ui design, it’s essentially supposed to be a twitter + reddit + discord thing....
|
1793350063.8451083
|
1793436463.8451083
|
|
55752
|
Untitled project by @arpitp | Stardance
|
arpitp
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Untitled project by @arpitp | Stardance
|
1793350065.105186
|
1793954865.105186
|
|
55753
|
speaking hands by @elrefaee | Stardance
|
elrefaee
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: speaking hands by @elrefaee | Stardance
|
1793350066.0221024
|
1793954866.0221024
|
|
7854
|
CometOS by @Aradhana | Stardance
|
Aradhana
|
1
|
39.23
|
48
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-22T11:27:56Z", "hours": 31.0, "multiplier": 1.71, "payout": 48, "blessing": "neutral", "text": "I built a WebOS that was designed to explore a character - the Sorceress Comet, a student at the Arx Nubium - and her fictional world of Alarica. As people use it, they find out more about Comet’s world, thoughts and family. It has a notebook app (where you can write your thoughts), a family tree app (to see a bit more of what Comet’s life is like) and comes with added functionality for the users - a date and time display, and battery meter. Now, the project is finally SHIPPED!", "repo": "https://github.com/dragonloversod051-max/CometOS", "demo": "https://dragonloversod051-max.github.io/CometOS/"}]...
|
[{"post_id": 79292, "ts": "202 [{"post_id": 79292, "ts": "2026-10-13T11:03:42Z", "hours": 8.2306, "text": "Devlog #8 Ok, so this is the FIRST devlog after the ship. Not really happy about how the ship went but oh well. Anyway, so, I added stuff: A Settings App Upgrades to the UI Worked on a sort of dictionary for all the new stuff that I’m introducing (after all, it is CometOS) The Settings App: Ok, so one of the major themes in the feedback I got was there needed to be more apps (since its an OS). So, I added a settings app, as just a basic, customization app. So, you can change the background image, and there’s a bit of design choices as well. I kept it so you need to scroll down to see all the images (some people won’t agree with this, but personally, I really like it. The scrolling feels more interactive and is required for a window size that looks really, really good). Also, the borders of the buttons turn blue when selected, and there obviously also a shadow indication that its a button when you hover over it. UI changes: So this was actually pretty small but looked really cool. I’ve seen on some sites there are just these little elements that blur the background behind them. While I was tinkering with css for the button shading I realized there was a style of filter: blur() . From there I found out about backdrop-filter: blur() and used that in the CometOS welcome window and the top and bottom bars. The dictionary app (name needs workshopping) So this is basically just because CometOS is about a fictional character in a fantasy world, so there needed to be an app that dealt with some words and terms used in other partts of the website (specifically the family tree). I felt there needed to be something to explain it, so, I added this. Its not done, so far I’m just done with one of the Relseiðr pages. Currently this is just hidden with display: none so I can work on functionality first. Challenges: There were really only a few challenges this time. The largest one was actually just getting the seperate visual cues which go ( oh, this is interactive! ) for the button and the image inside. Because I kept accidentally giving the button’s new classList to the image. And thats when I realized event.target and event.currentTarget were different and made for this….. On a side note, omg, display: inline-flex is so helpful! What I’ll work on next: I have now realized that since I’m adding so many apps, I need to add proper, adaptive view bounds. Before this I was using local pixel-specific bounds which were adapted to my viewport, and just not putting it on github, because I had already put in the work for those view bounds a few months ago, and it worked really well for me. So, anyway, I have now decided I need proper view bounds, so definitely going to work on that. Also, heres the new Settings app, and the beginning of the dictionary app."}, {"post_id": 71729, "ts": "2026-09-21T12:19:13Z", "hours": 2.21, "text": "Devlog #7 So, I thought it was ready to be shipped, but it wasn’t. In the final checks, I found out that because I had used pixel - specific drag bounds , while it worked perfectly on my laptop, it didn’t on anyone else’s (since other devices have different viewports, different areas. Some have longer lengths or widths than others, leading drag bounds to potentially be in the middle of the screen). I tinkered with it for a while (enlisting a bit of AI help) , but then realized that there was something about the new code that was messing up the notebook app (the sidebar stuck to the edge of the viewport). And, since there was about only one week left (and exams are starting soon), I decided to not accidentally mess up anything else, and so, deleted the drag bounds - I mean, better to be able to drag windows anywhere than have bounds that completely restrict it, right? - The good part is that even if the window goes out of the viewport somehow, you can just reload the screen to get it all back, which has no real downside since notes autosave. So anyway, now, we are actually , finally ready to ship ! This was what was happening to the notebook app btw"}, {"post_id": 43179, "ts": "2026-08-08T09:26:22Z", "hours": 3.4597, "text": "Devlog #6 We are FINALLY DONE and ready for the FIRST SHIP! Here’s whats new: Added information bubbles for each and every character in the family tree, which can be easily opened and closed. Fixed the selection for icons in the bottom bar: The green highlighted background would also highlight the areas where there were padding which we didn’t want because the icons would then be off center. Fixed this by adding a new transparent div in the middle, so padding is no longer required. Challenges: Fixing the icon selection bug. I played around with box-size for a bit but then chose to just add a transparent div between icons. Getting the information window to move along with the family tree window (as that is draggable). After a lot of testing, I realized I could just keep it inside the div but in positioning, its overflowing, so with an overflow: auto tag, it’s now set up and working! This is a screenshot of how the info bubble would break because it wasn’t in the same div:"}, {"post_id": 38671, "ts": "2026-08-01T05:38:48Z", "hours": 5.8169, "text": "Devlog #5 Ok, so, update: Created the family tree Improved feel of the app (through a visual sign when you hover over a character button) Fully initialized the window for the family tree app (made it closable, draggable, opens with an icon, added drag bounds). Challenges: The family tree image kept going above the icons used to drag and close the window. I put them in a different and experimented with different ways for SOOOO long - turned out I was just missing a position: absolute tag…. There was also a small bug where the buttons would go under the image instead of on it. Here are some pictures of the bugs, since it’s pretty hard to explain:"}, {"post_id": 34516, "ts": "2026-07-25T09:34:28Z", "hours": 0.6922, "text": "Devlog #4 I’ve started the next app - an interactive family tree. Since CometOS is based around Comet, I figured I should add a family tree. So this app is going to have clickable buttons for each member of the family, to give some info. Basically, its a massive lore drop. Here’s the wireframe for the app, and also an entire page I spent planning it because I ran into a few problems…"}, {"post_id": 31185, "ts": "2026-07-19T11:57:03Z", "hours": 12.5381, "text": "Devlog #3 What’s new: Added a bottom bar to store content selection options Added a notes app which is editable (and stored in javascript)-you can add your own notes. Added a save feature to the notes app-log back in anytime and the note is still there. YOU WOULD NOT BELIEVE HOW LONG THIS TOOK ( but, I learned how to save things in localStorage ). Fixed a bug where was at the bottom of the and the .js file and .css file weren’t loading in the live server. Fixed the bug where you lose the handle and the window gets stuck at the top/bottom of the page by making it so you can click through the top and bottom bar. Challenges: I spent a whole afternoon trying to come up with a clever way to avoid putting html in my .js file (because it looked messy), only to end up putting it in my .js file….. MOVING ON, There was some really weird stuff happening with saving notes. Like, I would write stuff, and it would be saved, but in different ’s? So only one was actually editable and the rest were all floating under it. Started to debug in a live server instead of as a file. The html and css files weren’t loading in. I spent so long trying to figure out why, and then realized that should be at the top of the body, not at the bottom ( You know, like an actual head. Wow, thats pretty self-explanatory ). So then, I fixed that and to check if it was working or not, made the background hot pink in css.( AND IT WORKED! And I will never be able to forget that image ). What’s next: Ok, so next, I still have to finish a few things. Make it so that you can’t drag windows past a certain limit (to prevent the background image scrolling and multiplying - learned how to clamp draggable elements to the viewport!). START STEP 5! So since this entire webOS is based around a fictional character-Comet, I think I’ll make an interactive family tree. So, each person has buttons and that leads you to a brief description about them ( and lore. LOTS of lore ). This is how the webOS looked in the test. I’m still not sure how the top bar also turned light pink, but, cool I guess"}, {"post_id": 15523, "ts": "2026-06-25T06:48:06Z", "hours": 1.6658, "text": "Devlog#2 Done with step 3. So now I can open, close and move around the welcome screen window. The cross acts as the close button, and you click and drag the hand part of the window to move it around. So I’ve updated the CometOS text in the top bar to open this window - hence it looks a lot more like a button. I think for the next windows and apps I’m going to make the open button in a side bar. And I finally figured out what classes are! So yeah, for now thats it, but I think by the end of step 4 its going to be a massive update with a lot more things."}, {"post_id": 13644, "ts": "2026-06-22T11:56:42Z", "hours": 4.2733, "text": "Devlog #1 So this is CometOS which is from the mission WebOS 1. It revolves around a fictional character - the Sorceress (in-training) Comet, set in the fictional world of Alarica. So far I’ve finished uptil step 2. So the top bar can track time, and also battery levels and gives custom messages based on the battery. Right now that’s pretty much it but I can’t wait to expand the project and develop the world and everything."}]...
|
Title: CometOS by @Aradhana | Stardance
Devlogs:
Title: CometOS by @Aradhana | Stardance
Devlogs:
Devlog #1 So this is CometOS which is from the mission WebOS 1. It revolves around a fictional character - the Sorceress (in-training) Comet, set in the fictional world of Alarica. So far I’ve finished uptil step 2. So the top bar can track time, and also battery levels and gives custom messages based on the battery. Right now that’s pretty much it but I can’t wait to expand the project and develop the world and everything.
Devlog#2 Done with step 3. So now I can open, close and move around the welcome screen window. The cross acts as the close button, and you click and drag the hand part of the window to move it around. So I’ve updated the CometOS text in the top bar to open this window - hence it looks a lot more like a button. I think for the next windows and apps I’m going to make the open button in a side bar. And I finally figured out what classes are! So yeah, for now thats it, but I think by the end of step 4 its going to be a massive update with a lot more things.
Devlog #3 What’s new: Added a bottom bar to store content selection options Added a notes app which is editable (and stored in javascript)-you can add your own notes. Added a save feature to the notes app-log back in anytime and the note is still there. YOU WOULD NOT BELIEVE HOW LONG THIS TOOK ( but, I learned how to save things in localStorage ). Fixed a bug where was at the bottom of the and the .js file and .css file weren’t loading in the live server. Fixed the bug where you lose the handle and the window gets stuck at the top/bottom of the page by making it so you can click through the top and bottom bar. Challenges: I spent a whole afternoon trying to come up with a clever way to avoid putting html in my .js file (because it looked messy), only to end up putting it in my .js file….. MOVING ON, There was some really weird stuff happening with saving notes. Like, I would write stuff, and it would be saved, but in different ’s? So only one was actually editable and the rest were all floating under it. Started to debug in a live server instead of as a file. The html and css files weren’t loading in. I spent so long trying to figure out why, and then realized that should be at the top of the body, not at the bottom ( You know, like an actual head. Wow, thats pretty self-explanatory ). So then, I fixed that and to check if it was working or not, made the background hot pink in css.( AND IT WORKED! And I will never be able to forget that image ). What’s next: Ok, so next, I still have to finish a few things. Make it so that you can’t drag windows past a certain limit (to prevent the background image scrolling and multiplying - learned how to clamp draggable elements to the viewport!). START STEP 5! So since this entire webOS is based around a fictional character-Comet, I think I’ll make an interactive family tree. So, each person has buttons and that leads you to a brief description about them ( and lore. LOTS of lore ). This is how the webOS looked in the test. I’m still not sure how the top bar also turned light pink, but, cool I guess
Devlog #4 I’ve started the next app - an interactive family tree. Since CometOS is based around Comet, I figured I should add a family tree. So this app is going to have clickable buttons for each member of the family, to give some info. Basically, its a massive lore drop. Here’s the wireframe for the app, and also an entire page I spent planning it because I ran into a few problems…
Devlog #5 Ok, so, update: Created the family tree Improved feel of the app (through a visual sign when you hover over a character button) Fully initialized the window for the family tree app (made it closable, draggable, opens with an icon, added drag bounds). Challenges: The family tree image kept going above the icons used to drag and close the window. I put them in a different and experimented with different ways for SOOOO long - turned out I was just missing a position: absolute tag…. There was also a small bug where the buttons would go under the image instead of on it. Here are some pictures of the bugs, since it’s pretty hard to explain:
Devlog #6 We are FINALLY DONE and ready for the FIRST SHIP! Here’s whats new: Added information bubbles for each and every character in the family tree, which can be easily opened and closed. Fixed the selection for icons in the bottom bar: The green highlighted background would also highlight the areas where there were padding which we didn’t want because the icons would then be off center. Fixed this by adding a new transparent div in the middle, so padding is no longer required. Challenges: Fixing the icon selection bug. I played around with box-size for a bit but then chose to just add a transparent div between icons. Getting the information window to move along with the family tree window (as that is draggable). After a lot of testing, I realized I could just keep it inside the div but in positioning, its overflowing, so with an overflow: auto tag, it’s now set up and working! This is a screenshot of how the info bubble would break because it wasn’t in the same div:
Devlog #7 So, I thought it was ready to be shipped, but it wasn’t. In the final checks, I found out that because I had used pixel - specific drag bounds , while it worked perfectly on my laptop, it didn’t on anyone else’s (since other devices have different viewports, different areas. Some have longer lengths or widths than others, leading drag bounds to potentially be in the middle of the screen). I tinkered with it for a while (enlisting a bit of AI help) , but then realized that there was something about the new code that was messing up the notebook app (the sidebar stuck to the edge of the viewport). And, since there was about only one week left (and exams are starting soon), I decided to not accidentally mess up anything else, and so, deleted the drag bounds - I mean, better to be able to drag windows anywhere than have bounds that completely restrict it, right? - The good part is that even if the window goes out of the viewport somehow, you can just reload the screen to get it all back, which has no real downside since notes autosave. So anyway, now, we are actually , finally ready to ship ! This was what was happening to the notebook app btw
Devlog #8 Ok, so this is the FIRST devlog after the ship. Not really happy about how the ship went but oh well. Anyway, so, I added stuff: A Settings App Upgrades to the UI Worked on a sort of dictionary for all the new stuff that I’m introducing (after all, it is CometOS) The Settings App: Ok, so one of the major themes in the feedback I got was there needed to be more apps (since its an OS). So, I added a settings app, as just a basic, customization app. So, you can change the background image, and there’s a bit of design choices as well. I kept it so you need to scroll down to see all the images (some people won’t agree with this, but personally, I really like it. The scrolling feels more interactive and is required for a window size that looks really, really good). Also, the borders of the buttons turn blue when selected, and there obviously also a shadow indication that its a button when you hover over it. UI changes: So this was actually pretty small but looked really cool. I’ve seen on some sites there are just these little elements that blur the background behind them. While I was tinkering with css for the button shading I realized there was a style of filter: blur() . From there I found out about backdrop-filter: blur() and used that in the CometOS welcome window and the top and bottom bars. The dictionary app (name needs workshopping) So this is basically just because CometOS is about a fictional character in a fantasy world, so there needed to be an app that dealt with some words and terms used in other partts of the website (specifically the family tree). I felt there needed to be something to explain it, so, I added this. Its not done, so far I’m just done with one of the Relseiðr pages. Currently this is just hidden with display: none so I can work on functionality first. Challenges: There were really only a few challenges this time. The largest one was actually just getting the seperate visual cues which go ( oh, this is interactive! ) for the button and the image inside. Because I kept accidentally giving the button’s new classList to the image. And thats when I realized event.target and event.currentTarget were different and made for this….. On a side note, omg, display: inline-flex is so helpful! What I’ll work on next: I have now realized that since I’m adding so many apps, I need to add proper, adaptive view bounds. Before this I was using local pixel-specific bounds which were adapted to my viewport, and just not putting it on github, because I had already put in the work for those view bounds a few months ago, and it worked really well for me. So, anyway, I have now decided I need proper view bounds, so definitely going to work on that. Also, heres the new Settings app, and the beginning of the dictionary app.
Ships:
I built a WebOS that was designed to explore a character - the Sorceress Comet, a student at the Arx Nubium - and her fictional world of Alarica. As people use it, they find out more about Comet’s world, thoughts and family. It has a notebook app (where you can write your thoughts), a family tree app (to see a bit more of what Comet’s life is like) and comes with added functionality for the users - a date and time display, and battery meter. Now, the project is finally SHIPPED!...
|
1793350066.930502
|
1793436466.930502
|
|
55755
|
Frictionless by @kayal | Stardance
|
kayal
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Frictionless by @kayal | Stardance
|
1793350068.1834579
|
1793954868.1834579
|
|
52109
|
kenpadV1 by @keni67 | Stardance
|
keni67
|
1
|
2.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-14T15:48:23Z", "hours": 2.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I’ve made a hackpad with 6 keys and 1 rotary encoder. The hardest part was building a case but I do think there are still some mistakes. I’m very happy that I was able learn and make this hackpad though it took plenty of time", "repo": "https://github.com/keni769/kenpadV1", "demo": ""}]...
|
[{"post_id": 67023, "ts": "202 [{"post_id": 67023, "ts": "2026-09-13T02:03:46Z", "hours": 1.9961, "text": "Tried out qmk and finished firmware. Took alot of time (many warnings and errors)"}, {"post_id": 62506, "ts": "2026-09-05T22:11:54Z", "hours": 1.2669, "text": "Took me alot of time on how to make a case, I think I took an easy way out but it looks good"}, {"post_id": 56407, "ts": "2026-08-28T05:12:42Z", "hours": 0.8339, "text": "Finished Pcb"}, {"post_id": 53515, "ts": "2026-08-24T03:03:17Z", "hours": 0.3333, "text": "I’m planning to build a 2x3 macropad with a rotary encoder. Built the schematic for it"}]...
|
Title: kenpadV1 by @keni67 | Stardance
Devlogs:
I Title: kenpadV1 by @keni67 | Stardance
Devlogs:
I’m planning to build a 2x3 macropad with a rotary encoder. Built the schematic for it
Finished Pcb
Took me alot of time on how to make a case, I think I took an easy way out but it looks good
Tried out qmk and finished firmware. Took alot of time (many warnings and errors)
Ships:
I’ve made a hackpad with 6 keys and 1 rotary encoder. The hardest part was building a case but I do think there are still some mistakes. I’m very happy that I was able learn and make this hackpad though it took plenty of time...
|
1793350069.1067576
|
1793436469.1067576
|
|
55756
|
demon slayer by @v3n5590 | Stardance
|
v3n5590
|
0
|
19.46
|
0
|
[]
|
[{"post_id": 81236, "ts": "202 [{"post_id": 81236, "ts": "2026-10-20T12:11:38Z", "hours": 0.8269, "text": "muichro page done"}, {"post_id": 81185, "ts": "2026-10-20T07:04:03Z", "hours": 1.0678, "text": "hashira page done"}, {"post_id": 80104, "ts": "2026-10-16T07:27:02Z", "hours": 1.4686, "text": "rengoku page doneee"}, {"post_id": 73690, "ts": "2026-09-25T18:14:47Z", "hours": 0.6964, "text": "done nezuko page"}, {"post_id": 72868, "ts": "2026-09-23T21:56:34Z", "hours": 2.3903, "text": "working on nezuko page cause i forgot some characters done some css pages duhh😭😭😭😭"}, {"post_id": 72131, "ts": "2026-09-22T07:56:40Z", "hours": 0.8083, "text": "akaza page is done gone for 2 min to feed my cat"}, {"post_id": 71907, "ts": "2026-09-21T19:04:30Z", "hours": 0.7094, "text": "working on some pages"}, {"post_id": 71886, "ts": "2026-09-21T18:12:14Z", "hours": 1.1517, "text": "done demon page bruhhhhh😫😫😫😫😫😫😫😫"}, {"post_id": 71814, "ts": "2026-09-21T16:23:17Z", "hours": 0.8333, "text": "done douma page"}, {"post_id": 71673, "ts": "2026-09-21T08:58:20Z", "hours": 0.9708, "text": "completed entry page and enmu page total 2 pages"}, {"post_id": 71654, "ts": "2026-09-21T07:49:46Z", "hours": 1.8494, "text": "working on genya complete"}, {"post_id": 66459, "ts": "2026-09-12T09:33:31Z", "hours": 1.0531, "text": "sanemi sub page"}, {"post_id": 59092, "ts": "2026-08-31T18:28:09Z", "hours": 0.9992, "text": "completed a page"}, {"post_id": 58331, "ts": "2026-08-30T18:28:20Z", "hours": 0.8597, "text": "completed swords page"}, {"post_id": 58229, "ts": "2026-08-30T16:14:13Z", "hours": 0.8333, "text": "page about tanjiro has been completed"}, {"post_id": 57504, "ts": "2026-08-29T17:50:36Z", "hours": 0.8175, "text": "5th page done"}, {"post_id": 57454, "ts": "2026-08-29T16:31:26Z", "hours": 1.6061, "text": "after searching for the content created third page"}, {"post_id": 57346, "ts": "2026-08-29T13:55:00Z", "hours": 0.5147, "text": "created two pages about.html and index.html"}]...
|
Title: demon slayer by @v3n5590 | Stardance
Devlo Title: demon slayer by @v3n5590 | Stardance
Devlogs:
created two pages about.html and index.html
after searching for the content created third page
5th page done
page about tanjiro has been completed
completed swords page
completed a page
sanemi sub page
working on genya complete
completed entry page and enmu page total 2 pages
done douma page
done demon page bruhhhhh😫😫😫😫😫😫😫😫
working on some pages
akaza page is done gone for 2 min to feed my cat
working on nezuko page cause i forgot some characters done some css pages duhh😭😭😭😭
done nezuko page
rengoku page doneee
hashira page done
muichro page done...
|
1793350070.3142157
|
1793954870.3142157
|
|
14739
|
My very own WebOS by @pravaltej | Stardance
|
pravaltej
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My very own WebOS by @pravaltej | Stardance
|
1793350071.5377662
|
1793954871.5377662
|
|
4249
|
M by @tinap | Stardance
|
tinap
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: M by @tinap | Stardance
|
1793350072.7739654
|
1793954872.7739654
|
|
57204
|
PERFECT DAYY by @aliya | Stardance
|
aliya
|
1
|
4.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-18T21:19:19Z", "hours": 4.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "ABOUT: ✨ It’s a website which is supposed to help you be more productive. You have three tasks. The more tasks you complete, the sun rises, helping the dillagers (ducks+villagers = dillagers, cuz the ducks are villagers) come out of their home and work for their families and bring them food. But if you keep stalling the tasks… they’ll go hungry.. and have nothing to feed their family… You want that? THEN QUIT WHINING AND GET TO WORK SUSAN! (Apologies to the Susans out in the world.) WHAT I LEARNT: 🤩🤩🤩 Lots of css properties and javascript (I’m a total newbie; I started in July) and to for the love of god — RECHECK YOUR CODE. PROBLEMS 😰😰 AND SOLUTIONS: 🥳🥳 I used html, a lot of css and some java. I had issues in pixelating the background and creating these shapes (still trying to get a hang of the pixelated thing.) I also kept having an error while building the notepad, it would either not show up or wouldn’t align with the animation. I realized I was using some wrong css properties and kept mixing stuff up. I also accidentally kept duplicating the amount of ducks lol but it was solved by just revisiting your code again at different times.", "repo": "https://github.com/aliya-8411/Perfect-Day-website", "demo": "https://aliya-8411.github.io/Perfect-Day-website/"}]...
|
[{"post_id": 69742, "ts": "202 [{"post_id": 69742, "ts": "2026-09-17T18:10:21Z", "hours": 1.1392, "text": "Hi, I’m alive. What a surprise, huh?” So my guess is you might be wondering where I was all these days. So lemme just tell you which hell I was damned to. So basically we went to our grandmas house for a lil while. It’s not in the city its more in the country side and there are jackals in those fields. Me and my cousin were wandering and we saw a puppy. Or what we thought was a puppy , I tried to pet it and then we hear : ” WWEEEAAAOOO WEEAAOOO” And those who don’t know jackals have this eery cry like thing its creepy as hell and then the puppy starts bakring like CRAZY , i could see the ishowspeed in him, parents need to monitor what their child is watching. AND THEN THE JACKALS STARTED COMING TOWARDS AND WE STARTED RUNNING BUT THE BACKDOOR (the one towards the fields and we came from) WAS LOCKED AND WE STARTED SCREAMING AND CRYING AND THEN MY GRANDMA CAME OUT WITH A SHOTGUN AND- nothing like that happened. I never went to my grandmas house, there aren’t even jackals there. It is in the country side tho. I was just lazy. :| uhh yeahh so umm BUT I completed the project! Woo hoo yeahhh (crickets) The secret suprise was ducks. Duck-villagers. Dillagers if I may. Or Duckagers? One tiny duck kept being a nuisance and wasn’t adjusting accordingly to the size but it eventually did. I added a “$2+” msg when u complete the second task so the ducks get an earning and when you complete all your tasks the ducks start a lil dance :) Go see it."}, {"post_id": 60355, "ts": "2026-09-02T17:21:23Z", "hours": 0.4361, "text": "DEVLOG 2: Wassup guysss I didn’t do much today. and i’m not gonna tell it yet either XD HOWEVER, keep in mind that it involves ducks. And I haven’t committed changes yet either so don’t bother :P But thats not it , I’m not sure if this is to early to say cuz I only have four followers in total but still, seeing these replies and people engaging with my devlogs really makes me happy, esp since I’m having some rough days cuz I just found out my ‘friends’ turned out to be faker than those no borax, no activator, no glue slime videos (ifykyk). But ya’ll GENUINELY making me smile. So thanks. Alot. (Me rn:)"}, {"post_id": 59718, "ts": "2026-09-01T17:21:10Z", "hours": 1.99, "text": "DEVLOG 1: Although the event is over, I still thought I’d make some cool changes. Today I adjusted the position of the sun better, to look like it’s actually rising and then I added a color transition, and I also updated the readme. PLEASE READ IT. See you tmrw, (I’ll be finishing this frst and then I’ll start on the personal site again.)"}]...
|
Title: PERFECT DAYY by @aliya | Stardance
Devlogs Title: PERFECT DAYY by @aliya | Stardance
Devlogs:
DEVLOG 1: Although the event is over, I still thought I’d make some cool changes. Today I adjusted the position of the sun better, to look like it’s actually rising and then I added a color transition, and I also updated the readme. PLEASE READ IT. See you tmrw, (I’ll be finishing this frst and then I’ll start on the personal site again.)
DEVLOG 2: Wassup guysss I didn’t do much today. and i’m not gonna tell it yet either XD HOWEVER, keep in mind that it involves ducks. And I haven’t committed changes yet either so don’t bother :P But thats not it , I’m not sure if this is to early to say cuz I only have four followers in total but still, seeing these replies and people engaging with my devlogs really makes me happy, esp since I’m having some rough days cuz I just found out my ‘friends’ turned out to be faker than those no borax, no activator, no glue slime videos (ifykyk). But ya’ll GENUINELY making me smile. So thanks. Alot. (Me rn:)
Hi, I’m alive. What a surprise, huh?” So my guess is you might be wondering where I was all these days. So lemme just tell you which hell I was damned to. So basically we went to our grandmas house for a lil while. It’s not in the city its more in the country side and there are jackals in those fields. Me and my cousin were wandering and we saw a puppy. Or what we thought was a puppy , I tried to pet it and then we hear : ” WWEEEAAAOOO WEEAAOOO” And those who don’t know jackals have this eery cry like thing its creepy as hell and then the puppy starts bakring like CRAZY , i could see the ishowspeed in him, parents need to monitor what their child is watching. AND THEN THE JACKALS STARTED COMING TOWARDS AND WE STARTED RUNNING BUT THE BACKDOOR (the one towards the fields and we came from) WAS LOCKED AND WE STARTED SCREAMING AND CRYING AND THEN MY GRANDMA CAME OUT WITH A SHOTGUN AND- nothing like that happened. I never went to my grandmas house, there aren’t even jackals there. It is in the country side tho. I was just lazy. :| uhh yeahh so umm BUT I completed the project! Woo hoo yeahhh (crickets) The secret suprise was ducks. Duck-villagers. Dillagers if I may. Or Duckagers? One tiny duck kept being a nuisance and wasn’t adjusting accordingly to the size but it eventually did. I added a “$2+” msg when u complete the second task so the ducks get an earning and when you complete all your tasks the ducks start a lil dance :) Go see it.
Ships:
ABOUT: ✨ It’s a website which is supposed to help you be more productive. You have three tasks. The more tasks you complete, the sun rises, helping the dillagers (ducks+villagers = dillagers, cuz the ducks are villagers) come out of their home and work for their families and bring them food. But if you keep stalling the tasks… they’ll go hungry.. and have nothing to feed their family… You want that? THEN QUIT WHINING AND GET TO WORK SUSAN! (Apologies to the Susans out in the world.) WHAT I LEARNT: 🤩🤩🤩 Lots of css properties and javascript (I’m a total newbie; I started in July) and to for the love of god — RECHECK YOUR CODE. PROBLEMS 😰😰 AND SOLUTIONS: 🥳🥳 I used html, a lot of css and some java. I had issues in pixelating the background and creating these shapes (still trying to get a hang of the pixelated thing.) I also kept having an error while building the notepad, it would either not show up or wouldn’t align with the animation. I realized I was using some wrong css properties and kept mixing stuff up. I also accidentally kept duplicating the amount of ducks lol but it was solved by just revisiting your code again at different times....
|
1793350073.684094
|
1793436473.684094
|
|
16985
|
Untitled by @lemu | Stardance
|
lemu
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Untitled by @lemu | Stardance
|
1793350074.85403
|
1793954874.85403
|
|
55759
|
Kebab Clicker Idle by @dorukdogru | Stardance
|
dorukdogru
|
0
|
4.79
|
0
|
[]
|
[{"post_id": 57889, "ts": "202 [{"post_id": 57889, "ts": "2026-08-30T06:44:12Z", "hours": 4.7942, "text": "I created the Kebab click animation. When you hover on kebab it gets bigger and when you press it shrinks. Also its color fade a little. I wrote the backend code of it. When you click on it, the balance changes. I wrote an Update UI function to update balance, and prces of the purchasable Items. I created a topbar and added three new panels: Employee tab, Knives tab, Drinks tab, and Research Tab. I added a scrollbar to these panels so that when I add more items, they will fit in. I used object oriented programming in C# to create Employee and Knife objects, having their own variables. I completed the frontend and backend of the Employee tab and Knives tab. When you buy these items, the prices and levels of that item increase accordingly, and prices increase exponentially. I created a function so that when your balance is lower than the price of that item, its button becomes unclickable and its color fades. There is passive kebab income. So I also adjusted the update UI function. Now it updates the UI 5 times a second. This way, the balance count became smoother, and items become interactable without clicking the kebab with passive income. I coded the backend of employee and knife panels for now. When you buy a knife, it increases Kebab per click, and when you buy an employee, it increases Kebab per second. In a couple of days, I plan to code the research and drinks tab. I also want to add pop-up panels that will give a description for each purchasable item (like knives or employee) so that I can bring my game a little story and fun."}]...
|
Title: Kebab Clicker Idle by @dorukdogru | Stardan Title: Kebab Clicker Idle by @dorukdogru | Stardance
Devlogs:
I created the Kebab click animation. When you hover on kebab it gets bigger and when you press it shrinks. Also its color fade a little. I wrote the backend code of it. When you click on it, the balance changes. I wrote an Update UI function to update balance, and prces of the purchasable Items. I created a topbar and added three new panels: Employee tab, Knives tab, Drinks tab, and Research Tab. I added a scrollbar to these panels so that when I add more items, they will fit in. I used object oriented programming in C# to create Employee and Knife objects, having their own variables. I completed the frontend and backend of the Employee tab and Knives tab. When you buy these items, the prices and levels of that item increase accordingly, and prices increase exponentially. I created a function so that when your balance is lower than the price of that item, its button becomes unclickable and its color fades. There is passive kebab income. So I also adjusted the update UI function. Now it updates the UI 5 times a second. This way, the balance count became smoother, and items become interactable without clicking the kebab with passive income. I coded the backend of employee and knife panels for now. When you buy a knife, it increases Kebab per click, and when you buy an employee, it increases Kebab per second. In a couple of days, I plan to code the research and drinks tab. I also want to add pop-up panels that will give a description for each purchasable item (like knives or employee) so that I can bring my game a little story and fun....
|
1793350075.7621348
|
1793954875.7621348
|
|
57208
|
the thing by @rizz | Stardance
|
rizz
|
1
|
11.93
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-14T14:05:06Z", "hours": 8.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "What I Made I made Toolbox , a small website where people can find useful everyday tools in one place. It includes a focus timer, task list, notes, password generator, unit converter, customs calculator, color picker, calculator, random picker, and habit tracker. I also added a hand drawn style, pastel colours, dark mode, local saving, breadcrumbs, loading animations, keyboard support, and an interactive 3D background with floating shapes and particle effects. What Was Challenging The hardest part was making the website look interesting without making it difficult to use. I tried several different styles before finding the current hand drawn and colourful look. Adding the 3D background was also challenging because it needed to feel alive while keeping the text and tools easy to see. Another difficult part was making all the tools work properly inside the same modal system. Each tool needed its own controls, buttons, results, reset behavior, and error handling. The breadcrumb navigation and deep links were also challenging. I wanted users to be able to open a specific tool directly and still use the browser back button normally. Dark mode took more work than expected too. Changing only the background colour looked bad, so I had to adjust the cards, text, borders, shadows, forms, and 3D background separately. What I Am Proud Of I am proud that Toolbox is not just a design mockup. The tools actually work. You can add tasks, write notes, generate passwords, convert values, calculate numbers, choose random options, and track habits. Notes, tasks, habits, and theme settings can also be saved in the browser. I am especially proud of the 3D background because I built it with a canvas instead of relying on a large 3D library. It reacts to the mouse, moves objects through depth, and creates particles when the page is clicked. I am also proud of the small accessibility details. The cards, icons, and arrows can be opened with the keyboard. Modals can be closed with Escape, and the site has reduced motion support. What People Should Know Before Testing The project currently works without an account or backend. Tasks, notes, habits, and theme settings are saved only in the browser being used. If browser storage is cleared, that information will disappear. The data will not automatically appear on another device. Authentication and cloud sync are planned but are not active yet. The customs calculator is only a rough estimate using simple example rates. It should not be used as official tax or customs advice. To test the project, try these things: Open a tool card. Click the icon on a card. Click the arrow on a card. Open a card with Enter or Space. Close a modal with Escape. Try the “See the tools” button. Switch between light mode and dark mode. Add and complete a task. Write a note, reload the page, and check if it stayed saved. Mark a few days in the habit tracker. Open a calculator directly with ?tool=calculator . Open a tool and use the browser back button. Move the mouse around the 3D background. Click the page and watch the particle effect. For the best test, run the project with a local server: python3 -m http.server 8000", "repo": "https://github.com/STEVEALEX-source/bleh", "demo": "https://stevealex-source.github.io/bleh/"}]...
|
[{"post_id": 80124, "ts": "202 [{"post_id": 80124, "ts": "2026-10-16T09:25:02Z", "hours": 2.6553, "text": "added new stuff and made it into a proper webos with all the features"}, {"post_id": 70060, "ts": "2026-09-18T11:25:41Z", "hours": 1.2719, "text": "changed the UI cuz it got flagged as AI even tho i didn’t use Ai"}, {"post_id": 68063, "ts": "2026-09-14T13:38:02Z", "hours": 3.0397, "text": "Devlog 08 — Current state and the next backend stepToolbox now combines a pastel hand-drawn interface, ten working browser tools, skeleton loading states, breadcrumb navigation, deep links, local persistence, and an interactive 3D canvas background.The current app works as a static frontend. Tasks, notes, habits, and theme preferences stay in browser storage. No account is required for the existing version.Supabase was selected as the planned backend for the next stage. The intended implementation is email authentication, user-owned records, row-level security, cloud sync, offline fallback, and migration from local storage after sign-in.That backend work has not been faked or partially hidden in the frontend. It still needs a Supabase project URL, public anon key, database schema, and security policies before it can be connected safely.The current deployable project contains index.html, style.css, script.js, and 404.html. The frontend can be deployed now, while authentication and synchronization remain the next planned milestone."}, {"post_id": 65759, "ts": "2026-09-11T03:25:29Z", "hours": 2.2308, "text": "so aghh i have rewrote the code and added some more options but i accidentally deleted my Os cuz i tried to play val by dual booting ahem…i lost all my files."}, {"post_id": 62934, "ts": "2026-09-06T14:09:01Z", "hours": 0.2836, "text": "Devlog 06 — Breadcrumbs, deep links, and history The site now has an actual navigation state instead of relying only on scrolling. A breadcrumb row shows the current location and a live status message. It changes between Home, Tools, and About as the user moves through the page. Hovering over a tool card reports the tool name in the status area. Opening a tool updates the URL with a query parameter such as: Plain Text /?tool=calculator This means a specific tool can be shared directly. Browser back and forward navigation also restores or closes the modal correctly. This stage made the application feel more like a small web app instead of a static collection of panels."}, {"post_id": 62216, "ts": "2026-09-05T14:04:37Z", "hours": 0.2981, "text": "Devlog 05 — Adding more tools and loading feedback I expanded Toolbox from seven tools to ten. The new tools are a basic calculator, a random picker, and a habit tracker. The calculator handles basic arithmetic, decimals, clearing, backspace, and divide-by-zero handling. The random picker accepts one option per line and chooses one result. The habit tracker stores a habit name and marks progress across the last seven days. I also added a visible skeleton loader when opening a modal. The loading state is short, but it gives the interface a clear transition instead of making the tool appear abruptly. The habit tracker still works without an account by using local browser storage."}, {"post_id": 61358, "ts": "2026-09-04T07:23:04Z", "hours": 0.3933, "text": "Devlog 04 — Improving the tools and interaction The project then moved from visual work into interaction design. Tool cards became keyboard accessible. Users can open cards with Enter or Space, and tool icons and arrows can also be focused and activated directly. The modal now manages focus more carefully. It moves focus into the dialog when opened, locks page scrolling, closes on Escape, and returns focus to the original card after closing. The password generator was also improved to use cryptographically stronger random values instead of relying only on Math.random(). The theme toggle stores its state locally and exposes its state through aria-pressed. These changes made the site feel less like a visual experiment and more like a real usable interface."}, {"post_id": 60714, "ts": "2026-09-03T08:37:07Z", "hours": 0.8158, "text": "Devlog 03 — Adding the hand-drawn style The next pass moved Toolbox toward a hand-drawn notebook style. I added handwritten display fonts, uneven rotations, sketch borders, paper textures, dashed outlines, irregular icon shapes, and offset shadows. The goal was to make the interface feel assembled by hand rather than generated from a standard component library. The cards received small imperfections instead of perfectly symmetrical decoration. Buttons, labels, notes, and headings started using a more informal visual language. I also added reduced-motion support so the hand-drawn animation would not become a problem for users who prefer less movement. This was the point where Toolbox developed a recognisable personality."}, {"post_id": 60116, "ts": "2026-09-02T08:48:56Z", "hours": 0.3106, "text": "Devlog 02 — Reworking the visual direction The first visual direction felt too much like a generic landing page, so I rebuilt the layout around a quieter utility interface. I changed the typography, spacing, card proportions, modal layout, and responsive behavior. The hero became less promotional and more like an entry point into a small collection of tools. The copy was shortened and made more direct. Instead of trying to sell the product, the page started explaining what it actually does. The card layout became easier to scan. Each card received a number, a short description, a category label, and a clear open action. This stage established the basic visual rule for the project: the interface should feel like a useful object, not a marketing page."}, {"post_id": 59686, "ts": "2026-09-01T16:39:17Z", "hours": 0.7372, "text": "Devlog 01 — Starting with a small toolbox I started building Toolbox as a simple browser page for the little tasks that usually lead to opening five more tabs. The first version focused on three files: index.html, style.css, and script.js. The page had a hero section, a tool grid, a modal system, a theme toggle, and a few local utilities. The first tools were a focus timer, task list, notes area, password generator, unit converter, customs estimate, and color picker. The goal was deliberately small: open the page, choose a tool, finish the job, and leave. The important early decision was to keep everything client-side. Tasks and notes could use browser storage, while calculators and converters could work without a server."}]...
|
Title: the thing by @rizz | Stardance
Devlogs:
De Title: the thing by @rizz | Stardance
Devlogs:
Devlog 01 — Starting with a small toolbox I started building Toolbox as a simple browser page for the little tasks that usually lead to opening five more tabs. The first version focused on three files: index.html, style.css, and script.js. The page had a hero section, a tool grid, a modal system, a theme toggle, and a few local utilities. The first tools were a focus timer, task list, notes area, password generator, unit converter, customs estimate, and color picker. The goal was deliberately small: open the page, choose a tool, finish the job, and leave. The important early decision was to keep everything client-side. Tasks and notes could use browser storage, while calculators and converters could work without a server.
Devlog 02 — Reworking the visual direction The first visual direction felt too much like a generic landing page, so I rebuilt the layout around a quieter utility interface. I changed the typography, spacing, card proportions, modal layout, and responsive behavior. The hero became less promotional and more like an entry point into a small collection of tools. The copy was shortened and made more direct. Instead of trying to sell the product, the page started explaining what it actually does. The card layout became easier to scan. Each card received a number, a short description, a category label, and a clear open action. This stage established the basic visual rule for the project: the interface should feel like a useful object, not a marketing page.
Devlog 03 — Adding the hand-drawn style The next pass moved Toolbox toward a hand-drawn notebook style. I added handwritten display fonts, uneven rotations, sketch borders, paper textures, dashed outlines, irregular icon shapes, and offset shadows. The goal was to make the interface feel assembled by hand rather than generated from a standard component library. The cards received small imperfections instead of perfectly symmetrical decoration. Buttons, labels, notes, and headings started using a more informal visual language. I also added reduced-motion support so the hand-drawn animation would not become a problem for users who prefer less movement. This was the point where Toolbox developed a recognisable personality.
Devlog 04 — Improving the tools and interaction The project then moved from visual work into interaction design. Tool cards became keyboard accessible. Users can open cards with Enter or Space, and tool icons and arrows can also be focused and activated directly. The modal now manages focus more carefully. It moves focus into the dialog when opened, locks page scrolling, closes on Escape, and returns focus to the original card after closing. The password generator was also improved to use cryptographically stronger random values instead of relying only on Math.random(). The theme toggle stores its state locally and exposes its state through aria-pressed. These changes made the site feel less like a visual experiment and more like a real usable interface.
Devlog 05 — Adding more tools and loading feedback I expanded Toolbox from seven tools to ten. The new tools are a basic calculator, a random picker, and a habit tracker. The calculator handles basic arithmetic, decimals, clearing, backspace, and divide-by-zero handling. The random picker accepts one option per line and chooses one result. The habit tracker stores a habit name and marks progress across the last seven days. I also added a visible skeleton loader when opening a modal. The loading state is short, but it gives the interface a clear transition instead of making the tool appear abruptly. The habit tracker still works without an account by using local browser storage.
Devlog 06 — Breadcrumbs, deep links, and history The site now has an actual navigation state instead of relying only on scrolling. A breadcrumb row shows the current location and a live status message. It changes between Home, Tools, and About as the user moves through the page. Hovering over a tool card reports the tool name in the status area. Opening a tool updates the URL with a query parameter such as: Plain Text /?tool=calculator This means a specific tool can be shared directly. Browser back and forward navigation also restores or closes the modal correctly. This stage made the application feel more like a small web app instead of a static collection of panels.
so aghh i have rewrote the code and added some more options but i accidentally deleted my Os cuz i tried to play val by dual booting ahem…i lost all my files.
Devlog 08 — Current state and the next backend stepToolbox now combines a pastel hand-drawn interface, ten working browser tools, skeleton loading states, breadcrumb navigation, deep links, local persistence, and an interactive 3D canvas background.The current app works as a static frontend. Tasks, notes, habits, and theme preferences stay in browser storage. No account is required for the existing version.Supabase was selected as the planned backend for the next stage. The intended implementation is email authentication, user-owned records, row-level security, cloud sync, offline fallback, and migration from local storage after sign-in.That backend work has not been faked or partially hidden in the frontend. It still needs a Supabase project URL, public anon key, database schema, and security policies before it can be connected safely.The current deployable project contains index.html, style.css, script.js, and 404.html. The frontend can be deployed now, while authentication and synchronization remain the next planned milestone.
changed the UI cuz it got flagged as AI even tho i didn’t use Ai
added new stuff and made it into a proper webos with all the features
Ships:
What I Made I made Toolbox , a small website where people can find useful everyday tools in one place. It includes a focus timer, task list, notes, password generator, unit converter, customs calculator, color picker, calculator, random picker, and habit tracker. I also added a hand drawn style, pastel colours, dark mode, local saving, breadcrumbs, loading animations, keyboard support, and an interactive 3D background with floating shapes and particle effects. What Was Challenging The hardest part was making the website look interesting without making it difficult to use. I tried several different styles before finding the current hand drawn and colourful look. Adding the 3D background was also challenging because it needed to feel alive while keeping the text and tools easy to see. Another difficult part was making all the tools work properly inside the same modal system. Each tool needed its own controls, buttons, results, reset behavior, and error handling. The breadcrumb navigation and deep links were also challenging. I wanted users to be able to open a specific tool directly and still use the browser back button normally. Dark mode took more work than expected too. Changing only the background colour looked bad, so I had to adjust the cards, text, borders, shadows, forms, and 3D background separately. What I Am Proud Of I am proud that Toolbox is not just a design mockup. The tools actually work. You can add tasks, write notes, generate passwords, convert values, calculate numbers, choose random options, and track habits. Notes, tasks, habits, and theme settings can also be saved in the browser. I am especially proud of the 3D background because I built it with a canvas instead of relying on a large 3D library. It reacts to the mouse, moves objects through depth, and creates particles when the page is clicked. I am also proud of the small accessibility details. The cards, icons, and arrows can be opened with the keyboard. Modals can be closed with Escape, and the site has reduced motion support. What People Should Know Before Testing The project currently works without an account or backend. Tasks, notes, habits, and theme settings are saved only in the browser being used. If browser storage is cleared, that information will disappear. The data will not automatically appear on another device. Authentication and cloud sync are planned but are not active yet. The customs calculator is only a rough estimate using simple example rates. It should not be used as official tax or customs advice. To test the project, try these things: Open a tool card. Click the icon on a card. Click the arrow on a card. Open a card with Enter or Space. Close a modal with Escape. Try the “See the tools” button. Switch between light mode and dark mode. Add and complete a task. Write a note, reload the page, and check if it stayed saved. Mark a few days in the habit tracker. Open a calculator directly with ?tool=calculator . Open a tool and use the browser back button. Move the mouse around the 3D background. Click the page and watch the particle effect. For the best test, run the project with a local server: python3 -m http.server 8000...
|
1793350076.6787066
|
1793436476.6787066
|
|
33997
|
MP3 player by @T_Bence | Stardance
|
T_Bence
|
0
|
5.82
|
0
|
[]
|
[{"post_id": 76764, "ts": "202 [{"post_id": 76764, "ts": "2026-10-04T14:53:49Z", "hours": 1.85, "text": "I made the CAD for the project. I made the whole board in Fusion 360, and after designed a case around everything. The case turned out good I think, I went with a pretty open design, with the buttons being easily accessible for ease of use. The only thing I couldn’t figure out is how to mount the top and bottom, while making it removable, since the walls are thin, but I migth make them a bit bigger to fit a screw. I also didn’t do the port openings, but those should be quick."}, {"post_id": 75663, "ts": "2026-09-30T17:41:34Z", "hours": 1.1239, "text": "I did the PCB for the project. I found a solution to the layout, by making the battery sit under the PCB, not in line with it. I also did the traces, but that was pretty straigthforward. I added a silkscreen with what goes where, and a little decoration."}, {"post_id": 75299, "ts": "2026-09-29T17:52:20Z", "hours": 0.7833, "text": "I worked on assigning footprints, and started thinking about the layout. It seems hard to make the layout be as compact as I want it to, but I have a few ideas. I didn’t work on this for a long time, since I had quite a lot of personal stuff happening, but I’m hoping to finish this by the oct 31st deadlline. I didn’t have too much time today, but Im pllanning to continue tomorrow"}, {"post_id": 35790, "ts": "2026-07-27T13:27:43Z", "hours": 2.0667, "text": "I made the schematic. It took me quite a bit of time, but I did get there in the end, and actually most of the time spent was just market research, trying to find the products I could use, especially a charging circuit. I always hated adding batteries because they needed charging and step up circuits, but now with this one I can hopefully work out everything. Also a bit more about the project, this will be a (hopefully) small and compact MP3 player using a DFplayer module, a XIAO-RP2040 MCU 3 buttons for next, previous, and play/pause, and a 128x32 I2C Oled display for displaying the current song."}]...
|
Title: MP3 player by @T_Bence | Stardance
Devlogs Title: MP3 player by @T_Bence | Stardance
Devlogs:
I made the schematic. It took me quite a bit of time, but I did get there in the end, and actually most of the time spent was just market research, trying to find the products I could use, especially a charging circuit. I always hated adding batteries because they needed charging and step up circuits, but now with this one I can hopefully work out everything. Also a bit more about the project, this will be a (hopefully) small and compact MP3 player using a DFplayer module, a XIAO-RP2040 MCU 3 buttons for next, previous, and play/pause, and a 128x32 I2C Oled display for displaying the current song.
I worked on assigning footprints, and started thinking about the layout. It seems hard to make the layout be as compact as I want it to, but I have a few ideas. I didn’t work on this for a long time, since I had quite a lot of personal stuff happening, but I’m hoping to finish this by the oct 31st deadlline. I didn’t have too much time today, but Im pllanning to continue tomorrow
I did the PCB for the project. I found a solution to the layout, by making the battery sit under the PCB, not in line with it. I also did the traces, but that was pretty straigthforward. I added a silkscreen with what goes where, and a little decoration.
I made the CAD for the project. I made the whole board in Fusion 360, and after designed a case around everything. The case turned out good I think, I went with a pretty open design, with the buttons being easily accessible for ease of use. The only thing I couldn’t figure out is how to mount the top and bottom, while making it removable, since the walls are thin, but I migth make them a bit bigger to fit a screw. I also didn’t do the port openings, but those should be quick....
|
1793350077.9102578
|
1793954877.9102578
|
|
57231
|
My Personal Site by @Coding-AN | Stardance
|
Coding-AN
|
1
|
6.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-13T21:14:58Z", "hours": 6.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "This is my personal website that I made using HTML and CSS. It contains some information about me, as well as what I’m currently up to. Additionally, it contains some of my past projects, as well as a link to my GitHub. As I continue to make more things and have more to share, I will continue to update it. It’s the first time I’ve done any web development, and although it’s on the simple side, I think it turned out great!", "repo": "https://github.com/Coding-AN/Website-AN", "demo": "https://coding-an.github.io/Website-AN/"}]...
|
[{"post_id": 67670, "ts": "202 [{"post_id": 67670, "ts": "2026-09-13T20:37:50Z", "hours": 0.2675, "text": "I implemented the pseudo-classes on all the links of my website, so now the element gets bigger when you hover over it. As for the overly centered nature of the site, since I don’t want to give up my current stacked layout or mess with the scale, I’ve decided to keep everything as it is. My next step will be to ship, so look out for that."}, {"post_id": 67503, "ts": "2026-09-13T17:00:11Z", "hours": 1.8864, "text": "I fixed the scaling of the website, and centered everything. Everything might be a little too centered though, as there’s too much empty space on the sides. It looks good in a portrait orientation, but for a desktop-focused website, I think it needs a little tweaking. Although I was originally planning to stop here, I’ll be implementing pseudo-classes to add some interaction to the website, and try to see how I can fix the design of the site"}, {"post_id": 66943, "ts": "2026-09-12T22:23:09Z", "hours": 0.6019, "text": "I added a section for my projects, and added a link to my GitHub at the top. I think I’m finished with the content of the website now. However, before I ship, I still need to finish the scaling of the website, as the sizing of elements is completely out of wack."}, {"post_id": 65722, "ts": "2026-09-11T02:04:56Z", "hours": 1.6728, "text": "I added an about me section, as well as a section that details what I’m currently up to. Right now, it has my current video game, and my current project, but I may add more entries in the future."}, {"post_id": 60578, "ts": "2026-09-03T00:54:19Z", "hours": 1.7092, "text": "I started working on my site using the tutorial, and finished the header and navigation bar. I actually did this yesterday, but I forgot to post a devlog, so I’m getting this up to date now."}]...
|
Title: My Personal Site by @Coding-AN | Stardance
Title: My Personal Site by @Coding-AN | Stardance
Devlogs:
I started working on my site using the tutorial, and finished the header and navigation bar. I actually did this yesterday, but I forgot to post a devlog, so I’m getting this up to date now.
I added an about me section, as well as a section that details what I’m currently up to. Right now, it has my current video game, and my current project, but I may add more entries in the future.
I added a section for my projects, and added a link to my GitHub at the top. I think I’m finished with the content of the website now. However, before I ship, I still need to finish the scaling of the website, as the sizing of elements is completely out of wack.
I fixed the scaling of the website, and centered everything. Everything might be a little too centered though, as there’s too much empty space on the sides. It looks good in a portrait orientation, but for a desktop-focused website, I think it needs a little tweaking. Although I was originally planning to stop here, I’ll be implementing pseudo-classes to add some interaction to the website, and try to see how I can fix the design of the site
I implemented the pseudo-classes on all the links of my website, so now the element gets bigger when you hover over it. As for the overly centered nature of the site, since I don’t want to give up my current stacked layout or mess with the scale, I’ve decided to keep everything as it is. My next step will be to ship, so look out for that.
Ships:
This is my personal website that I made using HTML and CSS. It contains some information about me, as well as what I’m currently up to. Additionally, it contains some of my past projects, as well as a link to my GitHub. As I continue to make more things and have more to share, I will continue to update it. It’s the first time I’ve done any web development, and although it’s on the simple side, I think it turned out great!...
|
1793350078.8661385
|
1793436478.8661385
|
|
18288
|
My awesome macropad! by @CamoKid | Stardance
|
CamoKid
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My awesome macropad! by @CamoKid | Stardanc Title: My awesome macropad! by @CamoKid | Stardance...
|
1793350080.0409026
|
1793954880.0409026
|
|
55761
|
test by @Devansh | Stardance
|
Devansh
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: test by @Devansh | Stardance
|
1793350080.956083
|
1793954880.956083
|
|
9931
|
ChatPatches by @obro1984 | Stardance
|
obro1984
|
1
|
83.0
|
0
|
[{"ship_num": 1, "ts": "2026-1 [{"ship_num": 1, "ts": "2026-10-06T05:39:03Z", "hours": 83.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "This is Chat Patches! I’m gonna cut to the chase and explain the process of developing recently because everything about the mod is on the GitHub readme, in the changelog, and in these devlogs. Recently I’ve found time management difficult and as a result I’ve had to be more efficient and creative about how I’m spending my time developing. There’s been an influx in community contributions via PR which has been quite helpful, but most is still left up to me. However, one benefit of not having as much time to work on things is that issues I can’t seem to solve have more time for me to simmer and ponder to come up with solutions. however, this has postponed some big features i’ve already been putting off even more… hopefully i can get around to those and find some breakthrough point to pull myself through. anyways, in terms of changes, most of it has been bugfixes, but there have been a handful of additions recently, especially related to new configuration options (compact-safe messages, human-readable time format, cleaner context menu, etc.) - of course with plans to add many more. i’m proud of all these features and how far the mod has come, and frankly i’m surprised im even still developing it. i hope i can get the bigger stuff done soon so i can move on to bigger things, though. to test the mod, just set up fabricmc as explained on their website or via literally any modded minecraft tutorial - i recommend using a third-party launcher such as PrismLauncher as it keeps track of everything for you and wraps it in a nice interface. once your installation is ready simply add chat patches and its dependencies (again, using a launcher will help as it will add the deps for you!) and run the game! i hope your experience is bettered and you make the chat feel as personalized as you like :D", "repo": "https://github.com/mrbuilder1961/ChatPatches", "demo": "https://modrinth.com/mod/chatpatches/gallery"}]...
|
[{"post_id": 77225, "ts": "202 [{"post_id": 77225, "ts": "2026-10-06T05:21:48Z", "hours": 7.6692, "text": "8.0.0 released! yes, it’s been done! chat patches has been in alpha for a year and the better part of another? all because i finally impl’d the omnivers-stonecutter buildscript and additionally wanted more large-scale changes (test suite, neoforge support, DFU migration codec) ((of which are still planned… eventually!!)) … but then i just never took it off. well, you can’t wait around forever. also, this update is perfect for releasing as a whopping TEN issue reports were closed upon release, with countless others fixed soundlessly! credit where it’s due, there was a fair amount of community support via PRs for this release, but that doesn’t take away from the benefit we as a community experience from it being added! while we’re out here celebrating these crushed bugs, new features, and the return to release-channel versions, i think it’s safe to say chat patches is worthy of shipping too! i hope you’ve enjoyed using chat patches and it’s bettered your minecraft experience - and if you haven’t used it, i hope you’ll give it a try and let me know what you think. thanks again to everyone who contributed and cheers to even more fixes and features in the future! 🎉🥳💃🎈"}, {"post_id": 72734, "ts": "2026-09-23T16:44:23Z", "hours": 12.9153, "text": "i’ve been very busy with university starting, but recently there has been an influx in PRs fixing bugs, which is awesome! so i’ve been monitoring those and slowly merging them into the main branch. additionally, i’ve been chipping away at fixes and suggestion implementations here and there; specifically: excluding specific messages from being compacted updating to 26.3 actually uploading signature files (now that Modrinth officially supports them) fixing chat auto scrolling while duplicate messages are being received adding fallbacks for the chat log’s codec provider in case the current one fails/doesn’t exist ..and more!! i hope to add more stuff soon and publish a release, but i have about 4 free minutes per week and unfortunately, i end up not wanting to spend it on largely unpaid labor. nevertheless, my aspirations remain and my hopes are high!"}, {"post_id": 46725, "ts": "2026-08-14T05:34:29Z", "hours": 5.3536, "text": "i’ve been SUPER busy as of late, and will probably continue to be for at least another week or two if not longer, but i’m starting to begin to wrap up unit testing. i finally pushed the existing tests and framework to github on a separate branch, but bc i’m so bad at Git, IntelliJ is fucking up my other changes i’m currently working on (updating the main omnivers branch to 26.3-snapshot-8 )… so hopefully i can fix that soon. unfortunately i don’t know when the unit testing will be finished, as it takes a longggg time to figure out the little edge cases, and i prefer to avoid AI everywhere possible (although there’s only so much ethical struggling i can endure before i need to ask for help)."}, {"post_id": 29224, "ts": "2026-07-16T00:17:47Z", "hours": 10.7325, "text": "Unit Testing! yup, that’s what’s been taking so long. i actually got past the gradle setup part pretty quick, i just wasn’t expecting current code to be so… dysfunctional. i’ve done a lot of rewriting and test formatting and sometimes it just gets really brain numbing so i put on a youtube video in the background and then its been 45 minutes and i havent changed anything… but i just achieved my first all-passing test milestone! so i’ll be pushing it soon and then i’ll the changes that make everything pass will follow soon after. currently I’m targeting TextUtil , where the most edge-cases take place, in the form of String <-> Component transformations. ultimiately i’d like to also do E2E testing in the form of Fabric’s ClientGameTest , but those can only be done on the most recent version due to FAPI not backporting changes (it’s probably for the best anyway) - so i’ll be doing that last. that’s it for now! i can’t wait for everyone (especially me), to benefit from this when future releases are checked before releasing! yayyyy!!!"}, {"post_id": 21584, "ts": "2026-07-03T16:47:26Z", "hours": 22.8564, "text": "hey chat! i’ve finished up some of that stuff from before. most notably: publishMods now works again! turns out Modrinth just recently (i.e. this week) allowed attaching signatures to builds so it’s not currently supported with MPP also, turns out the whole checksum thing was kinda useless because Modrinth has provided file hashes via their API this whole time - so… i think i’m gonna table that idea for now and use that later i published a new version ( alpha.11 ) that fixes the teensy-eensy little problem that incomplete mixins were accidentally included in the jar uploaded to CF and MR as alpha.10 . whoops! version parsing is now much more robust and typically requires only one gradle property to be specified! for newer releases you can override the FMJ version (ex. w/ ~26.2 for the 26.2 subproject) and the rest is handled automatically. i’m also waiting on MPP#116 to see if this can be consolidated entirely, with no need for an extra override! the classtweaker is now stone-cut so it’s a bit easier to see what is applied to where cleaned up the buildscript more (it is perpetually dirty :/) fixed a handful of bugs and impl’d a couple suggestions! and now, i get to move on to one of the most daunting but hopefully most rewarding things: drumroll please…. ztzttstz.z.t..z….. unit testing!!! you’re probably thinking, chat patches hasn’t had any unit tests this WHOLE time!??! and you’d be right! idk how there aren’t more bugs. but now i’m putting everything else (chat patches wise, at least) on hold to get this done. bc if i don’t do it now, it will never get done. ik this isn’t very pretty but you gotta do what you gotta do."}, {"post_id": 15214, "ts": "2026-06-24T18:36:47Z", "hours": 23.2442, "text": "i’ve been doing what feels like a lot but isn’t overall much. i’ve been refactoring the Kotlin Gradle buildscript, which i’m notoriously bad at so it’s taking a really long time. some of my (attempted) changes include: generating signatures and checksums with published builds (2/3 done) simplified stonecutter replacements and swaps assessed what will need to change to transition to the new modstitch-toolkit minorly updated mod-publish-plugin and started planning for new version range parsing and functionality in other things, i’ve: fixed the context menu deletion option resetting the scroll pos removed the entirely unused option table in the README better utilized classtweakers in the context menu implemented annotation-based constraints for config options replaced the dual-impl option validation system with a unified one via codecs (now used in the YACL config, with one annoying side effect) future-proofed the module-based fabric api importing so that it only loads what’s necessary (and it should work with neoforge when i eventually impl that!) updated mod functionality to 26.2 (despite being unable to publish everything at once 😑)"}]...
|
Title: ChatPatches by @obro1984 | Stardance
Devlo Title: ChatPatches by @obro1984 | Stardance
Devlogs:
i’ve been doing what feels like a lot but isn’t overall much. i’ve been refactoring the Kotlin Gradle buildscript, which i’m notoriously bad at so it’s taking a really long time. some of my (attempted) changes include: generating signatures and checksums with published builds (2/3 done) simplified stonecutter replacements and swaps assessed what will need to change to transition to the new modstitch-toolkit minorly updated mod-publish-plugin and started planning for new version range parsing and functionality in other things, i’ve: fixed the context menu deletion option resetting the scroll pos removed the entirely unused option table in the README better utilized classtweakers in the context menu implemented annotation-based constraints for config options replaced the dual-impl option validation system with a unified one via codecs (now used in the YACL config, with one annoying side effect) future-proofed the module-based fabric api importing so that it only loads what’s necessary (and it should work with neoforge when i eventually impl that!) updated mod functionality to 26.2 (despite being unable to publish everything at once 😑)
hey chat! i’ve finished up some of that stuff from before. most notably: publishMods now works again! turns out Modrinth just recently (i.e. this week) allowed attaching signatures to builds so it’s not currently supported with MPP also, turns out the whole checksum thing was kinda useless because Modrinth has provided file hashes via their API this whole time - so… i think i’m gonna table that idea for now and use that later i published a new version ( alpha.11 ) that fixes the teensy-eensy little problem that incomplete mixins were accidentally included in the jar uploaded to CF and MR as alpha.10 . whoops! version parsing is now much more robust and typically requires only one gradle property to be specified! for newer releases you can override the FMJ version (ex. w/ ~26.2 for the 26.2 subproject) and the rest is handled automatically. i’m also waiting on MPP#116 to see if this can be consolidated entirely, with no need for an extra override! the classtweaker is now stone-cut so it’s a bit easier to see what is applied to where cleaned up the buildscript more (it is perpetually dirty :/) fixed a handful of bugs and impl’d a couple suggestions! and now, i get to move on to one of the most daunting but hopefully most rewarding things: drumroll please…. ztzttstz.z.t..z….. unit testing!!! you’re probably thinking, chat patches hasn’t had any unit tests this WHOLE time!??! and you’d be right! idk how there aren’t more bugs. but now i’m putting everything else (chat patches wise, at least) on hold to get this done. bc if i don’t do it now, it will never get done. ik this isn’t very pretty but you gotta do what you gotta do.
Unit Testing! yup, that’s what’s been taking so long. i actually got past the gradle setup part pretty quick, i just wasn’t expecting current code to be so… dysfunctional. i’ve done a lot of rewriting and test formatting and sometimes it just gets really brain numbing so i put on a youtube video in the background and then its been 45 minutes and i havent changed anything… but i just achieved my first all-passing test milestone! so i’ll be pushing it soon and then i’ll the changes that make everything pass will follow soon after. currently I’m targeting TextUtil , where the most edge-cases take place, in the form of String <-> Component transformations. ultimiately i’d like to also do E2E testing in the form of Fabric’s ClientGameTest , but those can only be done on the most recent version due to FAPI not backporting changes (it’s probably for the best anyway) - so i’ll be doing that last. that’s it for now! i can’t wait for everyone (especially me), to benefit from this when future releases are checked before releasing! yayyyy!!!
i’ve been SUPER busy as of late, and will probably continue to be for at least another week or two if not longer, but i’m starting to begin to wrap up unit testing. i finally pushed the existing tests and framework to github on a separate branch, but bc i’m so bad at Git, IntelliJ is fucking up my other changes i’m currently working on (updating the main omnivers branch to 26.3-snapshot-8 )… so hopefully i can fix that soon. unfortunately i don’t know when the unit testing will be finished, as it takes a longggg time to figure out the little edge cases, and i prefer to avoid AI everywhere possible (although there’s only so much ethical struggling i can endure before i need to ask for help).
i’ve been very busy with university starting, but recently there has been an influx in PRs fixing bugs, which is awesome! so i’ve been monitoring those and slowly merging them into the main branch. additionally, i’ve been chipping away at fixes and suggestion implementations here and there; specifically: excluding specific messages from being compacted updating to 26.3 actually uploading signature files (now that Modrinth officially supports them) fixing chat auto scrolling while duplicate messages are being received adding fallbacks for the chat log’s codec provider in case the current one fails/doesn’t exist ..and more!! i hope to add more stuff soon and publish a release, but i have about 4 free minutes per week and unfortunately, i end up not wanting to spend it on largely unpaid labor. nevertheless, my aspirations remain and my hopes are high!
8.0.0 released! yes, it’s been done! chat patches has been in alpha for a year and the better part of another? all because i finally impl’d the omnivers-stonecutter buildscript and additionally wanted more large-scale changes (test suite, neoforge support, DFU migration codec) ((of which are still planned… eventually!!)) … but then i just never took it off. well, you can’t wait around forever. also, this update is perfect for releasing as a whopping TEN issue reports were closed upon release, with countless others fixed soundlessly! credit where it’s due, there was a fair amount of community support via PRs for this release, but that doesn’t take away from the benefit we as a community experience from it being added! while we’re out here celebrating these crushed bugs, new features, and the return to release-channel versions, i think it’s safe to say chat patches is worthy of shipping too! i hope you’ve enjoyed using chat patches and it’s bettered your minecraft experience - and if you haven’t used it, i hope you’ll give it a try and let me know what you think. thanks again to everyone who contributed and cheers to even more fixes and features in the future! 🎉🥳💃🎈
Ships:
This is Chat Patches! I’m gonna cut to the chase and explain the process of developing recently because everything about the mod is on the GitHub readme, in the changelog, and in these devlogs. Recently I’ve found time management difficult and as a result I’ve had to be more efficient and creative about how I’m spending my time developing. There’s been an influx in community contributions via PR which has been quite helpful, but most is still left up to me. However, one benefit of not having as much time to work on things is that issues I can’t seem to solve have more time for me to simmer and ponder to come up with solutions. however, this has postponed some big features i’ve already been putting off even more… hopefully i can get around to those and find some breakthrough point to pull myself through. anyways, in terms of changes, most of it has been bugfixes, but there have been a handful of additions recently, especially related to new configuration options (compact-safe messages, human-readable time format, cleaner context menu, etc.) - of course with plans to add many more. i’m proud of all these features and how far the mod has come, and frankly i’m surprised im even still developing it. i hope i can get the bigger stuff done soon so i can move on to bigger things, though. to test the mod, just set up fabricmc as explained on their website or via literally any modded minecraft tutorial - i recommend using a third-party launcher such as PrismLauncher as it keeps track of everything for you and wraps it in a nice interface. once your installation is ready simply add chat patches and its dependencies (again, using a launcher will help as it will add the deps for you!) and run the game! i hope your experience is bettered and you make the chat feel as personalized as you like :D...
|
1793350081.8653636
|
1793436481.8653636
|
|
19029
|
nosrep's ender 3 printhead by @nosrep | Starda nosrep's ender 3 printhead by @nosrep | Stardance...
|
nosrep
|
1
|
16.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-12T06:04:06Z", "hours": 16.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "this is my ender 3 printhead! the printhead is the part that heats up and extrudes the plastic with all the accessories that entails. i originally decided to make this when i randomly came into a direct drive extruder upgrade and a bltouch. i wasn’t satisfied with the existing designs to mount the two to the ender 3 (and i thought it would be fun to make my own), so i did! it’s got a biqu h2 v2s direct extruder, two gdstime 5015 blower fans for part cooling, and a bltouch for bed leveling. printing is now much faster, more precise, and leveling isn’t as much of a pain. the picture below and the video demo is the result of the pin support challenge from fullcontrol.xyz, very nice if i do say so myself (P.S. i brought this to outpost! i was the guy with the neck printer, iykyk.)", "repo": "https://github.com/Osrepnay/h2-v2s-coolhead", "demo": ""}]...
|
[{"post_id": 25998, "ts": "202 [{"post_id": 25998, "ts": "2026-07-10T15:32:06Z", "hours": 0.35, "text": "I made some duct modifications and now cooling seems to be much better. I think the new duct is choking the airflow a bit too much, but it’s more focused and can actually reach the spot right under the nozzle (which the old one seemed to struggle with?). I also did a LOT of testing, didn’t track most of it. Probably could benefit from a little more tuning, but we can do the pin support sphere on fullcontrol.xyz now! fixed some of the lingering issues, like the bltouch interfering with the duct and the bltouch interfering with the endstop (it’s always the bltouch…). we should be done now"}, {"post_id": 25354, "ts": "2026-07-09T16:20:41Z", "hours": 1.5556, "text": "it has been built! it is so loud! I finished designing the ducting and finished printing out everything, immediately a couple problems: ducts bump into bltouch (this was also in the cad but i didn’t notice) and the ducts are really flimsy. The ducts themselves are fine but the front plate is too thin to keep it in place properly. They work but it’s kinda sketchy. To fix the bltouch thing I just melted the ducts with my soldering iron, already remodeled a fixed version but have yet to print. The extruder seems to be not tuned very well. I set the manufacturer-recommended esteps, but it could be off. The cooling also seems to be sketchy? I can feel an insane amount of airflow but i don’t know if it’s going to the part yet. It aims a little low and I reprinted a bridging test I made earlier and the results seem to be worse. I also need to do some fixes later if i want to use this long-term. I couldn’t make a new extruder cable because my crimping tool couldn’t handle jst-ph, so i’m gonna have to deal with the stock extruder cable which severely limits the amount of vertical travel I can handle."}, {"post_id": 24836, "ts": "2026-07-08T17:25:42Z", "hours": 4.0925, "text": "i think i finally finished the ducts… these were nightmarish to make. onshape conveniently doesn’t have 3d sketches, so I did a horribly janky system involving planes and a routing curve. The path the duct had to take ended up being kinda strange, so the loft would constantly crash out because the profiles turned too sharply. i did eventually get the loft to cooperate, and the duct looks okay? it’s still very lumpy, but it should transition relatively smoothly, which is what’s important for airflow. i’ve also started printing the parts now. as i’m typing this, the main mount is finished and the fan mount is almost done. after that i should theoretically be good to assemble once i print the ducts (this is the video i used for duct design principles: https://www.youtube.com/watch?v=YijwkQCOBEA )"}, {"post_id": 12713, "ts": "2026-06-20T19:22:19Z", "hours": 1.2339, "text": "made ducting setup and fine tuned fan mounts actual duct geometry still gonna need a lot of work and maybe prototypes though"}, {"post_id": 12346, "ts": "2026-06-20T04:22:56Z", "hours": 2.7828, "text": "got the bltouch probing after much pain and suffering. needed to make new wires for this, duponts crimped okay but the crimper i borrowed was too wide to crimp the jst-xh properly. did it horribly and it seems sturdyish for now but it is incredibly sketchy and probably a fire hazard (i would be more worried if the bltouch drew more current). the plan was originally to remake the extruder wire, but after this i’m probably gonna have to hold off until i can get a proper crimper"}, {"post_id": 12046, "ts": "2026-06-19T17:25:26Z", "hours": 0.7667, "text": "reverted bltouch position. blower on the side looked too dumb so they’re both going on the front now. Blower mount still needs some refinement but should be basically done, then need ducts"}, {"post_id": 11778, "ts": "2026-06-19T05:09:01Z", "hours": 1.0978, "text": "switched out the bltouch mount position for the blower. struggled with making sane supports, still need to fix that"}, {"post_id": 11705, "ts": "2026-06-19T02:08:31Z", "hours": 0.7425, "text": "did some heat break testing. wanted to see if the casing of the hotend would get hot so i wired up the thermistor+heating element onto the board. waited a few minutes with a cheap fan i had pointed at the heat sink and it didn’t seem to get very hot so that’s a win for the future 3d printed mount. also i soldered the header to and wired up the accelerometer"}, {"post_id": 10347, "ts": "2026-06-17T00:59:54Z", "hours": 0.7556, "text": "mounted the bltouch. it kinda occludes the hotend fan but there shouuulllldd be enough space to not choke it up too bad, assuming it’s not total garbage (doubtful) tried to find a good part cooling fan position too and they’re all strange looking"}, {"post_id": 10232, "ts": "2026-06-16T21:15:35Z", "hours": 1.0567, "text": "got models for bltouch and 5015 fans surprisingly annoying, neither have official models and one model i found online for the bltouch was weird (holes that were supposed to be 18mm were like 17.998mm) and so i immediately gave up and made my own. it looks really bad but it should be usable dimensionally tried a bunch of alternatives for the 5015 fan. tried an alternative manufacturer but it differed too much from the other two community models (which were extremely similar to each other), so i just picked the more popular one. Couldn’t really model this one myself because I don’t have calipers to measure the dimensions and don’t have the fans yet to begin with"}, {"post_id": 9737, "ts": "2026-06-16T05:05:24Z", "hours": 1.165, "text": "did more work on the mount (accidentally forgot to start recording so there’s like an hour of work not listed here) the extruder part is done. there’s still some weirdness in the cad that I should probably clean but i’m also really lazy still need to make part for part cooling fans and bltouch timelapse: https://lapse.hackclub.com/timelapse/ZeQnBYR1oswD"}, {"post_id": 9601, "ts": "2026-06-16T00:10:25Z", "hours": 0.5639, "text": "biqu/bigtreetech does not have cad models for the extruder, but someone on printables made a very accurate one that i’m pulling for measurements. Confirmed it with the drawings that were in the “manual” for the h2 v2s"}]...
|
Title: nosrep's ender 3 printhead by @nosrep | Title: nosrep's ender 3 printhead by @nosrep | Stardance
Devlogs:
biqu/bigtreetech does not have cad models for the extruder, but someone on printables made a very accurate one that i’m pulling for measurements. Confirmed it with the drawings that were in the “manual” for the h2 v2s
did more work on the mount (accidentally forgot to start recording so there’s like an hour of work not listed here) the extruder part is done. there’s still some weirdness in the cad that I should probably clean but i’m also really lazy still need to make part for part cooling fans and bltouch timelapse: https://lapse.hackclub.com/timelapse/ZeQnBYR1oswD
got models for bltouch and 5015 fans surprisingly annoying, neither have official models and one model i found online for the bltouch was weird (holes that were supposed to be 18mm were like 17.998mm) and so i immediately gave up and made my own. it looks really bad but it should be usable dimensionally tried a bunch of alternatives for the 5015 fan. tried an alternative manufacturer but it differed too much from the other two community models (which were extremely similar to each other), so i just picked the more popular one. Couldn’t really model this one myself because I don’t have calipers to measure the dimensions and don’t have the fans yet to begin with
mounted the bltouch. it kinda occludes the hotend fan but there shouuulllldd be enough space to not choke it up too bad, assuming it’s not total garbage (doubtful) tried to find a good part cooling fan position too and they’re all strange looking
did some heat break testing. wanted to see if the casing of the hotend would get hot so i wired up the thermistor+heating element onto the board. waited a few minutes with a cheap fan i had pointed at the heat sink and it didn’t seem to get very hot so that’s a win for the future 3d printed mount. also i soldered the header to and wired up the accelerometer
switched out the bltouch mount position for the blower. struggled with making sane supports, still need to fix that
reverted bltouch position. blower on the side looked too dumb so they’re both going on the front now. Blower mount still needs some refinement but should be basically done, then need ducts
got the bltouch probing after much pain and suffering. needed to make new wires for this, duponts crimped okay but the crimper i borrowed was too wide to crimp the jst-xh properly. did it horribly and it seems sturdyish for now but it is incredibly sketchy and probably a fire hazard (i would be more worried if the bltouch drew more current). the plan was originally to remake the extruder wire, but after this i’m probably gonna have to hold off until i can get a proper crimper
made ducting setup and fine tuned fan mounts actual duct geometry still gonna need a lot of work and maybe prototypes though
i think i finally finished the ducts… these were nightmarish to make. onshape conveniently doesn’t have 3d sketches, so I did a horribly janky system involving planes and a routing curve. The path the duct had to take ended up being kinda strange, so the loft would constantly crash out because the profiles turned too sharply. i did eventually get the loft to cooperate, and the duct looks okay? it’s still very lumpy, but it should transition relatively smoothly, which is what’s important for airflow. i’ve also started printing the parts now. as i’m typing this, the main mount is finished and the fan mount is almost done. after that i should theoretically be good to assemble once i print the ducts (this is the video i used for duct design principles: https://www.youtube.com/watch?v=YijwkQCOBEA )
it has been built! it is so loud! I finished designing the ducting and finished printing out everything, immediately a couple problems: ducts bump into bltouch (this was also in the cad but i didn’t notice) and the ducts are really flimsy. The ducts themselves are fine but the front plate is too thin to keep it in place properly. They work but it’s kinda sketchy. To fix the bltouch thing I just melted the ducts with my soldering iron, already remodeled a fixed version but have yet to print. The extruder seems to be not tuned very well. I set the manufacturer-recommended esteps, but it could be off. The cooling also seems to be sketchy? I can feel an insane amount of airflow but i don’t know if it’s going to the part yet. It aims a little low and I reprinted a bridging test I made earlier and the results seem to be worse. I also need to do some fixes later if i want to use this long-term. I couldn’t make a new extruder cable because my crimping tool couldn’t handle jst-ph, so i’m gonna have to deal with the stock extruder cable which severely limits the amount of vertical travel I can handle.
I made some duct modifications and now cooling seems to be much better. I think the new duct is choking the airflow a bit too much, but it’s more focused and can actually reach the spot right under the nozzle (which the old one seemed to struggle with?). I also did a LOT of testing, didn’t track most of it. Probably could benefit from a little more tuning, but we can do the pin support sphere on fullcontrol.xyz now! fixed some of the lingering issues, like the bltouch interfering with the duct and the bltouch interfering with the endstop (it’s always the bltouch…). we should be done now
Ships:
this is my ender 3 printhead! the printhead is the part that heats up and extrudes the plastic with all the accessories that entails. i originally decided to make this when i randomly came into a direct drive extruder upgrade and a bltouch. i wasn’t satisfied with the existing designs to mount the two to the ender 3 (and i thought it would be fun to make my own), so i did! it’s got a biqu h2 v2s direct extruder, two gdstime 5015 blower fans for part cooling, and a bltouch for bed leveling. printing is now much faster, more precise, and leveling isn’t as much of a pain. the picture below and the video demo is the result of the pin support challenge from fullcontrol.xyz, very nice if i do say so myself (P.S. i brought this to outpost! i was the guy with the neck printer, iykyk.)...
|
1793350085.1387174
|
1793436485.1387174
|
|
29817
|
Gleam by @arth_mi | Stardance
|
arth_mi
|
1
|
31.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-24T22:29:30Z", "hours": 31.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "Gleam is a FastAPI backend driving RGBW strips through a generic plugin API, so effects are built on exposed primitives (color, intensity, dim) rather than hardcoded. The tricky part was getting the architecture right first: syncing modules through a shared clock and separating color/intensity/white as distinct render layers. I’m especially proud of the Ambilight module, which captures HDMI output live and mirrors it onto the strip in real time, fully on-device with no cloud dependency.", "repo": "https://github.com/arthmi/gleam", "demo": "https://gleam-virid.vercel.app/docs"}]...
|
[{"post_id": 72828, "ts": "202 [{"post_id": 72828, "ts": "2026-09-23T20:31:06Z", "hours": 10.8583, "text": "Just finished a new module! The module is called audio_reactive and, as its name suggests, it reacts to the audio input provided (system default if parameter = None). It lights up the selected target as the sound gets louder. It also features animations to make sudden transitions feel smoother.Here are the parameters for this module: device: Audio input device name, or a portion of it (empty = system default) color: Color of the light min_intensity: Intensity when the input is silent [0.0 - 1.0] max_intensity: Intensity at maximum volume [0.0 - 1.0] sensitivity: Gain applied to the normalized level [0.1 - 5.0] attack: Rise time in milliseconds (how quickly the light reacts to a louder sound) release: Fall time in milliseconds (how slowly the light fades when the sound drops)"}, {"post_id": 45228, "ts": "2026-08-11T15:51:49Z", "hours": 3.2964, "text": "Rewrite the entirety of the Ambilight module for better functionalities and performances. I wrote an advanced algorithm to get a smoother result in addition to more parameters : device_index edge reversed band_depth_percent weight_exponent sample_overlap_percent saturation_boost -temporal_smoothing_tau The main functionalities added are: Advanced Color Averaging: Improved methods to calculate smarter average colors, such as sampling larger color bands or allowing LEDs to influence adjacent colors. Temporal Smoothing: Introduction of “temporal_smoothing_tau” to ensure smoother, more natural color transitions over time. Enhanced Immersion: Addition of “saturation_boost” and “weight_exponent” parameters to deliver a more vibrant and immersive visual experience. For instance, the colors on the left terminal simulate the final result that would handle the left edge of the screen (using default parameters)."}, {"post_id": 34682, "ts": "2026-07-25T16:23:38Z", "hours": 16.5069, "text": "Just finished the main functionalities of the ambilight module of my LED controller. It takes a stream from the edge of the screen (HDMI to USB, for example), then processes each frame to get the average color of the surrounding area. I’m still working on a blur effect that would give a less detailed result for a better experience. (Sorry for the bad recording quality, this was made on an old laptop.)"}]...
|
Title: Gleam by @arth_mi | Stardance
Devlogs:
Jus Title: Gleam by @arth_mi | Stardance
Devlogs:
Just finished the main functionalities of the ambilight module of my LED controller. It takes a stream from the edge of the screen (HDMI to USB, for example), then processes each frame to get the average color of the surrounding area. I’m still working on a blur effect that would give a less detailed result for a better experience. (Sorry for the bad recording quality, this was made on an old laptop.)
Rewrite the entirety of the Ambilight module for better functionalities and performances. I wrote an advanced algorithm to get a smoother result in addition to more parameters : device_index edge reversed band_depth_percent weight_exponent sample_overlap_percent saturation_boost -temporal_smoothing_tau The main functionalities added are: Advanced Color Averaging: Improved methods to calculate smarter average colors, such as sampling larger color bands or allowing LEDs to influence adjacent colors. Temporal Smoothing: Introduction of “temporal_smoothing_tau” to ensure smoother, more natural color transitions over time. Enhanced Immersion: Addition of “saturation_boost” and “weight_exponent” parameters to deliver a more vibrant and immersive visual experience. For instance, the colors on the left terminal simulate the final result that would handle the left edge of the screen (using default parameters).
Just finished a new module! The module is called audio_reactive and, as its name suggests, it reacts to the audio input provided (system default if parameter = None). It lights up the selected target as the sound gets louder. It also features animations to make sudden transitions feel smoother.Here are the parameters for this module: device: Audio input device name, or a portion of it (empty = system default) color: Color of the light min_intensity: Intensity when the input is silent [0.0 - 1.0] max_intensity: Intensity at maximum volume [0.0 - 1.0] sensitivity: Gain applied to the normalized level [0.1 - 5.0] attack: Rise time in milliseconds (how quickly the light reacts to a louder sound) release: Fall time in milliseconds (how slowly the light fades when the sound drops)
Ships:
Gleam is a FastAPI backend driving RGBW strips through a generic plugin API, so effects are built on exposed primitives (color, intensity, dim) rather than hardcoded. The tricky part was getting the architecture right first: syncing modules through a shared clock and separating color/intensity/white as distinct render layers. I’m especially proud of the Ambilight module, which captures HDMI output live and mirrors it onto the strip in real time, fully on-device with no cloud dependency....
|
1793350086.3759375
|
1793436486.3759375
|
|
52241
|
DDSim by @yaasshh | Stardance
|
yaasshh
|
1
|
124.76
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-24T16:51:16Z", "hours": 87.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I built DDSim, a program that simulates what happens inside the tiny parts that computer chips are made of, ie diodes, capacitors and transistors. You describe a device by its shape and which parts of the silicon have extra electrons or holes. DDSim then works out how those electrons and holes move, and draws the current and voltage curves. I didn’t fit anything to make the graphs look right. Everything comes straight from the physics equations. (NOTE: ITS STILL VERY CLUNKY SO ITS NOT GOING TO BE PERFECT AS OF RIGHT NOW. IF YOU FACE ANY TROUBLES IM REALLY SORRY) To make sure everything accurate, I checked it against textbook formulas and against DEVSIM, a simulator other people wrote. They agree to within a few percent, and the project has about 2,700 automated tests. You can try it in your browser at ddsim.fly.dev. Pick a device, press solve, and watch the answer draw itself. Every button and graph has a little “i” that explains what it means, and there are guided lessons if you’re new to this. It’s a school-level instrument, not a chip design tool. Below about 50 nanometers the physics it uses stops being accurate, so I didn’t go beyond that", "repo": "https://github.com/yaasshh09/DDSim", "demo": "https://ddsim.fly.dev"}]...
|
[{"post_id": 82276, "ts": "202 [{"post_id": 82276, "ts": "2026-10-24T13:22:27Z", "hours": 9.6742, "text": "Devlog #23 The trick for the MOS capacitor worked. Making the electrons react faster put the slow wiggles at a speed the computer can handle, and the answers came out right. That FINALLY finished the AC phase. I also added noise, a tiny random jitter in current that every device has. Next I added time. Now its possible to flip a diode from on to off and watch it recover. When you switch a diode off, it keeps conducting for a moment because of all the charge stored inside it. I compared that against DEVSIM, and our results were within 0.03% of each other which is quite frankly something im really proud off. Then I added a feature where the simulator shows how inaccurate it may be. It now checks its own answer against a finer mesh and puts a little error bar on every point in the plots. It can also improve its own mesh by adding points only where they’re needed. On 5 of my 8 test devices it hit the target accuracy with fewer points than my hand-made meshes. I was aiming for around 6, so that’s still doable. The newest addition is a bipolar transistor, where a small current into the middle layer controls a much bigger current through the whole device. I built a simple 1D version and a more realistic 2D one. The 1D version matches the textbook formula to within 0.03%. The best part is that its gain drops off at both very low and very high current, the way real transistors do, and I never told it to. It figured that out from the physics."}, {"post_id": 80341, "ts": "2026-10-17T10:12:36Z", "hours": 1.9553, "text": "Devlog #22 The long DEVSIM run finally finished. It took about 6 hours and matched the expert result almost exactly, which closes out the scoreboard phase. Then I started the next phase, which is about AC. That essentially means wiggling the voltage back and forth and watching how the device reacts at different speeds. Before, my simulator could only handle super slow wiggles, or fast ones where I froze some electrons by hand. Now it can handle any speed. To get there, I first taught the simulator how fast electrons and holes pile up or drain away over time. Then I wrote the part that works out how much current flows into each contact when one of them gets wiggled. I tested it on diodes, since they have textbook formulas to compare against. A long diode matched within about 1%, and a short one within 1.3%. Along the way I found a bug where my mesh maker gave up on very long devices, so I fixed that too. The MOS capacitor is giving me some trouble. At really slow wiggles, the math needs more precision than normal computer numbers have, so the answers came out wrong by up to 46%. Fast wiggles work fine. Right now I’m trying a trick where I make the electrons react faster, so the slow case happens at a speed the computer can handle. Below are some of the DEVSIM scoreboard values"}, {"post_id": 80105, "ts": "2026-10-16T07:52:45Z", "hours": 4.8328, "text": "Devlog #21 Since the last devlog I finished most of the temperature phases. First I compared the diode at 400 K against DEVSIM. I saved that result so my other tests compare with it from now on. Then I added two new sliders to the website. One sets the temperature, from 200 to 500 K. The other sets the fixed charge where the silicon meets the oxide. I picked both ranges by running the simulator across them. Each slider also has a short lesson that explains what it does. While I was writing those, I found some broken math formatting in the temperature lesson and fixed it. The biggest addition is freeze-out. To make silicon conduct, we add extra atoms that give up electrons. When it gets really cold, those atoms stop giving up their electrons. Before, my simulator assumed they always did. Now there’s a switch for it, and it works. At 100, 200 and 300 K it matches the textbook formula almost exactly. I also checked that a plain frozen silicon bar still follows Ohm’s law, and that the capacitance results still work at 150 K."}, {"post_id": 79306, "ts": "2026-10-13T13:29:32Z", "hours": 4.9631, "text": "Devlog #20 In this devlog i firstly fixed up the website. It now has a little icon in the browser tab, a terms page, a privacy page and a footer with a contact button. The icon didn’t show up on the live site at first, so I fixed that too. Then I started the next phase, which is all about fixing temperature related stuff. A lot of the calculations of the simulator took room temperature which might have led to some wrong calculations, so I’ve been fixing that. The gate’s energy level was stuck at its room-temperature value. it was a real bug and its fixed now. When the silicon gets hotter, electrons now max out at a lower speed, just like in real-life chips. From 250 to 400 K, the junction’s built-in voltage matches the textbook formula. From 300 to 400 K, the diode’s leakage current stays within 0.3% of the formula. I also added a fixed charge that sits where the silicon meets the oxide layer. Real chips always have some, and it changes the voltage where a transistor turns on. Next up are the big jobs. A long DEVSIM run is still going, and after that I’ll test the temperature effects on a full 2D transistor. I also still need to put the website changes live."}, {"post_id": 76513, "ts": "2026-10-03T19:43:47Z", "hours": 7.6606, "text": "Devlog #19 The speed and robustness numbers are now saved on the scoreboard. On the first 8 benchmarks, my solver takes about 1.6x less time per bias point than DEVSIM. I also added a test that reads the README and fails if the README claims anything the data doesn’t back up (I hate getting 100% vibe code assumptions on my readme btw). I renamed a lot of variables across the code (to pass the 30% ai rule that im apparently violating) to shorter names. That kind of change can break the tests if some of the variables reference each other across multiple files, so I checked that python turns the old code and the new code into exactly the same instructions. Thankfully it did. I also moved all the settings into one file. Things like how many tries the solver gets, how small the mesh can get, and the server limits used to be scattered across about 20 files. I checked that every single value stayed exactly the same after the move. I also deleted the last few leftover comments. Then I pushed everything. The tests ran on three Python versions, and 2,723 of 2,724 passed. The one that failed was a browser test on Python 3.11 that waited too long for the page to load. The same test passed on the other two versions, so it’s probably just a slow test machine, but I’m going to rerun it to make sure. My laptop ran out of memory again, which stopped me from finishing the type hints in the tests. That’s next, once I’m not running a bunch of other stuff at the same time."}, {"post_id": 74357, "ts": "2026-09-27T07:21:49Z", "hours": 2.1619, "text": "Devlog #18 The robustness runs are almost done. Robustness checks a simple concept, if I give the solver a device cold, with no warm-up, does it actually finish? I ran 200 test cases through my solver and through DEVSIM, each in a few different setups. The robustness numbers aren’t final yet. One DEVSIM result is still missing. The first time my laptop ran out of memory, and the second time it went to sleep overnight, so it’s running again now. I also found out DEVSIM acts much differently depending on how many CPU threads it gets. With only one, some solves failed or took forever which was kinda interesting to see. On the cleanup side, I turned on the strictest type checking across the whole project and fixed what it found. Every color on the website now comes from one file. I also deleted a bunch of old files nobody used and cut the README down."}, {"post_id": 73883, "ts": "2026-09-26T07:55:09Z", "hours": 4.0261, "text": "Devlog #17 I restarted the scoreboard runs, and before looking/mentioning any of the results I checked my own setup for DEVSIM. That showed a few bugs on my side. My starting guess for the voltage inside the device did a log of zero on heavily doped chips, so DEVSIM crashed INSTANTLY. I also wasn’t giving it enough steps to settle on some devices. I fixed both, because it wouldn’t be fair to count my mistakes as DEVSIM’s. I also cleaned up the code, I tried to ship all progress so far but there was just too much AI (guilty) so I am working on redoing the python, css and javascript code again mainly from scratch. (The image shows all the values from the DDSim tests)"}, {"post_id": 73631, "ts": "2026-09-25T15:22:18Z", "hours": 2.4842, "text": "Devlog #16 Now that DDSim is live, my next goal is to make it better than DEVSIM, a free, open-source simulator a lot of people already use. “Better” doesn’t count unless I can measure it, so I planned out the next 11 stages of the project, and the first one is a scoreboard. The scoreboard runs both simulators on the same set of devices and compares them in four ways: how often each one finishes a solve without crashing, how accurate the answers are, how fast they run, and what each one can do at all. Some of these runs take hours, and my laptop ran out of memory partway through, so I paused them. I’ll post the results once they’re done, even the parts where DEVSIM is better than mine. While building the accuracy check, I found a bug in my own math. Sometimes it reported numbers that didn’t make physical sense, so now it throws those out instead of trusting them. I also went through all the style files for the website. They’re about a third smaller now, and I checked that the page still looks exactly the same. Then I found a small bug that had been there all along. The little “i” buttons that explain each setting were supposed to turn blue when you hover over them, but a different style rule was overriding it. Last, I cleaned up the README again. The pictures are centered now, I took out the GIF, and I rewrote some of the text so it reads more naturally."}, {"post_id": 73215, "ts": "2026-09-24T16:47:16Z", "hours": 1.6669, "text": "Devlog #15 DDSim is FINALLY deployed and live! You can try it at ddsim.fly.dev Getting it online took one extra step. The cheap shared server was too slow: the hardest transistor solve takes about 50 seconds on my laptop and would have taken around 7 minutes there. That’s past the 5-minute limit I set, so it would have been stopped every time. I moved it to a faster server, and now it finishes in under a minute. Once it was up, I found a bug. When every contact on a transistor was at the same voltage, the picture still drew current flowing through it. That’s impossible, because with no voltage difference nothing moves. I fixed it, and now the page says “no current flows” instead of showing an empty plot with no explanation. Then I rewrote the README from scratch. The old one was over 500 lines and way too dense. The new one is about 200 lines, mostly screenshots from the live site plus a few tables, so someone can see what the project does in a couple of minutes. While doing that, I caught a mistake. One number in my results table didn’t match the graph right next to it. I reran the full simulation, which took 20 minutes, and fixed the table so it matches. Last, I took the deployment files out of the public code. Anyone who downloads it gets everything they need to run it on their own computer, but not the setup for putting it online. Next up, I might be thinking of getting a custom name for this simulator and my other atom simulator. If anyone knows where I can get free domains, lmk in the comments"}, {"post_id": 72803, "ts": "2026-09-23T19:24:31Z", "hours": 2.5789, "text": "Devlog #14 Since then, most of my work has been getting DDSim ready for other people to use. First I cleaned up the controls. Some sliders and number boxes let you pick values that made the solver fail, which just showed up as a red error. I went through the diode, the MOS capacitor, the transistor and the draw-your-own device and found the range where each setting actually works. The sliders now stay inside those ranges, so a beginner can’t break things by accident. Then I cleaned up the code. I deleted about 2,400 lines of comments that just repeated what the code already said and kept the ones that explain something nessessary. Next came the writing. The site has about 40 short articles that explain the physics, and a lot of them sounded stiff, so I rewrote all of them. I did the same for the project docs, and on the way I found a few places where the docs no longer matched what the code does, so I fixed those too. Now I’m working on putting it online. I picked Fly.io to host it, and I’m hoping to get a free custom name. Since anyone will be able to use it, I’m adding some safety limits first. Only a couple of solves can run at the same time, old results get cleared out after a while, and a solve that runs too long gets stopped with a message explaining why. I tested each limit by breaking it on purpose to make sure the test catches it. It isn’t live yet, but it’s close! [lazy pic, i dont wanna open server again :( ]"}, {"post_id": 72407, "ts": "2026-09-22T21:05:00Z", "hours": 1.9161, "text": "Devlog #13 This one is all about the page itself. The physics didn’t change, but you’ll notice everything else did. I rebuilt the whole look from scratch. The old version was only friendly if you already knew semiconductors, and I want someone who has never heard of a diode to open it and get somewhere. Now it opens by asking you to pick a device: a diode, a MOS capacitor, a transistor, or draw your own. Each one comes with a sentence or two on what it is. Every number and switch has a little “i” next to it that explains it, and an empty plot tells you what it’s waiting for instead of sitting blank. Drawing your own device used to happen in a tiny box off to the side. Now it gets the whole screen. Some layers are so thin they basically disappeared, so I stretch the picture up and down until you can see them, and a label says when it’s stretched. Doped areas get a soft color so you can tell them apart. I also changed the font a couple of times. It started in a terminal style that felt cold. I tried one replacement and ended on Poppins, which just feels warmer. My favorite change is in the runs panel. It used to list your old runs as text, like “doping 1e17.” Now every solve saves a little picture of its own curve, and they all share the same scale, so you can see at a glance how each change moved the result. I switched the license to CC BY-NC so that it still stays technically open source but I own intellectual property for commercial use. Anyone can use it and change it for free, as long as they credit me and don’t sell it. A bit of AI usage in the frontend i will agree but not overkill in terms of it."}, {"post_id": 72227, "ts": "2026-09-22T14:20:14Z", "hours": 2.8683, "text": "Devlog #12 Last time I left off with a transistor sitting on oxide that would not solve. I think ive fixed it. The silicon body had no contact touching it anywhere, so the solver had no idea what voltage that body should sit at. There is no single right answer, so it just wanders. That is not a bug I can fix, it is the physics of the thing, so now the simulator refuses that drawing up front and says why instead of grinding away at it. Then I went hunting for every other way someone could break it. I wrote something that tries every combination of settings the page can send and watched what fell over. A few things did: A gate metal with a work function no real metal has. Surface scattering asked for on a 1D device, which has no surface to scatter off. A shape so thin the grid ends up dividing by zero. All of them now get refused before the solve starts, with a sentence saying what to change. A few smaller ones. The device picture was drawn half a grid cell off, which threw off the line you drag across it to read values. That same line returned nothing at all where silicon meets oxide. And the explanations could load out of order and show you the wrong one. I think now i should wrap the version 1 of the project and finish polishing the frontend considering stardance is getting over soon. another lazy code pic btw cause i dont wanna open the servers again"}, {"post_id": 70662, "ts": "2026-09-19T15:24:06Z", "hours": 2.4228, "text": "Devlog #11 Since the last devlog, you can draw your own 2D devices, not just stack layers in a line. You draw rectangles of silicon and oxide, paint doping onto them, and place metal contacts along the edges. The simulator builds a grid that fits your drawing and solves it. Before it solves, it checks for mistakes and tells you what’s wrong in plain words: a piece of silicon with no contact touching it, a gate sitting right on silicon, or a shape too small for the grid to see. To make sure drawing works, I redrew the MOS capacitor and the transistor I already had and checked that they give the same answers. The capacitor matched almost exactly and the transistor was within about 1%. Testing it in a real browser caught two bugs. One made every solve hang forever. The other made the picture of the device grow every time it redrew on high resolution screens. Both seem to be fixed now but I’ll be on the lookout for similar bugs. Then I tried something new, a transistor sitting on a layer of oxide, the way a lot of modern chips are built. It won’t solve yet. I narrowed it down to the oxide underneath the silicon, and I’m still wondering how breaks things. More on that next time. random picture cause im too lazy to start the servers again"}, {"post_id": 70075, "ts": "2026-09-18T12:25:44Z", "hours": 3.6847, "text": "Devlog #10 Since the last devlog, the simulator has gone from explaining things to letting you play with them. First, you can now compare runs. Every time you solve, the curve stays on the plot, so you can change one thing and see exactly what moved. The diode also got live sliders. Drag the doping or voltage and the answer updates while you drag. The 2D devices like the MOSFET are too slow for that, so I added a quick mode that uses a rougher grid. It’s a little less accurate, and I wrote down exactly how much. Then I built five guided lessons: a diode sitting at rest, a diode with voltage on it, a MOS capacitor, a transistor turning on, and what goes wrong when transistors get really small. Each lesson walks you through experiments step by step. The important part is that every claim a lesson makes is checked by a test against the solver I developed as part of the project. For example: if a lesson says “the current goes up,” a test runs it and makes sure it actually does. The biggest addition is a device builder. You stack layers of doped silicon however you want, and the simulator solves whatever you made. You can also save a design and load it again later. I agree I used AI for the frontend but I did not go VERY heavy on it. Only to build upon the frontend base I coded"}, {"post_id": 69600, "ts": "2026-09-17T12:07:30Z", "hours": 6.0439, "text": "Devlog #9 Since my last devlog, my solver and DEVSIM have started to cooperate. All ten benchmark devices match, the MOSFETs included, so the physics phase is done. THANK THE LORD Now I’m working on the part I care about most personally, which is making the simulator teach. The browser used to be a wall of knobs and plots with no explanation. Now every knob and every plot has a small “i” button. Click it and a drawer slides out with a plain explanation first, then the real equations for anyone who wants to go deeper. I wrote 35 of these explanations covering the physics, how the solver works, the devices, and how to read each plot. Then I checked them against the code. One credited the diodes with an accuracy number that actually belonged to a different device. Another claimed that one failed point in a sweep doesn’t ruin the rest, but the code stops at the first failure. The equations turned out to be hard to figure. The markdown reader treated the backslashes inside the math as its own escape characters and deleted them, so 92 bits of spacing and notation came out messed up. Now I pull the math out before the markdown step and put it back after. I also bundled the math and markdown libraries into the project, so the page works with no internet. Next up are band diagrams, which show the energy levels electrons can sit at. The page will draw them straight from the solved device."}, {"post_id": 68669, "ts": "2026-09-15T14:33:26Z", "hours": 1.7181, "text": "Devlog #8 Really tired today. Just ran a bunch of tests today and got a bunch of values ill sort through tomorrow."}, {"post_id": 67223, "ts": "2026-09-13T08:42:33Z", "hours": 3.7983, "text": "Devlog #7 Since my last devlog I have been teaching DEVSIM to run the same physics my own solver runs. Before this it was on a stripped down model set, so the two codes had similar geometry and nothing about mobility. Now it runs the real thing: doping dependent mobility, surface scattering at the oxide, velocity saturation, and proper Fermi-Dirac statistics. Getting there meant three more small lies. DEVSIM will easily chain a derivative through one kind of model and silently return zero for another. No error, no warning. My solver just diverged on the first step. It took a dump of every derivative on the device to see a column of exact zeros where numbers should have been. Then a field magnitude written as a square root of a square. Mathematically, sounds good but numerically it produces a nan wherever the field is exactly zero, which in a neutral chunk of silicon is nearly every edge. Then the surface mobility. I was refreshing it on every pass, forever. That is not a converging loop, that is two numbers chasing each other. The gate walk climbed to 0.50 V and then refused 0.55 V at every step size I gave it, down to a tenth of a millivolt. A failure that ignores step size is not a step size problem. I gave the refresh a stopping rule and re-ran it. Same answer to the last digit, just reachable now. The 1 micron device now agrees between the two codes to under 3.3 percent at low drain and under 1.3 percent at high drain, across four decades of current. The remaining blocker is not code. My browser is holding 15 of the machine’s 16 GB."}, {"post_id": 66590, "ts": "2026-09-12T13:16:11Z", "hours": 3.9589, "text": "Devlog #6 Im not going to say much this devlog. I hate Github CI errors with a passion and everybody that creates software relates."}, {"post_id": 65940, "ts": "2026-09-11T12:39:46Z", "hours": 2.6142, "text": "Devlog #5 Since the license was added, all my time has gone into one stubborn thing, that is getting DEVSIM simulator, to produce trustworthy MOSFET curves. It has been a long journey of small lies the application tells you. DEVSIM’s solve doesn’t take a device argument, so it solves everything you’ve ever built in that process at once. I was building one device per curve and leaving them around, so the second curve was dragging a finished device along with it and ruining the shared error check. Deleting each device when its curve finishes fixed a whole family of weird failures. Then I found the equilibrium solve was starting from all zeros, which on this device is 0.6 V off. I supply it from charge neutrality now. Same final output but far less trouble getting there. 2 of my own ideas turned out wrong and got reverted, but I wrote the measurements rather than dropping them. Capping the solver’s pass budget moved the current by 0.4%. Pinning the math library to one thread made a four second step take three minutes. Big Ouch. Currently, the 1 micron transfer curve at 50 mV of drain runs end to end and confirms with my simulator to within 0.23% above threshold. The 1 V curve still stalls at 0.4 V of gate, and I checked it properly rather than simply loosening the tolerance, because it turns out DEVSIM isn’t converging there at all. My own code, for contrast, does the same curve in 4.6 seconds."}, {"post_id": 65618, "ts": "2026-09-10T21:14:24Z", "hours": 1.4086, "text": "Dev log #4 After the last devlog I pushed and CI went red on all three Python versions. One test, one solver that would not converge. I guessed this before and fixed the wrong line. Last time I saw the residual and assumed a gate step was missing the convergence basin, so I put continuation on the gate ramp. That was a real improvement, just not this bug. This time I actually read the CI log The failing solve was the one before the ramp even starts. Gate at zero, drain already at 1 V, starting from a cold guess. So I measured it instead of guessing. Cold at 0 V drain takes 1 step. At 1 V it takes 22, and 12 of those get clipped by the step limiter, which means the solver is being dragged the whole way instead of converging properly The fix walks the bias in from zero using the continuation I already had. I regenerated the whole roll-off table through the new path and every digit came out identical. Only the path changed, not the answer. Also added the Open-Source MIT license, and cleaned the commit history."}, {"post_id": 65362, "ts": "2026-09-10T13:29:09Z", "hours": 2.1169, "text": "Dev log #3 I found a bug that made every 2D current in the simulator wrong by a factor of about 245, WAY too big. The cause, i believe, was one missing conversion. The code turns an internal number into a real current, and in 2D that conversion needs an extra length factor that I never included. In 1D it happened to be right, which is why it went un-noticed. I fixed it and then wrote a test that compares a 2D current against Ohm’s law, worked out by hand with no solver involved. This test was missing before. The reassuring part: I measure the turn-on voltage two completely different ways. They used to differ by 180 mV, which I didnt pay much attention to previously. After the fix they agree to about 2 mV. I did not tune anything to make that happen, so I might have to start believing in miracles. I also fixed two divide-by-zero crashes in the surface mobility code that were blocking a whole test combination. Also updated the README numbers and the decisions log. The full test suite is still running, and I will push to github once done."}, {"post_id": 64702, "ts": "2026-09-09T10:05:49Z", "hours": 15.2131, "text": "Devlog #2 Two things this stretch, and both started as “that’s odd” rather than “that’s broken.” First, the solver was crawling. Every step up in voltage cost more than the last, and past a point it just gave up. I traced it back to the starting guess, which was asking what makes glass electrically neutral. That question has no answer, because glass has no charges to balance in the first place. The solver was grinding away at something stupid before it ever got to the real problem. I gave it a proper starting answer instead, and the slowdown disappeared entirely. Second, I stopped trusting my tests and went to check them. I broke my own code ten different ways on purpose, one at a time, and watched to see which breakages the suite would catch. 9/10 failed, which is what I wanted. 1 slipped through clean, and that is the interesting one, because a test that cannot fail is not a test. Chasing the one that got away turned up a real bug hiding underneath it. Setting the voltage on the bottom contact was silently doing nothing at all. The code ran, reported success, and ignored the value. One line to fix, and it would have been very hard to find any other way, since nothing about the output looked wrong. Heads up! Light AI usage to debug the tests and break code to find errors"}, {"post_id": 54968, "ts": "2026-08-26T12:21:42Z", "hours": 35.26, "text": "DDSim Devlog I’m building a chip simulator from scratch. Today I got it to simulate a MOS capacitor, a silicon slab with a thin glass layer and a metal plate on top. It’s the heart of every transistor ever made. What I built: I stacked two grids together: a fine one near the silicon surface where all the action is, and a coarse one for the glass where nothing happens. Then I wrote one function that builds the whole sandwich. I wrote every test before the code. This kind of maths loves to give you wrong answers that look perfectly reasonable, so I only trust it when it matches something I can work out on paper. I’m happy that the “flatband” voltage came out exact to 15 decimal places. The threshold voltage matched the textbook to 0.13 millivolts, 50 times better than I needed. I also identified a few problems; the solver was getting slower and slower at high voltage, then giving up. The starting guess was asking “what makes glass electrically neutral?”, a meaningless question, since glass has no charges. I gave it a proper answer instead and the slowdown vanished completely. Then I deliberately broke my own code ten ways to check the tests would catch it. Nine got caught. One didn’t. Chasing that turned up a real bug: the bottom-contact voltage setting was silently doing nothing. One line to fix. Current Position: 1339 tests passing, everything clean, C-V curve working across all three regimes."}]...
|
Title: DDSim by @yaasshh | Stardance
Devlogs:
DDS Title: DDSim by @yaasshh | Stardance
Devlogs:
DDSim Devlog I’m building a chip simulator from scratch. Today I got it to simulate a MOS capacitor, a silicon slab with a thin glass layer and a metal plate on top. It’s the heart of every transistor ever made. What I built: I stacked two grids together: a fine one near the silicon surface where all the action is, and a coarse one for the glass where nothing happens. Then I wrote one function that builds the whole sandwich. I wrote every test before the code. This kind of maths loves to give you wrong answers that look perfectly reasonable, so I only trust it when it matches something I can work out on paper. I’m happy that the “flatband” voltage came out exact to 15 decimal places. The threshold voltage matched the textbook to 0.13 millivolts, 50 times better than I needed. I also identified a few problems; the solver was getting slower and slower at high voltage, then giving up. The starting guess was asking “what makes glass electrically neutral?”, a meaningless question, since glass has no charges. I gave it a proper answer instead and the slowdown vanished completely. Then I deliberately broke my own code ten ways to check the tests would catch it. Nine got caught. One didn’t. Chasing that turned up a real bug: the bottom-contact voltage setting was silently doing nothing. One line to fix. Current Position: 1339 tests passing, everything clean, C-V curve working across all three regimes.
Devlog #2 Two things this stretch, and both started as “that’s odd” rather than “that’s broken.” First, the solver was crawling. Every step up in voltage cost more than the last, and past a point it just gave up. I traced it back to the starting guess, which was asking what makes glass electrically neutral. That question has no answer, because glass has no charges to balance in the first place. The solver was grinding away at something stupid before it ever got to the real problem. I gave it a proper starting answer instead, and the slowdown disappeared entirely. Second, I stopped trusting my tests and went to check them. I broke my own code ten different ways on purpose, one at a time, and watched to see which breakages the suite would catch. 9/10 failed, which is what I wanted. 1 slipped through clean, and that is the interesting one, because a test that cannot fail is not a test. Chasing the one that got away turned up a real bug hiding underneath it. Setting the voltage on the bottom contact was silently doing nothing at all. The code ran, reported success, and ignored the value. One line to fix, and it would have been very hard to find any other way, since nothing about the output looked wrong. Heads up! Light AI usage to debug the tests and break code to find errors
Dev log #3 I found a bug that made every 2D current in the simulator wrong by a factor of about 245, WAY too big. The cause, i believe, was one missing conversion. The code turns an internal number into a real current, and in 2D that conversion needs an extra length factor that I never included. In 1D it happened to be right, which is why it went un-noticed. I fixed it and then wrote a test that compares a 2D current against Ohm’s law, worked out by hand with no solver involved. This test was missing before. The reassuring part: I measure the turn-on voltage two completely different ways. They used to differ by 180 mV, which I didnt pay much attention to previously. After the fix they agree to about 2 mV. I did not tune anything to make that happen, so I might have to start believing in miracles. I also fixed two divide-by-zero crashes in the surface mobility code that were blocking a whole test combination. Also updated the README numbers and the decisions log. The full test suite is still running, and I will push to github once done.
Dev log #4 After the last devlog I pushed and CI went red on all three Python versions. One test, one solver that would not converge. I guessed this before and fixed the wrong line. Last time I saw the residual and assumed a gate step was missing the convergence basin, so I put continuation on the gate ramp. That was a real improvement, just not this bug. This time I actually read the CI log The failing solve was the one before the ramp even starts. Gate at zero, drain already at 1 V, starting from a cold guess. So I measured it instead of guessing. Cold at 0 V drain takes 1 step. At 1 V it takes 22, and 12 of those get clipped by the step limiter, which means the solver is being dragged the whole way instead of converging properly The fix walks the bias in from zero using the continuation I already had. I regenerated the whole roll-off table through the new path and every digit came out identical. Only the path changed, not the answer. Also added the Open-Source MIT license, and cleaned the commit history.
Devlog #5 Since the license was added, all my time has gone into one stubborn thing, that is getting DEVSIM simulator, to produce trustworthy MOSFET curves. It has been a long journey of small lies the application tells you. DEVSIM’s solve doesn’t take a device argument, so it solves everything you’ve ever built in that process at once. I was building one device per curve and leaving them around, so the second curve was dragging a finished device along with it and ruining the shared error check. Deleting each device when its curve finishes fixed a whole family of weird failures. Then I found the equilibrium solve was starting from all zeros, which on this device is 0.6 V off. I supply it from charge neutrality now. Same final output but far less trouble getting there. 2 of my own ideas turned out wrong and got reverted, but I wrote the measurements rather than dropping them. Capping the solver’s pass budget moved the current by 0.4%. Pinning the math library to one thread made a four second step take three minutes. Big Ouch. Currently, the 1 micron transfer curve at 50 mV of drain runs end to end and confirms with my simulator to within 0.23% above threshold. The 1 V curve still stalls at 0.4 V of gate, and I checked it properly rather than simply loosening the tolerance, because it turns out DEVSIM isn’t converging there at all. My own code, for contrast, does the same curve in 4.6 seconds.
Devlog #6 Im not going to say much this devlog. I hate Github CI errors with a passion and everybody that creates software relates.
Devlog #7 Since my last devlog I have been teaching DEVSIM to run the same physics my own solver runs. Before this it was on a stripped down model set, so the two codes had similar geometry and nothing about mobility. Now it runs the real thing: doping dependent mobility, surface scattering at the oxide, velocity saturation, and proper Fermi-Dirac statistics. Getting there meant three more small lies. DEVSIM will easily chain a derivative through one kind of model and silently return zero for another. No error, no warning. My solver just diverged on the first step. It took a dump of every derivative on the device to see a column of exact zeros where numbers should have been. Then a field magnitude written as a square root of a square. Mathematically, sounds good but numerically it produces a nan wherever the field is exactly zero, which in a neutral chunk of silicon is nearly every edge. Then the surface mobility. I was refreshing it on every pass, forever. That is not a converging loop, that is two numbers chasing each other. The gate walk climbed to 0.50 V and then refused 0.55 V at every step size I gave it, down to a tenth of a millivolt. A failure that ignores step size is not a step size problem. I gave the refresh a stopping rule and re-ran it. Same answer to the last digit, just reachable now. The 1 micron device now agrees between the two codes to under 3.3 percent at low drain and under 1.3 percent at high drain, across four decades of current. The remaining blocker is not code. My browser is holding 15 of the machine’s 16 GB.
Devlog #8 Really tired today. Just ran a bunch of tests today and got a bunch of values ill sort through tomorrow.
Devlog #9 Since my last devlog, my solver and DEVSIM have started to cooperate. All ten benchmark devices match, the MOSFETs included, so the physics phase is done. THANK THE LORD Now I’m working on the part I care about most personally, which is making the simulator teach. The browser used to be a wall of knobs and plots with no explanation. Now every knob and every plot has a small “i” button. Click it and a drawer slides out with a plain explanation first, then the real equations for anyone who wants to go deeper. I wrote 35 of these explanations covering the physics, how the solver works, the devices, and how to read each plot. Then I checked them against the code. One credited the diodes with an accuracy number that actually belonged to a different device. Another claimed that one failed point in a sweep doesn’t ruin the rest, but the code stops at the first failure. The equations turned out to be hard to figure. The markdown reader treated the backslashes inside the math as its own escape characters and deleted them, so 92 bits of spacing and notation came out messed up. Now I pull the math out before the markdown step and put it back after. I also bundled the math and markdown libraries into the project, so the page works with no internet. Next up are band diagrams, which show the energy levels electrons can sit at. The page will draw them straight from the solved device.
Devlog #10 Since the last devlog, the simulator has gone from explaining things to letting you play with them. First, you can now compare runs. Every time you solve, the curve stays on the plot, so you can change one thing and see exactly what moved. The diode also got live sliders. Drag the doping or voltage and the answer updates while you drag. The 2D devices like the MOSFET are too slow for that, so I added a quick mode that uses a rougher grid. It’s a little less accurate, and I wrote down exactly how much. Then I built five guided lessons: a diode sitting at rest, a diode with voltage on it, a MOS capacitor, a transistor turning on, and what goes wrong when transistors get really small. Each lesson walks you through experiments step by step. The important part is that every claim a lesson makes is checked by a test against the solver I developed as part of the project. For example: if a lesson says “the current goes up,” a test runs it and makes sure it actually does. The biggest addition is a device builder. You stack layers of doped silicon however you want, and the simulator solves whatever you made. You can also save a design and load it again later. I agree I used AI for the frontend but I did not go VERY heavy on it. Only to build upon the frontend base I coded
Devlog #11 Since the last devlog, you can draw your own 2D devices, not just stack layers in a line. You draw rectangles of silicon and oxide, paint doping onto them, and place metal contacts along the edges. The simulator builds a grid that fits your drawing and solves it. Before it solves, it checks for mistakes and tells you what’s wrong in plain words: a piece of silicon with no contact touching it, a gate sitting right on silicon, or a shape too small for the grid to see. To make sure drawing works, I redrew the MOS capacitor and the transistor I already had and checked that they give the same answers. The capacitor matched almost exactly and the transistor was within about 1%. Testing it in a real browser caught two bugs. One made every solve hang forever. The other made the picture of the device grow every time it redrew on high resolution screens. Both seem to be fixed now but I’ll be on the lookout for similar bugs. Then I tried something new, a transistor sitting on a layer of oxide, the way a lot of modern chips are built. It won’t solve yet. I narrowed it down to the oxide underneath the silicon, and I’m still wondering how breaks things. More on that next time. random picture cause im too lazy to start the servers again
Devlog #12 Last time I left off with a transistor sitting on oxide that would not solve. I think ive fixed it. The silicon body had no contact touching it anywhere, so the solver had no idea what voltage that body should sit at. There is no single right answer, so it just wanders. That is not a bug I can fix, it is the physics of the thing, so now the simulator refuses that drawing up front and says why instead of grinding away at it. Then I went hunting for every other way someone could break it. I wrote something that tries every combination of settings the page can send and watched what fell over. A few things did: A gate metal with a work function no real metal has. Surface scattering asked for on a 1D device, which has no surface to scatter off. A shape so thin the grid ends up dividing by zero. All of them now get refused before the solve starts, with a sentence saying what to change. A few smaller ones. The device picture was drawn half a grid cell off, which threw off the line you drag across it to read values. That same line returned nothing at all where silicon meets oxide. And the explanations could load out of order and show you the wrong one. I think now i should wrap the version 1 of the project and finish polishing the frontend considering stardance is getting over soon. another lazy code pic btw cause i dont wanna open the servers again
Devlog #13 This one is all about the page itself. The physics didn’t change, but you’ll notice everything else did. I rebuilt the whole look from scratch. The old version was only friendly if you already knew semiconductors, and I want someone who has never heard of a diode to open it and get somewhere. Now it opens by asking you to pick a device: a diode, a MOS capacitor, a transistor, or draw your own. Each one comes with a sentence or two on what it is. Every number and switch has a little “i” next to it that explains it, and an empty plot tells you what it’s waiting for instead of sitting blank. Drawing your own device used to happen in a tiny box off to the side. Now it gets the whole screen. Some layers are so thin they basically disappeared, so I stretch the picture up and down until you can see them, and a label says when it’s stretched. Doped areas get a soft color so you can tell them apart. I also changed the font a couple of times. It started in a terminal style that felt cold. I tried one replacement and ended on Poppins, which just feels warmer. My favorite change is in the runs panel. It used to list your old runs as text, like “doping 1e17.” Now every solve saves a little picture of its own curve, and they all share the same scale, so you can see at a glance how each change moved the result. I switched the license to CC BY-NC so that it still stays technically open source but I own intellectual property for commercial use. Anyone can use it and change it for free, as long as they credit me and don’t sell it. A bit of AI usage in the frontend i will agree but not overkill in terms of it.
Devlog #14 Since then, most of my work has been getting DDSim ready for other people to use. First I cleaned up the controls. Some sliders and number boxes let you pick values that made the solver fail, which just showed up as a red error. I went through the diode, the MOS capacitor, the transistor and the draw-your-own device and found the range where each setting actually works. The sliders now stay inside those ranges, so a beginner can’t break things by accident. Then I cleaned up the code. I deleted about 2,400 lines of comments that just repeated what the code already said and kept the ones that explain something nessessary. Next came the writing. The site has about 40 short articles that explain the physics, and a lot of them sounded stiff, so I rewrote all of them. I did the same for the project docs, and on the way I found a few places where the docs no longer matched what the code does, so I fixed those too. Now I’m working on putting it online. I picked Fly.io to host it, and I’m hoping to get a free custom name. Since anyone will be able to use it, I’m adding some safety limits first. Only a couple of solves can run at the same time, old results get cleared out after a while, and a solve that runs too long gets stopped with a message explaining why. I tested each limit by breaking it on purpose to make sure the test catches it. It isn’t live yet, but it’s close! [lazy pic, i dont wanna open server again :( ]
Devlog #15 DDSim is FINALLY deployed and live! You can try it at ddsim.fly.dev Getting it online took one extra step. The cheap shared server was too slow: the hardest transistor solve takes about 50 seconds on my laptop and would have taken around 7 minutes there. That’s past the 5-minute limit I set, so it would have been stopped every time. I moved it to a faster server, and now it finishes in under a minute. Once it was up, I found a bug. When every contact on a transistor was at the same voltage, the picture still drew current flowing through it. That’s impossible, because with no voltage difference nothing moves. I fixed it, and now the page says “no current flows” instead of showing an empty plot with no explanation. Then I rewrote the README from scratch. The old one was over 500 lines and way too dense. The new one is about 200 lines, mostly screenshots from the live site plus a few tables, so someone can see what the project does in a couple of minutes. While doing that, I caught a mistake. One number in my results table didn’t match the graph right next to it. I reran the full simulation, which took 20 minutes, and fixed the table so it matches. Last, I took the deployment files out of the public code. Anyone who downloads it gets everything they need to run it on their own computer, but not the setup for putting it online. Next up, I might be thinking of getting a custom name for this simulator and my other atom simulator. If anyone knows where I can get free domains, lmk in the comments
Devlog #16 Now that DDSim is live, my next goal is to make it better than DEVSIM, a free, open-source simulator a lot of people already use. “Better” doesn’t count unless I can measure it, so I planned out the next 11 stages of the project, and the first one is a scoreboard. The scoreboard runs both simulators on the same set of devices and compares them in four ways: how often each one finishes a solve without crashing, how accurate the answers are, how fast they run, and what each one can do at all. Some of these runs take hours, and my laptop ran out of memory partway through, so I paused them. I’ll post the results once they’re done, even the parts where DEVSIM is better than mine. While building the accuracy check, I found a bug in my own math. Sometimes it reported numbers that didn’t make physical sense, so now it throws those out instead of trusting them. I also went through all the style files for the website. They’re about a third smaller now, and I checked that the page still looks exactly the same. Then I found a small bug that had been there all along. The little “i” buttons that explain each setting were supposed to turn blue when you hover over them, but a different style rule was overriding it. Last, I cleaned up the README again. The pictures are centered now, I took out the GIF, and I rewrote some of the text so it reads more naturally.
Devlog #17 I restarted the scoreboard runs, and before looking/mentioning any of the results I checked my own setup for DEVSIM. That showed a few bugs on my side. My starting guess for the voltage inside the device did a log of zero on heavily doped chips, so DEVSIM crashed INSTANTLY. I also wasn’t giving it enough steps to settle on some devices. I fixed both, because it wouldn’t be fair to count my mistakes as DEVSIM’s. I also cleaned up the code, I tried to ship all progress so far but there was just too much AI (guilty) so I am working on redoing the python, css and javascript code again mainly from scratch. (The image shows all the values from the DDSim tests)
Devlog #18 The robustness runs are almost done. Robustness checks a simple concept, if I give the solver a device cold, with no warm-up, does it actually finish? I ran 200 test cases through my solver and through DEVSIM, each in a few different setups. The robustness numbers aren’t final yet. One DEVSIM result is still missing. The first time my laptop ran out of memory, and the second time it went to sleep overnight, so it’s running again now. I also found out DEVSIM acts much differently depending on how many CPU threads it gets. With only one, some solves failed or took forever which was kinda interesting to see. On the cleanup side, I turned on the strictest type checking across the whole project and fixed what it found. Every color on the website now comes from one file. I also deleted a bunch of old files nobody used and cut the README down.
Devlog #19 The speed and robustness numbers are now saved on the scoreboard. On the first 8 benchmarks, my solver takes about 1.6x less time per bias point than DEVSIM. I also added a test that reads the README and fails if the README claims anything the data doesn’t back up (I hate getting 100% vibe code assumptions on my readme btw). I renamed a lot of variables across the code (to pass the 30% ai rule that im apparently violating) to shorter names. That kind of change can break the tests if some of the variables reference each other across multiple files, so I checked that python turns the old code and the new code into exactly the same instructions. Thankfully it did. I also moved all the settings into one file. Things like how many tries the solver gets, how small the mesh can get, and the server limits used to be scattered across about 20 files. I checked that every single value stayed exactly the same after the move. I also deleted the last few leftover comments. Then I pushed everything. The tests ran on three Python versions, and 2,723 of 2,724 passed. The one that failed was a browser test on Python 3.11 that waited too long for the page to load. The same test passed on the other two versions, so it’s probably just a slow test machine, but I’m going to rerun it to make sure. My laptop ran out of memory again, which stopped me from finishing the type hints in the tests. That’s next, once I’m not running a bunch of other stuff at the same time.
Devlog #20 In this devlog i firstly fixed up the website. It now has a little icon in the browser tab, a terms page, a privacy page and a footer with a contact button. The icon didn’t show up on the live site at first, so I fixed that too. Then I started the next phase, which is all about fixing temperature related stuff. A lot of the calculations of the simulator took room temperature which might have led to some wrong calculations, so I’ve been fixing that. The gate’s energy level was stuck at its room-temperature value. it was a real bug and its fixed now. When the silicon gets hotter, electrons now max out at a lower speed, just like in real-life chips. From 250 to 400 K, the junction’s built-in voltage matches the textbook formula. From 300 to 400 K, the diode’s leakage current stays within 0.3% of the formula. I also added a fixed charge that sits where the silicon meets the oxide layer. Real chips always have some, and it changes the voltage where a transistor turns on. Next up are the big jobs. A long DEVSIM run is still going, and after that I’ll test the temperature effects on a full 2D transistor. I also still need to put the website changes live.
Devlog #21 Since the last devlog I finished most of the temperature phases. First I compared the diode at 400 K against DEVSIM. I saved that result so my other tests compare with it from now on. Then I added two new sliders to the website. One sets the temperature, from 200 to 500 K. The other sets the fixed charge where the silicon meets the oxide. I picked both ranges by running the simulator across them. Each slider also has a short lesson that explains what it does. While I was writing those, I found some broken math formatting in the temperature lesson and fixed it. The biggest addition is freeze-out. To make silicon conduct, we add extra atoms that give up electrons. When it gets really cold, those atoms stop giving up their electrons. Before, my simulator assumed they always did. Now there’s a switch for it, and it works. At 100, 200 and 300 K it matches the textbook formula almost exactly. I also checked that a plain frozen silicon bar still follows Ohm’s law, and that the capacitance results still work at 150 K.
Devlog #22 The long DEVSIM run finally finished. It took about 6 hours and matched the expert result almost exactly, which closes out the scoreboard phase. Then I started the next phase, which is about AC. That essentially means wiggling the voltage back and forth and watching how the device reacts at different speeds. Before, my simulator could only handle super slow wiggles, or fast ones where I froze some electrons by hand. Now it can handle any speed. To get there, I first taught the simulator how fast electrons and holes pile up or drain away over time. Then I wrote the part that works out how much current flows into each contact when one of them gets wiggled. I tested it on diodes, since they have textbook formulas to compare against. A long diode matched within about 1%, and a short one within 1.3%. Along the way I found a bug where my mesh maker gave up on very long devices, so I fixed that too. The MOS capacitor is giving me some trouble. At really slow wiggles, the math needs more precision than normal computer numbers have, so the answers came out wrong by up to 46%. Fast wiggles work fine. Right now I’m trying a trick where I make the electrons react faster, so the slow case happens at a speed the computer can handle. Below are some of the DEVSIM scoreboard values
Devlog #23 The trick for the MOS capacitor worked. Making the electrons react faster put the slow wiggles at a speed the computer can handle, and the answers came out right. That FINALLY finished the AC phase. I also added noise, a tiny random jitter in current that every device has. Next I added time. Now its possible to flip a diode from on to off and watch it recover. When you switch a diode off, it keeps conducting for a moment because of all the charge stored inside it. I compared that against DEVSIM, and our results were within 0.03% of each other which is quite frankly something im really proud off. Then I added a feature where the simulator shows how inaccurate it may be. It now checks its own answer against a finer mesh and puts a little error bar on every point in the plots. It can also improve its own mesh by adding points only where they’re needed. On 5 of my 8 test devices it hit the target accuracy with fewer points than my hand-made meshes. I was aiming for around 6, so that’s still doable. The newest addition is a bipolar transistor, where a small current into the middle layer controls a much bigger current through the whole device. I built a simple 1D version and a more realistic 2D one. The 1D version matches the textbook formula to within 0.03%. The best part is that its gain drops off at both very low and very high current, the way real transistors do, and I never told it to. It figured that out from the physics.
Ships:
I built DDSim, a program that simulates what happens inside the tiny parts that computer chips are made of, ie diodes, capacitors and transistors. You describe a device by its shape and which parts of the silicon have extra electrons or holes. DDSim then works out how those electrons and holes move, and draws the current and voltage curves. I didn’t fit anything to make the graphs look right. Everything comes straight from the physics equations. (NOTE: ITS STILL VERY CLUNKY SO ITS NOT GOING TO BE PERFECT AS OF RIGHT NOW. IF YOU FACE ANY TROUBLES IM REALLY SORRY) To make sure everything accurate, I checked it against textbook formulas and against DEVSIM, a simulator other people wrote. They agree to within a few percent, and the project has about 2,700 automated tests. You can try it in your browser at ddsim.fly.dev. Pick a device, press solve, and watch the answer draw itself. Every button and graph has a little “i” that explains what it means, and there are guided lessons if you’re new to this. It’s a school-level instrument, not a chip design tool. Below about 50 nanometers the physics it uses stops being accurate, so I didn’t go beyond that...
|
1793350087.538349
|
1793436487.538349
|
|
9066
|
My first slack bot! by @jasmine | Stardance
|
jasmine
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My first slack bot! by @jasmine | Stardance
|
1793350088.8952458
|
1793954888.8952458
|
|
55763
|
Hall Of Stars by @Camiel | Stardance
|
Camiel
|
1
|
60.0
|
0
|
[{"ship_num": 1, "ts": "2026-1 [{"ship_num": 1, "ts": "2026-10-27T16:23:30Z", "hours": 60.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "Hall of Stars About Hall of Stars Hall of Stars is a retro top-down game written entirely in Python. It allows you to explore all your Stardance projects in a museum-like hallway. Every room represents one of your projects and looks different based on how much effort you put into it. To view all your raw statistics, you can walk up to the altar in the middle of the room and read the book on it. Along the way, you may also encounter an NPC who can tell you some fun facts about your project. He might look familiar to you… What I learned with Hall of Stars I’ve never really made a game before. It might have been a questionable choice to make my first game without the use of a game engine, but I enjoyed (almost) every part of it. It gave me a solid understanding of how games actually work under the hood. I learned a lot of new things, such as tiling, nested for-loops and that the y-axis goes down instead of up. The hardest part was making a good-looking reusable UI-system, since I had to draw everything manually with code. That’s probably why it took me around 10 hours to get it working properly.", "repo": "https://github.com/Camiel13/Hall-Of-Stars", "demo": "https://github.com/Camiel13/Hall-Of-Stars/releases/tag/v1.0.1"}]...
|
[{"post_id": 83021, "ts": "202 [{"post_id": 83021, "ts": "2026-10-26T16:04:06Z", "hours": 1.7811, "text": "Hall of Stars - Added README I’ve made the README for this project and made some minor changes to show some more statistics in the book on the altar."}, {"post_id": 82673, "ts": "2026-10-25T15:33:57Z", "hours": 8.7944, "text": "Hall of Stars - Dynamic Project Rooms, Better Depth & Last changes It’s been a long journey, but the time has come… IT’S FINISHED! Stardance is coming to an end, and with it, this project. In this last devlog I wanna thank everyone that worked on and with this YSWS. I’ve had an amazing time for the past few months. For the last time, I’ll tell y’all what I added. I’ve added some decoration to the room based on how many hours you spent on the project that the room belongs too. I had way more in mind, but I was short on time. I’ll now focus on making the README and building the executables. And once again, thank you to @torkel for supporting my Stardance influencer career. New Features: Dynamic Project Rooms: Each project room now contains details based on how much hours you spent on the corresponding project. It adds new objects at 10, 25, 50 and 100 hours. It also adds some things if your project has a super star ! Better Depth: I’ve added some improvements to the depth system so not all things have to be rendered based on their actual position. Thank You’s: Thanks to @mixidmb for making Stardance Stats and maintaining it. My whole project depends on it. Thanks to @evmaagca for the motivation Thanks to the whole Stardance team and anyone who worked on it."}, {"post_id": 81721, "ts": "2026-10-22T06:54:50Z", "hours": 8.475, "text": "Hall of Stars - Interactable NPC’s, Fun Facts and a Loading Screen I’ve gone ahead and added NPC’s to the project rooms, to bring some more life to them. I had to rebuild/refactor some other things in order to implement this, for example the API (which handled requests single-threaded). I put some time into the pixel art for the NPC, which turned out pretty well (my expectations weren’t very high, art is not my strong suit , thanks @evmaagca for the advice ). The walking logic was pretty doable, but it kept walking into the walls, so I had to implement a way to keep it wandering around it’s spawn point. It now has to fetch alot more stuff from the API, that caused loading times to increase significantly. So I added threading and other small optimizations to the networking. Thanks to @mixidmb for fixing a bug with Stardance Stats where it would not fetch some projects that were created later on in Stardance. And ofcourse thanks to @torkel for supporting my Stardance Influencer journey New Features: Interactable NPC’s: NPC’s with object- and playercollisions, who can show a dialogue upon the press of a configurable keybind. It wanders around a specific area around it’s spawn point, which can also be configured. It changes faces and shows a keybind hint when you enter the interaction range. Fun Facts: Each project room now contains a Starling NPC, who tells you three fun facts about your project. Such as project hours, leaderboard ranks, etc. Loading Screen: A nice-looking loading screen to keep the players attention when the start-up takes longer than 200ms! Future Plans: Representative Rooms: I wanna add more objects to the project rooms that represent a specific stat on that project. For example spent hours, earned stardust, etc."}, {"post_id": 77384, "ts": "2026-10-06T18:57:56Z", "hours": 10.1469, "text": "Hall of Stars - Interactables, UI manager and Project Info This was by far the hardest part of the project for me. I had to start mixing the generation and objects of the game itself with the UI, to integrate properly working NPC’s and interactable projects. But this was really a necessary part of the process to make the rooms have immersive contents. I managed to survive it (thanks to @torkel ), so now comes the fun part of designing the rooms! New Features: Interactables: Adds a way to select an object and have a specific range around them where the player is able to open an UI upon the press of the set keybind. It also shows a hint for the keybind and what it does when you enter the interaction range. It is also possible to change the texture of the target object when entering the interaction range. UI Manager: A global class that manages the active UI’s and overlays (such as hints for interactables). It makes sure everything is displayed correctly and keybinds and events are passed on to the right UI screen. Project Info: Every room now contains a altar with a book on it, this will contain all your project info (WIP). Future Plans: Detailed Project Rooms: I wanna add more representing objects in the project rooms and possibly add some decoration later on. Better Character? I might add a better fitting character if I have the time for it. NPC’s: I might wanna add some NPC’s you can talk to."}, {"post_id": 71267, "ts": "2026-09-20T15:33:55Z", "hours": 10.0858, "text": "Hall of Stars #4 - UI: Welcome Screen, Dialogues & Input Screens Never thought UI would be this hard, but it looks decently polished after 10h (or 9h and 55m to be precise) of coding. I’ve added a beautiful welcoming screen that sets up the .env for you and explains some stuff (like controls, use case, etc.). I’ve used assets from the Stardance Github . I eventually also found a cartoon yapping mp3 in there, so I thought it’d be funny to use that. No idea what it’s originally used for, but it helps. Thanks to @torkel for supporting my work and helping me endure all this. Peace out! New Features: Welcome Screen: An instructive conversation that consists out of 4 dialogues: An instruction for the keybinds Explaination of what the project is and what the use cases are An input field where you enter your Stardance username to connect to the Stardance Stats API A have fun page Dialogues: A class that draws a screen with text. It takes the text that is spoken and has optional arguments for a character png file and a character name to display. Input Screen: A screen that returns a value which the users enters. Takes a question and a placeholder. Future Plans: Refactor some messy code Add project information to the rooms, like a museum for every project"}, {"post_id": 69761, "ts": "2026-09-17T18:55:26Z", "hours": 7.2286, "text": "Hall of Stars - Collision, Hitboxes, Room Loading/Unloading & Working Doors I’ve been working hard on trying to get this game in a playable state as soon as possible, so I can then further expand the game but also make it ready for shipping whenever I need. That’s why I’m focussing on features like collisions and room navigation. I moved the main loop to level.py to let the world tick everything, and only the visual rendering is done in the main class. You can now walk through doors and easily move rooms and I even added a carpet! Shoutout to my number one fan @torkel for supporting all my great work New Features: Collisions: All collidable are added to a sprite group, which is saved in the level class and passed on to the player class to check for collisions. Hitboxes: Added the option for tiles to have a hitbox smaller than it’s tile (16x16). The player also has a smaller hitbox to make it able to create depth. Room Loading/Unloading: Each room saves it’s own tiles and collidable objects. When a room is loaded, these are added into the global tiles and collidable objects groups. They are removed form the global groups upon unloading the room. Working Doors: The doors now work seamlessly and loads you into a specific room. Future Plans: API class using Stardance Stats from @mixidmb , shoutout to him for creating that API. Generating rooms based on project information with the possibility to view project details."}, {"post_id": 65496, "ts": "2026-09-10T17:56:03Z", "hours": 8.5803, "text": "Hall of Stars #2 - Camera, Rooms, Layers, Dynamic Hallway Generation & More Long time no see! Finally came to a point where committing was valid and the code was not messed up. I was rewriting alot of code throughout the process of adding all these features, because every new feature I came up with needed a change in the previous feature’s code. Anyway shoutout to my number one fan @torkel and may the --force be with you! New Features: Camera: A camera that follows the player around and renders all the visible objects. Rooms: Added the functionality to generate rooms with adjustable width, height and walls. Dynamic Hallway Generation: A subclass of the Rooms class that generates a hallway with a door for every project you have on stardance. Dummy API: Because the stardance API doesn’t have profile fetching yet. Layers: So everything renders correctly Future Plans: Adding a way to see what door represents what project. Adding decorations Adding room teleport logic Adding project visualization in rooms"}, {"post_id": 58802, "ts": "2026-08-31T11:55:23Z", "hours": 5.3786, "text": "Hall of Stars - Character Sprite Animations & Walking Logic First devlog for Hall of Stars, yipee! I came up with this idea while playing Pokemon Diamond on my old DS lite. I just like the way it feels, the movement is so jittery, but it still feels nice to play. So I came up with the idea to make a game with a matching style. I was kinda done with minecraft-themed projects, so I thought: “Why not do something with the Stardance API, since I’m building this project for stardance anyway.” I decided to start making a retro topdown game (just like Pokemon Diamond) where you spawn into a long hallway with doors on the sides. Those doors represent all the projects you’ve made on stardance. When entering a door it will give you more information on the project, like hours spent, number of devlogs and their contents, number of ships, and more if I get the chance. New Features: Screen: Yeah, I added a screen. This makes it possible for your eyes to see what’s happening. It must be one of the best inventions ever in gaming. Character Sprite Texture: I textured the character in all the frames, this took long . The animation and character template are made by ErisEsra , so big shoutout to her. Character Sprite Animations: I’ve made sure the template animation works properly and the player now has idle and walk animations for all four directions. Player Movement: I implemented the logic for moving the player, with the same system as most retro games: Up, Down, Left or Right. No diagonal walking. Future Plans: Constructing the hallway Adding the doors and rooms Making an API class that communicates with the stardance API. Add projects to the hallway through the API Add project details to the rooms"}]...
|
Title: Hall Of Stars by @Camiel | Stardance
Devlo Title: Hall Of Stars by @Camiel | Stardance
Devlogs:
Hall of Stars - Character Sprite Animations & Walking Logic First devlog for Hall of Stars, yipee! I came up with this idea while playing Pokemon Diamond on my old DS lite. I just like the way it feels, the movement is so jittery, but it still feels nice to play. So I came up with the idea to make a game with a matching style. I was kinda done with minecraft-themed projects, so I thought: “Why not do something with the Stardance API, since I’m building this project for stardance anyway.” I decided to start making a retro topdown game (just like Pokemon Diamond) where you spawn into a long hallway with doors on the sides. Those doors represent all the projects you’ve made on stardance. When entering a door it will give you more information on the project, like hours spent, number of devlogs and their contents, number of ships, and more if I get the chance. New Features: Screen: Yeah, I added a screen. This makes it possible for your eyes to see what’s happening. It must be one of the best inventions ever in gaming. Character Sprite Texture: I textured the character in all the frames, this took long . The animation and character template are made by ErisEsra , so big shoutout to her. Character Sprite Animations: I’ve made sure the template animation works properly and the player now has idle and walk animations for all four directions. Player Movement: I implemented the logic for moving the player, with the same system as most retro games: Up, Down, Left or Right. No diagonal walking. Future Plans: Constructing the hallway Adding the doors and rooms Making an API class that communicates with the stardance API. Add projects to the hallway through the API Add project details to the rooms
Hall of Stars #2 - Camera, Rooms, Layers, Dynamic Hallway Generation & More Long time no see! Finally came to a point where committing was valid and the code was not messed up. I was rewriting alot of code throughout the process of adding all these features, because every new feature I came up with needed a change in the previous feature’s code. Anyway shoutout to my number one fan @torkel and may the --force be with you! New Features: Camera: A camera that follows the player around and renders all the visible objects. Rooms: Added the functionality to generate rooms with adjustable width, height and walls. Dynamic Hallway Generation: A subclass of the Rooms class that generates a hallway with a door for every project you have on stardance. Dummy API: Because the stardance API doesn’t have profile fetching yet. Layers: So everything renders correctly Future Plans: Adding a way to see what door represents what project. Adding decorations Adding room teleport logic Adding project visualization in rooms
Hall of Stars - Collision, Hitboxes, Room Loading/Unloading & Working Doors I’ve been working hard on trying to get this game in a playable state as soon as possible, so I can then further expand the game but also make it ready for shipping whenever I need. That’s why I’m focussing on features like collisions and room navigation. I moved the main loop to level.py to let the world tick everything, and only the visual rendering is done in the main class. You can now walk through doors and easily move rooms and I even added a carpet! Shoutout to my number one fan @torkel for supporting all my great work New Features: Collisions: All collidable are added to a sprite group, which is saved in the level class and passed on to the player class to check for collisions. Hitboxes: Added the option for tiles to have a hitbox smaller than it’s tile (16x16). The player also has a smaller hitbox to make it able to create depth. Room Loading/Unloading: Each room saves it’s own tiles and collidable objects. When a room is loaded, these are added into the global tiles and collidable objects groups. They are removed form the global groups upon unloading the room. Working Doors: The doors now work seamlessly and loads you into a specific room. Future Plans: API class using Stardance Stats from @mixidmb , shoutout to him for creating that API. Generating rooms based on project information with the possibility to view project details.
Hall of Stars #4 - UI: Welcome Screen, Dialogues & Input Screens Never thought UI would be this hard, but it looks decently polished after 10h (or 9h and 55m to be precise) of coding. I’ve added a beautiful welcoming screen that sets up the .env for you and explains some stuff (like controls, use case, etc.). I’ve used assets from the Stardance Github . I eventually also found a cartoon yapping mp3 in there, so I thought it’d be funny to use that. No idea what it’s originally used for, but it helps. Thanks to @torkel for supporting my work and helping me endure all this. Peace out! New Features: Welcome Screen: An instructive conversation that consists out of 4 dialogues: An instruction for the keybinds Explaination of what the project is and what the use cases are An input field where you enter your Stardance username to connect to the Stardance Stats API A have fun page Dialogues: A class that draws a screen with text. It takes the text that is spoken and has optional arguments for a character png file and a character name to display. Input Screen: A screen that returns a value which the users enters. Takes a question and a placeholder. Future Plans: Refactor some messy code Add project information to the rooms, like a museum for every project
Hall of Stars - Interactables, UI manager and Project Info This was by far the hardest part of the project for me. I had to start mixing the generation and objects of the game itself with the UI, to integrate properly working NPC’s and interactable projects. But this was really a necessary part of the process to make the rooms have immersive contents. I managed to survive it (thanks to @torkel ), so now comes the fun part of designing the rooms! New Features: Interactables: Adds a way to select an object and have a specific range around them where the player is able to open an UI upon the press of the set keybind. It also shows a hint for the keybind and what it does when you enter the interaction range. It is also possible to change the texture of the target object when entering the interaction range. UI Manager: A global class that manages the active UI’s and overlays (such as hints for interactables). It makes sure everything is displayed correctly and keybinds and events are passed on to the right UI screen. Project Info: Every room now contains a altar with a book on it, this will contain all your project info (WIP). Future Plans: Detailed Project Rooms: I wanna add more representing objects in the project rooms and possibly add some decoration later on. Better Character? I might add a better fitting character if I have the time for it. NPC’s: I might wanna add some NPC’s you can talk to.
Hall of Stars - Interactable NPC’s, Fun Facts and a Loading Screen I’ve gone ahead and added NPC’s to the project rooms, to bring some more life to them. I had to rebuild/refactor some other things in order to implement this, for example the API (which handled requests single-threaded). I put some time into the pixel art for the NPC, which turned out pretty well (my expectations weren’t very high, art is not my strong suit , thanks @evmaagca for the advice ). The walking logic was pretty doable, but it kept walking into the walls, so I had to implement a way to keep it wandering around it’s spawn point. It now has to fetch alot more stuff from the API, that caused loading times to increase significantly. So I added threading and other small optimizations to the networking. Thanks to @mixidmb for fixing a bug with Stardance Stats where it would not fetch some projects that were created later on in Stardance. And ofcourse thanks to @torkel for supporting my Stardance Influencer journey New Features: Interactable NPC’s: NPC’s with object- and playercollisions, who can show a dialogue upon the press of a configurable keybind. It wanders around a specific area around it’s spawn point, which can also be configured. It changes faces and shows a keybind hint when you enter the interaction range. Fun Facts: Each project room now contains a Starling NPC, who tells you three fun facts about your project. Such as project hours, leaderboard ranks, etc. Loading Screen: A nice-looking loading screen to keep the players attention when the start-up takes longer than 200ms! Future Plans: Representative Rooms: I wanna add more objects to the project rooms that represent a specific stat on that project. For example spent hours, earned stardust, etc.
Hall of Stars - Dynamic Project Rooms, Better Depth & Last changes It’s been a long journey, but the time has come… IT’S FINISHED! Stardance is coming to an end, and with it, this project. In this last devlog I wanna thank everyone that worked on and with this YSWS. I’ve had an amazing time for the past few months. For the last time, I’ll tell y’all what I added. I’ve added some decoration to the room based on how many hours you spent on the project that the room belongs too. I had way more in mind, but I was short on time. I’ll now focus on making the README and building the executables. And once again, thank you to @torkel for supporting my Stardance influencer career. New Features: Dynamic Project Rooms: Each project room now contains details based on how much hours you spent on the corresponding project. It adds new objects at 10, 25, 50 and 100 hours. It also adds some things if your project has a super star ! Better Depth: I’ve added some improvements to the depth system so not all things have to be rendered based on their actual position. Thank You’s: Thanks to @mixidmb for making Stardance Stats and maintaining it. My whole project depends on it. Thanks to @evmaagca for the motivation Thanks to the whole Stardance team and anyone who worked on it.
Hall of Stars - Added README I’ve made the README for this project and made some minor changes to show some more statistics in the book on the altar.
Ships:
Hall of Stars About Hall of Stars Hall of Stars is a retro top-down game written entirely in Python. It allows you to explore all your Stardance projects in a museum-like hallway. Every room represents one of your projects and looks different based on how much effort you put into it. To view all your raw statistics, you can walk up to the altar in the middle of the room and read the book on it. Along the way, you may also encounter an NPC who can tell you some fun facts about your project. He might look familiar to you… What I learned with Hall of Stars I’ve never really made a game before. It might have been a questionable choice to make my first game without the use of a game engine, but I enjoyed (almost) every part of it. It gave me a solid understanding of how games actually work under the hood. I learned a lot of new things, such as tiling, nested for-loops and that the y-axis goes down instead of up. The hardest part was making a good-looking reusable UI-system, since I had to draw everything manually with code. That’s probably why it took me around 10 hours to get it working properly....
|
1793350089.8513095
|
1793436489.8513095
|
|
23039
|
ArasakaNet by @RishuKamboj | Stardance
|
RishuKamboj
|
2
|
21.0
|
53
|
[{"ship_num": 1, "ts": "2026-1 [{"ship_num": 1, "ts": "2026-10-01T15:02:06Z", "hours": 8.0, "multiplier": 6.29, "payout": 53, "blessing": "neutral", "text": "IM SO HAPPY THAT I MADE THIS. Ive made a linux like mini experience but on web by adding desktop styles and a few apps! it features :- a startup screen 2)timer app, starnic(dino game) ,Nasa Redirect’s and a notes app(that saves the notes in localStorage too!) 3)a bottom bar and a sidebar(or menu whatever you wanna call it) 4)and a refined desktop like feel with the draggable,closable and glassy windows. the timer and the notes app made me rethink my decision to make this but it was def worth it. You can head over to https://arasaka-net-sepia.vercel.app/ to try it out for yourself!", "repo": "https://github.com/rydei/ArasakaNet", "demo": "https://arasaka-net-sepia.vercel.app/"}, {"ship_num": 2, "ts": "2026-09-17T15:19:57Z", "hours": 13.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "Finished with WebOS 1 !! Gotta say it was really fun and kind of frustrating(im living incarnation of psyduck) anyways my website features:- draggable and closable windows -side bar and a bottombar a start menu 3 apps! (technically 2) my soul head over to https://arasaka-net-sepia.vercel.app/ to try it out! hope you like ittt", "repo": "https://github.com/rydei/ArasakaNet", "demo": "https://arasaka-net-sepia.vercel.app/"}]...
|
[{"post_id": 75866, "ts": "202 [{"post_id": 75866, "ts": "2026-10-01T12:03:51Z", "hours": 1.2072, "text": "added a loading screen and some final touches LETS GO SHIPPIN PIRATES !!!"}, {"post_id": 75851, "ts": "2026-10-01T10:45:27Z", "hours": 3.2997, "text": "DEVELOF PART IDK! added a notes app which can be used to: 1)make notes which are locally saved in localStorage 2)Edit those saved notes 3)Or delete them! other than that i made changes to the side bar and bottom bar to make it look more refined."}, {"post_id": 74854, "ts": "2026-09-28T13:26:08Z", "hours": 3.9031, "text": "NEW ADDITION!! Welcome starnic your own lil dino like game BUT ITS STARSS. also fixed window sizes so now they fit the contents instead of the extra space on the sides"}, {"post_id": 69663, "ts": "2026-09-17T15:03:35Z", "hours": 5.4592, "text": "DEVLOG THREEE!! AND IM BACK AFTER EXAMS!! ok anyways heres what i did:- (1) the icons and sidebar now work (2)there’s two apps and a welcome screen which is basically just system info for now lol. (3) the windows are draggable and hover above the other when selected. well i guess that’s all , i hope yall like it :D"}, {"post_id": 51526, "ts": "2026-08-21T09:05:52Z", "hours": 1.9872, "text": "Devlog Two: Added Draggable and Close-able windows!!! hardest part faced: aligning the header :’)"}, {"post_id": 51091, "ts": "2026-08-20T16:15:36Z", "hours": 5.6867, "text": "Hey There, First Devlog’s here! So far i’ve made the rough design of how the end website will look. Arranged the sidebar and bottom bar using flexbox(i spent way too much time on this wth) 2)Added Background and Favicon Next up im going to make the clock work and add draggable windows and working side buttons!!"}]...
|
Title: ArasakaNet by @RishuKamboj | Stardance
Dev Title: ArasakaNet by @RishuKamboj | Stardance
Devlogs:
Hey There, First Devlog’s here! So far i’ve made the rough design of how the end website will look. Arranged the sidebar and bottom bar using flexbox(i spent way too much time on this wth) 2)Added Background and Favicon Next up im going to make the clock work and add draggable windows and working side buttons!!
Devlog Two: Added Draggable and Close-able windows!!! hardest part faced: aligning the header :’)
DEVLOG THREEE!! AND IM BACK AFTER EXAMS!! ok anyways heres what i did:- (1) the icons and sidebar now work (2)there’s two apps and a welcome screen which is basically just system info for now lol. (3) the windows are draggable and hover above the other when selected. well i guess that’s all , i hope yall like it :D
NEW ADDITION!! Welcome starnic your own lil dino like game BUT ITS STARSS. also fixed window sizes so now they fit the contents instead of the extra space on the sides
DEVELOF PART IDK! added a notes app which can be used to: 1)make notes which are locally saved in localStorage 2)Edit those saved notes 3)Or delete them! other than that i made changes to the side bar and bottom bar to make it look more refined.
added a loading screen and some final touches LETS GO SHIPPIN PIRATES !!!
Ships:
Finished with WebOS 1 !! Gotta say it was really fun and kind of frustrating(im living incarnation of psyduck) anyways my website features:- draggable and closable windows -side bar and a bottombar a start menu 3 apps! (technically 2) my soul head over to https://arasaka-net-sepia.vercel.app/ to try it out! hope you like ittt
IM SO HAPPY THAT I MADE THIS. Ive made a linux like mini experience but on web by adding desktop styles and a few apps! it features :- a startup screen 2)timer app, starnic(dino game) ,Nasa Redirect’s and a notes app(that saves the notes in localStorage too!) 3)a bottom bar and a sidebar(or menu whatever you wanna call it) 4)and a refined desktop like feel with the draggable,closable and glassy windows. the timer and the notes app made me rethink my decision to make this but it was def worth it. You can head over to https://arasaka-net-sepia.vercel.app/ to try it out for yourself!...
|
1793350091.1987026
|
1793436491.1987026
|
|
10962
|
Fogshade shader by @shivamgupta_official13 | Stard Fogshade shader by @shivamgupta_official13 | Stardance...
|
shivamgupta_official13
|
0
|
1.04
|
0
|
[]
|
[{"post_id": 6160, "ts": "2026 [{"post_id": 6160, "ts": "2026-06-10T11:18:41Z", "hours": 1.0369, "text": "I was working on a minceraft shader currently i have finished my code for the shader and the json editing and the files .this shader would feture more striking rays of the sun and more natural fog everywhere and view form far away too and much more and i would post one more devblog about this showcasing the final result and the image of how it looks in minecraft when the shader is applied."}]...
|
Title: Fogshade shader by @shivamgupta_official13 Title: Fogshade shader by @shivamgupta_official13 | Stardance
Devlogs:
I was working on a minceraft shader currently i have finished my code for the shader and the json editing and the files .this shader would feture more striking rays of the sun and more natural fog everywhere and view form far away too and much more and i would post one more devblog about this showcasing the final result and the image of how it looks in minecraft when the shader is applied....
|
1793350092.4672725
|
1793954892.4672725
|