chore(dashboard): publish MobileNavBar render decision to vpdebug

Surface the live mode / modalOpen / keyboardOpen / footerVisible / view
values that MobileNavBar uses for its early-return so the ?vpdebug overlay
can show which one is hiding the bar on Android. Also dumps the
.project-content className so we can correlate with `--with-mobile-nav`.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
gsxdsm
2026-05-22 09:37:23 -07:00
parent d3dff94424
commit 16b18bf338
12 changed files with 66 additions and 294 deletions

View File

@@ -35,14 +35,4 @@ describe("buildManualRetryResetPatch", () => {
it("clears nextRecoveryAt", () => {
expect(buildManualRetryResetPatch()).toMatchObject({ nextRecoveryAt: null });
});
it("clears userPaused for manual retry in all modes", () => {
const defaultPatch = buildManualRetryResetPatch();
expect(Object.prototype.hasOwnProperty.call(defaultPatch, "userPaused")).toBe(true);
expect(defaultPatch.userPaused).toBeUndefined();
const mergePatch = buildManualRetryResetPatch({ resetMergeRetries: true });
expect(Object.prototype.hasOwnProperty.call(mergePatch, "userPaused")).toBe(true);
expect(mergePatch.userPaused).toBeUndefined();
});
});

View File

@@ -16,11 +16,9 @@ export const MANUAL_RETRY_RESET_COUNTER_KEYS = [
"mergeAuditBounceCount",
] as const satisfies ReadonlyArray<keyof Task>;
/** Resets retry/recovery counters and clears `userPaused` for explicit manual retries. */
export function buildManualRetryResetPatch(options?: { resetMergeRetries?: boolean }): Partial<Task> {
const patch: Partial<Task> = {
nextRecoveryAt: null as unknown as Task["nextRecoveryAt"],
userPaused: undefined,
};
for (const key of MANUAL_RETRY_RESET_COUNTER_KEYS) {