Detects when user changes same config setting 3+ times within 24 hours. Shows non-intrusive prompt offering help with guided calibration flow. Guided calibration features: - Test for false positives (walk around room) - Test for missed motion (sit still) - Suggest optimal value based on diurnal baseline SNR and link health - Apply suggested value button Files: - dashboard/js/proactive.js: Complete implementation with localStorage tracking Acceptance: - Help prompt fires after 3+ changes in 24h - Calibration flow tests both directions - Suggests value based on system data - Apply button works
32 lines
846 B
Text
32 lines
846 B
Text
// @flow
|
|
|
|
opaque type Next = Function | void;
|
|
opaque type Yield = mixed;
|
|
|
|
export type Gensync<Args, Return> = {
|
|
(...args: Args): Handler<Return>,
|
|
sync(...args: Args): Return,
|
|
async(...args: Args): Promise<Return>,
|
|
// ...args: [...Args, Callback]
|
|
errback(...args: any[]): void,
|
|
};
|
|
|
|
export type Handler<Return> = Generator<Yield, Return, Next>;
|
|
export type Options<Args, Return> = {
|
|
sync(...args: Args): Return,
|
|
arity?: number,
|
|
name?: string,
|
|
} & (
|
|
| { async?: (...args: Args) => Promise<Return> }
|
|
// ...args: [...Args, Callback]
|
|
| { errback(...args: any[]): void }
|
|
);
|
|
|
|
declare module.exports: {
|
|
<Args, Return>(
|
|
Options<Args, Return> | ((...args: Args) => Handler<Return>)
|
|
): Gensync<Args, Return>,
|
|
|
|
all<Return>(Array<Handler<Return>>): Handler<Return[]>,
|
|
race<Return>(Array<Handler<Return>>): Handler<Return>,
|
|
};
|