web-mojo 2.2.77 → 2.2.79

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (98) hide show
  1. package/CHANGELOG.md +21 -0
  2. package/dist/admin.cjs.js +1 -1
  3. package/dist/admin.cjs.js.map +1 -1
  4. package/dist/admin.css +880 -0
  5. package/dist/admin.es.js +1 -1
  6. package/dist/admin.es.js.map +1 -1
  7. package/dist/auth.cjs.js +1 -1
  8. package/dist/auth.es.js +1 -1
  9. package/dist/charts.cjs.js +1 -1
  10. package/dist/charts.es.js +1 -1
  11. package/dist/chunks/ChatView-CJAGPu_V.js +2 -0
  12. package/dist/chunks/{ChatView-DqOcQ7X3.js.map → ChatView-CJAGPu_V.js.map} +1 -1
  13. package/dist/chunks/ChatView-DeYslqq6.js +2 -0
  14. package/dist/chunks/{ChatView-CAiYnmUh.js.map → ChatView-DeYslqq6.js.map} +1 -1
  15. package/dist/chunks/Dialog-Blz5pT9W.js +3 -0
  16. package/dist/chunks/Dialog-Blz5pT9W.js.map +1 -0
  17. package/dist/chunks/Dialog-_LaV3jy1.js +3 -0
  18. package/dist/chunks/Dialog-_LaV3jy1.js.map +1 -0
  19. package/dist/chunks/FormView-8YcQbicn.js +3 -0
  20. package/dist/chunks/FormView-8YcQbicn.js.map +1 -0
  21. package/dist/chunks/FormView-BJO7sGAG.js +3 -0
  22. package/dist/chunks/FormView-BJO7sGAG.js.map +1 -0
  23. package/dist/chunks/{MetricsMiniChartWidget-CAw34pnw.js → MetricsMiniChartWidget-BuoPd6Ri.js} +2 -2
  24. package/dist/chunks/{MetricsMiniChartWidget-CAw34pnw.js.map → MetricsMiniChartWidget-BuoPd6Ri.js.map} +1 -1
  25. package/dist/chunks/{MetricsMiniChartWidget-DzIavZX8.js → MetricsMiniChartWidget-C0MaUMxB.js} +2 -2
  26. package/dist/chunks/{MetricsMiniChartWidget-DzIavZX8.js.map → MetricsMiniChartWidget-C0MaUMxB.js.map} +1 -1
  27. package/dist/chunks/MiniPieChart-BP1bYCGv.js +2 -0
  28. package/dist/chunks/MiniPieChart-BP1bYCGv.js.map +1 -0
  29. package/dist/chunks/MiniPieChart-yRGFM7Yn.js +2 -0
  30. package/dist/chunks/MiniPieChart-yRGFM7Yn.js.map +1 -0
  31. package/dist/chunks/MiniSeriesChart-CNNEnNnK.js +2 -0
  32. package/dist/chunks/MiniSeriesChart-CNNEnNnK.js.map +1 -0
  33. package/dist/chunks/MiniSeriesChart-DTlUluHV.js +2 -0
  34. package/dist/chunks/MiniSeriesChart-DTlUluHV.js.map +1 -0
  35. package/dist/chunks/Modal-BHRX_nwz.js +2 -0
  36. package/dist/chunks/{Modal-DrNQaqOa.js.map → Modal-BHRX_nwz.js.map} +1 -1
  37. package/dist/chunks/{Modal--Ob_H2iO.js → Modal-f18CuodE.js} +2 -2
  38. package/dist/chunks/{Modal--Ob_H2iO.js.map → Modal-f18CuodE.js.map} +1 -1
  39. package/dist/chunks/{PDFViewer-DIBj2O8e.js → PDFViewer-BYOuiYWu.js} +2 -2
  40. package/dist/chunks/{PDFViewer-DIBj2O8e.js.map → PDFViewer-BYOuiYWu.js.map} +1 -1
  41. package/dist/chunks/{PDFViewer-DA6kz3_E.js → PDFViewer-CQGLxxe6.js} +2 -2
  42. package/dist/chunks/{PDFViewer-DA6kz3_E.js.map → PDFViewer-CQGLxxe6.js.map} +1 -1
  43. package/dist/chunks/{Passkeys-B2cgwp7Z.js → Passkeys-BKj8hXj5.js} +2 -2
  44. package/dist/chunks/{Passkeys-B2cgwp7Z.js.map → Passkeys-BKj8hXj5.js.map} +1 -1
  45. package/dist/chunks/Passkeys-GXFL6xrU.js +2 -0
  46. package/dist/chunks/{Passkeys-BjdXmjlu.js.map → Passkeys-GXFL6xrU.js.map} +1 -1
  47. package/dist/chunks/{TokenManager-3sHXNyGO.js → TokenManager-DI79oM25.js} +2 -2
  48. package/dist/chunks/{TokenManager-3sHXNyGO.js.map → TokenManager-DI79oM25.js.map} +1 -1
  49. package/dist/chunks/{TokenManager-B98Y3D44.js → TokenManager-fjSO1cdB.js} +2 -2
  50. package/dist/chunks/{TokenManager-B98Y3D44.js.map → TokenManager-fjSO1cdB.js.map} +1 -1
  51. package/dist/chunks/{UserProfileView-CObNuOj-.js → UserProfileView-CkDqEHlF.js} +2 -2
  52. package/dist/chunks/{UserProfileView-CObNuOj-.js.map → UserProfileView-CkDqEHlF.js.map} +1 -1
  53. package/dist/chunks/{UserProfileView-D7hSFgr-.js → UserProfileView-vBbWK7yp.js} +2 -2
  54. package/dist/chunks/{UserProfileView-D7hSFgr-.js.map → UserProfileView-vBbWK7yp.js.map} +1 -1
  55. package/dist/chunks/WebApp-Bu01LHe3.js +2 -0
  56. package/dist/chunks/{WebApp-D6rnlV2T.js.map → WebApp-Bu01LHe3.js.map} +1 -1
  57. package/dist/chunks/WebApp-Do6JjXuj.js +2 -0
  58. package/dist/chunks/{WebApp-BCWzyUqi.js.map → WebApp-Do6JjXuj.js.map} +1 -1
  59. package/dist/chunks/{index-DnD4XyK9.js → index-D6-NC5vF.js} +2 -2
  60. package/dist/chunks/{index-DnD4XyK9.js.map → index-D6-NC5vF.js.map} +1 -1
  61. package/dist/chunks/{index-DKAZI8Tr.js → index-DrRY_Ggo.js} +2 -2
  62. package/dist/chunks/{index-DKAZI8Tr.js.map → index-DrRY_Ggo.js.map} +1 -1
  63. package/dist/chunks/{version-Di_mTsi1.js → version-C0bPZQNt.js} +2 -2
  64. package/dist/chunks/{version-Di_mTsi1.js.map → version-C0bPZQNt.js.map} +1 -1
  65. package/dist/chunks/{version-DcHmzGeU.js → version-yeiLhs1d.js} +2 -2
  66. package/dist/chunks/{version-DcHmzGeU.js.map → version-yeiLhs1d.js.map} +1 -1
  67. package/dist/css/web-mojo.css +1 -1
  68. package/dist/docit.cjs.js +1 -1
  69. package/dist/docit.es.js +1 -1
  70. package/dist/index.cjs.js +1 -1
  71. package/dist/index.cjs.js.map +1 -1
  72. package/dist/index.es.js +1 -1
  73. package/dist/index.es.js.map +1 -1
  74. package/dist/lightbox.cjs.js +1 -1
  75. package/dist/lightbox.es.js +1 -1
  76. package/dist/map.cjs.js +1 -1
  77. package/dist/map.es.js +1 -1
  78. package/dist/user-profile.cjs.js +1 -1
  79. package/dist/user-profile.es.js +1 -1
  80. package/dist/web-mojo.lite.iife.js +120 -1
  81. package/dist/web-mojo.lite.iife.js.map +1 -1
  82. package/dist/web-mojo.lite.iife.min.js +5 -5
  83. package/dist/web-mojo.lite.iife.min.js.map +1 -1
  84. package/package.json +1 -1
  85. package/dist/chunks/ChatView-CAiYnmUh.js +0 -2
  86. package/dist/chunks/ChatView-DqOcQ7X3.js +0 -2
  87. package/dist/chunks/Dialog-BzvvJnK1.js +0 -3
  88. package/dist/chunks/Dialog-BzvvJnK1.js.map +0 -1
  89. package/dist/chunks/Dialog-Fu9AEl7W.js +0 -3
  90. package/dist/chunks/Dialog-Fu9AEl7W.js.map +0 -1
  91. package/dist/chunks/FormView-BdYPU1Px.js +0 -3
  92. package/dist/chunks/FormView-BdYPU1Px.js.map +0 -1
  93. package/dist/chunks/FormView-DP-iCm9r.js +0 -3
  94. package/dist/chunks/FormView-DP-iCm9r.js.map +0 -1
  95. package/dist/chunks/Modal-DrNQaqOa.js +0 -2
  96. package/dist/chunks/Passkeys-BjdXmjlu.js +0 -2
  97. package/dist/chunks/WebApp-BCWzyUqi.js +0 -2
  98. package/dist/chunks/WebApp-D6rnlV2T.js +0 -2
