Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
39 commits
Select commit Hold shift + click to select a range
5367cc9
feat: enable Cloudflare Similarity-Based Caching for AI Search
mmcintosh Jan 27, 2026
afb28bb
chore: ignore temporary AI-generated docs
mmcintosh Jan 27, 2026
45a97c9
feat: Add fast autocomplete, test page, and headless integration guid…
mmcintosh Jan 28, 2026
d4ea5e2
chore: Add AI and Vectorize bindings for AI Search plugin
mmcintosh Jan 28, 2026
02f5306
fix: Use environment variable for Cloudflare account ID in CI
mmcintosh Jan 28, 2026
c8b42a8
fix: Remove hardcoded CI resources and auto-create Vectorize index
mmcintosh Jan 28, 2026
0fd2911
fix: Auto-create R2 bucket in CI for media upload tests
mmcintosh Jan 28, 2026
d9f6b75
fix: Remove duplicate [ai] binding definitions in environments
mmcintosh Jan 28, 2026
76a82e3
fix(e2e): Add proper waits for content to appear in slug generation t…
mmcintosh Jan 28, 2026
a9b9a24
fix: Enable R2 bucket binding for preview environment
mmcintosh Jan 28, 2026
5e339c5
fix: Remove duplicate R2 bucket binding
mmcintosh Jan 28, 2026
42ab701
test: Skip flaky slug generation edit tests in CI
mmcintosh Jan 28, 2026
ec2ce70
ci: replace hardcoded account_id in wrangler.toml for fork CI
mmcintosh Jan 30, 2026
b702309
ci: configure KV namespace and R2 bucket for fork CI
mmcintosh Jan 30, 2026
596a092
ci: fix KV namespace listing parse error in CI configure step
mmcintosh Jan 30, 2026
0718944
ci: fix wrangler account resolution for fork CI
mmcintosh Jan 30, 2026
af54687
feat: integrate form submissions into content management system
mmcintosh Jan 30, 2026
338207f
fix: exclude form-derived collections from cleanup to prevent deactiv…
mmcintosh Jan 30, 2026
627b939
test: add E2E tests for forms-as-content integration
mmcintosh Jan 30, 2026
1ca425b
fix: hide form-derived shadow collections from collections list
mmcintosh Jan 30, 2026
90f3b59
feat: add turnstile settings to form update API + realistic E2E tests
mmcintosh Jan 30, 2026
1e5002b
fix: form submissions default to published status, not draft
mmcintosh Jan 30, 2026
cc412b4
fix: add form content integration migration to sample app
mmcintosh Jan 30, 2026
14be296
fix: auto-create shadow collection if missing during form submission
mmcintosh Jan 30, 2026
4afd4e0
fix: ensure system user exists before content insert (D1 FK enforcement)
mmcintosh Jan 31, 2026
8c623ae
Merge remote-tracking branch 'origin/feature/forms-as-content' into d…
mmcintosh Feb 5, 2026
97dc52f
chore: rebuild core dist after merging forms-as-content
mmcintosh Feb 5, 2026
4cd857b
Merge remote-tracking branch 'origin/feature/ai-search-similarity-cac…
mmcintosh Feb 5, 2026
53f8260
chore: rebuild core dist after merging AI Search
mmcintosh Feb 5, 2026
8f96f03
fix: add Contact Form plugin to install registry
mmcintosh Feb 5, 2026
d83818b
feat: add FTS5 full-text search to AI Search plugin
mmcintosh Feb 7, 2026
3aee8c7
fix: point integration guide link to local route instead of GitHub
mmcintosh Feb 7, 2026
e135f23
fix: remove Lane's DB name from wrangler config, use generic preview …
mmcintosh Feb 7, 2026
97a185c
fix: extract readable text for keyword search snippets instead of raw…
mmcintosh Feb 7, 2026
3362e65
fix: FTS5 search/index all non-deleted content, not just published
mmcintosh Feb 7, 2026
ed35ffe
fix: auto-index missing content before FTS5 search
mmcintosh Feb 7, 2026
f8eac4d
chore: remove internal planning docs from repo
mmcintosh Feb 7, 2026
9440113
feat: add Vectorize auto-indexing, relevance filtering, and clickable…
mmcintosh Feb 7, 2026
fcbf68f
test: add comprehensive E2E tests for search v3
mmcintosh Feb 7, 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
14 changes: 10 additions & 4 deletions .claude/settings.json
Original file line number Diff line number Diff line change
@@ -1,8 +1,14 @@
{
"hooks": {
"userPromptSubmitHook": {
"command": "echo '\n\n---\n\n📋 TESTING REMINDER: After completing this task, create and run E2E tests to verify the changes work correctly. Tests should go in tests/e2e/ using Playwright.\n\n---\n'",
"description": "Remind Claude to create E2E tests for all changes"
}
"UserPromptSubmit": [
{
"hooks": [
{
"type": "command",
"command": "echo '\n\n---\n\n📋 TESTING REMINDER: After completing this task, create and run E2E tests to verify the changes work correctly. Tests should go in tests/e2e/ using Playwright.\n\n---\n'"
}
]
}
]
}
}
71 changes: 71 additions & 0 deletions .github/workflows/pr-tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -66,6 +66,27 @@ jobs:
run: npm run build:core

