ui.yaml file controls UI-specific customization options. Currently, it provides basic layout controls with plans for more customization options in the future.
File Location
Placeui.yaml in your config directory:
- Docker:
/data/config/ui.yaml(default) - Custom: Set via
SERVER_CONFIG_DIRenvironment variable
Configuration Options
maxListsInHeader
Controls the maximum number of lists displayed in the header navigation before overflow.Maximum number of lists to show in the header navigation. When you have more lists than this value, additional lists are accessible via a dropdown or secondary navigation.Default:
3Schema
The UI configuration uses a simple schema:Example Configuration
ui.yaml
Default Values
Ifui.yaml is missing or empty, these defaults are used:
Default ui.yaml
Validation and Error Handling
Validation Rules
Validation Rules
- maxListsInHeader must be a number
- Values should be positive integers (1 or greater)
- Invalid values fall back to the default (3)
Invalid Configuration Handling
When UI configuration is invalid:- Invalid fields are ignored
- Default values are used
- A warning is logged with validation details
- The application continues running normally
IDE Autocompletion
Enable IDE autocompletion by adding the schema reference:ui.yaml
Hot Reloading
Changes toui.yaml are automatically detected and applied:
- Edit
ui.yamlin your config directory - Save the file
- Shipped automatically reloads the configuration
- UI updates reflect changes immediately (if streaming is enabled)
Usage Examples
Many lists (show more in header)
Many lists (show more in header)
If you have many lists and want more visible in the header:
ui.yaml
Minimal header (single list)
Minimal header (single list)
For a cleaner header with minimal navigation:
ui.yaml
Default (3 lists)
Default (3 lists)
Balanced header navigation:
ui.yaml
Real-Time Updates
UI configuration changes are streamed to clients in real-time via SSE (Server-Sent Events):If
streamConfigChanges is disabled in general.yaml, you’ll need to manually refresh the page to see UI configuration changes.Future Customization Options
While currently limited to header navigation control, future versions of Shipped may include additional UI customization options such as:- Theme customization (colors, fonts)
- Layout options (grid vs. list views)
- Display density settings
- Custom branding elements
The UI configuration system is designed for easy expansion. Check the GitHub repository for updates and feature requests.
Client-Side Access
The UI configuration is available client-side via theuseUserConfig() composable:
- Type-safe with TypeScript
- Reactive with Vue 3’s reactivity system
- Validated with Effect Schema
- Automatically updated when config files change
Complete Example
Here’s a completeui.yaml with all available options:
ui.yaml
Troubleshooting
Changes not appearing
Changes not appearing
- Verify the file is saved in the correct location
- Check that
streamConfigChangesis enabled ingeneral.yaml - Look for validation errors in the application logs
- Try manually refreshing the page
Configuration not loading
Configuration not loading
- Verify YAML syntax is correct
- Check file permissions (must be readable by the container)
- Look for error messages in container logs
- Try removing the file to trigger default config creation
Want more customization options
Want more customization options
UI customization options are intentionally limited in the current version. To request new features:
- Check existing issues on GitHub
- Create a feature request with your use case
- Consider contributing to the project
Next Steps
General Settings
Configure application behavior
Configuration Overview
Learn about the config system