52 Commits

Author SHA1 Message Date
David Noël-Romas b645ffdd61 Add name and URL editing support to admin-edit script
Extends updateEntry() and admin-edit.ts to support changing
entry names and URLs via --name and --newUrl flags.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-03 10:36:58 -06:00
David Noël-Romas efec6baeb4 Add PromoBar component for Clowdbot promotion
Adds a gradient animated promotional bar at the top of the app
advertising Clowdbot cloud hosting for OpenClaw agents.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-03 10:11:16 -06:00
David N a4225ffdc4 Merge pull request #12 from napoleond/claude/migrate-more-likes-v3-1PuLE
Add migrateMoreLikesV8 to both index.ts and migrate.ts
2026-02-02 19:36:26 -06:00
Claude 2e07923f3e Add migrateMoreLikesV8 to both index.ts and migrate.ts
https://claude.ai/code/session_01WnTy91Et4uoi8SEvanC1cp
2026-02-03 00:59:38 +00:00
David N b62fa32997 Merge pull request #11 from napoleond/claude/migrate-more-likes-v3-1PuLE
Add migrateMoreLikesV7 to both index.ts and migrate.ts
2026-02-02 01:42:43 -06:00
Claude 5e08c3f33b Add migrateMoreLikesV7 to both index.ts and migrate.ts
https://claude.ai/code/session_01WnTy91Et4uoi8SEvanC1cp
2026-02-02 07:04:11 +00:00
David N 1558d94322 Merge pull request #9 from napoleond/claude/migrate-more-likes-v3-1PuLE
Add migrateMoreLikesV6 to both index.ts and migrate.ts
2026-02-01 19:18:23 -06:00
Claude 6d25f39724 Add migrateMoreLikesV6 to both index.ts and migrate.ts
https://claude.ai/code/session_01WnTy91Et4uoi8SEvanC1cp
2026-02-02 01:11:28 +00:00
David N d544125008 Merge pull request #8 from napoleond/claude/migrate-more-likes-v3-1PuLE
Add migrateMoreLikesV5 to both index.ts and migrate.ts
2026-02-01 11:27:46 -06:00
Claude 378e08dd52 Add migrateMoreLikesV5 to both index.ts and migrate.ts
https://claude.ai/code/session_01WnTy91Et4uoi8SEvanC1cp
2026-02-01 16:18:18 +00:00
David N 41ee074083 Merge pull request #7 from napoleond/claude/migrate-more-likes-v3-1PuLE
Add migrateMoreLikesV4 to both index.ts and migrate.ts
2026-01-31 23:24:02 -06:00
Claude 7b9ba48192 Add migrateMoreLikesV4 to both index.ts and migrate.ts
https://claude.ai/code/session_01WnTy91Et4uoi8SEvanC1cp
2026-02-01 05:22:18 +00:00
David N b1d08ce055 Merge pull request #6 from napoleond/claude/migrate-more-likes-v3-1PuLE 2026-01-31 15:40:23 -06:00
Claude ce68157c14 Add migrateMoreLikesV3 to both index.ts and migrate.ts
v2 failed because it was only added to migrate.ts but not index.ts.
Since the server runs from index.ts, migrations in migrate.ts never
execute unless that script is run separately. v3 is added to BOTH
files to ensure it runs at server startup.

