Pin the canonical .GENTEMP file by dropping it below.
The file's contents are never uploaded — only its
identifier (file size + SHA-256 hash + filename) is saved to Firestore.
Inspectors can compare their cached file's identifier against this entry
to verify they have the same version you canonized.
Drop .GENTEMP file here, or click to pick.
Current registry entry
Filename:—
Size:—
SHA-256:—
Set by:—
Set at:—
Tune the layout of the generated PDF here. All changes are
automatically saved to this browser and will persist
across reloads. To reset everything to defaults, click the button below.
syncedApplies to PDF + Excel buttons.
syncedEffective on next login.
syncedWhere the PDF/Excel file picker opens.
syncedOriginating device always sees its own toast.
Undo window (seconds)
synced
How long the undo toast stays visible.
Hide trash older than (days)
synced
0 = never hide (always show all).
Copy limit per category
synced
Max number of copies users can set per category in the PDF picker. Changes affect everyone.
Template:
Each template has independent settings. Switching here lets you tune Template 1 or Template 2 independently. The actual export template is picked in pdf-generator after clicking PDF.
PDF margins (inches): synced
Logo position & size (inches): synced
Defaults match the SFMTA Excel template. Changes apply to the next PDF.
synced
Useful for layout checks. Leave off for final output.
synced
Page 1 keeps the SFMTA header band. Pages 2+ show only the snag table, giving you more rows per page.
synced
When off, the bottom strip is blank and the table uses the freed-up vertical space.
Column widths (% of content width) — SFMTA: synced
Description column auto-adjusts. Changes apply to the next PDF.
Column widths (% of content width) — NewFlyer: synced
Description column auto-adjusts. Changes apply to the next PDF.
Default values match the current Excel template. Changes apply to the next PDF.
Metadata block position (inches): synced
X = the colon-pivot point (labels end here, values start just right of it). Y = the first row's baseline. Leave empty for auto (top-right, 1.5" from right edge).
Font family (PDF-wide): synced
Carlito and Lato are embedded in the app (~1.85MB). Both are OFL-licensed. Carlito is metric-compatible with Calibri. Only Regular and Bold styles are embedded.
City title (agency name): synced
Leave X/Y empty for auto (right of logo, vertically centered with logo).
Row heights (inches): synced
Data rows auto-expand if description text wraps. Values are the minimum heights.
Table start position (inches from top): synced
Leave empty for auto (logo bottom + 0.25"). Set a value to pin the table higher or lower.
Audit log of snag actions across all coaches. Records every add,
edit, delete, bulk delete, and bulk import since v276. Synced across
devices. Older entries (before v276) aren't in the log.
Click Apply to load history.
Developer toggles — useful for debugging, usually not needed for
everyday snag tracking.
DB ID column:
Shows the Firestore document ID next to each snag. Useful when looking up records directly in the database. Does not persist across reloads.
History page size
synced
How many history entries to load per Apply click in the History tab. Click "Load more" to fetch additional pages.
Table layout
synced
Desktop
Mobile
Checkbox width (px)
Snag # width (px)
Cell horizontal padding (px)
Changes affect everyone. Mobile values apply at screens ≤600px wide; desktop applies everywhere else.
Footer layout
synced
Desktop
Mobile
Vertical padding (px)
Font size (px)
Changes affect everyone. Shrinks or expands the "live synced" footer strip at the bottom.
Danger zone: History log
Permanently deletes every entry in the history log, for all users. There is no undo. Typically only needed during testing.
Coach Index synced
Index: —
Mirror of coach numbers used by the inspector autocomplete dropdown. Auto-rebuilds via inspector-side staleness self-heal. Use this button for manual rebuild — e.g. after editing coaches/ via Firebase console.
Coach Index: stale threshold synced
How old (in days) the coachIndex doc has to be before any inspector auto-rebuilds it. Default 30 days. Set to 0 for testing only — at 0 every inspector boot fires a rebuild attempt (lock prevents the swarm from racing, but each inspector still pays 1 read per boot for the lock-claim transaction). Don't leave it at 0 in production.
Coach Index: race window synced
Random delay window before the inspector auto-rebuild fires. Spreads multiple inspectors out so only one fires the rebuild even if many open the page within the same window. Default 15 minutes.
Tune the layout of the post-inspection Checklist here. All changes are
synced via Firestore and apply to every inspector who opens the Checklist tab.
Phase 3 ships the inspector → checklist push, so for now changes here only land in Firestore.
Checklist version management
Choose which checklist version each coach uses. Coaches without an explicit override use the global default below.
v1
synced
Per-coach overrides
Coaches not listed here use the default. Synced — changes apply to every inspector.
Coach #
Version
Last updated
No overrides yet — every coach uses the default.
Header field spacing — desktop
Spacing between coach #/VIN/inspector fields on wide screens.
pxsynced
pxsynced
pxsynced
pxsynced
pxsynced
pxsynced
pxsynced
pxsynced
Header field spacing — mobile
Same fields on narrow viewports.
pxsynced
pxsynced
pxsynced
pxsynced
pxsynced
pxsynced
pxsynced
Around-header gaps
Vertical breathing room between the tab nav, the header form, and the first category section.
pxsynced
pxsynced
pxsynced
pxsynced
Category / card spacing
Top spacing on each category section (desktop) and gap between item cards (mobile).
pxsynced
pxsynced
pxsynced
pxsynced
pxsynced
Row heights — desktop
Minimum heights for table rows. 0 means cells auto-size to content.
pxsynced
pxsynced
Column widths — desktop
Percentages for each table column. Should roughly sum to 100.
%synced
%synced
%synced
%synced
%synced
Mobile item-# column (auto cards)
Tightens the item-number cell on phones in the auto-cards layout. Width is the column itself; padding is the vertical breathing room inside that cell.
pxsynced
pxsynced
Notes area
Height of the lined-paper "Additional Notes" section at the bottom of the checklist.
pxsynced
Topbar buttons
Show/hide buttons in the checklist topbar. Synced across all inspectors.
synced
synced
synced
synced
Checklist print behavior
When ON, native browser print on the checklist replaces the page with a "use Checklist to PDF instead" message. Synced across all inspectors.
synced
Inspection sheet
Show/hide elements on the snags inspection page. Synced across all inspectors.
synced
GENTEMP banner spacing
Inner vertical padding of the yellow GENTEMP banner. Horizontal padding is fixed.
pxsynced
pxsynced
Checklist branded header
The SFMTA-branded bar that sits above the checklist's Coach #/Mileage/VIN form. Title text is per-version (e.g., "ACCEPTANCE", "MID-LIFE"). Subtitle is shared across versions.
synced
synced
pxsynced
pxsynced
pxsynced
pxsynced
pxsynced
pxsynced
pxsynced
pxsynced
Checklist body margin
Inner page margins around the checklist content (each side independent). Affects both inline and standalone views.
pxsynced
pxsynced
pxsynced
pxsynced
PDF Checklist
Tuning for the form-field rectangle drawn around inline blank inputs ("Open ___ Close ___") in the generated PDF. Values in inches. Synced across all inspectors.
insynced
insynced
insynced
synced
insynced
ptsynced
insynced
insynced
insynced
insynced
insynced
insynced
synced
Theme defaults
Default theme that boots on every browser. Inspectors can still pick a different theme from the topbar menu for the current session; this setting wins on the next reload.
synced
synced
Ctrl+P shortcut
When checked, Ctrl+P (Cmd+P on Mac) opens the checklist in a new tab and autoprints. When unchecked, Ctrl+P uses the iframe-print path (same as the Print button).
synced
synced
When unchecked, Ctrl+P falls through to native browser print. The new-tab path still fires via beforeprint when the toggle above is on; the iframe-print path still fires too. Useful for A/B testing.
Inline checklist (experimental)
When checked, the inspector loads checklist.html into its own DOM (no iframe). Fixes File > Print pagination (theads repeat across pages, sections break to new pages cleanly) because the table is part of the parent's print flow. Reload the inspector after toggling.
synced
Permanently delete soft-deleted snags. This is irreversible.
Soft-deleted snags from the inspector's Trash modal land here too — they
live in Firestore until you remove them. Inspectors only see this page
if you share its URL; the inspector flow doesn't link to it.
Loading…
Loading…
Delete EVERYTHING in trash?
About to permanently delete 0 soft-deleted
snag(s) across all coaches. This cannot be undone.
To confirm, type the phrase below exactly:
Clear history log?
This will permanently delete all history log entries across all devices.
There is no undo.