- Update plan handle ID format to match TimeSafari specification
- Default format: https://endorser.ch/entity/{26-char-ULID}
- ULID: 26 characters, Crockford base32 encoded
- Validates RFC 3986 URI format
- Add ULID generation functions
- generateULID() creates 26-character Crockford base32 strings
- generateValidPlanHandleId() creates full URI format IDs
- Auto-generates valid IDs for testing
- Update DEFAULT_TEST_PROJECT_IDS
- Now generates valid URI format IDs automatically
- Removes placeholder warnings (IDs are now valid format)
- Add URI validation to seed scripts
- Validates plan IDs match RFC 3986 URI format
- Error messages with format examples
- Blocks seeding with invalid formats
- Update test-user-zero.ts config
- Auto-generates valid URI format plan IDs
- Clear documentation of required format
- Note that real IDs from database should replace test IDs
- Update documentation
- Document default URI format specification
- Explain ULID structure and encoding
- Show examples of valid formats
This ensures all test project IDs match the actual TimeSafari plan
handle ID format, preventing validation errors during prefetch testing.
- Replace placeholder plan IDs with explicit warnings
- Change from test_project_X to PLACEHOLDER_ID_X
- Add validation to prevent seeding with placeholders
- Add helpful error messages with usage examples
- Add comprehensive guide for getting valid plan IDs
- Methods: Create projects, query database, check account settings
- Format examples: UUID, hash, custom formats
- Step-by-step instructions for each method
- Troubleshooting common issues
- Update test-user-zero.ts with placeholder warnings
- Clear instructions on how to get real plan IDs
- Links to documentation
- Notes about plan ID format variations
- Improve test server startup
- Warn when using placeholder IDs
- Allow plan IDs via command line argument
- Provide guidance on updating config
The previous test_project_X IDs were not valid for real TimeSafari
databases. Users must now provide actual plan handle IDs from their
TimeSafari setup, making testing more realistic and avoiding silent
failures with invalid IDs.