{"id":"danieluntask/signal","name":"signal","scope":"danieluntask","platform":"roblox","description":"Simple and usefully signal module.","version":"0.1.8","latest":"0.1.8","versions":["0.0.1","0.0.2","0.0.6","0.0.7","0.0.8","0.0.9","0.1.0","0.1.1","0.1.2","0.1.3","0.1.4","0.1.5","0.1.6","0.1.7","0.1.8"],"license":"MIT","licenseRating":"safe","licenseCaveats":[],"licenseVerified":true,"dependencies":{"danieluntask/task":{"version":"^0.1.1","alias":"Task"}},"integrity":"a751954135b11ab7548487dd2514fb1c6141a46ee70bddca5f45cb1196f58722","likes":0,"downloads":0,"install":"forest install danieluntask/signal","url":"https://forest.dev/p/roblox/danieluntask/signal","files":"https://api.forest.dev/ai/package/roblox/danieluntask/signal/files","readme":"# Signal\n\nA lightweight, high-performance Signal system for Luau, It utilizes a **Doubly Linked List** structure to ensure $O(1)$ time complexity for connection and disconnection operations.\n\n---\n## v0.1.8 - Critical Fix Summary\n\n> [!CAUTION]\n> **Immediate Update Required:** This update fixes a logic error that caused event loss in systems with multiple subscribers.\n\n### The Problem\nThere was a pointer management error within the linked list logic. When registering new listeners via `.Connect()` or `.Once()`, the module was overwriting the root's `.Next` pointer instead of correctly appending the new node to the end of the queue (`.Previous`).\n\n### The Impact\n* **Signal Amnesia:** Every new subscriber \"stepped on\" the previous one.\n* **System Failures:** Only the most recently connected script would receive updates. For example, if the UI HUD connected after the Market Economy, the Market would stop receiving signals entirely.\n\n### The Solution\nPointer assignments were refactored to maintain the integrity of the **circular linked list**. The root node now correctly maintains its reference to the head of the list while the tail updates dynamically with each new connection.\n\n---\n\n## Features\n* **High Performance:** $O(1)$ insertion and removal of listeners.\n* **Strict Typing:** Full support for Luau `!strict` and generics.\n* **Safety:**","readmeTruncated":false}