Squash the current repository state back into one baseline commit while
preserving the README reframing and repository contents.

Constraint: User explicitly requested a single squashed commit with subject "asdf"
Confidence: high
Scope-risk: broad
Reversibility: clean
Directive: This commit intentionally rewrites published history; coordinate before future force-pushes
Tested: git status clean; local history rewritten to one commit; force-pushed main to origin and instructkr
Not-tested: Fresh clone verification after push
This commit is contained in:
did:key:z6MkqDnb7Siv3Cwj7pGJq4T5EsUisECqR8KpnDLwcaZq5TPr
2026-03-31 03:34:03 -07:00
commit d2542c9a62
1903 changed files with 513517 additions and 0 deletions

43
src/utils/signal.ts Normal file
View File

@@ -0,0 +1,43 @@
/**
* Tiny listener-set primitive for pure event signals (no stored state).
*
* Collapses the ~8-line `const listeners = new Set(); function subscribe(){…};
* function notify(){for(const l of listeners) l()}` boilerplate that was
* duplicated ~15× across the codebase into a one-liner.
*
* Distinct from a store (AppState, createStore) — there is no snapshot, no
* getState. Use this when subscribers only need to know "something happened",
* optionally with event args, not "what is the current value".
*
* Usage:
* const changed = createSignal<[SettingSource]>()
* export const subscribe = changed.subscribe
* // later: changed.emit('userSettings')
*/
export type Signal<Args extends unknown[] = []> = {
/** Subscribe a listener. Returns an unsubscribe function. */
subscribe: (listener: (...args: Args) => void) => () => void
/** Call all subscribed listeners with the given arguments. */
emit: (...args: Args) => void
/** Remove all listeners. Useful in dispose/reset paths. */
clear: () => void
}
export function createSignal<Args extends unknown[] = []>(): Signal<Args> {
const listeners = new Set<(...args: Args) => void>()
return {
subscribe(listener) {
listeners.add(listener)
return () => {
listeners.delete(listener)
}
},
emit(...args) {
for (const listener of listeners) listener(...args)
},
clear() {
listeners.clear()
},
}
}