-
d3620969e2
fix(reports/legacy): exclude expired credits; confirm monthly price model
louispaulb
2026-06-01 19:12:49 -0400
-
37c53019f4
feat(ops/reports): "Internet trop cher" legacy report
louispaulb
2026-06-01 19:06:05 -0400
-
8455409f2a
fix(campaigns/templates): center logos via nested-table pattern
louispaulb
2026-06-01 18:45:30 -0400
-
8a3074184a
feat(campaigns/templates): Gemini-powered HTML→native converter
louispaulb
2026-06-01 18:29:15 -0400
-
6dbd1c3de3
feat(campaigns/templates): native-block reminder template (proof of concept)
louispaulb
2026-06-01 15:31:15 -0400
-
6e103ff05b
feat(campaigns/reminder): cascade clicks to parent + family banner
louispaulb
2026-06-01 15:24:52 -0400
-
92ceb54450
style(campaigns/reminder): add "pour te remercier" / "as a thank-you"
louispaulb
2026-06-01 15:09:41 -0400
-
8064606564
fix(campaigns/expiry-picker): show + save dates in America/Montreal TZ
louispaulb
2026-06-01 15:06:57 -0400
-
077262d4e5
fix(campaigns/expiry): format dates in America/Montreal, not container UTC
louispaulb
2026-06-01 14:58:54 -0400
-
f2a1815ed5
fix(hub/cors): allow PATCH in preflight Access-Control-Allow-Methods
louispaulb
2026-06-01 14:49:11 -0400
-
e63f55d864
feat(campaigns/expiry): date picker for explicit cutoff
louispaulb
2026-06-01 14:45:14 -0400
-
d06dd53534
style(campaigns/templates): replace em-dashes with periods/commas
louispaulb
2026-06-01 12:26:59 -0400
-
0248a195f8
fix(campaigns/reminder): softer tone + render expiry in tests
louispaulb
2026-06-01 11:55:20 -0400
-
e18523d377
feat(campaigns/detail): edit draft params + jump to template editor
louispaulb
2026-06-01 11:51:45 -0400
-
0f59191fde
feat(campaigns): reminder campaign for non-clickers
louispaulb
2026-06-01 11:43:35 -0400
-
1774418689
feat(campaigns/send): real SMTP error + auto-retry + one-click Renvoyer
louispaulb
2026-05-22 13:29:25 -0400
-
7e0f4d0799
feat(campaigns/wizard): inspectable dropped-row list with one-click recovery
louispaulb
2026-05-22 11:55:48 -0400
-
f7562b3f25
fix(campaigns/wizard): always show parse summary, even on 0 drops
louispaulb
2026-05-22 11:49:30 -0400
-
04a2db35c5
fix(campaigns/parse): keep no-name rows + surface skip breakdown
louispaulb
2026-05-22 11:43:22 -0400
-
82195847b5
fix(campaigns/match): handle multi-email + dupe SLs + missing postal
louispaulb
2026-05-22 11:36:51 -0400
-
27079bba11
feat(campaigns): one-click Giftbit admin lookup per recipient
louispaulb
2026-05-22 10:58:33 -0400
-
dcc5679fa3
feat(campaigns/templates): visible wrapper-expiry date in the email
louispaulb
2026-05-22 10:47:58 -0400
-
ec007ed406
feat(campaigns): gifts inventory page + expiry presets
louispaulb
2026-05-22 10:21:05 -0400
-
6fe6e4df0d
feat(campaigns): gift redirect wrapper — own expiry + reusable links
louispaulb
2026-05-22 10:15:43 -0400
-
8547082cf5
fix(campaigns/wizard): template dropdowns now show non-suffixed templates + refresh
louispaulb
2026-05-22 09:51:29 -0400
-
6c3380d984
feat(campaigns/wizard): per-language template override
louispaulb
2026-05-22 09:46:58 -0400
-
9f3a991442
feat(campaigns): delete campaign from the list
louispaulb
2026-05-22 09:33:44 -0400
-
fc40e7f684
feat(campaigns): "View in browser" web fallback for failed inbox renders
louispaulb
2026-05-22 09:30:38 -0400
-
ac953546e8
docs: Giftbit API integration overview for production approval
louispaulb
2026-05-22 09:26:05 -0400
-
02b1b55b7b
feat(campaigns): distinguish gift-CTA click from generic email click
louispaulb
2026-05-22 09:22:12 -0400
-
eafff12856
feat(campaigns/editor): "Variables" button — visible merge-tag reference
louispaulb
2026-05-22 09:14:56 -0400
-
c3a062956f
fix(campaigns/list): "Envois" column counted only status=sent
louispaulb
2026-05-22 09:11:15 -0400
-
1b64e3123d
feat(campaigns): CSV report, manual recipients, template polish
louispaulb
2026-05-22 09:09:07 -0400
-
de8c1c51b8
fix(campaigns/templates): drop 'sans engagement' claim from Option 2
louispaulb
2026-05-22 08:09:39 -0400
-
972c99ffc1
fix(campaigns/templates): inject inline logos into EN template too
louispaulb
2026-05-22 08:03:54 -0400
-
9415cf3868
feat(campaigns/templates): inline merchant logos via simple <img> sequence
louispaulb
2026-05-22 08:00:44 -0400
-
6cf9148eb7
feat(campaigns/templates): inline merchant logos + objective prorata phrasing
louispaulb
2026-05-22 07:58:55 -0400
-
1dda74e8a4
fix(campaigns/templates): clearer prorata phrasing — "mois restants" / "remaining months"
louispaulb
2026-05-22 07:50:51 -0400
-
1ee3c00fc4
fix(campaigns/templates): clarify who refunds whom for early cancellation
louispaulb
2026-05-22 07:39:01 -0400
-
3c9e1e095a
feat(campaigns/translate): switch from literal to copywriter-mode AI prompt
louispaulb
2026-05-22 07:29:16 -0400
-
c695f05822
fix(ops/campaigns): v-pre on translation dialog hint to avoid Vue parser crash on {{ '{{...}}' }}
louispaulb
2026-05-22 07:23:35 -0400
-
43c19048a7
feat(campaigns): AI template translator via Gemini Flash
louispaulb
2026-05-22 07:21:45 -0400
-
dd80da4352
feat(campaigns/templates): mirror user's FR edits to EN + drop legacy .mjml
louispaulb
2026-05-22 07:07:05 -0400
-
328d13f6f9
fix(hub): templates volume mount must be RW for editor saves
louispaulb
2026-05-22 06:49:48 -0400
-
9ad5b46b4c
feat(campaigns): create new templates from UI + enable Unlayer template library
louispaulb
2026-05-22 06:39:26 -0400
-
d2cb8f4ee0
feat(campaigns): convert existing HTML templates to Unlayer JSON designs
louispaulb
2026-05-22 06:22:47 -0400
-
cda44c51cf
fix(ops/campaigns): drop loadBlank() call + force explicit editor dimensions
louispaulb
2026-05-22 06:18:27 -0400
-
3cc0377e3d
feat(ops/campaigns): group merge tags by category + add toolbar hint
louispaulb
2026-05-22 06:16:16 -0400
-
0cd99b6d44
feat(ops/campaigns): pivot template editor to Unlayer (vue-email-editor)
louispaulb
2026-05-22 06:14:06 -0400
-
229d450f9b
feat(email-editor): persist easy-email JSON state for instant restore on reload
louispaulb
2026-05-22 06:04:48 -0400
-
110cea3995
feat(ops/campaigns): Phase 2 — switch editor page to easy-email iframe
louispaulb
2026-05-22 06:01:28 -0400
-
e48ce94f26
feat(email-editor): Phase 1 — scaffold easy-email microservice for visual template editing
louispaulb
2026-05-21 23:52:31 -0400
-
829b91eecc
feat(campaigns/templates): richer 4-block intro (greeting, hook, gift, upsell)
louispaulb
2026-05-21 22:44:16 -0400
-
1c2fa10f7f
feat(campaigns): MJML canonical templates + test-send button
louispaulb
2026-05-21 22:36:35 -0400
-
2f11b532c8
feat(campaigns/editor): MJML mode — proper email-focused visual builder
louispaulb
2026-05-21 22:29:42 -0400
-
2b7f73c2d5
feat(campaigns/templates): add gift-email-{fr,en}-simple variants
louispaulb
2026-05-21 22:04:39 -0400
-
dc86aeb128
feat(campaigns/templates): new opening line + logo image in dark footer
louispaulb
2026-05-21 21:56:17 -0400
-
1d05c5c4c5
feat(campaigns/assets): self-hosted image upload + GrapesJS asset manager
louispaulb
2026-05-21 21:53:01 -0400
-
c6b7955c67
feat(campaigns/templates): replace placehold.co with real Mailjet logos for rows 2-3
louispaulb
2026-05-21 21:36:51 -0400
-
e6b48d8791
feat(campaigns): auto-clean first/last names (QC accents + compound split)
louispaulb
2026-05-21 21:33:10 -0400
-
ea780e61ab
fix(ops/campaigns): clarify Step 2 actions + add inline preview + jump-to-editor
louispaulb
2026-05-21 21:01:40 -0400
-
3477b8f3bb
feat(campaigns): apply real TARGO brand + auto-route FR/EN by Customer.language
louispaulb
2026-05-21 20:50:56 -0400
-
672188bab9
feat(ops/campaigns): explicit contact↔shortlink pairing review before approve
louispaulb
2026-05-21 20:31:44 -0400
-
44ce8a616a
fix(ops/campaigns): correct row counts in Step 1 — Link Order CSV had no header
louispaulb
2026-05-21 20:27:22 -0400
-
0a5c67be13
feat(campaigns): support Giftbit Link Order CSV + add blank-canvas editor mode
louispaulb
2026-05-21 20:14:29 -0400
-
4d86d41dc5
fix(hub/campaigns): move /templates routes above the /:id wildcard
louispaulb
2026-05-21 19:15:04 -0400
-
2de87c4c7b
feat(ops/campaigns): UI module for gift campaigns + GrapesJS template editor
louispaulb
2026-05-21 19:08:04 -0400
-
025c1eee60
feat(hub): gift-campaign module — CSV parse, customer match, async send + webhook
louispaulb
2026-05-21 19:07:40 -0400
-
7aa83f2b6a
feat(campaigns): TARGO rebrand + Mustache sections + Mailjet webhook setup
louispaulb
2026-05-21 19:07:20 -0400
-
0419ea5b9d
fix(docs/campaigns): support@targointernet.com is the validated sender, not support@targo.ca
louispaulb
2026-05-21 16:42:18 -0400
-
7327c49560
docs(campaigns): document support@targo.ca as the default gift-campaign sender
louispaulb
2026-05-21 16:36:06 -0400
-
381dffd216
feat(campaigns): add Giftbit API client + validate end-to-end with sandbox
louispaulb
2026-05-21 16:20:28 -0400
-
55648cb887
feat(campaigns): MVP gift campaign sender (Node CLI + FR email template)
louispaulb
2026-05-21 15:51:01 -0400
-
667deb7410
chore(ops): install frappe_pg + version-control the post-install patch
louispaulb
2026-05-21 15:15:31 -0400
-
0885492091
docs: recommend frappe_pg community app for ERPNext PostgreSQL compat
louispaulb
2026-05-21 14:40:36 -0400
-
3c9526e462
fix(migration): clean address_line + postal_code + connection_type at import
louispaulb
2026-05-08 15:38:19 -0400
-
f507367ac4
fix(ops/client): cancelled subs no longer inflate monthly total + Lieu link in-app
louispaulb
2026-05-08 11:21:18 -0400
-
4af25071be
fix(ops/dispatch): /desk/<DocType>/ broken URL → /app/<slug>/ + add /address/validate hub
louispaulb
2026-05-08 11:01:32 -0400
-
478d24859e
fix(ops/dispatch): surface customer + service-location links from a job + fix bad coords
louispaulb
2026-05-08 10:29:59 -0400
-
e1653200a6
docs: fix DocuSeal hostname (sign.gigafibre.ca, not docs.gigafibre.ca)
louispaulb
2026-05-08 09:25:29 -0400
-
713d306fb7
docs: bring all docs in sync with the May 2026 reality
louispaulb
2026-05-05 20:10:40 -0400
-
bb77c04943
feat(hub+ops): user invite flow sends temp password via Mailjet + dev .env.example
louispaulb
2026-05-05 19:50:06 -0400
-
969fe42f3f
feat(ops/auth): invite-user UI in Settings — creates Authentik + ERPNext + recovery email
louispaulb
2026-05-05 15:29:18 -0400
-
7a607817c0
refactor(ops/dispatch): single-color Lucide icons + tech-first resource filter
louispaulb
2026-05-05 14:31:00 -0400
-
9844e5ae54
fix(ops/dispatch): top bar polish — visible ⋯ menu, collapsed AI, fly-to tech, views dropdown
louispaulb
2026-05-05 14:17:33 -0400
-
2d38c79011
refactor(ops/dispatch): consolidate top toolbar with overflow ⋯ menu
louispaulb
2026-05-05 14:07:04 -0400
-
510d619b5e
feat(ops/dispatch): right-click tech pin + click-on-map home picker + center map on HQ
louispaulb
2026-05-05 14:02:26 -0400
-
ac52406e30
feat(ops/dispatch): editable tech home base + new default at Gigafibre HQ
louispaulb
2026-05-05 13:53:14 -0400
-
5a2de35405
fix(ops/dispatch): tech pin drifts away from lat/lng on map zoom
louispaulb
2026-05-05 13:40:29 -0400
-
0bd9ccc454
chore(hub): gate Oktopus integration behind OKTOPUS_DISABLED flag
louispaulb
2026-05-04 10:34:36 -0400
-
7aca04b7fa
feat(ops): Service Contract detail view + sub-delete redirects there
louispaulb
2026-04-23 14:46:34 -0400
-
c6a53c2590
feat(ops/client): contract-aware sub delete with termination preview
louispaulb
2026-04-23 13:47:53 -0400
-
db14ccf5cd
feat(ops/client): edit/delete/reorder subscriptions + rebate nesting
louispaulb
2026-04-23 11:21:41 -0400
-
ecc8827c59
fix(ops/client): consolidate on Service Subscription + catalog browse
louispaulb
2026-04-23 11:07:54 -0400
-
76f2ea3b6c
fix(ops/TaskNode): drop credentials:'include' on job-delete fetch
louispaulb
2026-04-23 10:57:57 -0400
-
5d253380ab
fix(chain+subs): safe job-delete, plan_name from Quotation, bi-dir sub link
louispaulb
2026-04-23 10:19:56 -0400
-
7c828a3352
fix(contracts): create pending Service Subscription on signing + test templates
louispaulb
2026-04-23 10:03:49 -0400
-
ba7666109c
refactor(targo-hub): add types.js, migrate acceptance+payments, drop apps/field
louispaulb
2026-04-22 23:18:25 -0400
-
32baa409fc
refactor(targo-hub): add erp.js wrapper + migrate 7 lib files to it
louispaulb
2026-04-22 23:01:27 -0400
-
ef6763d4cc
refactor(targo-hub): extract ui/ kit, migrate tech-mobile to it
louispaulb
2026-04-22 22:47:19 -0400