- Custom color system (surface-0..4, accent, mint) replacing raw gray-xxx
- Inter + JetBrains Mono fonts via Google Fonts
- Refined sidebar: compact logo, geometric icons, subtle active states
- Fixed bg-gray-850 bug (invalid Tailwind class) in 9 components
- Polished login page with centered card + gradient logo
- Unified card/table/button/input styling across all components
- Subtle grain texture overlay for depth
- Smoother animations (fade-in, slide-up)
- RefCombobox infers object_type from param name when not explicitly set
- e.g. param 'agent' automatically shows only agent-type objects
- Also fixed engine type signature to preserve object_type in params
小橘 🍊(NEKO Team)
- Add ValidationError class for client-side input errors
- POST /events: ref format, type mismatch, nonexistent type → 400
- POST /objects: undefined type → 400
- POST /event-defs: schema validation → 400
- POST /projection-defs: value_schema, initial_value, source validation → 400
- All API handlers: catch ValidationError → 400 INVALID_INPUT
- Update 10 test cases to expect 400 + INVALID_INPUT