-
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