- utils.py: get_llmage_llm - when catelogid provided, use it instead of forcing isdefaultcatelog=1
- list_paging_catelog_llms.dspy: handle missing llmid in SQL, add llmcatelogid to returned rows
- llm_dialog.ui: use Jinja2 namespace for variable scoping in for loop
- utils.py: get_llmcatelogid -> get_llm_catelogs (returns ALL catelogs with name+isdefault)
- llmclient.py: inference() passes params_kw.llmcatelogid to get_llm()
- llm_dialog.ui: renders catelog tab buttons when model has multiple catelogs,
defaults to isdefaultcatelog, passes llmcatelogid to both LlmIO models and list_models_url
- init.py: export get_llm_catelogs
- Create llm_catalog_rel model for one-to-many relationship
- Remove llmcatelogid from llm model
- Update SQL queries in utils.py and dspy files to use join
- Add maintenance UI (llm_catalog_rel_manage.ui) and API endpoints
- Filter options by user's orgid