MetaList 0.4.2__tar.gz → 0.6.1__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.2/metalist.egg-info → metalist-0.6.1}/PKG-INFO +33 -8
- {metalist-0.4.2 → metalist-0.6.1}/README.md +32 -6
- {metalist-0.4.2 → metalist-0.6.1}/app/api/middleware/auth.py +5 -19
- metalist-0.6.1/app/api/note_requests.py +335 -0
- {metalist-0.4.2 → metalist-0.6.1}/app/api/routes/ai.py +50 -264
- {metalist-0.4.2 → metalist-0.6.1}/app/api/routes/auth.py +81 -53
- {metalist-0.4.2 → metalist-0.6.1}/app/api/routes/backups.py +3 -0
- {metalist-0.4.2 → metalist-0.6.1}/app/api/routes/files.py +2 -4
- {metalist-0.4.2 → metalist-0.6.1}/app/api/routes/notes.py +148 -74
- {metalist-0.4.2 → metalist-0.6.1}/app/api/routes/ontology.py +23 -4
- {metalist-0.4.2 → metalist-0.6.1}/app/api/routes/reminders.py +20 -10
- {metalist-0.4.2 → metalist-0.6.1}/app/api/routes/remote_images.py +4 -3
- {metalist-0.4.2 → metalist-0.6.1}/app/api/transactions.py +28 -5
- metalist-0.6.1/app/api/upload_limits.py +73 -0
- {metalist-0.4.2 → metalist-0.6.1}/app/db/file_schema.py +0 -20
- {metalist-0.4.2 → metalist-0.6.1}/app/db/file_session.py +8 -6
- {metalist-0.4.2 → metalist-0.6.1}/app/db/files_sql.py +24 -0
- metalist-0.6.1/app/db/live_recovery.py +263 -0
- {metalist-0.4.2 → metalist-0.6.1}/app/db/migrations.py +2 -0
- {metalist-0.4.2 → metalist-0.6.1}/app/db/notes_sql.py +6 -0
- metalist-0.6.1/app/db/retire_sounds.py +67 -0
- {metalist-0.4.2 → metalist-0.6.1}/app/db/session.py +79 -26
- {metalist-0.4.2 → metalist-0.6.1}/app/db/version.py +1 -1
- {metalist-0.4.2 → metalist-0.6.1}/app/encryption_audit.py +7 -2
- metalist-0.6.1/app/exception_boundaries.py +154 -0
- metalist-0.6.1/app/https_proxy.py +135 -0
- {metalist-0.4.2 → metalist-0.6.1}/app/main.py +52 -82
- {metalist-0.4.2 → metalist-0.6.1}/app/models/database.py +35 -8
- {metalist-0.4.2 → metalist-0.6.1}/app/models/linked_list.py +1 -1
- {metalist-0.4.2 → metalist-0.6.1}/app/models/list_operations.py +6 -7
- {metalist-0.4.2 → metalist-0.6.1}/app/models/note_crud.py +2 -28
- {metalist-0.4.2 → metalist-0.6.1}/app/models/utils.py +73 -93
- {metalist-0.4.2 → metalist-0.6.1}/app/security/request_boundary.py +21 -15
- metalist-0.6.1/app/security/sensitive_cache.py +78 -0
- {metalist-0.4.2 → metalist-0.6.1}/app/server_runtime.py +13 -10
- {metalist-0.4.2 → metalist-0.6.1}/app/services/agent/cloud_privacy.py +8 -0
- {metalist-0.4.2 → metalist-0.6.1}/app/services/agent/evidence_serialization.py +31 -31
- {metalist-0.4.2 → metalist-0.6.1}/app/services/agent/investigation.py +8 -9
- {metalist-0.4.2 → metalist-0.6.1}/app/services/ai_chat.py +26 -1
- metalist-0.6.1/app/services/ai_chat_stream.py +129 -0
- {metalist-0.4.2 → metalist-0.6.1}/app/services/auth_service.py +143 -361
- {metalist-0.4.2 → metalist-0.6.1}/app/services/backup_service.py +57 -44
- {metalist-0.4.2 → metalist-0.6.1}/app/services/bulk_operation.py +29 -18
- {metalist-0.4.2 → metalist-0.6.1}/app/services/client_state_service.py +35 -38
- {metalist-0.4.2 → metalist-0.6.1}/app/services/content_formatting.py +65 -468
- {metalist-0.4.2 → metalist-0.6.1}/app/services/embedded_references.py +14 -0
- {metalist-0.4.2 → metalist-0.6.1}/app/services/exception_capture.py +7 -1
- {metalist-0.4.2 → metalist-0.6.1}/app/services/file_storage.py +19 -7
- metalist-0.6.1/app/services/hierarchy.py +69 -0
- {metalist-0.4.2 → metalist-0.6.1}/app/services/html_export.py +21 -13
- {metalist-0.4.2 → metalist-0.6.1}/app/services/html_unformatting.py +17 -6
- metalist-0.6.1/app/services/input_errors.py +13 -0
- {metalist-0.4.2 → metalist-0.6.1}/app/services/latex_rendering.py +2 -2
- {metalist-0.4.2 → metalist-0.6.1}/app/services/link_titles.py +20 -10
- {metalist-0.4.2 → metalist-0.6.1}/app/services/maintenance_mode.py +18 -1
- {metalist-0.4.2 → metalist-0.6.1}/app/services/managed_ollama_runtime.py +5 -5
- {metalist-0.4.2 → metalist-0.6.1}/app/services/namespace_deletion_jobs.py +2 -1
- {metalist-0.4.2 → metalist-0.6.1}/app/services/namespace_deletion_worker.py +3 -3
- {metalist-0.4.2 → metalist-0.6.1}/app/services/namespace_rename_jobs.py +1 -0
- {metalist-0.4.2 → metalist-0.6.1}/app/services/namespace_rename_worker.py +1 -1
- {metalist-0.4.2 → metalist-0.6.1}/app/services/namespace_runtime_guard.py +1 -1
- {metalist-0.4.2 → metalist-0.6.1}/app/services/namespace_switcher.py +39 -18
- metalist-0.6.1/app/services/note_ordering.py +133 -0
- {metalist-0.4.2 → metalist-0.6.1}/app/services/note_store.py +227 -587
- metalist-0.6.1/app/services/password_note_fields.py +45 -0
- {metalist-0.4.2 → metalist-0.6.1}/app/services/reminders.py +63 -102
- {metalist-0.4.2 → metalist-0.6.1}/app/services/remote_image_proxy.py +7 -6
- metalist-0.6.1/app/services/request_recovery.py +96 -0
- metalist-0.6.1/app/services/resource_limits.py +46 -0
- {metalist-0.4.2 → metalist-0.6.1}/app/services/root_sorting.py +96 -41
- metalist-0.6.1/app/services/runtime_generation.py +39 -0
- {metalist-0.4.2 → metalist-0.6.1}/app/services/runtime_lock.py +10 -2
- {metalist-0.4.2 → metalist-0.6.1}/app/services/search_query.py +10 -9
- {metalist-0.4.2 → metalist-0.6.1}/app/services/self_update.py +1 -1
- {metalist-0.4.2 → metalist-0.6.1}/app/services/shell_session_service.py +118 -21
- {metalist-0.4.2 → metalist-0.6.1}/app/services/snapshot.py +194 -179
- {metalist-0.4.2 → metalist-0.6.1}/app/services/store.py +13 -21
- metalist-0.6.1/app/services/structured_note_renderers.py +478 -0
- metalist-0.6.1/app/services/sync.py +155 -0
- {metalist-0.4.2 → metalist-0.6.1}/app/services/tab_state.py +37 -36
- {metalist-0.4.2 → metalist-0.6.1}/app/services/tag_suggestions.py +147 -134
- {metalist-0.4.2 → metalist-0.6.1}/app/services/tag_term_matching.py +5 -5
- {metalist-0.4.2 → metalist-0.6.1}/app/services/tokens.py +26 -0
- {metalist-0.4.2 → metalist-0.6.1}/app/services/undo_state.py +72 -26
- metalist-0.6.1/app/services/view_cache.py +122 -0
- {metalist-0.4.2 → metalist-0.6.1}/app/services/windows_process_control.py +19 -0
- {metalist-0.4.2 → metalist-0.6.1}/app/startup_js_sanity.py +144 -5
- {metalist-0.4.2 → metalist-0.6.1}/app/startup_sanity.py +47 -1
- {metalist-0.4.2 → metalist-0.6.1}/app/startup_sanity_config.py +15 -0
- {metalist-0.4.2 → metalist-0.6.1}/app/static/config/command_palette_tags.json +0 -8
- metalist-0.6.1/app/static/css/floating-notes.css +44 -0
- {metalist-0.4.2 → metalist-0.6.1}/app/static/css/main.css +30 -122
- {metalist-0.4.2 → metalist-0.6.1}/app/static/js/modules/ai-chat/ai-agent-debug-view.js +8 -1
- {metalist-0.4.2 → metalist-0.6.1}/app/static/js/modules/ai-chat/ai-chat-api.js +3 -1
- {metalist-0.4.2 → metalist-0.6.1}/app/static/js/modules/ai-chat/ai-chat-panel-controller.js +36 -19
- {metalist-0.4.2 → metalist-0.6.1}/app/static/js/modules/ai-chat/bulk-proposal-ui.js +26 -18
- {metalist-0.4.2 → metalist-0.6.1}/app/static/js/modules/ai-chat/proposal-menu.js +3 -1
- {metalist-0.4.2 → metalist-0.6.1}/app/static/js/modules/api-client.js +29 -92
- {metalist-0.4.2 → metalist-0.6.1}/app/static/js/modules/api-failure-classification-service.js +9 -8
- metalist-0.6.1/app/static/js/modules/application-state.js +245 -0
- {metalist-0.4.2 → metalist-0.6.1}/app/static/js/modules/async-result.js +2 -1
- {metalist-0.4.2 → metalist-0.6.1}/app/static/js/modules/auth.js +21 -11
- {metalist-0.4.2 → metalist-0.6.1}/app/static/js/modules/client-state-api.js +3 -2
- {metalist-0.4.2 → metalist-0.6.1}/app/static/js/modules/client-state-migration.js +4 -2
- {metalist-0.4.2 → metalist-0.6.1}/app/static/js/modules/command-palette/activation-auth-policy.js +2 -0
- {metalist-0.4.2 → metalist-0.6.1}/app/static/js/modules/command-palette/command-palette-controller.js +34 -89
- {metalist-0.4.2 → metalist-0.6.1}/app/static/js/modules/command-palette/endpoint-registry.js +2 -18
- {metalist-0.4.2 → metalist-0.6.1}/app/static/js/modules/command-palette/preferences-store.js +29 -15
- {metalist-0.4.2 → metalist-0.6.1}/app/static/js/modules/command-palette/tag-config-loader.js +2 -1
- {metalist-0.4.2 → metalist-0.6.1}/app/static/js/modules/command-palette/usage-store.js +10 -4
- {metalist-0.4.2 → metalist-0.6.1}/app/static/js/modules/config.js +7 -12
- {metalist-0.4.2 → metalist-0.6.1}/app/static/js/modules/connectivity-monitor.js +13 -6
- {metalist-0.4.2 → metalist-0.6.1}/app/static/js/modules/context-menu/context-menu-registry.js +53 -1
- {metalist-0.4.2 → metalist-0.6.1}/app/static/js/modules/context-menu/context-menu-service.js +123 -50
- metalist-0.6.1/app/static/js/modules/editor-selection.js +118 -0
- {metalist-0.4.2 → metalist-0.6.1}/app/static/js/modules/editor-toolbar.js +30 -26
- {metalist-0.4.2 → metalist-0.6.1}/app/static/js/modules/error-overlay.js +6 -3
- metalist-0.6.1/app/static/js/modules/expected-errors.js +23 -0
- metalist-0.6.1/app/static/js/modules/maintenance.js +16 -0
- {metalist-0.4.2 → metalist-0.6.1}/app/static/js/modules/modals/agent-prompt-editor-modal.js +5 -0
- {metalist-0.4.2 → metalist-0.6.1}/app/static/js/modules/modals/ai-agent-settings-modal.js +9 -0
- {metalist-0.4.2 → metalist-0.6.1}/app/static/js/modules/modals/alphabetize-root-notes-modal.js +8 -6
- {metalist-0.4.2 → metalist-0.6.1}/app/static/js/modules/modals/backup-restore-modal.js +9 -4
- {metalist-0.4.2 → metalist-0.6.1}/app/static/js/modules/modals/backup-result-modal.js +9 -0
- {metalist-0.4.2 → metalist-0.6.1}/app/static/js/modules/modals/backup-retention-modal.js +8 -6
- {metalist-0.4.2 → metalist-0.6.1}/app/static/js/modules/modals/backup-settings-modal.js +15 -11
- {metalist-0.4.2 → metalist-0.6.1}/app/static/js/modules/modals/base-modal.js +7 -23
- {metalist-0.4.2 → metalist-0.6.1}/app/static/js/modules/modals/confirmation-modal.js +8 -6
- {metalist-0.4.2 → metalist-0.6.1}/app/static/js/modules/modals/delete-namespace-modal.js +5 -8
- {metalist-0.4.2 → metalist-0.6.1}/app/static/js/modules/modals/help-modal.js +3 -0
- {metalist-0.4.2 → metalist-0.6.1}/app/static/js/modules/modals/namespace-modals.js +25 -13
- {metalist-0.4.2 → metalist-0.6.1}/app/static/js/modules/modals/note-layout-appearance-modal.js +3 -0
- {metalist-0.4.2 → metalist-0.6.1}/app/static/js/modules/modals/ontology-modal.js +95 -70
- {metalist-0.4.2 → metalist-0.6.1}/app/static/js/modules/modals/password-modal.js +18 -12
- {metalist-0.4.2 → metalist-0.6.1}/app/static/js/modules/modals/prioritize-modal.js +12 -7
- {metalist-0.4.2 → metalist-0.6.1}/app/static/js/modules/modals/random-password-modal.js +7 -1
- {metalist-0.4.2 → metalist-0.6.1}/app/static/js/modules/modals/reminder-modal.js +24 -260
- {metalist-0.4.2 → metalist-0.6.1}/app/static/js/modules/modals/reset-updated-at-modal.js +8 -6
- {metalist-0.4.2 → metalist-0.6.1}/app/static/js/modules/modals/search-suggestion-statistics-modal.js +3 -0
- {metalist-0.4.2 → metalist-0.6.1}/app/static/js/modules/modals/session-timeout-modal.js +8 -2
- {metalist-0.4.2 → metalist-0.6.1}/app/static/js/modules/modals/version-info-modal.js +11 -8
- {metalist-0.4.2 → metalist-0.6.1}/app/static/js/modules/mode-manager/actions/history-actions.js +8 -1
- {metalist-0.4.2 → metalist-0.6.1}/app/static/js/modules/mode-manager/actions/note-actions.js +3 -5
- {metalist-0.4.2 → metalist-0.6.1}/app/static/js/modules/mode-manager/actions/selection-actions.js +1 -1
- {metalist-0.4.2 → metalist-0.6.1}/app/static/js/modules/mode-manager/actions/ui-actions.js +8 -128
- {metalist-0.4.2 → metalist-0.6.1}/app/static/js/modules/mode-manager/events/context-menu-events.js +15 -1
- {metalist-0.4.2 → metalist-0.6.1}/app/static/js/modules/mode-manager/events/inactivity-events.js +7 -2
- {metalist-0.4.2 → metalist-0.6.1}/app/static/js/modules/mode-manager/events/input-events.js +6 -3
- {metalist-0.4.2 → metalist-0.6.1}/app/static/js/modules/mode-manager/events/keyboard-events.js +77 -48
- {metalist-0.4.2 → metalist-0.6.1}/app/static/js/modules/mode-manager/events/mouse-events.js +91 -68
- {metalist-0.4.2 → metalist-0.6.1}/app/static/js/modules/mode-manager/mode-context.js +121 -87
- {metalist-0.4.2 → metalist-0.6.1}/app/static/js/modules/mode-manager/mode-logger.js +2 -2
- {metalist-0.4.2 → metalist-0.6.1}/app/static/js/modules/mode-manager/services/animated-scroll-service.js +10 -7
- {metalist-0.4.2 → metalist-0.6.1}/app/static/js/modules/mode-manager/services/backlinks-panel-service.js +15 -10
- {metalist-0.4.2 → metalist-0.6.1}/app/static/js/modules/mode-manager/services/command-gate-service.js +26 -34
- {metalist-0.4.2 → metalist-0.6.1}/app/static/js/modules/mode-manager/services/differential-view-service.js +12 -7
- {metalist-0.4.2 → metalist-0.6.1}/app/static/js/modules/mode-manager/services/embedded-image-service.js +2 -1
- {metalist-0.4.2 → metalist-0.6.1}/app/static/js/modules/mode-manager/services/file-image-preview-service.js +33 -21
- metalist-0.6.1/app/static/js/modules/mode-manager/services/floating-note-dom.js +74 -0
- metalist-0.6.1/app/static/js/modules/mode-manager/services/floating-note-layout.js +28 -0
- metalist-0.6.1/app/static/js/modules/mode-manager/services/floating-note-service.js +246 -0
- {metalist-0.4.2 → metalist-0.6.1}/app/static/js/modules/mode-manager/services/image-context-menu-action-service.js +11 -7
- {metalist-0.4.2 → metalist-0.6.1}/app/static/js/modules/mode-manager/services/image-file-insert-choice-modal-service.js +8 -5
- {metalist-0.4.2 → metalist-0.6.1}/app/static/js/modules/mode-manager/services/infinite-scroll-service.js +32 -50
- metalist-0.6.1/app/static/js/modules/mode-manager/services/link-title-prefetch-service.js +48 -0
- {metalist-0.4.2 → metalist-0.6.1}/app/static/js/modules/mode-manager/services/markdown-render-service.js +9 -6
- {metalist-0.4.2 → metalist-0.6.1}/app/static/js/modules/mode-manager/services/mermaid-render-service.js +16 -12
- {metalist-0.4.2 → metalist-0.6.1}/app/static/js/modules/mode-manager/services/note-click-target-service.js +12 -0
- {metalist-0.4.2 → metalist-0.6.1}/app/static/js/modules/mode-manager/services/note-clipboard-write-service.js +4 -0
- {metalist-0.4.2 → metalist-0.6.1}/app/static/js/modules/mode-manager/services/note-collapse-animation-service.js +2 -1
- {metalist-0.4.2 → metalist-0.6.1}/app/static/js/modules/mode-manager/services/note-fullscreen-service.js +14 -10
- {metalist-0.4.2 → metalist-0.6.1}/app/static/js/modules/mode-manager/services/note-reposition-animation-service.js +2 -1
- {metalist-0.4.2 → metalist-0.6.1}/app/static/js/modules/mode-manager/services/password-clipboard-service.js +13 -6
- {metalist-0.4.2 → metalist-0.6.1}/app/static/js/modules/mode-manager/services/polling-service.js +34 -26
- {metalist-0.4.2 → metalist-0.6.1}/app/static/js/modules/mode-manager/services/reference-source-navigation-service.js +18 -14
- {metalist-0.4.2 → metalist-0.6.1}/app/static/js/modules/mode-manager/services/remote-image-proxy-service.js +35 -23
- {metalist-0.4.2 → metalist-0.6.1}/app/static/js/modules/mode-manager/services/scroll-restoration-service.js +16 -12
- {metalist-0.4.2 → metalist-0.6.1}/app/static/js/modules/mode-manager/services/search-contexts-overlay-service.js +33 -18
- {metalist-0.4.2 → metalist-0.6.1}/app/static/js/modules/mode-manager/services/search-debounce-service.js +9 -6
- {metalist-0.4.2 → metalist-0.6.1}/app/static/js/modules/mode-manager/services/search-interaction-service.js +27 -26
- {metalist-0.4.2 → metalist-0.6.1}/app/static/js/modules/mode-manager/services/search-redaction-reveal-service.js +1 -1
- {metalist-0.4.2 → metalist-0.6.1}/app/static/js/modules/mode-manager/services/search-suggestion-windows-service.js +25 -9
- {metalist-0.4.2 → metalist-0.6.1}/app/static/js/modules/mode-manager/services/search-suggestions-service.js +49 -39
- {metalist-0.4.2 → metalist-0.6.1}/app/static/js/modules/mode-manager/services/selected-formatting-removal-service.js +68 -0
- {metalist-0.4.2 → metalist-0.6.1}/app/static/js/modules/mode-manager/services/tab-dom-cache-service.js +12 -7
- {metalist-0.4.2 → metalist-0.6.1}/app/static/js/modules/mode-manager/services/tab-state-service.js +38 -32
- {metalist-0.4.2 → metalist-0.6.1}/app/static/js/modules/mode-manager/services/tag-bar-service.js +35 -30
- metalist-0.6.1/app/static/js/modules/mode-manager/services/tag-input-selection-service.js +26 -0
- {metalist-0.4.2 → metalist-0.6.1}/app/static/js/modules/mode-manager/services/tag-suggestions-service.js +54 -43
- {metalist-0.4.2 → metalist-0.6.1}/app/static/js/modules/note-html-sanitizer.js +9 -5
- {metalist-0.4.2 → metalist-0.6.1}/app/static/js/modules/password-operation-response.js +5 -3
- {metalist-0.4.2 → metalist-0.6.1}/app/static/js/modules/password-strength.js +8 -5
- {metalist-0.4.2 → metalist-0.6.1}/app/static/js/modules/reminder-store.js +9 -9
- {metalist-0.4.2 → metalist-0.6.1}/app/static/js/modules/reminder-surface-service.js +18 -37
- {metalist-0.4.2 → metalist-0.6.1}/app/static/js/namespace-deleted.js +3 -2
- {metalist-0.4.2 → metalist-0.6.1}/app/static/js/namespace-renamed.js +3 -2
- metalist-0.6.1/app/static/js/vendor/dompurify-3.4.13.min.js +3 -0
- metalist-0.6.1/app/static/js/vendor/markdown-it-14.3.2.LICENSE.txt +22 -0
- metalist-0.6.1/app/static/js/vendor/markdown-it-14.3.2.min.js +3 -0
- metalist-0.6.1/app/static/js/vendor/mermaid-11.16.1.min.js +3587 -0
- {metalist-0.4.2 → metalist-0.6.1}/app/static/note-html-policy.json +2 -1
- {metalist-0.4.2 → metalist-0.6.1}/app/templates/base.html +1 -1
- {metalist-0.4.2 → metalist-0.6.1}/app/templates/maintenance.html +1 -25
- metalist-0.6.1/app/upload_limits.py +11 -0
- {metalist-0.4.2 → metalist-0.6.1}/app/usecases/collapse.py +1 -0
- {metalist-0.4.2 → metalist-0.6.1}/app/usecases/copy_note.py +21 -11
- {metalist-0.4.2 → metalist-0.6.1}/app/usecases/delete_subtree.py +1 -0
- {metalist-0.4.2 → metalist-0.6.1}/app/usecases/expand.py +2 -2
- {metalist-0.4.2 → metalist-0.6.1}/app/usecases/move.py +22 -50
- {metalist-0.4.2 → metalist-0.6.1}/app/usecases/paste_sibling.py +4 -7
- metalist-0.6.1/app/usecases/prefetch_link_titles.py +24 -0
- {metalist-0.4.2 → metalist-0.6.1}/app/usecases/resize_image.py +2 -2
- {metalist-0.4.2 → metalist-0.6.1}/app/usecases/toggle_reference_mode.py +2 -2
- {metalist-0.4.2 → metalist-0.6.1}/app/usecases/toggle_todo_done.py +2 -2
- {metalist-0.4.2 → metalist-0.6.1}/app/usecases/undo.py +2 -2
- {metalist-0.4.2 → metalist-0.6.1}/app/usecases/unformat_content.py +2 -2
- {metalist-0.4.2 → metalist-0.6.1}/app/usecases/update_content.py +14 -6
- {metalist-0.4.2 → metalist-0.6.1}/app/utils/encryption.py +2 -0
- {metalist-0.4.2 → metalist-0.6.1}/app/version.py +1 -1
- {metalist-0.4.2 → metalist-0.6.1}/convert-from-legacy.py +1 -1
- {metalist-0.4.2 → metalist-0.6.1}/main.py +11 -72
- {metalist-0.4.2 → metalist-0.6.1/metalist.egg-info}/PKG-INFO +33 -8
- {metalist-0.4.2 → metalist-0.6.1}/metalist.egg-info/SOURCES.txt +33 -16
- {metalist-0.4.2 → metalist-0.6.1}/metalist.egg-info/requires.txt +0 -1
- {metalist-0.4.2 → metalist-0.6.1}/pyproject.toml +9 -1
- metalist-0.4.2/app/api/routes/sounds.py +0 -190
- metalist-0.4.2/app/db/sounds_sql.py +0 -162
- metalist-0.4.2/app/services/base_service.py +0 -145
- metalist-0.4.2/app/services/dependencies.py +0 -72
- metalist-0.4.2/app/services/note_service.py +0 -290
- metalist-0.4.2/app/services/query_service.py +0 -280
- metalist-0.4.2/app/services/sound_storage.py +0 -754
- metalist-0.4.2/app/services/sync.py +0 -74
- metalist-0.4.2/app/services/transaction_manager.py +0 -159
- metalist-0.4.2/app/services/undo_service.py +0 -44
- metalist-0.4.2/app/services/view_cache.py +0 -71
- metalist-0.4.2/app/static/js/modules/editor-selection.js +0 -110
- metalist-0.4.2/app/static/js/modules/modals/sound-manager-modal.js +0 -270
- metalist-0.4.2/app/static/js/modules/sound-service.js +0 -380
- metalist-0.4.2/app/static/js/vendor/dompurify-3.4.12.min.js +0 -3
- metalist-0.4.2/app/static/js/vendor/markdown-it.min.js +0 -1
- metalist-0.4.2/app/static/js/vendor/mermaid-11.9.0.min.js +0 -2659
- {metalist-0.4.2 → metalist-0.6.1}/MANIFEST.in +0 -0
- {metalist-0.4.2 → metalist-0.6.1}/app/__init__.py +0 -0
- {metalist-0.4.2 → metalist-0.6.1}/app/api/__init__.py +0 -0
- {metalist-0.4.2 → metalist-0.6.1}/app/api/deps.py +0 -0
- {metalist-0.4.2 → metalist-0.6.1}/app/api/dev.py +0 -0
- {metalist-0.4.2 → metalist-0.6.1}/app/api/request_auth.py +0 -0
- {metalist-0.4.2 → metalist-0.6.1}/app/api/routes/test.py +0 -0
- {metalist-0.4.2 → metalist-0.6.1}/app/config.py +0 -0
- {metalist-0.4.2 → metalist-0.6.1}/app/data_directory.py +0 -0
- {metalist-0.4.2 → metalist-0.6.1}/app/db/__init__.py +0 -0
- {metalist-0.4.2 → metalist-0.6.1}/app/db/backup_settings_sql.py +0 -0
- {metalist-0.4.2 → metalist-0.6.1}/app/db/engine.py +0 -0
- {metalist-0.4.2 → metalist-0.6.1}/app/db/link_titles_sql.py +0 -0
- {metalist-0.4.2 → metalist-0.6.1}/app/db/ontology_rules_sql.py +0 -0
- {metalist-0.4.2 → metalist-0.6.1}/app/db/reminders_sql.py +0 -0
- {metalist-0.4.2 → metalist-0.6.1}/app/db/schema.py +0 -0
- {metalist-0.4.2 → metalist-0.6.1}/app/db/search_history_sql.py +0 -0
- {metalist-0.4.2 → metalist-0.6.1}/app/db/settings_sql.py +0 -0
- {metalist-0.4.2 → metalist-0.6.1}/app/db/tab_state_sql.py +0 -0
- {metalist-0.4.2 → metalist-0.6.1}/app/models/commands.py +0 -0
- {metalist-0.4.2 → metalist-0.6.1}/app/models/entities.py +0 -0
- {metalist-0.4.2 → metalist-0.6.1}/app/models/enums.py +0 -0
- {metalist-0.4.2 → metalist-0.6.1}/app/models/list_traversal.py +0 -0
- {metalist-0.4.2 → metalist-0.6.1}/app/presentation/__init__.py +0 -0
- {metalist-0.4.2 → metalist-0.6.1}/app/presentation/render/__init__.py +0 -0
- {metalist-0.4.2 → metalist-0.6.1}/app/presentation/render/note_renderer.py +0 -0
- {metalist-0.4.2 → metalist-0.6.1}/app/presentation/templates.py +0 -0
- {metalist-0.4.2 → metalist-0.6.1}/app/security/authenticated_logging.py +0 -0
- {metalist-0.4.2 → metalist-0.6.1}/app/security/encryption.py +0 -0
- {metalist-0.4.2 → metalist-0.6.1}/app/security/http_headers.py +0 -0
- {metalist-0.4.2 → metalist-0.6.1}/app/security/note_html.py +0 -0
- {metalist-0.4.2 → metalist-0.6.1}/app/security/sensitive_logging.py +0 -0
- {metalist-0.4.2 → metalist-0.6.1}/app/security/shell_execution.py +0 -0
- {metalist-0.4.2 → metalist-0.6.1}/app/security/validation_errors.py +0 -0
- {metalist-0.4.2 → metalist-0.6.1}/app/services/__init__.py +0 -0
- {metalist-0.4.2 → metalist-0.6.1}/app/services/agent/__init__.py +0 -0
- {metalist-0.4.2 → metalist-0.6.1}/app/services/agent/actions.py +0 -0
- {metalist-0.4.2 → metalist-0.6.1}/app/services/agent/context.py +0 -0
- {metalist-0.4.2 → metalist-0.6.1}/app/services/agent/inference.py +0 -0
- {metalist-0.4.2 → metalist-0.6.1}/app/services/agent/model_policy.py +0 -0
- {metalist-0.4.2 → metalist-0.6.1}/app/services/agent/ollama_inference.py +0 -0
- {metalist-0.4.2 → metalist-0.6.1}/app/services/agent/openai_cost_tracking.py +0 -0
- {metalist-0.4.2 → metalist-0.6.1}/app/services/agent/openai_inference.py +0 -0
- {metalist-0.4.2 → metalist-0.6.1}/app/services/agent/permissions.py +0 -0
- {metalist-0.4.2 → metalist-0.6.1}/app/services/agent/prompt_settings.py +0 -0
- {metalist-0.4.2 → metalist-0.6.1}/app/services/agent/prompts/__init__.py +0 -0
- {metalist-0.4.2 → metalist-0.6.1}/app/services/agent/prompts/final-response.md +0 -0
- {metalist-0.4.2 → metalist-0.6.1}/app/services/agent/prompts/system.md +0 -0
- {metalist-0.4.2 → metalist-0.6.1}/app/services/agent/prompts/tool-result.md +0 -0
- {metalist-0.4.2 → metalist-0.6.1}/app/services/agent/retrieval_settings.py +0 -0
- {metalist-0.4.2 → metalist-0.6.1}/app/services/agent/runtime.py +0 -0
- {metalist-0.4.2 → metalist-0.6.1}/app/services/agent/scope.py +0 -0
- {metalist-0.4.2 → metalist-0.6.1}/app/services/agent/skill_settings.py +0 -0
- {metalist-0.4.2 → metalist-0.6.1}/app/services/agent/skills/__init__.py +0 -0
- {metalist-0.4.2 → metalist-0.6.1}/app/services/agent/skills/scoped-investigation.md +0 -0
- {metalist-0.4.2 → metalist-0.6.1}/app/services/agent/tagging.py +0 -0
- {metalist-0.4.2 → metalist-0.6.1}/app/services/agent/tagging_run.py +0 -0
- {metalist-0.4.2 → metalist-0.6.1}/app/services/agent/token_estimation.py +0 -0
- {metalist-0.4.2 → metalist-0.6.1}/app/services/agent/tools.py +0 -0
- {metalist-0.4.2 → metalist-0.6.1}/app/services/agent/trace.py +0 -0
- {metalist-0.4.2 → metalist-0.6.1}/app/services/ai_chat_rendering.py +0 -0
- {metalist-0.4.2 → metalist-0.6.1}/app/services/auth.py +0 -0
- {metalist-0.4.2 → metalist-0.6.1}/app/services/auth_cache_state.py +0 -0
- {metalist-0.4.2 → metalist-0.6.1}/app/services/backlink_index.py +0 -0
- {metalist-0.4.2 → metalist-0.6.1}/app/services/backlinks.py +0 -0
- {metalist-0.4.2 → metalist-0.6.1}/app/services/backup_settings_service.py +0 -0
- {metalist-0.4.2 → metalist-0.6.1}/app/services/content_cache.py +0 -0
- {metalist-0.4.2 → metalist-0.6.1}/app/services/diagnostics.py +0 -0
- {metalist-0.4.2 → metalist-0.6.1}/app/services/encryption.py +0 -0
- {metalist-0.4.2 → metalist-0.6.1}/app/services/file_registry.py +0 -0
- {metalist-0.4.2 → metalist-0.6.1}/app/services/footnote_layout.py +0 -0
- {metalist-0.4.2 → metalist-0.6.1}/app/services/footnote_rendering.py +0 -0
- {metalist-0.4.2 → metalist-0.6.1}/app/services/hydration_state.py +0 -0
- {metalist-0.4.2 → metalist-0.6.1}/app/services/image_size_formatting.py +0 -0
- {metalist-0.4.2 → metalist-0.6.1}/app/services/inline_image_occurrences.py +0 -0
- {metalist-0.4.2 → metalist-0.6.1}/app/services/integrity.py +0 -0
- {metalist-0.4.2 → metalist-0.6.1}/app/services/login_rate_limit.py +0 -0
- {metalist-0.4.2 → metalist-0.6.1}/app/services/markdown_rendering.py +0 -0
- {metalist-0.4.2 → metalist-0.6.1}/app/services/note_fullscreen.py +0 -0
- {metalist-0.4.2 → metalist-0.6.1}/app/services/note_image_tags.py +0 -0
- {metalist-0.4.2 → metalist-0.6.1}/app/services/ollama_provider.py +0 -0
- {metalist-0.4.2 → metalist-0.6.1}/app/services/ontology_rules_store.py +0 -0
- {metalist-0.4.2 → metalist-0.6.1}/app/services/openai_credentials.py +0 -0
- {metalist-0.4.2 → metalist-0.6.1}/app/services/reference_presentation.py +0 -0
- {metalist-0.4.2 → metalist-0.6.1}/app/services/runtime_hardening.py +0 -0
- {metalist-0.4.2 → metalist-0.6.1}/app/services/search_history.py +0 -0
- {metalist-0.4.2 → metalist-0.6.1}/app/services/search_history_storage.py +0 -0
- {metalist-0.4.2 → metalist-0.6.1}/app/services/search_index.py +0 -0
- {metalist-0.4.2 → metalist-0.6.1}/app/services/search_text.py +0 -0
- {metalist-0.4.2 → metalist-0.6.1}/app/services/selected_text_tag.py +0 -0
- {metalist-0.4.2 → metalist-0.6.1}/app/services/session_timeout_service.py +0 -0
- {metalist-0.4.2 → metalist-0.6.1}/app/services/sync_state.py +0 -0
- {metalist-0.4.2 → metalist-0.6.1}/app/services/tag_case.py +0 -0
- {metalist-0.4.2 → metalist-0.6.1}/app/services/tag_ontology.py +0 -0
- {metalist-0.4.2 → metalist-0.6.1}/app/services/tag_rename.py +0 -0
- {metalist-0.4.2 → metalist-0.6.1}/app/services/test_reset.py +0 -0
- {metalist-0.4.2 → metalist-0.6.1}/app/services/update_backups.py +0 -0
- {metalist-0.4.2 → metalist-0.6.1}/app/services/view_diff.py +0 -0
- {metalist-0.4.2 → metalist-0.6.1}/app/services/view_state.py +0 -0
- {metalist-0.4.2 → metalist-0.6.1}/app/startup_environment.py +0 -0
- {metalist-0.4.2 → metalist-0.6.1}/app/static/css/forms.css +0 -0
- {metalist-0.4.2 → metalist-0.6.1}/app/static/img/favicon.ico +0 -0
- {metalist-0.4.2 → metalist-0.6.1}/app/static/js/locked.js +0 -0
- {metalist-0.4.2 → metalist-0.6.1}/app/static/js/main.js +0 -0
- {metalist-0.4.2 → metalist-0.6.1}/app/static/js/modules/activity-tracker.js +0 -0
- {metalist-0.4.2 → metalist-0.6.1}/app/static/js/modules/ai-chat/agent-prompt-service.js +0 -0
- {metalist-0.4.2 → metalist-0.6.1}/app/static/js/modules/ai-chat/agent-retrieval-settings.js +0 -0
- {metalist-0.4.2 → metalist-0.6.1}/app/static/js/modules/ai-chat/ai-chat-panel-service.js +0 -0
- {metalist-0.4.2 → metalist-0.6.1}/app/static/js/modules/ai-chat/ai-thinking-level-service.js +0 -0
- {metalist-0.4.2 → metalist-0.6.1}/app/static/js/modules/ai-chat/bulk-elapsed-clock.js +0 -0
- {metalist-0.4.2 → metalist-0.6.1}/app/static/js/modules/ai-chat/cloud-privacy-policy.js +0 -0
- {metalist-0.4.2 → metalist-0.6.1}/app/static/js/modules/command-palette/backup-command-availability.js +0 -0
- {metalist-0.4.2 → metalist-0.6.1}/app/static/js/modules/command-palette/click-activation-service.js +0 -0
- {metalist-0.4.2 → metalist-0.6.1}/app/static/js/modules/command-palette/note-layout-preferences.js +0 -0
- {metalist-0.4.2 → metalist-0.6.1}/app/static/js/modules/context-menu/context-menu-target-service.js +0 -0
- {metalist-0.4.2 → metalist-0.6.1}/app/static/js/modules/context-menu/input-caret-service.js +0 -0
- {metalist-0.4.2 → metalist-0.6.1}/app/static/js/modules/disconnect-editing-state-service.js +0 -0
- {metalist-0.4.2 → metalist-0.6.1}/app/static/js/modules/dom-utils-fixed.js +0 -0
- {metalist-0.4.2 → metalist-0.6.1}/app/static/js/modules/dom-utils.js +0 -0
- {metalist-0.4.2 → metalist-0.6.1}/app/static/js/modules/editor-commands.js +0 -0
- {metalist-0.4.2 → metalist-0.6.1}/app/static/js/modules/elapsed-time.js +0 -0
- {metalist-0.4.2 → metalist-0.6.1}/app/static/js/modules/error-handler.js +0 -0
- {metalist-0.4.2 → metalist-0.6.1}/app/static/js/modules/location-flags.js +0 -0
- {metalist-0.4.2 → metalist-0.6.1}/app/static/js/modules/login-namespace-picker.js +0 -0
- {metalist-0.4.2 → metalist-0.6.1}/app/static/js/modules/modals/delete-namespace-validation.js +0 -0
- {metalist-0.4.2 → metalist-0.6.1}/app/static/js/modules/modals/namespace-loading-page.js +0 -0
- {metalist-0.4.2 → metalist-0.6.1}/app/static/js/modules/modals/namespace-ports-profile.js +0 -0
- {metalist-0.4.2 → metalist-0.6.1}/app/static/js/modules/modals/namespace-rename-validation.js +0 -0
- {metalist-0.4.2 → metalist-0.6.1}/app/static/js/modules/mode-manager/actions/content-actions.js +0 -0
- {metalist-0.4.2 → metalist-0.6.1}/app/static/js/modules/mode-manager/actions/search-actions.js +0 -0
- {metalist-0.4.2 → metalist-0.6.1}/app/static/js/modules/mode-manager/events/focus-events.js +0 -0
- {metalist-0.4.2 → metalist-0.6.1}/app/static/js/modules/mode-manager/events/search-events.js +0 -0
- {metalist-0.4.2 → metalist-0.6.1}/app/static/js/modules/mode-manager/mode-manager-controller.js +0 -0
- {metalist-0.4.2 → metalist-0.6.1}/app/static/js/modules/mode-manager/services/add-style-service.js +0 -0
- {metalist-0.4.2 → metalist-0.6.1}/app/static/js/modules/mode-manager/services/backlinks-navigation-service.js +0 -0
- {metalist-0.4.2 → metalist-0.6.1}/app/static/js/modules/mode-manager/services/clipboard-shortcut-policy-service.js +0 -0
- {metalist-0.4.2 → metalist-0.6.1}/app/static/js/modules/mode-manager/services/collapse-affordance-service.js +0 -0
- {metalist-0.4.2 → metalist-0.6.1}/app/static/js/modules/mode-manager/services/collapse-editing-policy-service.js +0 -0
- {metalist-0.4.2 → metalist-0.6.1}/app/static/js/modules/mode-manager/services/context-menu-target-service.js +0 -0
- {metalist-0.4.2 → metalist-0.6.1}/app/static/js/modules/mode-manager/services/deselect-selection-state-service.js +0 -0
- {metalist-0.4.2 → metalist-0.6.1}/app/static/js/modules/mode-manager/services/edit-session-collapse-policy-service.js +0 -0
- {metalist-0.4.2 → metalist-0.6.1}/app/static/js/modules/mode-manager/services/edit-session-collapse-service.js +0 -0
- {metalist-0.4.2 → metalist-0.6.1}/app/static/js/modules/mode-manager/services/file-drop-policy-service.js +0 -0
- {metalist-0.4.2 → metalist-0.6.1}/app/static/js/modules/mode-manager/services/file-reference-service.js +0 -0
- {metalist-0.4.2 → metalist-0.6.1}/app/static/js/modules/mode-manager/services/filtered-refresh-selection-service.js +0 -0
- {metalist-0.4.2 → metalist-0.6.1}/app/static/js/modules/mode-manager/services/footnote-navigation-service.js +0 -0
- {metalist-0.4.2 → metalist-0.6.1}/app/static/js/modules/mode-manager/services/history-selection-policy-service.js +0 -0
- {metalist-0.4.2 → metalist-0.6.1}/app/static/js/modules/mode-manager/services/history-shortcut-policy-service.js +0 -0
- {metalist-0.4.2 → metalist-0.6.1}/app/static/js/modules/mode-manager/services/html-paste-sanitizer-service.js +0 -0
- {metalist-0.4.2 → metalist-0.6.1}/app/static/js/modules/mode-manager/services/link-context-menu-action-service.js +0 -0
- {metalist-0.4.2 → metalist-0.6.1}/app/static/js/modules/mode-manager/services/note-context-menu-action-service.js +0 -0
- {metalist-0.4.2 → metalist-0.6.1}/app/static/js/modules/mode-manager/services/note-delete-shortcut-policy-service.js +0 -0
- {metalist-0.4.2 → metalist-0.6.1}/app/static/js/modules/mode-manager/services/note-drag-service.js +0 -0
- {metalist-0.4.2 → metalist-0.6.1}/app/static/js/modules/mode-manager/services/note-split-service.js +0 -0
- {metalist-0.4.2 → metalist-0.6.1}/app/static/js/modules/mode-manager/services/note-timestamp-hover-service.js +0 -0
- {metalist-0.4.2 → metalist-0.6.1}/app/static/js/modules/mode-manager/services/remove-formatting-service.js +0 -0
- {metalist-0.4.2 → metalist-0.6.1}/app/static/js/modules/mode-manager/services/root-date-separator-service.js +0 -0
- {metalist-0.4.2 → metalist-0.6.1}/app/static/js/modules/mode-manager/services/root-sort-indicator-service.js +0 -0
- {metalist-0.4.2 → metalist-0.6.1}/app/static/js/modules/mode-manager/services/root-sort-service.js +0 -0
- {metalist-0.4.2 → metalist-0.6.1}/app/static/js/modules/mode-manager/services/scroll-anchor-service.js +0 -0
- {metalist-0.4.2 → metalist-0.6.1}/app/static/js/modules/mode-manager/services/scroll-to-top-service.js +0 -0
- {metalist-0.4.2 → metalist-0.6.1}/app/static/js/modules/mode-manager/services/search-input-service.js +0 -0
- {metalist-0.4.2 → metalist-0.6.1}/app/static/js/modules/mode-manager/services/search-suggestion-statistics-service.js +0 -0
- {metalist-0.4.2 → metalist-0.6.1}/app/static/js/modules/mode-manager/services/search-suggestion-window-labels-service.js +0 -0
- {metalist-0.4.2 → metalist-0.6.1}/app/static/js/modules/mode-manager/services/search-syntax-service.js +0 -0
- {metalist-0.4.2 → metalist-0.6.1}/app/static/js/modules/mode-manager/services/selected-text-tag-service.js +0 -0
- {metalist-0.4.2 → metalist-0.6.1}/app/static/js/modules/mode-manager/services/shell-output-service.js +0 -0
- {metalist-0.4.2 → metalist-0.6.1}/app/static/js/modules/mode-manager/services/tab-drag-service.js +0 -0
- {metalist-0.4.2 → metalist-0.6.1}/app/static/js/modules/mode-manager/services/tab-duplication-service.js +0 -0
- {metalist-0.4.2 → metalist-0.6.1}/app/static/js/modules/mode-manager/services/tag-proposal-service.js +0 -0
- {metalist-0.4.2 → metalist-0.6.1}/app/static/js/modules/mode-manager/services/tag-syntax-service.js +0 -0
- {metalist-0.4.2 → metalist-0.6.1}/app/static/js/modules/mode-manager/services/todo-toggle-editing-service.js +0 -0
- {metalist-0.4.2 → metalist-0.6.1}/app/static/js/modules/mode-manager/services/untagged-view-indicator-service.js +0 -0
- {metalist-0.4.2 → metalist-0.6.1}/app/static/js/modules/mode-manager/services/view-mode-search-shortcut-service.js +0 -0
- {metalist-0.4.2 → metalist-0.6.1}/app/static/js/modules/password-generator.js +0 -0
- {metalist-0.4.2 → metalist-0.6.1}/app/static/js/modules/password-policy.js +0 -0
- {metalist-0.4.2 → metalist-0.6.1}/app/static/js/modules/selection-markers.js +0 -0
- {metalist-0.4.2 → metalist-0.6.1}/app/static/js/modules/session-auth.js +0 -0
- {metalist-0.4.2 → metalist-0.6.1}/app/static/js/modules/tag-token.js +0 -0
- {metalist-0.4.2 → metalist-0.6.1}/app/static/js/modules/uuid.js +0 -0
- /metalist-0.4.2/app/static/js/vendor/dompurify-3.4.12.LICENSE.txt → /metalist-0.6.1/app/static/js/vendor/dompurify-3.4.13.LICENSE.txt +0 -0
- /metalist-0.4.2/app/static/js/vendor/mermaid-11.9.0.LICENSE.txt → /metalist-0.6.1/app/static/js/vendor/mermaid-11.16.1.LICENSE.txt +0 -0
- {metalist-0.4.2 → metalist-0.6.1}/app/static/js/vendor/zxcvbn-4.4.2.LICENSE.txt +0 -0
- {metalist-0.4.2 → metalist-0.6.1}/app/static/js/vendor/zxcvbn-4.4.2.js +0 -0
- {metalist-0.4.2 → metalist-0.6.1}/app/static/video/login-startup.mp4 +0 -0
- {metalist-0.4.2 → metalist-0.6.1}/app/templates/index.html +0 -0
- {metalist-0.4.2 → metalist-0.6.1}/app/templates/locked.html +0 -0
- {metalist-0.4.2 → metalist-0.6.1}/app/templates/namespace_deleted.html +0 -0
- {metalist-0.4.2 → metalist-0.6.1}/app/templates/namespace_renamed.html +0 -0
- {metalist-0.4.2 → metalist-0.6.1}/app/templates/notes_list.html +0 -0
- {metalist-0.4.2 → metalist-0.6.1}/app/usecases/__init__.py +0 -0
- {metalist-0.4.2 → metalist-0.6.1}/app/usecases/add_selected_text_tag.py +0 -0
- {metalist-0.4.2 → metalist-0.6.1}/app/usecases/alphabetize_root_notes.py +0 -0
- {metalist-0.4.2 → metalist-0.6.1}/app/usecases/base.py +0 -0
- {metalist-0.4.2 → metalist-0.6.1}/app/usecases/bulk_tag_proposals.py +0 -0
- {metalist-0.4.2 → metalist-0.6.1}/app/usecases/create_child.py +0 -0
- {metalist-0.4.2 → metalist-0.6.1}/app/usecases/create_note.py +0 -0
- {metalist-0.4.2 → metalist-0.6.1}/app/usecases/create_sibling.py +0 -0
- {metalist-0.4.2 → metalist-0.6.1}/app/usecases/delete_tag.py +0 -0
- {metalist-0.4.2 → metalist-0.6.1}/app/usecases/indent.py +0 -0
- {metalist-0.4.2 → metalist-0.6.1}/app/usecases/lock.py +0 -0
- {metalist-0.4.2 → metalist-0.6.1}/app/usecases/move_to_top.py +0 -0
- {metalist-0.4.2 → metalist-0.6.1}/app/usecases/outdent.py +0 -0
- {metalist-0.4.2 → metalist-0.6.1}/app/usecases/paste_child.py +0 -0
- {metalist-0.4.2 → metalist-0.6.1}/app/usecases/prioritize.py +0 -0
- {metalist-0.4.2 → metalist-0.6.1}/app/usecases/redo.py +0 -0
- {metalist-0.4.2 → metalist-0.6.1}/app/usecases/rename_tag.py +0 -0
- {metalist-0.4.2 → metalist-0.6.1}/app/usecases/reset_updated_at.py +0 -0
- {metalist-0.4.2 → metalist-0.6.1}/app/usecases/run_shell.py +0 -0
- {metalist-0.4.2 → metalist-0.6.1}/app/usecases/search_comment_autofill.py +0 -0
- {metalist-0.4.2 → metalist-0.6.1}/app/usecases/search_context_tags.py +0 -0
- {metalist-0.4.2 → metalist-0.6.1}/app/usecases/set_collapse_bulk.py +0 -0
- {metalist-0.4.2 → metalist-0.6.1}/app/usecases/set_collapse_in_context.py +0 -0
- {metalist-0.4.2 → metalist-0.6.1}/app/usecases/split_note.py +0 -0
- {metalist-0.4.2 → metalist-0.6.1}/app/usecases/tag_proposals.py +0 -0
- {metalist-0.4.2 → metalist-0.6.1}/app/usecases/view.py +0 -0
- {metalist-0.4.2 → metalist-0.6.1}/app/utils/__init__.py +0 -0
- {metalist-0.4.2 → metalist-0.6.1}/app/utils/text_utils.py +0 -0
- {metalist-0.4.2 → metalist-0.6.1}/metalist.egg-info/dependency_links.txt +0 -0
- {metalist-0.4.2 → metalist-0.6.1}/metalist.egg-info/entry_points.txt +0 -0
- {metalist-0.4.2 → metalist-0.6.1}/metalist.egg-info/top_level.txt +0 -0
- {metalist-0.4.2 → metalist-0.6.1}/scripts/generate-lan-cert.sh +0 -0
- {metalist-0.4.2 → metalist-0.6.1}/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.1
|
|
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,24 @@ 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.1
|
|
52
|
+
|
|
53
|
+
- Removed the unused performance overlay, including its menu option and background state updates, fixing a fatal redundant-state error during note rearranging. Obsolete overlay preferences and command usage are discarded automatically.
|
|
54
|
+
|
|
55
|
+
## Changes in 0.6.0
|
|
56
|
+
|
|
57
|
+
- 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.
|
|
58
|
+
- Double-click selects complete tags, including punctuation and prefixes, in search and tag bars.
|
|
59
|
+
- 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.
|
|
60
|
+
- Context menus have icons throughout. Full-screen notes have compact spacing, and both read-only views keep steady borders on hover.
|
|
61
|
+
- Fixed Version Info loading and state-transition errors during editing, focus changes, tab switching, and duplication.
|
|
62
|
+
|
|
63
|
+
## Changes in 0.5.0
|
|
64
|
+
|
|
65
|
+
- 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).
|
|
66
|
+
- 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.
|
|
67
|
+
- 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).
|
|
68
|
+
|
|
52
69
|
## Technology Stack
|
|
53
70
|
|
|
54
71
|
### Backend
|
|
@@ -68,7 +85,7 @@ A minimalist single-user note-taking app focused on server-side rendering (SSR),
|
|
|
68
85
|
## Architecture (High Level)
|
|
69
86
|
- Server renders the base page via Mako templates.
|
|
70
87
|
- The browser client drives interaction via `/api2` JSON endpoints.
|
|
71
|
-
-
|
|
88
|
+
- 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
89
|
|
|
73
90
|
## Security Boundary
|
|
74
91
|
|
|
@@ -102,22 +119,25 @@ After the first installation, update and restart MetaList with one cross-platfor
|
|
|
102
119
|
```bash
|
|
103
120
|
metalist update
|
|
104
121
|
```
|
|
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
|
|
122
|
+
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
123
|
|
|
107
124
|
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
125
|
|
|
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.
|
|
126
|
+
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
127
|
|
|
111
128
|
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
129
|
|
|
113
130
|
```bash
|
|
114
131
|
python3 -m venv .venv
|
|
115
132
|
source .venv/bin/activate
|
|
116
|
-
|
|
133
|
+
python -m pip install --require-hashes -r requirements/ci.txt
|
|
134
|
+
python -m pip install --no-deps --no-build-isolation -e ".[dev]"
|
|
117
135
|
|
|
118
136
|
npm install
|
|
119
137
|
```
|
|
120
138
|
|
|
139
|
+
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.
|
|
140
|
+
|
|
121
141
|
### Run
|
|
122
142
|
|
|
123
143
|
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.
|
|
@@ -247,9 +267,9 @@ scheme/client metadata is accepted only from `METALIST_FORWARDED_ALLOW_IPS`.
|
|
|
247
267
|
Do not widen that list beyond the actual proxy addresses.
|
|
248
268
|
|
|
249
269
|
### Legacy Import
|
|
250
|
-
`convert-from-legacy.py` replaces the SQLite database referenced by `app.config.DATABASE_URL`, clears its files
|
|
270
|
+
`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.
|
|
251
271
|
|
|
252
|
-
This is destructive. It deletes the existing notes DB and related files
|
|
272
|
+
This is destructive. It deletes the existing notes DB and related files DB before rebuilding the namespace.
|
|
253
273
|
|
|
254
274
|
Example usage:
|
|
255
275
|
```bash
|
|
@@ -312,3 +332,8 @@ Render Mermaid diagrams to PNGs:
|
|
|
312
332
|
```bash
|
|
313
333
|
npm run render-diagrams
|
|
314
334
|
```
|
|
335
|
+
|
|
336
|
+
|
|
337
|
+
## Maintenance and recovery
|
|
338
|
+
|
|
339
|
+
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,24 @@ 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.1
|
|
16
|
+
|
|
17
|
+
- Removed the unused performance overlay, including its menu option and background state updates, fixing a fatal redundant-state error during note rearranging. Obsolete overlay preferences and command usage are discarded automatically.
|
|
18
|
+
|
|
19
|
+
## Changes in 0.6.0
|
|
20
|
+
|
|
21
|
+
- 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.
|
|
22
|
+
- Double-click selects complete tags, including punctuation and prefixes, in search and tag bars.
|
|
23
|
+
- 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.
|
|
24
|
+
- Context menus have icons throughout. Full-screen notes have compact spacing, and both read-only views keep steady borders on hover.
|
|
25
|
+
- Fixed Version Info loading and state-transition errors during editing, focus changes, tab switching, and duplication.
|
|
26
|
+
|
|
27
|
+
## Changes in 0.5.0
|
|
28
|
+
|
|
29
|
+
- 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).
|
|
30
|
+
- 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.
|
|
31
|
+
- 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).
|
|
32
|
+
|
|
15
33
|
## Technology Stack
|
|
16
34
|
|
|
17
35
|
### Backend
|
|
@@ -31,7 +49,7 @@ A minimalist single-user note-taking app focused on server-side rendering (SSR),
|
|
|
31
49
|
## Architecture (High Level)
|
|
32
50
|
- Server renders the base page via Mako templates.
|
|
33
51
|
- The browser client drives interaction via `/api2` JSON endpoints.
|
|
34
|
-
-
|
|
52
|
+
- 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
53
|
|
|
36
54
|
## Security Boundary
|
|
37
55
|
|
|
@@ -65,22 +83,25 @@ After the first installation, update and restart MetaList with one cross-platfor
|
|
|
65
83
|
```bash
|
|
66
84
|
metalist update
|
|
67
85
|
```
|
|
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
|
|
86
|
+
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
87
|
|
|
70
88
|
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
89
|
|
|
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.
|
|
90
|
+
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
91
|
|
|
74
92
|
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
93
|
|
|
76
94
|
```bash
|
|
77
95
|
python3 -m venv .venv
|
|
78
96
|
source .venv/bin/activate
|
|
79
|
-
|
|
97
|
+
python -m pip install --require-hashes -r requirements/ci.txt
|
|
98
|
+
python -m pip install --no-deps --no-build-isolation -e ".[dev]"
|
|
80
99
|
|
|
81
100
|
npm install
|
|
82
101
|
```
|
|
83
102
|
|
|
103
|
+
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.
|
|
104
|
+
|
|
84
105
|
### Run
|
|
85
106
|
|
|
86
107
|
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.
|
|
@@ -210,9 +231,9 @@ scheme/client metadata is accepted only from `METALIST_FORWARDED_ALLOW_IPS`.
|
|
|
210
231
|
Do not widen that list beyond the actual proxy addresses.
|
|
211
232
|
|
|
212
233
|
### Legacy Import
|
|
213
|
-
`convert-from-legacy.py` replaces the SQLite database referenced by `app.config.DATABASE_URL`, clears its files
|
|
234
|
+
`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.
|
|
214
235
|
|
|
215
|
-
This is destructive. It deletes the existing notes DB and related files
|
|
236
|
+
This is destructive. It deletes the existing notes DB and related files DB before rebuilding the namespace.
|
|
216
237
|
|
|
217
238
|
Example usage:
|
|
218
239
|
```bash
|
|
@@ -275,3 +296,8 @@ Render Mermaid diagrams to PNGs:
|
|
|
275
296
|
```bash
|
|
276
297
|
npm run render-diagrams
|
|
277
298
|
```
|
|
299
|
+
|
|
300
|
+
|
|
301
|
+
## Maintenance and recovery
|
|
302
|
+
|
|
303
|
+
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
|
+
|