Commit Graph

  • 19377ea6cf feat(tuxedo): Apple-quality motion choreography main Tyler 2026-07-07 09:36:35 -06:00
  • c71354d2ae tuxedo: align storefront subpages with Field Almanac editorial voice Nora 2026-07-06 14:40:18 -06:00
  • da09cfbd1a feat(tuxedo): editorial photo color grade across hero/pull-quote/founder/packshot Nora 2026-07-06 14:23:22 -06:00
  • 68851cfede feat(tuxedo): magazine editorial — altitude ribbon, harvest spread, data strip Nora 2026-07-06 13:55:48 -06:00
  • b90f0fae52 fix(tuxedo): copy public/ to standalone, mark storm/founder priority Nora 2026-07-06 13:33:54 -06:00
  • 5a72705e71 fix(ops): switch pm2 to standalone server + fix wholesale_settings query Nora 2026-07-06 12:50:43 -06:00
  • 129c9d253c feat(tuxedo): polish home with WP imagery Nora 2026-07-06 12:03:36 -06:00
  • f8434685a8 fix(migration): drop GRANT anon line (Neon has no anon role) Grok 2026-07-06 11:19:33 -06:00
  • 60783131ae fix(tuxedo): graceful hero video fallback + storefront polish Grok 2026-07-06 11:09:31 -06:00
  • 772e23ded8 fix(pwa): bump field-shell cache to v2 — evicts stale UI for installed PWAs Tyler 2026-07-06 10:39:52 -06:00
  • 5dc9a4604f Apple HIG pass: liquid-glass chrome + iOS SegmentedControl + ThresholdMeter Tyler 2026-07-06 10:32:36 -06:00
  • 5188960bd2 fix(time-tracking): keep workers signed in for 7 days Nora 2026-07-06 10:14:00 -06:00
  • 6f1aa37a26 fix(time-tracking): inherit lang from water-log and stop PIN flash Nora 2026-07-06 10:05:55 -06:00
  • c7c83890e4 fix(time-tracking): use correct field_workers columns in fleet summary Nora 2026-07-06 09:56:13 -06:00
  • e98bbc220f fix(time-tracking): accept irrigator/driver roles in PIN verify Nora 2026-07-04 01:04:05 -06:00
  • 3db642e76b fix(time-tracking): Recent Activity reads from session brand; add cycle 12 smoke scripts Nora 2026-07-04 01:02:00 -06:00
  • 9d0e325c26 feat(time-tracking): wire Hub / Manual Entry / Recent Activity screens into the field app Nora 2026-07-04 00:57:32 -06:00
  • 34d88d594f fix(time-tracking): populate missing hub/manual/history translations + ignore debug scripts Nora 2026-07-04 00:42:23 -06:00
  • 06aac296f1 feat(time-tracking): wire GPS capture into field clock-in/out (cycle 12 polish) Nora 2026-07-04 00:27:45 -06:00
  • 9e6accb3df feat(time-tracking): timesheet workflow, manual entry, GPS, offline, payroll export (cycle 12) Nora 2026-07-04 00:27:25 -06:00
  • eb0da05037 feat(field): cycle 11 — visual cohesion for time-tracking + water-log Nora 2026-07-03 20:47:58 -06:00
  • 16ad0955f2 feat(workers): unify water + time worker tables into field_workers (cycle 10) Nora 2026-07-03 20:27:11 -06:00
  • ce652ff5de test(time-tracking): unit tests for cron route, drain summary, workspace token (cycle 9) Nora 2026-07-03 19:37:53 -06:00
  • da488b2cb0 feat(time-tracking): add cron route for time-tracking smartsheet sync (cycle 8) Nora 2026-07-03 19:26:18 -06:00
  • ad4d3c9976 feat(smartsheet): cycle 7 — workbook hub RouteComm Dev 2026-07-03 19:18:49 -06:00
  • 089d77aa68 feat(water-log): cycle 6 — worker sub-PWA at /water scope RouteComm Dev 2026-07-03 18:48:39 -06:00
  • b793cd6955 feat(time-tracking): cycle 5 — Smartsheet sync scaffold Nora 2026-07-03 18:41:36 -06:00
  • dfd6b63888 feat(water-log): cycle 4 — Tuxedo mobile worker Time tab + unified PIN Nora 2026-07-03 18:26:32 -06:00
  • 0599bdc331 feat(water-log): cycle 3 — embed Time Tracking tab in admin shell Nora 2026-07-03 18:17:33 -06:00
  • 93bcbc29a0 refactor(time-tracking): cycle 2 — re-implement field actions against Drizzle Nora 2026-07-03 18:11:26 -06:00
  • c9b6729482 refactor(water-log): split 2117-line panel into tabbed shell + focused modules Nora 2026-07-03 17:58:44 -06:00
  • bf68fa8431 revert: drop smartsheet backfill script from deploy Nora 2026-07-03 17:36:02 -06:00
  • b07be10cf9 fix(deploy): ship smartsheet-backfill-entry-ids.mjs to server Nora 2026-07-03 17:29:54 -06:00
  • c160a1d81b fix(smartsheet): one-shot backfill script to re-add Entry IDs to manually inserted rows Nora 2026-07-03 17:25:26 -06:00
  • 81f3f2cc83 fix(smartsheet): send addRow body as top-level array, not { rows: [...] } Nora 2026-07-03 17:07:40 -06:00
  • 5aab432e5a fix(smartsheet): handle POST /rows response as either object or array Nora 2026-07-03 16:53:49 -06:00
  • 928779e06d fix(smartsheet): register sync cron and fix backfill transaction visibility Nora 2026-07-03 16:47:11 -06:00
  • b061cdd289 fix(smartsheet): read flat response shape for GET sheet, array result for POST row Nora 2026-07-03 16:31:22 -06:00
  • 71e1792ee3 fix(smartsheet): detect share-link slugs and guard malformed API responses Nora 2026-07-03 16:18:47 -06:00
  • a470b6fe9d feat(water-log/settings): sticky in-page section nav for Smartsheet card Nora 2026-07-03 15:56:16 -06:00
  • 61d5e3c6fa polish(water-log/settings): Apple HIG refinements to the Smartsheet surface Nora 2026-07-03 15:32:55 -06:00
  • 7d3de121c6 feat(water-log): add manual backfill to push historical entries to Smartsheet Nora 2026-07-03 15:23:25 -06:00
  • 9910e588b1 fix(deploy): pm2 restart --update-env so PM2 picks up new env vars on deploy Nora 2026-07-03 15:16:01 -06:00
  • 35313b16d7 feat(water-log): run Smartsheet sync via Gitea Actions cron + persist secrets on deploy Nora 2026-07-03 15:03:34 -06:00
  • 242c195265 feat(water-log): add Smartsheet setup instructions modal Nora 2026-07-03 14:57:12 -06:00
  • 12557f947f docs: note Gitea API port 3013 quirk + SQLite location Nora 2026-07-03 14:53:22 -06:00
  • 178b85a9da docs: correct MEMORY.md hosting reference (Gitea, not Vercel) Nora 2026-07-03 14:44:42 -06:00
  • fc70344dab feat(water-log): Smartsheet sync integration Nora 2026-07-03 14:42:15 -06:00
  • 3b0d0c07e3 fix(admin): show wholesale page header immediately, render skeleton inside content area Nora 2026-06-26 22:55:57 -06:00
  • 6de112467a fix(admin): SQL GROUP BY in reports, hydration in settings, mobile tabs scroll Nora 2026-06-26 21:43:05 -06:00
  • 137b5e7ffe refactor(water-log): tone down report preview modal to production-appropriate GlassModal Tyler 2026-07-02 12:16:04 -06:00
  • 060520b7be feat(water-log): replace alert() report preview with 'Field Bulletin' modal Tyler 2026-07-02 12:08:24 -06:00
  • d34fc2434a feat(water-log): remember last unit per headgate (cross-device) Tyler 2026-07-02 11:32:18 -06:00
  • 9ecb496a7c fix(water-log): address code-review findings from i18n PR Tyler 2026-07-02 11:27:16 -06:00
  • 7795263944 feat(water-log): add 'holes' unit + EN/ES language toggle for mobile Tyler 2026-07-02 11:18:23 -06:00
  • b29caa0f30 refactor(water-log): add i18n foundation for mobile EN/ES Tyler 2026-07-02 10:59:40 -06:00
  • c3da54af50 refactor(water-log): centralize brand + session primitives Tyler 2026-07-02 10:54:12 -06:00
  • 69d8f829f1 fix(water-log): remove nested Promise.all in field PIN login Tyler 2026-07-02 10:32:20 -06:00
  • ce62b17898 feat(water-log): surface irrigator name on log form + success screen Tyler 2026-07-01 20:04:41 -06:00
  • ac88584b8b feat(water-log): redesign /water as Apple HIG mobile-first experience Tyler 2026-07-01 19:27:10 -06:00
  • ca1cf143d3 fix(water-admin): rebrand subtitle to "Tuxedo Field Operations" Tyler 2026-07-01 18:52:26 -06:00
  • b966787daa refactor(water-log): replace PIN auth with self-contained cookie module Tyler 2026-07-01 18:31:57 -06:00
  • ca79896d5f fix(water-log): set wl_admin_session cookie outside pg transaction Tyler 2026-07-01 18:05:09 -06:00
  • 98fc1d3bdd fix(water-log): make verifyWaterAdminPin fully PIN-only Tyler 2026-07-01 17:45:30 -06:00
  • 658f6a5b8b fix(water-log): remove platform-login dependency from PIN flows Tyler 2026-07-01 17:27:37 -06:00
  • 015eb33291 docs(spec): water log — remove platform-login dependency Tyler 2026-07-01 17:02:34 -06:00
  • 602adb4588 Polish /water/admin: dark zinc palette, Spanish-first, faster load Tyler 2026-07-01 14:28:57 -06:00
  • 4d323af51b fix(water-log): add missing pin_hash column on water_admin_settings route-commerce 2026-07-01 14:10:05 -06:00
  • 06e536fb87 fix(water-log): add missing tables for admin PIN portal route-commerce 2026-07-01 13:58:18 -06:00
  • aebde02654 fix(build): resolve type errors in communications + stripe apiVersion route-commerce 2026-07-01 13:54:45 -06:00
  • d0a12d33da fix(communications): create email_templates table + resolve platform_admin brand fallback Tyler 2026-06-26 20:43:01 -06:00
  • 6d238bd55b merge: perf optimizations + admin docs/import/wholesale refactor Nora 2026-06-26 18:56:03 -06:00
  • fe78645609 perf: optimize admin pages for <50ms TTFB Tyler 2026-06-26 18:55:46 -06:00
  • fdeb2ffd7f fix(changelog): remove unsupported v1.9.0 'Two-Factor Authentication' entry Nora 2026-06-26 17:12:42 -06:00
  • 96e75f781d docs(memory): note PERF_TEST_AUTH bypass flag + 2026-06-26 audit Nora 2026-06-26 17:08:36 -06:00
  • 826f554ae1 chore(infra): auth fast-path, pg pool tuning, react-doctor devdep Nora 2026-06-26 17:08:22 -06:00
  • bb349e42f5 docs(qa): remove 4 high-risk unsupported marketing/security promises Nora 2026-06-26 17:08:08 -06:00
  • f36e5da3f9 Remove stale [slug] storefront routes, fix dev-login server action crash Nora 2026-06-26 12:26:15 -06:00
  • 72ecc02c73 fix: react-doctor use-lazy-motion 36→0 (m + LazyMotion in Providers), rerender-state-only-in-handlers 5→0 (WaterAdminClient loading), js-set-map-lookups 1→0 (regex in supabase), js-hoist-regexp 2→0 (helper funcs), rules-of-hooks error in QuickCartSheet (use onClose direct in handler) Nora 2026-06-26 07:23:10 -06:00
  • ad0a0fe4ec fix: react-doctor rerender-state-only-in-handlers 37→5 (ref for handler-only state in QRScanModal, HeroSection, MessageLogPanel, FsmaReportModal, SettingsSections, TimeTrackingSettingsClient, OrderEditForm, ProductFormModal, ProductsClient, CampaignComposerPage, MatchingCustomersPanel, SegmentBuilderPanel, MessageCustomersSection, ShippingSettingsForm, StopEditForm, StopTableClient, TimeTrackingFieldClient, WaterFieldClient, UsersPage, LotCreateModal, LotDetailPanel, WholesaleClient, ContactImportForm, AdminOrdersPanel, TuxedoPage) Nora 2026-06-26 07:10:42 -06:00
  • ce2dc8f070 fix: react-doctor js-set-map-lookups 1→0, no-barrel-import 1→0, prefer-module-scope-static-value 1→0, rendering-usetransition-loading 1→0, exhaustive-deps 3→0, rerender-state-only-in-handlers 5→0 Nora 2026-06-26 06:52:45 -06:00
  • 3d5988afd0 fix: react-doctor async-defer-await 10→0 (move await below guards), rerender-memo-with-default-value 13→0 (module-scope EMPTY_* defaults) Nora 2026-06-26 06:42:08 -06:00
  • 38bd3fcbc7 fix: react-doctor no-inline-exhaustive-style 3→0 (CSS classes for CommandPalette), rendering-usetransition-loading 3→0 (useTransition for fake loading) Nora 2026-06-26 06:31:37 -06:00
  • 9633680e23 fix: react-doctor deslop/unused-export 7→0, prefer-module-scope-pure-function 6→0 (hoist handleExportCSV, downloadCSV, triggerDownload, scrollToContent, handleLogout, applyMappings) Nora 2026-06-26 06:24:02 -06:00
  • adce211480 fix: react-doctor js-combine-iterations 7→0 (reduce instead of filter/flatMap+map), js-set-map-lookups 1→0 (forEach with index), js-tosorted-immutable and others Nora 2026-06-26 06:12:04 -06:00
  • d6d6a366e3 fix: react-doctor label-has-associated-control 9→0, async-await-in-loop 3→0 (Promise.allSettled), role-supports-aria-props 3→0 (already done in prior batch) Nora 2026-06-26 06:01:06 -06:00
  • ed5afe4b21 fix: react-doctor exhaustive-deps 3→0, prefer-use-effect-event 3→0 (useEffectEvent for modal cancel handlers), role-supports-aria-props 3→0 (aria-pressed/aria-current on buttons) Nora 2026-06-26 05:53:17 -06:00
  • e3cdc6deb9 fix: react-doctor unused-dependency 8→0, unused-dev-dependency 2→0 (remove @gsap/react, @supabase/ssr, @upstash/ratelimit, @upstash/redis, next-auth, posthog-js, posthog-node, square, @lhci/cli, vite-tsconfig-paths) Nora 2026-06-26 05:46:36 -06:00
  • 0e4c295b10 fix: react-doctor rerender-state-only-in-handlers 46→~30 (lastFetchedBrandId/bodyHtml/rawHeaders/rawRows/useBucket/pendingImageUrl/prevSyncKey to useRef) Nora 2026-06-26 05:41:32 -06:00
  • ab8466e021 fix: react-doctor no-large-animated-blur 19→0 (reduce blur radii to 8px), no-long-transition-duration 18→0 (animation durations 950ms) Nora 2026-06-26 05:37:06 -06:00
  • 6547498ea4 fix: react-doctor prefer-module-scope-static-value 15→~5 (move static values to module scope, remove dead Section) Nora 2026-06-26 05:33:52 -06:00
  • 13d15883b1 fix: react-doctor unused-export 141→~80 (remove dead exports, enums/marketing unused, inline campaignStatusEnum) Nora 2026-06-26 05:25:36 -06:00
  • 0ea11e4db6 fix: react-doctor prefer-tag-over-role 18→0 (native dialog, label dropzones, ul lists) Nora 2026-06-26 05:18:30 -06:00
  • 17c9c006ea fix: react-doctor prefer-tag-over-role 25→18 (remove redundant role=status, aria-live provides semantics) Nora 2026-06-26 05:06:41 -06:00
  • 7c09487058 fix: react-doctor 72→73 (skeletons restructured to divs, video tabindex) Nora 2026-06-26 05:03:28 -06:00
  • a78b0ab630 fix: react-doctor 71→73 (skeleton td aria-hidden, AdminToggle aria-label) Nora 2026-06-26 04:57:11 -06:00
  • df7b65531a fix: react-doctor control-has-associated-label 48→19 (toggles, empty th, action menus) Nora 2026-06-26 04:53:05 -06:00
  • cad6d64eee fix: react-doctor a11y improvements (skeletons, icons, social links, toggles) Nora 2026-06-26 04:50:38 -06:00
  • 3249ff0a55 fix: react-doctor unused-file 27→0 (-27 more dead files, wholesale consolidate) Nora 2026-06-26 04:44:15 -06:00
  • 27b2ded94e fix: react-doctor unused-file 123→27 (-96 dead files removed) Nora 2026-06-26 04:38:44 -06:00