-
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