MetaList 0.4.1__tar.gz → 0.6.0__tar.gz
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.
- {metalist-0.4.1 → metalist-0.6.0}/PKG-INFO +31 -8
- {metalist-0.4.1 → metalist-0.6.0}/README.md +30 -6
- {metalist-0.4.1 → metalist-0.6.0}/app/api/middleware/auth.py +5 -19
- metalist-0.6.0/app/api/note_requests.py +335 -0
- {metalist-0.4.1 → metalist-0.6.0}/app/api/routes/ai.py +50 -264
- {metalist-0.4.1 → metalist-0.6.0}/app/api/routes/auth.py +81 -53
- {metalist-0.4.1 → metalist-0.6.0}/app/api/routes/backups.py +3 -0
- {metalist-0.4.1 → metalist-0.6.0}/app/api/routes/files.py +2 -4
- {metalist-0.4.1 → metalist-0.6.0}/app/api/routes/notes.py +148 -74
- {metalist-0.4.1 → metalist-0.6.0}/app/api/routes/ontology.py +23 -4
- {metalist-0.4.1 → metalist-0.6.0}/app/api/routes/reminders.py +20 -10
- {metalist-0.4.1 → metalist-0.6.0}/app/api/routes/remote_images.py +4 -3
- {metalist-0.4.1 → metalist-0.6.0}/app/api/transactions.py +28 -5
- metalist-0.6.0/app/api/upload_limits.py +73 -0
- metalist-0.6.0/app/data_directory.py +22 -0
- {metalist-0.4.1 → metalist-0.6.0}/app/db/file_schema.py +0 -20
- {metalist-0.4.1 → metalist-0.6.0}/app/db/file_session.py +8 -6
- {metalist-0.4.1 → metalist-0.6.0}/app/db/files_sql.py +24 -0
- metalist-0.6.0/app/db/live_recovery.py +263 -0
- {metalist-0.4.1 → metalist-0.6.0}/app/db/migrations.py +2 -0
- {metalist-0.4.1 → metalist-0.6.0}/app/db/notes_sql.py +6 -0
- metalist-0.6.0/app/db/retire_sounds.py +67 -0
- {metalist-0.4.1 → metalist-0.6.0}/app/db/session.py +79 -26
- {metalist-0.4.1 → metalist-0.6.0}/app/db/version.py +1 -1
- {metalist-0.4.1 → metalist-0.6.0}/app/encryption_audit.py +7 -2
- metalist-0.6.0/app/exception_boundaries.py +154 -0
- metalist-0.6.0/app/https_proxy.py +135 -0
- {metalist-0.4.1 → metalist-0.6.0}/app/main.py +52 -82
- {metalist-0.4.1 → metalist-0.6.0}/app/models/database.py +35 -8
- {metalist-0.4.1 → metalist-0.6.0}/app/models/linked_list.py +1 -1
- {metalist-0.4.1 → metalist-0.6.0}/app/models/list_operations.py +6 -7
- {metalist-0.4.1 → metalist-0.6.0}/app/models/note_crud.py +2 -28
- {metalist-0.4.1 → metalist-0.6.0}/app/models/utils.py +73 -93
- {metalist-0.4.1 → metalist-0.6.0}/app/security/request_boundary.py +21 -15
- metalist-0.6.0/app/security/sensitive_cache.py +78 -0
- {metalist-0.4.1 → metalist-0.6.0}/app/server_runtime.py +17 -11
- {metalist-0.4.1 → metalist-0.6.0}/app/services/agent/cloud_privacy.py +8 -0
- {metalist-0.4.1 → metalist-0.6.0}/app/services/agent/evidence_serialization.py +31 -31
- {metalist-0.4.1 → metalist-0.6.0}/app/services/agent/investigation.py +8 -9
- {metalist-0.4.1 → metalist-0.6.0}/app/services/agent/skills/__init__.py +0 -1
- {metalist-0.4.1 → metalist-0.6.0}/app/services/ai_chat.py +26 -1
- metalist-0.6.0/app/services/ai_chat_stream.py +129 -0
- {metalist-0.4.1 → metalist-0.6.0}/app/services/auth_service.py +143 -361
- {metalist-0.4.1 → metalist-0.6.0}/app/services/backup_service.py +57 -44
- {metalist-0.4.1 → metalist-0.6.0}/app/services/bulk_operation.py +29 -18
- {metalist-0.4.1 → metalist-0.6.0}/app/services/client_state_service.py +32 -37
- {metalist-0.4.1 → metalist-0.6.0}/app/services/content_formatting.py +65 -468
- {metalist-0.4.1 → metalist-0.6.0}/app/services/embedded_references.py +14 -0
- {metalist-0.4.1 → metalist-0.6.0}/app/services/exception_capture.py +7 -1
- {metalist-0.4.1 → metalist-0.6.0}/app/services/file_storage.py +19 -7
- metalist-0.6.0/app/services/hierarchy.py +69 -0
- {metalist-0.4.1 → metalist-0.6.0}/app/services/html_export.py +21 -13
- {metalist-0.4.1 → metalist-0.6.0}/app/services/html_unformatting.py +17 -6
- metalist-0.6.0/app/services/input_errors.py +13 -0
- {metalist-0.4.1 → metalist-0.6.0}/app/services/latex_rendering.py +2 -2
- {metalist-0.4.1 → metalist-0.6.0}/app/services/link_titles.py +20 -10
- {metalist-0.4.1 → metalist-0.6.0}/app/services/maintenance_mode.py +18 -1
- {metalist-0.4.1 → metalist-0.6.0}/app/services/managed_ollama_runtime.py +5 -5
- {metalist-0.4.1 → metalist-0.6.0}/app/services/namespace_deletion_jobs.py +2 -1
- {metalist-0.4.1 → metalist-0.6.0}/app/services/namespace_deletion_worker.py +3 -3
- {metalist-0.4.1 → metalist-0.6.0}/app/services/namespace_rename_jobs.py +1 -0
- {metalist-0.4.1 → metalist-0.6.0}/app/services/namespace_rename_worker.py +1 -1
- {metalist-0.4.1 → metalist-0.6.0}/app/services/namespace_runtime_guard.py +1 -1
- {metalist-0.4.1 → metalist-0.6.0}/app/services/namespace_switcher.py +39 -18
- metalist-0.6.0/app/services/note_ordering.py +133 -0
- {metalist-0.4.1 → metalist-0.6.0}/app/services/note_store.py +227 -587
- metalist-0.6.0/app/services/password_note_fields.py +45 -0
- {metalist-0.4.1 → metalist-0.6.0}/app/services/reminders.py +63 -102
- {metalist-0.4.1 → metalist-0.6.0}/app/services/remote_image_proxy.py +7 -6
- metalist-0.6.0/app/services/request_recovery.py +96 -0
- metalist-0.6.0/app/services/resource_limits.py +46 -0
- {metalist-0.4.1 → metalist-0.6.0}/app/services/root_sorting.py +96 -41
- metalist-0.6.0/app/services/runtime_generation.py +39 -0
- {metalist-0.4.1 → metalist-0.6.0}/app/services/runtime_lock.py +10 -2
- {metalist-0.4.1 → metalist-0.6.0}/app/services/search_query.py +10 -9
- {metalist-0.4.1 → metalist-0.6.0}/app/services/self_update.py +1 -1
- {metalist-0.4.1 → metalist-0.6.0}/app/services/shell_session_service.py +118 -21
- {metalist-0.4.1 → metalist-0.6.0}/app/services/snapshot.py +194 -179
- {metalist-0.4.1 → metalist-0.6.0}/app/services/store.py +13 -21
- metalist-0.6.0/app/services/structured_note_renderers.py +478 -0
- metalist-0.6.0/app/services/sync.py +155 -0
- {metalist-0.4.1 → metalist-0.6.0}/app/services/tab_state.py +37 -36
- {metalist-0.4.1 → metalist-0.6.0}/app/services/tag_suggestions.py +147 -134
- {metalist-0.4.1 → metalist-0.6.0}/app/services/tag_term_matching.py +5 -5
- {metalist-0.4.1 → metalist-0.6.0}/app/services/tokens.py +26 -0
- {metalist-0.4.1 → metalist-0.6.0}/app/services/undo_state.py +72 -26
- metalist-0.6.0/app/services/view_cache.py +122 -0
- {metalist-0.4.1 → metalist-0.6.0}/app/services/windows_process_control.py +19 -0
- {metalist-0.4.1 → metalist-0.6.0}/app/startup_js_sanity.py +144 -5
- {metalist-0.4.1 → metalist-0.6.0}/app/startup_sanity.py +47 -1
- {metalist-0.4.1 → metalist-0.6.0}/app/startup_sanity_config.py +15 -0
- {metalist-0.4.1 → metalist-0.6.0}/app/static/config/command_palette_tags.json +0 -5
- metalist-0.6.0/app/static/css/floating-notes.css +44 -0
- {metalist-0.4.1 → metalist-0.6.0}/app/static/css/main.css +30 -122
- {metalist-0.4.1 → metalist-0.6.0}/app/static/js/modules/ai-chat/ai-agent-debug-view.js +8 -1
- {metalist-0.4.1 → metalist-0.6.0}/app/static/js/modules/ai-chat/ai-chat-api.js +3 -1
- {metalist-0.4.1 → metalist-0.6.0}/app/static/js/modules/ai-chat/ai-chat-panel-controller.js +36 -19
- {metalist-0.4.1 → metalist-0.6.0}/app/static/js/modules/ai-chat/bulk-proposal-ui.js +26 -18
- {metalist-0.4.1 → metalist-0.6.0}/app/static/js/modules/ai-chat/proposal-menu.js +3 -1
- {metalist-0.4.1 → metalist-0.6.0}/app/static/js/modules/api-client.js +29 -92
- {metalist-0.4.1 → metalist-0.6.0}/app/static/js/modules/api-failure-classification-service.js +9 -8
- metalist-0.6.0/app/static/js/modules/application-state.js +245 -0
- {metalist-0.4.1 → metalist-0.6.0}/app/static/js/modules/async-result.js +2 -1
- {metalist-0.4.1 → metalist-0.6.0}/app/static/js/modules/auth.js +21 -11
- {metalist-0.4.1 → metalist-0.6.0}/app/static/js/modules/client-state-api.js +3 -2
- {metalist-0.4.1 → metalist-0.6.0}/app/static/js/modules/command-palette/activation-auth-policy.js +2 -0
- {metalist-0.4.1 → metalist-0.6.0}/app/static/js/modules/command-palette/command-palette-controller.js +35 -98
- {metalist-0.4.1 → metalist-0.6.0}/app/static/js/modules/command-palette/endpoint-registry.js +2 -7
- {metalist-0.4.1 → metalist-0.6.0}/app/static/js/modules/command-palette/preferences-store.js +29 -15
- {metalist-0.4.1 → metalist-0.6.0}/app/static/js/modules/command-palette/tag-config-loader.js +37 -2
- {metalist-0.4.1 → metalist-0.6.0}/app/static/js/modules/command-palette/usage-store.js +10 -4
- {metalist-0.4.1 → metalist-0.6.0}/app/static/js/modules/config.js +7 -12
- {metalist-0.4.1 → metalist-0.6.0}/app/static/js/modules/connectivity-monitor.js +13 -6
- {metalist-0.4.1 → metalist-0.6.0}/app/static/js/modules/context-menu/context-menu-registry.js +53 -1
- {metalist-0.4.1 → metalist-0.6.0}/app/static/js/modules/context-menu/context-menu-service.js +123 -50
- metalist-0.6.0/app/static/js/modules/editor-selection.js +118 -0
- {metalist-0.4.1 → metalist-0.6.0}/app/static/js/modules/editor-toolbar.js +30 -26
- {metalist-0.4.1 → metalist-0.6.0}/app/static/js/modules/error-overlay.js +6 -3
- metalist-0.6.0/app/static/js/modules/expected-errors.js +23 -0
- metalist-0.6.0/app/static/js/modules/maintenance.js +16 -0
- {metalist-0.4.1 → metalist-0.6.0}/app/static/js/modules/modals/agent-prompt-editor-modal.js +5 -0
- {metalist-0.4.1 → metalist-0.6.0}/app/static/js/modules/modals/ai-agent-settings-modal.js +9 -0
- {metalist-0.4.1 → metalist-0.6.0}/app/static/js/modules/modals/alphabetize-root-notes-modal.js +8 -6
- {metalist-0.4.1 → metalist-0.6.0}/app/static/js/modules/modals/backup-restore-modal.js +9 -4
- {metalist-0.4.1 → metalist-0.6.0}/app/static/js/modules/modals/backup-result-modal.js +9 -0
- {metalist-0.4.1 → metalist-0.6.0}/app/static/js/modules/modals/backup-retention-modal.js +8 -6
- {metalist-0.4.1 → metalist-0.6.0}/app/static/js/modules/modals/backup-settings-modal.js +15 -11
- {metalist-0.4.1 → metalist-0.6.0}/app/static/js/modules/modals/base-modal.js +7 -23
- {metalist-0.4.1 → metalist-0.6.0}/app/static/js/modules/modals/confirmation-modal.js +8 -6
- {metalist-0.4.1 → metalist-0.6.0}/app/static/js/modules/modals/delete-namespace-modal.js +5 -8
- {metalist-0.4.1 → metalist-0.6.0}/app/static/js/modules/modals/help-modal.js +3 -0
- {metalist-0.4.1 → metalist-0.6.0}/app/static/js/modules/modals/namespace-modals.js +25 -13
- {metalist-0.4.1 → metalist-0.6.0}/app/static/js/modules/modals/note-layout-appearance-modal.js +3 -0
- {metalist-0.4.1 → metalist-0.6.0}/app/static/js/modules/modals/ontology-modal.js +95 -70
- {metalist-0.4.1 → metalist-0.6.0}/app/static/js/modules/modals/password-modal.js +18 -12
- {metalist-0.4.1 → metalist-0.6.0}/app/static/js/modules/modals/prioritize-modal.js +12 -7
- {metalist-0.4.1 → metalist-0.6.0}/app/static/js/modules/modals/random-password-modal.js +7 -1
- {metalist-0.4.1 → metalist-0.6.0}/app/static/js/modules/modals/reminder-modal.js +24 -260
- {metalist-0.4.1 → metalist-0.6.0}/app/static/js/modules/modals/reset-updated-at-modal.js +8 -6
- {metalist-0.4.1 → metalist-0.6.0}/app/static/js/modules/modals/search-suggestion-statistics-modal.js +3 -0
- {metalist-0.4.1 → metalist-0.6.0}/app/static/js/modules/modals/session-timeout-modal.js +8 -2
- {metalist-0.4.1 → metalist-0.6.0}/app/static/js/modules/modals/version-info-modal.js +11 -8
- {metalist-0.4.1 → metalist-0.6.0}/app/static/js/modules/mode-manager/actions/history-actions.js +8 -1
- {metalist-0.4.1 → metalist-0.6.0}/app/static/js/modules/mode-manager/actions/note-actions.js +3 -5
- {metalist-0.4.1 → metalist-0.6.0}/app/static/js/modules/mode-manager/actions/selection-actions.js +1 -1
- {metalist-0.4.1 → metalist-0.6.0}/app/static/js/modules/mode-manager/actions/ui-actions.js +21 -17
- {metalist-0.4.1 → metalist-0.6.0}/app/static/js/modules/mode-manager/events/context-menu-events.js +15 -1
- {metalist-0.4.1 → metalist-0.6.0}/app/static/js/modules/mode-manager/events/inactivity-events.js +7 -2
- {metalist-0.4.1 → metalist-0.6.0}/app/static/js/modules/mode-manager/events/input-events.js +6 -3
- {metalist-0.4.1 → metalist-0.6.0}/app/static/js/modules/mode-manager/events/keyboard-events.js +77 -48
- {metalist-0.4.1 → metalist-0.6.0}/app/static/js/modules/mode-manager/events/mouse-events.js +91 -68
- {metalist-0.4.1 → metalist-0.6.0}/app/static/js/modules/mode-manager/mode-context.js +121 -79
- {metalist-0.4.1 → metalist-0.6.0}/app/static/js/modules/mode-manager/mode-logger.js +2 -2
- {metalist-0.4.1 → metalist-0.6.0}/app/static/js/modules/mode-manager/services/animated-scroll-service.js +10 -7
- {metalist-0.4.1 → metalist-0.6.0}/app/static/js/modules/mode-manager/services/backlinks-panel-service.js +15 -10
- {metalist-0.4.1 → metalist-0.6.0}/app/static/js/modules/mode-manager/services/command-gate-service.js +26 -34
- {metalist-0.4.1 → metalist-0.6.0}/app/static/js/modules/mode-manager/services/differential-view-service.js +12 -7
- {metalist-0.4.1 → metalist-0.6.0}/app/static/js/modules/mode-manager/services/embedded-image-service.js +2 -1
- {metalist-0.4.1 → metalist-0.6.0}/app/static/js/modules/mode-manager/services/file-image-preview-service.js +33 -21
- metalist-0.6.0/app/static/js/modules/mode-manager/services/floating-note-dom.js +74 -0
- metalist-0.6.0/app/static/js/modules/mode-manager/services/floating-note-layout.js +28 -0
- metalist-0.6.0/app/static/js/modules/mode-manager/services/floating-note-service.js +246 -0
- {metalist-0.4.1 → metalist-0.6.0}/app/static/js/modules/mode-manager/services/image-context-menu-action-service.js +11 -7
- {metalist-0.4.1 → metalist-0.6.0}/app/static/js/modules/mode-manager/services/image-file-insert-choice-modal-service.js +8 -5
- {metalist-0.4.1 → metalist-0.6.0}/app/static/js/modules/mode-manager/services/infinite-scroll-service.js +32 -25
- metalist-0.6.0/app/static/js/modules/mode-manager/services/link-title-prefetch-service.js +48 -0
- {metalist-0.4.1 → metalist-0.6.0}/app/static/js/modules/mode-manager/services/markdown-render-service.js +9 -6
- {metalist-0.4.1 → metalist-0.6.0}/app/static/js/modules/mode-manager/services/mermaid-render-service.js +16 -12
- {metalist-0.4.1 → metalist-0.6.0}/app/static/js/modules/mode-manager/services/note-click-target-service.js +12 -0
- {metalist-0.4.1 → metalist-0.6.0}/app/static/js/modules/mode-manager/services/note-clipboard-write-service.js +4 -0
- {metalist-0.4.1 → metalist-0.6.0}/app/static/js/modules/mode-manager/services/note-collapse-animation-service.js +2 -1
- {metalist-0.4.1 → metalist-0.6.0}/app/static/js/modules/mode-manager/services/note-fullscreen-service.js +14 -10
- {metalist-0.4.1 → metalist-0.6.0}/app/static/js/modules/mode-manager/services/note-reposition-animation-service.js +2 -1
- {metalist-0.4.1 → metalist-0.6.0}/app/static/js/modules/mode-manager/services/password-clipboard-service.js +13 -6
- {metalist-0.4.1 → metalist-0.6.0}/app/static/js/modules/mode-manager/services/polling-service.js +34 -26
- {metalist-0.4.1 → metalist-0.6.0}/app/static/js/modules/mode-manager/services/reference-source-navigation-service.js +18 -14
- {metalist-0.4.1 → metalist-0.6.0}/app/static/js/modules/mode-manager/services/remote-image-proxy-service.js +35 -23
- {metalist-0.4.1 → metalist-0.6.0}/app/static/js/modules/mode-manager/services/scroll-restoration-service.js +16 -12
- {metalist-0.4.1 → metalist-0.6.0}/app/static/js/modules/mode-manager/services/search-contexts-overlay-service.js +33 -18
- {metalist-0.4.1 → metalist-0.6.0}/app/static/js/modules/mode-manager/services/search-debounce-service.js +9 -6
- {metalist-0.4.1 → metalist-0.6.0}/app/static/js/modules/mode-manager/services/search-interaction-service.js +27 -26
- {metalist-0.4.1 → metalist-0.6.0}/app/static/js/modules/mode-manager/services/search-redaction-reveal-service.js +1 -1
- {metalist-0.4.1 → metalist-0.6.0}/app/static/js/modules/mode-manager/services/search-suggestion-windows-service.js +25 -9
- {metalist-0.4.1 → metalist-0.6.0}/app/static/js/modules/mode-manager/services/search-suggestions-service.js +49 -39
- {metalist-0.4.1 → metalist-0.6.0}/app/static/js/modules/mode-manager/services/selected-formatting-removal-service.js +68 -0
- {metalist-0.4.1 → metalist-0.6.0}/app/static/js/modules/mode-manager/services/tab-dom-cache-service.js +12 -7
- {metalist-0.4.1 → metalist-0.6.0}/app/static/js/modules/mode-manager/services/tab-state-service.js +38 -32
- {metalist-0.4.1 → metalist-0.6.0}/app/static/js/modules/mode-manager/services/tag-bar-service.js +35 -30
- metalist-0.6.0/app/static/js/modules/mode-manager/services/tag-input-selection-service.js +26 -0
- {metalist-0.4.1 → metalist-0.6.0}/app/static/js/modules/mode-manager/services/tag-suggestions-service.js +54 -43
- {metalist-0.4.1 → metalist-0.6.0}/app/static/js/modules/note-html-sanitizer.js +9 -5
- {metalist-0.4.1 → metalist-0.6.0}/app/static/js/modules/password-operation-response.js +5 -3
- {metalist-0.4.1 → metalist-0.6.0}/app/static/js/modules/password-strength.js +8 -5
- {metalist-0.4.1 → metalist-0.6.0}/app/static/js/modules/reminder-store.js +9 -9
- {metalist-0.4.1 → metalist-0.6.0}/app/static/js/modules/reminder-surface-service.js +18 -37
- {metalist-0.4.1 → metalist-0.6.0}/app/static/js/namespace-deleted.js +3 -2
- {metalist-0.4.1 → metalist-0.6.0}/app/static/js/namespace-renamed.js +3 -2
- metalist-0.6.0/app/static/js/vendor/dompurify-3.4.13.min.js +3 -0
- metalist-0.6.0/app/static/js/vendor/markdown-it-14.3.2.LICENSE.txt +22 -0
- metalist-0.6.0/app/static/js/vendor/markdown-it-14.3.2.min.js +3 -0
- metalist-0.6.0/app/static/js/vendor/mermaid-11.16.1.min.js +3587 -0
- {metalist-0.4.1 → metalist-0.6.0}/app/static/note-html-policy.json +2 -1
- {metalist-0.4.1 → metalist-0.6.0}/app/templates/base.html +1 -1
- {metalist-0.4.1 → metalist-0.6.0}/app/templates/maintenance.html +1 -25
- metalist-0.6.0/app/upload_limits.py +11 -0
- {metalist-0.4.1 → metalist-0.6.0}/app/usecases/collapse.py +1 -0
- {metalist-0.4.1 → metalist-0.6.0}/app/usecases/copy_note.py +21 -11
- {metalist-0.4.1 → metalist-0.6.0}/app/usecases/delete_subtree.py +1 -0
- {metalist-0.4.1 → metalist-0.6.0}/app/usecases/expand.py +2 -2
- {metalist-0.4.1 → metalist-0.6.0}/app/usecases/move.py +22 -50
- {metalist-0.4.1 → metalist-0.6.0}/app/usecases/paste_sibling.py +4 -7
- metalist-0.6.0/app/usecases/prefetch_link_titles.py +24 -0
- {metalist-0.4.1 → metalist-0.6.0}/app/usecases/resize_image.py +2 -2
- {metalist-0.4.1 → metalist-0.6.0}/app/usecases/toggle_reference_mode.py +2 -2
- {metalist-0.4.1 → metalist-0.6.0}/app/usecases/toggle_todo_done.py +2 -2
- {metalist-0.4.1 → metalist-0.6.0}/app/usecases/undo.py +2 -2
- {metalist-0.4.1 → metalist-0.6.0}/app/usecases/unformat_content.py +2 -2
- {metalist-0.4.1 → metalist-0.6.0}/app/usecases/update_content.py +14 -6
- {metalist-0.4.1 → metalist-0.6.0}/app/utils/encryption.py +2 -0
- {metalist-0.4.1 → metalist-0.6.0}/app/version.py +1 -1
- {metalist-0.4.1 → metalist-0.6.0}/convert-from-legacy.py +1 -1
- {metalist-0.4.1 → metalist-0.6.0}/main.py +21 -73
- {metalist-0.4.1 → metalist-0.6.0}/metalist.egg-info/PKG-INFO +31 -8
- {metalist-0.4.1 → metalist-0.6.0}/metalist.egg-info/SOURCES.txt +34 -17
- {metalist-0.4.1 → metalist-0.6.0}/metalist.egg-info/requires.txt +0 -1
- {metalist-0.4.1 → metalist-0.6.0}/pyproject.toml +9 -1
- metalist-0.4.1/app/api/routes/sounds.py +0 -190
- metalist-0.4.1/app/db/sounds_sql.py +0 -162
- metalist-0.4.1/app/services/agent/skills/search-notes.md +0 -25
- metalist-0.4.1/app/services/base_service.py +0 -145
- metalist-0.4.1/app/services/dependencies.py +0 -72
- metalist-0.4.1/app/services/note_service.py +0 -290
- metalist-0.4.1/app/services/query_service.py +0 -280
- metalist-0.4.1/app/services/sound_storage.py +0 -754
- metalist-0.4.1/app/services/sync.py +0 -74
- metalist-0.4.1/app/services/transaction_manager.py +0 -159
- metalist-0.4.1/app/services/undo_service.py +0 -44
- metalist-0.4.1/app/services/view_cache.py +0 -71
- metalist-0.4.1/app/static/js/modules/editor-selection.js +0 -110
- metalist-0.4.1/app/static/js/modules/modals/sound-manager-modal.js +0 -270
- metalist-0.4.1/app/static/js/modules/sound-service.js +0 -380
- metalist-0.4.1/app/static/js/vendor/dompurify-3.4.12.min.js +0 -3
- metalist-0.4.1/app/static/js/vendor/markdown-it.min.js +0 -1
- metalist-0.4.1/app/static/js/vendor/mermaid-11.9.0.min.js +0 -2659
- {metalist-0.4.1 → metalist-0.6.0}/MANIFEST.in +0 -0
- {metalist-0.4.1 → metalist-0.6.0}/app/__init__.py +0 -0
- {metalist-0.4.1 → metalist-0.6.0}/app/api/__init__.py +0 -0
- {metalist-0.4.1 → metalist-0.6.0}/app/api/deps.py +0 -0
- {metalist-0.4.1 → metalist-0.6.0}/app/api/dev.py +0 -0
- {metalist-0.4.1 → metalist-0.6.0}/app/api/request_auth.py +0 -0
- {metalist-0.4.1 → metalist-0.6.0}/app/api/routes/test.py +0 -0
- {metalist-0.4.1 → metalist-0.6.0}/app/config.py +0 -0
- {metalist-0.4.1 → metalist-0.6.0}/app/db/__init__.py +0 -0
- {metalist-0.4.1 → metalist-0.6.0}/app/db/backup_settings_sql.py +0 -0
- {metalist-0.4.1 → metalist-0.6.0}/app/db/engine.py +0 -0
- {metalist-0.4.1 → metalist-0.6.0}/app/db/link_titles_sql.py +0 -0
- {metalist-0.4.1 → metalist-0.6.0}/app/db/ontology_rules_sql.py +0 -0
- {metalist-0.4.1 → metalist-0.6.0}/app/db/reminders_sql.py +0 -0
- {metalist-0.4.1 → metalist-0.6.0}/app/db/schema.py +0 -0
- {metalist-0.4.1 → metalist-0.6.0}/app/db/search_history_sql.py +0 -0
- {metalist-0.4.1 → metalist-0.6.0}/app/db/settings_sql.py +0 -0
- {metalist-0.4.1 → metalist-0.6.0}/app/db/tab_state_sql.py +0 -0
- {metalist-0.4.1 → metalist-0.6.0}/app/models/commands.py +0 -0
- {metalist-0.4.1 → metalist-0.6.0}/app/models/entities.py +0 -0
- {metalist-0.4.1 → metalist-0.6.0}/app/models/enums.py +0 -0
- {metalist-0.4.1 → metalist-0.6.0}/app/models/list_traversal.py +0 -0
- {metalist-0.4.1 → metalist-0.6.0}/app/presentation/__init__.py +0 -0
- {metalist-0.4.1 → metalist-0.6.0}/app/presentation/render/__init__.py +0 -0
- {metalist-0.4.1 → metalist-0.6.0}/app/presentation/render/note_renderer.py +0 -0
- {metalist-0.4.1 → metalist-0.6.0}/app/presentation/templates.py +0 -0
- {metalist-0.4.1 → metalist-0.6.0}/app/security/authenticated_logging.py +0 -0
- {metalist-0.4.1 → metalist-0.6.0}/app/security/encryption.py +0 -0
- {metalist-0.4.1 → metalist-0.6.0}/app/security/http_headers.py +0 -0
- {metalist-0.4.1 → metalist-0.6.0}/app/security/note_html.py +0 -0
- {metalist-0.4.1 → metalist-0.6.0}/app/security/sensitive_logging.py +0 -0
- {metalist-0.4.1 → metalist-0.6.0}/app/security/shell_execution.py +0 -0
- {metalist-0.4.1 → metalist-0.6.0}/app/security/validation_errors.py +0 -0
- {metalist-0.4.1 → metalist-0.6.0}/app/services/__init__.py +0 -0
- {metalist-0.4.1 → metalist-0.6.0}/app/services/agent/__init__.py +0 -0
- {metalist-0.4.1 → metalist-0.6.0}/app/services/agent/actions.py +0 -0
- {metalist-0.4.1 → metalist-0.6.0}/app/services/agent/context.py +0 -0
- {metalist-0.4.1 → metalist-0.6.0}/app/services/agent/inference.py +0 -0
- {metalist-0.4.1 → metalist-0.6.0}/app/services/agent/model_policy.py +0 -0
- {metalist-0.4.1 → metalist-0.6.0}/app/services/agent/ollama_inference.py +0 -0
- {metalist-0.4.1 → metalist-0.6.0}/app/services/agent/openai_cost_tracking.py +0 -0
- {metalist-0.4.1 → metalist-0.6.0}/app/services/agent/openai_inference.py +0 -0
- {metalist-0.4.1 → metalist-0.6.0}/app/services/agent/permissions.py +0 -0
- {metalist-0.4.1 → metalist-0.6.0}/app/services/agent/prompt_settings.py +0 -0
- {metalist-0.4.1 → metalist-0.6.0}/app/services/agent/prompts/__init__.py +0 -0
- {metalist-0.4.1 → metalist-0.6.0}/app/services/agent/prompts/final-response.md +0 -0
- {metalist-0.4.1 → metalist-0.6.0}/app/services/agent/prompts/system.md +0 -0
- {metalist-0.4.1 → metalist-0.6.0}/app/services/agent/prompts/tool-result.md +0 -0
- {metalist-0.4.1 → metalist-0.6.0}/app/services/agent/retrieval_settings.py +0 -0
- {metalist-0.4.1 → metalist-0.6.0}/app/services/agent/runtime.py +0 -0
- {metalist-0.4.1 → metalist-0.6.0}/app/services/agent/scope.py +0 -0
- {metalist-0.4.1 → metalist-0.6.0}/app/services/agent/skill_settings.py +0 -0
- {metalist-0.4.1 → metalist-0.6.0}/app/services/agent/skills/scoped-investigation.md +0 -0
- {metalist-0.4.1 → metalist-0.6.0}/app/services/agent/tagging.py +0 -0
- {metalist-0.4.1 → metalist-0.6.0}/app/services/agent/tagging_run.py +0 -0
- {metalist-0.4.1 → metalist-0.6.0}/app/services/agent/token_estimation.py +0 -0
- {metalist-0.4.1 → metalist-0.6.0}/app/services/agent/tools.py +0 -0
- {metalist-0.4.1 → metalist-0.6.0}/app/services/agent/trace.py +0 -0
- {metalist-0.4.1 → metalist-0.6.0}/app/services/ai_chat_rendering.py +0 -0
- {metalist-0.4.1 → metalist-0.6.0}/app/services/auth.py +0 -0
- {metalist-0.4.1 → metalist-0.6.0}/app/services/auth_cache_state.py +0 -0
- {metalist-0.4.1 → metalist-0.6.0}/app/services/backlink_index.py +0 -0
- {metalist-0.4.1 → metalist-0.6.0}/app/services/backlinks.py +0 -0
- {metalist-0.4.1 → metalist-0.6.0}/app/services/backup_settings_service.py +0 -0
- {metalist-0.4.1 → metalist-0.6.0}/app/services/content_cache.py +0 -0
- {metalist-0.4.1 → metalist-0.6.0}/app/services/diagnostics.py +0 -0
- {metalist-0.4.1 → metalist-0.6.0}/app/services/encryption.py +0 -0
- {metalist-0.4.1 → metalist-0.6.0}/app/services/file_registry.py +0 -0
- {metalist-0.4.1 → metalist-0.6.0}/app/services/footnote_layout.py +0 -0
- {metalist-0.4.1 → metalist-0.6.0}/app/services/footnote_rendering.py +0 -0
- {metalist-0.4.1 → metalist-0.6.0}/app/services/hydration_state.py +0 -0
- {metalist-0.4.1 → metalist-0.6.0}/app/services/image_size_formatting.py +0 -0
- {metalist-0.4.1 → metalist-0.6.0}/app/services/inline_image_occurrences.py +0 -0
- {metalist-0.4.1 → metalist-0.6.0}/app/services/integrity.py +0 -0
- {metalist-0.4.1 → metalist-0.6.0}/app/services/login_rate_limit.py +0 -0
- {metalist-0.4.1 → metalist-0.6.0}/app/services/markdown_rendering.py +0 -0
- {metalist-0.4.1 → metalist-0.6.0}/app/services/note_fullscreen.py +0 -0
- {metalist-0.4.1 → metalist-0.6.0}/app/services/note_image_tags.py +0 -0
- {metalist-0.4.1 → metalist-0.6.0}/app/services/ollama_provider.py +0 -0
- {metalist-0.4.1 → metalist-0.6.0}/app/services/ontology_rules_store.py +0 -0
- {metalist-0.4.1 → metalist-0.6.0}/app/services/openai_credentials.py +0 -0
- {metalist-0.4.1 → metalist-0.6.0}/app/services/reference_presentation.py +0 -0
- {metalist-0.4.1 → metalist-0.6.0}/app/services/runtime_hardening.py +0 -0
- {metalist-0.4.1 → metalist-0.6.0}/app/services/search_history.py +0 -0
- {metalist-0.4.1 → metalist-0.6.0}/app/services/search_history_storage.py +0 -0
- {metalist-0.4.1 → metalist-0.6.0}/app/services/search_index.py +0 -0
- {metalist-0.4.1 → metalist-0.6.0}/app/services/search_text.py +0 -0
- {metalist-0.4.1 → metalist-0.6.0}/app/services/selected_text_tag.py +0 -0
- {metalist-0.4.1 → metalist-0.6.0}/app/services/session_timeout_service.py +0 -0
- {metalist-0.4.1 → metalist-0.6.0}/app/services/sync_state.py +0 -0
- {metalist-0.4.1 → metalist-0.6.0}/app/services/tag_case.py +0 -0
- {metalist-0.4.1 → metalist-0.6.0}/app/services/tag_ontology.py +0 -0
- {metalist-0.4.1 → metalist-0.6.0}/app/services/tag_rename.py +0 -0
- {metalist-0.4.1 → metalist-0.6.0}/app/services/test_reset.py +0 -0
- {metalist-0.4.1 → metalist-0.6.0}/app/services/update_backups.py +0 -0
- {metalist-0.4.1 → metalist-0.6.0}/app/services/view_diff.py +0 -0
- {metalist-0.4.1 → metalist-0.6.0}/app/services/view_state.py +0 -0
- {metalist-0.4.1 → metalist-0.6.0}/app/startup_environment.py +0 -0
- {metalist-0.4.1 → metalist-0.6.0}/app/static/css/forms.css +0 -0
- {metalist-0.4.1 → metalist-0.6.0}/app/static/img/favicon.ico +0 -0
- {metalist-0.4.1 → metalist-0.6.0}/app/static/js/locked.js +0 -0
- {metalist-0.4.1 → metalist-0.6.0}/app/static/js/main.js +0 -0
- {metalist-0.4.1 → metalist-0.6.0}/app/static/js/modules/activity-tracker.js +0 -0
- {metalist-0.4.1 → metalist-0.6.0}/app/static/js/modules/ai-chat/agent-prompt-service.js +0 -0
- {metalist-0.4.1 → metalist-0.6.0}/app/static/js/modules/ai-chat/agent-retrieval-settings.js +0 -0
- {metalist-0.4.1 → metalist-0.6.0}/app/static/js/modules/ai-chat/ai-chat-panel-service.js +0 -0
- {metalist-0.4.1 → metalist-0.6.0}/app/static/js/modules/ai-chat/ai-thinking-level-service.js +0 -0
- {metalist-0.4.1 → metalist-0.6.0}/app/static/js/modules/ai-chat/bulk-elapsed-clock.js +0 -0
- {metalist-0.4.1 → metalist-0.6.0}/app/static/js/modules/ai-chat/cloud-privacy-policy.js +0 -0
- {metalist-0.4.1 → metalist-0.6.0}/app/static/js/modules/client-state-migration.js +0 -0
- {metalist-0.4.1 → metalist-0.6.0}/app/static/js/modules/command-palette/backup-command-availability.js +0 -0
- {metalist-0.4.1 → metalist-0.6.0}/app/static/js/modules/command-palette/click-activation-service.js +0 -0
- {metalist-0.4.1 → metalist-0.6.0}/app/static/js/modules/command-palette/note-layout-preferences.js +0 -0
- {metalist-0.4.1 → metalist-0.6.0}/app/static/js/modules/context-menu/context-menu-target-service.js +0 -0
- {metalist-0.4.1 → metalist-0.6.0}/app/static/js/modules/context-menu/input-caret-service.js +0 -0
- {metalist-0.4.1 → metalist-0.6.0}/app/static/js/modules/disconnect-editing-state-service.js +0 -0
- {metalist-0.4.1 → metalist-0.6.0}/app/static/js/modules/dom-utils-fixed.js +0 -0
- {metalist-0.4.1 → metalist-0.6.0}/app/static/js/modules/dom-utils.js +0 -0
- {metalist-0.4.1 → metalist-0.6.0}/app/static/js/modules/editor-commands.js +0 -0
- {metalist-0.4.1 → metalist-0.6.0}/app/static/js/modules/elapsed-time.js +0 -0
- {metalist-0.4.1 → metalist-0.6.0}/app/static/js/modules/error-handler.js +0 -0
- {metalist-0.4.1 → metalist-0.6.0}/app/static/js/modules/location-flags.js +0 -0
- {metalist-0.4.1 → metalist-0.6.0}/app/static/js/modules/login-namespace-picker.js +0 -0
- {metalist-0.4.1 → metalist-0.6.0}/app/static/js/modules/modals/delete-namespace-validation.js +0 -0
- {metalist-0.4.1 → metalist-0.6.0}/app/static/js/modules/modals/namespace-loading-page.js +0 -0
- {metalist-0.4.1 → metalist-0.6.0}/app/static/js/modules/modals/namespace-ports-profile.js +0 -0
- {metalist-0.4.1 → metalist-0.6.0}/app/static/js/modules/modals/namespace-rename-validation.js +0 -0
- {metalist-0.4.1 → metalist-0.6.0}/app/static/js/modules/mode-manager/actions/content-actions.js +0 -0
- {metalist-0.4.1 → metalist-0.6.0}/app/static/js/modules/mode-manager/actions/search-actions.js +0 -0
- {metalist-0.4.1 → metalist-0.6.0}/app/static/js/modules/mode-manager/events/focus-events.js +0 -0
- {metalist-0.4.1 → metalist-0.6.0}/app/static/js/modules/mode-manager/events/search-events.js +0 -0
- {metalist-0.4.1 → metalist-0.6.0}/app/static/js/modules/mode-manager/mode-manager-controller.js +0 -0
- {metalist-0.4.1 → metalist-0.6.0}/app/static/js/modules/mode-manager/services/add-style-service.js +0 -0
- {metalist-0.4.1 → metalist-0.6.0}/app/static/js/modules/mode-manager/services/backlinks-navigation-service.js +0 -0
- {metalist-0.4.1 → metalist-0.6.0}/app/static/js/modules/mode-manager/services/clipboard-shortcut-policy-service.js +0 -0
- {metalist-0.4.1 → metalist-0.6.0}/app/static/js/modules/mode-manager/services/collapse-affordance-service.js +0 -0
- {metalist-0.4.1 → metalist-0.6.0}/app/static/js/modules/mode-manager/services/collapse-editing-policy-service.js +0 -0
- {metalist-0.4.1 → metalist-0.6.0}/app/static/js/modules/mode-manager/services/context-menu-target-service.js +0 -0
- {metalist-0.4.1 → metalist-0.6.0}/app/static/js/modules/mode-manager/services/deselect-selection-state-service.js +0 -0
- {metalist-0.4.1 → metalist-0.6.0}/app/static/js/modules/mode-manager/services/edit-session-collapse-policy-service.js +0 -0
- {metalist-0.4.1 → metalist-0.6.0}/app/static/js/modules/mode-manager/services/edit-session-collapse-service.js +0 -0
- {metalist-0.4.1 → metalist-0.6.0}/app/static/js/modules/mode-manager/services/file-drop-policy-service.js +0 -0
- {metalist-0.4.1 → metalist-0.6.0}/app/static/js/modules/mode-manager/services/file-reference-service.js +0 -0
- {metalist-0.4.1 → metalist-0.6.0}/app/static/js/modules/mode-manager/services/filtered-refresh-selection-service.js +0 -0
- {metalist-0.4.1 → metalist-0.6.0}/app/static/js/modules/mode-manager/services/footnote-navigation-service.js +0 -0
- {metalist-0.4.1 → metalist-0.6.0}/app/static/js/modules/mode-manager/services/history-selection-policy-service.js +0 -0
- {metalist-0.4.1 → metalist-0.6.0}/app/static/js/modules/mode-manager/services/history-shortcut-policy-service.js +0 -0
- {metalist-0.4.1 → metalist-0.6.0}/app/static/js/modules/mode-manager/services/html-paste-sanitizer-service.js +0 -0
- {metalist-0.4.1 → metalist-0.6.0}/app/static/js/modules/mode-manager/services/link-context-menu-action-service.js +0 -0
- {metalist-0.4.1 → metalist-0.6.0}/app/static/js/modules/mode-manager/services/note-context-menu-action-service.js +0 -0
- {metalist-0.4.1 → metalist-0.6.0}/app/static/js/modules/mode-manager/services/note-delete-shortcut-policy-service.js +0 -0
- {metalist-0.4.1 → metalist-0.6.0}/app/static/js/modules/mode-manager/services/note-drag-service.js +0 -0
- {metalist-0.4.1 → metalist-0.6.0}/app/static/js/modules/mode-manager/services/note-split-service.js +0 -0
- {metalist-0.4.1 → metalist-0.6.0}/app/static/js/modules/mode-manager/services/note-timestamp-hover-service.js +0 -0
- {metalist-0.4.1 → metalist-0.6.0}/app/static/js/modules/mode-manager/services/remove-formatting-service.js +0 -0
- {metalist-0.4.1 → metalist-0.6.0}/app/static/js/modules/mode-manager/services/root-date-separator-service.js +0 -0
- {metalist-0.4.1 → metalist-0.6.0}/app/static/js/modules/mode-manager/services/root-sort-indicator-service.js +0 -0
- {metalist-0.4.1 → metalist-0.6.0}/app/static/js/modules/mode-manager/services/root-sort-service.js +0 -0
- {metalist-0.4.1 → metalist-0.6.0}/app/static/js/modules/mode-manager/services/scroll-anchor-service.js +0 -0
- {metalist-0.4.1 → metalist-0.6.0}/app/static/js/modules/mode-manager/services/scroll-to-top-service.js +0 -0
- {metalist-0.4.1 → metalist-0.6.0}/app/static/js/modules/mode-manager/services/search-input-service.js +0 -0
- {metalist-0.4.1 → metalist-0.6.0}/app/static/js/modules/mode-manager/services/search-suggestion-statistics-service.js +0 -0
- {metalist-0.4.1 → metalist-0.6.0}/app/static/js/modules/mode-manager/services/search-suggestion-window-labels-service.js +0 -0
- {metalist-0.4.1 → metalist-0.6.0}/app/static/js/modules/mode-manager/services/search-syntax-service.js +0 -0
- {metalist-0.4.1 → metalist-0.6.0}/app/static/js/modules/mode-manager/services/selected-text-tag-service.js +0 -0
- {metalist-0.4.1 → metalist-0.6.0}/app/static/js/modules/mode-manager/services/shell-output-service.js +0 -0
- {metalist-0.4.1 → metalist-0.6.0}/app/static/js/modules/mode-manager/services/tab-drag-service.js +0 -0
- {metalist-0.4.1 → metalist-0.6.0}/app/static/js/modules/mode-manager/services/tab-duplication-service.js +0 -0
- {metalist-0.4.1 → metalist-0.6.0}/app/static/js/modules/mode-manager/services/tag-proposal-service.js +0 -0
- {metalist-0.4.1 → metalist-0.6.0}/app/static/js/modules/mode-manager/services/tag-syntax-service.js +0 -0
- {metalist-0.4.1 → metalist-0.6.0}/app/static/js/modules/mode-manager/services/todo-toggle-editing-service.js +0 -0
- {metalist-0.4.1 → metalist-0.6.0}/app/static/js/modules/mode-manager/services/untagged-view-indicator-service.js +0 -0
- {metalist-0.4.1 → metalist-0.6.0}/app/static/js/modules/mode-manager/services/view-mode-search-shortcut-service.js +0 -0
- {metalist-0.4.1 → metalist-0.6.0}/app/static/js/modules/password-generator.js +0 -0
- {metalist-0.4.1 → metalist-0.6.0}/app/static/js/modules/password-policy.js +0 -0
- {metalist-0.4.1 → metalist-0.6.0}/app/static/js/modules/selection-markers.js +0 -0
- {metalist-0.4.1 → metalist-0.6.0}/app/static/js/modules/session-auth.js +0 -0
- {metalist-0.4.1 → metalist-0.6.0}/app/static/js/modules/tag-token.js +0 -0
- {metalist-0.4.1 → metalist-0.6.0}/app/static/js/modules/uuid.js +0 -0
- /metalist-0.4.1/app/static/js/vendor/dompurify-3.4.12.LICENSE.txt → /metalist-0.6.0/app/static/js/vendor/dompurify-3.4.13.LICENSE.txt +0 -0
- /metalist-0.4.1/app/static/js/vendor/mermaid-11.9.0.LICENSE.txt → /metalist-0.6.0/app/static/js/vendor/mermaid-11.16.1.LICENSE.txt +0 -0
- {metalist-0.4.1 → metalist-0.6.0}/app/static/js/vendor/zxcvbn-4.4.2.LICENSE.txt +0 -0
- {metalist-0.4.1 → metalist-0.6.0}/app/static/js/vendor/zxcvbn-4.4.2.js +0 -0
- {metalist-0.4.1 → metalist-0.6.0}/app/static/video/login-startup.mp4 +0 -0
- {metalist-0.4.1 → metalist-0.6.0}/app/templates/index.html +0 -0
- {metalist-0.4.1 → metalist-0.6.0}/app/templates/locked.html +0 -0
- {metalist-0.4.1 → metalist-0.6.0}/app/templates/namespace_deleted.html +0 -0
- {metalist-0.4.1 → metalist-0.6.0}/app/templates/namespace_renamed.html +0 -0
- {metalist-0.4.1 → metalist-0.6.0}/app/templates/notes_list.html +0 -0
- {metalist-0.4.1 → metalist-0.6.0}/app/usecases/__init__.py +0 -0
- {metalist-0.4.1 → metalist-0.6.0}/app/usecases/add_selected_text_tag.py +0 -0
- {metalist-0.4.1 → metalist-0.6.0}/app/usecases/alphabetize_root_notes.py +0 -0
- {metalist-0.4.1 → metalist-0.6.0}/app/usecases/base.py +0 -0
- {metalist-0.4.1 → metalist-0.6.0}/app/usecases/bulk_tag_proposals.py +0 -0
- {metalist-0.4.1 → metalist-0.6.0}/app/usecases/create_child.py +0 -0
- {metalist-0.4.1 → metalist-0.6.0}/app/usecases/create_note.py +0 -0
- {metalist-0.4.1 → metalist-0.6.0}/app/usecases/create_sibling.py +0 -0
- {metalist-0.4.1 → metalist-0.6.0}/app/usecases/delete_tag.py +0 -0
- {metalist-0.4.1 → metalist-0.6.0}/app/usecases/indent.py +0 -0
- {metalist-0.4.1 → metalist-0.6.0}/app/usecases/lock.py +0 -0
- {metalist-0.4.1 → metalist-0.6.0}/app/usecases/move_to_top.py +0 -0
- {metalist-0.4.1 → metalist-0.6.0}/app/usecases/outdent.py +0 -0
- {metalist-0.4.1 → metalist-0.6.0}/app/usecases/paste_child.py +0 -0
- {metalist-0.4.1 → metalist-0.6.0}/app/usecases/prioritize.py +0 -0
- {metalist-0.4.1 → metalist-0.6.0}/app/usecases/redo.py +0 -0
- {metalist-0.4.1 → metalist-0.6.0}/app/usecases/rename_tag.py +0 -0
- {metalist-0.4.1 → metalist-0.6.0}/app/usecases/reset_updated_at.py +0 -0
- {metalist-0.4.1 → metalist-0.6.0}/app/usecases/run_shell.py +0 -0
- {metalist-0.4.1 → metalist-0.6.0}/app/usecases/search_comment_autofill.py +0 -0
- {metalist-0.4.1 → metalist-0.6.0}/app/usecases/search_context_tags.py +0 -0
- {metalist-0.4.1 → metalist-0.6.0}/app/usecases/set_collapse_bulk.py +0 -0
- {metalist-0.4.1 → metalist-0.6.0}/app/usecases/set_collapse_in_context.py +0 -0
- {metalist-0.4.1 → metalist-0.6.0}/app/usecases/split_note.py +0 -0
- {metalist-0.4.1 → metalist-0.6.0}/app/usecases/tag_proposals.py +0 -0
- {metalist-0.4.1 → metalist-0.6.0}/app/usecases/view.py +0 -0
- {metalist-0.4.1 → metalist-0.6.0}/app/utils/__init__.py +0 -0
- {metalist-0.4.1 → metalist-0.6.0}/app/utils/text_utils.py +0 -0
- {metalist-0.4.1 → metalist-0.6.0}/metalist.egg-info/dependency_links.txt +0 -0
- {metalist-0.4.1 → metalist-0.6.0}/metalist.egg-info/entry_points.txt +0 -0
- {metalist-0.4.1 → metalist-0.6.0}/metalist.egg-info/top_level.txt +0 -0
- {metalist-0.4.1 → metalist-0.6.0}/scripts/generate-lan-cert.sh +0 -0
- {metalist-0.4.1 → metalist-0.6.0}/setup.cfg +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: metalist
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.6.0
|
|
4
4
|
Summary: A minimalist single-user note-taking app with SSR, fast in-memory tree operations, and efficient sync.
|
|
5
5
|
Project-URL: Homepage, https://github.com/evolvingstuff/metalist
|
|
6
6
|
Project-URL: Repository, https://github.com/evolvingstuff/metalist
|
|
@@ -16,7 +16,6 @@ Requires-Dist: instructor==1.15.4
|
|
|
16
16
|
Requires-Dist: latex2mathml==3.81.0
|
|
17
17
|
Requires-Dist: loguru==0.7.3
|
|
18
18
|
Requires-Dist: Mako==1.3.12
|
|
19
|
-
Requires-Dist: mutagen==1.48.1
|
|
20
19
|
Requires-Dist: nh3==0.3.6
|
|
21
20
|
Requires-Dist: openai==2.54.0
|
|
22
21
|
Requires-Dist: pillow==12.3.0
|
|
@@ -49,6 +48,20 @@ A minimalist single-user note-taking app focused on server-side rendering (SSR),
|
|
|
49
48
|
- Multi-tab search contexts with server-persisted scroll/search state (survives browser restarts)
|
|
50
49
|
- Manual namespace backups/restores to a user-selected backup folder with retention controls
|
|
51
50
|
|
|
51
|
+
## Changes in 0.6.0
|
|
52
|
+
|
|
53
|
+
- Open notes and their children in multiple live, read-only floating windows. Drag and resize them, keep them visible across searches and tabs, and follow links or copy passwords. Saved changes refresh every half second.
|
|
54
|
+
- Double-click selects complete tags, including punctuation and prefixes, in search and tag bars.
|
|
55
|
+
- Choose sorting modes from the background right-click menu. Creation sorting uses the root note's creation time; last-updated sorting includes descendants and ignores reference display-form changes.
|
|
56
|
+
- Context menus have icons throughout. Full-screen notes have compact spacing, and both read-only views keep steady borders on hover.
|
|
57
|
+
- Fixed Version Info loading and state-transition errors during editing, focus changes, tab switching, and duplication.
|
|
58
|
+
|
|
59
|
+
## Changes in 0.5.0
|
|
60
|
+
|
|
61
|
+
- Sound support is removed entirely; reminders retain their visual behavior. The live database migrates to schema 9, with encrypted namespaces migrating after unlock. Existing backups remain unchanged. See [sound removal](docs/ui/sounds.md).
|
|
62
|
+
- Remove Formatting supports arbitrary spans within pasted headings. Whole-note Cmd+U removes leading/trailing blank lines and retains at most one empty line between sections.
|
|
63
|
+
- This release includes the security, recovery, resource-limit, state-ownership, and performance work documented in the [implementation and coverage map](docs/testing/coverage-map.md).
|
|
64
|
+
|
|
52
65
|
## Technology Stack
|
|
53
66
|
|
|
54
67
|
### Backend
|
|
@@ -68,7 +81,7 @@ A minimalist single-user note-taking app focused on server-side rendering (SSR),
|
|
|
68
81
|
## Architecture (High Level)
|
|
69
82
|
- Server renders the base page via Mako templates.
|
|
70
83
|
- The browser client drives interaction via `/api2` JSON endpoints.
|
|
71
|
-
-
|
|
84
|
+
- Passwordless notes load into memory at startup; encrypted notes load after login. Rendering/search and ordinary authentication use memory; a read guard restricts intentional SQLite access to explicit windows.
|
|
72
85
|
|
|
73
86
|
## Security Boundary
|
|
74
87
|
|
|
@@ -102,23 +115,28 @@ After the first installation, update and restart MetaList with one cross-platfor
|
|
|
102
115
|
```bash
|
|
103
116
|
metalist update
|
|
104
117
|
```
|
|
105
|
-
The updater checks the installed version against the latest PyPI release first. If MetaList is already current, it reports the installed version and leaves all running namespaces untouched. When an update is available, it checks the installer prerequisites, stops running namespaces, and creates and verifies a new backup of every namespace before installation can begin. Each archive includes the complete notes/settings database, the attachments
|
|
118
|
+
The updater checks the installed version against the latest PyPI release first. If MetaList is already current, it reports the installed version and leaves all running namespaces untouched. When an update is available, it checks the installer prerequisites, stops running namespaces, and creates and verifies a new backup of every namespace before installation can begin. Each archive includes the complete notes/settings database, the attachments database when present, and any legacy search-history database. Locked namespaces are backed up with their encrypted data and key metadata intact, without requiring a password.
|
|
106
119
|
|
|
107
120
|
Backups are saved to `~/MetaList/namespaces/<namespace>/backups/<namespace>-<timestamp>.metalist-backup.tar.gz`; the updater prints each verified path. Existing backups remain unchanged and are not pruned. If any backup fails, the update aborts with the current installation intact; run `metalist` to restart the stopped servers after resolving the failure.
|
|
108
121
|
|
|
109
|
-
Only after all backups pass does the updater hand off to an external PowerShell process on Windows or `/bin/sh` on macOS/Linux so the installed environment can unlock. It installs the exact version reported by PyPI with a forced cache refresh, launches MetaList again, and reports the installed version (for example, `MetaList updated to v0.
|
|
122
|
+
Only after all backups pass does the updater hand off to an external PowerShell process on Windows or `/bin/sh` on macOS/Linux so the installed environment can unlock. It installs the exact version reported by PyPI with a forced cache refresh, launches MetaList again, and reports the installed version (for example, `MetaList updated to v0.5.0.`). This protection requires an installed version containing the backup safeguard and applies to `metalist update`; direct pip/uv install commands do not run it.
|
|
110
123
|
|
|
111
124
|
For pip, users can run `pip install metalist`. For a non-editable local install from this checkout, use `uv pip install .` or `pip install .` instead of the editable command below.
|
|
112
125
|
|
|
113
126
|
```bash
|
|
114
127
|
python3 -m venv .venv
|
|
115
128
|
source .venv/bin/activate
|
|
116
|
-
|
|
129
|
+
python -m pip install --require-hashes -r requirements/ci.txt
|
|
130
|
+
python -m pip install --no-deps --no-build-isolation -e ".[dev]"
|
|
117
131
|
|
|
118
132
|
npm install
|
|
119
133
|
```
|
|
120
134
|
|
|
135
|
+
On Windows, create the same `.venv` with `python -m venv .venv` and activate it with `.venv\Scripts\Activate.ps1` in PowerShell. Run the same `python -m pip` commands after activation. Node dependencies are developer tooling; the application itself does not require Node.
|
|
136
|
+
|
|
121
137
|
### Run
|
|
138
|
+
|
|
139
|
+
Persistent data defaults to `~/MetaList`. Set `METALIST_DATA_DIRECTORY` to an absolute directory path before launch to use a separate data root, including namespaces, backups, certificates, logs, and runtime jobs. This is used by release tests to keep their disposable data separate from real notes.
|
|
122
140
|
The installed entrypoint starts or restarts every known namespace, prints their URLs, and exits:
|
|
123
141
|
```bash
|
|
124
142
|
metalist
|
|
@@ -245,9 +263,9 @@ scheme/client metadata is accepted only from `METALIST_FORWARDED_ALLOW_IPS`.
|
|
|
245
263
|
Do not widen that list beyond the actual proxy addresses.
|
|
246
264
|
|
|
247
265
|
### Legacy Import
|
|
248
|
-
`convert-from-legacy.py` replaces the SQLite database referenced by `app.config.DATABASE_URL`, clears its files
|
|
266
|
+
`convert-from-legacy.py` replaces the SQLite database referenced by `app.config.DATABASE_URL`, clears its files sidecar, and imports notes from a legacy JSON export.
|
|
249
267
|
|
|
250
|
-
This is destructive. It deletes the existing notes DB and related files
|
|
268
|
+
This is destructive. It deletes the existing notes DB and related files DB before rebuilding the namespace.
|
|
251
269
|
|
|
252
270
|
Example usage:
|
|
253
271
|
```bash
|
|
@@ -310,3 +328,8 @@ Render Mermaid diagrams to PNGs:
|
|
|
310
328
|
```bash
|
|
311
329
|
npm run render-diagrams
|
|
312
330
|
```
|
|
331
|
+
|
|
332
|
+
|
|
333
|
+
## Maintenance and recovery
|
|
334
|
+
|
|
335
|
+
See the [dependency and release procedure](docs/security/supply-chain.md), [recovery runbook](docs/security/recovery.md), and [current test/implementation map](docs/testing/coverage-map.md). The dated [August code review](CODE_REVIEW.md) is historical.
|
|
@@ -12,6 +12,20 @@ A minimalist single-user note-taking app focused on server-side rendering (SSR),
|
|
|
12
12
|
- Multi-tab search contexts with server-persisted scroll/search state (survives browser restarts)
|
|
13
13
|
- Manual namespace backups/restores to a user-selected backup folder with retention controls
|
|
14
14
|
|
|
15
|
+
## Changes in 0.6.0
|
|
16
|
+
|
|
17
|
+
- Open notes and their children in multiple live, read-only floating windows. Drag and resize them, keep them visible across searches and tabs, and follow links or copy passwords. Saved changes refresh every half second.
|
|
18
|
+
- Double-click selects complete tags, including punctuation and prefixes, in search and tag bars.
|
|
19
|
+
- Choose sorting modes from the background right-click menu. Creation sorting uses the root note's creation time; last-updated sorting includes descendants and ignores reference display-form changes.
|
|
20
|
+
- Context menus have icons throughout. Full-screen notes have compact spacing, and both read-only views keep steady borders on hover.
|
|
21
|
+
- Fixed Version Info loading and state-transition errors during editing, focus changes, tab switching, and duplication.
|
|
22
|
+
|
|
23
|
+
## Changes in 0.5.0
|
|
24
|
+
|
|
25
|
+
- Sound support is removed entirely; reminders retain their visual behavior. The live database migrates to schema 9, with encrypted namespaces migrating after unlock. Existing backups remain unchanged. See [sound removal](docs/ui/sounds.md).
|
|
26
|
+
- Remove Formatting supports arbitrary spans within pasted headings. Whole-note Cmd+U removes leading/trailing blank lines and retains at most one empty line between sections.
|
|
27
|
+
- This release includes the security, recovery, resource-limit, state-ownership, and performance work documented in the [implementation and coverage map](docs/testing/coverage-map.md).
|
|
28
|
+
|
|
15
29
|
## Technology Stack
|
|
16
30
|
|
|
17
31
|
### Backend
|
|
@@ -31,7 +45,7 @@ A minimalist single-user note-taking app focused on server-side rendering (SSR),
|
|
|
31
45
|
## Architecture (High Level)
|
|
32
46
|
- Server renders the base page via Mako templates.
|
|
33
47
|
- The browser client drives interaction via `/api2` JSON endpoints.
|
|
34
|
-
-
|
|
48
|
+
- Passwordless notes load into memory at startup; encrypted notes load after login. Rendering/search and ordinary authentication use memory; a read guard restricts intentional SQLite access to explicit windows.
|
|
35
49
|
|
|
36
50
|
## Security Boundary
|
|
37
51
|
|
|
@@ -65,23 +79,28 @@ After the first installation, update and restart MetaList with one cross-platfor
|
|
|
65
79
|
```bash
|
|
66
80
|
metalist update
|
|
67
81
|
```
|
|
68
|
-
The updater checks the installed version against the latest PyPI release first. If MetaList is already current, it reports the installed version and leaves all running namespaces untouched. When an update is available, it checks the installer prerequisites, stops running namespaces, and creates and verifies a new backup of every namespace before installation can begin. Each archive includes the complete notes/settings database, the attachments
|
|
82
|
+
The updater checks the installed version against the latest PyPI release first. If MetaList is already current, it reports the installed version and leaves all running namespaces untouched. When an update is available, it checks the installer prerequisites, stops running namespaces, and creates and verifies a new backup of every namespace before installation can begin. Each archive includes the complete notes/settings database, the attachments database when present, and any legacy search-history database. Locked namespaces are backed up with their encrypted data and key metadata intact, without requiring a password.
|
|
69
83
|
|
|
70
84
|
Backups are saved to `~/MetaList/namespaces/<namespace>/backups/<namespace>-<timestamp>.metalist-backup.tar.gz`; the updater prints each verified path. Existing backups remain unchanged and are not pruned. If any backup fails, the update aborts with the current installation intact; run `metalist` to restart the stopped servers after resolving the failure.
|
|
71
85
|
|
|
72
|
-
Only after all backups pass does the updater hand off to an external PowerShell process on Windows or `/bin/sh` on macOS/Linux so the installed environment can unlock. It installs the exact version reported by PyPI with a forced cache refresh, launches MetaList again, and reports the installed version (for example, `MetaList updated to v0.
|
|
86
|
+
Only after all backups pass does the updater hand off to an external PowerShell process on Windows or `/bin/sh` on macOS/Linux so the installed environment can unlock. It installs the exact version reported by PyPI with a forced cache refresh, launches MetaList again, and reports the installed version (for example, `MetaList updated to v0.5.0.`). This protection requires an installed version containing the backup safeguard and applies to `metalist update`; direct pip/uv install commands do not run it.
|
|
73
87
|
|
|
74
88
|
For pip, users can run `pip install metalist`. For a non-editable local install from this checkout, use `uv pip install .` or `pip install .` instead of the editable command below.
|
|
75
89
|
|
|
76
90
|
```bash
|
|
77
91
|
python3 -m venv .venv
|
|
78
92
|
source .venv/bin/activate
|
|
79
|
-
|
|
93
|
+
python -m pip install --require-hashes -r requirements/ci.txt
|
|
94
|
+
python -m pip install --no-deps --no-build-isolation -e ".[dev]"
|
|
80
95
|
|
|
81
96
|
npm install
|
|
82
97
|
```
|
|
83
98
|
|
|
99
|
+
On Windows, create the same `.venv` with `python -m venv .venv` and activate it with `.venv\Scripts\Activate.ps1` in PowerShell. Run the same `python -m pip` commands after activation. Node dependencies are developer tooling; the application itself does not require Node.
|
|
100
|
+
|
|
84
101
|
### Run
|
|
102
|
+
|
|
103
|
+
Persistent data defaults to `~/MetaList`. Set `METALIST_DATA_DIRECTORY` to an absolute directory path before launch to use a separate data root, including namespaces, backups, certificates, logs, and runtime jobs. This is used by release tests to keep their disposable data separate from real notes.
|
|
85
104
|
The installed entrypoint starts or restarts every known namespace, prints their URLs, and exits:
|
|
86
105
|
```bash
|
|
87
106
|
metalist
|
|
@@ -208,9 +227,9 @@ scheme/client metadata is accepted only from `METALIST_FORWARDED_ALLOW_IPS`.
|
|
|
208
227
|
Do not widen that list beyond the actual proxy addresses.
|
|
209
228
|
|
|
210
229
|
### Legacy Import
|
|
211
|
-
`convert-from-legacy.py` replaces the SQLite database referenced by `app.config.DATABASE_URL`, clears its files
|
|
230
|
+
`convert-from-legacy.py` replaces the SQLite database referenced by `app.config.DATABASE_URL`, clears its files sidecar, and imports notes from a legacy JSON export.
|
|
212
231
|
|
|
213
|
-
This is destructive. It deletes the existing notes DB and related files
|
|
232
|
+
This is destructive. It deletes the existing notes DB and related files DB before rebuilding the namespace.
|
|
214
233
|
|
|
215
234
|
Example usage:
|
|
216
235
|
```bash
|
|
@@ -273,3 +292,8 @@ Render Mermaid diagrams to PNGs:
|
|
|
273
292
|
```bash
|
|
274
293
|
npm run render-diagrams
|
|
275
294
|
```
|
|
295
|
+
|
|
296
|
+
|
|
297
|
+
## Maintenance and recovery
|
|
298
|
+
|
|
299
|
+
See the [dependency and release procedure](docs/security/supply-chain.md), [recovery runbook](docs/security/recovery.md), and [current test/implementation map](docs/testing/coverage-map.md). The dated [August code review](CODE_REVIEW.md) is historical.
|
|
@@ -5,9 +5,8 @@ from fastapi.responses import JSONResponse, RedirectResponse
|
|
|
5
5
|
from starlette.middleware.base import BaseHTTPMiddleware
|
|
6
6
|
from app.api.request_auth import read_request_auth_token
|
|
7
7
|
from app.services.tokens import token_service
|
|
8
|
-
from app.services.auth_service import AuthService
|
|
9
8
|
from app.services.maintenance_mode import maintenance_service
|
|
10
|
-
from app.
|
|
9
|
+
from app.security.encryption import is_encryption_required
|
|
11
10
|
from app.config import API_PREFIX, TEST_MODE
|
|
12
11
|
|
|
13
12
|
|
|
@@ -63,10 +62,7 @@ class AuthMiddleware(BaseHTTPMiddleware):
|
|
|
63
62
|
|
|
64
63
|
# Block any v1 API usage with an explicit 410 Gone (no DB access)
|
|
65
64
|
if path.startswith('/api') and not (path.startswith(API_PREFIX) or path == API_PREFIX):
|
|
66
|
-
|
|
67
|
-
ua = request.headers.get('user-agent', '-')
|
|
68
|
-
print(f"V1 API call blocked: path={path} referer={ref} ua={ua}")
|
|
69
|
-
raise RuntimeError(f"V1 API disabled: {path}")
|
|
65
|
+
return JSONResponse(status_code=410, content={"detail": "Use the current API version"})
|
|
70
66
|
|
|
71
67
|
# Check if maintenance mode is active first
|
|
72
68
|
if maintenance_service.is_active():
|
|
@@ -91,19 +87,9 @@ class AuthMiddleware(BaseHTTPMiddleware):
|
|
|
91
87
|
if not is_quiet:
|
|
92
88
|
print(f"Path {path} is NOT public, checking auth")
|
|
93
89
|
|
|
94
|
-
#
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
auth = AuthService(db)
|
|
98
|
-
has_password = auth.has_password()
|
|
99
|
-
|
|
100
|
-
# Special case: password creation endpoint is only public if no password exists
|
|
101
|
-
if path in {"/api/auth/settings/password/create", f"{API_PREFIX}/auth/settings/password/create"} and not has_password:
|
|
102
|
-
if not is_quiet:
|
|
103
|
-
print(f"Password creation allowed - no password set")
|
|
104
|
-
return await call_next(request)
|
|
105
|
-
finally:
|
|
106
|
-
db.close() # Always close the database connection
|
|
90
|
+
# Startup and recoverable password transitions publish this memory-owned flag.
|
|
91
|
+
if path == f"{API_PREFIX}/auth/settings/password/create" and not is_encryption_required():
|
|
92
|
+
return await call_next(request)
|
|
107
93
|
|
|
108
94
|
token, error_detail = read_request_auth_token(request)
|
|
109
95
|
if error_detail is not None:
|
|
@@ -0,0 +1,335 @@
|
|
|
1
|
+
"""Required HTTP request contracts; null remains explicit where the protocol allows it."""
|
|
2
|
+
|
|
3
|
+
from typing import Annotated, Literal
|
|
4
|
+
from app.services.resource_limits import SHELL_SECONDS
|
|
5
|
+
from typing_extensions import TypedDict
|
|
6
|
+
from pydantic import AfterValidator, ConfigDict, Field, with_config
|
|
7
|
+
|
|
8
|
+
Identifier = Annotated[str, Field(min_length=1, max_length=256)]
|
|
9
|
+
Text = Annotated[str, Field(max_length=1024 * 1024)]
|
|
10
|
+
Content = Annotated[str, Field(max_length=16 * 1024 * 1024)]
|
|
11
|
+
Nonnegative = Annotated[int, Field(ge=0)]
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
def _unique_windows(value):
|
|
15
|
+
if len(value) != len(set(value)):
|
|
16
|
+
raise ValueError('Search windows must be unique')
|
|
17
|
+
return value
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
WindowDays = Annotated[list[Annotated[int, Field(ge=1, le=365)]], Field(max_length=20), AfterValidator(_unique_windows)]
|
|
21
|
+
|
|
22
|
+
@with_config(ConfigDict(strict=True))
|
|
23
|
+
class SortKey(TypedDict):
|
|
24
|
+
domIndex: Nonnegative
|
|
25
|
+
|
|
26
|
+
@with_config(ConfigDict(strict=True))
|
|
27
|
+
class ScrollAnchor(TypedDict):
|
|
28
|
+
anchorId: Identifier
|
|
29
|
+
anchorBias: Literal['center', 'top']
|
|
30
|
+
intraOffset: Nonnegative
|
|
31
|
+
beltPrev: list[Identifier]
|
|
32
|
+
beltNext: list[Identifier]
|
|
33
|
+
anchorSortKey: SortKey
|
|
34
|
+
|
|
35
|
+
@with_config(ConfigDict(strict=True))
|
|
36
|
+
class Viewport(TypedDict):
|
|
37
|
+
scrollY: Nonnegative
|
|
38
|
+
scrollAnchor: ScrollAnchor | None
|
|
39
|
+
|
|
40
|
+
@with_config(ConfigDict(strict=True))
|
|
41
|
+
class Tab(TypedDict):
|
|
42
|
+
searchQuery: Text
|
|
43
|
+
scrollY: Nonnegative
|
|
44
|
+
anchorRootId: Text | None
|
|
45
|
+
scrollAnchor: ScrollAnchor | None
|
|
46
|
+
sortMode: Literal['normal', 'created', 'updated', 'alphabetical', 'content-volume']
|
|
47
|
+
|
|
48
|
+
@with_config(ConfigDict(strict=True))
|
|
49
|
+
class ViewDiffRequest(TypedDict):
|
|
50
|
+
clientId: Identifier
|
|
51
|
+
editingNoteId: Text | None
|
|
52
|
+
search: Text | None
|
|
53
|
+
tabId: Identifier
|
|
54
|
+
undoContext: Identifier
|
|
55
|
+
clientNoteUuidHashes: dict[Identifier, Text]
|
|
56
|
+
visibleRootAnchorId: Text | None
|
|
57
|
+
isUntaggedView: bool
|
|
58
|
+
|
|
59
|
+
@with_config(ConfigDict(strict=True))
|
|
60
|
+
class UpdateTabStateRequest(TypedDict):
|
|
61
|
+
activeTabId: Identifier
|
|
62
|
+
tabs: dict[Identifier, Tab]
|
|
63
|
+
tabOrder: list[Identifier]
|
|
64
|
+
|
|
65
|
+
@with_config(ConfigDict(strict=True))
|
|
66
|
+
class UpdateTabSortModeRequest(TypedDict):
|
|
67
|
+
tabId: Identifier
|
|
68
|
+
sortMode: Literal['normal', 'created', 'updated', 'alphabetical', 'content-volume']
|
|
69
|
+
clientId: Identifier
|
|
70
|
+
undoContext: Identifier
|
|
71
|
+
|
|
72
|
+
@with_config(ConfigDict(strict=True))
|
|
73
|
+
class CreateNewTabRequest(TypedDict):
|
|
74
|
+
copyFromTabId: Identifier
|
|
75
|
+
|
|
76
|
+
@with_config(ConfigDict(strict=True))
|
|
77
|
+
class DeleteTabRequest(TypedDict):
|
|
78
|
+
tabId: Identifier
|
|
79
|
+
|
|
80
|
+
@with_config(ConfigDict(strict=True))
|
|
81
|
+
class SearchSuggestionsRequest(TypedDict):
|
|
82
|
+
query: Text
|
|
83
|
+
windowDays: WindowDays
|
|
84
|
+
|
|
85
|
+
@with_config(ConfigDict(strict=True))
|
|
86
|
+
class PrioritizeTagSuggestionsRequest(TypedDict):
|
|
87
|
+
query: Text
|
|
88
|
+
search_query: Text | None
|
|
89
|
+
|
|
90
|
+
@with_config(ConfigDict(strict=True))
|
|
91
|
+
class TagInteractionsRequest(TypedDict):
|
|
92
|
+
noteId: Identifier
|
|
93
|
+
interactionType: Literal['edit', 'expand', 'command', 'fullscreen', 'move', 'indent', 'outdent']
|
|
94
|
+
|
|
95
|
+
@with_config(ConfigDict(strict=True))
|
|
96
|
+
class SearchSuggestionInteractionRequest(TypedDict):
|
|
97
|
+
tag: Identifier
|
|
98
|
+
|
|
99
|
+
@with_config(ConfigDict(strict=True))
|
|
100
|
+
class TabSearchInteractionRequest(TypedDict):
|
|
101
|
+
searchQuery: Text
|
|
102
|
+
|
|
103
|
+
@with_config(ConfigDict(strict=True))
|
|
104
|
+
class TagSuggestionsRequest(TypedDict):
|
|
105
|
+
note_id: Identifier
|
|
106
|
+
anchors: list[Identifier]
|
|
107
|
+
explicit_tags: list[Identifier]
|
|
108
|
+
prefix: Text
|
|
109
|
+
content_html: Content
|
|
110
|
+
|
|
111
|
+
@with_config(ConfigDict(strict=True))
|
|
112
|
+
class CreateNoteTopRequest(TypedDict):
|
|
113
|
+
first_visible_note_id: Text | None
|
|
114
|
+
search_query: Text | None
|
|
115
|
+
clientId: Identifier
|
|
116
|
+
undoContext: Identifier
|
|
117
|
+
viewport: Viewport
|
|
118
|
+
|
|
119
|
+
@with_config(ConfigDict(strict=True))
|
|
120
|
+
class CreateSiblingRequest(TypedDict):
|
|
121
|
+
search_query: Text | None
|
|
122
|
+
clientId: Identifier
|
|
123
|
+
undoContext: Identifier
|
|
124
|
+
viewport: Viewport
|
|
125
|
+
|
|
126
|
+
@with_config(ConfigDict(strict=True))
|
|
127
|
+
class CreateChildRequest(TypedDict):
|
|
128
|
+
search_query: Text | None
|
|
129
|
+
clientId: Identifier
|
|
130
|
+
undoContext: Identifier
|
|
131
|
+
viewport: Viewport
|
|
132
|
+
|
|
133
|
+
@with_config(ConfigDict(strict=True))
|
|
134
|
+
class UpdateNoteRequest(TypedDict):
|
|
135
|
+
clientId: Identifier
|
|
136
|
+
content: Content
|
|
137
|
+
tags: Text
|
|
138
|
+
undoContext: Identifier
|
|
139
|
+
viewport: Viewport
|
|
140
|
+
|
|
141
|
+
@with_config(ConfigDict(strict=True))
|
|
142
|
+
class SaveNoteRequest(TypedDict):
|
|
143
|
+
clientId: Identifier
|
|
144
|
+
content: Content
|
|
145
|
+
tags: Text
|
|
146
|
+
undoContext: Identifier
|
|
147
|
+
viewport: Viewport
|
|
148
|
+
|
|
149
|
+
@with_config(ConfigDict(strict=True))
|
|
150
|
+
class AddSelectedTextTagRequest(TypedDict):
|
|
151
|
+
selectedText: Identifier
|
|
152
|
+
clientId: Identifier
|
|
153
|
+
undoContext: Identifier
|
|
154
|
+
viewport: Viewport
|
|
155
|
+
|
|
156
|
+
@with_config(ConfigDict(strict=True))
|
|
157
|
+
class MakePseudoTagProposalsRequest(TypedDict):
|
|
158
|
+
clientId: Identifier
|
|
159
|
+
undoContext: Identifier
|
|
160
|
+
viewport: Viewport
|
|
161
|
+
|
|
162
|
+
@with_config(ConfigDict(strict=True))
|
|
163
|
+
class AcceptTagProposalRequest(TypedDict):
|
|
164
|
+
proposal: Identifier
|
|
165
|
+
clientId: Identifier
|
|
166
|
+
undoContext: Identifier
|
|
167
|
+
viewport: Viewport
|
|
168
|
+
|
|
169
|
+
@with_config(ConfigDict(strict=True))
|
|
170
|
+
class RejectTagProposalRequest(TypedDict):
|
|
171
|
+
proposal: Identifier
|
|
172
|
+
clientId: Identifier
|
|
173
|
+
undoContext: Identifier
|
|
174
|
+
viewport: Viewport
|
|
175
|
+
|
|
176
|
+
@with_config(ConfigDict(strict=True))
|
|
177
|
+
class SplitNoteRequest(TypedDict):
|
|
178
|
+
clientId: Identifier
|
|
179
|
+
segments: Annotated[list[Content], Field(min_length=1)]
|
|
180
|
+
tags: Text
|
|
181
|
+
undoContext: Identifier
|
|
182
|
+
viewport: Viewport
|
|
183
|
+
|
|
184
|
+
@with_config(ConfigDict(strict=True))
|
|
185
|
+
class ToggleTodoDoneRequest(TypedDict):
|
|
186
|
+
clientId: Identifier
|
|
187
|
+
undoContext: Identifier
|
|
188
|
+
viewport: Viewport
|
|
189
|
+
|
|
190
|
+
@with_config(ConfigDict(strict=True))
|
|
191
|
+
class UnformatNoteContentRequest(TypedDict):
|
|
192
|
+
clientId: Identifier
|
|
193
|
+
undoContext: Identifier
|
|
194
|
+
viewport: Viewport
|
|
195
|
+
|
|
196
|
+
@with_config(ConfigDict(strict=True))
|
|
197
|
+
class ResizeNoteImageRequest(TypedDict):
|
|
198
|
+
clientId: Identifier
|
|
199
|
+
sourceKind: Literal['inline', 'file']
|
|
200
|
+
occurrenceIndex: Nonnegative
|
|
201
|
+
action: Literal['bigger', 'smaller', 'reset']
|
|
202
|
+
undoContext: Identifier
|
|
203
|
+
viewport: Viewport
|
|
204
|
+
|
|
205
|
+
@with_config(ConfigDict(strict=True))
|
|
206
|
+
class RunShellEndpointRequest(TypedDict):
|
|
207
|
+
timeoutSeconds: Annotated[int, Field(ge=0, le=SHELL_SECONDS)]
|
|
208
|
+
|
|
209
|
+
@with_config(ConfigDict(strict=True))
|
|
210
|
+
class ToggleReferenceModeEndpointRequest(TypedDict):
|
|
211
|
+
reference_note_id: Identifier
|
|
212
|
+
occurrence_index: Nonnegative
|
|
213
|
+
mode: Literal['embed', 'link']
|
|
214
|
+
clientId: Identifier
|
|
215
|
+
undoContext: Identifier
|
|
216
|
+
viewport: Viewport
|
|
217
|
+
|
|
218
|
+
@with_config(ConfigDict(strict=True))
|
|
219
|
+
class MoveNoteEndpointRequest(TypedDict):
|
|
220
|
+
tab_id: Identifier
|
|
221
|
+
new_parent_id: Text | None
|
|
222
|
+
sibling_id: Identifier
|
|
223
|
+
position: Literal['BEFORE', 'AFTER']
|
|
224
|
+
clientId: Identifier
|
|
225
|
+
undoContext: Identifier
|
|
226
|
+
viewport: Viewport
|
|
227
|
+
|
|
228
|
+
@with_config(ConfigDict(strict=True))
|
|
229
|
+
class MoveNoteToTopEndpointRequest(TypedDict):
|
|
230
|
+
search_query: Text | None
|
|
231
|
+
tab_id: Identifier
|
|
232
|
+
clientId: Identifier
|
|
233
|
+
undoContext: Identifier
|
|
234
|
+
viewport: Viewport
|
|
235
|
+
|
|
236
|
+
@with_config(ConfigDict(strict=True))
|
|
237
|
+
class IndentNoteEndpointRequest(TypedDict):
|
|
238
|
+
visible_prev_id: Text | None
|
|
239
|
+
clientId: Identifier
|
|
240
|
+
undoContext: Identifier
|
|
241
|
+
viewport: Viewport
|
|
242
|
+
|
|
243
|
+
@with_config(ConfigDict(strict=True))
|
|
244
|
+
class OutdentNoteEndpointRequest(TypedDict):
|
|
245
|
+
search_query: Text | None
|
|
246
|
+
clientId: Identifier
|
|
247
|
+
undoContext: Identifier
|
|
248
|
+
viewport: Viewport
|
|
249
|
+
|
|
250
|
+
@with_config(ConfigDict(strict=True))
|
|
251
|
+
class CollapseEndpointRequest(TypedDict):
|
|
252
|
+
clientId: Identifier
|
|
253
|
+
undoContext: Identifier
|
|
254
|
+
viewport: Viewport
|
|
255
|
+
|
|
256
|
+
@with_config(ConfigDict(strict=True))
|
|
257
|
+
class ExpandEndpointRequest(TypedDict):
|
|
258
|
+
clientId: Identifier
|
|
259
|
+
undoContext: Identifier
|
|
260
|
+
viewport: Viewport
|
|
261
|
+
|
|
262
|
+
@with_config(ConfigDict(strict=True))
|
|
263
|
+
class SetCollapsedBulkEndpointRequest(TypedDict):
|
|
264
|
+
note_ids: Annotated[list[Identifier], Field(min_length=1)]
|
|
265
|
+
collapsed: bool
|
|
266
|
+
clientId: Identifier
|
|
267
|
+
undoContext: Identifier
|
|
268
|
+
viewport: Viewport
|
|
269
|
+
|
|
270
|
+
@with_config(ConfigDict(strict=True))
|
|
271
|
+
class SetCollapsedInContextEndpointRequest(TypedDict):
|
|
272
|
+
search_query: Text | None
|
|
273
|
+
collapsed: bool
|
|
274
|
+
recursive: bool
|
|
275
|
+
clientId: Identifier
|
|
276
|
+
undoContext: Identifier
|
|
277
|
+
viewport: Viewport
|
|
278
|
+
|
|
279
|
+
@with_config(ConfigDict(strict=True))
|
|
280
|
+
class SetCollapsedSubtreeEndpointRequest(TypedDict):
|
|
281
|
+
collapsed: bool
|
|
282
|
+
clientId: Identifier
|
|
283
|
+
undoContext: Identifier
|
|
284
|
+
viewport: Viewport
|
|
285
|
+
|
|
286
|
+
@with_config(ConfigDict(strict=True))
|
|
287
|
+
class PrioritizeInViewEndpointRequest(TypedDict):
|
|
288
|
+
tag: Identifier
|
|
289
|
+
direction: Literal['front', 'back']
|
|
290
|
+
search_query: Text | None
|
|
291
|
+
tab_id: Identifier
|
|
292
|
+
clientId: Identifier
|
|
293
|
+
undoContext: Identifier
|
|
294
|
+
viewport: Viewport
|
|
295
|
+
|
|
296
|
+
@with_config(ConfigDict(strict=True))
|
|
297
|
+
class AlphabetizeRootNotesEndpointRequest(TypedDict):
|
|
298
|
+
direction: Literal['asc', 'desc']
|
|
299
|
+
search_query: Text | None
|
|
300
|
+
tab_id: Identifier
|
|
301
|
+
clientId: Identifier
|
|
302
|
+
undoContext: Identifier
|
|
303
|
+
viewport: Viewport
|
|
304
|
+
|
|
305
|
+
@with_config(ConfigDict(strict=True))
|
|
306
|
+
class ResetUpdatedAtToCreatedAtEndpointRequest(TypedDict):
|
|
307
|
+
search_query: Text | None
|
|
308
|
+
clientId: Identifier
|
|
309
|
+
undoContext: Identifier
|
|
310
|
+
viewport: Viewport
|
|
311
|
+
|
|
312
|
+
@with_config(ConfigDict(strict=True))
|
|
313
|
+
class DeleteNoteRequest(TypedDict):
|
|
314
|
+
clientId: Identifier
|
|
315
|
+
undoContext: Identifier
|
|
316
|
+
viewport: Viewport
|
|
317
|
+
|
|
318
|
+
@with_config(ConfigDict(strict=True))
|
|
319
|
+
class CopyNoteEndpointRequest(TypedDict):
|
|
320
|
+
clientId: Identifier
|
|
321
|
+
|
|
322
|
+
@with_config(ConfigDict(strict=True))
|
|
323
|
+
class PasteSiblingEndpointRequest(TypedDict):
|
|
324
|
+
search_query: Text | None
|
|
325
|
+
clientId: Identifier
|
|
326
|
+
undoContext: Identifier
|
|
327
|
+
viewport: Viewport
|
|
328
|
+
|
|
329
|
+
@with_config(ConfigDict(strict=True))
|
|
330
|
+
class PasteChildEndpointRequest(TypedDict):
|
|
331
|
+
search_query: Text | None
|
|
332
|
+
clientId: Identifier
|
|
333
|
+
undoContext: Identifier
|
|
334
|
+
viewport: Viewport
|
|
335
|
+
|