You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Welcome to another episode of “Why does this repo hurt my soul?” 🎭 This week’s fragrance: Eau de Side‑Effect, with notes of “oops we deleted your real config” and a bouquet of “logs to stderr for fun.” Grab a clothespin for your nose and a helmet for your sanity. 💥🦨
Convert .js tests to .ts, or update testMatch to include .js and fix any TS/Jest setup conflicts.
If they’re legacy, delete them to reduce confusion and CI drift.
MCP Path Footgun: Inventing files that aren’t there
🔫 getNativeMcpPath returns the first candidate even when none exist, effectively “choosing” a path to create/modify. Accidental file creation, anyone? 🧞
Define narrow interfaces for TOML shapes per agent (e.g., Vibe, Codex) and replace any with structured types.
Remove eslint-disable by fixing types; where unavoidable, isolate any behind well‑documented conversion points.
If you expected more issues, congratulations: the bar is low. But fix these and the repo will smell less like a burning server rack and more like… software. 🧼🚀
reacted with thumbs up emoji reacted with thumbs down emoji reacted with laugh emoji reacted with hooray emoji reacted with confused emoji reacted with heart emoji reacted with rocket emoji reacted with eyes emoji
Uh oh!
There was an error while loading. Please reload this page.
This Codebase Smells!
Welcome to another episode of “Why does this repo hurt my soul?” 🎭 This week’s fragrance: Eau de Side‑Effect, with notes of “oops we deleted your real config” and a bouquet of “logs to stderr for fun.” Grab a clothespin for your nose and a helmet for your sanity. 💥🦨
Table of Contents
Nuclear Revert Deletes Real Config Files
⛏️ Revert gleefully deletes generic project files like
config.tomleven when they’re legitimate and unrelated to Ruler.config.toml— real projects use that, you know, for actual configuration. 💣.bak, it just unlinks the file. Surprise data loss is a vibe, I guess. 🤡Files
src/core/revert-engine.tssrc/paths/mcp.tssrc/revert.tsCode
config.toml:Suggestions
.bakexists.config.tomldeletion behind OpenHands‑specific content detection (known keys/sections) or a--force-extra-cleanupflag.Dry‑Run Prefix Comedy: Calling a function by not calling it
🃏 Logging in the VSCode settings cleanup prints
${actionPrefix}— the function reference, not the prefix. Dry‑run messages become performance art.prefix = actionPrefix(dryRun)… then logs with${actionPrefix}(the function), which is not what anyone ordered. 🍝Files
src/core/revert-engine.tsCode
Suggestions
${actionPrefix}with the computedprefixor callactionPrefix(dryRun)inline.Verbose Logs to stderr: Mixed‑up streams
📣 The comment says verbose logs go to stdout, yet
logVerbosewrites to stderr. So… which is it? Schrödinger’s stream. 🐱Files
src/constants.tsCode
Suggestions
console.errortoconsole.logfor verbose; keep warnings/errors on stderr.CLI Rage‑Quits with process.exit
🛑 The CLI loves
process.exit(1)like it’s still 2009. This torpedoes composability, testability, and proper error propagation from libraries. 🤮Files
src/cli/handlers.tsCode
Suggestions
runCli()wrapper that returns status; only main file callsprocess.exit.Console.log Party: Bypass centralized logger
🎺 Code prints directly with
console.loginstead of using the centralized logging helpers. Enjoy inconsistent prefixes and streams! 💃Files
src/revert.tssrc/constants.ts(has logging helpers you ignore)Code
Suggestions
console.logwithlogInfo/logWarnconsistently.console.*outsideconstants.ts.Orphaned JS Tests: Jest pretends they don’t exist
🧪 You’ve got
.jstests chilling like NPCs while Jest looks only for.ts. Either run them or ship them to the great bit bucket in the sky. 🗑️Files
jest.config.jstest_toml_format.jstest_toml_options.jstest_manual_toml.jsCode
.js:Suggestions
.jstests to.ts, or updatetestMatchto include.jsand fix any TS/Jest setup conflicts.MCP Path Footgun: Inventing files that aren’t there
🔫
getNativeMcpPathreturns the first candidate even when none exist, effectively “choosing” a path to create/modify. Accidental file creation, anyone? 🧞Files
src/paths/mcp.tsCode
Suggestions
nullif none exist; only create new MCP configs in apply paths, not path discovery.TypeScript Any‑fluenza: The “any” pandemic
🦠 The amount of
any(pluseslint-disable) is… aspirational. If types are optional, bugs are mandatory. 💩Files
src/agents/MistralVibeAgent.tssrc/agents/CodexCliAgent.tssrc/types/iarna-toml.d.tsCode
Suggestions
anywith structured types.eslint-disableby fixing types; where unavoidable, isolateanybehind well‑documented conversion points.If you expected more issues, congratulations: the bar is low. But fix these and the repo will smell less like a burning server rack and more like… software. 🧼🚀
All reactions