Skip to content
Merged

- #32

Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
133 commits
Select commit Hold shift + click to select a range
071aad8
archive branch cleanup materials on mind-reply storage
Jun 9, 2026
d2c82e3
Sharpen homepage revenue conversion plan
Jun 10, 2026
8718098
Merge remote-tracking branch 'origin/main' into codex/revenue-homepag…
Jun 10, 2026
0f98fb8
Fix revenue verifier gates after main merge
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
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
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
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
6 changes: 4 additions & 2 deletions .github/workflows/deployment-readiness.yml
Original file line number Diff line number Diff line change
Expand Up @@ -29,10 +29,9 @@ jobs:
uses: actions/setup-node@v4
with:
node-version: "22"
cache: npm

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

- name: Verify report state
run: npm run report:check
Expand All @@ -43,6 +42,9 @@ jobs:
- 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

Expand Down
33 changes: 18 additions & 15 deletions .github/workflows/hourly-owner-report.yml
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
name: MindReply Hourly Owner Report

on:
schedule:
- cron: "0 * * * *"
workflow_dispatch:
inputs:
channels:
Expand All @@ -11,8 +13,6 @@ on:
description: "Set true to write receipts without sending"
required: false
default: "false"
schedule:
- cron: "0 * * * *"

permissions:
contents: read
Expand All @@ -23,50 +23,53 @@ concurrency:

jobs:
owner-report:
name: Owner revenue report
name: Generate and deliver owner report
runs-on: ubuntu-latest
timeout-minutes: 15
env:
MINDREPLY_REPORT_ENABLED: ${{ vars.MINDREPLY_REPORT_ENABLED || 'true' }}
MINDREPLY_REPORT_DRY_RUN: ${{ github.event.inputs.dry_run || vars.MINDREPLY_REPORT_DRY_RUN || 'false' }}
MINDREPLY_REPORT_CHANNELS: ${{ github.event.inputs.channels || vars.MINDREPLY_REPORT_CHANNELS || 'email,slack' }}
MINDREPLY_REPORT_REQUIRE_LIVE_PROOF: ${{ vars.MINDREPLY_REPORT_REQUIRE_LIVE_PROOF || 'true' }}
MINDREPLY_REPORT_EMAIL: ${{ secrets.MINDREPLY_REPORT_EMAIL || vars.MINDREPLY_REPORT_EMAIL }}
MINDREPLY_REPORT_EMAIL: ${{ secrets.MINDREPLY_REPORT_EMAIL || secrets.OPS_REPORT_EMAIL_TO || vars.MINDREPLY_REPORT_EMAIL || vars.REPORT_TO_EMAIL }}
MINDREPLY_REPORT_EMAILS: ${{ secrets.MINDREPLY_REPORT_EMAILS || vars.MINDREPLY_REPORT_EMAILS }}
MINDREPLY_REPORT_FROM: ${{ secrets.MINDREPLY_REPORT_FROM || vars.MINDREPLY_REPORT_FROM }}
MINDREPLY_REPORT_FROM: ${{ secrets.MINDREPLY_REPORT_FROM || secrets.OPS_REPORT_EMAIL_FROM || vars.MINDREPLY_REPORT_FROM || vars.RESEND_FROM }}
MINDREPLY_PACKAGE_REQUEST_TO: ${{ secrets.MINDREPLY_PACKAGE_REQUEST_TO || vars.MINDREPLY_PACKAGE_REQUEST_TO }}
MINDREPLY_PACKAGE_REQUEST_FROM: ${{ secrets.MINDREPLY_PACKAGE_REQUEST_FROM || vars.MINDREPLY_PACKAGE_REQUEST_FROM }}
MINDREPLY_PACKAGE_REQUEST_DRY_RUN: ${{ vars.MINDREPLY_PACKAGE_REQUEST_DRY_RUN || 'false' }}
RESEND_API_KEY: ${{ secrets.RESEND_API_KEY }}
MINDREPLY_SLACK_WEBHOOK_URL: ${{ secrets.MINDREPLY_SLACK_WEBHOOK_URL }}
MINDREPLY_SLACK_WEBHOOK_URL: ${{ secrets.MINDREPLY_SLACK_WEBHOOK_URL || secrets.SLACK_WEBHOOK_URL }}
SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL }}
MINDREPLY_SLACK_DM_INVITE_AVAILABLE: ${{ vars.MINDREPLY_SLACK_DM_INVITE_AVAILABLE || 'false' }}
NEXT_PUBLIC_SITE_URL: ${{ vars.NEXT_PUBLIC_SITE_URL || 'https://www.mind-reply.com' }}
NEXT_PUBLIC_WEBSITE_COMPLETION_PACKAGE_PAYMENT_URL: ${{ vars.NEXT_PUBLIC_WEBSITE_COMPLETION_PACKAGE_PAYMENT_URL }}
VERCEL_PROJECT_ID: ${{ vars.VERCEL_PROJECT_ID || 'prj_EuO1lFvbwoFSdDxBlezNyXG8eVV3' }}
VERCEL_TEAM_ID: ${{ vars.VERCEL_TEAM_ID || 'team_0plIJmQLgZC1wVv9zI2eVf3B' }}
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 }}
steps:
- name: Checkout
uses: actions/checkout@v4

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

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

- name: Check report contract
- name: Check report configuration
run: npm run report:check

- name: Generate launch report
- name: Generate hourly owner 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: Capture live production revenue surface
continue-on-error: true
env:
Expand All @@ -75,10 +78,10 @@ jobs:
MINDREPLY_REQUIRE_LIVE_DEPLOYMENT_MATCH: "false"
run: npm run verify:live-revenue

- name: Send owner report
- name: Send hourly owner report
run: npm run report:send

- name: Upload owner report artifacts
- name: Upload report artifacts
if: always()
uses: actions/upload-artifact@v4
with:
Expand Down
Loading
Loading