Commit Graph

  • 74b89f5490 feat(cogeco-checker): POC competitor-serviceability microservice (WIP) louispaulb 2026-06-01 20:56:05 -0400
  • ab57a3e135 fix(reports/legacy): freshness from service date, not invoice date louispaulb 2026-06-01 19:57:09 -0400
  • 7413743572 fix(reports/legacy): include Internet equipment cats to capture all discounts louispaulb 2026-06-01 19:46:58 -0400
  • 94ebb822db feat(reports/legacy): data-freshness banner + recently-expired-discount column louispaulb 2026-06-01 19:31:41 -0400
  • 8a9df4b85e fix(reports/legacy): active clients only — exclude terminated + non-customer accounts louispaulb 2026-06-01 19:21:24 -0400
  • b631fabf91 fix(reports/legacy): exclude expired credits; confirm monthly price model louispaulb 2026-06-01 19:12:49 -0400
  • 7f06c254c8 feat(ops/reports): "Internet trop cher" legacy report louispaulb 2026-06-01 19:06:05 -0400
  • 0fb9089f4e fix(campaigns/templates): center logos via nested-table pattern louispaulb 2026-06-01 18:45:30 -0400
  • 0fd1e9f6b5 feat(campaigns/templates): Gemini-powered HTML→native converter louispaulb 2026-06-01 18:29:15 -0400
  • 2919fa86af feat(campaigns/templates): native-block reminder template (proof of concept) louispaulb 2026-06-01 15:31:15 -0400
  • 8410464a22 feat(campaigns/reminder): cascade clicks to parent + family banner louispaulb 2026-06-01 15:24:52 -0400
  • e7b937e2a3 style(campaigns/reminder): add "pour te remercier" / "as a thank-you" louispaulb 2026-06-01 15:09:41 -0400
  • a07b45235a fix(campaigns/expiry-picker): show + save dates in America/Montreal TZ louispaulb 2026-06-01 15:06:57 -0400
  • ddedd60320 fix(campaigns/expiry): format dates in America/Montreal, not container UTC louispaulb 2026-06-01 14:58:54 -0400
  • c55f75739f fix(hub/cors): allow PATCH in preflight Access-Control-Allow-Methods louispaulb 2026-06-01 14:49:11 -0400
  • 89057d0166 feat(campaigns/expiry): date picker for explicit cutoff louispaulb 2026-06-01 14:45:14 -0400
  • 31562f62bf style(campaigns/templates): replace em-dashes with periods/commas louispaulb 2026-06-01 12:26:59 -0400
  • 73c42d6997 fix(campaigns/reminder): softer tone + render expiry in tests louispaulb 2026-06-01 11:55:20 -0400
  • e64e1e6a1f feat(campaigns/detail): edit draft params + jump to template editor louispaulb 2026-06-01 11:51:45 -0400
  • f414975b00 feat(campaigns): reminder campaign for non-clickers louispaulb 2026-06-01 11:43:35 -0400
  • 6577bb79bc feat(campaigns/send): real SMTP error + auto-retry + one-click Renvoyer louispaulb 2026-05-22 13:29:25 -0400
  • d5ee57acf2 feat(campaigns/wizard): inspectable dropped-row list with one-click recovery louispaulb 2026-05-22 11:55:48 -0400
  • 5b5df954c1 fix(campaigns/wizard): always show parse summary, even on 0 drops louispaulb 2026-05-22 11:49:30 -0400
  • 5c55087198 fix(campaigns/parse): keep no-name rows + surface skip breakdown louispaulb 2026-05-22 11:43:22 -0400
  • f6d06d9b34 fix(campaigns/match): handle multi-email + dupe SLs + missing postal louispaulb 2026-05-22 11:36:51 -0400
  • 85ad66f103 feat(campaigns): one-click Giftbit admin lookup per recipient louispaulb 2026-05-22 10:58:33 -0400
  • feeae6eb40 feat(campaigns/templates): visible wrapper-expiry date in the email louispaulb 2026-05-22 10:47:58 -0400
  • d529019106 feat(campaigns): gifts inventory page + expiry presets louispaulb 2026-05-22 10:21:05 -0400
  • c0ca5feb6f feat(campaigns): gift redirect wrapper — own expiry + reusable links louispaulb 2026-05-22 10:15:43 -0400
  • 1c5241df69 fix(campaigns/wizard): template dropdowns now show non-suffixed templates + refresh louispaulb 2026-05-22 09:51:29 -0400
  • 5330fecf43 feat(campaigns/wizard): per-language template override louispaulb 2026-05-22 09:46:58 -0400
  • 9450dd34db feat(campaigns): delete campaign from the list louispaulb 2026-05-22 09:33:44 -0400
  • 4babb403e8 feat(campaigns): "View in browser" web fallback for failed inbox renders louispaulb 2026-05-22 09:30:38 -0400
  • 00f2e735c8 docs: Giftbit API integration overview for production approval louispaulb 2026-05-22 09:26:05 -0400
  • 9fb6fab88e feat(campaigns): distinguish gift-CTA click from generic email click louispaulb 2026-05-22 09:22:12 -0400
  • 10d3745b31 feat(campaigns/editor): "Variables" button — visible merge-tag reference louispaulb 2026-05-22 09:14:56 -0400
  • bf1253ac58 fix(campaigns/list): "Envois" column counted only status=sent louispaulb 2026-05-22 09:11:15 -0400
  • 2bc9715485 feat(campaigns): CSV report, manual recipients, template polish louispaulb 2026-05-22 09:09:07 -0400
  • 40a2e4e8f2 fix(campaigns/templates): drop 'sans engagement' claim from Option 2 louispaulb 2026-05-22 08:09:39 -0400
  • 8df17c823a fix(campaigns/templates): inject inline logos into EN template too louispaulb 2026-05-22 08:03:54 -0400
  • d76a922777 feat(campaigns/templates): inline merchant logos via simple <img> sequence louispaulb 2026-05-22 08:00:44 -0400
  • 3f72608a2f feat(campaigns/templates): inline merchant logos + objective prorata phrasing louispaulb 2026-05-22 07:58:55 -0400
  • 5327112717 fix(campaigns/templates): clearer prorata phrasing — "mois restants" / "remaining months" louispaulb 2026-05-22 07:50:51 -0400
  • f37b1d2803 fix(campaigns/templates): clarify who refunds whom for early cancellation louispaulb 2026-05-22 07:39:01 -0400
  • 2c47d3269e feat(campaigns/translate): switch from literal to copywriter-mode AI prompt louispaulb 2026-05-22 07:29:16 -0400
  • a6cd6ee453 fix(ops/campaigns): v-pre on translation dialog hint to avoid Vue parser crash on {{ '{{...}}' }} louispaulb 2026-05-22 07:23:35 -0400
  • 1b399f65eb feat(campaigns): AI template translator via Gemini Flash louispaulb 2026-05-22 07:21:45 -0400
  • d716e69ef6 feat(campaigns/templates): mirror user's FR edits to EN + drop legacy .mjml louispaulb 2026-05-22 07:07:05 -0400
  • 2f1ebae587 fix(hub): templates volume mount must be RW for editor saves louispaulb 2026-05-22 06:49:48 -0400
  • 73e4118901 feat(campaigns): create new templates from UI + enable Unlayer template library louispaulb 2026-05-22 06:39:26 -0400
  • 448e62177e feat(campaigns): convert existing HTML templates to Unlayer JSON designs louispaulb 2026-05-22 06:22:47 -0400
  • 4acb18c7df fix(ops/campaigns): drop loadBlank() call + force explicit editor dimensions louispaulb 2026-05-22 06:18:27 -0400
  • 9dcd32ef6a feat(ops/campaigns): group merge tags by category + add toolbar hint louispaulb 2026-05-22 06:16:16 -0400
  • a11fe5a115 feat(ops/campaigns): pivot template editor to Unlayer (vue-email-editor) louispaulb 2026-05-22 06:14:06 -0400
  • bb88a27b90 feat(email-editor): persist easy-email JSON state for instant restore on reload louispaulb 2026-05-22 06:04:48 -0400
  • f9971e9113 feat(ops/campaigns): Phase 2 — switch editor page to easy-email iframe louispaulb 2026-05-22 06:01:28 -0400
  • 0b6377fa58 feat(email-editor): Phase 1 — scaffold easy-email microservice for visual template editing louispaulb 2026-05-21 23:52:31 -0400
  • 2fe8d3f50e feat(campaigns/templates): richer 4-block intro (greeting, hook, gift, upsell) louispaulb 2026-05-21 22:44:16 -0400
  • 79ae38db60 feat(campaigns): MJML canonical templates + test-send button louispaulb 2026-05-21 22:36:35 -0400
  • b37270c11d feat(campaigns/editor): MJML mode — proper email-focused visual builder louispaulb 2026-05-21 22:29:42 -0400
  • 1af8b3a029 feat(campaigns/templates): add gift-email-{fr,en}-simple variants louispaulb 2026-05-21 22:04:39 -0400
  • bbd2b31761 feat(campaigns/templates): new opening line + logo image in dark footer louispaulb 2026-05-21 21:56:17 -0400
  • 4a4d145465 feat(campaigns/assets): self-hosted image upload + GrapesJS asset manager louispaulb 2026-05-21 21:53:01 -0400
  • d694d889a1 feat(campaigns/templates): replace placehold.co with real Mailjet logos for rows 2-3 louispaulb 2026-05-21 21:36:51 -0400
  • d897bcedb4 feat(campaigns): auto-clean first/last names (QC accents + compound split) louispaulb 2026-05-21 21:33:10 -0400
  • 2b85735006 fix(ops/campaigns): clarify Step 2 actions + add inline preview + jump-to-editor louispaulb 2026-05-21 21:01:40 -0400
  • d6096fe1f8 feat(campaigns): apply real TARGO brand + auto-route FR/EN by Customer.language louispaulb 2026-05-21 20:50:56 -0400
  • 8d9e190c21 feat(ops/campaigns): explicit contact↔shortlink pairing review before approve louispaulb 2026-05-21 20:31:44 -0400
  • 0186a7318e fix(ops/campaigns): correct row counts in Step 1 — Link Order CSV had no header louispaulb 2026-05-21 20:27:22 -0400
  • ff629a6a85 feat(campaigns): support Giftbit Link Order CSV + add blank-canvas editor mode louispaulb 2026-05-21 20:14:29 -0400
  • 0f78fbe27e fix(hub/campaigns): move /templates routes above the /:id wildcard louispaulb 2026-05-21 19:15:04 -0400
  • 611f4ed5a6 feat(ops/campaigns): UI module for gift campaigns + GrapesJS template editor louispaulb 2026-05-21 19:08:04 -0400
  • 5d763f12ff feat(hub): gift-campaign module — CSV parse, customer match, async send + webhook louispaulb 2026-05-21 19:07:40 -0400
  • 9f2b37939d feat(campaigns): TARGO rebrand + Mustache sections + Mailjet webhook setup louispaulb 2026-05-21 19:07:20 -0400
  • 9b06e2df30 fix(docs/campaigns): support@targointernet.com is the validated sender, not support@targo.ca louispaulb 2026-05-21 16:42:18 -0400
  • 380f3bc0e7 docs(campaigns): document support@targo.ca as the default gift-campaign sender louispaulb 2026-05-21 16:36:06 -0400
  • e1283f30e8 feat(campaigns): add Giftbit API client + validate end-to-end with sandbox louispaulb 2026-05-21 16:20:28 -0400
  • 37896421c3 feat(campaigns): MVP gift campaign sender (Node CLI + FR email template) louispaulb 2026-05-21 15:51:01 -0400
  • a6974e2443 chore(ops): install frappe_pg + version-control the post-install patch louispaulb 2026-05-21 15:15:31 -0400
  • c31a9e029e docs: recommend frappe_pg community app for ERPNext PostgreSQL compat louispaulb 2026-05-21 14:40:36 -0400
  • 10afd696ae fix(migration): clean address_line + postal_code + connection_type at import louispaulb 2026-05-08 15:38:19 -0400
  • 1186e50bbe fix(ops/client): cancelled subs no longer inflate monthly total + Lieu link in-app louispaulb 2026-05-08 11:21:18 -0400
  • ab7644e6de fix(ops/dispatch): /desk/<DocType>/ broken URL → /app/<slug>/ + add /address/validate hub louispaulb 2026-05-08 11:01:32 -0400
  • f4ae023302 fix(ops/dispatch): surface customer + service-location links from a job + fix bad coords louispaulb 2026-05-08 10:29:59 -0400
  • 2ec5e49a06 docs: fix DocuSeal hostname (sign.gigafibre.ca, not docs.gigafibre.ca) louispaulb 2026-05-08 09:25:29 -0400
  • 0f8d2b0565 docs: bring all docs in sync with the May 2026 reality louispaulb 2026-05-05 20:10:40 -0400
  • cbeb61e04e feat(hub+ops): user invite flow sends temp password via Mailjet + dev .env.example louispaulb 2026-05-05 19:50:06 -0400
  • 81d61aa9d9 feat(ops/auth): invite-user UI in Settings — creates Authentik + ERPNext + recovery email louispaulb 2026-05-05 15:29:18 -0400
  • 66b358d568 refactor(ops/dispatch): single-color Lucide icons + tech-first resource filter louispaulb 2026-05-05 14:31:00 -0400
  • 16343b61e1 fix(ops/dispatch): top bar polish — visible ⋯ menu, collapsed AI, fly-to tech, views dropdown louispaulb 2026-05-05 14:17:33 -0400
  • 96a84c3e48 refactor(ops/dispatch): consolidate top toolbar with overflow ⋯ menu louispaulb 2026-05-05 14:07:04 -0400
  • c96092e9e8 feat(ops/dispatch): right-click tech pin + click-on-map home picker + center map on HQ louispaulb 2026-05-05 14:02:26 -0400
  • 060cc034a8 feat(ops/dispatch): editable tech home base + new default at Gigafibre HQ louispaulb 2026-05-05 13:53:14 -0400
  • 490b9ce457 fix(ops/dispatch): tech pin drifts away from lat/lng on map zoom louispaulb 2026-05-05 13:40:29 -0400
  • a5cfe997b6 chore(hub): gate Oktopus integration behind OKTOPUS_DISABLED flag louispaulb 2026-05-04 10:34:36 -0400
  • 218f6fc7b1 feat(ops): Service Contract detail view + sub-delete redirects there louispaulb 2026-04-23 14:46:34 -0400
  • 64d5751149 feat(ops/client): contract-aware sub delete with termination preview louispaulb 2026-04-23 13:47:53 -0400
  • 349f9af2da feat(ops/client): edit/delete/reorder subscriptions + rebate nesting louispaulb 2026-04-23 11:21:41 -0400
  • dfd41ee993 fix(ops/client): consolidate on Service Subscription + catalog browse louispaulb 2026-04-23 11:07:54 -0400
  • 60e300335b fix(ops/TaskNode): drop credentials:'include' on job-delete fetch louispaulb 2026-04-23 10:57:57 -0400