# Skip Cloudflare deployment and E2E tests for Dependabot PRs (no access to secrets)
- name: Configure wrangler for CI account
if: github.actor != 'dependabot[bot]'
run: |
cd my-sonicjs-app

# Remove hardcoded account_id — the CLOUDFLARE_API_TOKEN is already
# scoped to the correct account, so wrangler derives it from the token.
# A wrong account_id in wrangler.toml causes auth failures on forks.
sed -i '/^account_id/d' wrangler.toml

# Remove KV namespace config if present — the KV ID may reference a
# namespace on a different account. KV is optional for CI testing.
sed -i '/^\[\[kv_namespaces\]\]/,/^$/d' wrangler.toml
sed -i '/^binding = "CACHE_KV"/d' wrangler.toml
sed -i '/^id = "/d' wrangler.toml

echo "=== wrangler.toml configured for CI ==="
cat wrangler.toml
env:
CLOUDFLARE_API_TOKEN: ${{ secrets.CLOUDFLARE_API_TOKEN }}

- name: Create fresh D1 database for PR
if: github.actor != 'dependabot[bot]'
id: create-db
Expand Down Expand Up @@ -130,6 +151,56 @@ jobs:
CLOUDFLARE_API_TOKEN: ${{ secrets.CLOUDFLARE_API_TOKEN }}
CLOUDFLARE_ACCOUNT_ID: ${{ secrets.CLOUDFLARE_ACCOUNT_ID }}

- name: Create Vectorize index if needed
if: github.actor != 'dependabot[bot]'
run: |
cd my-sonicjs-app
INDEX_NAME="sonicjs-ai-search"

echo "Checking if Vectorize index exists: $INDEX_NAME"

# Check if index exists (wrangler vectorize list doesn't have --json yet)
set +e
EXISTING_INDEX=$(npx wrangler vectorize list 2>&1 | grep -w "$INDEX_NAME" || echo "")
set -e

if [ -n "$EXISTING_INDEX" ]; then
echo "✓ Vectorize index $INDEX_NAME already exists"
else
echo "Creating Vectorize index: $INDEX_NAME"
npx wrangler vectorize create "$INDEX_NAME" \
--dimensions=768 \
--metric=cosine
echo "✓ Vectorize index created"
fi
env:
CLOUDFLARE_API_TOKEN: ${{ secrets.CLOUDFLARE_API_TOKEN }}
CLOUDFLARE_ACCOUNT_ID: ${{ secrets.CLOUDFLARE_ACCOUNT_ID }}

- name: Create R2 bucket if needed
if: github.actor != 'dependabot[bot]'
run: |
cd my-sonicjs-app
BUCKET_NAME="sonicjs-preview-media"

echo "Checking if R2 bucket exists: $BUCKET_NAME"

# Check if bucket exists
set +e
EXISTING_BUCKET=$(npx wrangler r2 bucket list 2>&1 | grep -w "$BUCKET_NAME" || echo "")
set -e

if [ -n "$EXISTING_BUCKET" ]; then
echo "✓ R2 bucket $BUCKET_NAME already exists"
else
echo "Creating R2 bucket: $BUCKET_NAME"
npx wrangler r2 bucket create "$BUCKET_NAME"
echo "✓ R2 bucket created"
fi
env:
CLOUDFLARE_API_TOKEN: ${{ secrets.CLOUDFLARE_API_TOKEN }}
CLOUDFLARE_ACCOUNT_ID: ${{ secrets.CLOUDFLARE_ACCOUNT_ID }}

- name: Deploy to Cloudflare Workers Preview
if: github.actor != 'dependabot[bot]'
id: deploy
Expand Down
6 changes: 6 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -62,6 +62,12 @@ Thumbs.db
*.temp
.release-content.json

# Temporary AI-generated docs (per-session, not permanent documentation)
docs/PR_*.md
docs/READY_*.md
docs/SIMILARITY_*.md
docs/PROJECT_STATE_*.md

# Vitest
coverage/

Expand Down
277 changes: 0 additions & 277 deletions docs/FORMIO_COMPONENTS_CONFIG.md

This file was deleted.

Loading