https://claude.ai/code/session_01WnTy91Et4uoi8SEvanC1cp
2026-01-31 21:25:08 +00:00
David N 18a6a4be94 Merge pull request #5 from napoleond/claude/add-likes-migration-l2DDv 2026-01-31 14:25:35 -06:00
Claude 9260a76214 Add migration to boost likes (12-343 per entry)
https://claude.ai/code/session_012ycLHgUjQSsmR54d6DFZiY
2026-01-31 20:21:16 +00:00
David N 845e431fd8 Merge pull request #4 from napoleond/claude/add-likes-migration-GFhuo 2026-01-31 10:52:04 -06:00
Claude 6d459334a0 Add migration to boost likes (12-343 per entry)
https://claude.ai/code/session_016v783aDWuFsKD17yXRAeYZ
2026-01-31 16:48:18 +00:00
David Noël-Romas 74b110f785 Run random likes migration at server startup
The pre-deploy container's filesystem changes don't persist to the
running service's persistent disk. Move the migration to run at
server startup so it operates on the same database the service uses.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-31 10:18:04 -06:00
David Noël-Romas ce0a5ac49e Add debug logging for DB path and reset migration
Add logging to show which database path is being used. Also bump
migration version to v2 to force re-run on all current entries.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-31 10:13:16 -06:00
David Noël-Romas 001ff65faa Use persistent disk for database on Render
The pre-deploy command runs in a different container than the service,
so the database must be on the persistent disk (/var/data) to persist
between deploys and between pre-deploy and runtime.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-31 10:07:00 -06:00
David Noël-Romas 1739b57fc7 Run random likes migration in seed script
The pre-deploy command runs npm run seed, not npm run migrate.
Move the random likes migration logic into seed.ts so it runs
during deployment.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-31 10:02:35 -06:00
David Noël-Romas b15b264f80 Add React types to root dependencies to fix build
The @atxp/client dependency transitively brings in React via expo,
causing React to be resolved from the root node_modules. Without
@types/react at the root level, the frontend TypeScript build fails
with TS7026 "JSX element implicitly has type 'any'" errors.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-31 09:07:07 -06:00
David N 79fdc46ae3 Merge pull request #3 from napoleond/claude/add-random-likes-sDX0V 2026-01-31 08:44:24 -06:00
Claude f564cf131f Add migration system with random likes seeding
Adds a migrations table to track one-time data migrations that run at
deploy time. Includes initial migration to seed entries with random
likes (12-97 per entry). Migrations are idempotent - they only run once.

https://claude.ai/code/session_01D97fx4GUSvNiwh4d5Dyenz
2026-01-31 14:42:25 +00:00
David Noël-Romas 155ed68efd Fix thumbnail caching issues
- Don't cache 404 responses for missing thumbnails
- Add version query param (updated_at timestamp) to thumbnail URLs
  to bust CDN cache when thumbnails are updated

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-31 01:13:34 -06:00
David Noël-Romas 89547e535e Fix seed script to detect small/corrupted thumbnails
Consider thumbnails under 1KB as broken and update them.
Also add better logging to show thumbnail sizes.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-31 01:11:20 -06:00
David Noël-Romas b2307a28a6 Fix MoltOverflow thumbnail and add admin edit tools
- Add MoltOverflow to seed entries with thumbnail
- Fix seed logic to detect empty thumbnails (length 0)
- Add clawdirect_admin_add MCP tool for admin entry creation
- Add clawdirect_admin_edit MCP tool for admin entry editing
- Add admin CLI scripts (admin-add.ts, admin-edit.ts)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-31 01:02:05 -06:00
David Noël-Romas 1912f4bd36 Add Google Analytics tracking (G-QHL9BBNKBT)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-30 23:45:56 -06:00
David Noël-Romas fb657481ed Add MoltX to directory and implement admin delete functionality
- Add MoltX (moltx.io) as new seed entry with screenshot thumbnail
- Add clawdirect_delete MCP tool for entry removal
- Support admin deletion via ADMIN_ACCOUNTS env var
- Update skill documentation with delete workflow

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-30 22:53:03 -06:00
David Noël-Romas c3658bb176 Add RFC 9728 compliant protected resource metadata route
New atxp-call clients expect the protected resource metadata at
/{resource}/.well-known/oauth-protected-resource (e.g.,
/mcp/.well-known/oauth-protected-resource) rather than the legacy
pattern /.well-known/oauth-protected-resource/{resource}.

This adds an explicit route to support both patterns.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-30 21:36:30 -06:00
David Noël-Romas 9cd79351c8 Update ATXP packages to 0.10.5
Newer atxp-call client expects protected resource metadata at
/mcp/.well-known/oauth-protected-resource pattern. Updated packages
should support this.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-30 21:33:36 -06:00
David Noël-Romas 7726988241 Add mountPath to root-level ATXP middleware
The protected resource metadata endpoint requires knowing the
mountPath of the resource. Without it, requests to
/.well-known/oauth-protected-resource/mcp were failing because
the root ATXP middleware didn't know /mcp was a valid resource.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-30 20:17:32 -06:00
David Noël-Romas 80fceda95c Fix ATXP .well-known route handling by restructuring middleware
The .well-known/atxp endpoint was returning 404 because the ATXP middleware
wasn't being invoked at root level. This change:

