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>
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>
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
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>
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>
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>
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>
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>
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
- 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>
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>
- 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>
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>
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>
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>
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>
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
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
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>
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>
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>
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>
- 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>
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>
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>
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>
- 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>