|
4951
|
Untitled by @exotic | Stardance
|
exotic
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Untitled by @exotic | Stardance
|
1793220729.3247762
|
1793825529.3247762
|
|
4952
|
My first slack bot! by @Bogna | Stardance
|
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My first slack bot! by @Bogna | Stardance
|
1792684109.6237733
|
1793288909.6237733
|
|
4953
|
My first slack bot! by @Juhi1 | Stardance
|
Juhi1
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My first slack bot! by @Juhi1 | Stardance
|
1792655332.593906
|
1793260132.593906
|
|
4954
|
My awesome macropad! by @asabnani001 | Stardance
|
asabnani001
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My awesome macropad! by @asabnani001 | Star Title: My awesome macropad! by @asabnani001 | Stardance...
|
1793134216.3384504
|
1793739016.3384504
|
|
4955
|
hackercard by @dev_wizardjc | Stardance
|
dev_wizardjc
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: hackercard by @dev_wizardjc | Stardance
|
1793256944.7582633
|
1793861744.7582633
|
|
4956
|
My first slack bot! by @NotDoodlez | Stardance
|
NotDoodlez
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My first slack bot! by @NotDoodlez | Starda Title: My first slack bot! by @NotDoodlez | Stardance...
|
1792766975.2622042
|
1793371775.2622042
|
|
4957
|
Untitled by @ishowspeed | Stardance
|
ishowspeed
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Untitled by @ishowspeed | Stardance
|
1792925586.5633795
|
1793789586.5633795
|
|
4958
|
Nextbench ios by @yashs | Stardance
|
yashs
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Nextbench ios by @yashs | Stardance
|
1792684458.9368134
|
1793289258.9368134
|
|
4959
|
My first slack bot! by @Khalidah | Stardance
|
Khalidah
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My first slack bot! by @Khalidah | Stardanc Title: My first slack bot! by @Khalidah | Stardance...
|
1792634084.633665
|
1793238884.633665
|
|
4960
|
My awesome macropad! by @richarai2048 | Stardance
|
richarai2048
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My awesome macropad! by @richarai2048 | Sta Title: My awesome macropad! by @richarai2048 | Stardance...
|
1792608478.6096146
|
1793213278.6096146
|
|
4961
|
My awesome macropad! by @anton_carlens | Stardance
|
anton_carlens
|
1
|
3.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-05T20:23:07Z", "hours": 3.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "Okay so just a headds up i might be doing this wrong. But from what i have read this is the way to submit macropad projects (and recive the pcb) since the old way is down. Please let me know if im wrong.", "repo": "https://github.com/Antoncarlens-code/Hexpad-macropad", "demo": "https://antoncarlens-code.github.io/Hexpad-macropad/"}]...
|
[{"post_id": 2868, "ts": "2026 [{"post_id": 2868, "ts": "2026-06-05T18:55:04Z", "hours": 3.1711, "text": "Quick heads-up before I dive in: I had some trouble getting devlogs to actually post for a while, so this is my first one even though the project’s already finished. Because of that I’m packing everything into this single post — the whole build, start to finish, with the details for each stage. What it is Hexpad is a 6-key macropad (a 3×2 cluster) with a rotary encoder up top, running on a Seeed XIAO RP2040. It’s a clipboard/editing pad with a volume knob — front row is Copy/Paste/Cut, rear row is Undo/Redo/Save, and the encoder does volume (press to mute). Step 1 — The case (CAD) The enclosure is a 3D-printed top plate + bottom case. The plate holds the MX switches (standard 14 mm cutouts), has a 7 mm hole for the EC11 encoder, and four corner posts that the bottom case screws into with M2 screws. This is where I hit my first real problem. My original top-plate model was malformed — the plate solid had a stray slab fused 74 mm beneath it, so in the slicer the plate looked like it was floating/sinking. There was no source file to go back to, so I reverse-engineered the actual dimensions straight from the STEP geometry and rebuilt the entire plate as a clean part. Now the whole thing generates — plate is 76 × 74 mm, 3 mm thick, switches on a 19.05 mm grid, mounts at ±31 mm. I also engraved “Hexpad” into the front margin of the plate, 0.6 mm deep. Step 2 — The electronics (schematic + PCB) Because there are only 7 inputs (6 keys + 1 encoder), I skipped the matrix completely — every switch wires straight to its own GPIO using the RP2040’s internal pull-ups, so there’s not a single diode on the board. The pin map: Switches → D0, D1, D2, D3, D6, D7 Encoder A/B/push → D8, D9, D10 D4/D5 (SDA/SCL) left free in case I ever add an OLED Instead of hand-drawing the board, I generated the PCB programmatically with KiCad’s pcbnew API from one coordinate spec — same numbers that drive the CAD. That guarantees the switches, encoder, and mounting holes line up exactly with the printed plate, no manual alignment. I did the schematic the same way, then went back and added wire stubs so the net labels actually read cleanly instead of piling on top of the symbols. The board is 2-layer, 76 × 74 mm (well under the 100 mm limit), DRC clean (0 errors, 0 unconnected), with “Hexpad” on the silkscreen and the Gerbers exported and zipped, ready for fab. Step 3 — The firmware KMK (CircuitPython) on the XIAO RP2040. The keymap just maps each GPIO to a keycode and the encoder to volume up/down + mute. Easy to remap since it’s all in one code.py. Where it’s at Everything’s done and in the repo: parametric CAD, generated PCB + Gerbers, clean schematic, KMK firmware, and a full BOM. Next up is ordering the board, printing the case, and soldering it all together. Sorry again for the radio silence on devlogs — at least this one covers the whole story in one go. 🚀"}]...
|
Title: My awesome macropad! by @anton_carlens | St Title: My awesome macropad! by @anton_carlens | Stardance
Devlogs:
Quick heads-up before I dive in: I had some trouble getting devlogs to actually post for a while, so this is my first one even though the project’s already finished. Because of that I’m packing everything into this single post — the whole build, start to finish, with the details for each stage. What it is Hexpad is a 6-key macropad (a 3×2 cluster) with a rotary encoder up top, running on a Seeed XIAO RP2040. It’s a clipboard/editing pad with a volume knob — front row is Copy/Paste/Cut, rear row is Undo/Redo/Save, and the encoder does volume (press to mute). Step 1 — The case (CAD) The enclosure is a 3D-printed top plate + bottom case. The plate holds the MX switches (standard 14 mm cutouts), has a 7 mm hole for the EC11 encoder, and four corner posts that the bottom case screws into with M2 screws. This is where I hit my first real problem. My original top-plate model was malformed — the plate solid had a stray slab fused 74 mm beneath it, so in the slicer the plate looked like it was floating/sinking. There was no source file to go back to, so I reverse-engineered the actual dimensions straight from the STEP geometry and rebuilt the entire plate as a clean part. Now the whole thing generates — plate is 76 × 74 mm, 3 mm thick, switches on a 19.05 mm grid, mounts at ±31 mm. I also engraved “Hexpad” into the front margin of the plate, 0.6 mm deep. Step 2 — The electronics (schematic + PCB) Because there are only 7 inputs (6 keys + 1 encoder), I skipped the matrix completely — every switch wires straight to its own GPIO using the RP2040’s internal pull-ups, so there’s not a single diode on the board. The pin map: Switches → D0, D1, D2, D3, D6, D7 Encoder A/B/push → D8, D9, D10 D4/D5 (SDA/SCL) left free in case I ever add an OLED Instead of hand-drawing the board, I generated the PCB programmatically with KiCad’s pcbnew API from one coordinate spec — same numbers that drive the CAD. That guarantees the switches, encoder, and mounting holes line up exactly with the printed plate, no manual alignment. I did the schematic the same way, then went back and added wire stubs so the net labels actually read cleanly instead of piling on top of the symbols. The board is 2-layer, 76 × 74 mm (well under the 100 mm limit), DRC clean (0 errors, 0 unconnected), with “Hexpad” on the silkscreen and the Gerbers exported and zipped, ready for fab. Step 3 — The firmware KMK (CircuitPython) on the XIAO RP2040. The keymap just maps each GPIO to a keycode and the encoder to volume up/down + mute. Easy to remap since it’s all in one code.py. Where it’s at Everything’s done and in the repo: parametric CAD, generated PCB + Gerbers, clean schematic, KMK firmware, and a full BOM. Next up is ordering the board, printing the case, and soldering it all together. Sorry again for the radio silence on devlogs — at least this one covers the whole story in one go. 🚀
Ships:
Okay so just a headds up i might be doing this wrong. But from what i have read this is the way to submit macropad projects (and recive the pcb) since the old way is down. Please let me know if im wrong....
|
1793202809.667736
|
1793289209.667736
|
|
4962
|
My awesome macropad! by @keledanko23 | Stardance
|
keledanko23
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My awesome macropad! by @keledanko23 | Star Title: My awesome macropad! by @keledanko23 | Stardance...
|
1793191964.3913853
|
1793796764.3913853
|
|
4963
|
GLaDOS slack bot by @ansonk | Stardance
|
ansonk
|
0
|
2.03
|
0
|
[]
|
[{"post_id": 21183, "ts": "202 [{"post_id": 21183, "ts": "2026-07-03T00:11:06Z", "hours": 2.0286, "text": "To start off with stardance, I decided that making a slack bot would be a fun new challenge and a good way to learn how this whole thing works. I started by loosely following the guide, then started making my own stuff. So far I have just 3 commands: /glados-help /glados-ping /glados-prompt ping and help do as expected, prompt causes the bot to respond with a message, the prompt is sent to an llm inference api. In the future I want to add memory and a way to chat directly without sending commands but I don’t know how to do that yet."}]...
|
Title: GLaDOS slack bot by @ansonk | Stardance
De Title: GLaDOS slack bot by @ansonk | Stardance
Devlogs:
To start off with stardance, I decided that making a slack bot would be a fun new challenge and a good way to learn how this whole thing works. I started by loosely following the guide, then started making my own stuff. So far I have just 3 commands: /glados-help /glados-ping /glados-prompt ping and help do as expected, prompt causes the bot to respond with a message, the prompt is sent to an llm inference api. In the future I want to add memory and a way to chat directly without sending commands but I don’t know how to do that yet....
|
1792738300.120297
|
1793343100.120297
|
|
4964
|
My first slack bot! by @Bandit | Stardance
|
Bandit
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My first slack bot! by @Bandit | Stardance
|
1792918062.103005
|
1793782062.103005
|
|
4965
|
Something by @pramod_pranav26 | Stardance
|
pramod_pranav26
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Something by @pramod_pranav26 | Stardance
|
1792806798.9570696
|
1793411598.9570696
|
|
4966
|
My awesome macropad! by @AB_TRANFORMER | Stardance
|
AB_TRANFORMER
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My awesome macropad! by @AB_TRANFORMER | St Title: My awesome macropad! by @AB_TRANFORMER | Stardance...
|
1793235047.545961
|
1793839847.545961
|
|
4967
|
slackzilla 🦖🦖 by @rylvion | Stardance
|
rylvion
|
0
|
151.14
|
0
|
[]
|
[{"post_id": 78787, "ts": "202 [{"post_id": 78787, "ts": "2026-10-11T16:34:14Z", "hours": 31.9517, "text": "devlog 11 - ADMIN EHANCEMENTS: errors views, log archiving & restoration, logs deletion controls, RAG IMPROVEMENTS AND MORE… date: 11/10/2026 time logged: 31hr 57m version: v0.9.6-beta this release focused on making Slackzilla easier to debug, manage and understand internally. a LOT of work went into the admin panel, route extraction and testing. 1. admin panel got some SERIOUS upgrades added 3 new admin pages for server events, errors and logs. also split admin.css into separate stylesheets because one giant stylesheet isn’t exactly a maintenance strategy. error monitoring added an error viewer with timestamps, stack traces and source files improved error messages to make them more user-friendly log management added a log archive viewer with backup timestamps, line counts and file sizes added backup restoration and switching added controls to delete specific lines, ranges or the last X lines added log rotation and telemetry reset controls added the /log-archives admin endpoint 7 new admin controls: delete-logs , delete-lines , delete-last , delete-line , rotate-logs , restore-log and reset-telemetry that’s a LOT more control over server logs than before. 2. endpoints & session security added 4 new endpoints : 3 admin endpoints: /errors , /errors/stream , /log-archives 1 public endpoint: /api/session /api/session now provides current session information, with csrfToken moved from /api/admin/summary to the new endpoint. also fixed the CSRF token not appearing in the document head. small bug, annoying consequences. removed the children=[] pattern from routes.js and its associated dependencies. 3. RAG / code parser improvements route extraction got a substantial upgrade. detects routes using exact path checks, prefix checks and array-based matching improved HTTP method inference for conditional routes, including GET and POST merges duplicate route entries and inferred methods expanded discovery beyond server/api/ , including /webhook and /admin/login improved /api/routes to return supported methods, match types, source files and line numbers the goal: give the RAG system more accurate route information instead of confidently retrieving incomplete or duplicated data. ᕦ(ò_óˇ)ᕤ 4. AI activity & markdown the AI activity view now displays elapsed time alongside tool summaries and responses, making it easier to follow what the system actually did. replaced the custom Markdown parser with marked AND dompurify for established parsing and HTML sanitisation. switched the configured model from openrouter/free to openai/gpt-6-luna , aiming for better performance and reliability. also deduplicated getReleaseInfo to avoid maintaining redundant version information. 5. testing added 3 npm scripts : test:code-parser for code parser tests test:rag for RAG tests test:all for the broader test suite and validation checks added automated code parser tests covering route extraction, HTTP method inference and deduplication. 6. docs updated README.md and project documentation to reflect the latest endpoints, admin controls, route extraction changes and RAG improvements. documentation staying in sync with the codebase. revolutionary concept, apparently. release summary v0.9.6-beta added: 4 endpoints 7 admin controls 3 admin pages 3 npm testing scripts improved error visibility, log management, session information and route extraction updated Markdown rendering, AI activity information and documentation the main focus was improving maintainability, debugging and the reliability of Slackzilla’s internal tooling. ( ͡° ͜ʖ ͡°) next devlog hint: a terminal is coming. think less clicking through admin pages, more interacting with Slackzilla directly through a terminal interface. details in the NEXT devlog. \(^o^)/"}, {"post_id": 71489, "ts": "2026-09-20T22:15:26Z", "hours": 27.4447, "text": "Devlog 10 - QOL DASHBOARD IMPROVEMENTS, RAG ENHANCEMENTS WITH TOOLS & CACING AND LOTS OF STUFF time logged: 27 hrs 30 mins date: 20/09/2026 version: v0.9.5-beta This devlog is COVERING A LOT of stuff that i did, but im not gonna drag this over like i did from all other devlogs so heres are the features: covering from v0.9.1-beta to v0.9.5-beta, see release-history.json for the full changelog Features added Added RAG TOOLS including getStatus - returns the status of the RAG getCommands - with enhanced filtering (filter by name, usage hint, id, category and fuzzy filter (makes it easier for RAG to find commands)) getReleaseInfo - returns the release info of the CURRENT version and (optionally) any other version (pass it by parameter) runCommand - runs a command by id getLogs - returns recent logs for the RAG to inspect (max 100, default 20) getMetrics - returns the metrics of the RAG (memory usage, cpu usage, etc) getRoutes - returns the routes of the APIs added 3 new scripts ( npm run ) which are rag - runs the RAG with or without the --ai flag to see context/answer cli rag:use-tool - runs a tool by name (with optional parameters) release - appends current release notes from package.json to release-history.json . Added new endpoints /api/telemetry - returns the telemetry history separately from the main status endpoint /api/command/:id - gets or executes a command by id /api/telemetry/stream - streams telemetry updates using SSE /api/admin/server-events - returns server events for the admin dashboard /api/ask - now uses SSE to stream the RAG’s activity ( yers now we can see the RAG in aciton ), context, tool usage, token usage and final response dashboard imporvements added a seperate admin server events page (wevent searching, filtering, prioritisation and stylying) added a command runner on the command page fixed recent activity not showing up on the dashboard Added visible AI activity to the AI page the RAG now emits activity events while processing a question AI page is cached on localStorage so you can go back and forth between pages without losing the AI page state Improved the RAG’s repository awareness added AST-based parsing using acorn and acorn-walk added persistent .rag/index.json added symbol search and dependency analysis added function, export, function call, environment variable and route extraction added richer code context and source metadata added automatic index rebuilding improved path-based dependency detection fixed the RAG detecting references created using path.join(rootDir, ...) add token budgeting and usage tracking. Changed how telemetry is handled telemetry history is no longer included in /api/status or any other endpoints CHANGED all admin endpoints so that none of them has the telemetryHistory anymore Added release history tracking added release-history.json /sz-release can now retrieve release information for different versions npm run release automatically appends the current release notes Tl;DR: RAG got a major upgrade with AST-powered repository indexing (acorn/acorn-walk), persistent indexing via .rag/index.json , symbol search, dependency analysis, function/export/call/env-var/route extraction, richer source metadata, automatic index rebuilding, 7 new RAG tools, 3 new CLI tools, SSE-powered streaming for /api/ask and telemetry, telemetry endpoints, admin server events, live AI activity tracing, token/context/tool usage visibility, AI session caching, release history tracking, telemetry separation from /api/status, admin API cleanup, and a large collection of bug fixes, repository-awareness improvements and major QOL improvements. . hopefully i will be devloging every version till i ship"}, {"post_id": 61072, "ts": "2026-09-03T19:44:37Z", "hours": 29.0225, "text": "Devlog 9: React Dashboard time logged: 29hr 1m date: 03/09/2026 The React dashboard is finally here! I completely migrated the old EJS dashboard with a new React app. THIS will be IS the biggest devlog yet, as it covers a lot of changes and new features. main features added is migration, codebase assistance, graphs, telemetary and a new api. Heres a summary of what i changed renamed src/ to bot/ - this is because its related to the bot and not the server and its not where all the main files are migrated the EJS dashboard into a React app overhauled the UI deleted the pages system and the workflow to build it added a new RAG modal that answers questions about the repo and shows related visual assets (also includes a new rag.js file that handles retrieval and generation of answers) The react dashboard has the following features: 10 pages (Home, Admin, Api, Commands, Docs, Home, Logs, AI, Sitemap, Status) 12 components 8 utilities js exports in the utils/ folder 404 page (with routing) & Error Boundary modal page public AI assistant page with repository-aware retrieval and related visual assets command API with stable IDs, command help, and captured command responses (so API can be called from the dashboard) public status, logs, metrics, command, and AI API endpoints admin feedback controls for filtering, viewing, replying, marking read/unread, and deleting (they dont work on windows only linux) CPU, memory, disk, and network telemetry with responsive graphs and hover data tooltips (so satisfying) Current React Architecture The active client source lives in server/client/src/ . Vite builds it into server/client/dist/ , which is served by server/server.js . React Router renders the page routes declared in server/client/src/components/utils/routes.js . The server still owns the HTTP status code: known browser routes receive the React shell with 200 , while unknown browser routes receive the same shell with 404 so the client can render the NotFound page without hiding the correct HTTP semantics. The old EJS dashboard and static page-generation flow are no longer the active dashboard path. The bot remains in bot/ , separate from the dashboard server, and the server uses explicit Node http handlers under server/api/ . RAG and Command APIs The new /ai page sends questions to POST /api/ask . server/lib/rag.js retrieves relevant repository text while excluding priv/ , .env files, dependencies, logs, and build output. It can identify related image assets such as the calculator flowchart without parsing binary image contents. If configured, the retrieved context is sent to the AI provider; otherwise the endpoint returns a local configuration message and source metadata. Commands are exposed through GET /api/commands , GET /api/commands/:id , and POST /api/commands/:id . The API adapter reuses the same command modules as Slack and captures their responses. The Commands page provides the interactive runner, while the AI page remains focused on repository questions. Explicit natural-language requests can still ask the RAG service to execute a recognised slash command and return its result. Limitations The migration exposed several boundaries that are now documented in docs/ : authentication and CSRF, the webhook protocol, API registration, setup, and RAG behaviour. Runtime persistence is still file-backed through server/database/store.js ; an external database remains a future adapter project rather than a required dependency. Linux systemd controls and deployment scripts are intended for the hosted environment. On Windows local development, the dashboard, APIs, telemetry, and React pages work, but system service actions and Bash deployment are not expected to succeed. The dashboard must be rebuilt and restarted after production client or server changes."}, {"post_id": 48936, "ts": "2026-08-17T14:33:48Z", "hours": 17.7958, "text": "Devlog 8 - server hosted dashboard finally happened time logged: 17hr 47min 45s date: 16/08/2026 The server hosted dashboard is finally here! It is hosted with the webhook, connected to the bot, and shows logs, status, and other information. architecture The Slackzilla server-hosted dashboard is the web control centre sitting alongside the webhook (runs on the same port). The server runs the dashboard, API routes, authentication/session handling, CSRF protection, logging, monitoring and administrative controls. The dashboard has been moving from the earlier static local/pages prototype (see devlog 7) towards an EJS-based server-rendered architecture, with shared layouts/partials and a global dashboard styling system. The server also handles the GitHub deployment webhook on port 9000 , while Nginx sits in front of the application. The dashboard is intended to expose things such as bot status, logs, statistics, monitoring, API documentation and admin controls rather than sshing into the server and running commands manually I’ve been separating the dashboard’s presentation layer, API layer and server logic. During development, I encountered and fixed several contract problems where route modules expected helpers such as context.sendError() and context.sendOk() that the runtime context did not provide. I also changed the authentication-aware API/SSE routes so unauthenticated requests return proper JSON/HTTP responses rather than accidentally redirecting an EventSource connection into an HTML login page. The dashboard has admin-only functionality, CSRF protection and server-side authentication, whilst the bot itself uses Slack’s Events/Slash Command mechanisms for incoming Slack activity. Slack’s Events API delivers subscribed events to the HTTP endpoint, while slash commands are sent to the configured app endpoint via HTTP POST. /api/admin routes are protected by an authenticated admin session and CSRF protection. Admin authentication uses a session cookie, which is only created after logging in through rylvion.hackclub.app/admin/login . The admin password is never stored in plaintext. It is stored as a PBKDF2-HMAC-SHA512 hash in the server environment, using a random salt and a high iteration count. The dashboard does not allow the password to be created or changed, so the server environment must be updated manually before restarting the service. CSRF tokens are generated server-side and sent to the authenticated client via a cookie. For POST requests, the client must return the token in the X-CSRF-Token header, preventing unauthorised or forged requests from triggering admin actions. /api/ (excluding /api/admin ) has no authentication Port 9000 is used for the webhook and the dashboard whilst the bot itself runs on socket mode. The api that currently has these endpoints base url: https://rylvion.hackclub.app/api/ GET /api/status - returns the bot status and other information GET /api/logs - returns the bot logs from slackzilla.log as JSON, including the file size in bytes POST /api/admin/control - allow the admin to control the accepts several actions such as start , stop , restart , redeploy , refresh , refresh-logs , refresh-status (self explanatory actions) with dangerous actions (such as redeploy , restart and stop ) contains a confirmation prompt to prevent accidental execution of the action. GET /api/admin/feedback - returns database feedback as JSON GET /api/admin/feedback/:id - returns the feedback with the given ID as JSON POST /api/admin/feedback/:id - allows the admin to control and accepts 3 actions such as delete , read , unread , respond . GET /api/admin/events - is a SSE (Server Sent Event) endpoint that allows the admin to receive real time events from the server such as logs, status, feedbacks and other information about the bot."}, {"post_id": 38519, "ts": "2026-07-31T22:58:19Z", "hours": 9.9792, "text": "Devlog 7 - Adding a Web Dashboard (locally) time logged: 9hr 58m date: 31/07/2026 ███████╗██╗ █████╗ ██████╗██╗ ██╗███████╗██╗██╗ ██╗ █████╗ ██╔════╝██║ ██╔══██╗██╔════╝██║ ██╔╝╚══███╔╝██║██║ ██║ ██╔══██╗ ███████╗██║ ███████║██║ █████╔╝ ███╔╝ ██║██║ ██║ ███████║ ╚════██║██║ ██╔══██║██║ ██╔═██╗ ███╔╝ ██║██║ ██║ ██╔══██║ ███████║███████╗██║ ██║╚██████╗██║ ██╗███████╗██║███████╗███████╗██║ ██║ ╚══════╝╚══════╝╚═╝ ╚═╝ ╚═════╝╚═╝ ╚═╝╚══════╝╚═╝╚══════╝╚══════╝╚═╝ ╚═╝ added a local prototype view of the web dashboard for slackzilla, its hosted on Github Pages and is a static site that is not connected to the bot yet, it shows the design and layout of the dashboard and how it will look when its connected to the bot. the dashboard is designed to be responsive and works on both desktop and mobile devices. it has a clean and modern design that is easy to navigate. for Github Pages hosting, i used gh-pages branch which meant creating a seperate workflow ( pages.yml ) to build and deploy the dashboard to the dist/ folder. before that i needed a way to make it minified and optimised for production, so i used terser , clean-css and html-minifier-terser to minify the js, css and html files respectively, i do realise that this meant adding extra dependencies to the project (even though its not linked to the bot yet). The deployment website will be hosted on the bot’s server ( rylvion.hackclub.app ) and on the same port as the webhook server i also added new logging functionality that return smth like this the one below, this helps me track the usage of the commands and see how many times they have been used, when they were last used and by whom. this will be useful for the dashboard to show command usage statistics and manage command permissions. { \" commands \" : { \" sz-hash \" : { \" count \" : 3 , \" lastUsedAt \" : \" 2026-07-23T13:27:28.116Z \" , \" lastUser \" : \" rylvion \" , \" lastUserId \" : \" U0A84FA2NP2 \" } } } TL;DR: added a local prototype view of the web dashboard for slackzilla, its hosted on Github Pages and is a static site that is not connected to the bot yet, it shows the design and layout of the dashboard and how it will look when its connected to the bot and logging functionality that return command usage statistics and manage command permissions. introduced a new logging system that logs to both console and a file. added command usage tracking to record how often each command is used. enhanced server.js to serve dashboard, logs, and status pages. improved webhook handling and added signature verification. added a new metrics utility and feedback.js for tracking command usage statistics. next devlog will be about connecting the dashboard to the bot & server and making it functional, its gonna be a long one so stay tuned for that"}, {"post_id": 35837, "ts": "2026-07-27T15:06:51Z", "hours": 6.6219, "text": "Devlog 6 - command buffet time logged: 6hr 37m 19s date: 22/07/2026 okay since most of the major architectural refactors are done, i can finally focus on adding more commands to Slackzilla. this devlog is about the new commands that i added to the bot, which are mostly utility commands that can be used for various purposes. base64 encoding hashing - supports multiple algorithms, default: sha256 decoder - decodes every algorithm that hashing supports random ids (uuid) secure tokens random numbers unix date conversion text case conversion (camel, pascal, snake, kebab) character counter rock paper scissors magic 8ball (the only entertainment command added in this devlog) the trickier parts were the input parsers. hash has to decide whether the first word is an algorithm or part of the text, case needs to split words without mangling the content too much, and unix has to switch between timestamps and readable dates without getting confused by weird inputs. i also added guardrails for invalid ranges and missing text so the bot gives a useful reply instead of just silently failing. the fun commands were the easiest win. 8ball just picks from a response list, and rps does a quick match against the player choice and the bot choice to decide whether it was a win, lose, or tie. it is very low stakes code, which is honestly refreshing after the manifest workflow stuff from last time. all utilities commands all have a help command associated to it the current utilities commands include: /sz-base64 - encodes a string to base64 /sz-hash - generates a hash of a string, default: sha256 /sz-decode - decodes a base64 encoded string /sz-uuid - generates a random uuid /sz-token - generates a random secure token /sz-random - generates a random number in a given range /sz-unix - converts a unix timestamp to a human-readable date and vice versa /sz-case - converts a string to camelCase, PascalCase, snake_case, or kebab-case /sz-count - counts the number of characters in a string /sz-rps - plays rock paper scissors with the bot /sz-calc - evaluates mathematical expression so all of it has a 2nd argument for help, so for example /sz-hash help will show the usage and examples of the command. i also added on package.json , 2 new scripts \"validate-commands\" : \"ajv validate -s schemas/command.schema.json -d src/data/commands.json\" , \"cmd-stats\" : \"node scripts/stats.js\" one to validate the commands.json file against the command.schema.json file, and another to provide statistics about the number of commands in the commands.json file. this will help me keep track of how many commands are in the bot and also make sure that the commands.json file is valid before a pull request is merged. currently, the bot has 22 commands in total, and 11 of them are utility commands (10 of them got added into this devlog (excluding the /sz-8ball that also was added in this devlog, but is an entertainment command)). the other 11 commands are the ones that were already in the bot before this devlog. i need some feedback on what other commands i should add to the bot, so if you have any ideas, please let me know. (im running out of ideas * sighs * ) im also planning on adding a web dashboard to the bot, which will allow users to see the bot’s status, logs, and other information in a more user-friendly way. this will be a big change, so stay tuned for that in the next devlog TL;DR: added a bunch of new slash commands for Slackzilla, kept the implementations small and native where possible, and tightened up the input handling so the new tools fail a little more gracefully."}, {"post_id": 33001, "ts": "2026-07-22T15:09:05Z", "hours": 7.1047, "text": "Devlog 5 - manifest workflow time logged: 7hrs 6min 16 sec date: 21/07/2026 ok so i kinda lied in the last devlog. this ended up being another major architectural change to slackzilla. the slack manifest system was always the most brittle part of the pipeline and manually maintaining manifest.json was a guaranteed way to let things drift. today i finally automated the entire manifest workflow. the new setup makes commands.json and meta.js the single source of truth. i wrote a manifest generator that loads all metadata like descriptions colours oauth scopes bot info and merges it with the command definitions to build a complete slack manifest object. once assembled it writes manifest.json and syncs it during deployment. validation is baked directly into the generator. i wired AJV into both stages. every command is validated against command.schema.json and the final manifest is validated again against slack’s official schema. if anything fails the generator stops immediately with a clear error instead of producing a broken file. this caught several issues especially after i moved all schemas into a dedicated schemas/ directory to clean up the project structure. the github actions workflow also got a major overhaul. every push now generates the manifest validates commands and manifest rotates the slack configuration token updates github secrets syncs the manifest through the slack api and deploys the bot. changing a slash command in commands.json now updates both the bot and the slack app config automatically. no more manual edits to manifest.json or the slack app settings. the entire pipeline is now self maintaining and fully automated. token rotation was the biggest pain. slack configuration tokens only last twelve hours so storing them in github secrets was not enough. i created a fine grained github PAT with permission to modify repo secrets and wrote rotateManifestToken.js to handle the full refresh cycle. it rotates the manifest token receives a new refresh token and updates both secrets so the next deployment does not break. i spent way too long debugging an invalid_refresh_token error. note that slack’s copy button does not copy the existing refresh token it generates a new pair. every time i clicked it the previously saved token became invalid instantly. once i realised that i started updating github secrets immediately after copying the new pair so everything stayed in sync. after that the rotated token still was not being passed correctly between github actions steps. i switched to GITHUB_OUTPUT so the rotation step could hand the new token to the manifest sync step. then slack started returning not_authed which led to another rabbit hole. the manifest update endpoint requires the token in the correct auth header not the request body. once i fixed the request format the entire pipeline finally ran clean end to end. See figure 2 for github actions workflow TL;DR slackzilla now auto generates its slack manifest validates everything with AJV rotates configuration tokens syncs the manifest during deployment and updates the bot server with minimal manual work. after a lot of debugging around token rotation schema mismatches and github actions quirks the deployment pipeline is basically self maintaining except refreshing the github PAT every ninety days."}, {"post_id": 30675, "ts": "2026-07-18T13:24:53Z", "hours": 2.345, "text": "Devlog 4: calc and roll commands time logged: 2 hr 20 minutes date: 17/07/2026 today i spent some time reading the Java Shunting Yard Algorithm implementation on GeeksforGeeks . The example focuses entirely on converting an infix expression into postfix form. It scans the expression character by character, places operands directly into the output string, and uses a stack to manage operators based on precedence and associativity. Once the scan is complete, any remaining operators are appended to produce a postfix expression like 5238-52^^/+. The Java version supports operators including + , - , * , / , and ^ , and it handles parentheses, but it stops after producing the postfix representation. It does not evaluate the numerical result. after reading that, i wanted something more complete for Slackzilla. I used the same core idea of converting infix to postfix, but I extended it in several ways. My implementation tokenises the input instead of reading one character at a time, which allows it to support multi digit numbers and decimals. I added unary minus detection so expressions like -3 or 5*-2 behave correctly. One challenge was distinguishing unary minus from subtraction. The parser has to determine whether it starts with a number or subtracts two values depending on the previous token. I kept exponentiation with the correct right associativity. Once the postfix array is built, I added a second stage that evaluates the postfix expression using a number stack. This lets the function return the final computed value rather than just the postfix notation. The result is a more flexible and practical version of the algorithm that fits naturally into Slackzilla and can evaluate real expressions interactively. after finishing the calculator command, I also added another command to Slackzilla called /sz-roll . This command allows users to simulate dice rolls directly inside Slack. It supports normal dice notation like d6 , custom dice sizes like d20 , multiple dice such as 2d6 , and modifiers like 2d20+5 . I added parsing logic to split the dice expression into the amount of dice, number of sides, and any modifier before rolling each dice individually and calculating the final total. I also added a /sz-roll help and /sz-calc help command which explains how to use the command and shows examples of supported formats. also i spent A LOT of time making the flowchart to describe this more than the implementation itself. I think it will be useful for future reference and for anyone else who wants to understand how the algorithm works. i also added json schema validation for commands.json as talked in devlog 2 the commands.json is the source of truth, so i addded a validator.yml to validate the json schema of commands.json and make sure it is valid before a pull request is merged. This will help prevent errors and ensure that the commands are correctly defined. TL;DR: added a calculator using the Shunting Yard algorithm with postfix evaluation, plus a flexible dice rolling command. Also added help commands, a flowchart and automated JSON schema validation. also ill add way more devlogs from now on since most of my last devlogs were major architecture refactor, unless there is a major change, i will just add a small devlog to add a new command/small feature, fix a bug, improve an existing feature and add more documentation."}, {"post_id": 27894, "ts": "2026-07-13T20:15:52Z", "hours": 6.0267, "text": "Devlog 3 - github actions webhook request (13/07/2026) time logged: 6hr 01min i added a webhook dispatcher that automatically triggers a deployment whenever i commit to the main branch. Instead of manually pulling changes on the server and restarting the service myself, the GitHub Action now sends a signed webhook to my deployment server, which verifies it and runs the deploy script for me. i also added 2 more commands /sz-meme - this makes a meme /sz-echo [str] - this echoes the string you can see the flowchart below and see the full devlog 3 here (hyperlinked) TL;DR whenever i commit the server automatically receives it and slackzilla updates to the latest version"}, {"post_id": 21774, "ts": "2026-07-03T21:35:52Z", "hours": 11.0325, "text": "Devlog 2 - server setup & modular command system & more [03/07/2026] time logged: 10hr 59 min so since the last devlog, i’ve have worked on LOADS of things including behind the scene (this doesnt get tracked on hacaktime :( ), i dont even know if this will hit the char limit, but anyways, here are the logs EDIT: IT DID HIT THE CHAR LIMIT, turns out the original devlog was ~9.6k characters 💀 while the limit is only 4k, so this is the shortened version. the full one is still in priv/devlogs/devlog2.md if anyone wants the extended edition.z Commits logs e47c48ac0970b49015e920607a59657259122f2f - made the cur proj into more modular featuring dynamic command loading system w commands.json as the source of truth on this, i figured out that packing every single thing into one file is a bad idea, so i made a modular command system that loads commands dynamically from a commands.json file, this way, i can add new commands without having to touch the main bot.js file, and also, it makes it easier to manage commands since they are all in one place 03b07ffc6f44d0231f9073f637caee1f9437705a) - added more detailed server logging with time & user at the start of most console logs onto terminal [coloured output] this was way more of a pain than i thought it was gonna be. after countless rounds of testing i finally got it working how i wanted. the ansi colours kept either leaking into the rest of the terminal or resetting back to the default colour when i needed them to go back to the current log level. i was genuinely losing my mind because every “fix” just broke something else. after hours of messing around i ended up making a wrapper so instead of resetting after things like the username or command, it switches back to whatever the current log level colour is (info, success or error), then only resets once right at the end of the log. it took way longer than it should’ve and nearly made me give up, but it finally does exactly what i wanted and nothing leaks anymore.added src/utils/logger.js and switched almost every console.log over to it. it adds timestamps, users, commands and coloured log levels.and changed all the console logs in src/bot.js and src/cmds/ to use the new logger api b81c739cc06edba2895695e51dbbf88d8868f19f - overhauled readme well as the name implies its pretty self explanatory lol but i massively expanded the README with better documentation and setup instructions. Server setup find more info in the setup guide on Step 7 out of 8 in https://stardance.hackclub.com/missions/slack-bot/guide#step-7 i had to apply for a Nest server and get SSH access.yeah so basically my starting gear is a potato server (2GB RAM, 16GB storage) but that’s more than enough for this bot. i also got to mess around with linux for a bit ( yes i am a windows user ). honestly… i kinda liked it and i’m like 80% convinced i’ll switch one day (but too much of a hassle to switch rn, but maybe in the future). after installing everything, setting up the environment variables and creating a systemd service, i finally got the bot running 24/7.TL;DR: i got the bot running 24/7 in the server and it works perfectly fine, and i can now add new commands without having to touch the main bot.js file, and also, and added detailed server logging with time & user aight y’all i spent an ENTIRE HOUR writing this devlog and THEN i had to rewrite a shortened down version, y’all better rate me 9/9 for story telling, rylvion signing out 🫡 pls see my full devlog version"}, {"post_id": 1731, "ts": "2026-06-03T22:11:42Z", "hours": 1.815, "text": "slackzilla after countless testing of figuring out why my bot isnt working, i found out the reason… well sort of… it seems so that the bot doesnt read my messages nad only respond to app commands idk how to make it respond to my messages if it not a cmd but anyways here are the logs 7be9077de2a487f7be8a779123420295dc9bff7e - add MIT license 9ceb9c2fe638f91ab6b0a14326437c9a5f32f499 - add initial bot setup (just for testing!] 66eb775434c871f063fd57daf0bdfc7bd66501f1 - add launch.json, .env.example (like formats), README.md, add stuff to bot.js btw this isnt hosted (will host soon) or anything and to use it you have to use the cmd prefix (sc-) e.g., /sz-ping"}]...
|
Title: slackzilla 🦖🦖 by @rylvion | Stardance
Devl Title: slackzilla 🦖🦖 by @rylvion | Stardance
Devlogs:
slackzilla after countless testing of figuring out why my bot isnt working, i found out the reason… well sort of… it seems so that the bot doesnt read my messages nad only respond to app commands idk how to make it respond to my messages if it not a cmd but anyways here are the logs 7be9077de2a487f7be8a779123420295dc9bff7e - add MIT license 9ceb9c2fe638f91ab6b0a14326437c9a5f32f499 - add initial bot setup (just for testing!] 66eb775434c871f063fd57daf0bdfc7bd66501f1 - add launch.json, .env.example (like formats), README.md, add stuff to bot.js btw this isnt hosted (will host soon) or anything and to use it you have to use the cmd prefix (sc-) e.g., /sz-ping
Devlog 2 - server setup & modular command system & more [03/07/2026] time logged: 10hr 59 min so since the last devlog, i’ve have worked on LOADS of things including behind the scene (this doesnt get tracked on hacaktime :( ), i dont even know if this will hit the char limit, but anyways, here are the logs EDIT: IT DID HIT THE CHAR LIMIT, turns out the original devlog was ~9.6k characters 💀 while the limit is only 4k, so this is the shortened version. the full one is still in priv/devlogs/devlog2.md if anyone wants the extended edition.z Commits logs e47c48ac0970b49015e920607a59657259122f2f - made the cur proj into more modular featuring dynamic command loading system w commands.json as the source of truth on this, i figured out that packing every single thing into one file is a bad idea, so i made a modular command system that loads commands dynamically from a commands.json file, this way, i can add new commands without having to touch the main bot.js file, and also, it makes it easier to manage commands since they are all in one place 03b07ffc6f44d0231f9073f637caee1f9437705a) - added more detailed server logging with time & user at the start of most console logs onto terminal [coloured output] this was way more of a pain than i thought it was gonna be. after countless rounds of testing i finally got it working how i wanted. the ansi colours kept either leaking into the rest of the terminal or resetting back to the default colour when i needed them to go back to the current log level. i was genuinely losing my mind because every “fix” just broke something else. after hours of messing around i ended up making a wrapper so instead of resetting after things like the username or command, it switches back to whatever the current log level colour is (info, success or error), then only resets once right at the end of the log. it took way longer than it should’ve and nearly made me give up, but it finally does exactly what i wanted and nothing leaks anymore.added src/utils/logger.js and switched almost every console.log over to it. it adds timestamps, users, commands and coloured log levels.and changed all the console logs in src/bot.js and src/cmds/ to use the new logger api b81c739cc06edba2895695e51dbbf88d8868f19f - overhauled readme well as the name implies its pretty self explanatory lol but i massively expanded the README with better documentation and setup instructions. Server setup find more info in the setup guide on Step 7 out of 8 in https://stardance.hackclub.com/missions/slack-bot/guide#step-7 i had to apply for a Nest server and get SSH access.yeah so basically my starting gear is a potato server (2GB RAM, 16GB storage) but that’s more than enough for this bot. i also got to mess around with linux for a bit ( yes i am a windows user ). honestly… i kinda liked it and i’m like 80% convinced i’ll switch one day (but too much of a hassle to switch rn, but maybe in the future). after installing everything, setting up the environment variables and creating a systemd service, i finally got the bot running 24/7.TL;DR: i got the bot running 24/7 in the server and it works perfectly fine, and i can now add new commands without having to touch the main bot.js file, and also, and added detailed server logging with time & user aight y’all i spent an ENTIRE HOUR writing this devlog and THEN i had to rewrite a shortened down version, y’all better rate me 9/9 for story telling, rylvion signing out 🫡 pls see my full devlog version
Devlog 3 - github actions webhook request (13/07/2026) time logged: 6hr 01min i added a webhook dispatcher that automatically triggers a deployment whenever i commit to the main branch. Instead of manually pulling changes on the server and restarting the service myself, the GitHub Action now sends a signed webhook to my deployment server, which verifies it and runs the deploy script for me. i also added 2 more commands /sz-meme - this makes a meme /sz-echo [str] - this echoes the string you can see the flowchart below and see the full devlog 3 here (hyperlinked) TL;DR whenever i commit the server automatically receives it and slackzilla updates to the latest version
Devlog 4: calc and roll commands time logged: 2 hr 20 minutes date: 17/07/2026 today i spent some time reading the Java Shunting Yard Algorithm implementation on GeeksforGeeks . The example focuses entirely on converting an infix expression into postfix form. It scans the expression character by character, places operands directly into the output string, and uses a stack to manage operators based on precedence and associativity. Once the scan is complete, any remaining operators are appended to produce a postfix expression like 5238-52^^/+. The Java version supports operators including + , - , * , / , and ^ , and it handles parentheses, but it stops after producing the postfix representation. It does not evaluate the numerical result. after reading that, i wanted something more complete for Slackzilla. I used the same core idea of converting infix to postfix, but I extended it in several ways. My implementation tokenises the input instead of reading one character at a time, which allows it to support multi digit numbers and decimals. I added unary minus detection so expressions like -3 or 5*-2 behave correctly. One challenge was distinguishing unary minus from subtraction. The parser has to determine whether it starts with a number or subtracts two values depending on the previous token. I kept exponentiation with the correct right associativity. Once the postfix array is built, I added a second stage that evaluates the postfix expression using a number stack. This lets the function return the final computed value rather than just the postfix notation. The result is a more flexible and practical version of the algorithm that fits naturally into Slackzilla and can evaluate real expressions interactively. after finishing the calculator command, I also added another command to Slackzilla called /sz-roll . This command allows users to simulate dice rolls directly inside Slack. It supports normal dice notation like d6 , custom dice sizes like d20 , multiple dice such as 2d6 , and modifiers like 2d20+5 . I added parsing logic to split the dice expression into the amount of dice, number of sides, and any modifier before rolling each dice individually and calculating the final total. I also added a /sz-roll help and /sz-calc help command which explains how to use the command and shows examples of supported formats. also i spent A LOT of time making the flowchart to describe this more than the implementation itself. I think it will be useful for future reference and for anyone else who wants to understand how the algorithm works. i also added json schema validation for commands.json as talked in devlog 2 the commands.json is the source of truth, so i addded a validator.yml to validate the json schema of commands.json and make sure it is valid before a pull request is merged. This will help prevent errors and ensure that the commands are correctly defined. TL;DR: added a calculator using the Shunting Yard algorithm with postfix evaluation, plus a flexible dice rolling command. Also added help commands, a flowchart and automated JSON schema validation. also ill add way more devlogs from now on since most of my last devlogs were major architecture refactor, unless there is a major change, i will just add a small devlog to add a new command/small feature, fix a bug, improve an existing feature and add more documentation.
Devlog 5 - manifest workflow time logged: 7hrs 6min 16 sec date: 21/07/2026 ok so i kinda lied in the last devlog. this ended up being another major architectural change to slackzilla. the slack manifest system was always the most brittle part of the pipeline and manually maintaining manifest.json was a guaranteed way to let things drift. today i finally automated the entire manifest workflow. the new setup makes commands.json and meta.js the single source of truth. i wrote a manifest generator that loads all metadata like descriptions colours oauth scopes bot info and merges it with the command definitions to build a complete slack manifest object. once assembled it writes manifest.json and syncs it during deployment. validation is baked directly into the generator. i wired AJV into both stages. every command is validated against command.schema.json and the final manifest is validated again against slack’s official schema. if anything fails the generator stops immediately with a clear error instead of producing a broken file. this caught several issues especially after i moved all schemas into a dedicated schemas/ directory to clean up the project structure. the github actions workflow also got a major overhaul. every push now generates the manifest validates commands and manifest rotates the slack configuration token updates github secrets syncs the manifest through the slack api and deploys the bot. changing a slash command in commands.json now updates both the bot and the slack app config automatically. no more manual edits to manifest.json or the slack app settings. the entire pipeline is now self maintaining and fully automated. token rotation was the biggest pain. slack configuration tokens only last twelve hours so storing them in github secrets was not enough. i created a fine grained github PAT with permission to modify repo secrets and wrote rotateManifestToken.js to handle the full refresh cycle. it rotates the manifest token receives a new refresh token and updates both secrets so the next deployment does not break. i spent way too long debugging an invalid_refresh_token error. note that slack’s copy button does not copy the existing refresh token it generates a new pair. every time i clicked it the previously saved token became invalid instantly. once i realised that i started updating github secrets immediately after copying the new pair so everything stayed in sync. after that the rotated token still was not being passed correctly between github actions steps. i switched to GITHUB_OUTPUT so the rotation step could hand the new token to the manifest sync step. then slack started returning not_authed which led to another rabbit hole. the manifest update endpoint requires the token in the correct auth header not the request body. once i fixed the request format the entire pipeline finally ran clean end to end. See figure 2 for github actions workflow TL;DR slackzilla now auto generates its slack manifest validates everything with AJV rotates configuration tokens syncs the manifest during deployment and updates the bot server with minimal manual work. after a lot of debugging around token rotation schema mismatches and github actions quirks the deployment pipeline is basically self maintaining except refreshing the github PAT every ninety days.
Devlog 6 - command buffet time logged: 6hr 37m 19s date: 22/07/2026 okay since most of the major architectural refactors are done, i can finally focus on adding more commands to Slackzilla. this devlog is about the new commands that i added to the bot, which are mostly utility commands that can be used for various purposes. base64 encoding hashing - supports multiple algorithms, default: sha256 decoder - decodes every algorithm that hashing supports random ids (uuid) secure tokens random numbers unix date conversion text case conversion (camel, pascal, snake, kebab) character counter rock paper scissors magic 8ball (the only entertainment command added in this devlog) the trickier parts were the input parsers. hash has to decide whether the first word is an algorithm or part of the text, case needs to split words without mangling the content too much, and unix has to switch between timestamps and readable dates without getting confused by weird inputs. i also added guardrails for invalid ranges and missing text so the bot gives a useful reply instead of just silently failing. the fun commands were the easiest win. 8ball just picks from a response list, and rps does a quick match against the player choice and the bot choice to decide whether it was a win, lose, or tie. it is very low stakes code, which is honestly refreshing after the manifest workflow stuff from last time. all utilities commands all have a help command associated to it the current utilities commands include: /sz-base64 - encodes a string to base64 /sz-hash - generates a hash of a string, default: sha256 /sz-decode - decodes a base64 encoded string /sz-uuid - generates a random uuid /sz-token - generates a random secure token /sz-random - generates a random number in a given range /sz-unix - converts a unix timestamp to a human-readable date and vice versa /sz-case - converts a string to camelCase, PascalCase, snake_case, or kebab-case /sz-count - counts the number of characters in a string /sz-rps - plays rock paper scissors with the bot /sz-calc - evaluates mathematical expression so all of it has a 2nd argument for help, so for example /sz-hash help will show the usage and examples of the command. i also added on package.json , 2 new scripts "validate-commands" : "ajv validate -s schemas/command.schema.json -d src/data/commands.json" , "cmd-stats" : "node scripts/stats.js" one to validate the commands.json file against the command.schema.json file, and another to provide statistics about the number of commands in the commands.json file. this will help me keep track of how many commands are in the bot and also make sure that the commands.json file is valid before a pull request is merged. currently, the bot has 22 commands in total, and 11 of them are utility commands (10 of them got added into this devlog (excluding the /sz-8ball that also was added in this devlog, but is an entertainment command)). the other 11 commands are the ones that were already in the bot before this devlog. i need some feedback on what other commands i should add to the bot, so if you have any ideas, please let me know. (im running out of ideas * sighs * ) im also planning on adding a web dashboard to the bot, which will allow users to see the bot’s status, logs, and other information in a more user-friendly way. this will be a big change, so stay tuned for that in the next devlog TL;DR: added a bunch of new slash commands for Slackzilla, kept the implementations small and native where possible, and tightened up the input handling so the new tools fail a little more gracefully.
Devlog 7 - Adding a Web Dashboard (locally) time logged: 9hr 58m date: 31/07/2026 ███████╗██╗ █████╗ ██████╗██╗ ██╗███████╗██╗██╗ ██╗ █████╗ ██╔════╝██║ ██╔══██╗██╔════╝██║ ██╔╝╚══███╔╝██║██║ ██║ ██╔══██╗ ███████╗██║ ███████║██║ █████╔╝ ███╔╝ ██║██║ ██║ ███████║ ╚════██║██║ ██╔══██║██║ ██╔═██╗ ███╔╝ ██║██║ ██║ ██╔══██║ ███████║███████╗██║ ██║╚██████╗██║ ██╗███████╗██║███████╗███████╗██║ ██║ ╚══════╝╚══════╝╚═╝ ╚═╝ ╚═════╝╚═╝ ╚═╝╚══════╝╚═╝╚══════╝╚══════╝╚═╝ ╚═╝ added a local prototype view of the web dashboard for slackzilla, its hosted on Github Pages and is a static site that is not connected to the bot yet, it shows the design and layout of the dashboard and how it will look when its connected to the bot. the dashboard is designed to be responsive and works on both desktop and mobile devices. it has a clean and modern design that is easy to navigate. for Github Pages hosting, i used gh-pages branch which meant creating a seperate workflow ( pages.yml ) to build and deploy the dashboard to the dist/ folder. before that i needed a way to make it minified and optimised for production, so i used terser , clean-css and html-minifier-terser to minify the js, css and html files respectively, i do realise that this meant adding extra dependencies to the project (even though its not linked to the bot yet). The deployment website will be hosted on the bot’s server ( rylvion.hackclub.app ) and on the same port as the webhook server i also added new logging functionality that return smth like this the one below, this helps me track the usage of the commands and see how many times they have been used, when they were last used and by whom. this will be useful for the dashboard to show command usage statistics and manage command permissions. { " commands " : { " sz-hash " : { " count " : 3 , " lastUsedAt " : " 2026-07-23T13:27:28.116Z " , " lastUser " : " rylvion " , " lastUserId " : " U0A84FA2NP2 " } } } TL;DR: added a local prototype view of the web dashboard for slackzilla, its hosted on Github Pages and is a static site that is not connected to the bot yet, it shows the design and layout of the dashboard and how it will look when its connected to the bot and logging functionality that return command usage statistics and manage command permissions. introduced a new logging system that logs to both console and a file. added command usage tracking to record how often each command is used. enhanced server.js to serve dashboard, logs, and status pages. improved webhook handling and added signature verification. added a new metrics utility and feedback.js for tracking command usage statistics. next devlog will be about connecting the dashboard to the bot & server and making it functional, its gonna be a long one so stay tuned for that
Devlog 8 - server hosted dashboard finally happened time logged: 17hr 47min 45s date: 16/08/2026 The server hosted dashboard is finally here! It is hosted with the webhook, connected to the bot, and shows logs, status, and other information. architecture The Slackzilla server-hosted dashboard is the web control centre sitting alongside the webhook (runs on the same port). The server runs the dashboard, API routes, authentication/session handling, CSRF protection, logging, monitoring and administrative controls. The dashboard has been moving from the earlier static local/pages prototype (see devlog 7) towards an EJS-based server-rendered architecture, with shared layouts/partials and a global dashboard styling system. The server also handles the GitHub deployment webhook on port 9000 , while Nginx sits in front of the application. The dashboard is intended to expose things such as bot status, logs, statistics, monitoring, API documentation and admin controls rather than sshing into the server and running commands manually I’ve been separating the dashboard’s presentation layer, API layer and server logic. During development, I encountered and fixed several contract problems where route modules expected helpers such as context.sendError() and context.sendOk() that the runtime context did not provide. I also changed the authentication-aware API/SSE routes so unauthenticated requests return proper JSON/HTTP responses rather than accidentally redirecting an EventSource connection into an HTML login page. The dashboard has admin-only functionality, CSRF protection and server-side authentication, whilst the bot itself uses Slack’s Events/Slash Command mechanisms for incoming Slack activity. Slack’s Events API delivers subscribed events to the HTTP endpoint, while slash commands are sent to the configured app endpoint via HTTP POST. /api/admin routes are protected by an authenticated admin session and CSRF protection. Admin authentication uses a session cookie, which is only created after logging in through rylvion.hackclub.app/admin/login . The admin password is never stored in plaintext. It is stored as a PBKDF2-HMAC-SHA512 hash in the server environment, using a random salt and a high iteration count. The dashboard does not allow the password to be created or changed, so the server environment must be updated manually before restarting the service. CSRF tokens are generated server-side and sent to the authenticated client via a cookie. For POST requests, the client must return the token in the X-CSRF-Token header, preventing unauthorised or forged requests from triggering admin actions. /api/ (excluding /api/admin ) has no authentication Port 9000 is used for the webhook and the dashboard whilst the bot itself runs on socket mode. The api that currently has these endpoints base url: https://rylvion.hackclub.app/api/ GET /api/status - returns the bot status and other information GET /api/logs - returns the bot logs from slackzilla.log as JSON, including the file size in bytes POST /api/admin/control - allow the admin to control the accepts several actions such as start , stop , restart , redeploy , refresh , refresh-logs , refresh-status (self explanatory actions) with dangerous actions (such as redeploy , restart and stop ) contains a confirmation prompt to prevent accidental execution of the action. GET /api/admin/feedback - returns database feedback as JSON GET /api/admin/feedback/:id - returns the feedback with the given ID as JSON POST /api/admin/feedback/:id - allows the admin to control and accepts 3 actions such as delete , read , unread , respond . GET /api/admin/events - is a SSE (Server Sent Event) endpoint that allows the admin to receive real time events from the server such as logs, status, feedbacks and other information about the bot.
Devlog 9: React Dashboard time logged: 29hr 1m date: 03/09/2026 The React dashboard is finally here! I completely migrated the old EJS dashboard with a new React app. THIS will be IS the biggest devlog yet, as it covers a lot of changes and new features. main features added is migration, codebase assistance, graphs, telemetary and a new api. Heres a summary of what i changed renamed src/ to bot/ - this is because its related to the bot and not the server and its not where all the main files are migrated the EJS dashboard into a React app overhauled the UI deleted the pages system and the workflow to build it added a new RAG modal that answers questions about the repo and shows related visual assets (also includes a new rag.js file that handles retrieval and generation of answers) The react dashboard has the following features: 10 pages (Home, Admin, Api, Commands, Docs, Home, Logs, AI, Sitemap, Status) 12 components 8 utilities js exports in the utils/ folder 404 page (with routing) & Error Boundary modal page public AI assistant page with repository-aware retrieval and related visual assets command API with stable IDs, command help, and captured command responses (so API can be called from the dashboard) public status, logs, metrics, command, and AI API endpoints admin feedback controls for filtering, viewing, replying, marking read/unread, and deleting (they dont work on windows only linux) CPU, memory, disk, and network telemetry with responsive graphs and hover data tooltips (so satisfying) Current React Architecture The active client source lives in server/client/src/ . Vite builds it into server/client/dist/ , which is served by server/server.js . React Router renders the page routes declared in server/client/src/components/utils/routes.js . The server still owns the HTTP status code: known browser routes receive the React shell with 200 , while unknown browser routes receive the same shell with 404 so the client can render the NotFound page without hiding the correct HTTP semantics. The old EJS dashboard and static page-generation flow are no longer the active dashboard path. The bot remains in bot/ , separate from the dashboard server, and the server uses explicit Node http handlers under server/api/ . RAG and Command APIs The new /ai page sends questions to POST /api/ask . server/lib/rag.js retrieves relevant repository text while excluding priv/ , .env files, dependencies, logs, and build output. It can identify related image assets such as the calculator flowchart without parsing binary image contents. If configured, the retrieved context is sent to the AI provider; otherwise the endpoint returns a local configuration message and source metadata. Commands are exposed through GET /api/commands , GET /api/commands/:id , and POST /api/commands/:id . The API adapter reuses the same command modules as Slack and captures their responses. The Commands page provides the interactive runner, while the AI page remains focused on repository questions. Explicit natural-language requests can still ask the RAG service to execute a recognised slash command and return its result. Limitations The migration exposed several boundaries that are now documented in docs/ : authentication and CSRF, the webhook protocol, API registration, setup, and RAG behaviour. Runtime persistence is still file-backed through server/database/store.js ; an external database remains a future adapter project rather than a required dependency. Linux systemd controls and deployment scripts are intended for the hosted environment. On Windows local development, the dashboard, APIs, telemetry, and React pages work, but system service actions and Bash deployment are not expected to succeed. The dashboard must be rebuilt and restarted after production client or server changes.
Devlog 10 - QOL DASHBOARD IMPROVEMENTS, RAG ENHANCEMENTS WITH TOOLS & CACING AND LOTS OF STUFF time logged: 27 hrs 30 mins date: 20/09/2026 version: v0.9.5-beta This devlog is COVERING A LOT of stuff that i did, but im not gonna drag this over like i did from all other devlogs so heres are the features: covering from v0.9.1-beta to v0.9.5-beta, see release-history.json for the full changelog Features added Added RAG TOOLS including getStatus - returns the status of the RAG getCommands - with enhanced filtering (filter by name, usage hint, id, category and fuzzy filter (makes it easier for RAG to find commands)) getReleaseInfo - returns the release info of the CURRENT version and (optionally) any other version (pass it by parameter) runCommand - runs a command by id getLogs - returns recent logs for the RAG to inspect (max 100, default 20) getMetrics - returns the metrics of the RAG (memory usage, cpu usage, etc) getRoutes - returns the routes of the APIs added 3 new scripts ( npm run ) which are rag - runs the RAG with or without the --ai flag to see context/answer cli rag:use-tool - runs a tool by name (with optional parameters) release - appends current release notes from package.json to release-history.json . Added new endpoints /api/telemetry - returns the telemetry history separately from the main status endpoint /api/command/:id - gets or executes a command by id /api/telemetry/stream - streams telemetry updates using SSE /api/admin/server-events - returns server events for the admin dashboard /api/ask - now uses SSE to stream the RAG’s activity ( yers now we can see the RAG in aciton ), context, tool usage, token usage and final response dashboard imporvements added a seperate admin server events page (wevent searching, filtering, prioritisation and stylying) added a command runner on the command page fixed recent activity not showing up on the dashboard Added visible AI activity to the AI page the RAG now emits activity events while processing a question AI page is cached on localStorage so you can go back and forth between pages without losing the AI page state Improved the RAG’s repository awareness added AST-based parsing using acorn and acorn-walk added persistent .rag/index.json added symbol search and dependency analysis added function, export, function call, environment variable and route extraction added richer code context and source metadata added automatic index rebuilding improved path-based dependency detection fixed the RAG detecting references created using path.join(rootDir, ...) add token budgeting and usage tracking. Changed how telemetry is handled telemetry history is no longer included in /api/status or any other endpoints CHANGED all admin endpoints so that none of them has the telemetryHistory anymore Added release history tracking added release-history.json /sz-release can now retrieve release information for different versions npm run release automatically appends the current release notes Tl;DR: RAG got a major upgrade with AST-powered repository indexing (acorn/acorn-walk), persistent indexing via .rag/index.json , symbol search, dependency analysis, function/export/call/env-var/route extraction, richer source metadata, automatic index rebuilding, 7 new RAG tools, 3 new CLI tools, SSE-powered streaming for /api/ask and telemetry, telemetry endpoints, admin server events, live AI activity tracing, token/context/tool usage visibility, AI session caching, release history tracking, telemetry separation from /api/status, admin API cleanup, and a large collection of bug fixes, repository-awareness improvements and major QOL improvements. . hopefully i will be devloging every version till i ship
devlog 11 - ADMIN EHANCEMENTS: errors views, log archiving & restoration, logs deletion controls, RAG IMPROVEMENTS AND MORE… date: 11/10/2026 time logged: 31hr 57m version: v0.9.6-beta this release focused on making Slackzilla easier to debug, manage and understand internally. a LOT of work went into the admin panel, route extraction and testing. 1. admin panel got some SERIOUS upgrades added 3 new admin pages for server events, errors and logs. also split admin.css into separate stylesheets because one giant stylesheet isn’t exactly a maintenance strategy. error monitoring added an error viewer with timestamps, stack traces and source files improved error messages to make them more user-friendly log management added a log archive viewer with backup timestamps, line counts and file sizes added backup restoration and switching added controls to delete specific lines, ranges or the last X lines added log rotation and telemetry reset controls added the /log-archives admin endpoint 7 new admin controls: delete-logs , delete-lines , delete-last , delete-line , rotate-logs , restore-log and reset-telemetry that’s a LOT more control over server logs than before. 2. endpoints & session security added 4 new endpoints : 3 admin endpoints: /errors , /errors/stream , /log-archives 1 public endpoint: /api/session /api/session now provides current session information, with csrfToken moved from /api/admin/summary to the new endpoint. also fixed the CSRF token not appearing in the document head. small bug, annoying consequences. removed the children=[] pattern from routes.js and its associated dependencies. 3. RAG / code parser improvements route extraction got a substantial upgrade. detects routes using exact path checks, prefix checks and array-based matching improved HTTP method inference for conditional routes, including GET and POST merges duplicate route entries and inferred methods expanded discovery beyond server/api/ , including /webhook and /admin/login improved /api/routes to return supported methods, match types, source files and line numbers the goal: give the RAG system more accurate route information instead of confidently retrieving incomplete or duplicated data. ᕦ(ò_óˇ)ᕤ 4. AI activity & markdown the AI activity view now displays elapsed time alongside tool summaries and responses, making it easier to follow what the system actually did. replaced the custom Markdown parser with marked AND dompurify for established parsing and HTML sanitisation. switched the configured model from openrouter/free to openai/gpt-6-luna , aiming for better performance and reliability. also deduplicated getReleaseInfo to avoid maintaining redundant version information. 5. testing added 3 npm scripts : test:code-parser for code parser tests test:rag for RAG tests test:all for the broader test suite and validation checks added automated code parser tests covering route extraction, HTTP method inference and deduplication. 6. docs updated README.md and project documentation to reflect the latest endpoints, admin controls, route extraction changes and RAG improvements. documentation staying in sync with the codebase. revolutionary concept, apparently. release summary v0.9.6-beta added: 4 endpoints 7 admin controls 3 admin pages 3 npm testing scripts improved error visibility, log management, session information and route extraction updated Markdown rendering, AI activity information and documentation the main focus was improving maintainability, debugging and the reliability of Slackzilla’s internal tooling. ( ͡° ͜ʖ ͡°) next devlog hint: a terminal is coming. think less clicking through admin pages, more interacting with Slackzilla directly through a terminal interface. details in the NEXT devlog. \(^o^)/...
|
1792752514.4039207
|
1793357314.4039207
|
|
4968
|
My awesome macropad! by @ajf_Felizardo | Stardance
|
ajf_Felizardo
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My awesome macropad! by @ajf_Felizardo | St Title: My awesome macropad! by @ajf_Felizardo | Stardance...
|
1793206123.164144
|
1793810923.164144
|
|
4969
|
Space Gambling by @LilPardo | Stardance
|
LilPardo
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Space Gambling by @LilPardo | Stardance
|
1793188310.0762243
|
1793793110.0762243
|
|
4970
|
Untitled project by @gargi_ipad | Stardance
|
gargi_ipad
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Untitled project by @gargi_ipad | Stardance
|
1792727416.7074313
|
1793332216.7074313
|
|
4971
|
ARTEMIS - Laser shooting game by @Kika | Stardance
|
Kika
|
0
|
0.68
|
0
|
[]
|
[{"post_id": 954, "ts": "2026- [{"post_id": 954, "ts": "2026-06-02T18:38:52Z", "hours": 0.6792, "text": "I decided to do a mid scope project as my debut in hackclub, i got an idea and here it is, the Artemis - coming from the Greek goddess of hunting. Today i spent about 2 hours getting the idea planned and time tracking to work (it still doesnt work on hardware) so tomorrow i will just use lapse and journal the stuff properly in hopes of my time being counted as i was told on slack."}]...
|
Title: ARTEMIS - Laser shooting game by @Kika | St Title: ARTEMIS - Laser shooting game by @Kika | Stardance
Devlogs:
I decided to do a mid scope project as my debut in hackclub, i got an idea and here it is, the Artemis - coming from the Greek goddess of hunting. Today i spent about 2 hours getting the idea planned and time tracking to work (it still doesnt work on hardware) so tomorrow i will just use lapse and journal the stuff properly in hopes of my time being counted as i was told on slack....
|
1792702205.020076
|
1793307005.020076
|
|
4972
|
3ds rocket sim by @Python3 | Stardance
|
Python3
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: 3ds rocket sim by @Python3 | Stardance
|
1792676863.6254556
|
1793281663.6254556
|
|
4973
|
My awesome macropad! by @reverseflash | Stardance
|
reverseflash
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My awesome macropad! by @reverseflash | Sta Title: My awesome macropad! by @reverseflash | Stardance...
|
1792594290.9789214
|
1793199090.9789214
|
|
4974
|
ATLAS by @reverseflash | Stardance
|
reverseflash
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: ATLAS by @reverseflash | Stardance
|
1793152604.703631
|
1793757404.703631
|
|
4975
|
My awesome macropad! by @tarou | Stardance
|
tarou
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My awesome macropad! by @tarou | Stardance
|
1793191734.3575668
|
1793796534.3575668
|
|
4976
|
Figure Skating Biomechanics Simulator by @vyonnie Figure Skating Biomechanics Simulator by @vyonnie | Stardance...
|
vyonnie
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Figure Skating Biomechanics Simulator by @v Title: Figure Skating Biomechanics Simulator by @vyonnie | Stardance...
|
1793166441.5282202
|
1793771241.5282202
|
|
4977
|
My awesome macropad! by @Artemis | Stardance
|
Artemis
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My awesome macropad! by @Artemis | Stardanc Title: My awesome macropad! by @Artemis | Stardance...
|
1793162869.0922248
|
1793767669.0922248
|
|
4978
|
Untitled project by @Sandels66 | Stardance
|
Sandels66
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Untitled project by @Sandels66 | Stardance
|
1792781241.0865524
|
1793386041.0865524
|
|
4979
|
Untitled project by @fayv | Stardance
|
fayv
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Untitled project by @fayv | Stardance
|
1792623120.1604843
|
1793227920.1604843
|
|
4980
|
First Person Perspective Camera by @KidOrca | Star First Person Perspective Camera by @KidOrca | Stardance...
|
KidOrca
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: First Person Perspective Camera by @KidOrca Title: First Person Perspective Camera by @KidOrca | Stardance...
|
1792738502.3886013
|
1793343302.3886013
|
|
4981
|
My first slack bot! by @Artemis | Stardance
|
Artemis
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My first slack bot! by @Artemis | Stardance
|
1792651812.5316155
|
1793256612.5316155
|
|
4982
|
Weather Haiku Generator by @GamerFuryAction | Star Weather Haiku Generator by @GamerFuryAction | Stardance...
|
GamerFuryAction
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Weather Haiku Generator by @GamerFuryAction Title: Weather Haiku Generator by @GamerFuryAction | Stardance...
|
1793238718.7727935
|
1793843518.7727935
|
|
4983
|
Board Game Recommender by @RavenRabbit | Stardance
|
RavenRabbit
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Board Game Recommender by @RavenRabbit | St Title: Board Game Recommender by @RavenRabbit | Stardance...
|
1793213473.9258554
|
1793818273.9258554
|
|
4984
|
Untitled project by @super_man2775 | Stardance
|
super_man2775
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Untitled project by @super_man2775 | Starda Title: Untitled project by @super_man2775 | Stardance...
|
1792676881.234423
|
1793281681.234423
|
|
4985
|
My first slack bot! by @Rishik | Stardance
|
Rishik
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My first slack bot! by @Rishik | Stardance
|
1792604839.446755
|
1793209639.446755
|
|
4986
|
Untitled by @Artemis | Stardance
|
Artemis
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Untitled by @Artemis | Stardance
|
1793260345.004186
|
1793865145.004186
|
|
4987
|
Untitled project by @Skully | Stardance
|
Skully
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Untitled project by @Skully | Stardance
|
1793228001.0018845
|
1793832801.0018845
|
|
4988
|
Untitled by @Artemis | Stardance
|
Artemis
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Untitled by @Artemis | Stardance
|
1793231407.4026723
|
1793836207.4026723
|
|
4989
|
My awesome macropad! by @fayv | Stardance
|
fayv
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My awesome macropad! by @fayv | Stardance
|
1792795780.4180753
|
1793400580.4180753
|
|
4990
|
My first slack bot! by @jbishop28 | Stardance
|
jbishop28
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My first slack bot! by @jbishop28 | Stardan Title: My first slack bot! by @jbishop28 | Stardance...
|
1793177597.594737
|
1793782397.594737
|
|
4991
|
My awesome macropad! by @Soumith | Stardance
|
Soumith
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My awesome macropad! by @Soumith | Stardanc Title: My awesome macropad! by @Soumith | Stardance...
|
1792655637.5615067
|
1793260437.5615067
|
|
4992
|
Sheet music to midi transcriber by @MetalFruit | S Sheet music to midi transcriber by @MetalFruit | Stardance...
|
MetalFruit
|
0
|
9.23
|
0
|
[]
|
[{"post_id": 1781, "ts": "2026 [{"post_id": 1781, "ts": "2026-06-03T23:52:36Z", "hours": 9.2281, "text": "note identification, made some test sheet music and a midi track for it. next will be testing the code, i expect glitches involving rest identification."}]...
|
Title: Sheet music to midi transcriber by @MetalFr Title: Sheet music to midi transcriber by @MetalFruit | Stardance
Devlogs:
note identification, made some test sheet music and a midi track for it. next will be testing the code, i expect glitches involving rest identification....
|
1792727633.0895
|
1793332433.0895
|
|
4993
|
Slime runner by @mustafaali192012 | Stardance
|
mustafaali192012
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Slime runner by @mustafaali192012 | Stardan Title: Slime runner by @mustafaali192012 | Stardance...
|
1793177468.6474087
|
1793782268.6474087
|
|
4994
|
Tamagochi pet by @S0l4Ce | Stardance
|
S0l4Ce
|
1
|
52.03
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-20T05:08:22Z", "hours": 45.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I made a tamagotchi pet (i am aware that throughout the project, the spelling of it has been inconsistent) But anyway, what i found most challenging was having to look through the loop constantly making adjustments based off minor errors during each test run and incorrect wiring making me feel like i had the code wrong. I am proud that I learned surprisingly a lot. The screenshot is merely just part of it and you should check it out yourself! both the source for the software and hardware is in there. The latest software build is in a separate branch and you may need to scope around for the latest hardware build. PLEASE note that all of the hardware additions - if you truly want to build it yourself, is pushing the limits of the esp32 so please run it while using a powerful cable.", "repo": "https://github.com/mootonlee/tamagotchi-", "demo": ""}]...
|
[{"post_id": 81143, "ts": "202 [{"post_id": 81143, "ts": "2026-10-20T02:14:13Z", "hours": 1.0578, "text": "spent this hour troubleshooting and figuring out how to add wires. was super unsucessful and wasted my time. im pretty annoyed"}, {"post_id": 80851, "ts": "2026-10-19T00:50:55Z", "hours": 2.3, "text": "Finished adding modules like the LEDs, resistors, etc. All i need now is the wiring which i heard is tedious"}, {"post_id": 80585, "ts": "2026-10-18T07:04:57Z", "hours": 1.4167, "text": "Im very proud of my work! i finished up the screen, fixed misalignments, ensured precision, and in the end, everything fit perfectly!"}, {"post_id": 80513, "ts": "2026-10-17T22:48:45Z", "hours": 2.26, "text": "got mad countless times. Im doing my CAD for my project because youll now get permanently rejected if you miss it and i never knew. Im making the screen myself because i cant find it online. Below is a picture of how its assembled so far, and i would post the part im making right now but this just looks better. Also, does the CAD have to be fully accurate? ive never done a CAD before so parts i make myself may look off but ill try my best to make the measurements right."}, {"post_id": 70980, "ts": "2026-09-20T04:48:45Z", "hours": 6.0014, "text": "finally finished the 2nd personality. will be shipping my project. only thing left to do is fix bugs (i already scanned software and hardware for bugs. though the code seems somewhat contradictory to itself, it still works but please report bugs under this one’s comment and check out my submission and the demo video!"}, {"post_id": 63407, "ts": "2026-09-07T07:10:06Z", "hours": 1.4625, "text": "im starting work on the radiobuttons for interchangable personality to wrap up the project. im using placeholders so the face looks red if the radiobuttons are selected so it would look unpleasant to see but yeah"}, {"post_id": 59986, "ts": "2026-09-02T02:11:14Z", "hours": 2.4203, "text": "Got back on track, finally! It now gets visibly dim below 50 value on light, and dark below 25, along with squint and sleep. Im now going to begin working on the other expressions after I finish adding the dim to smile and alone faces. This thing is ending soon so idk if i will be able to add the computer control functions as promised :( I also switched to cachyos so Idk how that would go either. Check out the hardware version on my page though! its finished"}, {"post_id": 52633, "ts": "2026-08-22T21:16:19Z", "hours": 0.5211, "text": "My windows OS broke, not sure how, so im running on my second SSD and my most recent work has been erased! (software version) random thumbnail ig but im gonna be re-doing whatever has been erased.."}, {"post_id": 41108, "ts": "2026-08-05T03:07:48Z", "hours": 3.4297, "text": "finally added a sleep system, dimming system, and a fully fixed and functional lonely system. when lights are at or below 50, the lights will go dim, and below 25, they will go even dimmer, and it will sleep (software) I will the face variants next, and then actual interactive computer controls. shy and moody are still not ready yet"}, {"post_id": 34593, "ts": "2026-07-25T13:29:57Z", "hours": 2.5967, "text": "added lonely, smile, and neutral, also added placeholders for the soon to be added personalities and a brightness slider. Both are unfunctional and i only have the 3 faces for now. go check out my hardware version, its fully functional"}, {"post_id": 32247, "ts": "2026-07-21T09:09:49Z", "hours": 1.2072, "text": "working on a software version of my project 🔥 I main micropython but I’m adjusting to python for this and learning the different ways things are written, and figuring out how to make faces. Can anyone tell me if theres a designer that gives you the code when you draw something on a canvas? similar to lopaka?? The software version is projected to have more features for computer control than the hardware version. After finishing the faces and overall logic, I will add the additional side controls for it, like light and stuff"}, {"post_id": 32144, "ts": "2026-07-21T03:23:42Z", "hours": 9.8794, "text": "built an extension for the pet. It connects to the pet using gnd and 4 labeled gpio pins, though the 4th one connects to 0 and not 40. It works somewhat like a stream deck; It opens 2 games, 2 code editors, a browser, and shuts off or closes tabs on my computer without needing special permissions, it is built for windows though. Most of the hours logged came from trial and error. Most of the time the buttons wouldnt register, spam the same commands, double clicks wouldnt register, and it was a mess for hours. did some bugfixes involving screen bugs during personality swaps, and the pet “forgetting” its personality. please suggest additional ideas."}, {"post_id": 30476, "ts": "2026-07-18T02:37:34Z", "hours": 1.7375, "text": "Rewired to remove clutter. Back isn’t looking too good but the front is, when I run out of ideas ill probably build a shell for it please make recommendations"}, {"post_id": 30124, "ts": "2026-07-17T13:22:42Z", "hours": 2.4481, "text": "Added another personality, shy. added “cores” that determine the personality when plugged in, red for moody and blue for shy. unplug for normal. The shy personality features new unique faces. led colors and shaken face remain same"}, {"post_id": 29977, "ts": "2026-07-17T06:07:54Z", "hours": 1.6644, "text": "Ignore devlog: Tried making online demo but i pressed a button and all my tabs refreshed all at once and reset my work. Im publishing the devlog because i still did the work and i dont want it to go to waste (IGNORE THIS DEVLOG)"}, {"post_id": 29812, "ts": "2026-07-16T23:08:57Z", "hours": 3.2333, "text": "Added extra personality. If you plug a red LED in, it will get a more of a moody personality. It will look angry, sleep angry, and will usually just be angry (shaken face does not change.) unplugging the red LED will make it instantly revert to default personality let me know other interchangeable personalities I should add, or other software and hardware suggestions. Thanks."}, {"post_id": 28868, "ts": "2026-07-15T13:02:50Z", "hours": 2.6472, "text": "Added a gyroscope so the pet can become dizzy when shook. It features a red backlight, and remains dizzy for about 5 seconds. It was really a 20-30 minute setup after learning how to code and use one, and installing the libraries, but that extra addition turned into hours of additional troubleshooting since I was unfamiliar with the hardware. I eventually got it working after plenty of trial and error, and the real issue was just a couple lines of code. I’m unfortunately not getting much views, which is discouraging, but if you do come across this and decide to click on it, please suggest something in the comments. Thanks."}, {"post_id": 28151, "ts": "2026-07-14T08:19:06Z", "hours": 0.6217, "text": "Added status lights; finishing off full basic functionality for the pet. any additional features would be improvements, hardware additions, and wiring. full explanation of functions below: The “pet” is a TFT resistive touchscreen. Its face, as you can see, is a simple white and black pixelated look. 4 functions (for now): lonely - after 30 seconds of no interaction, after waking up or not being pet, it will become lonely, which is a sad face of course. The backlight glows a gloomy blue, slightly purple. neutral - base face, the pet is neutral when it isn’t lonely, had just woken up, and had recently been pet. the 3 other moods can occur when it is neutral. the backlight is white. sleeping - when the ambient light is low enough the pet will sleep. It cannot be disturbed and cannot become lonely until woken up. This is what i personally thought was a nice addition to the pet and would bring more realism and life to the pet. This is done by having a photocell near the face for most light accuracy. the backlight features a light purple blue. happy - when you pet it (or interact with the screen), it will smile. the blush being blue and not red was both intentional and unintentional feature. The color system is inverted same with the screen rotation. I did not know how to correct it but i felt the blue looked different and I kinda liked it so I didn’t spend extra time troubleshooting. the backlight features a bright hot pink color. PLEASE add any suggestions and I will likely consider, like adding a thermistor, weather, USB OTG, etc. When i feel like it, I may add a USB mode where it can do things on my computer when plugged in, like opening an app or powering off my computer. (the 35 minutes logged was for fixing the code and adding the lights. Not the full code itself.)"}, {"post_id": 27970, "ts": "2026-07-13T22:34:39Z", "hours": 3.7561, "text": "added functionality to the pet and added made a separate smaller one. It now has multiple moods with the ability to sleep when lights are dimmed enough."}, {"post_id": 16541, "ts": "2026-06-26T22:02:40Z", "hours": 1.0939, "text": "working on the wiring of the tomogachi pet n stuff no coding yet has a touchscreen now"}]...
|
Title: Tamagochi pet by @S0l4Ce | Stardance
Devlo Title: Tamagochi pet by @S0l4Ce | Stardance
Devlogs:
working on the wiring of the tomogachi pet n stuff no coding yet has a touchscreen now
added functionality to the pet and added made a separate smaller one. It now has multiple moods with the ability to sleep when lights are dimmed enough.
Added status lights; finishing off full basic functionality for the pet. any additional features would be improvements, hardware additions, and wiring. full explanation of functions below: The “pet” is a TFT resistive touchscreen. Its face, as you can see, is a simple white and black pixelated look. 4 functions (for now): lonely - after 30 seconds of no interaction, after waking up or not being pet, it will become lonely, which is a sad face of course. The backlight glows a gloomy blue, slightly purple. neutral - base face, the pet is neutral when it isn’t lonely, had just woken up, and had recently been pet. the 3 other moods can occur when it is neutral. the backlight is white. sleeping - when the ambient light is low enough the pet will sleep. It cannot be disturbed and cannot become lonely until woken up. This is what i personally thought was a nice addition to the pet and would bring more realism and life to the pet. This is done by having a photocell near the face for most light accuracy. the backlight features a light purple blue. happy - when you pet it (or interact with the screen), it will smile. the blush being blue and not red was both intentional and unintentional feature. The color system is inverted same with the screen rotation. I did not know how to correct it but i felt the blue looked different and I kinda liked it so I didn’t spend extra time troubleshooting. the backlight features a bright hot pink color. PLEASE add any suggestions and I will likely consider, like adding a thermistor, weather, USB OTG, etc. When i feel like it, I may add a USB mode where it can do things on my computer when plugged in, like opening an app or powering off my computer. (the 35 minutes logged was for fixing the code and adding the lights. Not the full code itself.)
Added a gyroscope so the pet can become dizzy when shook. It features a red backlight, and remains dizzy for about 5 seconds. It was really a 20-30 minute setup after learning how to code and use one, and installing the libraries, but that extra addition turned into hours of additional troubleshooting since I was unfamiliar with the hardware. I eventually got it working after plenty of trial and error, and the real issue was just a couple lines of code. I’m unfortunately not getting much views, which is discouraging, but if you do come across this and decide to click on it, please suggest something in the comments. Thanks.
Added extra personality. If you plug a red LED in, it will get a more of a moody personality. It will look angry, sleep angry, and will usually just be angry (shaken face does not change.) unplugging the red LED will make it instantly revert to default personality let me know other interchangeable personalities I should add, or other software and hardware suggestions. Thanks.
Ignore devlog: Tried making online demo but i pressed a button and all my tabs refreshed all at once and reset my work. Im publishing the devlog because i still did the work and i dont want it to go to waste (IGNORE THIS DEVLOG)
Added another personality, shy. added “cores” that determine the personality when plugged in, red for moody and blue for shy. unplug for normal. The shy personality features new unique faces. led colors and shaken face remain same
Rewired to remove clutter. Back isn’t looking too good but the front is, when I run out of ideas ill probably build a shell for it please make recommendations
built an extension for the pet. It connects to the pet using gnd and 4 labeled gpio pins, though the 4th one connects to 0 and not 40. It works somewhat like a stream deck; It opens 2 games, 2 code editors, a browser, and shuts off or closes tabs on my computer without needing special permissions, it is built for windows though. Most of the hours logged came from trial and error. Most of the time the buttons wouldnt register, spam the same commands, double clicks wouldnt register, and it was a mess for hours. did some bugfixes involving screen bugs during personality swaps, and the pet “forgetting” its personality. please suggest additional ideas.
working on a software version of my project 🔥 I main micropython but I’m adjusting to python for this and learning the different ways things are written, and figuring out how to make faces. Can anyone tell me if theres a designer that gives you the code when you draw something on a canvas? similar to lopaka?? The software version is projected to have more features for computer control than the hardware version. After finishing the faces and overall logic, I will add the additional side controls for it, like light and stuff
added lonely, smile, and neutral, also added placeholders for the soon to be added personalities and a brightness slider. Both are unfunctional and i only have the 3 faces for now. go check out my hardware version, its fully functional
finally added a sleep system, dimming system, and a fully fixed and functional lonely system. when lights are at or below 50, the lights will go dim, and below 25, they will go even dimmer, and it will sleep (software) I will the face variants next, and then actual interactive computer controls. shy and moody are still not ready yet
My windows OS broke, not sure how, so im running on my second SSD and my most recent work has been erased! (software version) random thumbnail ig but im gonna be re-doing whatever has been erased..
Got back on track, finally! It now gets visibly dim below 50 value on light, and dark below 25, along with squint and sleep. Im now going to begin working on the other expressions after I finish adding the dim to smile and alone faces. This thing is ending soon so idk if i will be able to add the computer control functions as promised :( I also switched to cachyos so Idk how that would go either. Check out the hardware version on my page though! its finished
im starting work on the radiobuttons for interchangable personality to wrap up the project. im using placeholders so the face looks red if the radiobuttons are selected so it would look unpleasant to see but yeah
finally finished the 2nd personality. will be shipping my project. only thing left to do is fix bugs (i already scanned software and hardware for bugs. though the code seems somewhat contradictory to itself, it still works but please report bugs under this one’s comment and check out my submission and the demo video!
got mad countless times. Im doing my CAD for my project because youll now get permanently rejected if you miss it and i never knew. Im making the screen myself because i cant find it online. Below is a picture of how its assembled so far, and i would post the part im making right now but this just looks better. Also, does the CAD have to be fully accurate? ive never done a CAD before so parts i make myself may look off but ill try my best to make the measurements right.
Im very proud of my work! i finished up the screen, fixed misalignments, ensured precision, and in the end, everything fit perfectly!
Finished adding modules like the LEDs, resistors, etc. All i need now is the wiring which i heard is tedious
spent this hour troubleshooting and figuring out how to add wires. was super unsucessful and wasted my time. im pretty annoyed
Ships:
I made a tamagotchi pet (i am aware that throughout the project, the spelling of it has been inconsistent) But anyway, what i found most challenging was having to look through the loop constantly making adjustments based off minor errors during each test run and incorrect wiring making me feel like i had the code wrong. I am proud that I learned surprisingly a lot. The screenshot is merely just part of it and you should check it out yourself! both the source for the software and hardware is in there. The latest software build is in a separate branch and you may need to scope around for the latest hardware build. PLEASE note that all of the hardware additions - if you truly want to build it yourself, is pushing the limits of the esp32 so please run it while using a powerful cable....
|
1793148797.2933943
|
1793235197.2933943
|
|
4995
|
Mini Record Player Clock by @JasonC9 | Stardance
|
JasonC9
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Mini Record Player Clock by @JasonC9 | Star Title: Mini Record Player Clock by @JasonC9 | Stardance...
|
1792914603.5180357
|
1793778603.5180357
|
|
4996
|
Uzyi by @Jadie | Stardance
|
Jadie
|
0
|
9.87
|
0
|
[]
|
[{"post_id": 2159, "ts": "2026 [{"post_id": 2159, "ts": "2026-06-04T14:30:27Z", "hours": 1.1267, "text": "With this project coming to a close, I thought it was a nice idea to add some examples, here you can see two of the examples, each of them will have a link to them in the readme so you don’t have to discover them like Columbus had to discover America."}, {"post_id": 2105, "ts": "2026-06-04T13:10:16Z", "hours": 1.9986, "text": "Had to remove the website since it was causing a lot of problems, and not like I’m a webdev, I just thought it’d be a nice place to showcase :c"}, {"post_id": 1446, "ts": "2026-06-03T14:22:23Z", "hours": 2.3308, "text": "Most likely the final version of the UI, the step button is yet to be implemented, but otherwise I’d say everything else is done except for proper documentation."}, {"post_id": 1311, "ts": "2026-06-03T07:06:24Z", "hours": 1.1939, "text": "So we got a nice webUI for now, just gotta implement the functionality and we’ll hopefully be done!"}, {"post_id": 1025, "ts": "2026-06-02T20:19:59Z", "hours": 0.6703, "text": "WE GOT A CUTE LOGO, HELL YEAH"}, {"post_id": 968, "ts": "2026-06-02T18:59:09Z", "hours": 1.3903, "text": "We’re getting to the point, where we can actually make function in the ISA, soon enough, it’ll be good!"}, {"post_id": 910, "ts": "2026-06-02T17:25:40Z", "hours": 0.7147, "text": "Such great DX in kotlin, will expand on it though with a way to write the ISA in a website, or possibly through kotlin scripts"}, {"post_id": 850, "ts": "2026-06-02T15:32:26Z", "hours": 0.4481, "text": "I think these instructions are enough for now, what do you think, and yes, on specific memory addresses, there’ll be constants"}]...
|
Title: Uzyi by @Jadie | Stardance
Devlogs:
I thin Title: Uzyi by @Jadie | Stardance
Devlogs:
I think these instructions are enough for now, what do you think, and yes, on specific memory addresses, there’ll be constants
Such great DX in kotlin, will expand on it though with a way to write the ISA in a website, or possibly through kotlin scripts
We’re getting to the point, where we can actually make function in the ISA, soon enough, it’ll be good!
WE GOT A CUTE LOGO, HELL YEAH
So we got a nice webUI for now, just gotta implement the functionality and we’ll hopefully be done!
Most likely the final version of the UI, the step button is yet to be implemented, but otherwise I’d say everything else is done except for proper documentation.
Had to remove the website since it was causing a lot of problems, and not like I’m a webdev, I just thought it’d be a nice place to showcase :c
With this project coming to a close, I thought it was a nice idea to add some examples, here you can see two of the examples, each of them will have a link to them in the readme so you don’t have to discover them like Columbus had to discover America....
|
1792597870.489539
|
1793202670.489539
|
|
4997
|
Small desk bot by @lcorcione | Stardance
|
lcorcione
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Small desk bot by @lcorcione | Stardance
|
1793148915.1690829
|
1793753715.1690829
|
|
4998
|
Untitled by @Kika | Stardance
|
Kika
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Untitled by @Kika | Stardance
|
1792673467.38081
|
1793278267.38081
|
|
4999
|
My first slack bot! by @strider656353 | Stardance
|
strider656353
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My first slack bot! by @strider656353 | Sta Title: My first slack bot! by @strider656353 | Stardance...
|
1792655620.8148174
|
1793260420.8148174
|
|
5000
|
My first slack bot! by @fetterDino | Stardance
|
fetterDino
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My first slack bot! by @fetterDino | Starda Title: My first slack bot! by @fetterDino | Stardance...
|
1792680573.3161132
|
1793285373.3161132
|