Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
912 commits
Select commit Hold shift + click to select a range
de2c342
test: verify market i18n and mobile surface
angellllkr-eng Jun 9, 2026
fdb894a
docs: add market SEO positioning lane
angellllkr-eng Jun 9, 2026
8a448fc
feat: add priority market footer strip
angellllkr-eng Jun 9, 2026
336cc5c
test: require footer market strip
angellllkr-eng Jun 9, 2026
bfd58e1
docs: record deployment alias status check
angellllkr-eng Jun 9, 2026
b8832a7
Add assisted close playbook for website package
angellllkr-eng Jun 9, 2026
c34c0ca
Update production recovery state with latest deployment proof
angellllkr-eng Jun 9, 2026
1cdc16a
ci: explicitly alias Vercel production domains
angellllkr-eng Jun 9, 2026
1aa3faa
test: fail stale live domain assets
angellllkr-eng Jun 9, 2026
bcf9a46
ci: attach live domain proof to owner reports
angellllkr-eng Jun 9, 2026
73906a3
test: require live proof in owner report workflow
angellllkr-eng Jun 9, 2026
5e3e126
Add package payment and invoice env placeholders
angellllkr-eng Jun 9, 2026
32c141f
Make package request receipt invoice-first by default
angellllkr-eng Jun 9, 2026
de207d6
Clarify invoice-first package request form
angellllkr-eng Jun 9, 2026
1382d92
Clarify package request fallback invoice message
angellllkr-eng Jun 9, 2026
9b86693
Add invoice-first close verifier
angellllkr-eng Jun 9, 2026
fa153da
Add invoice-first close verifier to decision gate
angellllkr-eng Jun 9, 2026
dff4370
feat: harden auto locale and market assist
angellllkr-eng Jun 9, 2026
6aa14ca
fix: tighten mobile locale spacing
angellllkr-eng Jun 9, 2026
85cea90
test: verify country locale and mobile footer polish
angellllkr-eng Jun 9, 2026
2fbe6d9
docs: add i18n market observation lanes
angellllkr-eng Jun 9, 2026
479d86b
ci: auto deploy production surface on main changes
angellllkr-eng Jun 9, 2026
7b80139
Clarify invoice-first homepage close path
angellllkr-eng Jun 9, 2026
8c4d69a
ci: fix deploy workflow without npm lockfile
angellllkr-eng Jun 9, 2026
517ac5a
ci: fix mragent verify without npm lockfile
angellllkr-eng Jun 9, 2026
0519a9b
Guard invoice-first homepage language
angellllkr-eng Jun 9, 2026
0140d6e
ci: fix manual production deploy install path
angellllkr-eng Jun 9, 2026
696897a
test: align locale verifier with dynamic market count
angellllkr-eng Jun 9, 2026
e0cab2d
Clarify package invoice route and SEO proof
angellllkr-eng Jun 9, 2026
f3d3367
Guard package page invoice proof
angellllkr-eng Jun 9, 2026
e21a228
ci: split production verification steps
angellllkr-eng Jun 9, 2026
661ecd9
ci: split decision layer verification
angellllkr-eng Jun 9, 2026
0ee372a
ci: split mragent verification gates
angellllkr-eng Jun 9, 2026
d050f50
Update production recovery state for invoice proof deploy
angellllkr-eng Jun 9, 2026
d373d3e
ci: restore reporting-only Vercel guard paths
angellllkr-eng Jun 9, 2026
3d2d8c2
ci: accept common Vercel token secret names
angellllkr-eng Jun 9, 2026
2e629f6
Verify live package page invoice proof
angellllkr-eng Jun 9, 2026
3f04c1c
ci: accept fallback Vercel token in manual deploy
angellllkr-eng Jun 9, 2026
fe1132b
Guard live package proof verifier contract
angellllkr-eng Jun 9, 2026
a7b257b
Update recovery state with live package gate
angellllkr-eng Jun 9, 2026
4c0cfe9
Add no-build Vercel alias recovery workflow
angellllkr-eng Jun 9, 2026
55480c5
Guard no-build alias workflow contract
angellllkr-eng Jun 9, 2026
aa361c5
Document no-build alias recovery path
angellllkr-eng Jun 9, 2026
b0b8c77
Link no-build alias workflow in recovery state
angellllkr-eng Jun 9, 2026
99b75ef
Point alias recovery at latest ready deployment
angellllkr-eng Jun 9, 2026
46644e3
Update no-build alias target to latest ready deployment
angellllkr-eng Jun 9, 2026
85a86a6
Guard latest alias recovery target
angellllkr-eng Jun 9, 2026
5802e62
Refresh production alias recovery state
angellllkr-eng Jun 9, 2026
0aaf177
Point alias recovery at latest ready contract deployment
angellllkr-eng Jun 9, 2026
adc8604
Update alias recovery runbook to latest ready contract deployment
angellllkr-eng Jun 9, 2026
cddbb13
Guard current alias recovery deployment target
angellllkr-eng Jun 9, 2026
64043a0
Refresh alias state for latest ready contract deployment
angellllkr-eng Jun 9, 2026
5cd4c68
fix: keep footer evidence copy customer-facing
angellllkr-eng Jun 10, 2026
cbb31f9
Record June 10 production alias status
angellllkr-eng Jun 10, 2026
9b1f386
ci: target latest footer deploy in alias repair
angellllkr-eng Jun 10, 2026
f36577b
Collect billing details for invoice-first package requests
angellllkr-eng Jun 10, 2026
868206a
Add billing capture to package request form
angellllkr-eng Jun 10, 2026
76005ab
Align package request fallback with billing capture
angellllkr-eng Jun 10, 2026
7253752
Verify billing capture for invoice-first close
angellllkr-eng Jun 10, 2026
e458cfa
Add billing details to fallback package email
angellllkr-eng Jun 10, 2026
97f3e32
Update page.tsx
angellllkr-eng Jun 10, 2026
fa70214
feat: deepen locale assist translations and discreet market selector
angellllkr-eng Jun 10, 2026
4c2db0b
Target billing-ready deployment in alias recovery
angellllkr-eng Jun 10, 2026
64af837
feat: refine footer market positioning and mobile handoff
angellllkr-eng Jun 10, 2026
dc76c5d
fix: tighten mobile footer and locale presentation
angellllkr-eng Jun 10, 2026
8931a3c
Guard billing-ready alias recovery target
angellllkr-eng Jun 10, 2026
e868e3e
feat: align metadata with priority demand markets
angellllkr-eng Jun 10, 2026
ffb12fe
feat: prioritize geo locale markets by demand gap
angellllkr-eng Jun 10, 2026
a45177b
test: verify priority market locale and mobile refinements
angellllkr-eng Jun 10, 2026
860ec4c
docs: record priority market and locale observation logic
angellllkr-eng Jun 10, 2026
542718a
feat: add full page translation provider fallback
angellllkr-eng Jun 10, 2026
3a5a811
feat: wire full page translation provider
angellllkr-eng Jun 10, 2026
922b352
fix: hide raw auto country label and publish locale changes
angellllkr-eng Jun 10, 2026
0957a3c
fix: hide translate provider chrome and preserve mobile polish
angellllkr-eng Jun 10, 2026
6e0a19b
feat: tune MRagent for short slow varied replies
angellllkr-eng Jun 10, 2026
eae6e22
test: verify translation provider and hidden country label
angellllkr-eng Jun 10, 2026
1ae6e90
feat: add detailed product surface
angellllkr-eng Jun 10, 2026
721c27f
feat: add fixed price checkout route
angellllkr-eng Jun 10, 2026
bf9761a
feat: replace noisy locale assist with translate handoff
angellllkr-eng Jun 10, 2026
8de0076
Update LocaleAssistV2.tsx
angellllkr-eng Jun 10, 2026
083a744
docs: add revenue conversion war plan for homepage and outreach
angellllkr-eng Jun 10, 2026
00a4202
Tighten MRagent speed variation and provider safety
angellllkr-eng Jun 10, 2026
2ab7494
feat: sharpen homepage revenue path and product detail
angellllkr-eng Jun 10, 2026
69d50ff
Update page.tsx
angellllkr-eng Jun 10, 2026
93665a9
Clean footer language and public contact copy
angellllkr-eng Jun 10, 2026
b16ee14
Add live homepage revenue rewrite pack
angellllkr-eng Jun 10, 2026
5c332e8
Add homepage revenue pack
angellllkr-eng Jun 10, 2026
d2c82e3
Sharpen homepage revenue conversion plan
Jun 10, 2026
74a0e29
fix: polish footer routes and language handoff
angellllkr-eng Jun 10, 2026
8477eb4
fix: add product and checkout routes to sitemap
angellllkr-eng Jun 10, 2026
f3f680e
fix: expose product and checkout routes to crawlers
angellllkr-eng Jun 10, 2026
6fce34a
fix: verify current revenue and translation surface
angellllkr-eng Jun 10, 2026
8718098
Merge remote-tracking branch 'origin/main' into codex/revenue-homepag…
Jun 10, 2026
245da0b
docs: add homepage revenue strategy
angellllkr-eng Jun 10, 2026
5780371
docs: add outbound revenue assets
angellllkr-eng Jun 10, 2026
792b78f
Add Bulgarian locale assist and whole-site translation trigger
angellllkr-eng Jun 10, 2026
0a05832
Add Bulgarian to Google Translate provider
angellllkr-eng Jun 10, 2026
189181d
Add Bulgarian sitemap alternates
angellllkr-eng Jun 10, 2026
6ccb229
Add Bulgarian country locale mapping
angellllkr-eng Jun 10, 2026
cc7dbcb
Add Bulgarian SEO metadata
angellllkr-eng Jun 10, 2026
c81f230
Add Bulgarian multilingual policy to MRagent
angellllkr-eng Jun 10, 2026
0f98fb8
Fix revenue verifier gates after main merge
Jun 10, 2026
3f14eb0
Add Bulgaria to footer market list
angellllkr-eng Jun 10, 2026
6a57f6a
Add Bulgarian to capabilities language copy
angellllkr-eng Jun 10, 2026
fb46547
Verify Bulgarian i18n and MRagent multilingual support
angellllkr-eng Jun 10, 2026
216694c
fix: speed up MRagent visible response state
angellllkr-eng Jun 10, 2026
a3e7c6f
fix: remove public locale market plumbing from footer
angellllkr-eng Jun 10, 2026
68f65ec
fix: make language selector discreet
angellllkr-eng Jun 10, 2026
6936fe9
fix: use controlled translation provider
angellllkr-eng Jun 10, 2026
c6cb4e0
feat: add controlled translation API
angellllkr-eng Jun 10, 2026
d6e6a79
fix: allow translate API route
angellllkr-eng Jun 10, 2026
0053b94
fix: route homepage package path through checkout
angellllkr-eng Jun 10, 2026
80f3680
Tighten MRagent response length and tone
Jun 10, 2026
abcaedd
Merge remote-tracking branch 'origin/main' into codex/revenue-homepag…
Jun 10, 2026
36f5382
fix: align revenue i18n verifier with short MRagent behavior
angellllkr-eng Jun 10, 2026
92b3d4d
fix: require product checkout and current locale proof live
angellllkr-eng Jun 10, 2026
e3016d7
fix: restore quiet footer language market proof
angellllkr-eng Jun 10, 2026
970a2be
Clarify pricing upgrade triggers
Jun 10, 2026
9e9846c
fix: verify google translate route and current locale widget
angellllkr-eng Jun 10, 2026
36aa929
fix: polish MRagent public opener and response pacing
angellllkr-eng Jun 10, 2026
6d08430
Add concrete homepage trust proof
Jun 10, 2026
d1790fe
Merge remote-tracking branch 'origin/main' into codex/revenue-homepag…
Jun 10, 2026
eed0637
Add Bulgarian full-site translation support
Jun 10, 2026
8b4f0e1
ci: add production Vercel deploy workflow
angellllkr-eng Jun 10, 2026
abfd6ff
Add homepage first-session conversion logic
Jun 10, 2026
87d47f2
ci: retry production deploy when live commit lags
angellllkr-eng Jun 10, 2026
42f871c
ci: smoke check production deploy
angellllkr-eng Jun 10, 2026
29cbdec
Merge remote-tracking branch 'origin/main' into codex/revenue-homepag…
Jun 10, 2026
8ce3b22
Add response overload landing page
Jun 10, 2026
2a5396f
ci: install without npm lockfile in deploy checks
angellllkr-eng Jun 10, 2026
104b17e
ci: keep hourly reports working without npm lockfile
angellllkr-eng Jun 10, 2026
11ec63d
fix: add i18n seo verifier script for production deploy
angellllkr-eng Jun 10, 2026
8fd1c09
ci: make production deploy retry lockfile-safe
angellllkr-eng Jun 10, 2026
36d6b92
fix: make production deploy manual and alias verified output
angellllkr-eng Jun 10, 2026
8a3c2e7
ci: stop duplicate push deploy workflow
angellllkr-eng Jun 10, 2026
ef969b4
fix: restore contact form verification copy
angellllkr-eng Jun 10, 2026
f47a968
Verify response overload revenue routes
Jun 10, 2026
b05a8a9
fix: expose package request route in contact copy
angellllkr-eng Jun 10, 2026
bb37521
Merge remote-tracking branch 'origin/main' into codex/revenue-homepag…
Jun 10, 2026
432792c
Add package buyer proof checklist
Jun 10, 2026
1bc8d10
fix: correct owner report email fallbacks
Jun 10, 2026
fc192cc
docs: record production deploy apply status
angellllkr-eng Jun 10, 2026
0b31642
Merge PR #18: Sharpen homepage revenue conversion plan
angellllkr-eng Jun 10, 2026
8b9f9cf
fix: disable duplicate Vercel git deployments
Jun 10, 2026
38144c3
Add package assisted-close asset pack
Jun 10, 2026
95a30d8
Merge PR #21: Disable duplicate Vercel Git deployments
angellllkr-eng Jun 10, 2026
b0cbddf
Codify website audit diagnosis blueprint
Jun 10, 2026
6fc6678
Add launch evidence bundle contract
Jun 10, 2026
9f52f8b
docs: update current deployment state
angellllkr-eng Jun 10, 2026
73f7e25
Tighten Bulgarian full-site translation readiness
Jun 10, 2026
35d719e
Add safe Slack DM handoff reporting
Jun 10, 2026
b2a6725
Harden Slack reporting handoff safety
Jun 10, 2026
37a347e
Restore hourly owner report delivery guards
Jun 10, 2026
a8a3d7f
fix: allow fallback Vercel token names in manual deploy
angellllkr-eng Jun 10, 2026
516f117
Guard Vercel deploy project binding
Jun 10, 2026
282a240
Fix live robots verifier path boundary
Jun 10, 2026
eaad031
docs: refresh current deployment state
angellllkr-eng Jun 10, 2026
1fbb773
Clarify homepage free CTA
Jun 10, 2026
8941114
Merge remote-tracking branch 'origin/main' into codex/deploy-ready-bu…
Jun 10, 2026
819820e
Merge remote-tracking branch 'origin/main' into codex/deploy-ready-bu…
Jun 10, 2026
1abe788
Merge PR #19: Tighten deploy-ready Bulgarian and reporting safety
angellllkr-eng Jun 10, 2026
15a574e
Record live deployment blocker evidence
angellllkr-eng Jun 10, 2026
0dc069b
Standardize free CTA across public surfaces
Jun 10, 2026
9c925a9
Refocus locale SEO on visitor language matching
Jun 10, 2026
3684cc8
Add version metadata build fallback
angellllkr-eng Jun 10, 2026
346fa7e
Add buyer-facing trust proof surface
Jun 10, 2026
995ac0a
Merge remote-tracking branch 'origin/main' into codex/ip-aware-multil…
Jun 10, 2026
24d2853
Refresh deployment evidence after version fallback
angellllkr-eng Jun 10, 2026
3066ef4
Remove legacy auto BG evidence marker
Jun 10, 2026
ab87abc
Add static version metadata fallback
Jun 10, 2026
3a67c4d
Merge latest main into visitor-matched locale release
Jun 10, 2026
b6c7db2
Merge visitor-matched multilingual SEO release
Jun 10, 2026
dee331b
Merge static version metadata fallback into multilingual release
Jun 10, 2026
3289f8a
Run version metadata before production builds
angellllkr-eng Jun 10, 2026
fcb8a56
Refresh version metadata during production builds
Jun 10, 2026
f8bdc13
Merge version metadata build refresh
Jun 10, 2026
35c1b61
Fix deploy metadata and unsupported locale reporting
angellllkr-eng Jun 10, 2026
2fe1040
Correct owner Gmail spelling in verifiers
Jun 10, 2026
5518c79
Merge latest main before Gmail spelling fix
Jun 10, 2026
4a4f808
Restore launch evidence bundle
Jun 10, 2026
b27e5f5
Merge launch evidence bundle before Gmail spelling fix
Jun 10, 2026
9841279
Clarify launch evidence source state
Jun 10, 2026
c930fab
feat: add shared multilingual locale routing
angellllkr-eng Jun 10, 2026
1217848
feat: route locale-prefixed pages
angellllkr-eng Jun 10, 2026
c95f36a
feat: publish localized sitemap routes
angellllkr-eng Jun 10, 2026
24777e6
feat: add multilingual metadata coverage
angellllkr-eng Jun 10, 2026
5bffcc8
feat: detect locale-prefixed pages for translation
angellllkr-eng Jun 10, 2026
d225b69
feat: switch language selector to localized paths
angellllkr-eng Jun 10, 2026
96b51bd
feat: send MRagent requests with locale
angellllkr-eng Jun 10, 2026
310282b
feat: localize decision layer responses
angellllkr-eng Jun 10, 2026
052dd42
feat: preserve locale through MRagent provider
angellllkr-eng Jun 10, 2026
29add81
feat: pass locale into MRagent route
angellllkr-eng Jun 10, 2026
7e59558
feat: pass locale into intake route
angellllkr-eng Jun 10, 2026
c080a69
feat: localize extension manifest
angellllkr-eng Jun 10, 2026
0a7f17c
feat: send extension locale to intake
angellllkr-eng Jun 10, 2026
48c5a4f
feat: render localized extension panel safely
angellllkr-eng Jun 10, 2026
9b52e70
feat: add extension locale en
angellllkr-eng Jun 10, 2026
2ff4461
feat: add extension locale es
angellllkr-eng Jun 10, 2026
81e9e46
feat: add extension locale fr
angellllkr-eng Jun 10, 2026
4f67fd3
feat: add extension locale de
angellllkr-eng Jun 10, 2026
d7a5979
feat: add extension locale pt-BR
angellllkr-eng Jun 10, 2026
0150f16
feat: add extension locale ar
angellllkr-eng Jun 10, 2026
139641a
feat: add extension locale hi
angellllkr-eng Jun 10, 2026
d98dc41
feat: add extension locale ja
angellllkr-eng Jun 10, 2026
193e74d
feat: add extension locale zh-CN
angellllkr-eng Jun 10, 2026
e23aa46
feat: add extension locale uk
angellllkr-eng Jun 10, 2026
36dc417
feat: add extension locale bg
angellllkr-eng Jun 10, 2026
763f0e2
fix: localize MRagent fallback replies
angellllkr-eng Jun 10, 2026
cf585b8
Fix visitor language metadata and sitemap routes
Jun 10, 2026
d98402a
fix: restore Bulgarian in shared locale contract
angellllkr-eng Jun 10, 2026
2b2deb5
fix: restore Bulgarian in page translation provider
angellllkr-eng Jun 10, 2026
fc61e10
fix: restore Bulgarian in language selector
angellllkr-eng Jun 10, 2026
d45b283
fix: restore localized sitemap paths with Bulgarian
angellllkr-eng Jun 10, 2026
53ac842
fix: restore Bulgarian metadata coverage
angellllkr-eng Jun 10, 2026
45f4778
Fix visitor language metadata and locale build fallbacks
Jun 10, 2026
104aaee
fix: sync Bulgarian locale on main
angellllkr-eng Jun 10, 2026
e70fdf8
fix: use shared locale contract in selector
angellllkr-eng Jun 10, 2026
01bfeb9
fix: sync translation provider locales
angellllkr-eng Jun 10, 2026
298c8bc
fix: publish localized sitemap paths
angellllkr-eng Jun 10, 2026
888083e
fix: add Bulgarian metadata signals
angellllkr-eng Jun 10, 2026
c1e29de
Selective (#27)
angellllkr-eng Jun 10, 2026
1d75708
fix: complete localized decision layer
angellllkr-eng Jun 10, 2026
bc5dc5d
fix: complete MRagent language fallback map
angellllkr-eng Jun 10, 2026
3d974e6
fix: sync geo locale API with shared locales
angellllkr-eng Jun 10, 2026
6127590
fix: enable Bulgarian translation target
angellllkr-eng Jun 10, 2026
416478e
Exclude archived snapshots from type checking
angellllkr-eng Jun 10, 2026
fb3ef46
fix: exclude archived source from Vercel deploy
angellllkr-eng Jun 10, 2026
6c033d0
fix: stabilize visitor-matched locale deploy
Jun 10, 2026
77f55c1
fix: restore Bulgarian locale contract
angellllkr-eng Jun 10, 2026
de47724
fix: add Bulgarian MRagent language support
angellllkr-eng Jun 10, 2026
fa3592d
fix: derive language selector from shared locales
angellllkr-eng Jun 10, 2026
2b474db
fix: publish Bulgarian routes in sitemap
angellllkr-eng Jun 10, 2026
8da0063
fix: add Bulgarian metadata signals
angellllkr-eng Jun 10, 2026
9406c3e
fix: add Bulgaria geo locale profile
angellllkr-eng Jun 10, 2026
a643b5c
Add Bulgarian decision-layer copy
angellllkr-eng Jun 10, 2026
5b2d698
fix: verify bulgarian launch surface
Jun 10, 2026
f751aaf
fix: accept version sha in live verifier
Jun 10, 2026
70d8b62
Create lock.md
angellllkr-eng Jun 11, 2026
ee1e3e0
Create lock.phy
angellllkr-eng Jun 11, 2026
f706afc
feat: add Google tag analytics
Jun 11, 2026
8384c16
Create slack_ppal_add
angellllkr-eng Jun 13, 2026
4370415
Merge branch 'codex/bulgarian-full-site-i18n' into main
angellllkr-eng Jun 16, 2026
f7e3e19
Update LocaleAssist.tsx
angellllkr-eng Jun 16, 2026
a3f634f
init
vercel[bot] Jun 16, 2026
fd80a52
Update project files (#33)
vercel[bot] Jun 16, 2026
76f25df
Update activation-pack-report.yml
angellllkr-eng Jun 17, 2026
b43a8b3
Update route.ts
angellllkr-eng Jun 17, 2026
a93dc14
Update activation-pack-report.yml
angellllkr-eng Jun 17, 2026
f0f9553
Update schema.json
angellllkr-eng Jun 17, 2026
f6908a4
Update .env
angellllkr-eng Jun 17, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
11 changes: 11 additions & 0 deletions .dockerignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
.next/
node_modules/
npm-debug.log
.env
.env.local
.env.development.local
.env.test.local
.env.production.local
.git/
.gitignore
README.md
13 changes: 0 additions & 13 deletions .editorconfig

This file was deleted.

35 changes: 27 additions & 8 deletions .env
Original file line number Diff line number Diff line change
@@ -1,8 +1,27 @@
# API keys (replace with your real keys after creating a Stripe account)
# This is your test secret API key.
STRIPE_SECRET_KEY=
# This is your test publishable API key.
VITE_STRIPE_PUBLISHABLE_KEY=

# Domain to return to after checkout
DOMAIN=http://localhost:3000
NEXT_PUBLIC_SITE_URL=https://www.mind-reply.com
NEXT_PUBLIC_WEBSITE_COMPLETION_PACKAGE_PAYMENT_URL=

# MRagent provider (optional)
OPENAI_API_KEY=
MRAGENT_MODEL=gpt-5
BLOB_READ_WRITE_TOKEN=

# Website Completion Package close route
MINDREPLY_PACKAGE_REQUEST_TO=
MINDREPLY_PACKAGE_REQUEST_FROM=
MINDREPLY_PACKAGE_REQUEST_DRY_RUN=false

# Owner reports
MINDREPLY_REPORT_EMAIL=angellllkr@gmail.com/angelkrustev@aol.com
MINDREPLY_REPORT_FROM=
RESEND_API_KEY=
MINDREPLY_SLACK_WEBHOOK_URL=https://mind-reply.slack.com/
SLACK_WEBHOOK_URL=- https://mind-reply.slack.com/ , angellllkr@gmail.com

# Gmail / IMAP intake
MINDREPLY_IMAP_HOST=imap.gmail.com
MINDREPLY_IMAP_USER=
MINDREPLY_IMAP_PASSWORD=

# Calendar action outbox
MINDREPLY_CALENDAR_OUTBOX=calendar-outbox.jsonl
12 changes: 12 additions & 0 deletions .gitattributes
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
* text=auto

*.sh text eol=lf
*.yml text eol=lf
*.yaml text eol=lf
*.ts text eol=lf
*.tsx text eol=lf
*.js text eol=lf
*.jsx text eol=lf
*.json text eol=lf
*.md text eol=lf
Dockerfile text eol=lf
55 changes: 55 additions & 0 deletions .github/workflows/activation-pack-report.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
name: Activation Pack Report

on:
workflow_dispatch:
inputs:
channels:
description: "Comma-separated channels: console,slack,email"
required:
default: "console"
dry_run:
description: "Keep true until Slack/email secrets are verified"
required:
default: "true"
require_delivery:
description: "Fail unless Slack or email actually sends"
required:
default: "false"
schedule:
- cron: "*/30 * * * *"

permissions:
contents: read
statuses: read

jobs:
activation-pack-report:
runs-on: ubuntu-latest
timeout-minutes: 10
env:
NEXT_PUBLIC_SITE_URL: ${{ vars.NEXT_PUBLIC_SITE_URL || 'https://www.mind-reply.com' }}
MINDREPLY_REPORT_ENABLED: ${{ vars.MINDREPLY_REPORT_ENABLED || 'false' }}
MINDREPLY_REPORT_DRY_RUN: ${{ github.event.inputs.dry_run || vars.MINDREPLY_REPORT_DRY_RUN || 'true' }}
MINDREPLY_REPORT_REQUIRE_DELIVERY: ${{ github.event.inputs.require_delivery || vars.MINDREPLY_REPORT_REQUIRE_DELIVERY || 'false' }}
MINDREPLY_REPORT_CHANNELS: ${{ github.event.inputs.channels || vars.MINDREPLY_REPORT_CHANNELS || 'console' }}
MINDREPLY_REPORT_PERSONAL_ONLY: "true"
MINDREPLY_REPORT_EMAILS: ${{ secrets.MINDREPLY_REPORT_EMAILS }}
MINDREPLY_REPORT_EMAIL: ${{ secrets.MINDREPLY_REPORT_EMAIL }}
MINDREPLY_REPORT_EMAIL_ALLOWLIST: ${{ secrets.MINDREPLY_REPORT_EMAIL_ALLOWLIST }}
MINDREPLY_REPORT_FROM: ${{ secrets.MINDREPLY_REPORT_FROM }}
RESEND_API_KEY: ${{ secrets.RESEND_API_KEY }}
MINDREPLY_SLACK_WEBHOOK_URL: ${{ secrets.MINDREPLY_SLACK_WEBHOOK_URL }}
steps:
- name: Checkout
uses: actions/checkout@v4

- name: Setup Node
uses: actions/setup-node@v4
with:
node-version: "20"

- name: Install
run: npm install

- name: Generate activation pack report
run: npm run report:activation-pack
52 changes: 52 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
name: Decision Layer CI

on:
push:
branches: [main]
pull_request:
branches: [main]

jobs:
verify:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4

- name: Setup Node
uses: actions/setup-node@v4
with:
node-version: "20"

- name: Install
run: npm install --no-audit --fund=false --progress=false

- name: Verify Vercel build guard
run: npm run vercel:ignore:verify

- name: Verify decision layer contract
run: npx tsx scripts/verify-decision-layer.ts

- name: Verify production version contract
run: npx tsx scripts/verify-production-version-contract.ts

- name: Verify revenue i18n SEO surface
run: npx tsx scripts/verify-revenue-i18n-seo.ts

- name: Verify package delivery proof
run: npx tsx scripts/verify-package-delivery-proof.ts

- name: Verify invoice-first close path
run: npx tsx scripts/verify-invoice-first-close.ts

- name: Verify MRagent MCP
run: npm run mcp:verify

- name: Typecheck
run: npm run typecheck

- name: Build
run: npm run build

- name: Python backend tests
run: python -m unittest discover src
Comment on lines +11 to +52
83 changes: 83 additions & 0 deletions .github/workflows/deploy.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,83 @@
name: MindReply Production Deploy

on:
workflow_dispatch:

permissions:
contents: read

env:
VERCEL_ORG_ID: ${{ vars.VERCEL_TEAM_ID || vars.VERCEL_ORG_ID || 'team_0plIJmQLgZC1wVv9zI2eVf3B' }}
VERCEL_PROJECT_ID: ${{ vars.VERCEL_PROJECT_ID || 'prj_EuO1lFvbwoFSdDxBlezNyXG8eVV3' }}
VERCEL_TOKEN: ${{ secrets.VERCEL_TOKEN || secrets.VERCEL_ACCESS_TOKEN || secrets.VERCEL_API_TOKEN }}
NEXT_PUBLIC_SITE_URL: ${{ vars.NEXT_PUBLIC_SITE_URL || 'https://www.mind-reply.com' }}

jobs:
deploy:
name: Build and deploy production
runs-on: ubuntu-latest
timeout-minutes: 20
concurrency:
group: mindreply-production-deploy-legacy
cancel-in-progress: true
steps:
- name: Checkout
uses: actions/checkout@v4

- name: Setup Node
uses: actions/setup-node@v4
with:
node-version: 22

- name: Install dependencies
run: npm install --no-audit --no-fund

- name: Typecheck
run: npm run typecheck

- name: Build locally
run: npm run build

- name: Guard Vercel token
shell: bash
run: |
if [ -z "$VERCEL_TOKEN" ]; then
echo "Vercel token missing. Add VERCEL_TOKEN, VERCEL_ACCESS_TOKEN, or VERCEL_API_TOKEN in GitHub Actions secrets."
exit 1
fi

- name: Install Vercel CLI
run: npm install --global vercel@latest --no-audit --no-fund

- name: Pull Vercel production environment
run: vercel pull --yes --environment=production --token="$VERCEL_TOKEN"

- name: Build Vercel production artifact
run: vercel build --prod --token="$VERCEL_TOKEN"

- name: Deploy to Vercel production
id: deploy
shell: bash
run: |
set -euo pipefail
DEPLOYMENT_URL="$(vercel deploy --prebuilt --prod --token="$VERCEL_TOKEN")"
echo "deployment_url=$DEPLOYMENT_URL" >> "$GITHUB_OUTPUT"
echo "Deployment URL: $DEPLOYMENT_URL"

- name: Smoke check deployment URL
shell: bash
run: |
set -euo pipefail
DEPLOYMENT_URL="${{ steps.deploy.outputs.deployment_url }}"
test -n "$DEPLOYMENT_URL"
curl --fail --silent --show-error "$DEPLOYMENT_URL/" >/dev/null
curl --fail --silent --show-error "$DEPLOYMENT_URL/agent" >/dev/null
curl --fail --silent --show-error "$DEPLOYMENT_URL/api/health" >/dev/null

- name: Smoke check production domain
shell: bash
run: |
set -euo pipefail
curl --fail --silent --show-error "$NEXT_PUBLIC_SITE_URL/" >/dev/null
curl --fail --silent --show-error "$NEXT_PUBLIC_SITE_URL/agent" >/dev/null
curl --fail --silent --show-error "$NEXT_PUBLIC_SITE_URL/api/health" >/dev/null
84 changes: 84 additions & 0 deletions .github/workflows/deployment-readiness.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,84 @@
name: MindReply Deployment Readiness Check

on:
workflow_dispatch:

permissions:
contents: read

concurrency:
group: mindreply-deployment-readiness
cancel-in-progress: false

jobs:
readiness:
name: Verify production deploy readiness without deploying
runs-on: ubuntu-latest
timeout-minutes: 25
env:
VERCEL_TOKEN: ${{ secrets.VERCEL_TOKEN }}
VERCEL_ORG_ID: ${{ secrets.VERCEL_ORG_ID || vars.VERCEL_ORG_ID }}
VERCEL_PROJECT_ID: ${{ secrets.VERCEL_PROJECT_ID || vars.VERCEL_PROJECT_ID }}
NEXT_PUBLIC_SITE_URL: https://www.mind-reply.com
MINDREPLY_LIVE_VERIFY_URL: https://www.mind-reply.com
steps:
- name: Checkout
uses: actions/checkout@v4

- name: Setup Node
uses: actions/setup-node@v4
with:
node-version: "22"

- name: Install dependencies
run: npm install --no-audit --no-fund

- name: Verify report state
run: npm run report:check

- name: Generate owner state report
run: npm run launch:report

- name: Verify revenue blueprint
run: npm run audit:blueprint

- name: Verify language and SEO positioning
run: npm run seo:i18n:verify

- name: Verify app contract
run: npm run verify:all

- name: Verify Vercel target secrets
run: |
test -n "$VERCEL_TOKEN"
test "$VERCEL_ORG_ID" = "team_0plIJmQLgZC1wVv9zI2eVf3B"
test "$VERCEL_PROJECT_ID" = "prj_EuO1lFvbwoFSdDxBlezNyXG8eVV3"

- name: Install Vercel CLI
run: npm install --global vercel@latest

- name: Pull Vercel production environment
run: vercel pull --yes --environment=production --token "$VERCEL_TOKEN"

- name: Build Vercel artifact without deploying
run: vercel build --prod --token "$VERCEL_TOKEN"

- name: Check current live health
run: |
curl --fail --show-error --silent https://www.mind-reply.com/ > /tmp/mindreply-home.html
curl --fail --show-error --silent https://www.mind-reply.com/api/health > /tmp/mindreply-health.json
if curl --fail --show-error --silent https://www.mind-reply.com/api/version > /tmp/mindreply-version.json; then
echo "Live /api/version is already deployed."
else
echo "Live /api/version is not deployed yet; manual production deploy is still required."
fi

- name: Upload readiness artifacts
if: always()
uses: actions/upload-artifact@v4
with:
name: mindreply-deployment-readiness
path: |
reports/outbox/**
.vercel/output/**
if-no-files-found: ignore
Loading