package/CHANGELOG.md CHANGED
@@ -3,6 +3,27 @@
3
3
  ## Unreleased
4
4
 
5
5
  ### Added
6
+ - **PortalWebApp** — New opinionated base class extending `PortalApp` with auth-gated lifecycle, automatic WebSocket setup, and clean events. Auth is checked before the router starts; if it fails, a configurable countdown redirect is shown. WebSocket connects automatically after auth using `WebSocketClient.deriveURL()`. New events: `user:ready`, `user:logout`, `ws:ready`, `ws:lost`, `ws:reconnecting`. Config-driven: `auth: { loginUrl }` (default `/login`), `ws: true/false` (default `true`). Overridable `onAuthFailed(error)` hook. Exported from `src/index.js`.
7
+ - **Admin Assistant** — Fullscreen modal chat interface for LLM-powered admin queries. Triggered via `registerAssistant(app)` which adds a `bi-robot` icon to the topbar (requires `view_admin` permission). Two-panel layout: conversation list (left, REST-backed) + real-time chat area (right, WebSocket). Supports structured response blocks rendered inline: `table` blocks as `TableView`, `chart` blocks as `SeriesChart`/`PieChart`, and `stat` blocks as Bootstrap stat cards.
8
+ - **AssistantView** — New view exported from `web-mojo/admin`. Manages WebSocket subscriptions for `assistant_thinking`, `assistant_tool_call`, `assistant_response`, and `assistant_error` events. Unsubscribes on destroy to prevent leaks.
9
+ - **AssistantConversation & AssistantConversationList** — New models exported from `web-mojo/models`. Endpoint `/api/assistant/conversation`. Conversation history loaded via REST; messages sent via WebSocket.
10
+ - **IPSetTablePage & IPSetView** — New admin pages/views for managing kernel-level IP blocking sets (country blocks, AbuseIPDB feeds, datacenter ranges, custom CIDR lists). Route: `system/security/ipsets`. Registered automatically by `registerSystemPages()`.
11
+ - **IP Sets menu entry** — Added "IP Sets" (`bi-shield-shaded`) to the Security section of the admin sidebar, requiring `view_security` permission.
12
+ - **ChatView: `showThinking(text?)`** — Appends an animated bouncing-dots thinking indicator to the messages area. Subsequent calls update the text without adding a second indicator.
13
+ - **ChatView: `hideThinking()`** — Removes the thinking indicator.
14
+ - **ChatView: `setInputEnabled(enabled)`** — Enables or disables the chat textarea and send button.
15
+ - **ChatView: `messageViewClass` option** — Constructor option (default `ChatMessageView`) allowing consumers to supply a custom message view class.
16
+ - **ChatView: `showFileInput` option** — Constructor option (default `true`). When `false`, hides the file drop zone and disables the `FileDropMixin` in `ChatInputView`.
17
+ - **ChatInputView: `setEnabled(enabled)`** — Disables or re-enables the textarea and send button. Distinct from `setBusy()` (which shows a spinner).
18
+ - **ChatMessageView: `role` support** — Applies `message-assistant` or `message-user` CSS class based on `message.role`. Assistant messages display a `bi-robot` icon/avatar instead of user initials.
19
+ - **ChatMessageView: `blocks` container** — Renders a `data-container="blocks-{id}"` slot after message text for attaching block child views (used by `AssistantMessageView`).
20
+ - **ChatMessageView: `tool_calls` display** — If `message.tool_calls` is present, renders a collapsible Bootstrap collapse section showing tool names as badges.
21
+ - **FormBuilder: `showWhen` field option** — Conditionally shows/hides a field based on another field's value. Hidden fields are excluded from form submission data and their `required` attributes are suppressed during validation.
22
+
23
+ ### Fixed
24
+ - **GeoIPView block/unblock/whitelist actions** — Converted from ad hoc `rest.POST` calls to `model.save()` with action payloads; added optional chaining on `toast` calls to avoid errors in non-portal contexts.
25
+
26
+ ## [Previous]
6
27
  - **User Profile Extension** (`web-mojo/user-profile`) — Moved all user profile views from `src/core/views/user/` into a standalone extension at `src/extensions/user-profile/`. Available as `import { ... } from 'web-mojo/user-profile'` or via `@ext/user-profile/index.js` internally.
7
28
  - **ProfilePersonalSection** — Editable first/last name, display name, DOB (with verified/unverified badge), timezone, and address (stored in `user.metadata`)
8
29
  - **ProfileConnectedSection** — Lists OAuth provider connections (Google, GitHub, Microsoft, etc.) with unlink capability and lockout guard