- Mounts atxpExpress on Express app directly (handles .well-known)
- Uses createHttpServer instead of startHttpServer for MCP router
- Mounts MCP router on Express app with its own ATXP middleware

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-30 20:12:24 -06:00
David N 53218175bb Merge pull request #1 from napoleond/claude/fix-mcp-404-error-Ryk7b 2026-01-30 19:39:25 -06:00
Claude 8e3cf2a762 Exclude .well-known paths from SPA fallback
OAuth discovery endpoints at /.well-known/* need to be handled by
the ATXP middleware, not served index.html by the SPA fallback.

https://claude.ai/code/session_018GsxU6uqKok88MnSx2vHhd
2026-01-31 01:38:50 +00:00
David N 2add046731 Merge pull request #2 from napoleond/claude/add-project-instructions-ExvwB 2026-01-30 19:33:23 -06:00
Claude a54ebcc5a0 Add ClawDirect submission instructions to clawdirect-dev skill
Added section explaining how to add completed projects to the ClawDirect
directory using the clawdirect_add and clawdirect_edit MCP tools, including
parameters and costs.

https://claude.ai/code/session_01PgnznuwGTnRp97kxU3GMVJ
2026-01-31 01:32:43 +00:00
Claude 615b09fc74 Fix MCP endpoint mounting at wrong path
The MCP server was mounted at '/' but all documentation and the
console output indicated it should be at '/mcp'. This caused 404
errors when clients tried to access the documented endpoint.

https://claude.ai/code/session_018GsxU6uqKok88MnSx2vHhd
2026-01-31 01:31:06 +00:00
David Noël-Romas 3e5ab24be0 Fix seed script to find assets in multiple locations
The assets directory can be in different relative paths depending on the
deployment environment. Now tries multiple possible locations to ensure
thumbnails are found on both local dev and Render deployment.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-30 17:21:03 -06:00
David Noël-Romas 1229ae8ade Fix seed to update existing entries with missing thumbnails
The seed script was skipping entries that already existed, even if they
were missing thumbnails. Now it will update existing entries with
thumbnails when the entry has no thumbnail but the seed data does.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-30 16:55:26 -06:00
David Noël-Romas 6226323bf8 Add instaclaw thumbnail to seed entries
Captured screenshot from live instaclaw.xyz site and converted to GIF
thumbnail for directory listing.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-30 16:51:33 -06:00
David Noël-Romas 2e5daf8fe2 Add query string cookie bootstrap for agent browsers
Agent browsers are often blocked from setting HTTP-only cookies directly.
This adds server-side middleware to accept the cookie value via query
string (?clawdirect_cookie=XYZ), set the cookie, and redirect to a clean URL.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-30 15:54:48 -06:00
David Noël-Romas 666b253b77 Add agent skills and update deployment config
- Add clawdirect skill for agents to browse/like/add entries
- Add clawdirect-dev skill for building agent-facing web apps
- Update render.yaml with preDeployCommand for database seeding
- Update builder-guide.html with skill installation commands

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-30 14:59:11 -06:00
David Noël-Romas c7d40e9945 Move seed to start command for persistent disk access
The persistent disk at /var/data is only mounted at runtime,
not during build. Move seed to run at startup so it can access
the disk.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-30 13:54:12 -06:00
David Noël-Romas 95a0e18264 Add seed step to build command
Run npm run seed after build to populate initial entries.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-30 13:48:48 -06:00
David Noël-Romas 4428c4138a Fix build order: install frontend deps before build
The frontend npm install was running after npm run build, but
build:frontend needs the deps to be installed first.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-30 13:41:14 -06:00
David Noël-Romas ffb3468472 Fix build: include devDependencies for frontend too
Frontend also needs @types/react and @types/react-dom from devDependencies.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-30 13:38:25 -06:00
David Noël-Romas f363ea6c2d Fix build: include devDependencies for TypeScript types
NODE_ENV=production causes npm to skip devDependencies, but we need
@types/better-sqlite3 and @types/cors for the TypeScript build.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-30 13:36:31 -06:00
David Noël-Romas 362045405f Add thumbnail assets for seed data
- Add moltbook-thumbnail.gif and shellmates-thumbnail.gif to assets/thumbnails/
- Update seed.ts to load thumbnails from file system instead of inline data
- Screenshots captured from live sites showing community pages and marriage registry

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-30 13:16:33 -06:00