From fff5e51ca0783c7acbfc43d498b2a0e992c0d8eb Mon Sep 17 00:00:00 2001 From: M4n5ter Date: Mon, 9 Nov 2026 00:02:08 +0800 Subject: [PATCH] chore(nsh): synchronize third-party/nsh to upstream 323a8663 Synchronize third-party/nsh from v0.4.0 to longbridge/nsh revision 323a8663f6fdb63340c634a50da9bbb820037b69 while keeping GPUI retired and retaining nsh-terminal and icy_sixel with minimal local delta: - Drop superseded fork patches (input_tokens, RetireListCell, ProjectRoot, CancelTouch, HintWatchToken, Renderer/platform.isTerminal, Environment::terminal_keyboard, TextEngine::measure_canvas, OverlayProp::FocusReturn, LayoutTree::lifetime, and the legacy software TUI compositor) in favor of upstream Idiom::Terminal, Environment::ctrl_for_command, Core::sync_kept, ProjectStates, and cell-idiom nsh-platform-tui. - Fix sibling component listener fan-out and nested emits in nsh-core, deferred length signal separation and 0-splice retained cell item updates in nsh-js, pending startup focus_requests retention and active-scope accessibility_snapshot in nsh-platform-tui, and PointerEvents::None editor sink focus/Tab handling in nsh-platform-windows and nsh-platform-macos. - Migrate Maka workbench, terminal-shell, desktop-shell, plugins, skills, CI suites, ASF source release audit, provenance metadata, dependencies, and third-party notices to the synchronized NSH baseline. Generated-by: Antigravity --- .gitattributes | 6 +- Cargo.lock | 787 +- Cargo.toml | 9 +- DESIGN.md | 2 +- LICENSE | 10 +- docs/code-origin-audit.md | 15 +- plugins/agent/composer/ui/Composer.tsx | 52 +- .../agent/composer/ui/ComposerCompletion.tsx | 10 +- plugins/agent/composer/ui/composerPaste.ts | 7 +- .../agent/conversations/ui/Conversation.tsx | 24 +- .../agent/conversations/ui/SessionSurface.tsx | 16 +- products/maka/cli/DEPENDENCIES.rust.tsv | 73 +- products/maka/cli/THIRD_PARTY_NOTICES.txt | 3887 +-- products/maka/cli/notices.json | 75 +- products/maka/desktop-shell/src/direct2d.rs | 10 +- products/maka/terminal-shell/src/entry.rs | 5 +- products/maka/terminal-shell/src/terminal.rs | 84 +- .../terminal-shell/src/terminal/output.rs | 13 +- .../src/terminal/pixels/session.rs | 6 +- .../maka/terminal-shell/src/terminal/ui.rs | 450 +- .../tests/fixtures/components.tsx | 4 +- .../tests/real_host/attachments.rs | 6 +- .../tests/real_host/components.rs | 7 +- .../real_host/configuration_management.rs | 2 +- .../tests/real_host/external_agents.rs | 7 +- .../tests/real_host/keyboard.rs | 30 +- .../terminal-shell/tests/real_host/mod.rs | 49 +- .../terminal-shell/tests/real_host/support.rs | 52 +- .../tests/real_host/ui_plugins.rs | 30 +- products/maka/workbench/Cargo.toml | 2 + products/maka/workbench/app/App.tsx | 8 +- .../workbench/app/CatalogModelAssociation.tsx | 4 +- products/maka/workbench/app/Checklist.tsx | 2 +- .../maka/workbench/app/ChoiceIndicator.tsx | 2 +- products/maka/workbench/app/CompactDialog.tsx | 2 +- .../maka/workbench/app/CompactionDivider.tsx | 2 +- .../maka/workbench/app/ComposerDetails.tsx | 18 +- products/maka/workbench/app/ComposerEditor.ts | 36 +- .../app/ComputerPermissionSetupEntry.tsx | 5 +- .../maka/workbench/app/ConnectionForm.tsx | 13 +- .../maka/workbench/app/ConnectionModel.tsx | 25 +- .../maka/workbench/app/ConnectionSettings.tsx | 2 +- .../maka/workbench/app/GeneralSettings.tsx | 2 +- products/maka/workbench/app/GoalDialog.tsx | 7 +- products/maka/workbench/app/Icon.tsx | 2 +- products/maka/workbench/app/Loading.tsx | 6 +- products/maka/workbench/app/MarkdownBody.tsx | 18 +- products/maka/workbench/app/MermaidView.tsx | 2 +- products/maka/workbench/app/MessageRow.tsx | 10 +- products/maka/workbench/app/MessagesDock.tsx | 2 +- products/maka/workbench/app/ModelSelect.tsx | 24 +- products/maka/workbench/app/ModelSettings.tsx | 4 +- .../maka/workbench/app/NetworkSettings.tsx | 35 +- .../maka/workbench/app/PendingMessage.tsx | 7 +- .../maka/workbench/app/ProviderPicker.tsx | 8 +- products/maka/workbench/app/RecallSearch.tsx | 3 +- .../maka/workbench/app/RootUiSettings.tsx | 8 +- .../workbench/app/SessionCompactionPrompt.tsx | 2 +- products/maka/workbench/app/SessionTree.tsx | 4 +- products/maka/workbench/app/SettingsPage.tsx | 43 +- products/maka/workbench/app/SkillSettings.tsx | 2 +- products/maka/workbench/app/ToolCard.tsx | 6 +- products/maka/workbench/app/ToolImage.tsx | 2 +- .../maka/workbench/app/TurnNavigation.tsx | 28 +- products/maka/workbench/app/TurnPanel.tsx | 26 +- products/maka/workbench/app/Workbench.tsx | 8 +- .../maka/workbench/app/WorkspaceBrowser.tsx | 98 +- .../maka/workbench/app/WorkspaceFiles.tsx | 6 +- .../maka/workbench/app/WorkspaceLocations.tsx | 5 +- .../maka/workbench/app/WorkspacePicker.tsx | 5 +- products/maka/workbench/app/chrome.ts | 12 +- products/maka/workbench/app/ui.tsx | 55 +- .../maka/workbench/src/bindings/diagrams.rs | 16 +- products/maka/workbench/src/composer_input.rs | 22 +- .../workbench/src/composer_input/model.rs | 50 +- products/maka/workbench/src/lib.rs | 4 +- scripts/asf-source-release.mjs | 1 + scripts/asf-source-release.test.mjs | 1 + scripts/ci/setup.mjs | 4 + scripts/ci/suites.mjs | 21 +- scripts/rust/licenses/declared-cc0-1.0.txt | 121 + scripts/rust/notices-sources.json | 6 + .../assets/composer-ui/index.tsx | 12 +- .../nsh/.github/actions/cargo/action.yml | 70 + third-party/nsh/.github/ci/layerfs.py | 201 - third-party/nsh/.github/ci/layerfs/Dockerfile | 5 - .../nsh/.github/ci/layerfs/prepare.Dockerfile | 6 - third-party/nsh/.github/ci/layerfs/smoke.mjs | 71 - third-party/nsh/.github/ci/paths.py | 51 +- third-party/nsh/.github/ci/test_layerfs.py | 76 - .../nsh/.github/workflows/ci-paths.yml | 7 +- third-party/nsh/.github/workflows/compat.yml | 32 +- third-party/nsh/.github/workflows/core.yml | 27 +- .../nsh/.github/workflows/examples.yml | 27 +- third-party/nsh/.github/workflows/gpui.yml | 76 +- third-party/nsh/.github/workflows/layerfs.yml | 59 - third-party/nsh/.github/workflows/linux.yml | 114 +- .../nsh/.github/workflows/packages.yml | 12 +- third-party/nsh/.github/workflows/release.yml | 94 +- .../nsh/.github/workflows/rust-app.yml | 68 +- third-party/nsh/.github/workflows/tui.yml | 128 +- third-party/nsh/.github/workflows/website.yml | 103 +- third-party/nsh/.github/workflows/windows.yml | 32 +- third-party/nsh/AGENTS.md | 96 +- third-party/nsh/CONTEXT.md | 64 + third-party/nsh/CONTRIBUTING.md | 5 + third-party/nsh/Cargo.lock | 1079 +- third-party/nsh/Cargo.toml | 64 +- third-party/nsh/README.md | 61 +- third-party/nsh/SOURCE.md | 32 +- third-party/nsh/crates/nsh-base/Cargo.toml | 20 +- .../nsh/crates/nsh-base/src/accordion.rs | 34 +- .../nsh/crates/nsh-base/src/autoscroll.rs | 96 + third-party/nsh/crates/nsh-base/src/button.rs | 6 +- .../nsh/crates/nsh-base/src/calendar.rs | 375 +- .../nsh/crates/nsh-base/src/checkbox.rs | 23 +- .../crates/nsh-base/src/color_picker/mod.rs | 47 +- .../crates/nsh-base/src/color_picker/tui.rs | 416 + .../nsh/crates/nsh-base/src/combobox.rs | 138 +- .../nsh/crates/nsh-base/src/command.rs | 30 +- .../nsh-base/src/data_table/controller.rs | 47 +- .../nsh/crates/nsh-base/src/data_table/mod.rs | 3 +- .../crates/nsh-base/src/data_table/view.rs | 85 +- .../nsh/crates/nsh-base/src/date_picker.rs | 106 +- .../crates/nsh-base/src/diff/controller.rs | 65 +- .../nsh/crates/nsh-base/src/diff/mod.rs | 3 +- .../nsh/crates/nsh-base/src/diff/view.rs | 76 +- .../nsh/crates/nsh-base/src/dock/compact.rs | 33 +- .../nsh/crates/nsh-base/src/dock/dock_area.rs | 75 +- .../nsh/crates/nsh-base/src/dock/tab_group.rs | 49 +- .../crates/nsh-base/src/editor/completion.rs | 13 +- .../crates/nsh-base/src/editor/controller.rs | 117 +- .../nsh/crates/nsh-base/src/editor/display.rs | 36 +- .../nsh/crates/nsh-base/src/editor/layout.rs | 89 +- .../nsh/crates/nsh-base/src/editor/mod.rs | 3 +- .../nsh/crates/nsh-base/src/editor/state.rs | 9 + .../nsh/crates/nsh-base/src/editor/view.rs | 73 +- .../nsh/crates/nsh-base/src/hover_card.rs | 1 + third-party/nsh/crates/nsh-base/src/keys.rs | 6 +- third-party/nsh/crates/nsh-base/src/lib.rs | 178 +- .../nsh/crates/nsh-base/src/listbox.rs | 119 +- third-party/nsh/crates/nsh-base/src/menu.rs | 672 +- .../nsh/crates/nsh-base/src/number_input.rs | 16 +- .../nsh/crates/nsh-base/src/otp_input.rs | 201 +- .../nsh/crates/nsh-base/src/pagination.rs | 37 +- .../nsh/crates/nsh-base/src/plot/mod.rs | 115 +- .../nsh/crates/nsh-base/src/popover.rs | 40 +- third-party/nsh/crates/nsh-base/src/popup.rs | 34 +- .../nsh/crates/nsh-base/src/progress.rs | 55 +- third-party/nsh/crates/nsh-base/src/radio.rs | 18 +- .../nsh/crates/nsh-base/src/resizable/mod.rs | 2 +- .../crates/nsh-base/src/resizable/panel.rs | 74 +- .../nsh-base/src/resizable/resize_handle.rs | 152 +- .../nsh-base/src/rich_editor/commands/base.rs | 14 +- .../src/rich_editor/extensions/core_keymap.rs | 4 +- .../src/rich_editor/extensions/extension.rs | 234 +- .../src/rich_editor/extensions/keymap.rs | 241 +- .../src/rich_editor/extensions/kit.rs | 3 +- .../src/rich_editor/extensions/starter.rs | 16 +- .../crates/nsh-base/src/rich_editor/js/mod.rs | 2 +- .../nsh-base/src/rich_editor/js/plugins.rs | 9 +- .../nsh-base/src/rich_editor/state/plugin.rs | 5 - .../src/rich_editor/view/controller.rs | 43 +- .../nsh-base/src/rich_editor/view/keys.rs | 119 +- .../nsh-base/src/rich_editor/view/render.rs | 135 +- .../nsh-base/src/rich_editor/view/table.rs | 8 +- .../nsh/crates/nsh-base/src/scrollbar.rs | 7 + third-party/nsh/crates/nsh-base/src/select.rs | 231 +- third-party/nsh/crates/nsh-base/src/slider.rs | 231 +- .../nsh/crates/nsh-base/src/status_line.rs | 107 + third-party/nsh/crates/nsh-base/src/switch.rs | 21 +- third-party/nsh/crates/nsh-base/src/tabs.rs | 13 +- .../nsh/crates/nsh-base/src/term/emulator.rs | 192 + .../nsh/crates/nsh-base/src/term/keys.rs | 95 + .../nsh/crates/nsh-base/src/term/mod.rs | 517 + .../nsh/crates/nsh-base/src/term/vt.rs | 684 + .../nsh/crates/nsh-base/src/terminal.rs | 634 + .../crates/nsh-base/src/text_view/html/mod.rs | 134 + .../src/text_view/markdown/autolink.rs | 167 + .../nsh-base/src/text_view/markdown/cjk.rs | 301 + .../nsh-base/src/text_view/markdown/latex.rs | 66 +- .../nsh-base/src/text_view/markdown/mod.rs | 112 +- .../src/text_view/markdown/offsets.rs | 223 + .../nsh-base/src/text_view/markdown/tests.rs | 335 + .../nsh/crates/nsh-base/src/text_view/mod.rs | 20 +- .../crates/nsh-base/src/text_view/parse.rs | 14 + .../nsh-base/src/text_view/selection.rs | 1040 + .../crates/nsh-base/src/text_view/tex_text.rs | 317 + .../nsh/crates/nsh-base/src/text_view/view.rs | 868 +- third-party/nsh/crates/nsh-base/src/theme.rs | 223 +- .../nsh/crates/nsh-base/src/time_field.rs | 1 + .../nsh/crates/nsh-base/src/toast/mod.rs | 5 + .../nsh/crates/nsh-base/src/toast/root.rs | 8 +- .../nsh/crates/nsh-base/src/toast/stack.rs | 52 + third-party/nsh/crates/nsh-base/src/toggle.rs | 21 +- .../nsh/crates/nsh-base/src/toolbar.rs | 32 +- .../nsh/crates/nsh-base/src/tooltip.rs | 89 +- third-party/nsh/crates/nsh-base/src/tree.rs | 49 +- .../crates/nsh-base/tests/base/calendar.rs | 120 +- .../nsh-base/tests/base/color_picker.rs | 12 +- .../crates/nsh-base/tests/base/combobox.rs | 86 +- .../crates/nsh-base/tests/base/data_table.rs | 223 +- .../crates/nsh-base/tests/base/date_picker.rs | 130 +- .../nsh/crates/nsh-base/tests/base/diff.rs | 142 + .../nsh/crates/nsh-base/tests/base/dock.rs | 81 +- .../nsh/crates/nsh-base/tests/base/editor.rs | 61 + .../nsh-base/tests/base/editor_completion.rs | 117 +- .../nsh-base/tests/base/focus_within.rs | 78 +- .../nsh/crates/nsh-base/tests/base/main.rs | 2 + .../nsh/crates/nsh-base/tests/base/menu.rs | 256 +- .../nsh/crates/nsh-base/tests/base/popups.rs | 165 +- .../nsh-base/tests/base/rich_editor/mod.rs | 85 + .../nsh-base/tests/base/rich_editor/typing.rs | 21 + .../tests/base/rich_editor/view_features.rs | 115 - .../nsh/crates/nsh-base/tests/base/select.rs | 102 +- .../nsh/crates/nsh-base/tests/base/submenu.rs | 161 + .../crates/nsh-base/tests/base/terminal.rs | 1475 ++ .../crates/nsh-base/tests/base/text_view.rs | 127 +- .../nsh/crates/nsh-base/tests/base/tree.rs | 10 + third-party/nsh/crates/nsh-bundler/Cargo.toml | 9 +- .../nsh-bundler/examples/browser-bootstrap.js | 3 + .../nsh-bundler/examples/browser_bootstrap.rs | 67 + .../nsh/crates/nsh-bundler/src/bundle.rs | 259 +- third-party/nsh/crates/nsh-bundler/src/jsx.rs | 23 +- .../nsh/crates/nsh-bundler/src/natives.rs | 19 + .../nsh/crates/nsh-bundler/src/plugin.rs | 89 +- .../crates/nsh-bundler/src/standard_tests.rs | 2 +- .../nsh/crates/nsh-bundler/src/types.rs | 9 +- third-party/nsh/crates/nsh-cli/Cargo.toml | 12 +- third-party/nsh/crates/nsh-cli/build.rs | 12 + third-party/nsh/crates/nsh-cli/src/android.rs | 370 +- third-party/nsh/crates/nsh-cli/src/apple.rs | 488 + third-party/nsh/crates/nsh-cli/src/build.rs | 47 +- third-party/nsh/crates/nsh-cli/src/dev.rs | 94 +- .../nsh/crates/nsh-cli/src/dev_port.rs | 128 +- third-party/nsh/crates/nsh-cli/src/init.rs | 7 +- third-party/nsh/crates/nsh-cli/src/main.rs | 285 +- third-party/nsh/crates/nsh-cli/src/package.rs | 674 +- third-party/nsh/crates/nsh-cli/src/play.rs | 618 + .../nsh/crates/nsh-cli/src/publish_ios.rs | 622 + third-party/nsh/crates/nsh-cli/src/run.rs | 337 +- third-party/nsh/crates/nsh-cli/src/runtime.rs | 185 +- .../nsh/crates/nsh-cli/src/rust_app.rs | 596 +- .../nsh-cli/src/templates/mixed/README.md | 9 + .../nsh-cli/src/templates/rust/README.md | 9 + .../crates/nsh-cli/src/templates/rust/lib.rs | 49 +- .../crates/nsh-cli/src/templates/rust/main.rs | 2 - third-party/nsh/crates/nsh-cli/src/test.rs | 8 +- .../nsh/crates/nsh-cli/src/test_host.rs | 71 +- third-party/nsh/crates/nsh-cli/src/tui.rs | 417 - third-party/nsh/crates/nsh-cli/src/ui.rs | 87 +- third-party/nsh/crates/nsh-cli/src/updater.rs | 449 + third-party/nsh/crates/nsh-cli/src/web.rs | 921 +- .../nsh/crates/nsh-cli/src/web/dev.html | 6 +- .../nsh/crates/nsh-cli/src/web/index.html | 12 +- third-party/nsh/crates/nsh-cli/src/windows.rs | 150 +- .../nsh/crates/nsh-cli/tests/cli/main.rs | 5 + .../nsh/crates/nsh-cli/tests/cli/runtime.rs | 74 + .../nsh/crates/nsh-cli/tests/cli/tui.rs | 126 + .../nsh-cli/tests/fixtures/play-test-key.pem | 28 + third-party/nsh/crates/nsh-core/Cargo.toml | 26 +- third-party/nsh/crates/nsh-core/src/access.rs | 470 +- .../crates/nsh-core/src/animation/animator.rs | 12 + .../crates/nsh-core/src/animation/driver.rs | 46 + .../crates/nsh-core/src/animation/graph.rs | 325 +- .../nsh/crates/nsh-core/src/animation/mod.rs | 1 + .../crates/nsh-core/src/animation/motion.rs | 13 + .../nsh/crates/nsh-core/src/animation/ops.rs | 45 + third-party/nsh/crates/nsh-core/src/audio.rs | 511 + third-party/nsh/crates/nsh-core/src/canvas.rs | 42 +- .../nsh/crates/nsh-core/src/canvas/damage.rs | 68 +- .../nsh/crates/nsh-core/src/core/classes.rs | 22 +- .../crates/nsh-core/src/core/components.rs | 590 +- .../crates/nsh-core/src/core/layout_tree.rs | 374 +- .../nsh/crates/nsh-core/src/core/list.rs | 1171 +- .../nsh/crates/nsh-core/src/core/mod.rs | 1994 +- .../nsh/crates/nsh-core/src/core/overlay.rs | 840 +- .../nsh-core/src/core/parent_viewport.rs | 42 +- .../crates/nsh-core/src/core/resize_anchor.rs | 125 + .../crates/nsh-core/src/core/scrollbars.rs | 2 + .../nsh/crates/nsh-core/src/core/slots.rs | 2 + .../nsh/crates/nsh-core/src/core/sticky.rs | 4 + .../nsh-core/src/core/terminal_layout.rs | 3588 +++ .../nsh/crates/nsh-core/src/core/tests.rs | 21913 +++++++++------- .../nsh/crates/nsh-core/src/core/touch.rs | 31 +- .../nsh/crates/nsh-core/src/core/views.rs | 12 +- .../nsh/crates/nsh-core/src/desktop.rs | 191 +- .../crates/nsh-core/src/desktop/menu_icon.rs | 210 + .../nsh/crates/nsh-core/src/desktop/window.rs | 1244 + .../nsh-core/src/desktop/window_state.rs | 367 + .../nsh/crates/nsh-core/src/effects.rs | 101 + .../crates/nsh-core/src/element/ambient.rs | 329 +- .../crates/nsh-core/src/element/animated.rs | 55 +- .../nsh/crates/nsh-core/src/element/asset.rs | 13 + .../nsh/crates/nsh-core/src/element/audio.rs | 681 + .../crates/nsh-core/src/element/builder.rs | 149 +- .../crates/nsh-core/src/element/component.rs | 88 +- .../crates/nsh-core/src/element/desktop.rs | 986 +- .../nsh-core/src/element/element_ref.rs | 28 +- .../nsh/crates/nsh-core/src/element/env.rs | 42 +- .../nsh/crates/nsh-core/src/element/events.rs | 62 + .../nsh/crates/nsh-core/src/element/host.rs | 137 +- .../nsh/crates/nsh-core/src/element/mod.rs | 24 +- .../nsh/crates/nsh-core/src/element/module.rs | 12 + .../nsh/crates/nsh-core/src/element/once.rs | 7 +- .../crates/nsh-core/src/element/palette.rs | 2 +- .../crates/nsh-core/src/element/reactive.rs | 8 +- .../nsh-core/src/element/reactive/tests.rs | 10 + .../crates/nsh-core/src/element/services.rs | 54 +- .../nsh/crates/nsh-core/src/element/style.rs | 182 +- .../nsh/crates/nsh-core/src/element/system.rs | 10 + .../nsh/crates/nsh-core/src/element/task.rs | 61 +- .../nsh/crates/nsh-core/src/element/tokens.rs | 30 +- .../nsh-core/src/element/virtual_list.rs | 20 + .../nsh/crates/nsh-core/src/file_dialog.rs | 2 +- third-party/nsh/crates/nsh-core/src/i18n.rs | 247 + .../nsh/crates/nsh-core/src/image/decoded.rs | 132 +- .../nsh/crates/nsh-core/src/image/loader.rs | 1 - third-party/nsh/crates/nsh-core/src/input.rs | 58 +- .../nsh/crates/nsh-core/src/input_tokens.rs | 318 - .../nsh/crates/nsh-core/src/js/animation.rs | 6 +- .../nsh/crates/nsh-core/src/js/canvas.rs | 2 +- .../nsh/crates/nsh-core/src/js/host.rs | 24 +- .../nsh/crates/nsh-core/src/js/host_values.rs | 83 +- third-party/nsh/crates/nsh-core/src/js/mod.rs | 17 +- third-party/nsh/crates/nsh-core/src/keymap.rs | 85 +- third-party/nsh/crates/nsh-core/src/lib.rs | 24 +- third-party/nsh/crates/nsh-core/src/mount.rs | 76 +- .../nsh/crates/nsh-core/src/navigation.rs | 75 +- .../nsh/crates/nsh-core/src/notifications.rs | 144 + third-party/nsh/crates/nsh-core/src/ops.rs | 501 +- .../nsh/crates/nsh-core/src/overlay.rs | 44 +- third-party/nsh/crates/nsh-core/src/picker.rs | 299 +- .../nsh/crates/nsh-core/src/platform.rs | 1128 +- .../nsh/crates/nsh-core/src/prelude.rs | 45 +- third-party/nsh/crates/nsh-core/src/props.rs | 36 +- .../nsh/crates/nsh-core/src/reactive.rs | 79 +- .../nsh/crates/nsh-core/src/reactive/tests.rs | 226 + .../nsh/crates/nsh-core/src/restart.rs | 207 + .../nsh/crates/nsh-core/src/runtime/audio.rs | 739 + .../crates/nsh-core/src/runtime/desktop.rs | 135 +- .../nsh/crates/nsh-core/src/runtime/fonts.rs | 101 + .../nsh/crates/nsh-core/src/runtime/fps.rs | 23 + .../nsh/crates/nsh-core/src/runtime/fs.rs | 2 +- .../nsh/crates/nsh-core/src/runtime/image.rs | 27 +- .../nsh/crates/nsh-core/src/runtime/mod.rs | 40 +- .../nsh-core/src/runtime/notifications.rs | 213 + .../nsh/crates/nsh-core/src/runtime/picker.rs | 112 +- .../crates/nsh-core/src/runtime/updater.rs | 810 + .../crates/nsh-core/src/runtime/url_scheme.rs | 105 + third-party/nsh/crates/nsh-core/src/scroll.rs | 165 +- .../nsh/crates/nsh-core/src/selection.rs | 244 +- third-party/nsh/crates/nsh-core/src/shader.rs | 30 +- third-party/nsh/crates/nsh-core/src/style.rs | 77 +- .../nsh/crates/nsh-core/src/tailwind/tests.rs | 10 + .../nsh/crates/nsh-core/src/tailwind/theme.rs | 311 +- .../crates/nsh-core/src/tailwind/utilities.rs | 7 + third-party/nsh/crates/nsh-core/src/text.rs | 176 +- .../nsh/crates/nsh-core/src/text_edit.rs | 339 +- .../nsh/crates/nsh-core/src/transform.rs | 40 +- .../nsh/crates/nsh-core/src/transition.rs | 106 + .../nsh/crates/nsh-core/src/url_scheme.rs | 214 + .../nsh/crates/nsh-core/src/web_resource.rs | 289 + third-party/nsh/crates/nsh-core/unitless.txt | 48 + third-party/nsh/crates/nsh-dev/Cargo.toml | 4 +- third-party/nsh/crates/nsh-dev/src/client.rs | 8 + .../nsh/crates/nsh-dev/src/protocol.rs | 48 +- third-party/nsh/crates/nsh-dev/src/server.rs | 423 +- third-party/nsh/crates/nsh-dev/src/site.rs | 94 +- .../nsh/crates/nsh-dev/tests/roundtrip.rs | 179 + third-party/nsh/crates/nsh-engine/Cargo.toml | 18 +- .../nsh/crates/nsh-engine/src/access.rs | 4 +- .../nsh/crates/nsh-engine/src/browser.rs | 7 + third-party/nsh/crates/nsh-engine/src/lib.rs | 1139 +- third-party/nsh/crates/nsh-engine/src/perf.rs | 16 +- .../nsh/crates/nsh-engine/src/script.rs | 68 +- .../nsh/crates/nsh-engine/src/shader.rs | 74 +- .../nsh/crates/nsh-engine/src/shader_frame.rs | 54 + .../nsh/crates/nsh-engine/src/shader_off.rs | 119 + .../nsh/crates/nsh-engine/src/updates.rs | 679 + .../crates/nsh-engine/tests/engine/assets.rs | 97 +- .../crates/nsh-engine/tests/engine/canvas.rs | 2 + .../crates/nsh-engine/tests/engine/clock.rs | 60 + .../nsh-engine/tests/engine/compiled.rs | 140 +- .../tests/engine/component_bench.rs | 1 - .../nsh-engine/tests/engine/components.rs | 1244 +- .../crates/nsh-engine/tests/engine/counter.rs | 2 + .../crates/nsh-engine/tests/engine/errors.rs | 33 + .../crates/nsh-engine/tests/engine/fetch.rs | 25 +- .../nsh/crates/nsh-engine/tests/engine/fs.rs | 4 + .../nsh-engine/tests/engine/host_modules.rs | 2 + .../nsh/crates/nsh-engine/tests/engine/hot.rs | 13 +- .../crates/nsh-engine/tests/engine/hover.rs | 2 + .../nsh-engine/tests/engine/js_touch.rs | 2 + .../crates/nsh-engine/tests/engine/keymap.rs | 2 + .../crates/nsh-engine/tests/engine/list.rs | 363 +- .../crates/nsh-engine/tests/engine/main.rs | 2 + .../crates/nsh-engine/tests/engine/native.rs | 91 + .../nsh/crates/nsh-engine/tests/engine/net.rs | 2 + .../nsh-engine/tests/engine/notifications.rs | 183 + .../nsh-engine/tests/engine/open_url.rs | 25 +- .../crates/nsh-engine/tests/engine/package.rs | 2 + .../crates/nsh-engine/tests/engine/parity.rs | 2 + .../nsh-engine/tests/engine/platform.rs | 814 +- .../crates/nsh-engine/tests/engine/process.rs | 2 + .../nsh-engine/tests/engine/rust_animation.rs | 4 + .../nsh-engine/tests/engine/rust_app.rs | 52 +- .../nsh-engine/tests/engine/rust_classes.rs | 2 + .../nsh-engine/tests/engine/rust_lists.rs | 111 +- .../nsh-engine/tests/engine/rust_media.rs | 8 - .../nsh-engine/tests/engine/rust_platform.rs | 470 +- .../nsh-engine/tests/engine/rust_popups.rs | 19 +- .../nsh-engine/tests/engine/rust_styles.rs | 6 +- .../nsh-engine/tests/engine/rust_touch.rs | 2 + .../nsh-engine/tests/engine/shutdown.rs | 2 + .../crates/nsh-engine/tests/engine/split.rs | 2 + .../crates/nsh-engine/tests/engine/storage.rs | 8 + .../crates/nsh-engine/tests/engine/system.rs | 4 + .../crates/nsh-engine/tests/engine/theme.rs | 113 +- .../nsh-engine/tests/engine/url_scheme.rs | 130 + .../nsh-engine/tests/engine/websocket.rs | 2 + .../nsh/crates/nsh-engine/unitless.txt | 1 + third-party/nsh/crates/nsh-i18n/Cargo.toml | 25 + third-party/nsh/crates/nsh-i18n/data/de.json | 67 + third-party/nsh/crates/nsh-i18n/data/en.json | 87 + third-party/nsh/crates/nsh-i18n/data/es.json | 86 + third-party/nsh/crates/nsh-i18n/data/fr.json | 67 + third-party/nsh/crates/nsh-i18n/data/hi.json | 32 + third-party/nsh/crates/nsh-i18n/data/id.json | 32 + third-party/nsh/crates/nsh-i18n/data/it.json | 51 + third-party/nsh/crates/nsh-i18n/data/ja.json | 37 + third-party/nsh/crates/nsh-i18n/data/ko.json | 37 + third-party/nsh/crates/nsh-i18n/data/nl.json | 50 + third-party/nsh/crates/nsh-i18n/data/pl.json | 32 + third-party/nsh/crates/nsh-i18n/data/pt.json | 74 + third-party/nsh/crates/nsh-i18n/data/ru.json | 32 + third-party/nsh/crates/nsh-i18n/data/sv.json | 32 + third-party/nsh/crates/nsh-i18n/data/th.json | 32 + third-party/nsh/crates/nsh-i18n/data/tr.json | 32 + third-party/nsh/crates/nsh-i18n/data/vi.json | 32 + third-party/nsh/crates/nsh-i18n/data/zh.json | 76 + third-party/nsh/crates/nsh-i18n/src/lib.rs | 214 + .../crates/nsh-i18n/tests/app/locales/app.yml | 8 + .../nsh-i18n/tests/app/locales/extra.en.json | 1 + third-party/nsh/crates/nsh-ios-app/Cargo.toml | 18 +- third-party/nsh/crates/nsh-ios-app/src/lib.rs | 16 +- third-party/nsh/crates/nsh-js/Cargo.toml | 5 +- third-party/nsh/crates/nsh-js/src/animated.rs | 76 +- third-party/nsh/crates/nsh-js/src/bytecode.rs | 2 +- third-party/nsh/crates/nsh-js/src/classes.rs | 1 + .../nsh/crates/nsh-js/src/declarations.rs | 63 +- third-party/nsh/crates/nsh-js/src/desktop.rs | 666 +- third-party/nsh/crates/nsh-js/src/dom.rs | 113 +- third-party/nsh/crates/nsh-js/src/env.rs | 386 +- third-party/nsh/crates/nsh-js/src/host.rs | 263 +- third-party/nsh/crates/nsh-js/src/i18n.rs | 280 + third-party/nsh/crates/nsh-js/src/keymap.rs | 82 +- third-party/nsh/crates/nsh-js/src/lib.rs | 4 +- third-party/nsh/crates/nsh-js/src/list.rs | 290 +- third-party/nsh/crates/nsh-js/src/modules.rs | 25 +- .../nsh/crates/nsh-js/src/navigation.rs | 5 +- .../nsh/crates/nsh-js/src/platform_modules.rs | 2 +- third-party/nsh/crates/nsh-js/src/protocol.rs | 78 +- third-party/nsh/crates/nsh-js/src/reactive.rs | 181 +- third-party/nsh/crates/nsh-js/src/state.rs | 7 + third-party/nsh/crates/nsh-js/src/touch.rs | 29 +- .../nsh-js/src/web/{intl => format}/date.rs | 32 +- .../crates/nsh-js/src/web/format/locale.rs | 334 + .../nsh-js/src/web/{intl => format}/mod.rs | 284 +- .../nsh-js/src/web/{intl => format}/number.rs | 22 +- .../nsh/crates/nsh-js/src/web/intl/locale.rs | 873 - third-party/nsh/crates/nsh-js/src/web/mod.rs | 22 +- third-party/nsh/crates/nsh-js/src/window.rs | 1417 + .../crates/nsh-js/tests/standard/imports.rs | 8 +- .../nsh/crates/nsh-linux-app/Cargo.toml | 18 +- .../nsh/crates/nsh-linux-app/src/lib.rs | 21 +- .../nsh/crates/nsh-linux-host/src/lib.rs | 24 + .../nsh/crates/nsh-macos-app/Cargo.toml | 18 +- .../nsh/crates/nsh-macos-app/src/lib.rs | 29 +- .../nsh/crates/nsh-macos-host/src/lib.rs | 5 + .../nsh/crates/nsh-macros/src/assets.rs | 8 +- .../nsh/crates/nsh-macros/src/host_props.rs | 10 +- .../nsh/crates/nsh-package/src/package.rs | 95 + .../crates/nsh-platform-android/Cargo.toml | 32 +- .../java/com/longbridge/nsh/AppActivity.java | 16 +- .../java/com/longbridge/nsh/Audio.java | 654 + .../java/com/longbridge/nsh/Box.java | 35 +- .../java/com/longbridge/nsh/Decor.java | 164 +- .../java/com/longbridge/nsh/DevActivity.java | 13 + .../java/com/longbridge/nsh/Effects.java | 37 +- .../java/com/longbridge/nsh/FileRoots.java | 42 + .../com/longbridge/nsh/FilesProvider.java | 132 + .../java/com/longbridge/nsh/ImageBox.java | 10 + .../java/com/longbridge/nsh/Images.java | 124 + .../java/com/longbridge/nsh/InputBox.java | 50 +- .../java/com/longbridge/nsh/InputContent.java | 42 + .../com/longbridge/nsh/KeyboardAnimation.java | 31 + .../java/com/longbridge/nsh/ModalHost.java | 35 +- .../java/com/longbridge/nsh/Mounter.java | 320 +- .../java/com/longbridge/nsh/Native.java | 49 +- .../com/longbridge/nsh/Notifications.java | 248 + .../java/com/longbridge/nsh/NshView.java | 134 +- .../java/com/longbridge/nsh/Picker.java | 59 +- .../java/com/longbridge/nsh/ScrollBox.java | 15 +- .../com/longbridge/nsh/SelectableView.java | 41 +- .../java/com/longbridge/nsh/StackBox.java | 56 +- .../java/com/longbridge/nsh/SystemUi.java | 26 + .../java/com/longbridge/nsh/TestAgent.java | 234 +- .../java/com/longbridge/nsh/TextBox.java | 12 + .../java/com/longbridge/nsh/TextLayouts.java | 3 + .../java/com/longbridge/nsh/TouchTracker.java | 34 - .../java/com/longbridge/nsh/WebBox.java | 23 +- .../crates/nsh-platform-android/src/dev.rs | 5 +- .../crates/nsh-platform-android/src/encode.rs | 292 +- .../crates/nsh-platform-android/src/host.rs | 319 +- .../crates/nsh-platform-android/src/keymap.rs | 4 +- .../nsh-platform-android/src/package.rs | 37 + .../src/selectable_view.rs | 26 +- .../com/longbridge/nsh/FileRootsTest.java | 52 + .../longbridge/nsh/MovieDrawableSharing.java | 111 + .../nsh/crates/nsh-platform-apple/Cargo.toml | 29 + .../crates/nsh-platform-apple/src/audio.rs | 949 + .../nsh/crates/nsh-platform-apple/src/lib.rs | 10 + .../nsh-platform-apple/src/notifications.rs | 372 + .../src/speech.rs | 2 +- .../nsh-platform-apple/src/web_scheme.rs | 289 + .../nsh/crates/nsh-platform-ios/Cargo.toml | 33 +- .../nsh/crates/nsh-platform-ios/include/nsh.h | 12 + .../crates/nsh-platform-ios/src/animation.rs | 39 +- .../nsh/crates/nsh-platform-ios/src/app.rs | 50 +- .../nsh/crates/nsh-platform-ios/src/decor.rs | 6 +- .../nsh/crates/nsh-platform-ios/src/dev.rs | 5 +- .../nsh/crates/nsh-platform-ios/src/embed.rs | 44 + .../nsh/crates/nsh-platform-ios/src/image.rs | 5 + .../nsh/crates/nsh-platform-ios/src/input.rs | 71 +- .../nsh-platform-ios/src/interaction.rs | 62 +- .../nsh/crates/nsh-platform-ios/src/keymap.rs | 11 +- .../nsh/crates/nsh-platform-ios/src/lib.rs | 6 +- .../nsh/crates/nsh-platform-ios/src/mount.rs | 719 +- .../nsh-platform-ios/src/native_view.rs | 6 + .../crates/nsh-platform-ios/src/navigation.rs | 267 +- .../nsh/crates/nsh-platform-ios/src/picker.rs | 158 +- .../nsh/crates/nsh-platform-ios/src/press.rs | 24 +- .../nsh-platform-ios/src/selectable_view.rs | 65 +- .../crates/nsh-platform-ios/src/surface.rs | 222 +- .../nsh/crates/nsh-platform-ios/src/target.rs | 70 +- .../crates/nsh-platform-ios/src/text_view.rs | 2 +- .../nsh/crates/nsh-platform-ios/src/touch.rs | 24 - .../nsh/crates/nsh-platform-ios/src/view.rs | 52 + .../nsh/crates/nsh-platform-ios/src/visual.rs | 245 +- .../nsh/crates/nsh-platform-ios/src/web.rs | 87 +- .../nsh-platform-ios/swift/NativeShell.swift | 28 + .../nsh/crates/nsh-platform-linux/Cargo.toml | 35 +- .../crates/nsh-platform-linux/src/access.rs | 3 +- .../crates/nsh-platform-linux/src/agent.rs | 359 +- .../nsh/crates/nsh-platform-linux/src/app.rs | 202 +- .../crates/nsh-platform-linux/src/audio.rs | 566 + .../crates/nsh-platform-linux/src/chrome.rs | 216 +- .../crates/nsh-platform-linux/src/decor.rs | 672 +- .../nsh-platform-linux/src/decor/bench.rs | 135 + .../nsh/crates/nsh-platform-linux/src/dev.rs | 2 + .../nsh-platform-linux/src/file_drop.rs | 23 +- .../nsh-platform-linux/src/file_requests.rs | 30 +- .../nsh/crates/nsh-platform-linux/src/fps.rs | 244 +- .../nsh-platform-linux/src/global_shortcut.rs | 698 + .../crates/nsh-platform-linux/src/image.rs | 46 +- .../crates/nsh-platform-linux/src/input.rs | 472 +- .../nsh-platform-linux/src/key_focus.rs | 318 + .../crates/nsh-platform-linux/src/keymap.rs | 250 +- .../nsh/crates/nsh-platform-linux/src/lib.rs | 11 + .../crates/nsh-platform-linux/src/links.rs | 129 + .../crates/nsh-platform-linux/src/mount.rs | 149 +- .../crates/nsh-platform-linux/src/native.rs | 123 +- .../nsh-platform-linux/src/native/web.rs | 114 +- .../src/native/web_scheme.rs | 215 + .../nsh-platform-linux/src/navigation.rs | 522 +- .../nsh-platform-linux/src/notifications.rs | 524 + .../crates/nsh-platform-linux/src/scroll.rs | 137 +- .../nsh-platform-linux/src/selectable_view.rs | 43 +- .../crates/nsh-platform-linux/src/shader.rs | 32 +- .../crates/nsh-platform-linux/src/sound.rs | 788 + .../crates/nsh-platform-linux/src/surface.rs | 311 +- .../crates/nsh-platform-linux/src/synth.rs | 62 + .../crates/nsh-platform-linux/src/system.rs | 277 +- .../nsh/crates/nsh-platform-linux/src/text.rs | 37 + .../nsh-platform-linux/src/text_input.rs | 648 +- .../nsh-platform-linux/src/transition.rs | 80 +- .../nsh/crates/nsh-platform-linux/src/tray.rs | 762 + .../nsh/crates/nsh-platform-linux/src/view.rs | 142 +- .../crates/nsh-platform-linux/src/window.rs | 2010 ++ .../crates/nsh-platform-linux/src/xtest.rs | 466 + .../nsh/crates/nsh-platform-macos/Cargo.toml | 55 +- .../crates/nsh-platform-macos/src/access.rs | 322 +- .../nsh-platform-macos/src/access/table.rs | 317 + .../crates/nsh-platform-macos/src/agent.rs | 378 +- .../nsh/crates/nsh-platform-macos/src/app.rs | 362 +- .../crates/nsh-platform-macos/src/canvas.rs | 236 +- .../crates/nsh-platform-macos/src/chrome.rs | 761 +- .../crates/nsh-platform-macos/src/decor.rs | 53 +- .../nsh/crates/nsh-platform-macos/src/dev.rs | 5 + .../nsh-platform-macos/src/file_drop.rs | 127 +- .../nsh-platform-macos/src/file_requests.rs | 58 +- .../nsh-platform-macos/src/global_shortcut.rs | 444 + .../crates/nsh-platform-macos/src/image.rs | 104 +- .../crates/nsh-platform-macos/src/input.rs | 634 +- .../crates/nsh-platform-macos/src/keymap.rs | 60 +- .../nsh/crates/nsh-platform-macos/src/lib.rs | 9 +- .../crates/nsh-platform-macos/src/mount.rs | 225 +- .../crates/nsh-platform-macos/src/native.rs | 88 +- .../nsh-platform-macos/src/native_events.rs | 175 +- .../nsh-platform-macos/src/navigation.rs | 525 +- .../crates/nsh-platform-macos/src/picker.rs | 2 +- .../crates/nsh-platform-macos/src/scroll.rs | 65 +- .../nsh-platform-macos/src/selectable_view.rs | 84 +- .../crates/nsh-platform-macos/src/shader.rs | 38 +- .../crates/nsh-platform-macos/src/surface.rs | 424 +- .../crates/nsh-platform-macos/src/synth.rs | 593 +- .../crates/nsh-platform-macos/src/system.rs | 330 +- .../crates/nsh-platform-macos/src/terminal.rs | 6 +- .../nsh/crates/nsh-platform-macos/src/text.rs | 333 +- .../nsh-platform-macos/src/text_input.rs | 213 +- .../nsh-platform-macos/src/transition.rs | 44 +- .../nsh/crates/nsh-platform-macos/src/tray.rs | 242 + .../nsh/crates/nsh-platform-macos/src/view.rs | 545 +- .../crates/nsh-platform-macos/src/visual.rs | 713 +- .../crates/nsh-platform-macos/src/window.rs | 2315 ++ .../nsh-platform-macos/src/window_state.rs | 496 + .../nsh-platform-macos/tests/accessibility.rs | 303 + .../tests/accessibility/table.rs | 340 + .../nsh-platform-macos/tests/background.rs | 149 + .../nsh-platform-macos/tests/draw_on_show.rs | 206 + .../tests/host/App.test.tsx | 97 + .../nsh-platform-macos/tests/host/App.tsx | 61 + .../tests/host/Edit.test.tsx | 21 + .../nsh-platform-macos/tests/host/Edit.tsx | 27 + .../tests/host/Nav.test.tsx | 16 + .../nsh-platform-macos/tests/host/Nav.tsx | 37 + .../tests/host/TitleBar.test.tsx | 15 + .../tests/host/TitleBar.tsx | 23 + .../nsh-platform-macos/tests/host/nsh.json | 10 + .../nsh-platform-macos/tests/keymap/app.tsx | 38 +- .../tests/keymap/phases.test.tsx | 11 - .../nsh-platform-macos/tests/native/main.rs | 16 + .../tests/native/title_bar.rs | 191 + .../tests/native/window_press.rs | 235 + .../tests/terminal/cases.rs | 62 +- .../nsh/crates/nsh-platform-tui/Cargo.toml | 45 +- .../nsh/crates/nsh-platform-tui/src/agent.rs | 412 + .../nsh/crates/nsh-platform-tui/src/app.rs | 5000 ++-- .../nsh/crates/nsh-platform-tui/src/canvas.rs | 2791 +- .../nsh-platform-tui/src/canvas/path.rs | 729 + .../crates/nsh-platform-tui/src/composite.rs | 1620 -- .../nsh-platform-tui/src/composite/blend.rs | 405 - .../nsh-platform-tui/src/composite/effects.rs | 399 - .../nsh/crates/nsh-platform-tui/src/dev.rs | 451 + .../nsh/crates/nsh-platform-tui/src/dialog.rs | 679 + .../nsh/crates/nsh-platform-tui/src/editor.rs | 943 - .../nsh/crates/nsh-platform-tui/src/fonts.rs | 1048 - .../crates/nsh-platform-tui/src/geometry.rs | 883 +- .../crates/nsh-platform-tui/src/gradient.rs | 271 + .../nsh/crates/nsh-platform-tui/src/image.rs | 2634 +- .../nsh-platform-tui/src/image_state.rs | 725 - .../nsh/crates/nsh-platform-tui/src/input.rs | 9833 +------ .../crates/nsh-platform-tui/src/key_scheme.rs | 230 + .../crates/nsh-platform-tui/src/keyboard.rs | 1524 ++ .../nsh/crates/nsh-platform-tui/src/lib.rs | 69 +- .../nsh/crates/nsh-platform-tui/src/media.rs | 2273 -- .../nsh/crates/nsh-platform-tui/src/menu.rs | 1239 + .../crates/nsh-platform-tui/src/metrics.rs | 85 - .../nsh/crates/nsh-platform-tui/src/motion.rs | 848 - .../nsh/crates/nsh-platform-tui/src/mount.rs | 630 + .../nsh/crates/nsh-platform-tui/src/native.rs | 816 +- .../crates/nsh-platform-tui/src/navigation.rs | 1947 +- .../nsh/crates/nsh-platform-tui/src/net.rs | 619 - .../crates/nsh-platform-tui/src/palette.rs | 1526 ++ .../nsh/crates/nsh-platform-tui/src/perf.rs | 151 + .../nsh-platform-tui/src/perf/output.rs | 115 + .../nsh/crates/nsh-platform-tui/src/render.rs | 7987 +++--- .../nsh/crates/nsh-platform-tui/src/run.rs | 74 + .../nsh/crates/nsh-platform-tui/src/script.rs | 318 - .../nsh/crates/nsh-platform-tui/src/scroll.rs | 1590 -- .../crates/nsh-platform-tui/src/scrollbar.rs | 182 + .../nsh/crates/nsh-platform-tui/src/search.rs | 501 + .../nsh-platform-tui/src/selectable_view.rs | 388 - .../crates/nsh-platform-tui/src/selection.rs | 488 + .../crates/nsh-platform-tui/src/services.rs | 1705 -- .../crates/nsh-platform-tui/src/surface.rs | 3759 +-- .../nsh/crates/nsh-platform-tui/src/text.rs | 2022 +- .../crates/nsh-platform-tui/src/text_input.rs | 645 + .../nsh/crates/nsh-platform-tui/src/view.rs | 72 + .../nsh/crates/nsh-platform-tui/src/worker.rs | 198 - .../nsh-platform-tui/tests/tui/alignment.rs | 174 + .../nsh-platform-tui/tests/tui/animation.rs | 398 + .../crates/nsh-platform-tui/tests/tui/app.rs | 668 + .../nsh-platform-tui/tests/tui/canvas.rs | 764 + .../nsh-platform-tui/tests/tui/controls.rs | 763 + .../nsh-platform-tui/tests/tui/data_table.rs | 91 + .../nsh-platform-tui/tests/tui/degraded.rs | 531 + .../nsh-platform-tui/tests/tui/diff_view.rs | 196 + .../crates/nsh-platform-tui/tests/tui/dock.rs | 894 + .../nsh-platform-tui/tests/tui/editor.rs | 457 + .../tests/tui/focus_navigation.rs | 681 + .../nsh-platform-tui/tests/tui/geometry.rs | 577 + .../nsh-platform-tui/tests/tui/keyboard.rs | 1239 + .../crates/nsh-platform-tui/tests/tui/main.rs | 31 + .../nsh-platform-tui/tests/tui/menu_bar.rs | 464 + .../nsh-platform-tui/tests/tui/modal_focus.rs | 460 + .../nsh-platform-tui/tests/tui/navigation.rs | 350 + .../nsh-platform-tui/tests/tui/painting.rs | 973 + .../nsh-platform-tui/tests/tui/palette.rs | 2373 ++ .../nsh-platform-tui/tests/tui/performance.rs | 78 + .../nsh-platform-tui/tests/tui/pointer.rs | 970 + .../nsh-platform-tui/tests/tui/popup.rs | 2037 ++ .../nsh-platform-tui/tests/tui/scroll.rs | 674 + .../nsh-platform-tui/tests/tui/search.rs | 363 + .../crates/nsh-platform-tui/tests/tui/text.rs | 286 + .../nsh-platform-tui/tests/tui/text_input.rs | 610 + .../nsh-platform-tui/tests/tui/tooltip.rs | 129 + .../nsh/crates/nsh-platform-web/Cargo.toml | 9 +- .../crates/nsh-platform-web/src/animation.rs | 45 +- .../nsh-platform-web/src/browser/engine.rs | 8 +- .../nsh-platform-web/src/browser/events.rs | 14 +- .../nsh-platform-web/src/browser/keymap.rs | 3 +- .../nsh-platform-web/src/browser/mod.rs | 82 +- .../nsh-platform-web/src/browser/protocol.rs | 6 + .../nsh-platform-web/src/browser/standard.rs | 81 +- .../nsh/crates/nsh-platform-web/src/encode.rs | 230 +- .../nsh-platform-web/src/encode/input.rs | 2 + .../nsh/crates/nsh-platform-web/src/event.rs | 74 +- .../nsh/crates/nsh-platform-web/src/ffi.rs | 30 +- .../nsh/crates/nsh-platform-web/src/lib.rs | 185 +- .../nsh-platform-web/tests/text/animated.rs | 55 + .../nsh-platform-web/tests/text/main.rs | 36 +- .../nsh-platform-web/web/browser/bootstrap.js | 6153 ++++- .../web/browser/browser-check.py | 597 +- .../nsh-platform-web/web/browser/dom.js | 13 +- .../web/browser/environment.js | 54 +- .../web/browser/environment.test.mjs | 135 + .../nsh-platform-web/web/browser/i18n.js | 53 + .../web/browser/i18n.test.mjs | 66 + .../nsh-platform-web/web/browser/keymap.js | 6 +- .../nsh-platform-web/web/browser/list.js | 6 +- .../web/browser/reactive.test.mjs | 62 +- .../nsh-platform-web/web/browser/runtime.js | 121 +- .../nsh-platform-web/web/browser/scope.js | 28 +- .../web/browser/scope.test.mjs | 41 + .../nsh/crates/nsh-platform-web/web/nsh.js | 1338 +- .../crates/nsh-platform-web/web/nsh.test.mjs | 615 +- .../web/scroll-browser.test.mjs | 60 + .../nsh-platform-web/web/scroll.test.mjs | 38 + .../web/text-browser.test.mjs | 50 + .../crates/nsh-platform-windows/Cargo.toml | 33 +- .../examples/transparent.rs | 88 + .../crates/nsh-platform-windows/src/access.rs | 43 +- .../nsh-platform-windows/src/access/uia.rs | 170 +- .../crates/nsh-platform-windows/src/agent.rs | 156 +- .../crates/nsh-platform-windows/src/app.rs | 424 +- .../nsh-platform-windows/src/app_window.rs | 874 + .../crates/nsh-platform-windows/src/audio.rs | 1185 + .../crates/nsh-platform-windows/src/chrome.rs | 940 +- .../nsh-platform-windows/src/compose.rs | 56 +- .../crates/nsh-platform-windows/src/dev.rs | 37 +- .../nsh-platform-windows/src/file_requests.rs | 32 +- .../crates/nsh-platform-windows/src/fps.rs | 4 +- .../crates/nsh-platform-windows/src/gfx.rs | 305 +- .../src/global_shortcut.rs | 242 + .../crates/nsh-platform-windows/src/image.rs | 169 +- .../crates/nsh-platform-windows/src/input.rs | 343 +- .../crates/nsh-platform-windows/src/keymap.rs | 30 +- .../crates/nsh-platform-windows/src/lib.rs | 12 +- .../nsh-platform-windows/src/linking.rs | 385 + .../crates/nsh-platform-windows/src/mount.rs | 136 +- .../crates/nsh-platform-windows/src/native.rs | 85 +- .../nsh-platform-windows/src/native/video.rs | 31 +- .../nsh-platform-windows/src/native/web.rs | 243 +- .../nsh-platform-windows/src/navigation.rs | 371 +- .../nsh-platform-windows/src/notifications.rs | 766 + .../crates/nsh-platform-windows/src/render.rs | 223 +- .../crates/nsh-platform-windows/src/scroll.rs | 22 +- .../src/selectable_view.rs | 92 +- .../crates/nsh-platform-windows/src/shader.rs | 6 +- .../crates/nsh-platform-windows/src/shell.rs | 1182 + .../nsh-platform-windows/src/surface.rs | 391 +- .../crates/nsh-platform-windows/src/synth.rs | 42 +- .../crates/nsh-platform-windows/src/system.rs | 205 +- .../nsh-platform-windows/src/terminal.rs | 7 +- .../nsh-platform-windows/src/text_input.rs | 326 +- .../nsh-platform-windows/src/transition.rs | 178 +- .../crates/nsh-platform-windows/src/tray.rs | 462 + .../crates/nsh-platform-windows/src/view.rs | 32 +- .../crates/nsh-platform-windows/src/window.rs | 841 +- .../nsh-platform-windows/src/window_close.rs | 123 + .../nsh-platform-windows/src/window_state.rs | 547 + .../src/window_state/screens.rs | 575 + third-party/nsh/crates/nsh-testing/Cargo.toml | 7 +- .../nsh/crates/nsh-testing/src/agent.rs | 150 +- .../nsh/crates/nsh-testing/src/driver.rs | 86 +- .../nsh/crates/nsh-testing/src/failure.rs | 13 + .../crates/nsh-testing/src/headless/audio.rs | 277 + .../nsh-testing/src/headless/keyboard.rs | 157 +- .../crates/nsh-testing/src/headless/menus.rs | 16 +- .../crates/nsh-testing/src/headless/mod.rs | 1056 +- .../nsh-testing/src/headless/pointer.rs | 71 +- .../nsh-testing/src/headless/windows.rs | 798 + third-party/nsh/crates/nsh-testing/src/lib.rs | 10 +- .../nsh/crates/nsh-testing/src/menu.rs | 1 + .../nsh/crates/nsh-testing/src/module.rs | 320 +- third-party/nsh/crates/nsh-testing/src/run.rs | 44 +- .../nsh/crates/nsh-testing/src/runner.rs | 2 +- .../nsh/crates/nsh-testing/src/screen.rs | 893 +- .../nsh/crates/nsh-testing/src/window_json.rs | 89 + .../tests/testing/environment/App.test.tsx | 63 + .../tests/testing/environment/App.tsx | 23 +- .../tests/testing/fonts/App.test.tsx | 19 + .../nsh-testing/tests/testing/fonts/App.tsx | 25 + .../testing/fonts/Pacifico-Regular.woff2 | Bin 0 -> 120544 bytes .../tests/testing/hit/App.test.tsx | 18 + .../nsh-testing/tests/testing/hit/App.tsx | 40 + .../crates/nsh-testing/tests/testing/main.rs | 31 +- .../tests/testing/platform/App.test.tsx | 14 + .../tests/testing/platform/Tabs.tsx | 25 + .../tests/testing/windows/App.test.tsx | 91 + .../nsh-testing/tests/testing/windows/App.tsx | 69 + third-party/nsh/crates/nsh-tui-app/Cargo.toml | 20 - third-party/nsh/crates/nsh-tui-app/src/lib.rs | 153 - .../nsh/crates/nsh-tui-app/src/main.rs | 5 - .../nsh/crates/nsh-tui-host/Cargo.toml | 24 +- .../nsh/crates/nsh-tui-host/src/assets.rs | 28 + .../nsh/crates/nsh-tui-host/src/clipboard.rs | 95 + .../nsh/crates/nsh-tui-host/src/lib.rs | 286 +- .../nsh/crates/nsh-tui-host/src/logging.rs | 44 + .../nsh/crates/nsh-tui-host/src/main.rs | 10 +- .../nsh/crates/nsh-tui-host/src/shutdown.rs | 88 + .../nsh/crates/nsh-tui-host/src/terminal.rs | 849 + .../nsh-tui-host/src/terminal/input_tests.rs | 300 + .../crates/nsh-tui-host/src/terminal/unix.rs | 248 + .../nsh-tui-host/tests/fixtures/agent/App.tsx | 15 + .../tests/fixtures/agent/Scroll.tsx | 17 + .../tests/fixtures/agent/agent.test.tsx | 38 + .../tests/fixtures/agent/error.tsx | 1 + .../tests/fixtures/animation/App.tsx | 30 + .../fixtures/animation/animation.test.tsx | 19 + .../tests/fixtures/controls/App.tsx | 9 + .../tests/fixtures/controls/Controls.test.tsx | 152 + .../tests/fixtures/controls/nsh.json | 6 + .../tests/fixtures/performance/DataTable.tsx | 12 + .../tests/fixtures/performance/LongList.tsx | 54 + .../tests/fixtures/pointer/App.tsx | 1 + .../tests/fixtures/pointer/Gestures.tsx | 4 + .../tests/fixtures/pointer/Physics.tsx | 4 + .../tests/fixtures/pointer/Pointer.test.tsx | 33 + .../tests/fixtures/pointer/Resizable.tsx | 4 + .../tests/fixtures/pointer/nsh.json | 6 + .../tests/fixtures/search/App.tsx | 16 + .../tests/fixtures/search/search.test.tsx | 26 + .../tests/fixtures/text-input/App.tsx | 21 + .../tests/fixtures/text-input/Form.tsx | 97 + .../tests/fixtures/text-input/Input.test.tsx | 53 + .../crates/nsh-tui-host/tests/host/counter.rs | 203 + .../nsh/crates/nsh-tui-host/tests/host/dev.rs | 292 + .../nsh-tui-host/tests/host/lifecycle.rs | 545 + .../tests/host/lifecycle/supervise.rs | 347 + .../crates/nsh-tui-host/tests/host/main.rs | 24 + .../nsh-tui-host/tests/host/performance.rs | 269 + .../nsh-tui-host/tests/host/text_input.rs | 61 + third-party/nsh/crates/nsh-updater/Cargo.toml | 27 + .../nsh/crates/nsh-updater/src/install.rs | 620 + third-party/nsh/crates/nsh-updater/src/lib.rs | 796 + .../nsh/crates/nsh-windows-app/Cargo.toml | 18 +- .../nsh/crates/nsh-windows-app/src/lib.rs | 27 +- .../nsh/crates/nsh-windows-host/src/lib.rs | 12 +- third-party/nsh/crates/xtask/src/android.rs | 99 +- third-party/nsh/crates/xtask/src/compat.rs | 2 + third-party/nsh/crates/xtask/src/dist.rs | 302 +- third-party/nsh/crates/xtask/src/run.rs | 21 +- third-party/nsh/crates/xtask/src/term.rs | 16 +- third-party/nsh/crates/xtask/src/web.rs | 25 +- .../benchmarks/linux-memory-2026-11-05.json | 2949 +++ .../linux-memory-baseline-2026-11-05.json | 572 + third-party/nsh/docs/dev/README.md | 2 - third-party/nsh/docs/dev/animation.md | 27 +- third-party/nsh/docs/dev/api-naming.md | 51 +- third-party/nsh/docs/dev/architecture.md | 18 +- third-party/nsh/docs/dev/audio-design.md | 453 + third-party/nsh/docs/dev/browser-js-size.md | 4 +- third-party/nsh/docs/dev/canvas.md | 5 +- third-party/nsh/docs/dev/compatibility.md | 13 +- third-party/nsh/docs/dev/components.md | 113 +- third-party/nsh/docs/dev/data-table.md | 13 +- third-party/nsh/docs/dev/diff.md | 18 +- third-party/nsh/docs/dev/dock.md | 21 +- third-party/nsh/docs/dev/editor.md | 10 +- third-party/nsh/docs/dev/elements.md | 93 +- third-party/nsh/docs/dev/embedding.md | 88 +- third-party/nsh/docs/dev/features.md | 30 + third-party/nsh/docs/dev/file-drop.md | 12 + third-party/nsh/docs/dev/geometry.md | 2 +- third-party/nsh/docs/dev/gpui.md | 151 +- .../nsh/docs/dev/image-loading-design.md | 6 +- third-party/nsh/docs/dev/images.md | 46 +- third-party/nsh/docs/dev/js-modules.md | 105 +- third-party/nsh/docs/dev/layerfs.md | 100 - third-party/nsh/docs/dev/linux.md | 207 +- third-party/nsh/docs/dev/macos.md | 200 +- third-party/nsh/docs/dev/native-pipeline.md | 2 +- third-party/nsh/docs/dev/performance.md | 284 +- third-party/nsh/docs/dev/pitfalls.md | 113 +- third-party/nsh/docs/dev/rich-editor.md | 4 +- third-party/nsh/docs/dev/rust-classes.md | 2 +- third-party/nsh/docs/dev/sandbox.md | 14 +- .../nsh/docs/dev/scrolling-and-lists.md | 50 +- third-party/nsh/docs/dev/shaders.md | 34 +- third-party/nsh/docs/dev/signed-packages.md | 9 +- third-party/nsh/docs/dev/styles.md | 167 +- third-party/nsh/docs/dev/text-view.md | 99 +- third-party/nsh/docs/dev/text.md | 22 +- third-party/nsh/docs/dev/tooling.md | 166 +- third-party/nsh/docs/dev/tui.md | 1736 +- third-party/nsh/docs/dev/updater.md | 105 + third-party/nsh/docs/dev/web.md | 173 +- third-party/nsh/docs/dev/windows.md | 116 +- third-party/nsh/examples/bench/README.md | 6 + .../nsh/examples/bench/data-table/App.tsx | 41 + .../nsh/examples/bench/data-table/nsh.json | 4 + .../examples/bench/data-table/scroll.test.tsx | 9 + third-party/nsh/examples/desktop/App.tsx | 9 +- .../nsh/examples/embed-android/README.md | 4 +- third-party/nsh/examples/embed-ios/README.md | 4 +- third-party/nsh/examples/embedded/App.tsx | 2 +- .../nsh/examples/gallery-rs/canvas.test.tsx | 2 +- third-party/nsh/examples/gallery-rs/icon.png | Bin 90237 -> 499674 bytes .../nsh/examples/gallery-rs/images.test.tsx | 2 +- .../nsh/examples/gallery-rs/index.test.tsx | 5 +- .../nsh/examples/gallery-rs/media.test.tsx | 30 +- .../gallery-rs/native/assets/bounce.gif | Bin 3418 -> 7709 bytes .../gallery-rs/native/assets/logo@2x.png | Bin 2772 -> 8608 bytes .../gallery-rs/native/assets/spinner.webp | Bin 9948 -> 72290 bytes .../examples/gallery-rs/native/src/assets.rs | 2 +- .../gallery-rs/native/src/demos/animations.rs | 1 + .../gallery-rs/native/src/demos/canvas.rs | 311 +- .../native/src/demos/chat/markdown.rs | 7 +- .../gallery-rs/native/src/demos/chat/parts.rs | 23 +- .../native/src/demos/chat/scripts.rs | 2 +- .../gallery-rs/native/src/demos/components.rs | 1 + .../gallery-rs/native/src/demos/file_drop.rs | 73 +- .../gallery-rs/native/src/demos/gestures.rs | 16 +- .../gallery-rs/native/src/demos/images.rs | 78 +- .../gallery-rs/native/src/demos/media.rs | 64 +- .../gallery-rs/native/src/demos/mod.rs | 13 +- .../gallery-rs/native/src/demos/photos.rs | 5 +- .../gallery-rs/native/src/demos/physics.rs | 1 + .../gallery-rs/native/src/demos/scrolling.rs | 167 +- .../gallery-rs/native/src/demos/spacex.rs | 37 + .../native/src/demos/stocks/detail.rs | 122 +- .../gallery-rs/native/src/demos/stocks/mod.rs | 8 +- .../native/src/demos/stocks/parts.rs | 7 + .../native/src/demos/stocks/tape.rs | 102 +- .../native/src/demos/stocks/ticket.rs | 12 +- .../gallery-rs/native/src/demos/styles.rs | 3 +- .../gallery-rs/native/src/demos/text_demo.rs | 99 +- .../native/src/demos/typed_styles.rs | 2 +- .../examples/gallery-rs/native/src/main.rs | 2 - .../examples/gallery-rs/native/src/shell.rs | 137 +- .../gallery-rs/native/src/ui/controls.rs | 12 +- .../gallery-rs/native/src/ui/icons.rs | 23 +- .../gallery-rs/native/src/ui/layout.rs | 33 +- .../examples/gallery-rs/native/src/ui/mod.rs | 6 +- .../examples/gallery-rs/native/src/ui/page.rs | 72 +- .../gallery-rs/native/src/ui/parts.rs | 136 +- .../gallery-rs/native/src/ui/theme.rs | 4 +- .../examples/gallery-rs/scrolling.test.tsx | 1 - .../nsh/examples/gallery-rs/theme.json | 38 +- third-party/nsh/examples/gallery/App.tsx | 328 +- third-party/nsh/examples/gallery/TitleBar.tsx | 7 +- third-party/nsh/examples/gallery/bounce.gif | Bin 3418 -> 7709 bytes .../examples/gallery/demos/AccordionDemo.tsx | 109 +- .../nsh/examples/gallery/demos/Animations.tsx | 92 +- .../nsh/examples/gallery/demos/AvatarDemo.tsx | 79 +- .../nsh/examples/gallery/demos/ButtonDemo.tsx | 106 +- .../nsh/examples/gallery/demos/CanvasDemo.tsx | 275 +- .../examples/gallery/demos/CarouselDemo.tsx | 154 +- .../nsh/examples/gallery/demos/Charts.tsx | 247 +- .../nsh/examples/gallery/demos/Chat.tsx | 50 +- .../gallery/demos/CollapsingHeader.tsx | 13 +- .../gallery/demos/ColorPickerDemo.tsx | 228 +- .../examples/gallery/demos/CommandDemo.tsx | 21 +- .../nsh/examples/gallery/demos/Components.tsx | 28 +- .../nsh/examples/gallery/demos/Controls.tsx | 1316 +- .../examples/gallery/demos/DataTableDemo.tsx | 29 +- .../nsh/examples/gallery/demos/DiffDemo.tsx | 54 +- .../nsh/examples/gallery/demos/Dock.tsx | 91 +- .../nsh/examples/gallery/demos/EditorDemo.tsx | 37 +- .../nsh/examples/gallery/demos/Form.tsx | 187 +- .../nsh/examples/gallery/demos/Gestures.tsx | 16 +- .../examples/gallery/demos/HoverCardDemo.tsx | 60 +- .../nsh/examples/gallery/demos/Images.tsx | 71 +- .../nsh/examples/gallery/demos/LinkDemo.tsx | 61 +- .../nsh/examples/gallery/demos/Lists.tsx | 93 +- .../nsh/examples/gallery/demos/Media.tsx | 16 +- .../nsh/examples/gallery/demos/Menus.tsx | 156 +- .../nsh/examples/gallery/demos/Navigation.tsx | 44 +- .../gallery/demos/NotificationsDemo.tsx | 57 + .../nsh/examples/gallery/demos/OverlayUi.tsx | 21 +- .../nsh/examples/gallery/demos/Overlays.tsx | 84 - .../examples/gallery/demos/PaginationDemo.tsx | 67 +- .../nsh/examples/gallery/demos/Photos.tsx | 38 +- .../nsh/examples/gallery/demos/Physics.tsx | 6 +- .../nsh/examples/gallery/demos/Popovers.tsx | 8 +- .../nsh/examples/gallery/demos/Resizable.tsx | 36 +- .../examples/gallery/demos/RichEditorDemo.tsx | 73 +- .../examples/gallery/demos/RichEditorUi.tsx | 47 +- .../nsh/examples/gallery/demos/Scrolling.tsx | 83 +- .../nsh/examples/gallery/demos/Shaders.tsx | 45 +- .../nsh/examples/gallery/demos/Sheets.tsx | 50 +- .../examples/gallery/demos/ShortcutDemo.tsx | 38 + .../nsh/examples/gallery/demos/SoundDemo.tsx | 63 + .../nsh/examples/gallery/demos/Stocks.tsx | 178 +- .../nsh/examples/gallery/demos/Storage.tsx | 2 +- .../nsh/examples/gallery/demos/Styles.tsx | 62 +- .../nsh/examples/gallery/demos/System.tsx | 47 +- .../nsh/examples/gallery/demos/Tailwind.tsx | 51 +- .../examples/gallery/demos/TerminalDemo.tsx | 172 + .../nsh/examples/gallery/demos/TextDemo.tsx | 77 +- .../examples/gallery/demos/TextViewDemo.tsx | 67 +- .../nsh/examples/gallery/demos/Toasts.tsx | 23 +- .../nsh/examples/gallery/demos/ToggleDemo.tsx | 219 +- .../examples/gallery/demos/ToolbarDemo.tsx | 238 +- .../nsh/examples/gallery/demos/Tooltips.tsx | 21 +- .../nsh/examples/gallery/demos/TrayDemo.tsx | 51 + .../nsh/examples/gallery/demos/TreeDemo.tsx | 37 +- .../nsh/examples/gallery/demos/Updater.tsx | 57 + .../examples/gallery/demos/UrlSchemeDemo.tsx | 26 + .../examples/gallery/demos/WindowsDemo.tsx | 893 + .../examples/gallery/demos/chat/markdown.tsx | 3 +- .../examples/gallery/demos/chat/scripts.ts | 2 +- .../examples/gallery/demos/stocks/Book.tsx | 177 +- .../examples/gallery/demos/stocks/Detail.tsx | 141 +- .../examples/gallery/demos/stocks/Tape.tsx | 172 +- .../examples/gallery/demos/stocks/Ticket.tsx | 62 +- .../examples/gallery/demos/stocks/parts.tsx | 25 +- third-party/nsh/examples/gallery/icon.png | Bin 90237 -> 499674 bytes third-party/nsh/examples/gallery/icons.tsx | 22 +- .../nsh/examples/gallery/logo-dark.svg | 25 +- .../nsh/examples/gallery/logo-light.svg | 25 +- third-party/nsh/examples/gallery/logo@2x.png | Bin 2772 -> 8608 bytes third-party/nsh/examples/gallery/mark.svg | 29 +- third-party/nsh/examples/gallery/nsh.json | 28 +- .../nsh/examples/gallery/scripts/sounds.mjs | 40 + .../nsh/examples/gallery/sounds/LICENSE | 21 + .../nsh/examples/gallery/sounds/README.md | 17 + .../nsh/examples/gallery/sounds/attention.wav | Bin 0 -> 49322 bytes .../nsh/examples/gallery/sounds/close.wav | Bin 0 -> 13068 bytes .../nsh/examples/gallery/sounds/error.wav | Bin 0 -> 14752 bytes .../nsh/examples/gallery/sounds/open.wav | Bin 0 -> 18134 bytes .../nsh/examples/gallery/sounds/ready.wav | Bin 0 -> 36232 bytes .../nsh/examples/gallery/sounds/select.wav | Bin 0 -> 8832 bytes .../nsh/examples/gallery/sounds/success.wav | Bin 0 -> 32036 bytes .../nsh/examples/gallery/sounds/tap.wav | Bin 0 -> 12992 bytes .../nsh/examples/gallery/sounds/toggle.wav | Bin 0 -> 9298 bytes .../nsh/examples/gallery/sounds/warning.wav | Bin 0 -> 14956 bytes third-party/nsh/examples/gallery/spinner.webp | Bin 9948 -> 72290 bytes third-party/nsh/examples/gallery/star.svg | 10 +- .../nsh/examples/gallery/tests/audio.test.tsx | 37 + .../examples/gallery/tests/avatar.test.tsx | 13 +- .../examples/gallery/tests/carousel.test.tsx | 20 +- .../examples/gallery/tests/charts.test.tsx | 73 +- .../examples/gallery/tests/combobox.test.tsx | 2 +- .../gallery/tests/context-menu-press.test.tsx | 14 +- .../gallery/tests/context-menu.test.tsx | 8 +- .../gallery/tests/data-table.test.tsx | 41 +- .../examples/gallery/tests/editor.test.tsx | 3 + .../examples/gallery/tests/fixtures/audio.tsx | 97 + .../tests/fixtures/selection-change.tsx | 41 + .../gallery/tests/fixtures/window-focus.tsx | 52 + .../gallery/tests/fixtures/windows.tsx | 218 + .../gallery/tests/gallery-ui.test.tsx | 4 +- .../examples/gallery/tests/mention.test.tsx | 2 +- .../examples/gallery/tests/overlays.test.tsx | 14 +- .../examples/gallery/tests/resizable.test.tsx | 9 +- .../tests/rich-editor-session.test.tsx | 2 + .../gallery/tests/rich-editor.test.tsx | 6 +- .../examples/gallery/tests/select.test.tsx | 8 +- .../gallery/tests/selection-change.test.tsx | 59 + .../gallery/tests/settings-menu.test.tsx | 20 + .../examples/gallery/tests/shortcuts.test.tsx | 2 +- .../examples/gallery/tests/sidebar.test.tsx | 19 +- .../nsh/examples/gallery/tests/sound.test.tsx | 60 + .../examples/gallery/tests/storage.test.tsx | 2 +- .../examples/gallery/tests/terminal.test.tsx | 43 + .../examples/gallery/tests/toolbar.test.tsx | 2 +- .../examples/gallery/tests/updater.test.tsx | 10 + .../gallery/tests/window-focus.test.tsx | 20 + .../gallery/tests/window-state.test.tsx | 85 + .../examples/gallery/tests/windows.test.tsx | 86 + third-party/nsh/examples/gallery/toast.tsx | 117 +- .../nsh/examples/gallery/tools/memory-gtk.c | 21 + .../nsh/examples/gallery/tools/memory.py | 124 + .../nsh/examples/gallery/tools/perf.py | 5 +- third-party/nsh/examples/gallery/ui.tsx | 249 +- third-party/nsh/examples/hopper/App.tsx | 6 +- third-party/nsh/examples/hopper/FINDINGS.md | 8 +- third-party/nsh/examples/hopper/ui.tsx | 52 +- third-party/nsh/examples/host-echo/App.tsx | 2 +- .../nsh/examples/nsh-gallery-ui/README.md | 41 +- .../nsh/examples/nsh-gallery-ui/avatar.ts | 45 +- .../nsh/examples/nsh-gallery-ui/command.tsx | 21 +- .../nsh/examples/nsh-gallery-ui/data-table.ts | 7 +- .../nsh/examples/nsh-gallery-ui/demo.ts | 221 +- .../nsh/examples/nsh-gallery-ui/finishes.json | 128 +- .../nsh/examples/nsh-gallery-ui/icons.tsx | 41 +- .../nsh/examples/nsh-gallery-ui/index.tsx | 520 +- .../examples/nsh-gallery-ui/look/button.ts | 293 + .../examples/nsh-gallery-ui/look/choice.tsx | 229 + .../nsh-gallery-ui/look/disclosure.tsx | 85 + .../examples/nsh-gallery-ui/look/field.tsx | 296 + .../examples/nsh-gallery-ui/look/listbox.tsx | 557 + .../nsh/examples/nsh-gallery-ui/look/menu.tsx | 189 + .../nsh/examples/nsh-gallery-ui/look/meter.ts | 114 + .../nsh/examples/nsh-gallery-ui/look/nav.tsx | 223 + .../examples/nsh-gallery-ui/look/overlay.ts | 227 + .../nsh/examples/nsh-gallery-ui/look/plot.ts | 69 + .../nsh/examples/nsh-gallery-ui/look/press.ts | 30 + .../examples/nsh-gallery-ui/look/surface.tsx | 240 + .../nsh-gallery-ui/look/switch-geometry.ts | 50 + .../examples/nsh-gallery-ui/look/switch.ts | 81 + .../nsh/examples/nsh-gallery-ui/look/tabs.tsx | 257 + .../nsh/examples/nsh-gallery-ui/look/tool.ts | 187 + .../nsh-gallery-ui/look/workspace.tsx | 175 + .../nsh/examples/nsh-gallery-ui/palette.ts | 11 +- .../nsh/examples/nsh-gallery-ui/photos.ts | 29 + .../nsh/examples/nsh-gallery-ui/popup.tsx | 9 +- .../nsh/examples/nsh-gallery-ui/segmented.tsx | 99 +- .../nsh/examples/nsh-gallery-ui/sound.ts | 67 + .../nsh/examples/nsh-gallery-ui/theme.json | 88 +- .../nsh/examples/nsh-gallery-ui/theme.ts | 103 +- .../nsh/examples/nsh-gallery-ui/tree.tsx | 35 +- third-party/nsh/examples/tasks-rs/Cargo.toml | 28 + third-party/nsh/examples/tasks-rs/nsh.json | 7 + .../tasks-rs/src/components/header.rs | 28 + .../examples/tasks-rs/src/components/mod.rs | 5 + third-party/nsh/examples/tasks-rs/src/lib.rs | 25 + third-party/nsh/examples/tasks-rs/src/main.rs | 30 + third-party/nsh/examples/tasks-rs/src/nav.rs | 42 + .../nsh/examples/tasks-rs/src/pages/mod.rs | 7 + .../tasks-rs/src/pages/task_detail.rs | 67 + .../examples/tasks-rs/src/pages/task_list.rs | 91 + .../nsh/examples/tasks-rs/src/shell.rs | 22 + .../nsh/examples/tasks-rs/src/store.rs | 90 + .../nsh/examples/tasks-rs/tests/flows.rs | 55 + third-party/nsh/examples/tasks/App.test.tsx | 33 + third-party/nsh/examples/tasks/App.tsx | 25 + .../nsh/examples/tasks/components/Header.tsx | 17 + third-party/nsh/examples/tasks/nav.ts | 6 + third-party/nsh/examples/tasks/nsh.json | 4 + .../nsh/examples/tasks/pages/TaskDetail.tsx | 42 + .../nsh/examples/tasks/pages/TaskList.tsx | 49 + third-party/nsh/examples/tasks/store.ts | 37 + .../tsconfig.json | 0 .../nsh/examples/terminal-workbench/App.tsx | 268 - .../nsh/examples/terminal-workbench/README.md | 100 - .../terminal-workbench/assets/OFL.txt | 93 - .../assets/Pacifico-Regular.ttf | Bin 342012 -> 0 bytes .../terminal-workbench/assets/runtime.png | Bin 2772 -> 0 bytes .../nsh/examples/terminal-workbench/data.ts | 73 - .../terminal-workbench/inspectors.tsx | 102 - .../nsh/examples/terminal-workbench/nsh.json | 8 - .../examples/terminal-workbench/theme.json | 28 - .../nsh/examples/terminal-workbench/ui.tsx | 72 - third-party/nsh/scripts/layerfs | 12 - .../nsh/skills/nsh-design-guides/SKILL.md | 61 + .../references/design-guides.md | 1256 + third-party/nsh/skills/nsh/SKILL.md | 272 + .../skills/nsh/references/coding-guides.md | 1239 + .../nsh/skills/nsh/references/mixed.md | 397 + .../nsh/skills/nsh/references/rust-recipe.md | 597 + .../nsh/skills/nsh/references/rust-testing.md | 261 + .../nsh/skills/nsh/references/rust-ui.md | 765 + third-party/nsh/skills/nsh/references/rust.md | 789 + .../nsh/skills/nsh/references/tooling.md | 307 + .../nsh/skills/nsh/references/tsx-recipe.md | 267 + third-party/nsh/skills/nsh/references/tsx.md | 519 + .../nsh/tests/compat/cases/base/App.tsx | 4 + .../tests/compat/cases/base/base-popups.tsx | 3 +- .../compat/cases/base/base-scrollbar.tsx | 8 +- .../cases/base/base-selectable-view.tsx | 31 +- .../compat/cases/base/base-set-theme.tsx | 67 + .../tests/compat/cases/base/base-terminal.tsx | 37 + .../compat/cases/base/base-text-view.tsx | 35 +- .../tests/compat/cases/base/base-toggle.tsx | 11 +- .../nsh/tests/compat/cases/base/script.txt | 109 +- .../nsh/tests/compat/cases/core/App.tsx | 8 +- .../tests/compat/cases/core/core-animated.tsx | 2 +- .../compat/cases/core/core-frame-rate.tsx | 50 + .../compat/cases/core/core-input-action.tsx | 22 - .../compat/cases/core/core-list-binding.tsx | 29 - .../nsh/tests/compat/cases/core/core-list.tsx | 65 +- .../tests/compat/cases/core/core-motion.tsx | 2 +- .../nsh/tests/compat/cases/core/script.txt | 47 +- .../nsh/tests/compat/cases/core/tsconfig.json | 4 - .../nsh/tests/compat/cases/core/web-load.tsx | 35 + .../nsh/tests/compat/cases/desktop/App.tsx | 35 + .../nsh/tests/compat/cases/desktop/nsh.json | 15 + .../nsh/tests/compat/cases/desktop/script.txt | 78 + .../compat/cases/desktop/window-access.tsx | 76 + .../compat/cases/desktop/window-element.tsx | 63 + .../compat/cases/desktop/window-open.tsx | 64 + .../compat/cases/desktop/window-props.tsx | 23 + .../tests/compat/cases/desktop/window-ref.tsx | 69 + .../cases/events/events-context-menu.tsx | 11 +- .../nsh/tests/compat/cases/events/script.txt | 12 +- .../nsh/tests/compat/cases/layout/App.tsx | 2 + .../cases/layout/core-register-font.tsx | 27 + .../nsh/tests/compat/cases/layout/script.txt | 5 + .../nsh/tests/compat/cases/macos/App.tsx | 4 + .../cases/macos/material-composition.tsx | 35 + .../compat/cases/macos/mod-access-denied.tsx | 1 + .../compat/cases/macos/mod-keymap-pass.tsx | 24 + .../nsh/tests/compat/cases/macos/script.txt | 34 + .../nsh/tests/compat/cases/modules/App.tsx | 12 + .../compat/cases/modules/locales/app.yml | 9 + .../cases/modules/mod-accessibility.tsx | 2 +- .../tests/compat/cases/modules/mod-audio.tsx | 54 + .../compat/cases/modules/mod-clipboard.tsx | 13 +- .../compat/cases/modules/mod-desktop.tsx | 65 +- .../tests/compat/cases/modules/mod-device.tsx | 20 +- .../tests/compat/cases/modules/mod-fps.tsx | 27 + .../compat/cases/modules/mod-host-channel.tsx | 2 +- .../tests/compat/cases/modules/mod-host.tsx | 2 +- .../tests/compat/cases/modules/mod-i18n.tsx | 30 + .../tests/compat/cases/modules/mod-keymap.tsx | 2 +- .../cases/modules/mod-notifications.tsx | 42 + .../tests/compat/cases/modules/mod-picker.tsx | 28 +- .../compat/cases/modules/mod-storage.tsx | 2 +- .../compat/cases/modules/mod-updater.tsx | 39 + .../compat/cases/modules/mod-url-scheme.tsx | 28 + .../nsh/tests/compat/cases/modules/nsh.json | 4 +- .../nsh/tests/compat/cases/modules/script.txt | 114 +- .../compat/cases/modules/sounds/click.wav | Bin 0 -> 1644 bytes .../nsh/tests/compat/cases/paint/script.txt | 6 +- .../compat/cases/props/props-list-follow.tsx | 7 + .../cases/props/props-media-webview.tsx | 5 +- .../cases/props/props-view-accessibility.tsx | 7 +- .../nsh/tests/compat/cases/props/script.txt | 12 +- .../nsh/tests/compat/cases/terminal/App.tsx | 27 + .../terminal/base-select-placeholder.tsx | 26 + .../cases/terminal/mod-device-terminal.tsx | 21 + .../nsh/tests/compat/cases/terminal/nsh.json | 4 + .../tests/compat/cases/terminal/script.txt | 18 + .../nsh/tests/compat/cases/web/script.txt | 1 + .../nsh/tests/compat/cases/web/web-fetch.tsx | 5 + .../nsh/tests/compat/examples/gallery.txt | 12 +- third-party/nsh/upstream.json | 9019 ++++--- third-party/nsh/website/.gitignore | 2 + third-party/nsh/website/DESIGN.md | 158 +- third-party/nsh/website/README.md | 35 +- third-party/nsh/website/demos/counter.tsx | 4 +- .../nsh/website/demos/el-accordion.tsx | 31 +- .../nsh/website/demos/el-alert-dialog.tsx | 16 +- third-party/nsh/website/demos/el-avatar.tsx | 16 +- third-party/nsh/website/demos/el-button.tsx | 38 +- third-party/nsh/website/demos/el-canvas.tsx | 4 +- third-party/nsh/website/demos/el-carousel.tsx | 82 +- third-party/nsh/website/demos/el-checkbox.tsx | 99 +- .../nsh/website/demos/el-collapsible.tsx | 63 +- .../nsh/website/demos/el-color-picker.tsx | 4 +- third-party/nsh/website/demos/el-combobox.tsx | 129 +- .../nsh/website/demos/el-date-picker.tsx | 268 +- third-party/nsh/website/demos/el-dialog.tsx | 27 +- .../nsh/website/demos/el-diff-view.tsx | 24 +- third-party/nsh/website/demos/el-dock.tsx | 61 +- third-party/nsh/website/demos/el-editor.tsx | 6 +- .../nsh/website/demos/el-hover-card.tsx | 42 +- third-party/nsh/website/demos/el-image.tsx | 64 +- third-party/nsh/website/demos/el-input.tsx | 4 +- third-party/nsh/website/demos/el-keyboard.tsx | 21 +- third-party/nsh/website/demos/el-link.tsx | 37 +- third-party/nsh/website/demos/el-list.tsx | 4 +- third-party/nsh/website/demos/el-menu.tsx | 106 +- .../nsh/website/demos/el-number-input.tsx | 114 +- .../nsh/website/demos/el-otp-input.tsx | 48 +- third-party/nsh/website/demos/el-overlay.tsx | 5 +- .../nsh/website/demos/el-pagination.tsx | 32 +- .../nsh/website/demos/el-plot-cells.tsx | 8 +- .../nsh/website/demos/el-plot-dots.tsx | 19 +- .../nsh/website/demos/el-plot-dual.tsx | 23 +- third-party/nsh/website/demos/el-plot-pie.tsx | 4 +- .../nsh/website/demos/el-plot-ranges.tsx | 26 +- .../nsh/website/demos/el-plot-treemap.tsx | 6 +- third-party/nsh/website/demos/el-plot.tsx | 51 +- third-party/nsh/website/demos/el-popover.tsx | 12 +- third-party/nsh/website/demos/el-progress.tsx | 86 +- third-party/nsh/website/demos/el-radio.tsx | 76 +- .../nsh/website/demos/el-resizable.tsx | 15 +- .../nsh/website/demos/el-rich-editor.tsx | 104 +- .../nsh/website/demos/el-safe-area.tsx | 17 +- .../nsh/website/demos/el-scrollbar.tsx | 23 +- third-party/nsh/website/demos/el-select.tsx | 152 +- third-party/nsh/website/demos/el-shader.tsx | 13 +- third-party/nsh/website/demos/el-sheet.tsx | 28 +- third-party/nsh/website/demos/el-slider.tsx | 24 +- third-party/nsh/website/demos/el-switch.tsx | 41 +- third-party/nsh/website/demos/el-table.tsx | 4 +- third-party/nsh/website/demos/el-tabs.tsx | 96 +- third-party/nsh/website/demos/el-terminal.tsx | 131 + .../nsh/website/demos/el-text-selection.tsx | 6 +- third-party/nsh/website/demos/el-toast.tsx | 12 +- third-party/nsh/website/demos/el-toggle.tsx | 50 +- third-party/nsh/website/demos/el-toolbar.tsx | 48 +- third-party/nsh/website/demos/el-tooltip.tsx | 23 +- third-party/nsh/website/demos/el-tree.tsx | 6 +- third-party/nsh/website/demos/el-video.tsx | 43 +- third-party/nsh/website/demos/el-web-view.tsx | 4 +- .../nsh/website/demos/guide-components.tsx | 4 +- .../nsh/website/demos/guide-device.tsx | 4 +- third-party/nsh/website/demos/guide-forms.tsx | 5 +- .../nsh/website/demos/guide-layout.tsx | 49 +- .../nsh/website/demos/guide-reactivity.tsx | 4 +- .../nsh/website/demos/hero-chat/Chat.tsx | 762 - .../website/demos/hero-chat/ImageViewer.tsx | 159 - .../website/demos/hero-chat/chat/glyphs.tsx | 132 - .../website/demos/hero-chat/chat/markdown.tsx | 57 - .../website/demos/hero-chat/chat/parts.tsx | 328 - .../website/demos/hero-chat/chat/scripts.ts | 282 - .../nsh/website/demos/hero-chat/icons.tsx | 226 - .../nsh/website/demos/hero-chat/ui.tsx | 780 - third-party/nsh/website/demos/home-chat.tsx | 406 +- third-party/nsh/website/demos/palette.ts | 5 +- third-party/nsh/website/demos/text-view.tsx | 7 +- third-party/nsh/website/docs/accessibility.md | 4 +- third-party/nsh/website/docs/android.md | 17 + third-party/nsh/website/docs/animation.md | 39 +- third-party/nsh/website/docs/app-updates.md | 134 + third-party/nsh/website/docs/cli.md | 77 +- third-party/nsh/website/docs/coding-guides.md | 51 +- third-party/nsh/website/docs/comparison.md | 2 +- third-party/nsh/website/docs/design-guides.md | 83 + .../website/docs/dev-server-and-debugging.md | 14 +- .../website/docs/device-and-environment.md | 151 +- third-party/nsh/website/docs/fonts.md | 34 +- .../nsh/website/docs/getting-started.md | 5 +- third-party/nsh/website/docs/gpui.md | 5 +- third-party/nsh/website/docs/i18n.md | 253 + .../nsh/website/docs/images-and-assets.md | 15 +- third-party/nsh/website/docs/index.md | 3 +- third-party/nsh/website/docs/installation.md | 21 +- third-party/nsh/website/docs/ios.md | 1 + .../nsh/website/docs/jsx-and-components.md | 2 +- third-party/nsh/website/docs/layerfs.md | 104 - third-party/nsh/website/docs/linux.md | 47 +- third-party/nsh/website/docs/lists.md | 28 +- third-party/nsh/website/docs/macos.md | 53 +- third-party/nsh/website/docs/ota-updates.md | 414 + third-party/nsh/website/docs/packaging.md | 194 +- .../nsh/website/docs/performance-report.md | 131 +- third-party/nsh/website/docs/performance.md | 16 +- .../nsh/website/docs/platform-specific.md | 27 +- third-party/nsh/website/docs/platforms.md | 19 +- .../nsh/website/docs/project-structure.md | 40 +- third-party/nsh/website/docs/reactivity.md | 2 +- third-party/nsh/website/docs/rust.md | 33 +- .../website/docs/sandbox-and-capabilities.md | 42 +- third-party/nsh/website/docs/scrolling.md | 4 +- .../nsh/website/docs/signed-packages.md | 9 +- third-party/nsh/website/docs/styling.md | 68 +- third-party/nsh/website/docs/tailwind.md | 5 +- .../nsh/website/docs/testing-and-trace.md | 45 +- third-party/nsh/website/docs/text.md | 5 + .../nsh/website/docs/touch-and-gestures.md | 10 + third-party/nsh/website/docs/tui.md | 587 +- .../nsh/website/docs/web-view-and-video.md | 93 +- third-party/nsh/website/docs/web.md | 57 +- third-party/nsh/website/docs/windows.md | 16 +- third-party/nsh/website/elements/button.md | 46 +- third-party/nsh/website/elements/calendar.md | 11 +- .../nsh/website/elements/color-picker.md | 2 +- third-party/nsh/website/elements/combobox.md | 9 +- .../nsh/website/elements/data-table.md | 6 +- .../nsh/website/elements/date-picker.md | 3 +- third-party/nsh/website/elements/diff-view.md | 14 +- third-party/nsh/website/elements/dock.md | 4 +- third-party/nsh/website/elements/editor.md | 5 +- third-party/nsh/website/elements/index.md | 17 +- third-party/nsh/website/elements/input.md | 39 +- third-party/nsh/website/elements/list.md | 6 +- third-party/nsh/website/elements/menu.md | 38 +- third-party/nsh/website/elements/nav-stack.md | 3 + third-party/nsh/website/elements/popover.md | 8 - third-party/nsh/website/elements/scroll.md | 2 +- third-party/nsh/website/elements/select.md | 10 +- third-party/nsh/website/elements/terminal.md | 108 + .../nsh/website/elements/text-selection.md | 86 +- third-party/nsh/website/elements/text-view.md | 55 +- third-party/nsh/website/elements/text.md | 2 + .../nsh/website/elements/time-field.md | 4 +- third-party/nsh/website/elements/toast.md | 3 +- third-party/nsh/website/elements/toggle.md | 23 +- third-party/nsh/website/elements/toolbar.md | 17 +- third-party/nsh/website/elements/tooltip.md | 19 +- third-party/nsh/website/elements/view.md | 8 +- third-party/nsh/website/elements/web-view.md | 2 + third-party/nsh/website/modules/globals.md | 6 +- third-party/nsh/website/modules/index.md | 4 +- third-party/nsh/website/modules/nsh-base.md | 3 +- .../nsh/website/modules/nsh-desktop.md | 574 +- third-party/nsh/website/modules/nsh-i18n.md | 67 + third-party/nsh/website/modules/nsh-image.md | 3 + third-party/nsh/website/modules/nsh-list.md | 18 +- .../nsh/website/modules/nsh-updater.md | 263 + .../nsh/website/modules/nsh-webview.md | 2 + third-party/nsh/website/modules/nsh.md | 589 +- .../nsh/website/modules/style-reference.md | 3 +- .../nsh/website/modules/tailwind-reference.md | 1 + third-party/nsh/website/package.json | 1 + .../nsh/website/public/apple-touch-icon.png | Bin 3355 -> 14201 bytes .../public/brand/nsh-app-icon-dark.png | Bin 0 -> 499674 bytes .../public/brand/nsh-app-icon-light.png | Bin 0 -> 517241 bytes .../website/public/brand/nsh-banner-dark.png | Bin 0 -> 1071634 bytes .../website/public/brand/nsh-banner-light.png | Bin 0 -> 1331901 bytes .../website/public/brand/nsh-logo-on-dark.png | Bin 0 -> 204280 bytes .../website/public/brand/nsh-logo-on-dark.svg | 23 + .../public/brand/nsh-logo-on-light.png | Bin 0 -> 194158 bytes .../public/brand/nsh-logo-on-light.svg | 23 + .../public/brand/nsh-logo-solid-black.png | Bin 0 -> 10774 bytes .../public/brand/nsh-logo-solid-black.svg | 4 + .../public/brand/nsh-logo-solid-citrus.png | Bin 0 -> 10774 bytes .../public/brand/nsh-logo-solid-citrus.svg | 4 + .../public/brand/nsh-logo-solid-white.png | Bin 0 -> 14280 bytes .../public/brand/nsh-logo-solid-white.svg | 4 + .../public/brand/nsh-social-preview-dark.png | Bin 0 -> 381386 bytes .../public/brand/nsh-social-preview-light.png | Bin 0 -> 449408 bytes third-party/nsh/website/public/favicon.svg | 43 +- third-party/nsh/website/public/icon-512.png | Bin 9869 -> 61715 bytes third-party/nsh/website/public/install.sh | 18 +- third-party/nsh/website/public/logo.svg | 23 +- third-party/nsh/website/public/og-image.png | Bin 0 -> 420208 bytes third-party/nsh/website/public/sounds/LICENSE | 21 + .../nsh/website/public/sounds/select.wav | Bin 0 -> 8832 bytes .../nsh/website/public/sounds/success.wav | Bin 0 -> 32036 bytes third-party/nsh/website/public/sounds/tap.wav | Bin 0 -> 12992 bytes third-party/nsh/website/scripts/versions.js | 41 +- .../nsh/website/src/components/Apps.astro | 9 +- .../nsh/website/src/components/Brand.astro | 289 + .../nsh/website/src/components/Gallery.astro | 10 +- .../website/src/components/HeroArches.astro | 385 + .../website/src/components/HeroField.astro | 706 - .../nsh/website/src/components/Home.astro | 1458 +- .../nsh/website/src/components/Logo.astro | 36 +- .../nsh/website/src/components/Nav.astro | 61 +- .../website/src/components/Playground.astro | 3 - .../nsh/website/src/components/Releases.astro | 152 + .../nsh/website/src/components/Sidebar.astro | 7 +- .../website/src/components/SiteFooter.astro | 3 + .../website/src/components/ThemeSwitch.astro | 3 + .../nsh/website/src/components/Toc.astro | 6 +- third-party/nsh/website/src/content.config.ts | 5 + third-party/nsh/website/src/home/en.json | 179 + third-party/nsh/website/src/home/zh-CN.json | 179 + .../nsh/website/src/layouts/BaseLayout.astro | 29 +- .../nsh/website/src/layouts/DocsLayout.astro | 54 +- .../nsh/website/src/lib/code-tabs-client.ts | 2 + .../nsh/website/src/lib/demo-client.ts | 12 +- third-party/nsh/website/src/lib/home.ts | 65 + third-party/nsh/website/src/lib/locales.ts | 72 + third-party/nsh/website/src/lib/releases.js | 86 + .../nsh/website/src/lib/remark-doc-links.js | 3 +- third-party/nsh/website/src/lib/sections.ts | 46 +- third-party/nsh/website/src/lib/sound.ts | 54 + .../src/pages/[locale]/[section].md.ts | 14 + .../pages/[locale]/[section]/[...slug].astro | 18 + .../pages/[locale]/[section]/[...slug].md.ts | 14 + .../website/src/pages/[locale]/index.astro | 45 + third-party/nsh/website/src/pages/brand.astro | 20 + third-party/nsh/website/src/pages/index.astro | 5 +- .../nsh/website/src/pages/releases.astro | 20 + .../nsh/website/src/pages/sitemap.xml.ts | 10 +- .../nsh/website/src/pages/zh-CN/brand.astro | 20 + .../nsh/website/src/pages/zh-CN/index.astro | 12 +- .../website/src/pages/zh-CN/releases.astro | 20 + third-party/nsh/website/src/styles/global.css | 314 +- third-party/nsh/website/src/styles/ui.css | 18 +- .../nsh/website/tests/doc-links.test.ts | 9 + .../nsh/website/tests/elements.test.ts | 2 +- .../website/tests/gallery-ui-colors.test.ts | 385 + .../website/tests/gallery-ui-switch.test.ts | 31 + .../nsh/website/tests/gallery-ui.test.ts | 60 +- third-party/nsh/website/tests/home.test.ts | 28 + .../nsh/website/tests/releases.test.ts | 31 + third-party/nsh/website/tests/skills.test.ts | 69 + .../nsh/website/zh-CN/docs/accessibility.md | 4 +- third-party/nsh/website/zh-CN/docs/android.md | 15 + .../nsh/website/zh-CN/docs/animation.md | 37 +- .../nsh/website/zh-CN/docs/app-updates.md | 116 + third-party/nsh/website/zh-CN/docs/cli.md | 73 +- .../nsh/website/zh-CN/docs/coding-guides.md | 31 +- .../nsh/website/zh-CN/docs/comparison.md | 8 +- .../nsh/website/zh-CN/docs/design-guides.md | 54 + .../zh-CN/docs/dev-server-and-debugging.md | 14 +- .../zh-CN/docs/device-and-environment.md | 135 +- third-party/nsh/website/zh-CN/docs/fonts.md | 34 +- .../nsh/website/zh-CN/docs/getting-started.md | 4 +- third-party/nsh/website/zh-CN/docs/gpui.md | 4 +- third-party/nsh/website/zh-CN/docs/i18n.md | 210 + .../website/zh-CN/docs/images-and-assets.md | 15 +- third-party/nsh/website/zh-CN/docs/index.md | 3 +- .../nsh/website/zh-CN/docs/installation.md | 21 +- third-party/nsh/website/zh-CN/docs/ios.md | 1 + third-party/nsh/website/zh-CN/docs/layerfs.md | 94 - third-party/nsh/website/zh-CN/docs/linux.md | 7 +- third-party/nsh/website/zh-CN/docs/lists.md | 28 +- third-party/nsh/website/zh-CN/docs/macos.md | 32 +- .../nsh/website/zh-CN/docs/ota-updates.md | 365 + .../nsh/website/zh-CN/docs/packaging.md | 155 +- .../website/zh-CN/docs/performance-report.md | 116 +- .../nsh/website/zh-CN/docs/performance.md | 12 +- .../website/zh-CN/docs/platform-specific.md | 27 +- .../nsh/website/zh-CN/docs/platforms.md | 17 +- .../website/zh-CN/docs/project-structure.md | 37 +- .../nsh/website/zh-CN/docs/reactivity.md | 2 +- third-party/nsh/website/zh-CN/docs/rust.md | 28 +- .../zh-CN/docs/sandbox-and-capabilities.md | 36 +- .../nsh/website/zh-CN/docs/scrolling.md | 4 +- .../nsh/website/zh-CN/docs/signed-packages.md | 7 +- third-party/nsh/website/zh-CN/docs/styling.md | 58 +- .../nsh/website/zh-CN/docs/tailwind.md | 5 +- .../website/zh-CN/docs/testing-and-trace.md | 43 +- third-party/nsh/website/zh-CN/docs/text.md | 4 + .../website/zh-CN/docs/touch-and-gestures.md | 8 + third-party/nsh/website/zh-CN/docs/tui.md | 500 +- .../website/zh-CN/docs/web-view-and-video.md | 89 +- third-party/nsh/website/zh-CN/docs/web.md | 39 +- third-party/nsh/website/zh-CN/docs/windows.md | 12 +- .../nsh/website/zh-CN/elements/button.md | 42 +- .../nsh/website/zh-CN/elements/calendar.md | 8 +- .../website/zh-CN/elements/color-picker.md | 2 +- .../nsh/website/zh-CN/elements/combobox.md | 6 +- .../nsh/website/zh-CN/elements/data-table.md | 6 +- .../nsh/website/zh-CN/elements/date-picker.md | 2 +- .../nsh/website/zh-CN/elements/diff-view.md | 10 +- .../nsh/website/zh-CN/elements/dock.md | 4 +- .../nsh/website/zh-CN/elements/editor.md | 4 +- .../nsh/website/zh-CN/elements/index.md | 10 +- .../nsh/website/zh-CN/elements/input.md | 2 + .../nsh/website/zh-CN/elements/list.md | 6 +- .../nsh/website/zh-CN/elements/menu.md | 27 +- .../nsh/website/zh-CN/elements/nav-stack.md | 1 + .../nsh/website/zh-CN/elements/popover.md | 5 - .../nsh/website/zh-CN/elements/scroll.md | 2 +- .../nsh/website/zh-CN/elements/select.md | 8 +- .../nsh/website/zh-CN/elements/terminal.md | 96 + .../website/zh-CN/elements/text-selection.md | 74 +- .../nsh/website/zh-CN/elements/text-view.md | 39 +- .../nsh/website/zh-CN/elements/text.md | 2 +- .../nsh/website/zh-CN/elements/time-field.md | 2 +- .../nsh/website/zh-CN/elements/toast.md | 2 +- .../nsh/website/zh-CN/elements/toggle.md | 21 +- .../nsh/website/zh-CN/elements/toolbar.md | 17 +- .../nsh/website/zh-CN/elements/tooltip.md | 10 +- .../nsh/website/zh-CN/elements/view.md | 6 +- .../nsh/website/zh-CN/elements/web-view.md | 2 + .../nsh/website/zh-CN/modules/globals.md | 6 +- .../nsh/website/zh-CN/modules/index.md | 4 +- .../nsh/website/zh-CN/modules/nsh-base.md | 3 +- .../nsh/website/zh-CN/modules/nsh-desktop.md | 566 +- .../nsh/website/zh-CN/modules/nsh-i18n.md | 56 + .../nsh/website/zh-CN/modules/nsh-image.md | 3 + .../nsh/website/zh-CN/modules/nsh-list.md | 17 +- .../nsh/website/zh-CN/modules/nsh-updater.md | 217 + .../nsh/website/zh-CN/modules/nsh-webview.md | 2 + third-party/nsh/website/zh-CN/modules/nsh.md | 503 +- .../website/zh-CN/modules/style-reference.md | 3 +- .../zh-CN/modules/tailwind-reference.md | 1 + 1571 files changed, 207209 insertions(+), 91957 deletions(-) create mode 100644 scripts/rust/licenses/declared-cc0-1.0.txt create mode 100644 third-party/nsh/.github/actions/cargo/action.yml delete mode 100644 third-party/nsh/.github/ci/layerfs.py delete mode 100644 third-party/nsh/.github/ci/layerfs/Dockerfile delete mode 100644 third-party/nsh/.github/ci/layerfs/prepare.Dockerfile delete mode 100644 third-party/nsh/.github/ci/layerfs/smoke.mjs delete mode 100644 third-party/nsh/.github/ci/test_layerfs.py delete mode 100644 third-party/nsh/.github/workflows/layerfs.yml create mode 100644 third-party/nsh/CONTEXT.md create mode 100644 third-party/nsh/crates/nsh-base/src/autoscroll.rs create mode 100644 third-party/nsh/crates/nsh-base/src/color_picker/tui.rs create mode 100644 third-party/nsh/crates/nsh-base/src/status_line.rs create mode 100644 third-party/nsh/crates/nsh-base/src/term/emulator.rs create mode 100644 third-party/nsh/crates/nsh-base/src/term/keys.rs create mode 100644 third-party/nsh/crates/nsh-base/src/term/mod.rs create mode 100644 third-party/nsh/crates/nsh-base/src/term/vt.rs create mode 100644 third-party/nsh/crates/nsh-base/src/terminal.rs create mode 100644 third-party/nsh/crates/nsh-base/src/text_view/markdown/autolink.rs create mode 100644 third-party/nsh/crates/nsh-base/src/text_view/markdown/cjk.rs create mode 100644 third-party/nsh/crates/nsh-base/src/text_view/markdown/offsets.rs create mode 100644 third-party/nsh/crates/nsh-base/src/text_view/selection.rs create mode 100644 third-party/nsh/crates/nsh-base/src/text_view/tex_text.rs create mode 100644 third-party/nsh/crates/nsh-base/tests/base/submenu.rs create mode 100644 third-party/nsh/crates/nsh-base/tests/base/terminal.rs create mode 100644 third-party/nsh/crates/nsh-bundler/examples/browser-bootstrap.js create mode 100644 third-party/nsh/crates/nsh-bundler/examples/browser_bootstrap.rs create mode 100644 third-party/nsh/crates/nsh-cli/src/apple.rs create mode 100644 third-party/nsh/crates/nsh-cli/src/play.rs create mode 100644 third-party/nsh/crates/nsh-cli/src/publish_ios.rs delete mode 100644 third-party/nsh/crates/nsh-cli/src/tui.rs create mode 100644 third-party/nsh/crates/nsh-cli/src/updater.rs create mode 100644 third-party/nsh/crates/nsh-cli/tests/cli/main.rs create mode 100644 third-party/nsh/crates/nsh-cli/tests/cli/runtime.rs create mode 100644 third-party/nsh/crates/nsh-cli/tests/cli/tui.rs create mode 100644 third-party/nsh/crates/nsh-cli/tests/fixtures/play-test-key.pem create mode 100644 third-party/nsh/crates/nsh-core/src/audio.rs create mode 100644 third-party/nsh/crates/nsh-core/src/core/resize_anchor.rs create mode 100644 third-party/nsh/crates/nsh-core/src/core/terminal_layout.rs create mode 100644 third-party/nsh/crates/nsh-core/src/desktop/menu_icon.rs create mode 100644 third-party/nsh/crates/nsh-core/src/desktop/window.rs create mode 100644 third-party/nsh/crates/nsh-core/src/desktop/window_state.rs create mode 100644 third-party/nsh/crates/nsh-core/src/element/audio.rs create mode 100644 third-party/nsh/crates/nsh-core/src/i18n.rs delete mode 100644 third-party/nsh/crates/nsh-core/src/input_tokens.rs create mode 100644 third-party/nsh/crates/nsh-core/src/notifications.rs create mode 100644 third-party/nsh/crates/nsh-core/src/restart.rs create mode 100644 third-party/nsh/crates/nsh-core/src/runtime/audio.rs create mode 100644 third-party/nsh/crates/nsh-core/src/runtime/fonts.rs create mode 100644 third-party/nsh/crates/nsh-core/src/runtime/fps.rs create mode 100644 third-party/nsh/crates/nsh-core/src/runtime/notifications.rs create mode 100644 third-party/nsh/crates/nsh-core/src/runtime/updater.rs create mode 100644 third-party/nsh/crates/nsh-core/src/runtime/url_scheme.rs create mode 100644 third-party/nsh/crates/nsh-core/src/url_scheme.rs create mode 100644 third-party/nsh/crates/nsh-core/src/web_resource.rs create mode 100644 third-party/nsh/crates/nsh-engine/src/shader_frame.rs create mode 100644 third-party/nsh/crates/nsh-engine/src/shader_off.rs create mode 100644 third-party/nsh/crates/nsh-engine/src/updates.rs create mode 100644 third-party/nsh/crates/nsh-engine/tests/engine/notifications.rs create mode 100644 third-party/nsh/crates/nsh-engine/tests/engine/url_scheme.rs create mode 100644 third-party/nsh/crates/nsh-i18n/Cargo.toml create mode 100644 third-party/nsh/crates/nsh-i18n/data/de.json create mode 100644 third-party/nsh/crates/nsh-i18n/data/en.json create mode 100644 third-party/nsh/crates/nsh-i18n/data/es.json create mode 100644 third-party/nsh/crates/nsh-i18n/data/fr.json create mode 100644 third-party/nsh/crates/nsh-i18n/data/hi.json create mode 100644 third-party/nsh/crates/nsh-i18n/data/id.json create mode 100644 third-party/nsh/crates/nsh-i18n/data/it.json create mode 100644 third-party/nsh/crates/nsh-i18n/data/ja.json create mode 100644 third-party/nsh/crates/nsh-i18n/data/ko.json create mode 100644 third-party/nsh/crates/nsh-i18n/data/nl.json create mode 100644 third-party/nsh/crates/nsh-i18n/data/pl.json create mode 100644 third-party/nsh/crates/nsh-i18n/data/pt.json create mode 100644 third-party/nsh/crates/nsh-i18n/data/ru.json create mode 100644 third-party/nsh/crates/nsh-i18n/data/sv.json create mode 100644 third-party/nsh/crates/nsh-i18n/data/th.json create mode 100644 third-party/nsh/crates/nsh-i18n/data/tr.json create mode 100644 third-party/nsh/crates/nsh-i18n/data/vi.json create mode 100644 third-party/nsh/crates/nsh-i18n/data/zh.json create mode 100644 third-party/nsh/crates/nsh-i18n/src/lib.rs create mode 100644 third-party/nsh/crates/nsh-i18n/tests/app/locales/app.yml create mode 100644 third-party/nsh/crates/nsh-i18n/tests/app/locales/extra.en.json create mode 100644 third-party/nsh/crates/nsh-js/src/i18n.rs rename third-party/nsh/crates/nsh-js/src/web/{intl => format}/date.rs (95%) create mode 100644 third-party/nsh/crates/nsh-js/src/web/format/locale.rs rename third-party/nsh/crates/nsh-js/src/web/{intl => format}/mod.rs (78%) rename third-party/nsh/crates/nsh-js/src/web/{intl => format}/number.rs (98%) delete mode 100644 third-party/nsh/crates/nsh-js/src/web/intl/locale.rs create mode 100644 third-party/nsh/crates/nsh-js/src/window.rs create mode 100644 third-party/nsh/crates/nsh-platform-android/java/com/longbridge/nsh/Audio.java create mode 100644 third-party/nsh/crates/nsh-platform-android/java/com/longbridge/nsh/FileRoots.java create mode 100644 third-party/nsh/crates/nsh-platform-android/java/com/longbridge/nsh/FilesProvider.java create mode 100644 third-party/nsh/crates/nsh-platform-android/java/com/longbridge/nsh/InputContent.java create mode 100644 third-party/nsh/crates/nsh-platform-android/java/com/longbridge/nsh/KeyboardAnimation.java create mode 100644 third-party/nsh/crates/nsh-platform-android/java/com/longbridge/nsh/Notifications.java create mode 100644 third-party/nsh/crates/nsh-platform-android/tests/java/com/longbridge/nsh/FileRootsTest.java create mode 100644 third-party/nsh/crates/nsh-platform-android/tests/java/com/longbridge/nsh/MovieDrawableSharing.java create mode 100644 third-party/nsh/crates/nsh-platform-apple/Cargo.toml create mode 100644 third-party/nsh/crates/nsh-platform-apple/src/audio.rs create mode 100644 third-party/nsh/crates/nsh-platform-apple/src/lib.rs create mode 100644 third-party/nsh/crates/nsh-platform-apple/src/notifications.rs rename third-party/nsh/crates/{nsh-platform-macos => nsh-platform-apple}/src/speech.rs (99%) create mode 100644 third-party/nsh/crates/nsh-platform-apple/src/web_scheme.rs create mode 100644 third-party/nsh/crates/nsh-platform-linux/src/audio.rs create mode 100644 third-party/nsh/crates/nsh-platform-linux/src/decor/bench.rs create mode 100644 third-party/nsh/crates/nsh-platform-linux/src/global_shortcut.rs create mode 100644 third-party/nsh/crates/nsh-platform-linux/src/key_focus.rs create mode 100644 third-party/nsh/crates/nsh-platform-linux/src/links.rs create mode 100644 third-party/nsh/crates/nsh-platform-linux/src/native/web_scheme.rs create mode 100644 third-party/nsh/crates/nsh-platform-linux/src/notifications.rs create mode 100644 third-party/nsh/crates/nsh-platform-linux/src/sound.rs create mode 100644 third-party/nsh/crates/nsh-platform-linux/src/tray.rs create mode 100644 third-party/nsh/crates/nsh-platform-linux/src/window.rs create mode 100644 third-party/nsh/crates/nsh-platform-linux/src/xtest.rs create mode 100644 third-party/nsh/crates/nsh-platform-macos/src/access/table.rs create mode 100644 third-party/nsh/crates/nsh-platform-macos/src/global_shortcut.rs create mode 100644 third-party/nsh/crates/nsh-platform-macos/src/tray.rs create mode 100644 third-party/nsh/crates/nsh-platform-macos/src/window.rs create mode 100644 third-party/nsh/crates/nsh-platform-macos/src/window_state.rs create mode 100644 third-party/nsh/crates/nsh-platform-macos/tests/accessibility.rs create mode 100644 third-party/nsh/crates/nsh-platform-macos/tests/accessibility/table.rs create mode 100644 third-party/nsh/crates/nsh-platform-macos/tests/background.rs create mode 100644 third-party/nsh/crates/nsh-platform-macos/tests/draw_on_show.rs create mode 100644 third-party/nsh/crates/nsh-platform-macos/tests/host/App.test.tsx create mode 100644 third-party/nsh/crates/nsh-platform-macos/tests/host/App.tsx create mode 100644 third-party/nsh/crates/nsh-platform-macos/tests/host/Edit.test.tsx create mode 100644 third-party/nsh/crates/nsh-platform-macos/tests/host/Edit.tsx create mode 100644 third-party/nsh/crates/nsh-platform-macos/tests/host/Nav.test.tsx create mode 100644 third-party/nsh/crates/nsh-platform-macos/tests/host/Nav.tsx create mode 100644 third-party/nsh/crates/nsh-platform-macos/tests/host/TitleBar.test.tsx create mode 100644 third-party/nsh/crates/nsh-platform-macos/tests/host/TitleBar.tsx create mode 100644 third-party/nsh/crates/nsh-platform-macos/tests/host/nsh.json create mode 100644 third-party/nsh/crates/nsh-platform-macos/tests/native/main.rs create mode 100644 third-party/nsh/crates/nsh-platform-macos/tests/native/title_bar.rs create mode 100644 third-party/nsh/crates/nsh-platform-macos/tests/native/window_press.rs create mode 100644 third-party/nsh/crates/nsh-platform-tui/src/agent.rs create mode 100644 third-party/nsh/crates/nsh-platform-tui/src/canvas/path.rs delete mode 100644 third-party/nsh/crates/nsh-platform-tui/src/composite.rs delete mode 100644 third-party/nsh/crates/nsh-platform-tui/src/composite/blend.rs delete mode 100644 third-party/nsh/crates/nsh-platform-tui/src/composite/effects.rs create mode 100644 third-party/nsh/crates/nsh-platform-tui/src/dev.rs create mode 100644 third-party/nsh/crates/nsh-platform-tui/src/dialog.rs delete mode 100644 third-party/nsh/crates/nsh-platform-tui/src/editor.rs delete mode 100644 third-party/nsh/crates/nsh-platform-tui/src/fonts.rs create mode 100644 third-party/nsh/crates/nsh-platform-tui/src/gradient.rs delete mode 100644 third-party/nsh/crates/nsh-platform-tui/src/image_state.rs create mode 100644 third-party/nsh/crates/nsh-platform-tui/src/key_scheme.rs create mode 100644 third-party/nsh/crates/nsh-platform-tui/src/keyboard.rs delete mode 100644 third-party/nsh/crates/nsh-platform-tui/src/media.rs create mode 100644 third-party/nsh/crates/nsh-platform-tui/src/menu.rs delete mode 100644 third-party/nsh/crates/nsh-platform-tui/src/metrics.rs delete mode 100644 third-party/nsh/crates/nsh-platform-tui/src/motion.rs create mode 100644 third-party/nsh/crates/nsh-platform-tui/src/mount.rs delete mode 100644 third-party/nsh/crates/nsh-platform-tui/src/net.rs create mode 100644 third-party/nsh/crates/nsh-platform-tui/src/palette.rs create mode 100644 third-party/nsh/crates/nsh-platform-tui/src/perf.rs create mode 100644 third-party/nsh/crates/nsh-platform-tui/src/perf/output.rs create mode 100644 third-party/nsh/crates/nsh-platform-tui/src/run.rs delete mode 100644 third-party/nsh/crates/nsh-platform-tui/src/script.rs delete mode 100644 third-party/nsh/crates/nsh-platform-tui/src/scroll.rs create mode 100644 third-party/nsh/crates/nsh-platform-tui/src/scrollbar.rs create mode 100644 third-party/nsh/crates/nsh-platform-tui/src/search.rs delete mode 100644 third-party/nsh/crates/nsh-platform-tui/src/selectable_view.rs create mode 100644 third-party/nsh/crates/nsh-platform-tui/src/selection.rs delete mode 100644 third-party/nsh/crates/nsh-platform-tui/src/services.rs create mode 100644 third-party/nsh/crates/nsh-platform-tui/src/text_input.rs create mode 100644 third-party/nsh/crates/nsh-platform-tui/src/view.rs delete mode 100644 third-party/nsh/crates/nsh-platform-tui/src/worker.rs create mode 100644 third-party/nsh/crates/nsh-platform-tui/tests/tui/alignment.rs create mode 100644 third-party/nsh/crates/nsh-platform-tui/tests/tui/animation.rs create mode 100644 third-party/nsh/crates/nsh-platform-tui/tests/tui/app.rs create mode 100644 third-party/nsh/crates/nsh-platform-tui/tests/tui/canvas.rs create mode 100644 third-party/nsh/crates/nsh-platform-tui/tests/tui/controls.rs create mode 100644 third-party/nsh/crates/nsh-platform-tui/tests/tui/data_table.rs create mode 100644 third-party/nsh/crates/nsh-platform-tui/tests/tui/degraded.rs create mode 100644 third-party/nsh/crates/nsh-platform-tui/tests/tui/diff_view.rs create mode 100644 third-party/nsh/crates/nsh-platform-tui/tests/tui/dock.rs create mode 100644 third-party/nsh/crates/nsh-platform-tui/tests/tui/editor.rs create mode 100644 third-party/nsh/crates/nsh-platform-tui/tests/tui/focus_navigation.rs create mode 100644 third-party/nsh/crates/nsh-platform-tui/tests/tui/geometry.rs create mode 100644 third-party/nsh/crates/nsh-platform-tui/tests/tui/keyboard.rs create mode 100644 third-party/nsh/crates/nsh-platform-tui/tests/tui/main.rs create mode 100644 third-party/nsh/crates/nsh-platform-tui/tests/tui/menu_bar.rs create mode 100644 third-party/nsh/crates/nsh-platform-tui/tests/tui/modal_focus.rs create mode 100644 third-party/nsh/crates/nsh-platform-tui/tests/tui/navigation.rs create mode 100644 third-party/nsh/crates/nsh-platform-tui/tests/tui/painting.rs create mode 100644 third-party/nsh/crates/nsh-platform-tui/tests/tui/palette.rs create mode 100644 third-party/nsh/crates/nsh-platform-tui/tests/tui/performance.rs create mode 100644 third-party/nsh/crates/nsh-platform-tui/tests/tui/pointer.rs create mode 100644 third-party/nsh/crates/nsh-platform-tui/tests/tui/popup.rs create mode 100644 third-party/nsh/crates/nsh-platform-tui/tests/tui/scroll.rs create mode 100644 third-party/nsh/crates/nsh-platform-tui/tests/tui/search.rs create mode 100644 third-party/nsh/crates/nsh-platform-tui/tests/tui/text.rs create mode 100644 third-party/nsh/crates/nsh-platform-tui/tests/tui/text_input.rs create mode 100644 third-party/nsh/crates/nsh-platform-tui/tests/tui/tooltip.rs create mode 100644 third-party/nsh/crates/nsh-platform-web/tests/text/animated.rs create mode 100644 third-party/nsh/crates/nsh-platform-web/web/browser/environment.test.mjs create mode 100644 third-party/nsh/crates/nsh-platform-web/web/browser/i18n.js create mode 100644 third-party/nsh/crates/nsh-platform-web/web/browser/i18n.test.mjs create mode 100644 third-party/nsh/crates/nsh-platform-web/web/browser/scope.test.mjs create mode 100644 third-party/nsh/crates/nsh-platform-windows/examples/transparent.rs create mode 100644 third-party/nsh/crates/nsh-platform-windows/src/app_window.rs create mode 100644 third-party/nsh/crates/nsh-platform-windows/src/audio.rs create mode 100644 third-party/nsh/crates/nsh-platform-windows/src/global_shortcut.rs create mode 100644 third-party/nsh/crates/nsh-platform-windows/src/linking.rs create mode 100644 third-party/nsh/crates/nsh-platform-windows/src/notifications.rs create mode 100644 third-party/nsh/crates/nsh-platform-windows/src/shell.rs create mode 100644 third-party/nsh/crates/nsh-platform-windows/src/tray.rs create mode 100644 third-party/nsh/crates/nsh-platform-windows/src/window_close.rs create mode 100644 third-party/nsh/crates/nsh-platform-windows/src/window_state.rs create mode 100644 third-party/nsh/crates/nsh-platform-windows/src/window_state/screens.rs create mode 100644 third-party/nsh/crates/nsh-testing/src/headless/audio.rs create mode 100644 third-party/nsh/crates/nsh-testing/src/headless/windows.rs create mode 100644 third-party/nsh/crates/nsh-testing/src/window_json.rs create mode 100644 third-party/nsh/crates/nsh-testing/tests/testing/fonts/App.test.tsx create mode 100644 third-party/nsh/crates/nsh-testing/tests/testing/fonts/App.tsx create mode 100644 third-party/nsh/crates/nsh-testing/tests/testing/fonts/Pacifico-Regular.woff2 create mode 100644 third-party/nsh/crates/nsh-testing/tests/testing/hit/App.test.tsx create mode 100644 third-party/nsh/crates/nsh-testing/tests/testing/hit/App.tsx create mode 100644 third-party/nsh/crates/nsh-testing/tests/testing/platform/Tabs.tsx create mode 100644 third-party/nsh/crates/nsh-testing/tests/testing/windows/App.test.tsx create mode 100644 third-party/nsh/crates/nsh-testing/tests/testing/windows/App.tsx delete mode 100644 third-party/nsh/crates/nsh-tui-app/Cargo.toml delete mode 100644 third-party/nsh/crates/nsh-tui-app/src/lib.rs delete mode 100644 third-party/nsh/crates/nsh-tui-app/src/main.rs create mode 100644 third-party/nsh/crates/nsh-tui-host/src/assets.rs create mode 100644 third-party/nsh/crates/nsh-tui-host/src/clipboard.rs create mode 100644 third-party/nsh/crates/nsh-tui-host/src/logging.rs create mode 100644 third-party/nsh/crates/nsh-tui-host/src/shutdown.rs create mode 100644 third-party/nsh/crates/nsh-tui-host/src/terminal.rs create mode 100644 third-party/nsh/crates/nsh-tui-host/src/terminal/input_tests.rs create mode 100644 third-party/nsh/crates/nsh-tui-host/src/terminal/unix.rs create mode 100644 third-party/nsh/crates/nsh-tui-host/tests/fixtures/agent/App.tsx create mode 100644 third-party/nsh/crates/nsh-tui-host/tests/fixtures/agent/Scroll.tsx create mode 100644 third-party/nsh/crates/nsh-tui-host/tests/fixtures/agent/agent.test.tsx create mode 100644 third-party/nsh/crates/nsh-tui-host/tests/fixtures/agent/error.tsx create mode 100644 third-party/nsh/crates/nsh-tui-host/tests/fixtures/animation/App.tsx create mode 100644 third-party/nsh/crates/nsh-tui-host/tests/fixtures/animation/animation.test.tsx create mode 100644 third-party/nsh/crates/nsh-tui-host/tests/fixtures/controls/App.tsx create mode 100644 third-party/nsh/crates/nsh-tui-host/tests/fixtures/controls/Controls.test.tsx create mode 100644 third-party/nsh/crates/nsh-tui-host/tests/fixtures/controls/nsh.json create mode 100644 third-party/nsh/crates/nsh-tui-host/tests/fixtures/performance/DataTable.tsx create mode 100644 third-party/nsh/crates/nsh-tui-host/tests/fixtures/performance/LongList.tsx create mode 100644 third-party/nsh/crates/nsh-tui-host/tests/fixtures/pointer/App.tsx create mode 100644 third-party/nsh/crates/nsh-tui-host/tests/fixtures/pointer/Gestures.tsx create mode 100644 third-party/nsh/crates/nsh-tui-host/tests/fixtures/pointer/Physics.tsx create mode 100644 third-party/nsh/crates/nsh-tui-host/tests/fixtures/pointer/Pointer.test.tsx create mode 100644 third-party/nsh/crates/nsh-tui-host/tests/fixtures/pointer/Resizable.tsx create mode 100644 third-party/nsh/crates/nsh-tui-host/tests/fixtures/pointer/nsh.json create mode 100644 third-party/nsh/crates/nsh-tui-host/tests/fixtures/search/App.tsx create mode 100644 third-party/nsh/crates/nsh-tui-host/tests/fixtures/search/search.test.tsx create mode 100644 third-party/nsh/crates/nsh-tui-host/tests/fixtures/text-input/App.tsx create mode 100644 third-party/nsh/crates/nsh-tui-host/tests/fixtures/text-input/Form.tsx create mode 100644 third-party/nsh/crates/nsh-tui-host/tests/fixtures/text-input/Input.test.tsx create mode 100644 third-party/nsh/crates/nsh-tui-host/tests/host/counter.rs create mode 100644 third-party/nsh/crates/nsh-tui-host/tests/host/dev.rs create mode 100644 third-party/nsh/crates/nsh-tui-host/tests/host/lifecycle.rs create mode 100644 third-party/nsh/crates/nsh-tui-host/tests/host/lifecycle/supervise.rs create mode 100644 third-party/nsh/crates/nsh-tui-host/tests/host/main.rs create mode 100644 third-party/nsh/crates/nsh-tui-host/tests/host/performance.rs create mode 100644 third-party/nsh/crates/nsh-tui-host/tests/host/text_input.rs create mode 100644 third-party/nsh/crates/nsh-updater/Cargo.toml create mode 100644 third-party/nsh/crates/nsh-updater/src/install.rs create mode 100644 third-party/nsh/crates/nsh-updater/src/lib.rs create mode 100644 third-party/nsh/docs/benchmarks/linux-memory-2026-11-05.json create mode 100644 third-party/nsh/docs/benchmarks/linux-memory-baseline-2026-11-05.json create mode 100644 third-party/nsh/docs/dev/audio-design.md create mode 100644 third-party/nsh/docs/dev/features.md delete mode 100644 third-party/nsh/docs/dev/layerfs.md create mode 100644 third-party/nsh/docs/dev/updater.md create mode 100644 third-party/nsh/examples/bench/data-table/App.tsx create mode 100644 third-party/nsh/examples/bench/data-table/nsh.json create mode 100644 third-party/nsh/examples/bench/data-table/scroll.test.tsx create mode 100644 third-party/nsh/examples/gallery-rs/native/src/demos/spacex.rs create mode 100644 third-party/nsh/examples/gallery/demos/NotificationsDemo.tsx create mode 100644 third-party/nsh/examples/gallery/demos/ShortcutDemo.tsx create mode 100644 third-party/nsh/examples/gallery/demos/SoundDemo.tsx create mode 100644 third-party/nsh/examples/gallery/demos/TerminalDemo.tsx create mode 100644 third-party/nsh/examples/gallery/demos/TrayDemo.tsx create mode 100644 third-party/nsh/examples/gallery/demos/Updater.tsx create mode 100644 third-party/nsh/examples/gallery/demos/UrlSchemeDemo.tsx create mode 100644 third-party/nsh/examples/gallery/demos/WindowsDemo.tsx create mode 100644 third-party/nsh/examples/gallery/scripts/sounds.mjs create mode 100644 third-party/nsh/examples/gallery/sounds/LICENSE create mode 100644 third-party/nsh/examples/gallery/sounds/README.md create mode 100644 third-party/nsh/examples/gallery/sounds/attention.wav create mode 100644 third-party/nsh/examples/gallery/sounds/close.wav create mode 100644 third-party/nsh/examples/gallery/sounds/error.wav create mode 100644 third-party/nsh/examples/gallery/sounds/open.wav create mode 100644 third-party/nsh/examples/gallery/sounds/ready.wav create mode 100644 third-party/nsh/examples/gallery/sounds/select.wav create mode 100644 third-party/nsh/examples/gallery/sounds/success.wav create mode 100644 third-party/nsh/examples/gallery/sounds/tap.wav create mode 100644 third-party/nsh/examples/gallery/sounds/toggle.wav create mode 100644 third-party/nsh/examples/gallery/sounds/warning.wav create mode 100644 third-party/nsh/examples/gallery/tests/audio.test.tsx create mode 100644 third-party/nsh/examples/gallery/tests/fixtures/audio.tsx create mode 100644 third-party/nsh/examples/gallery/tests/fixtures/selection-change.tsx create mode 100644 third-party/nsh/examples/gallery/tests/fixtures/window-focus.tsx create mode 100644 third-party/nsh/examples/gallery/tests/fixtures/windows.tsx create mode 100644 third-party/nsh/examples/gallery/tests/selection-change.test.tsx create mode 100644 third-party/nsh/examples/gallery/tests/settings-menu.test.tsx create mode 100644 third-party/nsh/examples/gallery/tests/sound.test.tsx create mode 100644 third-party/nsh/examples/gallery/tests/terminal.test.tsx create mode 100644 third-party/nsh/examples/gallery/tests/updater.test.tsx create mode 100644 third-party/nsh/examples/gallery/tests/window-focus.test.tsx create mode 100644 third-party/nsh/examples/gallery/tests/window-state.test.tsx create mode 100644 third-party/nsh/examples/gallery/tests/windows.test.tsx create mode 100644 third-party/nsh/examples/gallery/tools/memory-gtk.c create mode 100644 third-party/nsh/examples/gallery/tools/memory.py create mode 100644 third-party/nsh/examples/nsh-gallery-ui/look/button.ts create mode 100644 third-party/nsh/examples/nsh-gallery-ui/look/choice.tsx create mode 100644 third-party/nsh/examples/nsh-gallery-ui/look/disclosure.tsx create mode 100644 third-party/nsh/examples/nsh-gallery-ui/look/field.tsx create mode 100644 third-party/nsh/examples/nsh-gallery-ui/look/listbox.tsx create mode 100644 third-party/nsh/examples/nsh-gallery-ui/look/menu.tsx create mode 100644 third-party/nsh/examples/nsh-gallery-ui/look/meter.ts create mode 100644 third-party/nsh/examples/nsh-gallery-ui/look/nav.tsx create mode 100644 third-party/nsh/examples/nsh-gallery-ui/look/overlay.ts create mode 100644 third-party/nsh/examples/nsh-gallery-ui/look/plot.ts create mode 100644 third-party/nsh/examples/nsh-gallery-ui/look/press.ts create mode 100644 third-party/nsh/examples/nsh-gallery-ui/look/surface.tsx create mode 100644 third-party/nsh/examples/nsh-gallery-ui/look/switch-geometry.ts create mode 100644 third-party/nsh/examples/nsh-gallery-ui/look/switch.ts create mode 100644 third-party/nsh/examples/nsh-gallery-ui/look/tabs.tsx create mode 100644 third-party/nsh/examples/nsh-gallery-ui/look/tool.ts create mode 100644 third-party/nsh/examples/nsh-gallery-ui/look/workspace.tsx create mode 100644 third-party/nsh/examples/nsh-gallery-ui/photos.ts create mode 100644 third-party/nsh/examples/nsh-gallery-ui/sound.ts create mode 100644 third-party/nsh/examples/tasks-rs/Cargo.toml create mode 100644 third-party/nsh/examples/tasks-rs/nsh.json create mode 100644 third-party/nsh/examples/tasks-rs/src/components/header.rs create mode 100644 third-party/nsh/examples/tasks-rs/src/components/mod.rs create mode 100644 third-party/nsh/examples/tasks-rs/src/lib.rs create mode 100644 third-party/nsh/examples/tasks-rs/src/main.rs create mode 100644 third-party/nsh/examples/tasks-rs/src/nav.rs create mode 100644 third-party/nsh/examples/tasks-rs/src/pages/mod.rs create mode 100644 third-party/nsh/examples/tasks-rs/src/pages/task_detail.rs create mode 100644 third-party/nsh/examples/tasks-rs/src/pages/task_list.rs create mode 100644 third-party/nsh/examples/tasks-rs/src/shell.rs create mode 100644 third-party/nsh/examples/tasks-rs/src/store.rs create mode 100644 third-party/nsh/examples/tasks-rs/tests/flows.rs create mode 100644 third-party/nsh/examples/tasks/App.test.tsx create mode 100644 third-party/nsh/examples/tasks/App.tsx create mode 100644 third-party/nsh/examples/tasks/components/Header.tsx create mode 100644 third-party/nsh/examples/tasks/nav.ts create mode 100644 third-party/nsh/examples/tasks/nsh.json create mode 100644 third-party/nsh/examples/tasks/pages/TaskDetail.tsx create mode 100644 third-party/nsh/examples/tasks/pages/TaskList.tsx create mode 100644 third-party/nsh/examples/tasks/store.ts rename third-party/nsh/examples/{terminal-workbench => tasks}/tsconfig.json (100%) delete mode 100644 third-party/nsh/examples/terminal-workbench/App.tsx delete mode 100644 third-party/nsh/examples/terminal-workbench/README.md delete mode 100644 third-party/nsh/examples/terminal-workbench/assets/OFL.txt delete mode 100644 third-party/nsh/examples/terminal-workbench/assets/Pacifico-Regular.ttf delete mode 100644 third-party/nsh/examples/terminal-workbench/assets/runtime.png delete mode 100644 third-party/nsh/examples/terminal-workbench/data.ts delete mode 100644 third-party/nsh/examples/terminal-workbench/inspectors.tsx delete mode 100644 third-party/nsh/examples/terminal-workbench/nsh.json delete mode 100644 third-party/nsh/examples/terminal-workbench/theme.json delete mode 100644 third-party/nsh/examples/terminal-workbench/ui.tsx delete mode 100755 third-party/nsh/scripts/layerfs create mode 100644 third-party/nsh/skills/nsh-design-guides/SKILL.md create mode 100644 third-party/nsh/skills/nsh-design-guides/references/design-guides.md create mode 100644 third-party/nsh/skills/nsh/SKILL.md create mode 100644 third-party/nsh/skills/nsh/references/coding-guides.md create mode 100644 third-party/nsh/skills/nsh/references/mixed.md create mode 100644 third-party/nsh/skills/nsh/references/rust-recipe.md create mode 100644 third-party/nsh/skills/nsh/references/rust-testing.md create mode 100644 third-party/nsh/skills/nsh/references/rust-ui.md create mode 100644 third-party/nsh/skills/nsh/references/rust.md create mode 100644 third-party/nsh/skills/nsh/references/tooling.md create mode 100644 third-party/nsh/skills/nsh/references/tsx-recipe.md create mode 100644 third-party/nsh/skills/nsh/references/tsx.md create mode 100644 third-party/nsh/tests/compat/cases/base/base-set-theme.tsx create mode 100644 third-party/nsh/tests/compat/cases/base/base-terminal.tsx create mode 100644 third-party/nsh/tests/compat/cases/core/core-frame-rate.tsx delete mode 100644 third-party/nsh/tests/compat/cases/core/core-input-action.tsx delete mode 100644 third-party/nsh/tests/compat/cases/core/core-list-binding.tsx delete mode 100644 third-party/nsh/tests/compat/cases/core/tsconfig.json create mode 100644 third-party/nsh/tests/compat/cases/core/web-load.tsx create mode 100644 third-party/nsh/tests/compat/cases/desktop/App.tsx create mode 100644 third-party/nsh/tests/compat/cases/desktop/nsh.json create mode 100644 third-party/nsh/tests/compat/cases/desktop/script.txt create mode 100644 third-party/nsh/tests/compat/cases/desktop/window-access.tsx create mode 100644 third-party/nsh/tests/compat/cases/desktop/window-element.tsx create mode 100644 third-party/nsh/tests/compat/cases/desktop/window-open.tsx create mode 100644 third-party/nsh/tests/compat/cases/desktop/window-props.tsx create mode 100644 third-party/nsh/tests/compat/cases/desktop/window-ref.tsx create mode 100644 third-party/nsh/tests/compat/cases/layout/core-register-font.tsx create mode 100644 third-party/nsh/tests/compat/cases/macos/material-composition.tsx create mode 100644 third-party/nsh/tests/compat/cases/macos/mod-keymap-pass.tsx create mode 100644 third-party/nsh/tests/compat/cases/modules/locales/app.yml create mode 100644 third-party/nsh/tests/compat/cases/modules/mod-audio.tsx create mode 100644 third-party/nsh/tests/compat/cases/modules/mod-fps.tsx create mode 100644 third-party/nsh/tests/compat/cases/modules/mod-i18n.tsx create mode 100644 third-party/nsh/tests/compat/cases/modules/mod-notifications.tsx create mode 100644 third-party/nsh/tests/compat/cases/modules/mod-updater.tsx create mode 100644 third-party/nsh/tests/compat/cases/modules/mod-url-scheme.tsx create mode 100644 third-party/nsh/tests/compat/cases/modules/sounds/click.wav create mode 100644 third-party/nsh/tests/compat/cases/terminal/App.tsx create mode 100644 third-party/nsh/tests/compat/cases/terminal/base-select-placeholder.tsx create mode 100644 third-party/nsh/tests/compat/cases/terminal/mod-device-terminal.tsx create mode 100644 third-party/nsh/tests/compat/cases/terminal/nsh.json create mode 100644 third-party/nsh/tests/compat/cases/terminal/script.txt create mode 100644 third-party/nsh/website/demos/el-terminal.tsx delete mode 100644 third-party/nsh/website/demos/hero-chat/Chat.tsx delete mode 100644 third-party/nsh/website/demos/hero-chat/ImageViewer.tsx delete mode 100644 third-party/nsh/website/demos/hero-chat/chat/glyphs.tsx delete mode 100644 third-party/nsh/website/demos/hero-chat/chat/markdown.tsx delete mode 100644 third-party/nsh/website/demos/hero-chat/chat/parts.tsx delete mode 100644 third-party/nsh/website/demos/hero-chat/chat/scripts.ts delete mode 100644 third-party/nsh/website/demos/hero-chat/icons.tsx delete mode 100644 third-party/nsh/website/demos/hero-chat/ui.tsx create mode 100644 third-party/nsh/website/docs/app-updates.md create mode 100644 third-party/nsh/website/docs/i18n.md delete mode 100644 third-party/nsh/website/docs/layerfs.md create mode 100644 third-party/nsh/website/docs/ota-updates.md create mode 100644 third-party/nsh/website/elements/terminal.md create mode 100644 third-party/nsh/website/modules/nsh-i18n.md create mode 100644 third-party/nsh/website/modules/nsh-updater.md create mode 100644 third-party/nsh/website/public/brand/nsh-app-icon-dark.png create mode 100644 third-party/nsh/website/public/brand/nsh-app-icon-light.png create mode 100644 third-party/nsh/website/public/brand/nsh-banner-dark.png create mode 100644 third-party/nsh/website/public/brand/nsh-banner-light.png create mode 100644 third-party/nsh/website/public/brand/nsh-logo-on-dark.png create mode 100644 third-party/nsh/website/public/brand/nsh-logo-on-dark.svg create mode 100644 third-party/nsh/website/public/brand/nsh-logo-on-light.png create mode 100644 third-party/nsh/website/public/brand/nsh-logo-on-light.svg create mode 100644 third-party/nsh/website/public/brand/nsh-logo-solid-black.png create mode 100644 third-party/nsh/website/public/brand/nsh-logo-solid-black.svg create mode 100644 third-party/nsh/website/public/brand/nsh-logo-solid-citrus.png create mode 100644 third-party/nsh/website/public/brand/nsh-logo-solid-citrus.svg create mode 100644 third-party/nsh/website/public/brand/nsh-logo-solid-white.png create mode 100644 third-party/nsh/website/public/brand/nsh-logo-solid-white.svg create mode 100644 third-party/nsh/website/public/brand/nsh-social-preview-dark.png create mode 100644 third-party/nsh/website/public/brand/nsh-social-preview-light.png create mode 100644 third-party/nsh/website/public/og-image.png create mode 100644 third-party/nsh/website/public/sounds/LICENSE create mode 100644 third-party/nsh/website/public/sounds/select.wav create mode 100644 third-party/nsh/website/public/sounds/success.wav create mode 100644 third-party/nsh/website/public/sounds/tap.wav create mode 100644 third-party/nsh/website/src/components/Brand.astro create mode 100644 third-party/nsh/website/src/components/HeroArches.astro delete mode 100644 third-party/nsh/website/src/components/HeroField.astro create mode 100644 third-party/nsh/website/src/components/Releases.astro create mode 100644 third-party/nsh/website/src/home/en.json create mode 100644 third-party/nsh/website/src/home/zh-CN.json create mode 100644 third-party/nsh/website/src/lib/home.ts create mode 100644 third-party/nsh/website/src/lib/locales.ts create mode 100644 third-party/nsh/website/src/lib/releases.js create mode 100644 third-party/nsh/website/src/lib/sound.ts create mode 100644 third-party/nsh/website/src/pages/[locale]/[section].md.ts create mode 100644 third-party/nsh/website/src/pages/[locale]/[section]/[...slug].astro create mode 100644 third-party/nsh/website/src/pages/[locale]/[section]/[...slug].md.ts create mode 100644 third-party/nsh/website/src/pages/[locale]/index.astro create mode 100644 third-party/nsh/website/src/pages/brand.astro create mode 100644 third-party/nsh/website/src/pages/releases.astro create mode 100644 third-party/nsh/website/src/pages/zh-CN/brand.astro create mode 100644 third-party/nsh/website/src/pages/zh-CN/releases.astro create mode 100644 third-party/nsh/website/tests/doc-links.test.ts create mode 100644 third-party/nsh/website/tests/gallery-ui-colors.test.ts create mode 100644 third-party/nsh/website/tests/gallery-ui-switch.test.ts create mode 100644 third-party/nsh/website/tests/home.test.ts create mode 100644 third-party/nsh/website/tests/releases.test.ts create mode 100644 third-party/nsh/website/tests/skills.test.ts create mode 100644 third-party/nsh/website/zh-CN/docs/app-updates.md create mode 100644 third-party/nsh/website/zh-CN/docs/i18n.md delete mode 100644 third-party/nsh/website/zh-CN/docs/layerfs.md create mode 100644 third-party/nsh/website/zh-CN/docs/ota-updates.md create mode 100644 third-party/nsh/website/zh-CN/elements/terminal.md create mode 100644 third-party/nsh/website/zh-CN/modules/nsh-i18n.md create mode 100644 third-party/nsh/website/zh-CN/modules/nsh-updater.md diff --git a/.gitattributes b/.gitattributes index 01ec3692a2f..4caa1cb19e9 100644 --- a/.gitattributes +++ b/.gitattributes @@ -18,12 +18,12 @@ # Preserve verbatim whitespace in the pinned NSH source snapshot. /third-party/nsh/.gitattributes whitespace=-blank-at-eof +/third-party/nsh/docs/dev/browser-js-size.md whitespace=-blank-at-eof +/third-party/nsh/docs/dev/data-table.md whitespace=-blank-at-eof /third-party/nsh/examples/gallery/TitleBar.tsx whitespace=-blank-at-eof /third-party/nsh/examples/gallery/demos/chat/markdown.tsx whitespace=-blank-at-eof +/third-party/nsh/examples/nsh-gallery-ui/theme.ts whitespace=-blank-at-eof /third-party/nsh/third-party/icy_sixel/Cargo.toml whitespace=-blank-at-eof -/third-party/nsh/website/demos/hero-chat/chat/markdown.tsx whitespace=-blank-at-eof -/third-party/nsh/website/demos/hero-chat/ui.tsx whitespace=-blank-at-eof -/third-party/nsh/docs/dev/browser-js-size.md whitespace=-blank-at-eof /third-party/nsh/crates/nsh-base/fonts/katex.LICENSE.txt whitespace=-blank-at-eol /third-party/nsh/examples/gallery-rs/native/assets/fonts/OFL.txt whitespace=-blank-at-eol /third-party/nsh/examples/gallery/fonts/OFL.txt whitespace=-blank-at-eol diff --git a/Cargo.lock b/Cargo.lock index b3347b97f86..7154ffe4009 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -192,6 +192,17 @@ dependencies = [ "libc", ] +[[package]] +name = "annotate-snippets" +version = "0.12.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b2a5b0a5ab8561c603f16c3b78c24a386b1f70e7fc1b1b1e8c15738828e4a176" +dependencies = [ + "anstyle", + "memchr", + "unicode-width", +] + [[package]] name = "anstyle" version = "1.0.14" @@ -298,15 +309,6 @@ version = "0.7.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d3fb67a6e08acf24fdeccbac2cb6ac4305825bd1f117462e0e6f2f193345ad56" -[[package]] -name = "ash" -version = "0.38.0+1.3.281" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0bb44936d800fea8f016d7f2311c6a4f97aebd5dc86f09906139ec848cf3a46f" -dependencies = [ - "libloading", -] - [[package]] name = "ashpd" version = "0.13.13" @@ -552,6 +554,12 @@ version = "1.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0" +[[package]] +name = "atomic_refcell" +version = "0.1.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "21e4227379beff4205943696e6c3e0cd809bacdf3f0edd6e3dd153e2269571a4" + [[package]] name = "atspi" version = "0.30.0" @@ -718,6 +726,12 @@ version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fd307490d624467aa6f74b0eabb77633d1f758a7b25f12bceb0b22e08d9726f6" +[[package]] +name = "base62" +version = "2.2.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a3a647dce9631f152a99ec16cfc09267ae55fe280d5dc288964027d458076323" + [[package]] name = "base64" version = "0.22.1" @@ -815,9 +829,9 @@ dependencies = [ [[package]] name = "bit-set" -version = "0.10.0" +version = "0.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09ec2f926cc3060f09db9ebc5b52823d85268d24bb917e472c0c4bea35780a7d" +checksum = "34ddef2995421ab6a5c779542c81ee77c115206f4ad9d5a8e05f4ff49716a3dd" dependencies = [ "bit-vec 0.9.1", ] @@ -2528,15 +2542,6 @@ dependencies = [ "syn 3.0.9", ] -[[package]] -name = "dlib" -version = "0.5.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ab8ecd87370524b461f8557c119c405552c396ed91fc0a8eec68679eab26f94a" -dependencies = [ - "libloading", -] - [[package]] name = "document-features" version = "0.2.12" @@ -4495,17 +4500,6 @@ version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "43503cc176394dd30a6525f5f36e838339b8b5619be33ed9a7783841580a97b6" -[[package]] -name = "gl_generator" -version = "0.14.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a95dfc23a2b4a9a2f5ab41d194f8bfda3cabec42af4e39f08c339eb2a0c124d" -dependencies = [ - "khronos_api", - "log", - "xml-rs", -] - [[package]] name = "glib" version = "0.22.10" @@ -4569,24 +4563,14 @@ dependencies = [ ] [[package]] -name = "glow" -version = "0.17.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "29038e1c483364cc6bb3cf78feee1816002e127c331a1eec55a4d202b9e1adb5" -dependencies = [ - "js-sys", - "slotmap", - "wasm-bindgen", - "web-sys", -] - -[[package]] -name = "glutin_wgl_sys" -version = "0.6.1" +name = "globwalk" +version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2c4ee00b289aba7a9e5306d57c2d05499b2e5dc427f84ac708bd2c090212cf3e" +checksum = "93e3af942408868f6934a7b85134a3230832b9977cf66125df2f9edcfce4ddcc" dependencies = [ - "gl_generator", + "bitflags 1.3.2", + "ignore", + "walkdir", ] [[package]] @@ -4612,17 +4596,13 @@ dependencies = [ ] [[package]] -name = "gpu-allocator" -version = "0.28.0" +name = "granit-parser" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "51255ea7cfaadb6c5f1528d43e92a82acb2b96c43365989a28b2d44ee38f8795" +checksum = "e20f99e46474f56bd905c56e817ebddcf377a611f94c53ac4649e4d3fa3c0cd0" dependencies = [ - "ash", - "hashbrown 0.16.1", - "log", - "presser", - "thiserror 2.0.21", - "windows 0.62.2", + "arraydeque", + "smallvec", ] [[package]] @@ -4725,6 +4705,128 @@ dependencies = [ "system-deps", ] +[[package]] +name = "gstreamer" +version = "0.25.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f4237e2066a25ecb7e54be6c066409e30615920265b9799b8d560ef8ac9857c6" +dependencies = [ + "cfg-if", + "futures-channel", + "futures-core", + "futures-util", + "glib", + "gstreamer-sys", + "itertools 0.15.0", + "kstring", + "libc", + "muldiv", + "num-integer", + "num-rational", + "option-operations", + "pastey", + "pin-project-lite", + "smallvec", + "thiserror 2.0.21", +] + +[[package]] +name = "gstreamer-app" +version = "0.25.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "97f8ae9238c2352398dcc084de28df3f7099af216ac6c160b52318d23f25c010" +dependencies = [ + "futures-core", + "futures-sink", + "glib", + "gstreamer", + "gstreamer-app-sys", + "gstreamer-base", + "libc", +] + +[[package]] +name = "gstreamer-app-sys" +version = "0.25.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0798b8aef6694341d40bb81edc759f8979b896b59f9f0f45d8cfa3bb7bf2e743" +dependencies = [ + "glib-sys", + "gstreamer-base-sys", + "gstreamer-sys", + "libc", + "system-deps", +] + +[[package]] +name = "gstreamer-audio" +version = "0.25.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "544f14e19e3b7221845be0e5c2f2cf284576b7baa16835ac16def6e734bfa866" +dependencies = [ + "cfg-if", + "glib", + "gstreamer", + "gstreamer-audio-sys", + "gstreamer-base", + "libc", + "smallvec", +] + +[[package]] +name = "gstreamer-audio-sys" +version = "0.25.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09a010deb715bc29953a07c6714249132e736b3daf3a529e70586b58a7063888" +dependencies = [ + "glib-sys", + "gobject-sys", + "gstreamer-base-sys", + "gstreamer-sys", + "libc", + "system-deps", +] + +[[package]] +name = "gstreamer-base" +version = "0.25.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "17cbd8f59586a369c40d4b0d2f3a61cf9e9287b3cf5503cdcd8e7c5faa99265e" +dependencies = [ + "atomic_refcell", + "cfg-if", + "glib", + "gstreamer", + "gstreamer-base-sys", + "libc", +] + +[[package]] +name = "gstreamer-base-sys" +version = "0.25.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3b05f77bfd76b5afee6b29c27dae19eaf5018b5cf8d0d17520f3de44c6385c32" +dependencies = [ + "glib-sys", + "gobject-sys", + "gstreamer-sys", + "libc", + "system-deps", +] + +[[package]] +name = "gstreamer-sys" +version = "0.25.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "436d9532847489a8285d57b8c3670762c12a18f777fdc2ab159b52e0e6f521b9" +dependencies = [ + "cfg-if", + "glib-sys", + "gobject-sys", + "libc", + "system-deps", +] + [[package]] name = "gtk4" version = "0.11.5" @@ -4938,6 +5040,12 @@ dependencies = [ "vsimd", ] +[[package]] +name = "hexf-parse" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dfa686283ad6dd069f105e5ab091b04c62850d3e4cf5d67debad1933f55023df" + [[package]] name = "hkdf" version = "0.12.4" @@ -5580,6 +5688,15 @@ dependencies = [ "once_cell", ] +[[package]] +name = "itertools" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b1c173a5686ce8bfa551b3563d0c2170bf24ca44da99c7ca4bfdab5418c3fe57" +dependencies = [ + "either", +] + [[package]] name = "itertools" version = "0.13.0" @@ -5697,7 +5814,7 @@ dependencies = [ "cfg-if", "combine", "jni-macros", - "jni-sys 0.4.1", + "jni-sys", "log", "simd_cesu8", "thiserror 2.0.21", @@ -5718,15 +5835,6 @@ dependencies = [ "syn 2.0.119", ] -[[package]] -name = "jni-sys" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "41a652e1f9b6e0275df1f15b32661cf0d4b78d4d87ddec5e0c3c20f097433258" -dependencies = [ - "jni-sys 0.4.1", -] - [[package]] name = "jni-sys" version = "0.4.1" @@ -5917,23 +6025,6 @@ dependencies = [ "log", ] -[[package]] -name = "khronos-egl" -version = "6.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6aae1df220ece3c0ada96b8153459b67eebe9ae9212258bb0134ae60416fdf76" -dependencies = [ - "libc", - "libloading", - "pkg-config", -] - -[[package]] -name = "khronos_api" -version = "3.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2db585e1d738fc771bf08a151420d3ed193d9d895a36df7f6f8a9456b911ddc" - [[package]] name = "kqueue" version = "1.2.1" @@ -5954,6 +6045,15 @@ dependencies = [ "libc", ] +[[package]] +name = "kstring" +version = "2.0.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a09b82a7f771ed02dc0dd9b27130a0fa5499fa15ed3027116c1e5e4e591bd9e" +dependencies = [ + "static_assertions", +] + [[package]] name = "kurbo" version = "0.13.1" @@ -7647,11 +7747,13 @@ dependencies = [ "nsh-testing", "open", "percent-encoding", + "regex", "serde", "serde_json", "tempfile", "tokio", "tokio-util", + "unicode-segmentation", "url", "usvg", "uuid", @@ -8001,6 +8103,12 @@ dependencies = [ "cc", ] +[[package]] +name = "muldiv" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "956787520e75e9bd233246045d19f42fb73242759cc57fba9611d940ae96d4b0" + [[package]] name = "mxc-sdk" version = "1.0.1" @@ -8037,42 +8145,29 @@ dependencies = [ [[package]] name = "naga" -version = "30.0.1" +version = "29.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a616d2fb8c89516ac2723a581f69d6c18576046bed761bd6b305e5618e6ae130" +checksum = "b2bf919621e7975acb27d881bae2fb993e0d45c8e0446e85e6272971e00dc8df" dependencies = [ "arrayvec", - "bit-set 0.10.0", + "bit-set 0.9.1", "bitflags 2.13.2", "cfg-if", "cfg_aliases", "codespan-reporting", "half", - "hashbrown 0.17.1", + "hashbrown 0.16.1", + "hexf-parse", "indexmap 2.14.2", "libm", "log", - "naga-types", "num-traits", "once_cell", "rustc-hash 1.1.0", - "spirv", "thiserror 2.0.21", "unicode-ident", ] -[[package]] -name = "naga-types" -version = "30.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "590afbf58a6f4f62873cd5cff4468061844bafa1cdf399cc954537c22d768d49" -dependencies = [ - "hashbrown 0.17.1", - "indexmap 2.14.2", - "rustc-hash 1.1.0", - "thiserror 2.0.21", -] - [[package]] name = "native-tls" version = "0.2.18" @@ -8090,15 +8185,6 @@ dependencies = [ "tempfile", ] -[[package]] -name = "ndk-sys" -version = "0.6.0+11769913" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ee6cda3051665f1fb8d9e08fc35c96d5a244fb1be711a03b71118828afc9a873" -dependencies = [ - "jni-sys 0.3.1", -] - [[package]] name = "new_debug_unreachable" version = "1.0.6" @@ -8158,6 +8244,12 @@ version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a5eb86a92577833b75522336f210c49d9ebd7dd55a44d80a92e68c668a75f27c" +[[package]] +name = "nohash-hasher" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2bf50223579dc7cdcfb3bfcacf7069ff68243f8c363f62ffa99cf000a6b9c451" + [[package]] name = "nom" version = "1.2.4" @@ -8194,6 +8286,15 @@ version = "0.5.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "610a5acd306ec67f907abe5567859a3c693fb9886eb1f012ab8f2a47bef3db51" +[[package]] +name = "normpath" +version = "1.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b11ce00d2594068e8a27c9146fdc5cf9f3ac38eb42c7cd34d05fea618873ac9f" +dependencies = [ + "windows-sys 0.61.2", +] + [[package]] name = "notify" version = "8.2.1" @@ -8247,6 +8348,7 @@ dependencies = [ "two-face", "unicode-segmentation", "unicode-width", + "vte", "zstd 0.14.3", ] @@ -8260,6 +8362,7 @@ dependencies = [ "log", "nsh-base", "nsh-core", + "nsh-i18n", "nsh-js", "oxc", "oxc_sourcemap", @@ -8289,9 +8392,10 @@ dependencies = [ "log", "naga", "nsh-macros", + "nsh-updater", "ordered-float", - "regex", "resvg", + "rust-i18n", "rustc-hash 2.1.3", "rustls", "serde", @@ -8301,9 +8405,9 @@ dependencies = [ "taffy", "tokio", "tokio-tungstenite 0.28.0", + "ttf-parser", "unicode-linebreak", "unicode-properties", - "unicode-segmentation", "ureq", "url", "webpki-roots 1.0.11", @@ -8321,16 +8425,23 @@ dependencies = [ "nsh-core", "nsh-js", "nsh-package", + "nsh-updater", "oxc_sourcemap", - "pollster", "rustc-hash 2.1.3", "serde_json", "tokio", "ureq", - "wgpu", "windows-sys 0.61.2", ] +[[package]] +name = "nsh-i18n" +version = "0.4.0" +dependencies = [ + "rust-i18n-support", + "serde_json", +] + [[package]] name = "nsh-js" version = "0.4.0" @@ -8340,10 +8451,12 @@ dependencies = [ "libc", "log", "nsh-core", + "nsh-i18n", "percent-encoding", "quickjs-jit", "quickjs-jit-stdlib", "rustc-hash 2.1.3", + "serde", "serde_json", "thiserror 2.0.21", "tokio", @@ -8377,11 +8490,30 @@ dependencies = [ "thiserror 2.0.21", ] +[[package]] +name = "nsh-platform-apple" +version = "0.4.0" +dependencies = [ + "block2 0.6.2", + "dispatch2", + "libc", + "log", + "nsh-core", + "nsh-engine", + "objc2 0.6.5", + "objc2-app-kit 0.3.2", + "objc2-foundation 0.3.2", + "objc2-ui-kit", +] + [[package]] name = "nsh-platform-linux" version = "0.4.0" dependencies = [ "crossbeam-channel", + "gstreamer", + "gstreamer-app", + "gstreamer-audio", "gtk4", "image", "log", @@ -8407,6 +8539,7 @@ dependencies = [ "nsh-base", "nsh-core", "nsh-engine", + "nsh-platform-apple", "nsh-terminal", "objc2 0.6.5", "objc2-app-kit 0.3.2", @@ -8425,31 +8558,17 @@ dependencies = [ name = "nsh-platform-tui" version = "0.4.0" dependencies = [ - "base64 0.22.1", "crossbeam-channel", - "crossterm", - "fontdb", - "getrandom 0.3.4", + "icy_sixel", "image", - "libc", "log", "nsh-base", "nsh-core", "nsh-engine", - "ratatui", - "ratatui-image", - "rustybuzz", - "serde_json", - "signal-hook 0.3.18", - "tiny-skia 0.12.0", - "ttf-parser", - "unicode-bidi", - "unicode-linebreak", + "ratatui-core", + "ratatui-widgets", "unicode-segmentation", "unicode-width", - "ureq", - "url", - "windows-sys 0.61.2", ] [[package]] @@ -8497,8 +8616,24 @@ dependencies = [ ] [[package]] -name = "ntapi" -version = "0.4.3" +name = "nsh-updater" +version = "0.4.0" +dependencies = [ + "base64 0.22.1", + "ed25519-dalek 2.2.0", + "flate2", + "semver", + "serde", + "serde_json", + "sha2 0.10.9", + "tar", + "thiserror 2.0.21", + "zip", +] + +[[package]] +name = "ntapi" +version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c3b335231dfd352ffb0f8017f3b6027a4917f7df785ea2143d8af2adc66980ae" dependencies = [ @@ -8754,7 +8889,7 @@ dependencies = [ "block2 0.5.1", "objc2 0.5.3", "objc2-foundation 0.2.2", - "objc2-metal 0.2.2", + "objc2-metal", ] [[package]] @@ -8886,18 +9021,6 @@ dependencies = [ "objc2-foundation 0.2.2", ] -[[package]] -name = "objc2-metal" -version = "0.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a0125f776a10d00af4152d74616409f0d4a2053a6f57fa5b7d6aa2854ac04794" -dependencies = [ - "bitflags 2.13.2", - "block2 0.6.2", - "objc2 0.6.5", - "objc2-foundation 0.3.2", -] - [[package]] name = "objc2-quartz-core" version = "0.2.2" @@ -8908,7 +9031,7 @@ dependencies = [ "block2 0.5.1", "objc2 0.5.3", "objc2-foundation 0.2.2", - "objc2-metal 0.2.2", + "objc2-metal", ] [[package]] @@ -8922,7 +9045,6 @@ dependencies = [ "objc2-core-foundation", "objc2-core-graphics", "objc2-foundation 0.3.2", - "objc2-metal 0.3.2", ] [[package]] @@ -9030,6 +9152,15 @@ version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "04744f49eae99ab78e0d5c0b603ab218f515ea8cfe5a456d7629ad883a3b6e7d" +[[package]] +name = "option-operations" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aca39cf52b03268400c16eeb9b56382ea3c3353409309b63f5c8f0b1faf42754" +dependencies = [ + "pastey", +] + [[package]] name = "ordered-float" version = "5.5.0" @@ -10200,12 +10331,6 @@ dependencies = [ "windows-sys 0.61.2", ] -[[package]] -name = "pollster" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2f3a9f18d041e6d0e102a0a46750538147e5e8992d3b4873aaafee2520b00ce3" - [[package]] name = "poly1305" version = "0.9.1" @@ -10296,12 +10421,6 @@ version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "925383efa346730478fb4838dbe9137d2a47675ad789c546d150a6e1dd4ab31c" -[[package]] -name = "presser" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e8cf8e6a8aa66ce33f63993ffc4ea4271eb5b0530a9002db8455ea6050c77bfa" - [[package]] name = "prettyplease" version = "0.2.37" @@ -10376,12 +10495,6 @@ dependencies = [ "parking_lot", ] -[[package]] -name = "profiling" -version = "1.0.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3d595e54a326bc53c1c197b32d295e14b169e3cfeaa8dc82b529f947fba6bcf5" - [[package]] name = "psm" version = "0.1.32" @@ -10492,9 +10605,9 @@ dependencies = [ [[package]] name = "quickjs-jit" -version = "0.14.1" +version = "0.14.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "70d41722208581628761f6e7c3ada5c357cc4df244c238c880e64a541bb32d0e" +checksum = "f5f4423709e8709eb3ee02d23b30fba4cc6f3ab0ee90c3fc08edfb968b3c8b73" dependencies = [ "quickjs-jit-core", "quickjs-jit-macro", @@ -10502,9 +10615,9 @@ dependencies = [ [[package]] name = "quickjs-jit-core" -version = "0.14.1" +version = "0.14.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d05311dece4caaf4f49a170d95ba34f82de26910128ad1d302ce607da81407b5" +checksum = "c3dbd3a4da98e06d0bbc0f65a4719155b7923461194c3b26860b87e1568aff09" dependencies = [ "async-lock", "half", @@ -10515,9 +10628,9 @@ dependencies = [ [[package]] name = "quickjs-jit-macro" -version = "0.14.1" +version = "0.14.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "95d84c7d9ea1fbd6682660cc6d1357537d014ed1d14c87a57b5f8bb04f5f0685" +checksum = "0e8f4ad21cdeaceb5e65e5b8ae8a3695a4a1b4e368a5dc65709da27d03110bbb" dependencies = [ "convert_case 0.12.0", "indexmap 2.14.2", @@ -10530,9 +10643,9 @@ dependencies = [ [[package]] name = "quickjs-jit-stdlib" -version = "0.14.1" +version = "0.14.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b0599ae2a818de29d5e7618df383deb38a7c827dbe2dd57dcebf1694bc766d90" +checksum = "a3ad9800d6824112e3d1032078c8e8bcabc47870bbedc858ef6b6fae12de3070" dependencies = [ "aes", "aes-gcm", @@ -10589,9 +10702,9 @@ dependencies = [ [[package]] name = "quickjs-jit-sys" -version = "0.14.1" +version = "0.14.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "de70d3b7f215521a57a1da2843ef54e0cdfcae1fadf2cfc712cb92d965931f77" +checksum = "44983d24261238e3db9f543729c1ec806dc199f7dd360560699498608ff7cfb8" dependencies = [ "bindgen 0.72.1", "cc", @@ -10807,12 +10920,6 @@ dependencies = [ "rand_core 0.10.1", ] -[[package]] -name = "range-alloc" -version = "0.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ca45419789ae5a7899559e9512e58ca889e41f04f1f2445e9f4b290ceccd1d08" - [[package]] name = "ratatui" version = "0.30.2" @@ -10836,6 +10943,7 @@ checksum = "cbb175c433c8e28a809d1f5773a2ae96e68c0ce40db865cbab1020bf33ae479c" dependencies = [ "bitflags 2.13.2", "compact_str 0.9.1", + "critical-section", "hashbrown 0.17.1", "itertools 0.14.0", "kasuari", @@ -10861,24 +10969,6 @@ dependencies = [ "ratatui-core", ] -[[package]] -name = "ratatui-image" -version = "11.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9593d10c61ec2007f429d1fafc4f4a19fecdbae4d06b531a2d505227fb82f5ea" -dependencies = [ - "base64-simd", - "flate2", - "icy_sixel", - "image", - "rand 0.8.8", - "ratatui", - "rustix 0.38.44", - "self_cell", - "thiserror 1.0.69", - "windows 0.58.0", -] - [[package]] name = "ratatui-termina" version = "0.1.0" @@ -10987,18 +11077,6 @@ version = "0.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "20675572f6f24e9e76ef639bc5552774ed45f1c30e2951e1e99c59888861c539" -[[package]] -name = "raw-window-metal" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "40d213455a5f1dc59214213c7330e074ddf8114c9a42411eb890c767357ce135" -dependencies = [ - "objc2 0.6.5", - "objc2-core-foundation", - "objc2-foundation 0.3.2", - "objc2-quartz-core 0.3.2", -] - [[package]] name = "rayon" version = "1.12.0" @@ -11179,12 +11257,6 @@ dependencies = [ "serde_core", ] -[[package]] -name = "renderdoc-sys" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "19b30a45b0cd0bcca8037f3d0dc3421eaf95327a17cad11964fb8179b4fc4832" - [[package]] name = "reqwest" version = "0.13.5" @@ -11954,6 +12026,54 @@ dependencies = [ "sqlite-wasm-rs", ] +[[package]] +name = "rust-i18n" +version = "4.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8502e73e6461c738659455c5d2cf95bc132760a6f203c717e66ee72b78906d7f" +dependencies = [ + "globwalk", + "regex", + "rust-i18n-macro", + "rust-i18n-support", + "smallvec", +] + +[[package]] +name = "rust-i18n-macro" +version = "4.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d54a28dd9d46108d56b9f0c85b220908844233e561c03087890325104f90f2c6" +dependencies = [ + "glob", + "proc-macro2", + "quote", + "rust-i18n-support", + "serde", + "serde_json", + "syn 2.0.119", +] + +[[package]] +name = "rust-i18n-support" +version = "4.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e806c2a9701cbd6043992cd935c30cb1fdb128fa15e7b506f3b46f97045737c0" +dependencies = [ + "arc-swap", + "base62", + "foldhash 0.2.0", + "globwalk", + "itertools 0.11.0", + "normpath", + "serde", + "serde-saphyr", + "serde_json", + "siphasher", + "toml 0.8.23", + "triomphe", +] + [[package]] name = "rustc-hash" version = "1.1.0" @@ -12353,6 +12473,23 @@ dependencies = [ "serde_derive", ] +[[package]] +name = "serde-saphyr" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b8050abb251097357e24aff63ba2c52a6309ecb7d23a5474023df960a02694d8" +dependencies = [ + "annotate-snippets", + "base64 0.23.1", + "encoding_rs_io", + "granit-parser", + "nohash-hasher", + "num-traits", + "serde_core", + "smallvec", + "zmij", +] + [[package]] name = "serde_bytes" version = "0.11.19" @@ -12855,15 +12992,6 @@ version = "0.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "023a211cb3138dbc438680b32560ad89f699977624c9f8dbb95a47d5b4c07dd3" -[[package]] -name = "spirv" -version = "0.4.0+sdk-1.4.341.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d9571ea910ebd84c86af4b3ed27f9dbdc6ad06f17c5f96146b2b671e2976744f" -dependencies = [ - "bitflags 2.13.2", -] - [[package]] name = "spki" version = "0.7.3" @@ -14129,6 +14257,17 @@ dependencies = [ "petgraph", ] +[[package]] +name = "triomphe" +version = "0.1.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0d15f4f5898bcfc5d8a8e45ed30b2f108d710c1a2e5489dbf80e078f707181bc" +dependencies = [ + "arc-swap", + "serde", + "stable_deref_trait", +] + [[package]] name = "try-lock" version = "0.2.5" @@ -14953,9 +15092,6 @@ version = "0.31.11" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d8eab23fefc9e41f8e841df4a9c707e8a8c4ed26e944ef69297184de2785e3be" dependencies = [ - "dlib", - "log", - "once_cell", "pkg-config", ] @@ -15067,178 +15203,6 @@ version = "0.1.12" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a28ac98ddc8b9274cb41bb4d9d4d5c425b6020c50c46f25559911905610b4a88" -[[package]] -name = "wgpu" -version = "30.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "527ccdf43dd5b2e8676eed9984ce00e2bbb0a1b85b70c1969dcb6cd2eb55ab9e" -dependencies = [ - "arrayvec", - "bitflags 2.13.2", - "bytemuck", - "cfg-if", - "cfg_aliases", - "document-features", - "hashbrown 0.17.1", - "js-sys", - "log", - "parking_lot", - "portable-atomic", - "profiling", - "raw-window-handle", - "smallvec", - "static_assertions", - "wasm-bindgen", - "wasm-bindgen-futures", - "web-sys", - "wgpu-core", - "wgpu-hal", - "wgpu-types", -] - -[[package]] -name = "wgpu-core" -version = "30.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "14c018fce9b6270aa203c2fdd56f3cce996713534bd757e4ea58c8560b121f14" -dependencies = [ - "arrayvec", - "bit-set 0.10.0", - "bit-vec 0.9.1", - "bitflags 2.13.2", - "bytemuck", - "cfg_aliases", - "document-features", - "hashbrown 0.17.1", - "indexmap 2.14.2", - "log", - "naga", - "naga-types", - "once_cell", - "parking_lot", - "portable-atomic", - "profiling", - "raw-window-handle", - "rustc-hash 1.1.0", - "smallvec", - "thiserror 2.0.21", - "wgpu-core-deps-apple", - "wgpu-core-deps-emscripten", - "wgpu-core-deps-windows-linux-android", - "wgpu-hal", - "wgpu-naga-bridge", - "wgpu-types", -] - -[[package]] -name = "wgpu-core-deps-apple" -version = "30.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "061f3d319a40d39d00b1ecc2c33b89fe21d4e6fe01859df3500a3a8ecccd6b68" -dependencies = [ - "wgpu-hal", -] - -[[package]] -name = "wgpu-core-deps-emscripten" -version = "30.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d98b86cf4abf524a902dd35f18ca6a3f08fc2ae9847c8f10b48e30491b1f0b86" -dependencies = [ - "wgpu-hal", -] - -[[package]] -name = "wgpu-core-deps-windows-linux-android" -version = "30.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7586165fd5f6d881cb9ce4bb71f40d6caab2c0f1837e3fc1d9788a197fb6004f" -dependencies = [ - "wgpu-hal", -] - -[[package]] -name = "wgpu-hal" -version = "30.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6b7fb58561a792bc237628ba0792e332de418fefe145f13b5ed8201e6d52f58" -dependencies = [ - "android_system_properties", - "arrayvec", - "ash", - "bit-set 0.10.0", - "bitflags 2.13.2", - "block2 0.6.2", - "bytemuck", - "cfg-if", - "cfg_aliases", - "glow", - "glutin_wgl_sys", - "gpu-allocator", - "hashbrown 0.17.1", - "js-sys", - "khronos-egl", - "libc", - "libloading", - "log", - "naga", - "naga-types", - "ndk-sys", - "objc2 0.6.5", - "objc2-core-foundation", - "objc2-core-graphics", - "objc2-foundation 0.3.2", - "objc2-metal 0.3.2", - "objc2-quartz-core 0.3.2", - "once_cell", - "ordered-float", - "parking_lot", - "portable-atomic", - "portable-atomic-util", - "profiling", - "range-alloc", - "raw-window-handle", - "raw-window-metal", - "renderdoc-sys", - "smallvec", - "static_assertions", - "thiserror 2.0.21", - "wasm-bindgen", - "wayland-sys", - "web-sys", - "wgpu-naga-bridge", - "wgpu-types", - "windows 0.62.2", - "windows-core 0.62.2", - "windows-result 0.4.1", -] - -[[package]] -name = "wgpu-naga-bridge" -version = "30.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d2f62e73117bb7a62bfd9c5a5841438a823f6566c6442a808ee269d2d055c081" -dependencies = [ - "naga", - "wgpu-types", -] - -[[package]] -name = "wgpu-types" -version = "30.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "99dad6f1fbdbbdb4c278a6508b059d44688f5cebddf78d005a46a31340269286" -dependencies = [ - "bitflags 2.13.2", - "bytemuck", - "js-sys", - "log", - "naga-types", - "raw-window-handle", - "static_assertions", - "web-sys", -] - [[package]] name = "which" version = "6.0.3" @@ -16005,12 +15969,6 @@ dependencies = [ "zeroize", ] -[[package]] -name = "xml-rs" -version = "0.8.29" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e450f9b2ed1dff33c94c12589a87338689467b9c4f5d8a5710bd09a847d2c8a7" - [[package]] name = "xml5ever" version = "0.18.1" @@ -16300,6 +16258,7 @@ dependencies = [ "nix 0.31.3", "typed-path", "windows-sys 0.61.2", + "zopfli", ] [[package]] @@ -16327,6 +16286,18 @@ dependencies = [ "serde", ] +[[package]] +name = "zopfli" +version = "0.8.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aaf7fc5d30c28483d93805c4a5e12b05bbb52407fa67c5f8bd552374cd01fb11" +dependencies = [ + "bumpalo", + "crc32fast", + "log", + "simd-adler32", +] + [[package]] name = "zstd" version = "0.13.3" diff --git a/Cargo.toml b/Cargo.toml index a28032a965e..123e6981633 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -97,15 +97,15 @@ maka-mcp = { path = "plugins/agent/mcp" } hex = "0.4.3" maka-app-client = { path = "products/maka/client" } nsh-terminal = { path = "third-party/nsh/crates/nsh-terminal" } -nsh-platform-linux = { path = "third-party/nsh/crates/nsh-platform-linux" } +nsh-platform-linux = { path = "third-party/nsh/crates/nsh-platform-linux", default-features = false, features = ["js", "zlib", "crypto", "editor", "highlight", "math", "plot", "rich-editor", "term"] } nsh-core = { path = "third-party/nsh/crates/nsh-core" } nsh-engine = { path = "third-party/nsh/crates/nsh-engine" } nsh-js = { path = "third-party/nsh/crates/nsh-js" } nsh-platform-tui = { path = "third-party/nsh/crates/nsh-platform-tui" } -nsh-platform-windows = { path = "third-party/nsh/crates/nsh-platform-windows" } -nsh-platform-macos = { path = "third-party/nsh/crates/nsh-platform-macos" } +nsh-platform-windows = { path = "third-party/nsh/crates/nsh-platform-windows", default-features = false, features = ["js", "zlib", "crypto", "editor", "highlight", "math", "plot", "rich-editor", "term"] } +nsh-platform-macos = { path = "third-party/nsh/crates/nsh-platform-macos", default-features = false, features = ["js", "zlib", "crypto", "editor", "highlight", "math", "plot", "rich-editor", "term"] } nsh-bundler = { path = "third-party/nsh/crates/nsh-bundler", default-features = false } -nsh-base = { path = "third-party/nsh/crates/nsh-base" } +nsh-base = { path = "third-party/nsh/crates/nsh-base", features = ["math"] } maka-ui-build = { path = "tools/ui-build" } maka-agent-facts = { path = "plugins/agent/facts" } maka-packages = { path = "platform/packages" } @@ -183,6 +183,7 @@ maka-ui-support = { path = "platform/ui-support" } maka-web = { path = "plugins/workspace/workspace-web/native" } maka-workbench = { path = "products/maka/workbench" } ratatui = { version = "0.30.2", default-features = false, features = ["crossterm"] } +regex = "1" reqwest = { version = "0.13.5", default-features = false, features = ["rustls", "gzip", "brotli", "deflate", "socks"] } rusqlite = { version = "0.41.0", features = ["bundled"] } schemars = "1.2.3" diff --git a/DESIGN.md b/DESIGN.md index 0d316453575..c8561df98e6 100644 --- a/DESIGN.md +++ b/DESIGN.md @@ -21,7 +21,7 @@ Maka is a desktop workspace for directing and supervising agents. The interface is calm, native and compact: generous around reading and decisions, dense where comparison matters. The task stays central; activity, permissions, failures and produced work stay inspectable without turning the window into a dashboard. -The [NSH design guide](third-party/nsh/website/docs/design-guides.md) is the baseline. This file records what Maka decides on top of it. [`ui.tsx`](products/maka/workbench/app/ui.tsx) owns the values; when this file and the source disagree, fix the wrong one in the same change. The terminal shares the workbench but keeps its cell grid, so desktop geometry stays behind `platform.isTerminal`. +The [NSH design guide](third-party/nsh/website/docs/design-guides.md) is the baseline. This file records what Maka decides on top of it. [`ui.tsx`](products/maka/workbench/app/ui.tsx) owns the values; when this file and the source disagree, fix the wrong one in the same change. The terminal shares the workbench but keeps its cell grid, so desktop geometry stays behind `platform.idiom === 'terminal'`. ## Hierarchy diff --git a/LICENSE b/LICENSE index e14794e45d1..9132dd1c5b0 100644 --- a/LICENSE +++ b/LICENSE @@ -336,13 +336,17 @@ platform/computer-use/THIRD_PARTY_NOTICES. NSH native shell sources (Apache License 2.0) -third-party/nsh contains NSH from https://github.com/M4n5ter/nsh at revision -de176695240d550f2b303643b8019146c7989e7f, based on https://github.com/longbridge/nsh. +third-party/nsh contains NSH initially imported from +https://github.com/M4n5ter/nsh at revision +de176695240d550f2b303643b8019146c7989e7f and synchronized with +https://github.com/longbridge/nsh through revision +323a8663f6fdb63340c634a50da9bbb820037b69. Copyright 2026 Longbridge . Original license texts, the complete source inventory and local integration changes are recorded in third-party/nsh/{LICENSE-APACHE,upstream.json,SOURCE.md}. The snapshot preserves the separate licenses for its bundled icy_sixel -sources, LLRT type definitions, and example and test fonts. +sources, LLRT type definitions, browser polyfills, KaTeX fonts, sound +fixtures, and example and test fonts. The IBM Plex Sans test font in products/maka/workbench/tests/fonts retains its SIL Open Font License in the adjacent OFL.txt. diff --git a/docs/code-origin-audit.md b/docs/code-origin-audit.md index 777da9e7779..f78abb077e8 100644 --- a/docs/code-origin-audit.md +++ b/docs/code-origin-audit.md @@ -54,6 +54,8 @@ The upstream MIT license is preserved in the root `LICENSE`. No upstream tests a - `website/src/assets/incubator.png`: Unmodified Apache Incubator trademark artwork from https://www.apache.org/logos/res/incubator/default.png. - `website/src/assets/social.en.png`: English website preview rendered by `website/scripts/social-preview.mjs`; includes the product mark and self-hosted OFL-1.1 fonts. - `website/src/assets/social.zh-CN.png`: Chinese website preview rendered by the same source and toolchain. +- `third-party/nsh/crates/nsh-base/fonts/katex.pack.zst`: Zstandard-compressed KaTeX math fonts (`KaTeX_*.ttf`); source and revision are recorded in `third-party/nsh/upstream.json`, and the SIL OFL-1.1 license is preserved alongside it in `katex.LICENSE.txt`. +- `third-party/nsh/crates/nsh-testing/tests/testing/fonts/Pacifico-Regular.woff2`: Unmodified Pacifico WOFF2 test font from the NSH source snapshot; its SIL OFL-1.1 notice is preserved in `examples/gallery/fonts/OFL.txt`. - `third-party/nsh/examples/gallery-rs/icon.png`: Unmodified NSH example application artwork; source and revision are recorded in `third-party/nsh/upstream.json`. - `third-party/nsh/examples/gallery-rs/native/assets/bounce.gif`: Unmodified NSH gallery animation fixture from the same source snapshot. - `third-party/nsh/examples/gallery-rs/native/assets/fonts/Pacifico-Regular.ttf`: Unmodified Pacifico example font; its SIL OFL-1.1 notice is preserved alongside it in `OFL.txt`. @@ -63,14 +65,21 @@ The upstream MIT license is preserved in the root `LICENSE`. No upstream tests a - `third-party/nsh/examples/gallery/fonts/Pacifico-Regular.ttf`: Unmodified Pacifico example font; its SIL OFL-1.1 notice is preserved alongside it in `OFL.txt`. - `third-party/nsh/examples/gallery/icon.png`: Unmodified NSH example application artwork from the same source snapshot. - `third-party/nsh/examples/gallery/logo@2x.png`: Unmodified NSH gallery image fixture from the same source snapshot. +- `third-party/nsh/examples/gallery/sounds/*.wav`: Unmodified NSH gallery sound fixtures from the same source snapshot; their MIT license is preserved alongside them in `LICENSE`. - `third-party/nsh/examples/gallery/spinner.webp`: Unmodified NSH gallery animation fixture from the same source snapshot. -- `third-party/nsh/examples/terminal-workbench/assets/Pacifico-Regular.ttf`: Unmodified Pacifico example font; its SIL OFL-1.1 notice is preserved alongside it in `OFL.txt`. -- `third-party/nsh/examples/terminal-workbench/assets/runtime.png`: Unmodified NSH terminal-workbench image fixture from the same source snapshot. -- `third-party/nsh/tests/compat/cases/layout/fonts/Pacifico-Regular.ttf`: Unmodified Pacifico layout-test font; the snapshot preserves its SIL OFL-1.1 notice in `examples/gallery/fonts/OFL.txt`. +- `third-party/nsh/examples/gallery/tests/fixtures/flag.png`: Unmodified NSH gallery image test fixture from the same source snapshot. +- `third-party/nsh/tests/compat/cases/layout/fonts/Pacifico-Regular.ttf`: Unmodified Pacifico layout-test font; its SIL OFL-1.1 notice is preserved alongside it in `OFL.txt`. +- `third-party/nsh/tests/compat/cases/layout/fonts/Pacifico-Regular.woff`: Unmodified Pacifico WOFF layout-test font; its SIL OFL-1.1 notice is preserved alongside it in `OFL.txt`. +- `third-party/nsh/tests/compat/cases/layout/fonts/Pacifico-Regular.woff2`: Unmodified Pacifico WOFF2 layout-test font; its SIL OFL-1.1 notice is preserved alongside it in `OFL.txt`. +- `third-party/nsh/tests/compat/cases/modules/sounds/click.wav`: Unmodified NSH audio compatibility fixture from the same source snapshot. - `third-party/nsh/tests/compat/cases/props/images/flag.png`: Unmodified NSH image-scale compatibility fixture from the same source snapshot. - `third-party/nsh/tests/compat/cases/props/images/flag@2x.png`: Unmodified NSH image-scale compatibility fixture from the same source snapshot. - `third-party/nsh/tests/compat/cases/props/images/flag@3x.png`: Unmodified NSH image-scale compatibility fixture from the same source snapshot. +- `third-party/nsh/tests/compat/cases/web/images/flag.png`: Unmodified NSH web image compatibility fixture from the same source snapshot. - `third-party/nsh/website/public/apple-touch-icon.png`: Unmodified NSH website artwork from the same source snapshot. +- `third-party/nsh/website/public/brand/*.png`: Unmodified NSH website brand artwork from the same source snapshot. - `third-party/nsh/website/public/icon-512.png`: Unmodified NSH website artwork from the same source snapshot. +- `third-party/nsh/website/public/og-image.png`: Unmodified NSH website Open Graph preview artwork from the same source snapshot. +- `third-party/nsh/website/public/sounds/*.wav`: Unmodified NSH website sound fixtures from the same source snapshot; their MIT license is preserved alongside them in `LICENSE`. - `products/maka/workbench/tests/fonts/IBMPlexSans-Regular.ttf`: Unmodified IBM Plex Sans regression-test font copied from the pinned NSH snapshot’s `third-party/gpui-wgpu/test-assets/IBMPlexSans-Regular.ttf`; its SIL OFL-1.1 license is preserved beside it in `OFL.txt`. The fixture is independent of the removed product renderer dependency. diff --git a/plugins/agent/composer/ui/Composer.tsx b/plugins/agent/composer/ui/Composer.tsx index c88ca943504..07964a2fb2b 100644 --- a/plugins/agent/composer/ui/Composer.tsx +++ b/plugins/agent/composer/ui/Composer.tsx @@ -130,9 +130,9 @@ export function Composer(props: ComposerViewInput) { }); const hero = () => props.session() === null || props.session()!.empty(); // On the desktop the card's 8-point inset makes its corners concentric with the 32-point round buttons. - const cardRadius = () => (platform.isTerminal && compact() ? 16 : 24); + const cardRadius = () => (platform.idiom === 'terminal' && compact() ? 16 : 24); // Desktop only: the terminal keeps its start pane as it is. - const noConnections = () => !platform.isTerminal && (props.needsConnection?.() ?? false); + const noConnections = () => platform.idiom !== 'terminal' && (props.needsConnection?.() ?? false); const pending = () => props.pending?.() ?? null; let pendingDrop: ((event: { uris: string[] }) => void) | null = null; props.dropFiles?.((event) => { @@ -223,7 +223,7 @@ export function Composer(props: ComposerViewInput) { // A file drag over the editor leaves the conversation's own drop target. const draggingOverEditor = signal(false); const fileDragging = () => - !platform.isTerminal && + platform.idiom !== 'terminal' && (props.session() !== null || pending() !== null) && (draggingOverEditor() || (props.fileDragging?.() ?? false)); effect(() => { @@ -277,18 +277,18 @@ export function Composer(props: ComposerViewInput) { tooltip={textTooltip(() => props.session()?.workspace() || tr('Choose workspace'))} onPress={props.chooseWorkspace} style={{ - ...(platform.isTerminal ? controlStyle : toolbarControlStyle), + ...(platform.idiom === 'terminal' ? controlStyle : toolbarControlStyle), flexDirection: 'row', alignItems: 'center', maxWidth: '100%', minWidth: 0, flexShrink: 1, - gap: platform.isTerminal ? 8 : 4, + gap: platform.idiom === 'terminal' ? 8 : 4, }} - hoverStyle={{ backgroundColor: platform.isTerminal ? C.card : C.line }} - focusStyle={{ backgroundColor: platform.isTerminal ? C.raised : C.line }} + hoverStyle={{ backgroundColor: platform.idiom === 'terminal' ? C.card : C.line }} + focusStyle={{ backgroundColor: platform.idiom === 'terminal' ? C.raised : C.line }} > - + ) { > {workspaceLabel()} - + } > @@ -389,8 +389,8 @@ export function Composer(props: ComposerViewInput) { maxWidth: 800, alignSelf: 'center', paddingHorizontal: 16, - paddingTop: hero() || platform.isTerminal ? 0 : 12, - paddingBottom: hero() || !platform.isTerminal ? 16 : 8, + paddingTop: hero() || platform.idiom === 'terminal' ? 0 : 12, + paddingBottom: hero() || platform.idiom !== 'terminal' ? 16 : 8, }} > @@ -420,7 +420,7 @@ export function Composer(props: ComposerViewInput) { {/* The desktop keeps the workspace in the toolbar and asks only for a missing connection. */} - + ) { fontSize: 12, // A single line occupies 32 points: 16 of text, 8 above and 8 below. // This keeps the next card's outward cell paint clear of the notice. - ...(platform.isTerminal ? { lineHeight: 16, paddingVertical: 8 } : { paddingTop: 4 }), + ...(platform.idiom === 'terminal' + ? { lineHeight: 16, paddingVertical: 8 } + : { paddingTop: 4 }), }} > {props.session()?.notice()} @@ -526,11 +528,15 @@ export function Composer(props: ComposerViewInput) { accessibilityLabel={tr('Conversation composer')} style={{ flexShrink: 0, - backgroundColor: platform.isTerminal ? C.raised : C.card, + backgroundColor: platform.idiom === 'terminal' ? C.raised : C.card, borderRadius: cardRadius(), borderWidth: 1, - borderColor: fileDragging() ? C.accent : platform.isTerminal ? C.line : C.card, - ...(platform.isTerminal + borderColor: fileDragging() + ? C.accent + : platform.idiom === 'terminal' + ? C.line + : C.card, + ...(platform.idiom === 'terminal' ? { paddingHorizontal: 16, paddingTop: 12, @@ -604,7 +610,7 @@ export function Composer(props: ComposerViewInput) { /> ) { { flexDirection: 'row', alignItems: 'center', - gap: platform.isTerminal ? 8 : 4, + gap: platform.idiom === 'terminal' ? 8 : 4, }, { pointerEvents: 'box-none' }, ]} @@ -865,11 +871,11 @@ export function Composer(props: ComposerViewInput) { pending={pending()?.permissions ?? null} /> {/* After the sandbox, so leaving the start pane moves neither. */} - {workspaceControl()} + {workspaceControl()} ) { > {/* The desktop shows context use beside the model; the terminal keeps it in the line under the composer. */} - + props.session()!.contextUsage!()!} /> {props.models} @@ -966,14 +972,14 @@ export function Composer(props: ComposerViewInput) { {/* The terminal reserves the warning row so the composer never jumps; the desktop shows it only when there is a warning, so no empty band sits under the box. */} - + {warning()} - + {props.session()?.metrics()} diff --git a/plugins/agent/composer/ui/ComposerCompletion.tsx b/plugins/agent/composer/ui/ComposerCompletion.tsx index 44ea0b41c5e..5ad94befde1 100644 --- a/plugins/agent/composer/ui/ComposerCompletion.tsx +++ b/plugins/agent/composer/ui/ComposerCompletion.tsx @@ -819,7 +819,15 @@ export function createComposerCompletion(options: Options) { list = node; }, queryInput(node: InputRef) { - queryInput.set(inputEditor(node, queryComposing)); + queryInput.set( + inputEditor(node, { + value: query, + setValue: (value) => query.set(value), + selection: querySelection, + setSelection: (selection) => querySelection.set(selection), + composing: queryComposing, + }), + ); querySelection.set({ start: 0, end: 0 }); node.focus(); }, diff --git a/plugins/agent/composer/ui/composerPaste.ts b/plugins/agent/composer/ui/composerPaste.ts index 4bdecd1102d..9a7f2ea6f68 100644 --- a/plugins/agent/composer/ui/composerPaste.ts +++ b/plugins/agent/composer/ui/composerPaste.ts @@ -18,7 +18,7 @@ */ import { effect, keymap, platform } from 'nsh'; -import { Window } from 'nsh/desktop'; +import { currentWindow, isAvailable } from 'nsh/desktop'; import type { ComposerEditor } from '../../../../products/maka/workbench/app/ComposerEditor'; import type { ComposerSession, @@ -51,6 +51,7 @@ export function createComposerPaste(options: { composing(): boolean; dismiss(): void; }) { + const win = isAvailable && platform.idiom !== 'terminal' ? currentWindow() : null; let focused: Owner | null = null; let dropped: { target: Target; text: string } | null = null; const capture = (owner: Owner | null): Target | null => { @@ -139,11 +140,11 @@ export function createComposerPaste(options: { const target = capture(owner); if (!target) return; options.dismiss(); - if (platform.isTerminal) { + if (platform.idiom === 'terminal') { paths(target, event.uris); return; } - Window.orderFront(); + win?.focus(); paths(target, event.uris, (text) => { if (!unchanged(target)) { insert(target, text); diff --git a/plugins/agent/conversations/ui/Conversation.tsx b/plugins/agent/conversations/ui/Conversation.tsx index b0f691f93a9..480c428eea7 100644 --- a/plugins/agent/conversations/ui/Conversation.tsx +++ b/plugins/agent/conversations/ui/Conversation.tsx @@ -330,7 +330,7 @@ const readingColumn = { maxWidth: 800, alignSelf: 'center', paddingLeft: 16, - paddingRight: platform.isTerminal ? 24 : 16, + paddingRight: platform.idiom === 'terminal' ? 24 : 16, } as const; export function Conversation(props: ConversationProps) { @@ -705,9 +705,9 @@ export function Conversation(props: ConversationProps) { row?.role === 'assistant' || // Recovered failures sit under the summary that folds them. (row?.role === 'failure' && - (!platform.isTerminal || turnOutcome(turn) === 'completed'))) && + (platform.idiom !== 'terminal' || turnOutcome(turn) === 'completed'))) && !summaries.has(turn.turnId) && - (!platform.isTerminal || turnOutcome(turn) !== null) + (platform.idiom !== 'terminal' || turnOutcome(turn) !== null) ) { summaries.add(turn.turnId); result.push({ @@ -2849,7 +2849,7 @@ export function Conversation(props: ConversationProps) { const railShown = () => ready() && navigationItems().length > 1; // The desktop rail's width, kept on both sides so the reading column stays centered. - const railInset = () => (!platform.isTerminal && railShown() ? railWidth() + 8 : 0); + const railInset = () => (platform.idiom !== 'terminal' && railShown() ? railWidth() + 8 : 0); const rail = () => ( { @@ -3296,7 +3296,7 @@ export function Conversation(props: ConversationProps) { fork={props.fork} menu={menu} extra={ - !platform.isTerminal && props.edit ? ( + platform.idiom !== 'terminal' && props.edit ? ( loadedOpening(row().turnId)} @@ -3311,7 +3311,7 @@ export function Conversation(props: ConversationProps) { /> )} failureActions={ - platform.isTerminal + platform.idiom === 'terminal' ? undefined : (row) => ( // Only where the conversation ends in this failure. @@ -3335,7 +3335,7 @@ export function Conversation(props: ConversationProps) { ) } editMessage={ - !platform.isTerminal && props.edit + platform.idiom !== 'terminal' && props.edit ? (row, ownerKey, menu) => ( )} - {rail()} + {rail()} - + replacePending(null)); const recentWorkspaces = signal([]); - const recentKnown = signal(platform.isTerminal || !!side); + const recentKnown = signal(platform.idiom === 'terminal' || !!side); const workspaceReady = signal(false); const workspaceError = createText(); const recentOpen = signal(false); @@ -295,7 +295,7 @@ export function createConversationUi( return write; }; const rememberWorkspace = (workspace: BrowserWorkspace, path: string) => { - if (platform.isTerminal || side || !path || workspace.kind === 'session') return; + if (platform.idiom === 'terminal' || side || !path || workspace.kind === 'session') return; void setRecentWorkspace(path, true).catch(report); }; const pendingWorkspace = computed(() => pending()?.workspace ?? null); @@ -448,7 +448,7 @@ export function createConversationUi( }; effect(() => { const workspace = pendingWorkspace(); - if (!platform.isTerminal && !side && workspace) + if (platform.idiom !== 'terminal' && !side && workspace) untracked(() => { void checkWorkspace(); }); @@ -748,7 +748,7 @@ export function createConversationUi( remember = true, ) => { if (!alive || selected() !== expectedSessionId) return; - if (!platform.isTerminal) { + if (platform.idiom !== 'terminal') { if (pendingSending() || pendingFileBusy() || pendingCreateUncertain()) return; let recentWorkspace = workspace; let label = @@ -2375,7 +2375,9 @@ export function createConversationUi( backgroundColor: C.card, // A card of its own on the desktop: square corners // flush on the composer's rounded top read as notches. - ...(platform.isTerminal ? {} : { borderRadius: 8, marginBottom: 8 }), + ...(platform.idiom === 'terminal' + ? {} + : { borderRadius: 8, marginBottom: 8 }), }} contentStyle={{ paddingHorizontal: 16, @@ -2510,7 +2512,7 @@ export function createConversationUi( sessionId: selected(), })} workspacePicker={ - platform.isTerminal || side ? undefined : ( + platform.idiom === 'terminal' || side ? undefined : ( selected() === null ? pendingWorkspaceLabel() : (handle()?.workspace() ?? '') @@ -2598,7 +2600,7 @@ export function createConversationUi( > fs-set-times@0.20.3 (Apache-2.0 WITH LLVM-exception OR Apache-2.0 OR MIT); authors declared by package: Dan Gohman futures-lite@2.6.1 (Apache-2.0 OR MIT); authors declared by package: Stjepan Glavina , Contributors to futures-rs -glow@0.17.0 (MIT OR Apache-2.0 OR Zlib); authors declared by package: Joshua Groves , Dzmitry Malyshau group@0.14.0 (MIT/Apache-2.0); authors declared by package: Sean Bowe , Jack Grigg +gstreamer-app-sys@0.25.4 (MIT); authors declared by package: Sebastian Dröge +gstreamer-app@0.25.2 (MIT OR Apache-2.0); authors declared by package: Sebastian Dröge +gstreamer-audio-sys@0.25.4 (MIT); authors declared by package: Sebastian Dröge +gstreamer-audio@0.25.4 (MIT OR Apache-2.0); authors declared by package: Sebastian Dröge +gstreamer-base-sys@0.25.4 (MIT); authors declared by package: Sebastian Dröge +gstreamer-base@0.25.4 (MIT OR Apache-2.0); authors declared by package: Sebastian Dröge +gstreamer-sys@0.25.4 (MIT); authors declared by package: Sebastian Dröge +gstreamer@0.25.4 (MIT OR Apache-2.0); authors declared by package: Sebastian Dröge home@0.5.12 (MIT OR Apache-2.0); authors declared by package: Brian Anderson indoc@2.0.8 (MIT OR Apache-2.0); authors declared by package: David Tolnay inventory@0.3.25 (MIT OR Apache-2.0); authors declared by package: David Tolnay @@ -70,7 +77,6 @@ io-extras@0.19.0 (Apache-2.0 WITH LLVM-exception OR Apache-2.0 OR MIT); authors io-lifetimes@2.0.4 (Apache-2.0 WITH LLVM-exception OR Apache-2.0 OR MIT); authors declared by package: Dan Gohman io-lifetimes@3.0.1 (Apache-2.0 WITH LLVM-exception OR Apache-2.0 OR MIT); authors declared by package: Dan Gohman itoa@1.0.18 (MIT OR Apache-2.0); authors declared by package: David Tolnay -khronos-egl@6.0.0 (MIT/Apache-2.0); authors declared by package: Timothée Haudebourg , Sean Kerr lazy_static@1.5.1 (MIT OR Apache-2.0); authors declared by package: Marvin Löbel lexical-parse-float@1.0.6 (MIT/Apache-2.0); authors declared by package: Alex Huszagh lexical-parse-integer@1.0.6 (MIT/Apache-2.0); authors declared by package: Alex Huszagh @@ -79,6 +85,7 @@ linux-raw-sys@0.12.1 (Apache-2.0 WITH LLVM-exception OR Apache-2.0 OR MIT); auth linux-raw-sys@0.4.15 (Apache-2.0 WITH LLVM-exception OR Apache-2.0 OR MIT); authors declared by package: Dan Gohman minimal-lexical@0.2.1 (MIT/Apache-2.0); authors declared by package: Alex Huszagh once_cell@1.21.4 (MIT OR Apache-2.0); authors declared by package: Aleksey Kladov +option-operations@0.6.1 (MIT/Apache-2.0); authors declared by package: François Laignel ordered-stream@0.2.0 (MIT OR Apache-2.0); authors declared by package: Daniel De Graaf , Zeeshan Ali Khan parking@2.2.1 (Apache-2.0 OR MIT); authors declared by package: Stjepan Glavina , The Rust Project Developers paste@1.0.15 (MIT OR Apache-2.0); authors declared by package: David Tolnay @@ -106,6 +113,7 @@ rustix@1.1.5 (Apache-2.0 WITH LLVM-exception OR Apache-2.0 OR MIT); authors decl rustversion@1.0.23 (MIT OR Apache-2.0); authors declared by package: David Tolnay semver@1.0.28 (MIT OR Apache-2.0); authors declared by package: David Tolnay seq-macro@0.3.6 (MIT OR Apache-2.0); authors declared by package: David Tolnay +serde-saphyr@1.3.0 (MIT OR Apache-2.0) serde@1.0.229 (MIT OR Apache-2.0); authors declared by package: Erick Tryzelaar , David Tolnay serde_bytes@0.11.19 (MIT OR Apache-2.0); authors declared by package: David Tolnay serde_core@1.0.229 (MIT OR Apache-2.0); authors declared by package: Erick Tryzelaar , David Tolnay @@ -175,8 +183,15 @@ https://crates.io/api/v1/crates/flume/0.12.0/download :: LICENSE-MIT https://crates.io/api/v1/crates/fs-err/2.11.0/download :: LICENSE-MIT https://crates.io/api/v1/crates/fs-set-times/0.20.3/download :: LICENSE-MIT https://crates.io/api/v1/crates/futures-lite/2.6.1/download :: LICENSE-MIT -https://crates.io/api/v1/crates/glow/0.17.0/download :: LICENSE-MIT https://crates.io/api/v1/crates/group/0.14.0/download :: LICENSE-MIT +https://crates.io/api/v1/crates/gstreamer-app-sys/0.25.4/download :: LICENSE +https://crates.io/api/v1/crates/gstreamer-app/0.25.2/download :: LICENSE-MIT +https://crates.io/api/v1/crates/gstreamer-audio-sys/0.25.4/download :: LICENSE +https://crates.io/api/v1/crates/gstreamer-audio/0.25.4/download :: LICENSE-MIT +https://crates.io/api/v1/crates/gstreamer-base-sys/0.25.4/download :: LICENSE +https://crates.io/api/v1/crates/gstreamer-base/0.25.4/download :: LICENSE-MIT +https://crates.io/api/v1/crates/gstreamer-sys/0.25.4/download :: LICENSE +https://crates.io/api/v1/crates/gstreamer/0.25.4/download :: LICENSE-MIT https://crates.io/api/v1/crates/home/0.5.12/download :: LICENSE-MIT https://crates.io/api/v1/crates/indoc/2.0.8/download :: LICENSE-MIT https://crates.io/api/v1/crates/inventory/0.3.25/download :: LICENSE-MIT @@ -184,7 +199,6 @@ https://crates.io/api/v1/crates/io-extras/0.19.0/download :: LICENSE-MIT https://crates.io/api/v1/crates/io-lifetimes/2.0.4/download :: LICENSE-MIT https://crates.io/api/v1/crates/io-lifetimes/3.0.1/download :: LICENSE-MIT https://crates.io/api/v1/crates/itoa/1.0.18/download :: LICENSE-MIT -https://crates.io/api/v1/crates/khronos-egl/6.0.0/download :: LICENSE-MIT https://crates.io/api/v1/crates/lazy_static/1.5.1/download :: LICENSE-MIT https://crates.io/api/v1/crates/lexical-parse-float/1.0.6/download :: LICENSE-MIT https://crates.io/api/v1/crates/lexical-parse-integer/1.0.6/download :: LICENSE-MIT @@ -193,6 +207,7 @@ https://crates.io/api/v1/crates/linux-raw-sys/0.12.1/download :: LICENSE-MIT https://crates.io/api/v1/crates/linux-raw-sys/0.4.15/download :: LICENSE-MIT https://crates.io/api/v1/crates/minimal-lexical/0.2.1/download :: LICENSE-MIT https://crates.io/api/v1/crates/once_cell/1.21.4/download :: LICENSE-MIT +https://crates.io/api/v1/crates/option-operations/0.6.1/download :: LICENSE-MIT https://crates.io/api/v1/crates/ordered-stream/0.2.0/download :: LICENSE-MIT https://crates.io/api/v1/crates/parking/2.2.1/download :: LICENSE-MIT https://crates.io/api/v1/crates/paste/1.0.15/download :: LICENSE-MIT @@ -220,6 +235,7 @@ https://crates.io/api/v1/crates/rustix/1.1.5/download :: LICENSE-MIT https://crates.io/api/v1/crates/rustversion/1.0.23/download :: LICENSE-MIT https://crates.io/api/v1/crates/semver/1.0.28/download :: LICENSE-MIT https://crates.io/api/v1/crates/seq-macro/0.3.6/download :: LICENSE-MIT +https://crates.io/api/v1/crates/serde-saphyr/1.3.0/download :: LICENSE-MIT https://crates.io/api/v1/crates/serde/1.0.229/download :: LICENSE-MIT https://crates.io/api/v1/crates/serde_bytes/0.11.19/download :: LICENSE-MIT https://crates.io/api/v1/crates/serde_core/1.0.229/download :: LICENSE-MIT @@ -1222,6 +1238,7 @@ bitflags@2.13.2 (MIT OR Apache-2.0); authors declared by package: The Rust Proje blocking@1.7.0 (Apache-2.0 OR MIT) bs58@0.5.1 (MIT/Apache-2.0) bstr@1.13.1 (MIT OR Apache-2.0); authors declared by package: Andrew Gallant +bumpalo@3.20.3 (MIT OR Apache-2.0); authors declared by package: Nick Fitzgerald by_address@1.2.1 (MIT OR Apache-2.0); authors declared by package: Matt Brubeck camino@1.2.6 (MIT OR Apache-2.0); authors declared by package: Without Boats , Ashley Williams , Steve Klabnik , Rain cap-fs-ext@4.0.3 (Apache-2.0 WITH LLVM-exception OR Apache-2.0 OR MIT); authors declared by package: Dan Gohman , Jakub Konka @@ -1238,6 +1255,7 @@ core-foundation-sys@0.8.7 (MIT OR Apache-2.0); authors declared by package: The core-foundation@0.10.1 (MIT OR Apache-2.0); authors declared by package: The Servo Project Developers core-graphics-types@0.2.0 (MIT OR Apache-2.0); authors declared by package: The Servo Project Developers core-graphics@0.24.0 (MIT OR Apache-2.0); authors declared by package: The Servo Project Developers +critical-section@1.2.0 (MIT OR Apache-2.0) crossbeam-channel@0.5.17 (MIT OR Apache-2.0) crossbeam-deque@0.8.8 (MIT OR Apache-2.0) crossbeam-epoch@0.9.21 (MIT OR Apache-2.0) @@ -1277,8 +1295,11 @@ getopts@0.2.24 (MIT OR Apache-2.0); authors declared by package: The Rust Projec gif@0.14.2 (MIT OR Apache-2.0); authors declared by package: The image-rs Developers gix-imara-diff@0.3.3 (Apache-2.0); authors declared by package: pascalkuthe , Sebastian Thiel glob@0.3.4 (MIT OR Apache-2.0); authors declared by package: The Rust Project Developers -glow@0.17.0 (MIT OR Apache-2.0 OR Zlib); authors declared by package: Joshua Groves , Dzmitry Malyshau group@0.14.0 (MIT/Apache-2.0); authors declared by package: Sean Bowe , Jack Grigg +gstreamer-app@0.25.2 (MIT OR Apache-2.0); authors declared by package: Sebastian Dröge +gstreamer-audio@0.25.4 (MIT OR Apache-2.0); authors declared by package: Sebastian Dröge +gstreamer-base@0.25.4 (MIT OR Apache-2.0); authors declared by package: Sebastian Dröge +gstreamer@0.25.4 (MIT OR Apache-2.0); authors declared by package: Sebastian Dröge gzip-header@1.1.0 (MIT/Apache-2.0); authors declared by package: oyvindln hash32@0.2.1 (MIT OR Apache-2.0); authors declared by package: Jorge Aparicio hash32@0.3.1 (MIT OR Apache-2.0); authors declared by package: Jorge Aparicio @@ -1304,11 +1325,11 @@ io-close@0.3.7 (MIT OR Apache-2.0); authors declared by package: wufz io-extras@0.19.0 (Apache-2.0 WITH LLVM-exception OR Apache-2.0 OR MIT); authors declared by package: Dan Gohman io-lifetimes@2.0.4 (Apache-2.0 WITH LLVM-exception OR Apache-2.0 OR MIT); authors declared by package: Dan Gohman io-lifetimes@3.0.1 (Apache-2.0 WITH LLVM-exception OR Apache-2.0 OR MIT); authors declared by package: Dan Gohman +itertools@0.11.0 (MIT OR Apache-2.0); authors declared by package: bluss itertools@0.13.0 (MIT OR Apache-2.0); authors declared by package: bluss itertools@0.14.0 (MIT OR Apache-2.0); authors declared by package: bluss itertools@0.15.0 (MIT OR Apache-2.0); authors declared by package: bluss jobserver@0.1.35 (MIT OR Apache-2.0); authors declared by package: Alex Crichton -khronos-egl@6.0.0 (MIT/Apache-2.0); authors declared by package: Timothée Haudebourg , Sean Kerr lazy_static@1.5.1 (MIT OR Apache-2.0); authors declared by package: Marvin Löbel linux-raw-sys@0.12.1 (Apache-2.0 WITH LLVM-exception OR Apache-2.0 OR MIT); authors declared by package: Dan Gohman linux-raw-sys@0.4.15 (Apache-2.0 WITH LLVM-exception OR Apache-2.0 OR MIT); authors declared by package: Dan Gohman @@ -1330,6 +1351,7 @@ num@0.4.3 (MIT OR Apache-2.0); authors declared by package: The Rust Project Dev object@0.39.1 (Apache-2.0 OR MIT) once_cell@1.21.4 (MIT OR Apache-2.0); authors declared by package: Aleksey Kladov openssl-probe@0.2.1 (MIT OR Apache-2.0); authors declared by package: Alex Crichton +option-operations@0.6.1 (MIT/Apache-2.0); authors declared by package: François Laignel ordered-stream@0.2.0 (MIT OR Apache-2.0); authors declared by package: Daniel De Graaf , Zeeshan Ali Khan ordermap@1.2.2 (Apache-2.0 OR MIT) palette@0.7.7 (MIT OR Apache-2.0); authors declared by package: Erik Hedvall @@ -1346,9 +1368,7 @@ plain@0.2.3 (MIT/Apache-2.0); authors declared by package: jzr png@0.17.16 (MIT OR Apache-2.0); authors declared by package: The image-rs Developers png@0.18.1 (MIT OR Apache-2.0); authors declared by package: The image-rs Developers polling@3.11.0 (Apache-2.0 OR MIT); authors declared by package: Stjepan Glavina , John Nunley -pollster@0.4.0 (Apache-2.0/MIT); authors declared by package: Joshua Barretto postcard@1.1.3 (MIT OR Apache-2.0); authors declared by package: James Munns -profiling@1.0.18 (MIT OR Apache-2.0); authors declared by package: Philip Degarmo rayon-core@1.13.0 (MIT OR Apache-2.0) rayon@1.12.0 (MIT OR Apache-2.0) regex-automata@0.4.18 (MIT OR Apache-2.0); authors declared by package: The Rust Project Developers, Andrew Gallant @@ -1356,7 +1376,6 @@ regex-lite@0.1.9 (MIT OR Apache-2.0); authors declared by package: The Rust Proj regex-syntax@0.8.11 (MIT OR Apache-2.0); authors declared by package: The Rust Project Developers, Andrew Gallant regex@1.13.1 (MIT OR Apache-2.0); authors declared by package: The Rust Project Developers, Andrew Gallant relative-path@2.0.3 (MIT OR Apache-2.0); authors declared by package: John-John Tedro -renderdoc-sys@1.1.0 (MIT OR Apache-2.0); authors declared by package: Eyal Kalderon ring@0.17.14 (Apache-2.0 AND ISC) roxmltree@0.20.0 (MIT OR Apache-2.0); authors declared by package: Yevhenii Reizner roxmltree@0.21.2 (MIT OR Apache-2.0); authors declared by package: Yevhenii Reizner @@ -1445,6 +1464,7 @@ https://crates.io/api/v1/crates/bitflags/2.13.2/download :: LICENSE-APACHE https://crates.io/api/v1/crates/blocking/1.7.0/download :: LICENSE-APACHE https://crates.io/api/v1/crates/bs58/0.5.1/download :: LICENSE-APACHE https://crates.io/api/v1/crates/bstr/1.13.1/download :: LICENSE-APACHE +https://crates.io/api/v1/crates/bumpalo/3.20.3/download :: LICENSE-APACHE https://crates.io/api/v1/crates/by_address/1.2.1/download :: LICENSE-APACHE https://crates.io/api/v1/crates/camino/1.2.6/download :: LICENSE-APACHE https://crates.io/api/v1/crates/cap-fs-ext/4.0.3/download :: LICENSE-APACHE @@ -1461,6 +1481,7 @@ https://crates.io/api/v1/crates/core-foundation-sys/0.8.7/download :: LICENSE-AP https://crates.io/api/v1/crates/core-foundation/0.10.1/download :: LICENSE-APACHE https://crates.io/api/v1/crates/core-graphics-types/0.2.0/download :: LICENSE-APACHE https://crates.io/api/v1/crates/core-graphics/0.24.0/download :: LICENSE-APACHE +https://crates.io/api/v1/crates/critical-section/1.2.0/download :: LICENSE-APACHE https://crates.io/api/v1/crates/crossbeam-channel/0.5.17/download :: LICENSE-APACHE https://crates.io/api/v1/crates/crossbeam-deque/0.8.8/download :: LICENSE-APACHE https://crates.io/api/v1/crates/crossbeam-epoch/0.9.21/download :: LICENSE-APACHE @@ -1500,8 +1521,11 @@ https://crates.io/api/v1/crates/getopts/0.2.24/download :: LICENSE-APACHE https://crates.io/api/v1/crates/gif/0.14.2/download :: LICENSE-APACHE https://crates.io/api/v1/crates/gix-imara-diff/0.3.3/download :: LICENSE https://crates.io/api/v1/crates/glob/0.3.4/download :: LICENSE-APACHE -https://crates.io/api/v1/crates/glow/0.17.0/download :: LICENSE-APACHE https://crates.io/api/v1/crates/group/0.14.0/download :: LICENSE-APACHE +https://crates.io/api/v1/crates/gstreamer-app/0.25.2/download :: LICENSE-APACHE +https://crates.io/api/v1/crates/gstreamer-audio/0.25.4/download :: LICENSE-APACHE +https://crates.io/api/v1/crates/gstreamer-base/0.25.4/download :: LICENSE-APACHE +https://crates.io/api/v1/crates/gstreamer/0.25.4/download :: LICENSE-APACHE https://crates.io/api/v1/crates/gzip-header/1.1.0/download :: LICENSE-APACHE https://crates.io/api/v1/crates/hash32/0.2.1/download :: LICENSE-APACHE https://crates.io/api/v1/crates/hash32/0.3.1/download :: LICENSE-APACHE @@ -1527,11 +1551,11 @@ https://crates.io/api/v1/crates/io-close/0.3.7/download :: LICENSE-APACHE https://crates.io/api/v1/crates/io-extras/0.19.0/download :: LICENSE-APACHE https://crates.io/api/v1/crates/io-lifetimes/2.0.4/download :: LICENSE-APACHE https://crates.io/api/v1/crates/io-lifetimes/3.0.1/download :: LICENSE-APACHE +https://crates.io/api/v1/crates/itertools/0.11.0/download :: LICENSE-APACHE https://crates.io/api/v1/crates/itertools/0.13.0/download :: LICENSE-APACHE https://crates.io/api/v1/crates/itertools/0.14.0/download :: LICENSE-APACHE https://crates.io/api/v1/crates/itertools/0.15.0/download :: LICENSE-APACHE https://crates.io/api/v1/crates/jobserver/0.1.35/download :: LICENSE-APACHE -https://crates.io/api/v1/crates/khronos-egl/6.0.0/download :: LICENSE-APACHE https://crates.io/api/v1/crates/lazy_static/1.5.1/download :: LICENSE-APACHE https://crates.io/api/v1/crates/linux-raw-sys/0.12.1/download :: LICENSE-APACHE https://crates.io/api/v1/crates/linux-raw-sys/0.4.15/download :: LICENSE-APACHE @@ -1553,6 +1577,7 @@ https://crates.io/api/v1/crates/num/0.4.3/download :: LICENSE-APACHE https://crates.io/api/v1/crates/object/0.39.1/download :: LICENSE-APACHE https://crates.io/api/v1/crates/once_cell/1.21.4/download :: LICENSE-APACHE https://crates.io/api/v1/crates/openssl-probe/0.2.1/download :: LICENSE-APACHE +https://crates.io/api/v1/crates/option-operations/0.6.1/download :: LICENSE-APACHE https://crates.io/api/v1/crates/ordered-stream/0.2.0/download :: LICENSE-APACHE https://crates.io/api/v1/crates/ordermap/1.2.2/download :: LICENSE-APACHE https://crates.io/api/v1/crates/palette/0.7.7/download :: LICENSE-APACHE @@ -1569,7 +1594,6 @@ https://crates.io/api/v1/crates/plain/0.2.3/download :: LICENSE-APACHE https://crates.io/api/v1/crates/png/0.17.16/download :: LICENSE-APACHE https://crates.io/api/v1/crates/png/0.18.1/download :: LICENSE-APACHE https://crates.io/api/v1/crates/polling/3.11.0/download :: LICENSE-APACHE -https://crates.io/api/v1/crates/pollster/0.4.0/download :: LICENSE-APACHE https://crates.io/api/v1/crates/postcard/1.1.3/download :: LICENSE-APACHE https://crates.io/api/v1/crates/rayon-core/1.13.0/download :: LICENSE-APACHE https://crates.io/api/v1/crates/rayon/1.12.0/download :: LICENSE-APACHE @@ -1578,7 +1602,6 @@ https://crates.io/api/v1/crates/regex-lite/0.1.9/download :: LICENSE-APACHE https://crates.io/api/v1/crates/regex-syntax/0.8.11/download :: LICENSE-APACHE https://crates.io/api/v1/crates/regex/1.13.1/download :: LICENSE-APACHE https://crates.io/api/v1/crates/relative-path/2.0.3/download :: LICENSE-APACHE -https://crates.io/api/v1/crates/renderdoc-sys/1.1.0/download :: LICENSE-APACHE https://crates.io/api/v1/crates/ring/0.17.14/download :: src/polyfill/once_cell/LICENSE-APACHE https://crates.io/api/v1/crates/roxmltree/0.20.0/download :: LICENSE-APACHE https://crates.io/api/v1/crates/roxmltree/0.21.2/download :: LICENSE-APACHE @@ -1645,7 +1668,6 @@ https://crates.io/api/v1/crates/weezl/0.1.12/download :: LICENSE-APACHE https://crates.io/api/v1/crates/wl-clipboard-rs/0.9.4/download :: LICENSE-APACHE https://crates.io/api/v1/crates/xml5ever/0.18.1/download :: LICENSE-APACHE https://github.com/smol-rs/async-io#576b470ca3cadefdec8b169279df23c9a0a63495 (adapted; third-party/async-io) :: LICENSE-APACHE -https://raw.githubusercontent.com/aclysma/profiling/8271551172eb6fa4cba47369aedd93790c623df9/LICENSE-APACHE Apache License Version 2.0, January 2004 @@ -2248,6 +2270,7 @@ ryu-js@1.0.3 (Apache-2.0 OR BSL-1.0); authors declared by package: David Tolnay ryu@1.0.23 (Apache-2.0 OR BSL-1.0); authors declared by package: David Tolnay semver@1.0.28 (MIT OR Apache-2.0); authors declared by package: David Tolnay seq-macro@0.3.6 (MIT OR Apache-2.0); authors declared by package: David Tolnay +serde-saphyr@1.3.0 (MIT OR Apache-2.0) serde@1.0.229 (MIT OR Apache-2.0); authors declared by package: Erick Tryzelaar , David Tolnay serde_bytes@0.11.19 (MIT OR Apache-2.0); authors declared by package: David Tolnay serde_core@1.0.229 (MIT OR Apache-2.0); authors declared by package: Erick Tryzelaar , David Tolnay @@ -2304,6 +2327,7 @@ https://crates.io/api/v1/crates/ryu-js/1.0.3/download :: LICENSE-APACHE https://crates.io/api/v1/crates/ryu/1.0.23/download :: LICENSE-APACHE https://crates.io/api/v1/crates/semver/1.0.28/download :: LICENSE-APACHE https://crates.io/api/v1/crates/seq-macro/0.3.6/download :: LICENSE-APACHE +https://crates.io/api/v1/crates/serde-saphyr/1.3.0/download :: LICENSE-APACHE https://crates.io/api/v1/crates/serde/1.0.229/download :: LICENSE-APACHE https://crates.io/api/v1/crates/serde_bytes/0.11.19/download :: LICENSE-APACHE https://crates.io/api/v1/crates/serde_core/1.0.229/download :: LICENSE-APACHE @@ -2802,6 +2826,294 @@ Software. ================================================================================ +annotate-snippets@0.12.17 (MIT OR Apache-2.0) +anstyle@1.0.14 (MIT OR Apache-2.0) +clap@4.6.7 (MIT OR Apache-2.0) +clap_builder@4.6.7 (MIT OR Apache-2.0) +clap_derive@4.6.7 (MIT OR Apache-2.0) +clap_lex@1.1.1 (MIT OR Apache-2.0) +kstring@2.0.5 (MIT OR Apache-2.0) +serde_spanned@0.6.9 (MIT OR Apache-2.0) +serde_spanned@1.1.2 (MIT OR Apache-2.0) +toml@0.8.23 (MIT OR Apache-2.0) +toml@1.1.8+spec-1.1.0 (MIT OR Apache-2.0) +toml_datetime@0.6.11 (MIT OR Apache-2.0) +toml_datetime@1.1.2+spec-1.1.0 (MIT OR Apache-2.0) +toml_edit@0.22.27 (MIT OR Apache-2.0) +toml_edit@0.25.17+spec-1.1.0 (MIT OR Apache-2.0) +toml_parser@1.1.5+spec-1.1.0 (MIT OR Apache-2.0) +toml_write@0.1.2 (MIT OR Apache-2.0) +toml_writer@1.1.3+spec-1.1.0 (MIT OR Apache-2.0) + +https://crates.io/api/v1/crates/annotate-snippets/0.12.17/download :: LICENSE-MIT +https://crates.io/api/v1/crates/anstyle/1.0.14/download :: LICENSE-MIT +https://crates.io/api/v1/crates/clap/4.6.7/download :: LICENSE-MIT +https://crates.io/api/v1/crates/clap_builder/4.6.7/download :: LICENSE-MIT +https://crates.io/api/v1/crates/clap_derive/4.6.7/download :: LICENSE-MIT +https://crates.io/api/v1/crates/clap_lex/1.1.1/download :: LICENSE-MIT +https://crates.io/api/v1/crates/kstring/2.0.5/download :: LICENSE-MIT +https://crates.io/api/v1/crates/serde_spanned/0.6.9/download :: LICENSE-MIT +https://crates.io/api/v1/crates/serde_spanned/1.1.2/download :: LICENSE-MIT +https://crates.io/api/v1/crates/toml/0.8.23/download :: LICENSE-MIT +https://crates.io/api/v1/crates/toml/1.1.8+spec-1.1.0/download :: LICENSE-MIT +https://crates.io/api/v1/crates/toml_datetime/0.6.11/download :: LICENSE-MIT +https://crates.io/api/v1/crates/toml_datetime/1.1.2+spec-1.1.0/download :: LICENSE-MIT +https://crates.io/api/v1/crates/toml_edit/0.22.27/download :: LICENSE-MIT +https://crates.io/api/v1/crates/toml_edit/0.25.17+spec-1.1.0/download :: LICENSE-MIT +https://crates.io/api/v1/crates/toml_parser/1.1.5+spec-1.1.0/download :: LICENSE-MIT +https://crates.io/api/v1/crates/toml_write/0.1.2/download :: LICENSE-MIT +https://crates.io/api/v1/crates/toml_writer/1.1.3+spec-1.1.0/download :: LICENSE-MIT + +Copyright (c) Individual contributors + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + +================================================================================ + +annotate-snippets@0.12.17 (MIT OR Apache-2.0) +clap@4.6.7 (MIT OR Apache-2.0) +clap_builder@4.6.7 (MIT OR Apache-2.0) +clap_derive@4.6.7 (MIT OR Apache-2.0) +clap_lex@1.1.1 (MIT OR Apache-2.0) +serde_spanned@1.1.2 (MIT OR Apache-2.0) +toml@1.1.8+spec-1.1.0 (MIT OR Apache-2.0) +toml_datetime@1.1.2+spec-1.1.0 (MIT OR Apache-2.0) +toml_edit@0.25.17+spec-1.1.0 (MIT OR Apache-2.0) +toml_parser@1.1.5+spec-1.1.0 (MIT OR Apache-2.0) +toml_writer@1.1.3+spec-1.1.0 (MIT OR Apache-2.0) + +https://crates.io/api/v1/crates/annotate-snippets/0.12.17/download :: LICENSE-APACHE +https://crates.io/api/v1/crates/clap/4.6.7/download :: LICENSE-APACHE +https://crates.io/api/v1/crates/clap_builder/4.6.7/download :: LICENSE-APACHE +https://crates.io/api/v1/crates/clap_derive/4.6.7/download :: LICENSE-APACHE +https://crates.io/api/v1/crates/clap_lex/1.1.1/download :: LICENSE-APACHE +https://crates.io/api/v1/crates/serde_spanned/1.1.2/download :: LICENSE-APACHE +https://crates.io/api/v1/crates/toml/1.1.8+spec-1.1.0/download :: LICENSE-APACHE +https://crates.io/api/v1/crates/toml_datetime/1.1.2+spec-1.1.0/download :: LICENSE-APACHE +https://crates.io/api/v1/crates/toml_edit/0.25.17+spec-1.1.0/download :: LICENSE-APACHE +https://crates.io/api/v1/crates/toml_parser/1.1.5+spec-1.1.0/download :: LICENSE-APACHE +https://crates.io/api/v1/crates/toml_writer/1.1.3+spec-1.1.0/download :: LICENSE-APACHE + +Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "{}" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright Individual contributors + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + +================================================================================ + anstyle@1.0.14 (MIT OR Apache-2.0) bytecount@0.6.9 (Apache-2.0/MIT); authors declared by package: Andre Bogus , Joshua Landau cobs@0.3.0 (MIT OR Apache-2.0); authors declared by package: Allen Welkie <>, James Munns @@ -2814,6 +3126,7 @@ foreign-types-shared@0.3.1 (MIT/Apache-2.0); authors declared by package: Steven foreign-types@0.3.2 (MIT/Apache-2.0); authors declared by package: Steven Fackler foreign-types@0.5.0 (MIT/Apache-2.0); authors declared by package: Steven Fackler hex@0.4.3 (MIT OR Apache-2.0); authors declared by package: KokaKiwi +kstring@2.0.5 (MIT OR Apache-2.0) native-tls@0.2.18 (MIT OR Apache-2.0); authors declared by package: Steven Fackler openssl-macros@0.1.1 (MIT/Apache-2.0) openssl@0.10.81 (Apache-2.0); authors declared by package: Steven Fackler @@ -2839,6 +3152,7 @@ https://crates.io/api/v1/crates/foreign-types-shared/0.3.1/download :: LICENSE-A https://crates.io/api/v1/crates/foreign-types/0.3.2/download :: LICENSE-APACHE https://crates.io/api/v1/crates/foreign-types/0.5.0/download :: LICENSE-APACHE https://crates.io/api/v1/crates/hex/0.4.3/download :: LICENSE-APACHE +https://crates.io/api/v1/crates/kstring/2.0.5/download :: LICENSE-APACHE https://crates.io/api/v1/crates/native-tls/0.2.18/download :: LICENSE-APACHE https://crates.io/api/v1/crates/openssl-macros/0.1.1/download :: LICENSE-APACHE https://crates.io/api/v1/crates/openssl/0.10.81/download :: LICENSE-APACHE @@ -3056,65 +3370,10 @@ Apache License ================================================================================ -anstyle@1.0.14 (MIT OR Apache-2.0) -clap@4.6.7 (MIT OR Apache-2.0) -clap_builder@4.6.7 (MIT OR Apache-2.0) -clap_derive@4.6.7 (MIT OR Apache-2.0) -clap_lex@1.1.1 (MIT OR Apache-2.0) -serde_spanned@0.6.9 (MIT OR Apache-2.0) -serde_spanned@1.1.2 (MIT OR Apache-2.0) -toml@0.8.23 (MIT OR Apache-2.0) -toml@1.1.8+spec-1.1.0 (MIT OR Apache-2.0) -toml_datetime@0.6.11 (MIT OR Apache-2.0) -toml_datetime@1.1.2+spec-1.1.0 (MIT OR Apache-2.0) -toml_edit@0.22.27 (MIT OR Apache-2.0) -toml_edit@0.25.17+spec-1.1.0 (MIT OR Apache-2.0) -toml_parser@1.1.5+spec-1.1.0 (MIT OR Apache-2.0) -toml_write@0.1.2 (MIT OR Apache-2.0) -toml_writer@1.1.3+spec-1.1.0 (MIT OR Apache-2.0) - -https://crates.io/api/v1/crates/anstyle/1.0.14/download :: LICENSE-MIT -https://crates.io/api/v1/crates/clap/4.6.7/download :: LICENSE-MIT -https://crates.io/api/v1/crates/clap_builder/4.6.7/download :: LICENSE-MIT -https://crates.io/api/v1/crates/clap_derive/4.6.7/download :: LICENSE-MIT -https://crates.io/api/v1/crates/clap_lex/1.1.1/download :: LICENSE-MIT -https://crates.io/api/v1/crates/serde_spanned/0.6.9/download :: LICENSE-MIT -https://crates.io/api/v1/crates/serde_spanned/1.1.2/download :: LICENSE-MIT -https://crates.io/api/v1/crates/toml/0.8.23/download :: LICENSE-MIT -https://crates.io/api/v1/crates/toml/1.1.8+spec-1.1.0/download :: LICENSE-MIT -https://crates.io/api/v1/crates/toml_datetime/0.6.11/download :: LICENSE-MIT -https://crates.io/api/v1/crates/toml_datetime/1.1.2+spec-1.1.0/download :: LICENSE-MIT -https://crates.io/api/v1/crates/toml_edit/0.22.27/download :: LICENSE-MIT -https://crates.io/api/v1/crates/toml_edit/0.25.17+spec-1.1.0/download :: LICENSE-MIT -https://crates.io/api/v1/crates/toml_parser/1.1.5+spec-1.1.0/download :: LICENSE-MIT -https://crates.io/api/v1/crates/toml_write/0.1.2/download :: LICENSE-MIT -https://crates.io/api/v1/crates/toml_writer/1.1.3+spec-1.1.0/download :: LICENSE-MIT - -Copyright (c) Individual contributors - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. - -================================================================================ - apple-cf@0.9.3 (MIT OR Apache-2.0); authors declared by package: Per Johansson apple-metal@0.8.8 (MIT OR Apache-2.0); authors declared by package: Per Johansson approx@0.5.1 (Apache-2.0); authors declared by package: Brendan Zabarauskas +atomic_refcell@0.1.14 (Apache-2.0 OR MIT); authors declared by package: Bobby Holley atspi-common@0.14.0 (Apache-2.0 OR MIT) atspi-connection@0.14.0 (Apache-2.0 OR MIT) atspi-proxies@0.14.0 (Apache-2.0 OR MIT) @@ -3135,23 +3394,21 @@ flagset@0.4.7 (Apache-2.0); authors declared by package: Nathaniel McCallum , FlatBuffers Maintainers flume@0.12.0 (Apache-2.0/MIT); authors declared by package: Joshua Barretto fontdue@0.9.5 (MIT OR Apache-2.0 OR Zlib); authors declared by package: Joe Cumbo -gl_generator@0.14.0 (Apache-2.0); authors declared by package: Brendan Zabarauskas , Corey Richardson, Arseny Kapoulkine halfbrown@0.4.0 (Apache-2.0/MIT); authors declared by package: Heinz N. Gies is-macro@0.3.8 (Apache-2.0); authors declared by package: 강동윤 json-escape-simd@3.1.3 (MIT) json-strip-comments@3.1.2 (Apache-2.0) -khronos_api@3.1.0 (Apache-2.0); authors declared by package: Brendan Zabarauskas , Corey Richardson, Arseny Kapoulkine, Pierre Krieger kurbo@0.13.1 (Apache-2.0 OR MIT) lru-slab@0.1.3 (MIT OR Apache-2.0 OR Zlib); authors declared by package: Benjamin Saunders +nohash-hasher@0.2.0 (Apache-2.0 OR MIT); authors declared by package: Parity Technologies nsh-js@0.4.0 (Apache-2.0) ntapi@0.4.3 (Apache-2.0 OR MIT); authors declared by package: MSxDOS numtoa@0.2.4 (MIT OR Apache-2.0); authors declared by package: Michael Aaron Murphy polycool@0.4.0 (MIT OR Apache-2.0) -quickjs-jit-stdlib@0.14.1 (Apache-2.0) +quickjs-jit-stdlib@0.14.2 (Apache-2.0) quinn-proto@0.11.19 (MIT OR Apache-2.0) quinn-udp@0.5.16 (MIT OR Apache-2.0) quinn@0.11.12 (MIT OR Apache-2.0) -raw-window-metal@1.1.0 (MIT OR Apache-2.0) rustls-platform-verifier@0.7.1 (MIT OR Apache-2.0) screencapturekit@8.0.1 (MIT OR Apache-2.0); authors declared by package: Per Johansson seccompiler@0.5.0 (Apache-2.0 OR BSD-3-Clause); authors declared by package: Amazon Firecracker Team @@ -3159,7 +3416,6 @@ self_cell@1.3.0 (Apache-2.0 OR GPL-2.0-only); authors declared by package: Lukas serdect@0.4.3 (Apache-2.0 OR MIT); authors declared by package: RustCrypto Developers simd-json@0.18.1 (Apache-2.0 OR MIT); authors declared by package: Heinz N. Gies , Sunny Gleason siphasher@1.0.4 (MIT OR Apache-2.0); authors declared by package: Frank Denis -spirv@0.4.0+sdk-1.4.341.0 (Apache-2.0); authors declared by package: Lei Zhang sse-stream@0.2.6 (MIT OR Apache-2.0); authors declared by package: 4t145 sse-stream@0.3.0 (MIT OR Apache-2.0); authors declared by package: 4t145 static_assertions@1.1.0 (MIT OR Apache-2.0); authors declared by package: Nikolai Vazquez @@ -3182,6 +3438,7 @@ zune-jpeg@0.5.15 (MIT OR Apache-2.0 OR Zlib); authors declared by package: caleb https://crates.io/api/v1/crates/apple-cf/0.9.3/download :: LICENSE-APACHE https://crates.io/api/v1/crates/apple-metal/0.8.8/download :: LICENSE-APACHE https://crates.io/api/v1/crates/approx/0.5.1/download :: LICENSE +https://crates.io/api/v1/crates/atomic_refcell/0.1.14/download :: LICENSE.APACHE https://crates.io/api/v1/crates/atspi-common/0.14.0/download :: LICENSE-APACHE2.txt https://crates.io/api/v1/crates/atspi-connection/0.14.0/download :: LICENSE-APACHE2.txt https://crates.io/api/v1/crates/atspi-proxies/0.14.0/download :: LICENSE-APACHE2.txt @@ -3207,14 +3464,14 @@ https://crates.io/api/v1/crates/json-escape-simd/3.1.3/download :: LICENSE-APACH https://crates.io/api/v1/crates/json-strip-comments/3.1.2/download :: LICENSE https://crates.io/api/v1/crates/kurbo/0.13.1/download :: LICENSE-APACHE https://crates.io/api/v1/crates/lru-slab/0.1.3/download :: LICENSE-APACHE +https://crates.io/api/v1/crates/nohash-hasher/0.2.0/download :: LICENSE-APACHE https://crates.io/api/v1/crates/ntapi/0.4.3/download :: LICENSE-APACHE https://crates.io/api/v1/crates/numtoa/0.2.4/download :: LICENSE-APACHE https://crates.io/api/v1/crates/polycool/0.4.0/download :: LICENSE-APACHE -https://crates.io/api/v1/crates/quickjs-jit-stdlib/0.14.1/download :: LICENSE-APACHE +https://crates.io/api/v1/crates/quickjs-jit-stdlib/0.14.2/download :: LICENSE-APACHE https://crates.io/api/v1/crates/quinn-proto/0.11.19/download :: LICENSE-APACHE https://crates.io/api/v1/crates/quinn-udp/0.5.16/download :: LICENSE-APACHE https://crates.io/api/v1/crates/quinn/0.11.12/download :: LICENSE-APACHE -https://crates.io/api/v1/crates/raw-window-metal/1.1.0/download :: LICENSE-APACHE https://crates.io/api/v1/crates/rustls-platform-verifier/0.7.1/download :: LICENSE-APACHE https://crates.io/api/v1/crates/screencapturekit/8.0.1/download :: LICENSE-APACHE https://crates.io/api/v1/crates/seccompiler/0.5.0/download :: LICENSE-APACHE @@ -3241,9 +3498,6 @@ https://crates.io/api/v1/crates/zeroize_derive/1.5.0/download :: LICENSE-APACHE https://crates.io/api/v1/crates/zune-core/0.5.1/download :: LICENSE-APACHE https://crates.io/api/v1/crates/zune-jpeg/0.5.15/download :: LICENSE-APACHE https://github.com/M4n5ter/nsh#de176695240d550f2b303643b8019146c7989e7f (adapted; third-party/nsh/crates/nsh-js) :: third_party/llrt-types/LICENSE -https://raw.githubusercontent.com/brendanzab/gl-rs/ea503e8d5fb6d73c6030e6191ce738cd3bf3433e/LICENSE -https://raw.githubusercontent.com/brendanzab/gl-rs/f150967b1c44ae888e6676f93f639ebc82771bdc/LICENSE -https://raw.githubusercontent.com/gfx-rs/rspirv/8afc3d0ac8e158128cd1410bb2e4b4c26ab11bb4/LICENSE https://raw.githubusercontent.com/google/flatbuffers/7e163021e59cca4f8e1e35a7c828b5c6b7915953/LICENSE Apache License @@ -4098,112 +4352,6 @@ DEALINGS IN THE SOFTWARE. ================================================================================ -ash@0.38.0+1.3.281 (MIT OR Apache-2.0); authors declared by package: Maik Klein , Benjamin Saunders , Marijn Suijten - -https://crates.io/api/v1/crates/ash/0.38.0+1.3.281/download :: LICENSE-APACHE - -Apache License - -Version 2.0, January 2004 - -http://www.apache.org/licenses/ - -TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - -1. Definitions. - -"License" shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document. - -"Licensor" shall mean the copyright owner or entity authorized by the copyright owner that is granting the License. - -"Legal Entity" shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity. - -"You" (or "Your") shall mean an individual or Legal Entity exercising permissions granted by this License. - -"Source" form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files. - -"Object" form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types. - -"Work" shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below). - -"Derivative Works" shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof. - -"Contribution" shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, "submitted" means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as "Not a Contribution." - -"Contributor" shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work. - -2. Grant of Copyright License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form. - -3. Grant of Patent License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed. - -4. Redistribution. You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions: - -You must give any other recipients of the Work or Derivative Works a copy of this License; and -You must cause any modified files to carry prominent notices stating that You changed the files; and -You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and -If the Work includes a "NOTICE" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License. - -You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License. -5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions. - -6. Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file. - -7. Disclaimer of Warranty. Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License. - -8. Limitation of Liability. In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages. - -9. Accepting Warranty or Additional Liability. While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability. - -END OF TERMS AND CONDITIONS - -Copyright 2016 Maik Klein - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. - -================================================================================ - -ash@0.38.0+1.3.281 (MIT OR Apache-2.0); authors declared by package: Maik Klein , Benjamin Saunders , Marijn Suijten - -https://crates.io/api/v1/crates/ash/0.38.0+1.3.281/download :: LICENSE-MIT - -Copyright (c) 2016 ASH - -Permission is hereby granted, free of charge, to any -person obtaining a copy of this software and associated -documentation files (the "Software"), to deal in the -Software without restriction, including without -limitation the rights to use, copy, modify, merge, -publish, distribute, sublicense, and/or sell copies of -the Software, and to permit persons to whom the Software -is furnished to do so, subject to the following -conditions: - -The above copyright notice and this permission notice -shall be included in all copies or substantial portions -of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF -ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED -TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A -PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT -SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY -CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION -OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR -IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER -DEALINGS IN THE SOFTWARE. - -================================================================================ - ashpd@0.13.13 (MIT); authors declared by package: Bilal Elmoussaoui https://crates.io/api/v1/crates/ashpd/0.13.13/download :: LICENSE @@ -4882,6 +5030,34 @@ DEALINGS IN THE SOFTWARE. ================================================================================ +atomic_refcell@0.1.14 (Apache-2.0 OR MIT); authors declared by package: Bobby Holley + +https://crates.io/api/v1/crates/atomic_refcell/0.1.14/download :: LICENSE.MIT + +MIT License + +Copyright (c) 2022 Bobby Holley + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + +================================================================================ + atspi-common@0.14.0 (Apache-2.0 OR MIT) atspi-connection@0.14.0 (Apache-2.0 OR MIT) atspi-proxies@0.14.0 (Apache-2.0 OR MIT) @@ -5879,6 +6055,32 @@ DEALINGS IN THE SOFTWARE. ================================================================================ +base62@2.2.6 (MIT); authors declared by package: François Bernier , Chai T. Rex + +https://crates.io/api/v1/crates/base62/2.2.6/download :: LICENSE + +Copyright (c) 2015 François Bernier + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. + +================================================================================ + base64-simd@0.8.0 (MIT) hex-simd@0.8.0 (MIT) uuid-simd@0.8.0 (MIT) @@ -6065,40 +6267,8 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ================================================================================ -bit-set@0.10.0 (Apache-2.0 OR MIT); authors declared by package: Alexis Beingessner - -https://crates.io/api/v1/crates/bit-set/0.10.0/download :: LICENSE-MIT - -Copyright (c) 2026 The Rust Project Developers - -Permission is hereby granted, free of charge, to any -person obtaining a copy of this software and associated -documentation files (the "Software"), to deal in the -Software without restriction, including without -limitation the rights to use, copy, modify, merge, -publish, distribute, sublicense, and/or sell copies of -the Software, and to permit persons to whom the Software -is furnished to do so, subject to the following -conditions: - -The above copyright notice and this permission notice -shall be included in all copies or substantial portions -of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF -ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED -TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A -PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT -SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY -CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION -OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR -IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER -DEALINGS IN THE SOFTWARE. - -================================================================================ - -bit-set@0.10.0 (Apache-2.0 OR MIT); authors declared by package: Alexis Beingessner bit-set@0.8.0 (Apache-2.0 OR MIT); authors declared by package: Alexis Beingessner +bit-set@0.9.1 (Apache-2.0 OR MIT); authors declared by package: Alexis Beingessner bit-vec@0.8.0 (Apache-2.0 OR MIT); authors declared by package: Alexis Beingessner bit-vec@0.9.1 (Apache-2.0 OR MIT); authors declared by package: Alexis Beingessner cfg-expr@0.20.10 (MIT OR Apache-2.0); authors declared by package: Embark , Jake Shadle @@ -6113,10 +6283,9 @@ lexical-parse-float@1.0.6 (MIT/Apache-2.0); authors declared by package: Alex Hu lexical-parse-integer@1.0.6 (MIT/Apache-2.0); authors declared by package: Alex Huszagh lexical-util@1.0.7 (MIT/Apache-2.0); authors declared by package: Alex Huszagh minimal-lexical@0.2.1 (MIT/Apache-2.0); authors declared by package: Alex Huszagh -presser@0.3.1 (MIT OR Apache-2.0); authors declared by package: Embark , Gray Olson + +https://crates.io/api/v1/crates/bit-set/0.9.1/download :: LICENSE-MIT + +Copyright (c) 2026 The Rust Project Developers + +Permission is hereby granted, free of charge, to any +person obtaining a copy of this software and associated +documentation files (the "Software"), to deal in the +Software without restriction, including without +limitation the rights to use, copy, modify, merge, +publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software +is furnished to do so, subject to the following +conditions: + +The above copyright notice and this permission notice +shall be included in all copies or substantial portions +of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF +ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED +TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A +PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT +SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR +IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +DEALINGS IN THE SOFTWARE. + +================================================================================ + bitflags@1.3.2 (MIT/Apache-2.0); authors declared by package: The Rust Project Developers bitflags@2.13.2 (MIT OR Apache-2.0); authors declared by package: The Rust Project Developers fraction@0.15.4 (MIT OR Apache-2.0); authors declared by package: dnsl48 @@ -6909,12 +7109,14 @@ Software. blake3@1.8.7 (CC0-1.0 OR Apache-2.0 OR Apache-2.0 WITH LLVM-exception); authors declared by package: Jack O'Connor , Samuel Neves constant_time_eq@0.4.2 (CC0-1.0 OR MIT-0 OR Apache-2.0); authors declared by package: Cesar Eduardo Barros dunce@1.0.5 (CC0-1.0 OR MIT-0 OR Apache-2.0); authors declared by package: Kornel +hexf-parse@0.2.1 (CC0-1.0); authors declared by package: Kang Seonghoon v8x@149.4.0-rc.4 (MIT OR Apache-2.0); authors declared by package: Divy Srivastava https://crates.io/api/v1/crates/blake3/1.8.7/download :: LICENSE_CC0 https://crates.io/api/v1/crates/constant_time_eq/0.4.2/download :: LICENSE-CC0 https://crates.io/api/v1/crates/dunce/1.0.5/download :: LICENSE https://crates.io/api/v1/crates/v8x/149.4.0-rc.4/download :: vendor/wamr/core/iwasm/libraries/libc-wasi/sandboxed-system-primitives/include/LICENSE +https://github.com/lifthrasiir/hexf/blob/4225763d744183d720f575ae96d04161b4d08ea0/parse/Cargo.toml ; https://creativecommons.org/publicdomain/zero/1.0/legalcode.txt Creative Commons Legal Code @@ -7160,7 +7362,6 @@ objc2-foundation@0.3.2 (MIT) objc2-image-io@0.3.2 (Zlib OR Apache-2.0 OR MIT) objc2-io-kit@0.3.2 (Zlib OR Apache-2.0 OR MIT) objc2-io-surface@0.3.2 (Zlib OR Apache-2.0 OR MIT) -objc2-metal@0.3.2 (Zlib OR Apache-2.0 OR MIT) objc2-quartz-core@0.3.2 (Zlib OR Apache-2.0 OR MIT) objc2@0.6.5 (MIT); authors declared by package: Mads Marquart @@ -7355,11 +7556,11 @@ THE SOFTWARE. ================================================================================ -by_address@1.2.1 (MIT OR Apache-2.0); authors declared by package: Matt Brubeck +bumpalo@3.20.3 (MIT OR Apache-2.0); authors declared by package: Nick Fitzgerald -https://crates.io/api/v1/crates/by_address/1.2.1/download :: LICENSE-MIT +https://crates.io/api/v1/crates/bumpalo/3.20.3/download :: LICENSE-MIT -Copyright (c) 2017 Matt Brubeck +Copyright (c) 2019 Nick Fitzgerald Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated @@ -7387,149 +7588,181 @@ DEALINGS IN THE SOFTWARE. ================================================================================ -bytecount@0.6.9 (Apache-2.0/MIT); authors declared by package: Andre Bogus , Joshua Landau - -https://crates.io/api/v1/crates/bytecount/0.6.9/download :: LICENSE.MIT - -Copyright (c) 2017 The bytecount Developers - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. - -================================================================================ - -bytemuck@1.25.2 (Zlib OR Apache-2.0 OR MIT); authors declared by package: Lokathor -bytemuck_derive@1.12.1 (Zlib OR Apache-2.0 OR MIT); authors declared by package: Lokathor - -https://crates.io/api/v1/crates/bytemuck/1.25.2/download :: LICENSE-MIT -https://crates.io/api/v1/crates/bytemuck_derive/1.12.1/download :: LICENSE-MIT - -MIT License - -Copyright (c) 2019 Daniel "Lokathor" Gee. - -Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice (including the next paragraph) shall be included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - -================================================================================ - -bytemuck@1.25.2 (Zlib OR Apache-2.0 OR MIT); authors declared by package: Lokathor -bytemuck_derive@1.12.1 (Zlib OR Apache-2.0 OR MIT); authors declared by package: Lokathor -safe_arch@1.2.0 (Zlib OR Apache-2.0 OR MIT); authors declared by package: Lokathor - -https://crates.io/api/v1/crates/bytemuck/1.25.2/download :: LICENSE-APACHE -https://crates.io/api/v1/crates/bytemuck_derive/1.12.1/download :: LICENSE-APACHE -https://crates.io/api/v1/crates/safe_arch/1.2.0/download :: LICENSE-APACHE.md - -Apache License -Version 2.0, January 2004 -http://www.apache.org/licenses/ - -TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files. - - "Object" form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, "submitted" means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work. - 2. Grant of Copyright License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form. - 3. Grant of Patent License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed. - 4. Redistribution. You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions: - (a) You must give any other recipients of the Work or Derivative Works a copy of this License; and - (b) You must cause any modified files to carry prominent notices stating that You changed the files; and - (c) You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and - (d) If the Work includes a "NOTICE" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License. - - You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License. - 5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions. - 6. Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file. - 7. Disclaimer of Warranty. Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License. - 8. Limitation of Liability. In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages. - 9. Accepting Warranty or Additional Liability. While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability. - -END OF TERMS AND CONDITIONS - -APPENDIX: How to apply the Apache License to your work. - -To apply the Apache License to your work, attach the following boilerplate notice, with the fields enclosed by brackets "[]" replaced with your own identifying information. (Don't include the brackets!) The text should be enclosed in the appropriate comment syntax for the file format. We also recommend that a file or class name and description of purpose be included on the same "printed page" as the copyright notice for easier identification within third-party archives. - -Copyright [yyyy] [name of copyright owner] - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - -http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. - -================================================================================ - -bytemuck@1.25.2 (Zlib OR Apache-2.0 OR MIT); authors declared by package: Lokathor -bytemuck_derive@1.12.1 (Zlib OR Apache-2.0 OR MIT); authors declared by package: Lokathor -tinyvec@1.13.3 (Zlib OR Apache-2.0 OR MIT); authors declared by package: Lokathor - -https://crates.io/api/v1/crates/bytemuck/1.25.2/download :: LICENSE-ZLIB -https://crates.io/api/v1/crates/bytemuck_derive/1.12.1/download :: LICENSE-ZLIB -https://crates.io/api/v1/crates/tinyvec/1.13.3/download :: LICENSE-ZLIB.md - -Copyright (c) 2019 Daniel "Lokathor" Gee. - -This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages arising from the use of this software. - -Permission is granted to anyone to use this software for any purpose, including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions: - -1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. - -2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. - -3. This notice may not be removed or altered from any source distribution. - -================================================================================ - -bytes@1.12.1 (MIT); authors declared by package: Carl Lerche , Sean McArthur +by_address@1.2.1 (MIT OR Apache-2.0); authors declared by package: Matt Brubeck -https://crates.io/api/v1/crates/bytes/1.12.1/download :: LICENSE +https://crates.io/api/v1/crates/by_address/1.2.1/download :: LICENSE-MIT -Copyright (c) 2018 Carl Lerche +Copyright (c) 2017 Matt Brubeck + +Permission is hereby granted, free of charge, to any +person obtaining a copy of this software and associated +documentation files (the "Software"), to deal in the +Software without restriction, including without +limitation the rights to use, copy, modify, merge, +publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software +is furnished to do so, subject to the following +conditions: + +The above copyright notice and this permission notice +shall be included in all copies or substantial portions +of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF +ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED +TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A +PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT +SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR +IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +DEALINGS IN THE SOFTWARE. + +================================================================================ + +bytecount@0.6.9 (Apache-2.0/MIT); authors declared by package: Andre Bogus , Joshua Landau + +https://crates.io/api/v1/crates/bytecount/0.6.9/download :: LICENSE.MIT + +Copyright (c) 2017 The bytecount Developers + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + +================================================================================ + +bytemuck@1.25.2 (Zlib OR Apache-2.0 OR MIT); authors declared by package: Lokathor +bytemuck_derive@1.12.1 (Zlib OR Apache-2.0 OR MIT); authors declared by package: Lokathor + +https://crates.io/api/v1/crates/bytemuck/1.25.2/download :: LICENSE-MIT +https://crates.io/api/v1/crates/bytemuck_derive/1.12.1/download :: LICENSE-MIT + +MIT License + +Copyright (c) 2019 Daniel "Lokathor" Gee. + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice (including the next paragraph) shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +================================================================================ + +bytemuck@1.25.2 (Zlib OR Apache-2.0 OR MIT); authors declared by package: Lokathor +bytemuck_derive@1.12.1 (Zlib OR Apache-2.0 OR MIT); authors declared by package: Lokathor +safe_arch@1.2.0 (Zlib OR Apache-2.0 OR MIT); authors declared by package: Lokathor + +https://crates.io/api/v1/crates/bytemuck/1.25.2/download :: LICENSE-APACHE +https://crates.io/api/v1/crates/bytemuck_derive/1.12.1/download :: LICENSE-APACHE +https://crates.io/api/v1/crates/safe_arch/1.2.0/download :: LICENSE-APACHE.md + +Apache License +Version 2.0, January 2004 +http://www.apache.org/licenses/ + +TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files. + + "Object" form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, "submitted" means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work. + 2. Grant of Copyright License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form. + 3. Grant of Patent License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed. + 4. Redistribution. You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions: + (a) You must give any other recipients of the Work or Derivative Works a copy of this License; and + (b) You must cause any modified files to carry prominent notices stating that You changed the files; and + (c) You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and + (d) If the Work includes a "NOTICE" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License. + + You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License. + 5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions. + 6. Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file. + 7. Disclaimer of Warranty. Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License. + 8. Limitation of Liability. In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages. + 9. Accepting Warranty or Additional Liability. While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability. + +END OF TERMS AND CONDITIONS + +APPENDIX: How to apply the Apache License to your work. + +To apply the Apache License to your work, attach the following boilerplate notice, with the fields enclosed by brackets "[]" replaced with your own identifying information. (Don't include the brackets!) The text should be enclosed in the appropriate comment syntax for the file format. We also recommend that a file or class name and description of purpose be included on the same "printed page" as the copyright notice for easier identification within third-party archives. + +Copyright [yyyy] [name of copyright owner] + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + +http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. + +================================================================================ + +bytemuck@1.25.2 (Zlib OR Apache-2.0 OR MIT); authors declared by package: Lokathor +bytemuck_derive@1.12.1 (Zlib OR Apache-2.0 OR MIT); authors declared by package: Lokathor +tinyvec@1.13.3 (Zlib OR Apache-2.0 OR MIT); authors declared by package: Lokathor + +https://crates.io/api/v1/crates/bytemuck/1.25.2/download :: LICENSE-ZLIB +https://crates.io/api/v1/crates/bytemuck_derive/1.12.1/download :: LICENSE-ZLIB +https://crates.io/api/v1/crates/tinyvec/1.13.3/download :: LICENSE-ZLIB.md + +Copyright (c) 2019 Daniel "Lokathor" Gee. + +This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages arising from the use of this software. + +Permission is granted to anyone to use this software for any purpose, including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. + +2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. + +3. This notice may not be removed or altered from any source distribution. + +================================================================================ + +bytes@1.12.1 (MIT); authors declared by package: Carl Lerche , Sean McArthur + +https://crates.io/api/v1/crates/bytes/1.12.1/download :: LICENSE + +Copyright (c) 2018 Carl Lerche Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated @@ -7632,7 +7865,6 @@ pango-sys@0.22.9 (MIT); authors declared by package: The gtk-rs Project Develope pango@0.22.9 (MIT); authors declared by package: The gtk-rs Project Developers pangocairo-sys@0.22.9 (MIT); authors declared by package: The gtk-rs Project Developers pangocairo@0.22.9 (MIT); authors declared by package: The gtk-rs Project Developers -raw-window-metal@1.1.0 (MIT OR Apache-2.0) siphasher@1.0.4 (MIT OR Apache-2.0); authors declared by package: Frank Denis https://crates.io/api/v1/crates/cairo-rs/0.22.9/download :: LICENSE @@ -7708,7 +7940,6 @@ https://crates.io/api/v1/crates/pango-sys/0.22.9/download :: LICENSE https://crates.io/api/v1/crates/pango/0.22.9/download :: LICENSE https://crates.io/api/v1/crates/pangocairo-sys/0.22.9/download :: LICENSE https://crates.io/api/v1/crates/pangocairo/0.22.9/download :: LICENSE -https://crates.io/api/v1/crates/raw-window-metal/1.1.0/download :: LICENSE-MIT https://crates.io/api/v1/crates/siphasher/1.0.4/download :: LICENSE-MIT https://github.com/GitoxideLabs/gitoxide#dd39fb66e3b1551c9fe849043e39b357a9799ca1 (adapted; third-party/gix-discover) :: LICENSE-MIT https://github.com/GitoxideLabs/gitoxide#dd39fb66e3b1551c9fe849043e39b357a9799ca1 (adapted; third-party/gix-index) :: LICENSE-MIT @@ -8242,10 +8473,8 @@ DEALINGS IN THE SOFTWARE. ================================================================================ cfg-expr@0.20.10 (MIT OR Apache-2.0); authors declared by package: Embark , Jake Shadle -presser@0.3.1 (MIT OR Apache-2.0); authors declared by package: Embark , Gray Olson git+https://github.com/maka-agent/cua?rev=b97a7e7a97b1dabc669b7c362ba39691766df761#b97a7e7a97b1dabc669b7c362ba39691766df761 :: LICENSE @@ -10780,6 +10783,38 @@ SOFTWARE. ================================================================================ +critical-section@1.2.0 (MIT OR Apache-2.0) + +https://crates.io/api/v1/crates/critical-section/1.2.0/download :: LICENSE-MIT + +Copyright (c) 2022 The critical-section authors + +Permission is hereby granted, free of charge, to any +person obtaining a copy of this software and associated +documentation files (the "Software"), to deal in the +Software without restriction, including without +limitation the rights to use, copy, modify, merge, +publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software +is furnished to do so, subject to the following +conditions: + +The above copyright notice and this permission notice +shall be included in all copies or substantial portions +of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF +ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED +TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A +PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT +SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR +IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +DEALINGS IN THE SOFTWARE. + +================================================================================ + crossbeam-channel@0.5.17 (MIT OR Apache-2.0) https://crates.io/api/v1/crates/crossbeam-channel/0.5.17/download :: LICENSE-THIRD-PARTY @@ -14096,32 +14131,6 @@ SOFTWARE. ================================================================================ -dlib@0.5.3 (MIT); authors declared by package: Elinor Berger - -https://crates.io/api/v1/crates/dlib/0.5.3/download :: LICENSE.txt - -Copyright (c) 2015 Victor Berger - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. - -================================================================================ - document-features@0.2.12 (MIT OR Apache-2.0); authors declared by package: Slint Developers https://crates.io/api/v1/crates/document-features/0.2.12/download :: LICENSE-APACHE @@ -14902,6 +14911,7 @@ DEALINGS IN THE SOFTWARE. ================================================================================ either@1.19.0 (MIT OR Apache-2.0) +itertools@0.11.0 (MIT OR Apache-2.0); authors declared by package: bluss itertools@0.13.0 (MIT OR Apache-2.0); authors declared by package: bluss itertools@0.14.0 (MIT OR Apache-2.0); authors declared by package: bluss itertools@0.15.0 (MIT OR Apache-2.0); authors declared by package: bluss @@ -14910,6 +14920,7 @@ serde_with@3.24.0 (MIT OR Apache-2.0); authors declared by package: Jonas Bushar serde_with_macros@3.24.0 (MIT OR Apache-2.0); authors declared by package: Jonas Bushart https://crates.io/api/v1/crates/either/1.19.0/download :: LICENSE-MIT +https://crates.io/api/v1/crates/itertools/0.11.0/download :: LICENSE-MIT https://crates.io/api/v1/crates/itertools/0.13.0/download :: LICENSE-MIT https://crates.io/api/v1/crates/itertools/0.14.0/download :: LICENSE-MIT https://crates.io/api/v1/crates/itertools/0.15.0/download :: LICENSE-MIT @@ -15834,14 +15845,13 @@ image-webp@0.2.4 (MIT OR Apache-2.0) image@0.25.10 (MIT OR Apache-2.0); authors declared by package: The image-rs Developers miniz_oxide@0.8.9 (MIT OR Zlib OR Apache-2.0); authors declared by package: Frommi , oyvindln , Rich Geldreich richgel99@gmail.com miniz_oxide@0.9.1 (MIT OR Zlib OR Apache-2.0); authors declared by package: Frommi , oyvindln , Rich Geldreich richgel99@gmail.com -naga-types@30.0.1 (MIT OR Apache-2.0); authors declared by package: gfx-rs developers -naga@30.0.1 (MIT OR Apache-2.0); authors declared by package: gfx-rs developers +naga@29.0.4 (MIT OR Apache-2.0); authors declared by package: gfx-rs developers +normpath@1.5.2 (MIT OR Apache-2.0); authors declared by package: dylni num-conv@0.2.2 (MIT OR Apache-2.0); authors declared by package: Jacob Pratt pin-project-internal@1.1.13 (Apache-2.0 OR MIT) pin-project-lite@0.2.17 (Apache-2.0 OR MIT) pin-project@1.1.13 (Apache-2.0 OR MIT) portable-atomic@1.15.0 (Apache-2.0 OR MIT) -range-alloc@0.1.5 (MIT OR Apache-2.0); authors declared by package: the gfx-rs Developers raw-window-handle@0.6.2 (MIT OR Apache-2.0 OR Zlib); authors declared by package: Osspial resvg@0.46.0 (Apache-2.0 OR MIT) simdutf8@0.1.5 (MIT OR Apache-2.0); authors declared by package: Hans Kratz @@ -15850,13 +15860,6 @@ time-core@0.1.9 (MIT OR Apache-2.0); authors declared by package: Jacob Pratt , Time contributors time@0.3.55 (MIT OR Apache-2.0); authors declared by package: Jacob Pratt , Time contributors usvg@0.46.0 (Apache-2.0 OR MIT) -wgpu-core-deps-apple@30.0.1 (MIT OR Apache-2.0); authors declared by package: gfx-rs developers -wgpu-core-deps-windows-linux-android@30.0.1 (MIT OR Apache-2.0); authors declared by package: gfx-rs developers -wgpu-core@30.0.1 (MIT OR Apache-2.0); authors declared by package: gfx-rs developers -wgpu-hal@30.0.1 (MIT OR Apache-2.0); authors declared by package: gfx-rs developers -wgpu-naga-bridge@30.0.1 (MIT OR Apache-2.0); authors declared by package: gfx-rs developers -wgpu-types@30.0.1 (MIT OR Apache-2.0); authors declared by package: gfx-rs developers -wgpu@30.0.1 (MIT OR Apache-2.0); authors declared by package: gfx-rs developers widestring@1.2.1 (MIT OR Apache-2.0) https://crates.io/api/v1/crates/fdeflate/0.3.7/download :: LICENSE-APACHE @@ -15916,14 +15919,13 @@ https://crates.io/api/v1/crates/half/2.7.1/download :: LICENSE-APACHE https://crates.io/api/v1/crates/image/0.25.10/download :: LICENSE-APACHE https://crates.io/api/v1/crates/miniz_oxide/0.8.9/download :: LICENSE-APACHE.md https://crates.io/api/v1/crates/miniz_oxide/0.9.1/download :: LICENSE-APACHE.md -https://crates.io/api/v1/crates/naga-types/30.0.1/download :: LICENSE.APACHE -https://crates.io/api/v1/crates/naga/30.0.1/download :: LICENSE.APACHE +https://crates.io/api/v1/crates/naga/29.0.4/download :: LICENSE.APACHE +https://crates.io/api/v1/crates/normpath/1.5.2/download :: LICENSE-APACHE https://crates.io/api/v1/crates/num-conv/0.2.2/download :: LICENSE-Apache https://crates.io/api/v1/crates/pin-project-internal/1.1.13/download :: LICENSE-APACHE https://crates.io/api/v1/crates/pin-project-lite/0.2.17/download :: LICENSE-APACHE https://crates.io/api/v1/crates/pin-project/1.1.13/download :: LICENSE-APACHE https://crates.io/api/v1/crates/portable-atomic/1.15.0/download :: LICENSE-APACHE -https://crates.io/api/v1/crates/range-alloc/0.1.5/download :: LICENSE.APACHE https://crates.io/api/v1/crates/raw-window-handle/0.6.2/download :: LICENSE-APACHE.md https://crates.io/api/v1/crates/resvg/0.46.0/download :: LICENSE-APACHE https://crates.io/api/v1/crates/simdutf8/0.1.5/download :: LICENSE-Apache @@ -15932,13 +15934,6 @@ https://crates.io/api/v1/crates/time-core/0.1.9/download :: LICENSE-Apache https://crates.io/api/v1/crates/time-macros/0.2.32/download :: LICENSE-Apache https://crates.io/api/v1/crates/time/0.3.55/download :: LICENSE-Apache https://crates.io/api/v1/crates/usvg/0.46.0/download :: LICENSE-APACHE -https://crates.io/api/v1/crates/wgpu-core-deps-apple/30.0.1/download :: LICENSE.APACHE -https://crates.io/api/v1/crates/wgpu-core-deps-windows-linux-android/30.0.1/download :: LICENSE.APACHE -https://crates.io/api/v1/crates/wgpu-core/30.0.1/download :: LICENSE.APACHE -https://crates.io/api/v1/crates/wgpu-hal/30.0.1/download :: LICENSE.APACHE -https://crates.io/api/v1/crates/wgpu-naga-bridge/30.0.1/download :: LICENSE.APACHE -https://crates.io/api/v1/crates/wgpu-types/30.0.1/download :: LICENSE.APACHE -https://crates.io/api/v1/crates/wgpu/30.0.1/download :: LICENSE.APACHE https://crates.io/api/v1/crates/widestring/1.2.1/download :: LICENSE-APACHE https://github.com/GitoxideLabs/gitoxide#dd39fb66e3b1551c9fe849043e39b357a9799ca1 (adapted; third-party/gix-discover) :: LICENSE-APACHE https://github.com/GitoxideLabs/gitoxide#dd39fb66e3b1551c9fe849043e39b357a9799ca1 (adapted; third-party/gix-index) :: LICENSE-APACHE @@ -17833,233 +17828,33 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ================================================================================ -glow@0.17.0 (MIT OR Apache-2.0 OR Zlib); authors declared by package: Joshua Groves , Dzmitry Malyshau - -https://crates.io/api/v1/crates/glow/0.17.0/download :: LICENSE-ZLIB - -This software is provided 'as-is', without any express or implied -warranty. In no event will the authors be held liable for any damages -arising from the use of this software. - -Permission is granted to anyone to use this software for any purpose, -including commercial applications, and to alter it and redistribute it -freely, subject to the following restrictions: - -1. The origin of this software must not be misrepresented; you must not - claim that you wrote the original software. If you use this software - in a product, an acknowledgment in the product documentation would be - appreciated but is not required. -2. Altered source versions must be plainly marked as such, and must not be - misrepresented as being the original software. -3. This notice may not be removed or altered from any source distribution. - -================================================================================ - -glutin_wgl_sys@0.6.1 (Apache-2.0); authors declared by package: Kirill Chibisov - -https://crates.io/api/v1/crates/glutin_wgl_sys/0.6.1/download :: LICENSE - -Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. +globwalk@0.8.1 (MIT); authors declared by package: Gilad Naaman +memoffset@0.6.5 (MIT); authors declared by package: Gilad Naaman +memoffset@0.9.1 (MIT); authors declared by package: Gilad Naaman - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "{}" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. +https://crates.io/api/v1/crates/globwalk/0.8.1/download :: LICENSE +https://crates.io/api/v1/crates/memoffset/0.6.5/download :: LICENSE +https://crates.io/api/v1/crates/memoffset/0.9.1/download :: LICENSE - Copyright 2022 Kirill Chibisov +Copyright (c) 2017 Gilad Naaman - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: - http://www.apache.org/licenses/LICENSE-2.0 +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. ================================================================================ @@ -18091,225 +17886,25 @@ SOFTWARE. ================================================================================ -gpu-allocator@0.28.0 (MIT OR Apache-2.0); authors declared by package: Traverse Research +granit-parser@1.3.0 (MIT OR Apache-2.0); authors declared by package: Ethiraric , David Aguilar , Yuheng Chen , Bourumir Wyngs -https://crates.io/api/v1/crates/gpu-allocator/0.28.0/download :: LICENSE-APACHE +https://crates.io/api/v1/crates/granit-parser/1.3.0/download :: LICENSE -Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - -TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - -1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." +Inherited license notices: - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - -2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. +Code up to and including commit `da52a68615f2ecdd6b7e4567019f280c433c1521` is licensed by Chen Yuheng under either of: + - [Apache License, Version 2.0](.licenses/ChenYuheng-Apache) (http://www.apache.org/licenses/LICENSE-2.0) + - [MIT License](.licenses/ChenYuheng-MIT) (http://opensource.org/licenses/MIT) -3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. +Code modifications starting with commit `1d71a23b151dcc12b289d0f06d8207dd9c764216` (included) are licensed by Ethiraric under either of: + - [Apache License, Version 2.0](.licenses/Ethiraric-Apache) (http://www.apache.org/licenses/LICENSE-2.0) + - [MIT License](.licenses/Ethiraric-MIT) (http://opensource.org/licenses/MIT) -4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: +granit-parser modification notice: - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and +Modifications after commit `825edf857426d034954523fed19599635cbb5043` are Copyright (c) 2026 Bourumir Wyngs and licensed under MIT OR Apache-2.0. - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - -5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - -6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - -7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - -8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - -9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - -END OF TERMS AND CONDITIONS - -APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - -Copyright 2021 Traverse Research B.V. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. - -================================================================================ - -gpu-allocator@0.28.0 (MIT OR Apache-2.0); authors declared by package: Traverse Research - -https://crates.io/api/v1/crates/gpu-allocator/0.28.0/download :: LICENSE-MIT - -Copyright (c) 2021 Traverse Research B.V. - -Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +Redistributions of this Work must include all inherited and new license notices, including the notices for Chen Yuheng, Ethiraric, and Bourumir Wyngs. ================================================================================ @@ -18334,6 +17929,50 @@ conditions. ================================================================================ +gstreamer-app-sys@0.25.4 (MIT); authors declared by package: Sebastian Dröge +gstreamer-app@0.25.2 (MIT OR Apache-2.0); authors declared by package: Sebastian Dröge +gstreamer-audio-sys@0.25.4 (MIT); authors declared by package: Sebastian Dröge +gstreamer-audio@0.25.4 (MIT OR Apache-2.0); authors declared by package: Sebastian Dröge +gstreamer-base-sys@0.25.4 (MIT); authors declared by package: Sebastian Dröge +gstreamer-base@0.25.4 (MIT OR Apache-2.0); authors declared by package: Sebastian Dröge +gstreamer-sys@0.25.4 (MIT); authors declared by package: Sebastian Dröge +gstreamer@0.25.4 (MIT OR Apache-2.0); authors declared by package: Sebastian Dröge + +https://crates.io/api/v1/crates/gstreamer-app-sys/0.25.4/download :: COPYRIGHT +https://crates.io/api/v1/crates/gstreamer-app/0.25.2/download :: COPYRIGHT +https://crates.io/api/v1/crates/gstreamer-audio-sys/0.25.4/download :: COPYRIGHT +https://crates.io/api/v1/crates/gstreamer-audio/0.25.4/download :: COPYRIGHT +https://crates.io/api/v1/crates/gstreamer-base-sys/0.25.4/download :: COPYRIGHT +https://crates.io/api/v1/crates/gstreamer-base/0.25.4/download :: COPYRIGHT +https://crates.io/api/v1/crates/gstreamer-sys/0.25.4/download :: COPYRIGHT +https://crates.io/api/v1/crates/gstreamer/0.25.4/download :: COPYRIGHT + +The gstreamer-rs project is dual-licensed under Apache 2.0 and MIT terms, with +the exception of the sys crates which are licensed only under the terms of the +MIT license. + +Copyrights in the gstreamer-rs project are retained by their contributors. No +copyright assignment is required to contribute to the gstreamer-rs project. + +Some files include explicit copyright notices and/or license notices. For full +authorship information, see the version control history. + +Except as otherwise noted (below and/or in individual files), gstreamer-rs is +licensed under the Apache License, Version 2.0 or + or the MIT license +or , at your option. + +All the sys crates (e.g. gstreamer/sys and gstreamer-base/sys) are licensed +only under the terms of the MIT license. + +This project provides interoperability with various GStreamer libraries but +doesn't distribute any parts of them. Distributing compiled libraries and +executables that link to those libraries may be subject to terms of the GNU +LGPL or other licenses. For more information check the license of each +GStreamer library. + +================================================================================ + gzip-header@1.1.0 (MIT/Apache-2.0); authors declared by package: oyvindln https://crates.io/api/v1/crates/gzip-header/1.1.0/download :: LICENSE-MIT @@ -23127,34 +22766,6 @@ DEALINGS IN THE SOFTWARE. ================================================================================ -memoffset@0.6.5 (MIT); authors declared by package: Gilad Naaman -memoffset@0.9.1 (MIT); authors declared by package: Gilad Naaman - -https://crates.io/api/v1/crates/memoffset/0.6.5/download :: LICENSE -https://crates.io/api/v1/crates/memoffset/0.9.1/download :: LICENSE - -Copyright (c) 2017 Gilad Naaman - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. - -================================================================================ - meval@0.2.0 (Unlicense/MIT); authors declared by package: Norbert Pozar https://crates.io/api/v1/crates/meval/0.2.0/download :: LICENSE-MIT @@ -23837,25 +23448,37 @@ MIT License ================================================================================ -naga-types@30.0.1 (MIT OR Apache-2.0); authors declared by package: gfx-rs developers -naga@30.0.1 (MIT OR Apache-2.0); authors declared by package: gfx-rs developers -wgpu-core-deps-apple@30.0.1 (MIT OR Apache-2.0); authors declared by package: gfx-rs developers -wgpu-core-deps-windows-linux-android@30.0.1 (MIT OR Apache-2.0); authors declared by package: gfx-rs developers -wgpu-core@30.0.1 (MIT OR Apache-2.0); authors declared by package: gfx-rs developers -wgpu-hal@30.0.1 (MIT OR Apache-2.0); authors declared by package: gfx-rs developers -wgpu-naga-bridge@30.0.1 (MIT OR Apache-2.0); authors declared by package: gfx-rs developers -wgpu-types@30.0.1 (MIT OR Apache-2.0); authors declared by package: gfx-rs developers -wgpu@30.0.1 (MIT OR Apache-2.0); authors declared by package: gfx-rs developers +muldiv@1.0.1 (MIT); authors declared by package: Sebastian Dröge + +https://crates.io/api/v1/crates/muldiv/1.0.1/download :: LICENSE + +The MIT License (MIT) + +Copyright (c) 2017 Sebastian Dröge . -https://crates.io/api/v1/crates/naga-types/30.0.1/download :: LICENSE.MIT -https://crates.io/api/v1/crates/naga/30.0.1/download :: LICENSE.MIT -https://crates.io/api/v1/crates/wgpu-core-deps-apple/30.0.1/download :: LICENSE.MIT -https://crates.io/api/v1/crates/wgpu-core-deps-windows-linux-android/30.0.1/download :: LICENSE.MIT -https://crates.io/api/v1/crates/wgpu-core/30.0.1/download :: LICENSE.MIT -https://crates.io/api/v1/crates/wgpu-hal/30.0.1/download :: LICENSE.MIT -https://crates.io/api/v1/crates/wgpu-naga-bridge/30.0.1/download :: LICENSE.MIT -https://crates.io/api/v1/crates/wgpu-types/30.0.1/download :: LICENSE.MIT -https://crates.io/api/v1/crates/wgpu/30.0.1/download :: LICENSE.MIT +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + +================================================================================ + +naga@29.0.4 (MIT OR Apache-2.0); authors declared by package: gfx-rs developers + +https://crates.io/api/v1/crates/naga/29.0.4/download :: LICENSE.MIT MIT License @@ -23939,166 +23562,711 @@ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -================================================================================ - -nibble_vec@0.1.0 (MIT); authors declared by package: Michael Sproul -radix_trie@0.3.0 (MIT); authors declared by package: Michael Sproul - -https://crates.io/api/v1/crates/nibble_vec/0.1.0/download :: LICENSE -https://crates.io/api/v1/crates/radix_trie/0.3.0/download :: LICENSE - -The MIT License (MIT) - -Copyright (c) 2015 Michael Sproul - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. - -================================================================================ - -nix@0.23.2 (MIT); authors declared by package: The nix-rust Project Developers -nix@0.29.0 (MIT); authors declared by package: The nix-rust Project Developers -nix@0.31.3 (MIT) +================================================================================ + +nibble_vec@0.1.0 (MIT); authors declared by package: Michael Sproul +radix_trie@0.3.0 (MIT); authors declared by package: Michael Sproul + +https://crates.io/api/v1/crates/nibble_vec/0.1.0/download :: LICENSE +https://crates.io/api/v1/crates/radix_trie/0.3.0/download :: LICENSE + +The MIT License (MIT) + +Copyright (c) 2015 Michael Sproul + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. + +================================================================================ + +nix@0.23.2 (MIT); authors declared by package: The nix-rust Project Developers +nix@0.29.0 (MIT); authors declared by package: The nix-rust Project Developers +nix@0.31.3 (MIT) + +https://crates.io/api/v1/crates/nix/0.23.2/download :: LICENSE +https://crates.io/api/v1/crates/nix/0.29.0/download :: LICENSE +https://crates.io/api/v1/crates/nix/0.31.3/download :: LICENSE + +The MIT License (MIT) + +Copyright (c) 2015 Carl Lerche + nix-rust Authors + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. + +================================================================================ + +nodejs-built-in-modules@1.0.0 (MIT); authors declared by package: Boshen + +https://raw.githubusercontent.com/oxc-project/nodejs-built-in-modules/9117efa38fe088325e8a1036a8ddea7f3546c1ac/LICENSE + +MIT License + +Copyright (c) 2024-present VoidZero Inc. & Contributors + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + +================================================================================ + +nohash-hasher@0.2.0 (Apache-2.0 OR MIT); authors declared by package: Parity Technologies + +https://crates.io/api/v1/crates/nohash-hasher/0.2.0/download :: LICENSE-MIT + +Copyright 2018 Parity Technologies (UK) Ltd. + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS +OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +================================================================================ + +nom@1.2.4 (MIT); authors declared by package: contact@geoffroycouprie.com + +git+https://github.com/maka-agent/cua?rev=b97a7e7a97b1dabc669b7c362ba39691766df761#b97a7e7a97b1dabc669b7c362ba39691766df761 :: LICENSE + +Copyright (c) 2015 Geoffroy Couprie + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +================================================================================ + +nom@7.1.3 (MIT); authors declared by package: contact@geoffroycouprie.com +nom@8.0.0 (MIT); authors declared by package: contact@geoffroycouprie.com + +https://crates.io/api/v1/crates/nom/7.1.3/download :: LICENSE +https://crates.io/api/v1/crates/nom/8.0.0/download :: LICENSE + +Copyright (c) 2014-2019 Geoffroy Couprie + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +================================================================================ + +nonempty@0.12.0 (MIT); authors declared by package: Alexis Sellier + +https://crates.io/api/v1/crates/nonempty/0.12.0/download :: LICENSE + +Copyright (c) 2019 Alexis Sellier + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies +of the Software, and to permit persons to whom the Software is furnished to do +so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + +================================================================================ + +nonmax@0.5.5 (MIT OR Apache-2.0); authors declared by package: Lucien Greathouse + +https://crates.io/api/v1/crates/nonmax/0.5.5/download :: LICENSE-APACHE + +i Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "{}" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright {yyyy} {name of copyright owner} + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + +================================================================================ + +nonmax@0.5.5 (MIT OR Apache-2.0); authors declared by package: Lucien Greathouse + +https://crates.io/api/v1/crates/nonmax/0.5.5/download :: LICENSE-MIT + +Copyright (c) 2020 Lucien Greathouse + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + +================================================================================ + +normpath@1.5.2 (MIT OR Apache-2.0); authors declared by package: dylni + +https://crates.io/api/v1/crates/normpath/1.5.2/download :: COPYRIGHT + +Copyright (c) 2020 dylni (https://github.com/dylni) + +Some files also include explicit copyright notices. + +Licensed under the Apache License, Version 2.0 or the MIT +license , at your option. All files in this project may not be +copied, modified, or distributed except according to those terms. + +================================================================================ + +normpath@1.5.2 (MIT OR Apache-2.0); authors declared by package: dylni + +https://crates.io/api/v1/crates/normpath/1.5.2/download :: LICENSE-MIT + +MIT License + +Copyright (c) 2020 dylni (https://github.com/dylni) + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + +================================================================================ + +normpath@1.5.2 (MIT OR Apache-2.0); authors declared by package: dylni + +https://crates.io/api/v1/crates/normpath/1.5.2/download :: LICENSE-THIRD-PARTY + +=============================================================================== + +The Rust Programming Language +https://github.com/rust-lang/rust/blob/b1277d04db0dc8009037e872a1be7cdc2bd74a43/LICENSE-MIT + +Permission is hereby granted, free of charge, to any +person obtaining a copy of this software and associated +documentation files (the "Software"), to deal in the +Software without restriction, including without +limitation the rights to use, copy, modify, merge, +publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software +is furnished to do so, subject to the following +conditions: + +The above copyright notice and this permission notice +shall be included in all copies or substantial portions +of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF +ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED +TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A +PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT +SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR +IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +DEALINGS IN THE SOFTWARE. + +=============================================================================== -https://crates.io/api/v1/crates/nix/0.23.2/download :: LICENSE -https://crates.io/api/v1/crates/nix/0.29.0/download :: LICENSE -https://crates.io/api/v1/crates/nix/0.31.3/download :: LICENSE +The Rust Programming Language +https://github.com/rust-lang/rust/blob/b1277d04db0dc8009037e872a1be7cdc2bd74a43/LICENSE-APACHE -The MIT License (MIT) + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ -Copyright (c) 2015 Carl Lerche + nix-rust Authors +TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: +1. Definitions. -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. -================================================================================ + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. -nodejs-built-in-modules@1.0.0 (MIT); authors declared by package: Boshen + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. -https://raw.githubusercontent.com/oxc-project/nodejs-built-in-modules/9117efa38fe088325e8a1036a8ddea7f3546c1ac/LICENSE + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. -MIT License + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. -Copyright (c) 2024-present VoidZero Inc. & Contributors + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. -================================================================================ +2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. -nom@1.2.4 (MIT); authors declared by package: contact@geoffroycouprie.com +3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. -git+https://github.com/maka-agent/cua?rev=b97a7e7a97b1dabc669b7c362ba39691766df761#b97a7e7a97b1dabc669b7c362ba39691766df761 :: LICENSE +4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: -Copyright (c) 2015 Geoffroy Couprie + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and -Permission is hereby granted, free of charge, to any person obtaining -a copy of this software and associated documentation files (the -"Software"), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE -LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION -OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION -WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. -================================================================================ + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. -nom@7.1.3 (MIT); authors declared by package: contact@geoffroycouprie.com -nom@8.0.0 (MIT); authors declared by package: contact@geoffroycouprie.com +5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. -https://crates.io/api/v1/crates/nom/7.1.3/download :: LICENSE -https://crates.io/api/v1/crates/nom/8.0.0/download :: LICENSE +6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. -Copyright (c) 2014-2019 Geoffroy Couprie +7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. -Permission is hereby granted, free of charge, to any person obtaining -a copy of this software and associated documentation files (the -"Software"), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: +8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. +9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE -LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION -OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION -WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +END OF TERMS AND CONDITIONS -================================================================================ +=============================================================================== -nonempty@0.12.0 (MIT); authors declared by package: Alexis Sellier +Fruity +https://github.com/nvzqz/fruity/blob/320efcf715c2c5fbd2f3084f671f2be2e03a6f2b/LICENSE-MIT -https://crates.io/api/v1/crates/nonempty/0.12.0/download :: LICENSE +MIT License -Copyright (c) 2019 Alexis Sellier +Copyright (c) 2020 Nikolai Vazquez -Permission is hereby granted, free of charge, to any person obtaining a copy of -this software and associated documentation files (the "Software"), to deal in -the Software without restriction, including without limitation the rights to -use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies -of the Software, and to permit persons to whom the Software is furnished to do -so, subject to the following conditions: +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. @@ -24111,13 +24279,12 @@ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -================================================================================ - -nonmax@0.5.5 (MIT OR Apache-2.0); authors declared by package: Lucien Greathouse +=============================================================================== -https://crates.io/api/v1/crates/nonmax/0.5.5/download :: LICENSE-APACHE +Fruity +https://github.com/nvzqz/fruity/blob/320efcf715c2c5fbd2f3084f671f2be2e03a6f2b/LICENSE-APACHE -i Apache License + Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ @@ -24297,7 +24464,7 @@ i Apache License APPENDIX: How to apply the Apache License to your work. To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "{}" + boilerplate notice, with the fields enclosed by brackets "[]" replaced with your own identifying information. (Don't include the brackets!) The text should be enclosed in the appropriate comment syntax for the file format. We also recommend that a @@ -24305,7 +24472,7 @@ i Apache License same "printed page" as the copyright notice for easier identification within third-party archives. - Copyright {yyyy} {name of copyright owner} + Copyright [yyyy] [name of copyright owner] Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -24321,32 +24488,6 @@ i Apache License ================================================================================ -nonmax@0.5.5 (MIT OR Apache-2.0); authors declared by package: Lucien Greathouse - -https://crates.io/api/v1/crates/nonmax/0.5.5/download :: LICENSE-MIT - -Copyright (c) 2020 Lucien Greathouse - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. - -================================================================================ - notify-types@2.1.0 (MIT OR Apache-2.0); authors declared by package: Daniel Faust https://crates.io/api/v1/crates/notify-types/2.1.0/download :: LICENSE-APACHE @@ -24639,13 +24780,16 @@ nsh-base@0.4.0 (Apache-2.0) nsh-bundler@0.4.0 (Apache-2.0) nsh-core@0.4.0 (Apache-2.0) nsh-engine@0.4.0 (Apache-2.0) +nsh-i18n@0.4.0 (Apache-2.0) nsh-macros@0.4.0 (Apache-2.0) nsh-package@0.4.0 (Apache-2.0) +nsh-platform-apple@0.4.0 (Apache-2.0) nsh-platform-linux@0.4.0 (Apache-2.0) nsh-platform-macos@0.4.0 (Apache-2.0) nsh-platform-tui@0.4.0 (Apache-2.0) nsh-platform-windows@0.4.0 (Apache-2.0) nsh-terminal@0.4.0 (Apache-2.0) +nsh-updater@0.4.0 (Apache-2.0) https://raw.githubusercontent.com/M4n5ter/nsh/de176695240d550f2b303643b8019146c7989e7f/LICENSE-APACHE @@ -31941,38 +32085,6 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ================================================================================ -pollster@0.4.0 (Apache-2.0/MIT); authors declared by package: Joshua Barretto - -https://crates.io/api/v1/crates/pollster/0.4.0/download :: LICENSE-MIT - -Copyright (c) 2020-2021 Joshua Barretto - -Permission is hereby granted, free of charge, to any -person obtaining a copy of this software and associated -documentation files (the "Software"), to deal in the -Software without restriction, including without -limitation the rights to use, copy, modify, merge, -publish, distribute, sublicense, and/or sell copies of -the Software, and to permit persons to whom the Software -is furnished to do so, subject to the following -conditions: - -The above copyright notice and this permission notice -shall be included in all copies or substantial portions -of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF -ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED -TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A -PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT -SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY -CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION -OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR -IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER -DEALINGS IN THE SOFTWARE. - -================================================================================ - poly1305@0.9.1 (Apache-2.0 OR MIT); authors declared by package: RustCrypto Developers https://crates.io/api/v1/crates/poly1305/0.9.1/download :: LICENSE-MIT @@ -32635,34 +32747,6 @@ OTHER DEALINGS IN THE SOFTWARE. ================================================================================ -profiling@1.0.18 (MIT OR Apache-2.0); authors declared by package: Philip Degarmo - -https://raw.githubusercontent.com/aclysma/profiling/8271551172eb6fa4cba47369aedd93790c623df9/LICENSE-MIT - -MIT License - -Copyright (c) 2020 Philip Degarmo and other contributors - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. - -================================================================================ - psm@0.1.32 (MIT OR Apache-2.0); authors declared by package: Simonas Kazlauskas https://crates.io/api/v1/crates/psm/0.1.32/download :: LICENSE-APACHE @@ -33423,16 +33507,16 @@ THE SOFTWARE. ================================================================================ -quickjs-jit-core@0.14.1 (MIT); authors declared by package: Mees Delzenne , K. -quickjs-jit-macro@0.14.1 (MIT); authors declared by package: K. , Mees Delzenne -quickjs-jit@0.14.1 (MIT); authors declared by package: Mees Delzenne , K. +quickjs-jit-core@0.14.2 (MIT); authors declared by package: Mees Delzenne , K. +quickjs-jit-macro@0.14.2 (MIT); authors declared by package: K. , Mees Delzenne +quickjs-jit@0.14.2 (MIT); authors declared by package: Mees Delzenne , K. rquickjs-core@0.14.0 (MIT); authors declared by package: Mees Delzenne , K. rquickjs@0.14.0 (MIT); authors declared by package: Mees Delzenne , K. -https://crates.io/api/v1/crates/quickjs-jit/0.14.1/download :: LICENSE +https://crates.io/api/v1/crates/quickjs-jit/0.14.2/download :: LICENSE https://crates.io/api/v1/crates/rquickjs/0.14.0/download :: LICENSE https://raw.githubusercontent.com/DelSkayn/rquickjs/d7ef5eeae702fea24c03643064de454f1c1dd4b0/LICENSE -https://raw.githubusercontent.com/longbridge/rquickjs/efea66cc2e8717fd2283346c97aef91be4f1a825/LICENSE +https://raw.githubusercontent.com/longbridge/rquickjs/c4d75b659ee2ef3e510e222203607b988fba494a/LICENSE MIT License @@ -33459,9 +33543,9 @@ SOFTWARE. ================================================================================ -quickjs-jit-stdlib@0.14.1 (Apache-2.0) +quickjs-jit-stdlib@0.14.2 (Apache-2.0) -https://crates.io/api/v1/crates/quickjs-jit-stdlib/0.14.1/download :: NOTICE +https://crates.io/api/v1/crates/quickjs-jit-stdlib/0.14.2/download :: NOTICE quickjs-jit-stdlib @@ -33476,10 +33560,10 @@ Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. ================================================================================ -quickjs-jit-sys@0.14.1 (MIT); authors declared by package: Mees Delzenne +quickjs-jit-sys@0.14.2 (MIT); authors declared by package: Mees Delzenne rquickjs-sys@0.14.0 (MIT); authors declared by package: Mees Delzenne -https://crates.io/api/v1/crates/quickjs-jit-sys/0.14.1/download :: vendor/wasi-libc/NOTICE.md +https://crates.io/api/v1/crates/quickjs-jit-sys/0.14.2/download :: vendor/wasi-libc/NOTICE.md https://crates.io/api/v1/crates/rquickjs-sys/0.14.0/download :: vendor/wasi-libc/NOTICE.md # Vendored wasi-libc @@ -33511,11 +33595,11 @@ then re-run `sh scripts/vendor-wasm-libc.sh` from the repo root. ================================================================================ -quickjs-jit-sys@0.14.1 (MIT); authors declared by package: Mees Delzenne +quickjs-jit-sys@0.14.2 (MIT); authors declared by package: Mees Delzenne rquickjs-sys@0.14.0 (MIT); authors declared by package: Mees Delzenne v8x@149.4.0-rc.4 (MIT OR Apache-2.0); authors declared by package: Divy Srivastava -https://crates.io/api/v1/crates/quickjs-jit-sys/0.14.1/download :: quickjs/LICENSE +https://crates.io/api/v1/crates/quickjs-jit-sys/0.14.2/download :: quickjs/LICENSE https://crates.io/api/v1/crates/rquickjs-sys/0.14.0/download :: quickjs/LICENSE https://crates.io/api/v1/crates/v8x/149.4.0-rc.4/download :: vendor/quickjs-ng/LICENSE @@ -33943,244 +34027,212 @@ DEALINGS IN THE SOFTWARE. ================================================================================ -rand_core@0.10.1 (MIT OR Apache-2.0); authors declared by package: The Rand Project Developers -rand_core@0.6.4 (MIT OR Apache-2.0); authors declared by package: The Rand Project Developers, The Rust Project Developers -rand_core@0.9.5 (MIT OR Apache-2.0); authors declared by package: The Rand Project Developers, The Rust Project Developers -rand_pcg@0.10.2 (MIT OR Apache-2.0); authors declared by package: The Rand Project Developers - -https://crates.io/api/v1/crates/rand_core/0.10.1/download :: LICENSE-APACHE -https://crates.io/api/v1/crates/rand_core/0.6.4/download :: LICENSE-APACHE -https://crates.io/api/v1/crates/rand_core/0.9.5/download :: LICENSE-APACHE -https://crates.io/api/v1/crates/rand_pcg/0.10.2/download :: LICENSE-APACHE - -Apache License - Version 2.0, January 2004 - https://www.apache.org/licenses/ - -TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - -1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - -2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - -3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - -4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - -5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - -6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - -7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - -8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - -9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - -END OF TERMS AND CONDITIONS - -APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - -================================================================================ - -rand_pcg@0.10.2 (MIT OR Apache-2.0); authors declared by package: The Rand Project Developers - -https://crates.io/api/v1/crates/rand_pcg/0.10.2/download :: LICENSE-MIT - -Copyright (c) 2014-2017 Melissa O'Neill and PCG Project contributors -Copyright 2018 Developers of the Rand project - -Permission is hereby granted, free of charge, to any -person obtaining a copy of this software and associated -documentation files (the "Software"), to deal in the -Software without restriction, including without -limitation the rights to use, copy, modify, merge, -publish, distribute, sublicense, and/or sell copies of -the Software, and to permit persons to whom the Software -is furnished to do so, subject to the following -conditions: - -The above copyright notice and this permission notice -shall be included in all copies or substantial portions -of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF -ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED -TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A -PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT -SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY -CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION -OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR -IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER -DEALINGS IN THE SOFTWARE. - -================================================================================ - -rand_xoshiro@0.8.1 (MIT OR Apache-2.0); authors declared by package: The Rand Project Developers +rand_core@0.10.1 (MIT OR Apache-2.0); authors declared by package: The Rand Project Developers +rand_core@0.6.4 (MIT OR Apache-2.0); authors declared by package: The Rand Project Developers, The Rust Project Developers +rand_core@0.9.5 (MIT OR Apache-2.0); authors declared by package: The Rand Project Developers, The Rust Project Developers +rand_pcg@0.10.2 (MIT OR Apache-2.0); authors declared by package: The Rand Project Developers -https://crates.io/api/v1/crates/rand_xoshiro/0.8.1/download :: LICENSE-MIT +https://crates.io/api/v1/crates/rand_core/0.10.1/download :: LICENSE-APACHE +https://crates.io/api/v1/crates/rand_core/0.6.4/download :: LICENSE-APACHE +https://crates.io/api/v1/crates/rand_core/0.9.5/download :: LICENSE-APACHE +https://crates.io/api/v1/crates/rand_pcg/0.10.2/download :: LICENSE-APACHE -Copyright (c) 2018 Developers of the Rand project +Apache License + Version 2.0, January 2004 + https://www.apache.org/licenses/ + +TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + +1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + +2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + +3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + +4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + +5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + +6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + +7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + +8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + +9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + +END OF TERMS AND CONDITIONS + +APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + +================================================================================ + +rand_pcg@0.10.2 (MIT OR Apache-2.0); authors declared by package: The Rand Project Developers + +https://crates.io/api/v1/crates/rand_pcg/0.10.2/download :: LICENSE-MIT + +Copyright (c) 2014-2017 Melissa O'Neill and PCG Project contributors +Copyright 2018 Developers of the Rand project Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated @@ -34208,31 +34260,35 @@ DEALINGS IN THE SOFTWARE. ================================================================================ -range-alloc@0.1.5 (MIT OR Apache-2.0); authors declared by package: the gfx-rs Developers - -https://crates.io/api/v1/crates/range-alloc/0.1.5/download :: LICENSE.MIT +rand_xoshiro@0.8.1 (MIT OR Apache-2.0); authors declared by package: The Rand Project Developers -MIT License +https://crates.io/api/v1/crates/rand_xoshiro/0.8.1/download :: LICENSE-MIT -Copyright (c) 2023 The gfx-rs developers +Copyright (c) 2018 Developers of the Rand project -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: +Permission is hereby granted, free of charge, to any +person obtaining a copy of this software and associated +documentation files (the "Software"), to deal in the +Software without restriction, including without +limitation the rights to use, copy, modify, merge, +publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software +is furnished to do so, subject to the following +conditions: -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. +The above copyright notice and this permission notice +shall be included in all copies or substantial portions +of the Software. -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF +ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED +TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A +PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT +SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR +IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +DEALINGS IN THE SOFTWARE. ================================================================================ @@ -34275,36 +34331,6 @@ SOFTWARE. ================================================================================ -ratatui-image@11.1.0 (MIT); authors declared by package: Benjamin Große - -https://crates.io/api/v1/crates/ratatui-image/11.1.0/download :: LICENSE - -The MIT License (MIT) - -Copyright (c) 2022 Atanas Yankov (code and inspiration taken from https://github.com/atanunq/viuer) -Copyright (c) 2022 wooster0 (inspiration taken from https://github.com/wooster0/hanbun) -Copyright (c) 2023 Benjamin Große - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. - -================================================================================ - ratex-font@0.1.15 (MIT) ratex-layout@0.1.15 (MIT) ratex-lexer@0.1.15 (MIT) @@ -35085,38 +35111,6 @@ SOFTWARE. ================================================================================ -renderdoc-sys@1.1.0 (MIT OR Apache-2.0); authors declared by package: Eyal Kalderon - -https://crates.io/api/v1/crates/renderdoc-sys/1.1.0/download :: LICENSE-MIT - -Copyright (c) 2022 Eyal Kalderon - -Permission is hereby granted, free of charge, to any -person obtaining a copy of this software and associated -documentation files (the "Software"), to deal in the -Software without restriction, including without -limitation the rights to use, copy, modify, merge, -publish, distribute, sublicense, and/or sell copies of -the Software, and to permit persons to whom the Software -is furnished to do so, subject to the following -conditions: - -The above copyright notice and this permission notice -shall be included in all copies or substantial portions -of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF -ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED -TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A -PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT -SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY -CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION -OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR -IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER -DEALINGS IN THE SOFTWARE. - -================================================================================ - reqwest@0.13.5 (MIT OR Apache-2.0); authors declared by package: Sean McArthur https://github.com/seanmonstar/reqwest#de55373434f07f42926599dbb5a88550d8e55112 (adapted; third-party/reqwest) :: LICENSE-APACHE @@ -36650,6 +36644,37 @@ are: ================================================================================ +rust-i18n-macro@4.2.4 (MIT) +rust-i18n-support@4.2.4 (MIT) +rust-i18n@4.2.4 (MIT); authors declared by package: Jason Lee + +https://crates.io/api/v1/crates/rust-i18n/4.2.4/download :: LICENSE +https://raw.githubusercontent.com/longbridge/rust-i18n/5f3ea5ba03395f2f2908e3587e01788cfdfd3555/LICENSE + +MIT License + +Copyright (c) 2021 Longbridge + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + +================================================================================ + rustix-linux-procfs@0.1.1 (Apache-2.0 WITH LLVM-exception OR Apache-2.0 OR MIT); authors declared by package: Dan Gohman https://crates.io/api/v1/crates/rustix-linux-procfs/0.1.1/download :: COPYRIGHT @@ -40265,14 +40290,10 @@ SOFTWARE. ================================================================================ tiny-skia-path@0.11.4 (BSD-3-Clause); authors declared by package: Yevhenii Reizner -tiny-skia-path@0.12.0 (BSD-3-Clause); authors declared by package: Yevhenii Reizner tiny-skia@0.11.4 (BSD-3-Clause); authors declared by package: Yevhenii Reizner -tiny-skia@0.12.0 (BSD-3-Clause); authors declared by package: Yevhenii Reizner https://crates.io/api/v1/crates/tiny-skia-path/0.11.4/download :: LICENSE -https://crates.io/api/v1/crates/tiny-skia-path/0.12.0/download :: LICENSE https://crates.io/api/v1/crates/tiny-skia/0.11.4/download :: LICENSE -https://crates.io/api/v1/crates/tiny-skia/0.12.0/download :: LICENSE Copyright (c) 2011 Google Inc. All rights reserved. Copyright (c) 2020 Yevhenii Reizner All rights reserved. @@ -40850,6 +40871,250 @@ SOFTWARE. ================================================================================ +triomphe@0.1.17 (MIT OR Apache-2.0); authors declared by package: Manish Goregaokar , The Servo Project Developers + +https://crates.io/api/v1/crates/triomphe/0.1.17/download :: LICENSE-APACHE + +Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + +TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + +1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + +2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + +3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + +4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + +5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + +6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + +7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + +8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + +9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + +END OF TERMS AND CONDITIONS + +APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + +Copyright [yyyy] [name of copyright owner] + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. + +================================================================================ + +triomphe@0.1.17 (MIT OR Apache-2.0); authors declared by package: Manish Goregaokar , The Servo Project Developers +unicode-script@0.5.8 (MIT OR Apache-2.0); authors declared by package: Manish Goregaokar + +https://crates.io/api/v1/crates/triomphe/0.1.17/download :: LICENSE-MIT +https://crates.io/api/v1/crates/unicode-script/0.5.8/download :: LICENSE-MIT + +MIT License + +Copyright (c) 2019 Manish Goregaokar + +Permission is hereby granted, free of charge, to any +person obtaining a copy of this software and associated +documentation files (the "Software"), to deal in the +Software without restriction, including without +limitation the rights to use, copy, modify, merge, +publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software +is furnished to do so, subject to the following +conditions: + +The above copyright notice and this permission notice +shall be included in all copies or substantial portions +of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF +ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED +TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A +PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT +SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR +IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +DEALINGS IN THE SOFTWARE. + +================================================================================ + try-lock@0.2.5 (MIT); authors declared by package: Sean McArthur https://crates.io/api/v1/crates/try-lock/0.2.5/download :: LICENSE @@ -41500,40 +41765,6 @@ limitations under the License. ================================================================================ -unicode-script@0.5.8 (MIT OR Apache-2.0); authors declared by package: Manish Goregaokar - -https://crates.io/api/v1/crates/unicode-script/0.5.8/download :: LICENSE-MIT - -MIT License - -Copyright (c) 2019 Manish Goregaokar - -Permission is hereby granted, free of charge, to any -person obtaining a copy of this software and associated -documentation files (the "Software"), to deal in the -Software without restriction, including without -limitation the rights to use, copy, modify, merge, -publish, distribute, sublicense, and/or sell copies of -the Software, and to permit persons to whom the Software -is furnished to do so, subject to the following -conditions: - -The above copyright notice and this permission notice -shall be included in all copies or substantial portions -of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF -ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED -TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A -PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT -SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY -CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION -OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR -IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER -DEALINGS IN THE SOFTWARE. - -================================================================================ - unicode-truncate@2.0.1 (MIT OR Apache-2.0); authors declared by package: Aetf https://crates.io/api/v1/crates/unicode-truncate/2.0.1/download :: LICENSE-MIT @@ -44322,34 +44553,6 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ================================================================================ -xml-rs@0.8.29 (MIT); authors declared by package: Vladimir Matveev - -https://crates.io/api/v1/crates/xml-rs/0.8.29/download :: LICENSE - -The MIT License (MIT) - -Copyright (c) 2014 Vladimir Matveev - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. - -================================================================================ - xmlwriter@0.1.0 (MIT); authors declared by package: Evgeniy Reizner https://crates.io/api/v1/crates/xmlwriter/0.1.0/download :: LICENSE @@ -45217,6 +45420,214 @@ freely, subject to the following restrictions: ================================================================================ +zopfli@0.8.4 (Apache-2.0) + +https://crates.io/api/v1/crates/zopfli/0.8.4/download :: COPYING + +Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright 2011 Google Inc. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + +================================================================================ + zstd-safe@7.3.0 (BSD-3-Clause); authors declared by package: Alexandre Bury zstd-safe@8.2.0 (BSD-3-Clause); authors declared by package: Alexandre Bury zstd-sys@2.1.2+zstd.1.5.7 (BSD-3-Clause); authors declared by package: Alexandre Bury diff --git a/products/maka/cli/notices.json b/products/maka/cli/notices.json index dc50d294893..5f5a1bc5f70 100644 --- a/products/maka/cli/notices.json +++ b/products/maka/cli/notices.json @@ -18,6 +18,7 @@ "cargo:alloc-stdlib@0.3.0 registry+https://github.com/rust-lang/crates.io-index": "286440ecb8e0bcc331cddf2455863bd9b2d363faaeb42244916f3952e47768cb", "cargo:allocator-api2@0.2.21 registry+https://github.com/rust-lang/crates.io-index": "3b8b32da100c783f99fe746796e4df521957435c2cc0a3db7f665b6e5b100a30", "cargo:ambient-authority@0.0.2 registry+https://github.com/rust-lang/crates.io-index": "00cae02127c13ec9137edaa5913ee68d12c47e567b865d8c8e425b98350ce4f5", + "cargo:annotate-snippets@0.12.17 registry+https://github.com/rust-lang/crates.io-index": "35f78653672cab6f7df50ecb225c7c1fbb4d18d9770408418ca6bb7e62105f32", "cargo:anstyle@1.0.14 registry+https://github.com/rust-lang/crates.io-index": "a6e4c54bb64b7cebf17700ad61e33ba13f3968fb0931f536230acd4e15b8309b", "cargo:anyhow@1.0.104 registry+https://github.com/rust-lang/crates.io-index": "522516618c3399e73a1779835967b8fe1a2bca98d32707f04615ead1f6ab5eb4", "cargo:append-only-vec@0.1.10 registry+https://github.com/rust-lang/crates.io-index": "f89eb396951496f9138286a9540cb2ec886d0849b0e7dd61025f79192e5dfe16", @@ -30,7 +31,6 @@ "cargo:arraydeque@0.5.1 registry+https://github.com/rust-lang/crates.io-index": "6324d5081aa24319dbbd7ea9c6076b92fb00568a50c6158f09be95403296e0a9", "cargo:arrayref@0.3.9 registry+https://github.com/rust-lang/crates.io-index": "8a56b42223c23dcbcf9472ebe554b4d10a90d246a87ec4da04788926cbeb8a0c", "cargo:arrayvec@0.7.8 registry+https://github.com/rust-lang/crates.io-index": "9aa3eab710504074cccdc2a5e84cf3d04603545adc634f435d122861f9d674c5", - "cargo:ash@0.38.0+1.3.281 registry+https://github.com/rust-lang/crates.io-index": "8775f3ea65e3d37d8f4a4799f11509dd288fa808101794ff44d320fe76de81ab", "cargo:ashpd@0.13.13 registry+https://github.com/rust-lang/crates.io-index": "e85f32a5126e33c3b2e0954b463916019e73af91c5beeb6a31da93dece7b3e8a", "cargo:askama_derive@0.14.0 registry+https://github.com/rust-lang/crates.io-index": "0b23f6e9a9e03b1bf3881531686380c4e7e2fb4dddcbdb87c49709d86acc20d5", "cargo:askama_parser@0.14.0 registry+https://github.com/rust-lang/crates.io-index": "8f0d21f06e0d32f4f375bf62bfc1717136f8911d9e4d0ff7029f50c94e7d1ba4", @@ -49,6 +49,7 @@ "cargo:async-task@4.7.1 registry+https://github.com/rust-lang/crates.io-index": "ffaefca31e4b8441da50a1d3fde68995dbabbdd8298ffaa80c1df59bf739dded", "cargo:async-trait@0.1.92 registry+https://github.com/rust-lang/crates.io-index": "26f452a0423d85115fb01ed945647f8b81621cf09eed26c9dd23012af3797863", "cargo:atoi@2.0.0 registry+https://github.com/rust-lang/crates.io-index": "1d17dc5440aa5b61498ba2318f6b996934ae3eff2c0b3ddca449aeaaa6b9578c", + "cargo:atomic_refcell@0.1.14 registry+https://github.com/rust-lang/crates.io-index": "17b199157c774c09e519cc128a09e2ebc568d07f33603ef59788f916208eff10", "cargo:atomic-waker@1.1.2 registry+https://github.com/rust-lang/crates.io-index": "77fd45f93b2c7c3ff74b2ad946c6a0d994b91bd7c648b15a2bb5338e3e673cf6", "cargo:atspi-common@0.14.0 registry+https://github.com/rust-lang/crates.io-index": "4858121739a176a4931cb5078330bc117dc59942a932e00c1498f09446557c3b", "cargo:atspi-connection@0.14.0 registry+https://github.com/rust-lang/crates.io-index": "52913d175d16f9877382560d9d0bf59c31810a561213ac7f04f6103ae544953d", @@ -63,6 +64,7 @@ "cargo:axum@0.8.9 registry+https://github.com/rust-lang/crates.io-index": "b080fe2d77ee7e496172fae327998a0864988aaaeeecd949df609a537b3fdf1f", "cargo:base-encode@0.3.1 registry+https://github.com/rust-lang/crates.io-index": "7d18992528d950d7e587c1bb447627a42b818c3b464f33ac3a5abc71c11edcd0", "cargo:base16ct@1.0.0 registry+https://github.com/rust-lang/crates.io-index": "fec0f0351447b1797bf1e4c1d2c0359837d9b4954c6a4565d6bbdf190d0cf012", + "cargo:base62@2.2.6 registry+https://github.com/rust-lang/crates.io-index": "9c82a3c58b1f4b85297bd2ce70ac0f661f9f19668d26a4af328f8a5317c54752", "cargo:base64-simd@0.8.0 registry+https://github.com/rust-lang/crates.io-index": "965d68ecfa1655d1205f0ecbb5badb6dc6fc5594d6fb1357c349bad407b14f47", "cargo:base64@0.22.1 registry+https://github.com/rust-lang/crates.io-index": "a3f69e8648d7fd8d357afdb3a2c3de60dd0fbab2c05b0cb05df183b86b0a861b", "cargo:base64@0.23.1 registry+https://github.com/rust-lang/crates.io-index": "e80818c1994ed73634c51655644526bfcb7642deeb30f4df49aa27b9bc5a4ed4", @@ -71,8 +73,8 @@ "cargo:bincode@1.3.3 registry+https://github.com/rust-lang/crates.io-index": "59b46dfc19d27ebd50442b6444df890a8e5aa113dc745048f319118d84140499", "cargo:bindgen@0.70.1 registry+https://github.com/rust-lang/crates.io-index": "8d1020bd082960fd6f96dfc46727dbd4cbbdc0c75c9c23e18c131bca2b5e1570", "cargo:bindgen@0.72.1 registry+https://github.com/rust-lang/crates.io-index": "54c69ad1014deea425479f671290b485acd894d47f4bbe4ec50666ea4e76f074", - "cargo:bit-set@0.10.0 registry+https://github.com/rust-lang/crates.io-index": "89921022d989530cb64fa14d850e4b8b31a6e0ffbe03a86fd0a78f4cccc2de5b", "cargo:bit-set@0.8.0 registry+https://github.com/rust-lang/crates.io-index": "57ffa9085ea88b1e61f7ee365389578a853971ba897900a27c5aeda693aa067f", + "cargo:bit-set@0.9.1 registry+https://github.com/rust-lang/crates.io-index": "741e4a1d1128ab45b35af098c22b59f0a6f8d80809d8a27a5975997b86a6861c", "cargo:bit-vec@0.8.0 registry+https://github.com/rust-lang/crates.io-index": "6e016ec0cf2b85db6f6edfb81cc42e71076d1c4873a2f17af957200399024142", "cargo:bit-vec@0.9.1 registry+https://github.com/rust-lang/crates.io-index": "8b83a4083a72d5caffd59ca67de702ffc9caa90c2c13e186a619cd5a26ca3727", "cargo:bitflags@1.3.2 registry+https://github.com/rust-lang/crates.io-index": "0cd3e7c2ed7e1b6867dc6459f77d94ca14e41f74ed0fe0bd1edcd3a2d44b1aad", @@ -94,6 +96,7 @@ "cargo:brotli@9.0.0 registry+https://github.com/rust-lang/crates.io-index": "441cd06070bcc2bb839c3da60eaeaa5dc24cbd5d4f454f6ad6bedec4333c465e", "cargo:bs58@0.5.1 registry+https://github.com/rust-lang/crates.io-index": "6c6b23700153306315b9b5a0359741a6da3a224fa40e8ba620f7fbaa1c09db81", "cargo:bstr@1.13.1 registry+https://github.com/rust-lang/crates.io-index": "d9d5805cbf027b8950eba777d7e7564b7f5300b77395ec0b98c0d796de178adb", + "cargo:bumpalo@3.20.3 registry+https://github.com/rust-lang/crates.io-index": "5289ad35e9a34023d727c2a35e919825483819192d2011cd94233b5c4d779471", "cargo:by_address@1.2.1 registry+https://github.com/rust-lang/crates.io-index": "8416372af0ea2a6b9aafe69a00c4cfd36e2ba76eab34252d0cb728ff37ebfb4a", "cargo:bytecount@0.6.9 registry+https://github.com/rust-lang/crates.io-index": "40c1365d0ab0b7a97d73a1b7e6ec209b3d7afd9a7d76926a79d6794a45958ff4", "cargo:bytemuck_derive@1.12.1 registry+https://github.com/rust-lang/crates.io-index": "d6be536a530235e87fac37733075db4baffcad232fc5655095b2bfdc9196372c", @@ -168,6 +171,7 @@ "cargo:crc@3.4.0 registry+https://github.com/rust-lang/crates.io-index": "dec8fc9886cb0ad932645f94616141e6dea91ca5d53e6970526349a6e2c549c0", "cargo:crc32c@0.6.8 registry+https://github.com/rust-lang/crates.io-index": "cb0e995bbaf59b29205672e1ff6900429439d70ba5e32a80a17f3afaf81032cc", "cargo:crc32fast@1.5.3 registry+https://github.com/rust-lang/crates.io-index": "d9a6475b121affe13c35a8cff37ae9c9758507335cdccb4d29a4c8699a6deddc", + "cargo:critical-section@1.2.0 registry+https://github.com/rust-lang/crates.io-index": "cb895213871c5737887137b9f9e10f46bb0a90b206e51d5ef3fd8cd494ab1c4d", "cargo:crossbeam-channel@0.5.17 registry+https://github.com/rust-lang/crates.io-index": "111a5f24567ed657f391bc952ab629cce5efed3bbf1023ffde260beee58c85a1", "cargo:crossbeam-deque@0.8.8 registry+https://github.com/rust-lang/crates.io-index": "7f00581294774e69d2aedc0510636038d5fff69f1556701ffb1d3828917699e3", "cargo:crossbeam-epoch@0.9.21 registry+https://github.com/rust-lang/crates.io-index": "39b0e9c31b4af2a7cf0101b0d818ae6d0677dc6b81d3b7a23efa8ea68db8d840", @@ -231,7 +235,6 @@ "cargo:dirs@5.0.1 registry+https://github.com/rust-lang/crates.io-index": "6e7024e804fd7a1485f267f88371e62e4ba97680e55d1907af2dd718ef9956d7", "cargo:dispatch2@0.3.1 registry+https://github.com/rust-lang/crates.io-index": "e86eddb0dca99c9c1b807e4740affcdd91af167bc2b0a765dadeccf095b3d7e0", "cargo:displaydoc@0.2.7 registry+https://github.com/rust-lang/crates.io-index": "c56648620b3c4a9a2bf4f327de7e2a502c59e21204a8101c0f98576f18720be0", - "cargo:dlib@0.5.3 registry+https://github.com/rust-lang/crates.io-index": "6004a0d3eff5d8629abc859ccd3a2b8417388f09532df8fe270bc7f4f2ae979e", "cargo:document-features@0.2.12 registry+https://github.com/rust-lang/crates.io-index": "96808d471e980243b5a21901a8a49c5c220abf5263d90db3a409ab1e1ad07f70", "cargo:dom_query@0.28.0 registry+https://github.com/rust-lang/crates.io-index": "d1cd4c1b80527293c4502f5e1094f9f7c0ca0466ed745f8405fa01ac82530d0a", "cargo:dom_smoothie@0.18.2 registry+https://github.com/rust-lang/crates.io-index": "4c6bd5aab760fd6de3b1879316551c7d26c0373bd7a228b4ba1bc6f09a98d0b9", @@ -398,17 +401,15 @@ "cargo:gix-zlib@0.4.0 registry+https://github.com/rust-lang/crates.io-index": "bd35519cb36cd98179bc2a62d09785997f06e6b7fcd9103c40e092a65b431885", "cargo:gix@0.90.0 registry+https://github.com/rust-lang/crates.io-index": "ab1f4b76c7136ce4b6a39c1c7ef763a1cd425039de5ec397488a4dc06b7a2d2a", "cargo:gjson@0.8.1 registry+https://github.com/rust-lang/crates.io-index": "2fe331178e7214ad3ca3cb8610a1349d5af5b67c63f8bafeda7bf51ba0beaa53", - "cargo:gl_generator@0.14.0 registry+https://github.com/rust-lang/crates.io-index": "a66f400113aecfc582aa90148b622ce54cfab34789ce77c12a19e2076a1c7144", "cargo:glib-macros@0.22.9 registry+https://github.com/rust-lang/crates.io-index": "eb12ca640d52d944252c90aa1cbd1835af1463a0b162106ca0830ec44bcc5fb4", "cargo:glib-sys@0.22.9 registry+https://github.com/rust-lang/crates.io-index": "2b1a7dd8bd1654ef283fade14a88d62aefa7380025eea648e69de312a99785d0", "cargo:glib@0.22.10 registry+https://github.com/rust-lang/crates.io-index": "590da1c00dafb546e35e74fbf122e844e889e33a85d779f60ecff59f9551b914", "cargo:glob@0.3.4 registry+https://github.com/rust-lang/crates.io-index": "21ea2f023eb6a50002968c8420ed8651998ed4d5e93e0c12672f269dad10c945", "cargo:globset@0.4.20 registry+https://github.com/rust-lang/crates.io-index": "fccda9399f19d9915c724667aa5bade020c99eb6986b3705710c7c1f6457f358", - "cargo:glow@0.17.0 registry+https://github.com/rust-lang/crates.io-index": "4ec7d8696115a378fb57e6ebc534eba6ea13c9da063868b7924f31167e1d61c5", - "cargo:glutin_wgl_sys@0.6.1 registry+https://github.com/rust-lang/crates.io-index": "751e7662fbea91acc2553123b4f419ec4a05aa87a1fa6cdbc1c9eac403e088cc", + "cargo:globwalk@0.8.1 registry+https://github.com/rust-lang/crates.io-index": "4ebe70a99023e558d5358ddda4f36a5b369fe2b998cbefc747d040e1d45f751b", "cargo:gobject-sys@0.22.9 registry+https://github.com/rust-lang/crates.io-index": "d5f11a37aded78bfcdce1917a8628c61a06fbfed81da7405b25c8026c2db797d", "cargo:goblin@0.8.2 registry+https://github.com/rust-lang/crates.io-index": "4c784fa73259ae11412f32df31d9fe4269f8d8d89ed23798b169c1615549aa69", - "cargo:gpu-allocator@0.28.0 registry+https://github.com/rust-lang/crates.io-index": "7a5ab52d5fa0a2f87f23965982b41e11795d0ffbc25c4752c9631ef7ad393e77", + "cargo:granit-parser@1.3.0 registry+https://github.com/rust-lang/crates.io-index": "825f4f68c60d44726dd40ae07cddcb56c5c9a0e395bada4b2acf367a76066635", "cargo:graphene-rs@0.22.8 registry+https://github.com/rust-lang/crates.io-index": "4cfd5b2996eed68ba8d1415209b44f06777a611ba90c04621e9413da618fadf6", "cargo:graphene-sys@0.22.9 registry+https://github.com/rust-lang/crates.io-index": "d11543865c3304ac61a98bc6b4e0639242dcf6fcd999bbe5ecf76eed61111eac", "cargo:grep-matcher@0.1.9 registry+https://github.com/rust-lang/crates.io-index": "a6efd00fc4bab571af7a742c34ed0d944b99662487ffc0a11974ecca356e5397", @@ -417,6 +418,14 @@ "cargo:group@0.14.0 registry+https://github.com/rust-lang/crates.io-index": "c45abc118b49e86c5fd855fe04e44c6119d66719eafb8622d46c0645c087df03", "cargo:gsk4-sys@0.11.5 registry+https://github.com/rust-lang/crates.io-index": "5a6408d53197c1554193ca33283334824915525daab63f7a95c00196eeaefc2d", "cargo:gsk4@0.11.5 registry+https://github.com/rust-lang/crates.io-index": "b9d145be27e9c93cfeaaeb03098af73ca58f8c110427b1369b62b8e46e5c8f4d", + "cargo:gstreamer-app-sys@0.25.4 registry+https://github.com/rust-lang/crates.io-index": "fad6c42ac0cebacfa9613663363000b775decb705c322b678ebf883f8463ff27", + "cargo:gstreamer-app@0.25.2 registry+https://github.com/rust-lang/crates.io-index": "2b33f43d0f7fd2993e5219f2ad8feed85a4bd63d790f70eb50726fd39daae290", + "cargo:gstreamer-audio-sys@0.25.4 registry+https://github.com/rust-lang/crates.io-index": "67498c255a56459a124e964d02bff7d09f76a82c99cfb1fa6152935842d78eb3", + "cargo:gstreamer-audio@0.25.4 registry+https://github.com/rust-lang/crates.io-index": "3c45279a75eafb1b69f5994a4ccdd1a75bbc44e537d31b636b3f452ce6a51a33", + "cargo:gstreamer-base-sys@0.25.4 registry+https://github.com/rust-lang/crates.io-index": "f9a86e5ed61063c0119b61e83816e4cb2252a1dd57125bfa5b265990883846af", + "cargo:gstreamer-base@0.25.4 registry+https://github.com/rust-lang/crates.io-index": "8770ffe051f3353b9f080bddc5c6d32a79393b738cd19341ef53cc96f0e9b3bf", + "cargo:gstreamer-sys@0.25.4 registry+https://github.com/rust-lang/crates.io-index": "e03e895d3193cc9914f64e12c1e8df8212aebb914fde563d12e8b2a9590d20d0", + "cargo:gstreamer@0.25.4 registry+https://github.com/rust-lang/crates.io-index": "f8d43ab4d5fd2a68bc9bb3341839e43d9b0343c904e9a33c0ebb91a89e53cf61", "cargo:gtk4-macros@0.11.5 registry+https://github.com/rust-lang/crates.io-index": "53418f466c745c9b9cc6c54faf5a2a8e4284db2f5d8533ae52c2cf1a1c9e5d77", "cargo:gtk4-sys@0.11.5 registry+https://github.com/rust-lang/crates.io-index": "3fc185ecafb1edacf14dab1902d75611dc5435ea43c173b1d968226b2f7d097c", "cargo:gtk4@0.11.5 registry+https://github.com/rust-lang/crates.io-index": "3dff640b026d74479f90bb80c3e141f1f2e70162a54c47d8f1f4f5408899708b", @@ -437,6 +446,7 @@ "cargo:heck@0.5.0 registry+https://github.com/rust-lang/crates.io-index": "af68c02f50d1c1d5e75b7aae8ce48ba39c5c3c6e459d1c66871a1847aef10754", "cargo:hex-simd@0.8.0 registry+https://github.com/rust-lang/crates.io-index": "2cc312dfeacf058830673f11cf6978d5c500a1ee1b68f3514ffcb3eef64f7c35", "cargo:hex@0.4.3 registry+https://github.com/rust-lang/crates.io-index": "1daaf9dbb52ba1468beeff25d029dbbc5293b1bd05e4a7a0d6c0c29a6f3c1b9a", + "cargo:hexf-parse@0.2.1 registry+https://github.com/rust-lang/crates.io-index": "0d46e93a926b8eb3891e748011e88e314c1f96720f02f4a11808531773cccdb0", "cargo:hkdf@0.12.4 registry+https://github.com/rust-lang/crates.io-index": "b6043fa45630d72890394804ac3b7dbed242e70ef33535db1e6bb9dbf85a9aa6", "cargo:hkdf@0.13.0 registry+https://github.com/rust-lang/crates.io-index": "cc36b2be2f0e4532417cc7fc13aa65acdc852a15c7da49070a026f6ecca90395", "cargo:hmac-sha1-compact@1.1.8 registry+https://github.com/rust-lang/crates.io-index": "8f7f4125c995011b0a93c0b098456e8609da67e77a14289dfbc14f6f8703d43e", @@ -498,6 +508,7 @@ "cargo:is-docker@0.2.0 registry+https://github.com/rust-lang/crates.io-index": "9aab26cf4585b526ce32f1030287999714b2b5b5378af65573be5bfb3482d654", "cargo:is-macro@0.3.8 registry+https://github.com/rust-lang/crates.io-index": "8a86e4a7240c001a4dbfc902d8933464a295ac8ae93f86ec2b2429c10ec32b26", "cargo:is-wsl@0.4.0 registry+https://github.com/rust-lang/crates.io-index": "2d8e52f6a8cc508868505e68b856e8fdb4c31652389a15e169f8ea09064828bf", + "cargo:itertools@0.11.0 registry+https://github.com/rust-lang/crates.io-index": "71d9ead9d55f8fef648f50c0da95e97777c805d5d501ccc83253c33c7d6a2ef0", "cargo:itertools@0.13.0 registry+https://github.com/rust-lang/crates.io-index": "1c4acd353f8684f580abfedeaa31f2e462a9451b71e2427cf8c8e07523fb2ca5", "cargo:itertools@0.14.0 registry+https://github.com/rust-lang/crates.io-index": "19143dae585d8a50b45516ec0ef67549ff036ef4a085af1ef4b8fd7a0786a635", "cargo:itertools@0.15.0 registry+https://github.com/rust-lang/crates.io-index": "e679e7e1e106a65f275338e085e8245d347ebeb0af6adb042462b8a12ec979d7", @@ -521,8 +532,7 @@ "cargo:keccak@0.2.2 registry+https://github.com/rust-lang/crates.io-index": "667d5229985aff4c7aa73fd17bb37b9150e662cc1e38f17a5cf0a2f70435a6d0", "cargo:keyring-core@1.0.1 registry+https://github.com/rust-lang/crates.io-index": "c6f49db79fff1bbfcd792aed837a77ecb6c20bda6c24222eab880e9d23abe040", "cargo:keyring@4.2.0 registry+https://github.com/rust-lang/crates.io-index": "915a1477ac57504cd2250a6208e066bbabbd09882f1b0beef2cbd8d9b4715bbb", - "cargo:khronos_api@3.1.0 registry+https://github.com/rust-lang/crates.io-index": "d8ebf53dbf91a737a4c5db1c5c88cc205795d5a6799c1f9fd895fca405adbe47", - "cargo:khronos-egl@6.0.0 registry+https://github.com/rust-lang/crates.io-index": "c5d76e1854d6e1c29f3852dbb04180739aa754ec4d092645615bbcf0367ac9cf", + "cargo:kstring@2.0.5 registry+https://github.com/rust-lang/crates.io-index": "0ad428e3ff048b19b31cc72d0a4ea154af31ae932ab37a1b2393037a40be702f", "cargo:kurbo@0.13.1 registry+https://github.com/rust-lang/crates.io-index": "ec58e333328f88ef2577b4e03eab710ae6799d01ba4cf750da6111afd8539f5b", "cargo:lazy_static@1.5.1 registry+https://github.com/rust-lang/crates.io-index": "f8f4cb8397573abb132b1fac4c921de863b532ce43d61fbde400c01a7c6b1446", "cargo:lazy-regex-proc_macros@3.6.2 registry+https://github.com/rust-lang/crates.io-index": "1f8997a473912435a6a918e6f5b0bbaaf900a821c6ee86c8e087a2a6087b9136", @@ -574,9 +584,9 @@ "cargo:monty@1.3.0 registry+https://github.com/rust-lang/crates.io-index": "2b8693303950a2bb756bcccc6ec59a14230ef41e0442f13f60dec8d4baab87dd", "cargo:moxcms@0.8.1 registry+https://github.com/rust-lang/crates.io-index": "396f5b63f873c6bb4e2151e7a556b07c9f0ba1a17e98ed43b484c8e2a7171017", "cargo:msvc_spectre_libs@0.1.3 registry+https://github.com/rust-lang/crates.io-index": "8305d2663666e6c2eb67f56b9d1f42d101c8dc5d99500029ca64a39f941b6b52", + "cargo:muldiv@1.0.1 registry+https://github.com/rust-lang/crates.io-index": "4131de63a55f8440a583511023174770b70d532b6a4e39f469601368d74f70e3", "cargo:mxc-sdk@1.0.1 git+https://github.com/microsoft/mxc?rev=05a430bc17a3e1b3fa2131524fc52e4319e07298#05a430bc17a3e1b3fa2131524fc52e4319e07298": "0b635a9d50731484e51dc824eee646f144a14788f868c5128d6ae47264ff8f83", - "cargo:naga-types@30.0.1 registry+https://github.com/rust-lang/crates.io-index": "7b92db651c814f1549cb3fb36ef1e21de378b5611c6850adc505eabe25d9f082", - "cargo:naga@30.0.1 registry+https://github.com/rust-lang/crates.io-index": "f8f121e05af2448f8db90822f3f4f1ec504e044ef62099a1b27d6ffbee0202ce", + "cargo:naga@29.0.4 registry+https://github.com/rust-lang/crates.io-index": "8c3c1ac6da4734b6cf6ba8392e94df550353f6f5bff3da312787bbe3961b9b6e", "cargo:native-tls@0.2.18 registry+https://github.com/rust-lang/crates.io-index": "5cf59b5f6a57625e74218292334fe9dc88006ca3253b4279e521bde5869af910", "cargo:new_debug_unreachable@1.0.6 registry+https://github.com/rust-lang/crates.io-index": "1fe30c6471405f191258523f0f01845618877b6346973311630feeaec7232229", "cargo:nibble_vec@0.1.0 registry+https://github.com/rust-lang/crates.io-index": "1614d466378496c13e7e3a51e136017f37b027eb741d426532e6c7a756597ac9", @@ -584,25 +594,30 @@ "cargo:nix@0.29.0 registry+https://github.com/rust-lang/crates.io-index": "f0d16ca3c98992f127a37b2143aeb1998da88d3fff55306c560ed1467f82ec3e", "cargo:nix@0.31.3 registry+https://github.com/rust-lang/crates.io-index": "89760a4c2410fa5d435dc0e564848e5066a0cf30a51d9d79ed879a93bb774396", "cargo:nodejs-built-in-modules@1.0.0 registry+https://github.com/rust-lang/crates.io-index": "80338cf41399416e841b77761293a8f0f997491de638aac7caa7ac81f91762d3", + "cargo:nohash-hasher@0.2.0 registry+https://github.com/rust-lang/crates.io-index": "e9a024b24aceea281e117d3b878a42396d0a8b0c3ad185bddc6b59035c581ef2", "cargo:nom@1.2.4 git+https://github.com/maka-agent/cua?rev=b97a7e7a97b1dabc669b7c362ba39691766df761#b97a7e7a97b1dabc669b7c362ba39691766df761": "1088f236f957f151067588251b273562b8cee479ffdadc9b1d10c0e86af6840d", "cargo:nom@7.1.3 registry+https://github.com/rust-lang/crates.io-index": "db94f95d6fef06d348564ede51c3178dc90b791e48de2f7198727e1c7243d0c1", "cargo:nom@8.0.0 registry+https://github.com/rust-lang/crates.io-index": "4a69279a5dddc804c27ef52662c9556aef314d6dc4ae350d2782124591f3b7ec", "cargo:nonempty@0.12.0 registry+https://github.com/rust-lang/crates.io-index": "11130225cc51dd23645a49ef0597c89d7ec3d131579915de674cc85853171e91", "cargo:nonmax@0.5.5 registry+https://github.com/rust-lang/crates.io-index": "96cadc8ec0d3c696662e3c2a1517eabb9bd5df89709641960bb44cfdaf1da0a5", + "cargo:normpath@1.5.2 registry+https://github.com/rust-lang/crates.io-index": "acb5de38e99086d3276bed3185ae9c77a77fbfee275f73691c6acffff082bf8e", "cargo:notify-types@2.1.0 registry+https://github.com/rust-lang/crates.io-index": "20250f0f40c0ead47cfbe86741c39d97177cc07e34caaa1af8cabe7f6de98aee", "cargo:notify@8.2.1 registry+https://github.com/rust-lang/crates.io-index": "f61b2470546ca6ebb76c0f48c3eda5e7cab429bd32c8ae4dd515840c6e25a1a9", "cargo:nsh-base@0.4.0 https://github.com/M4n5ter/nsh#de176695240d550f2b303643b8019146c7989e7f (adapted; third-party/nsh/crates/nsh-base)": "9e865bbe0fed712de909b8e8cdd769c972ff8cc9a7228ae3c01ba73833b2e384", "cargo:nsh-bundler@0.4.0 https://github.com/M4n5ter/nsh#de176695240d550f2b303643b8019146c7989e7f (adapted; third-party/nsh/crates/nsh-bundler)": "2f2f8e7fe178cfa2e33166256ca83c90caf989a1aa76cdee685920e2266a652f", "cargo:nsh-core@0.4.0 https://github.com/M4n5ter/nsh#de176695240d550f2b303643b8019146c7989e7f (adapted; third-party/nsh/crates/nsh-core)": "76f6305d251e2aa14dfc176fedc558cc97e8d9b5434c9aee6f53f7dbf22b83f0", "cargo:nsh-engine@0.4.0 https://github.com/M4n5ter/nsh#de176695240d550f2b303643b8019146c7989e7f (adapted; third-party/nsh/crates/nsh-engine)": "201256cc7515d94df782ee820f76f3feccfcf6af49f2cc1ffcd552a363eeafa7", + "cargo:nsh-i18n@0.4.0 https://github.com/M4n5ter/nsh#de176695240d550f2b303643b8019146c7989e7f (adapted; third-party/nsh/crates/nsh-i18n)": "32ed1ab6f77ed7eb48611967393ba465a12d8684c572fad09dc2ebb51083e1f2", "cargo:nsh-js@0.4.0 https://github.com/M4n5ter/nsh#de176695240d550f2b303643b8019146c7989e7f (adapted; third-party/nsh/crates/nsh-js)": "65f3be5e3b291d7b558b3c13f58ab95e167c2cf2d27f556e7fec925b5f7b2739", "cargo:nsh-macros@0.4.0 https://github.com/M4n5ter/nsh#de176695240d550f2b303643b8019146c7989e7f (adapted; third-party/nsh/crates/nsh-macros)": "3664c0076ed8462d1937c7ed6530e34be6eaaa8315badc5d11ff7588a548562e", "cargo:nsh-package@0.4.0 https://github.com/M4n5ter/nsh#de176695240d550f2b303643b8019146c7989e7f (adapted; third-party/nsh/crates/nsh-package)": "e726ea0a7d0106687fa396734a37e31dc0bf855e4242314dee7e2950ce0d9fb0", + "cargo:nsh-platform-apple@0.4.0 https://github.com/M4n5ter/nsh#de176695240d550f2b303643b8019146c7989e7f (adapted; third-party/nsh/crates/nsh-platform-apple)": "a244bc9dfbcbd39c4682f67b35375c3aa3119ac712e898f1a419aae33d8e82b0", "cargo:nsh-platform-linux@0.4.0 https://github.com/M4n5ter/nsh#de176695240d550f2b303643b8019146c7989e7f (adapted; third-party/nsh/crates/nsh-platform-linux)": "88754e16cf77adcdd092a69669dcc4d48ba0babd5b80375e98e4f1059b062e57", "cargo:nsh-platform-macos@0.4.0 https://github.com/M4n5ter/nsh#de176695240d550f2b303643b8019146c7989e7f (adapted; third-party/nsh/crates/nsh-platform-macos)": "730410f7756ce72bd4007389f6e7b28a31b750f2ac77659ffa322a5288f59df1", "cargo:nsh-platform-tui@0.4.0 https://github.com/M4n5ter/nsh#de176695240d550f2b303643b8019146c7989e7f (adapted; third-party/nsh/crates/nsh-platform-tui)": "22739df7cb55df3032fac0b04a6952528a7b2f539ecdf46fdf5fec92367ee1e1", "cargo:nsh-platform-windows@0.4.0 https://github.com/M4n5ter/nsh#de176695240d550f2b303643b8019146c7989e7f (adapted; third-party/nsh/crates/nsh-platform-windows)": "faba4a7e352ceeed6ffffb77d8aa32dd3d3edbcb0f0d18280292d2ed3f2c7559", "cargo:nsh-terminal@0.4.0 https://github.com/M4n5ter/nsh#de176695240d550f2b303643b8019146c7989e7f (adapted; third-party/nsh/crates/nsh-terminal)": "fad1331c57b553df2bbdbfbf6f1d17b8d9971a3b1c688797885453fd098224d3", + "cargo:nsh-updater@0.4.0 https://github.com/M4n5ter/nsh#de176695240d550f2b303643b8019146c7989e7f (adapted; third-party/nsh/crates/nsh-updater)": "c4a5cdbca8f8ae8ce8517ca43c3327ee37257132f0c80e30c304bac019dda1f4", "cargo:ntapi@0.4.3 registry+https://github.com/rust-lang/crates.io-index": "40cdfacbfb9756e7f9146f306911bedb70d9cf79262082cfb44445297ba56aa9", "cargo:nu-ansi-term@0.50.3 registry+https://github.com/rust-lang/crates.io-index": "5086839706242cfb143f201ef19f31e5fd8b3ca3a342fdb4a25ab41c08e50121", "cargo:num_threads@0.1.8 registry+https://github.com/rust-lang/crates.io-index": "1a5889fecc62ec90f8f289885b9651181bf0608e05fcee659178e87634c9a451", @@ -637,7 +652,6 @@ "cargo:objc2-io-kit@0.3.2 registry+https://github.com/rust-lang/crates.io-index": "f1c5326b5eb7ecb732be95440b38dab946f7197c5e69f8a26fa920423ef5da21", "cargo:objc2-io-surface@0.3.2 registry+https://github.com/rust-lang/crates.io-index": "e3f271c6748c23cd8d9fbd91b9203958fe5fbd5a5c1750b1820cc2e5bf114c17", "cargo:objc2-metal@0.2.2 registry+https://github.com/rust-lang/crates.io-index": "2c7b9885b90ba28dc660c84fc51945cc72cf5e946102e55d18e1e42fbf0af339", - "cargo:objc2-metal@0.3.2 registry+https://github.com/rust-lang/crates.io-index": "712563427868f7145ac2bb1ea6637c0a38e40459f6ce1a164ada8a822530296e", "cargo:objc2-quartz-core@0.2.2 registry+https://github.com/rust-lang/crates.io-index": "2b5b159a6f255c7d2b06c1c86e74a9d9efb145ac6d793f0bf36f442d8efdb501", "cargo:objc2-quartz-core@0.3.2 registry+https://github.com/rust-lang/crates.io-index": "b458bb9fe6c1821fc3b5205741928957f5e8e57d2fee1f95b66f52746e14deff", "cargo:objc2@0.5.3 registry+https://github.com/rust-lang/crates.io-index": "0300028f5f513b17b95e54de3eb5b5f03a7d5db46026d05190da4a614b13ae05", @@ -650,6 +664,7 @@ "cargo:openssl-sys@0.9.117 registry+https://github.com/rust-lang/crates.io-index": "1c3d52f7df443d1ad19063f5f44102c29d952abac7de9936fe14f4d86f3308a7", "cargo:openssl@0.10.81 registry+https://github.com/rust-lang/crates.io-index": "d93933b28e5cd41c9d9f15dc494dea3046ea5535c65ce139dd9246cbaf9796bc", "cargo:option-ext@0.2.0 registry+https://github.com/rust-lang/crates.io-index": "b93a5d2377702ddbdb9928c5e61c59ed683f01c157e735e3aedd10b2fb5ecc70", + "cargo:option-operations@0.6.1 registry+https://github.com/rust-lang/crates.io-index": "1fe1ea84294d0c086eb64fb60212e959a101930432ae1c0da4ae25d78382870d", "cargo:ordered-float@5.5.0 registry+https://github.com/rust-lang/crates.io-index": "ea95e59a64328b649aeb0e8261746e29278ef4fcf036c47adda5fcc9b727a433", "cargo:ordered-stream@0.2.0 registry+https://github.com/rust-lang/crates.io-index": "1242cfdd216ffebb65d95a92e9ee169252f12ff9f82b2d86c020ee61e13e84f2", "cargo:ordermap@1.2.2 registry+https://github.com/rust-lang/crates.io-index": "9b98dda9fbffdde9ed9b7eba106ca4b5843ecf9a186736b464e0865e2052bc28", @@ -736,7 +751,6 @@ "cargo:png@0.18.1 registry+https://github.com/rust-lang/crates.io-index": "75d96228a3f3ee3ec271b861d405d59782a9395d8cfe810cfd39d9354ad823a5", "cargo:pnp@0.12.12 registry+https://github.com/rust-lang/crates.io-index": "31a84e8c472f391cc7f39effec9b13e7c9f7ad7eb26c7036246a403872dbc70c", "cargo:polling@3.11.0 registry+https://github.com/rust-lang/crates.io-index": "a3678771f559e48ae24f7dc2046da375f4a582d0affc989e8715386728d34375", - "cargo:pollster@0.4.0 registry+https://github.com/rust-lang/crates.io-index": "453cbbeff5cb1238b6781aeb16a25fbdaaef5bbc7ca376d182a2104ac1df5a95", "cargo:poly1305@0.9.1 registry+https://github.com/rust-lang/crates.io-index": "22a96eb1a64f20927fa2e2826d744ff5f966999a605b2d3831fa9f5202e247f2", "cargo:polycool@0.4.0 registry+https://github.com/rust-lang/crates.io-index": "027af87a221ff8c75fb69c0ca5067f743447430f20c29290ee20db8ef8a6485d", "cargo:polyval@0.7.3 registry+https://github.com/rust-lang/crates.io-index": "e505d462963b5e69db7373c17f47edf6ab37bff6aa05c005c2b94fee5dbc52f2", @@ -746,7 +760,6 @@ "cargo:powerfmt@0.2.1 registry+https://github.com/rust-lang/crates.io-index": "6221232df0f85c39cd99bddf4ae8d400e6caf37b16de9e785c8a7a1b08308387", "cargo:ppv-lite86@0.2.21 registry+https://github.com/rust-lang/crates.io-index": "2ab6af58f655e957b7be0f1f2467840b30454c90534f2756702cd9b8b22febe4", "cargo:precomputed-hash@0.1.1 registry+https://github.com/rust-lang/crates.io-index": "710a3ab19caded5394ef2b95efeaa4eebe1f0ae588f3bb24c1a86a9f43131128", - "cargo:presser@0.3.1 registry+https://github.com/rust-lang/crates.io-index": "0bdbc833d7eadd8eaf31f57955f069b83d59ba65aa96108f3a52d90302531f1b", "cargo:prettyplease@0.2.37 registry+https://github.com/rust-lang/crates.io-index": "ac524fba0c77b1ebfc111293c5d5e02442a5fff03ec09da8601648dc28ecaf61", "cargo:primefield@0.14.0 registry+https://github.com/rust-lang/crates.io-index": "7c469eb761a298ad1711102b5d7a55709c3dda7a6ac44cc724eb3fa7f945d093", "cargo:primeorder@0.14.0 registry+https://github.com/rust-lang/crates.io-index": "c72542237074c5708ccfb6aa02864a9ce6ffedf76421c668dfdf5af3013d5bfb", @@ -754,7 +767,6 @@ "cargo:proc-macro-utils@0.10.0 registry+https://github.com/rust-lang/crates.io-index": "3b8764413469ca762e4383a00f1b86f9e96752ff2a6853492616ac88695a6b0b", "cargo:proc-macro2@1.0.107 registry+https://github.com/rust-lang/crates.io-index": "7669207f1450f3352ac158adeb0d5a70d183f3cc37199186a71de0dab3158fe6", "cargo:prodash@31.0.1 registry+https://github.com/rust-lang/crates.io-index": "60e874e3ef0d1100a71bb89bfd4aa9a1b736d4ce964e7da013280ab9e705bc21", - "cargo:profiling@1.0.18 registry+https://github.com/rust-lang/crates.io-index": "79d2aa6525e9f6a41593c691e541fe68b924d5de253b0b47d1f6bb8c04b526ad", "cargo:psm@0.1.32 registry+https://github.com/rust-lang/crates.io-index": "f5022a331a2671700d89e5bf37784e6aa3e61c06946891606da13d8f672e5d15", "cargo:pxfm@0.1.30 registry+https://github.com/rust-lang/crates.io-index": "9ddedcb220de998748240f214c6a64f9f426eac52c2e8dc9f366d32e6adc54d6", "cargo:pyo3-build-config@0.29.3 registry+https://github.com/rust-lang/crates.io-index": "25dcdc6ae45ae06870c5094374128c963a8b64494307e8786adb49592f10b05e", @@ -765,11 +777,11 @@ "cargo:quantette@0.6.0 registry+https://github.com/rust-lang/crates.io-index": "b58119d6b6ccda34f1019e61dd20f71982b1e4ae4d4820db4f2390e62a304122", "cargo:quick-error@2.0.1 registry+https://github.com/rust-lang/crates.io-index": "5381665aa36f96b71565a4cd0558814a6619c2ac809d4a4124b704dc51c15ff0", "cargo:quick-xml@0.41.0 registry+https://github.com/rust-lang/crates.io-index": "c1d1e3e023cd4807ab450002fbd474968190b25c4c20dc5c3cb4352df6072932", - "cargo:quickjs-jit-core@0.14.1 registry+https://github.com/rust-lang/crates.io-index": "b14d93bec3fa91c55fda9604bc7bf361378c10537eb0f6c0e369b8ec54e6f8ef", - "cargo:quickjs-jit-macro@0.14.1 registry+https://github.com/rust-lang/crates.io-index": "09db1fee115a9df40c02e16597d4755cae2b565c182a13d5cb8cc1f3c4efb7b6", - "cargo:quickjs-jit-stdlib@0.14.1 registry+https://github.com/rust-lang/crates.io-index": "225cc1fc522648f3fd07b741e728ffd794c9be4863f69d961a897c7f6fe58da4", - "cargo:quickjs-jit-sys@0.14.1 registry+https://github.com/rust-lang/crates.io-index": "5cf3e13cd1397fb668a7d378f04299ad4523191147ace58fd71691d5aefd667a", - "cargo:quickjs-jit@0.14.1 registry+https://github.com/rust-lang/crates.io-index": "9a17ad524e4a695a83a93b6528754ef565388c0a62f630c3119ca52215500d10", + "cargo:quickjs-jit-core@0.14.2 registry+https://github.com/rust-lang/crates.io-index": "cb50a0e282c8c4998d6d9732f621a90330d517a312160da6ced42cf035eac6d8", + "cargo:quickjs-jit-macro@0.14.2 registry+https://github.com/rust-lang/crates.io-index": "6a4c071778e723b198c4398013c955a6ed583455941206dc4981d3b5202b27c3", + "cargo:quickjs-jit-stdlib@0.14.2 registry+https://github.com/rust-lang/crates.io-index": "fb8e308376f38c106754c1b7318c62160d7c96c8cec13245de81bbfaeb04539d", + "cargo:quickjs-jit-sys@0.14.2 registry+https://github.com/rust-lang/crates.io-index": "6fadad8f74fc87d52615d7b769dd8a362f3e008986cac756559a51246d1192dc", + "cargo:quickjs-jit@0.14.2 registry+https://github.com/rust-lang/crates.io-index": "38e070c9bbd85886dc36d9446c35b83b361c844a500185902681d2225fbe3631", "cargo:quinn-proto@0.11.19 registry+https://github.com/rust-lang/crates.io-index": "1f8f4429ea22cc3bda7e3568d714e54a9ace91aefed34854f4c205fc35905948", "cargo:quinn-udp@0.5.16 registry+https://github.com/rust-lang/crates.io-index": "6ad24c1b24c528df2a1eb2840c5e770c8097e3c76dfd4ac02c770eab7cb36f42", "cargo:quinn@0.11.12 registry+https://github.com/rust-lang/crates.io-index": "2c0dd4849cbe27364b627c2d2c4dec9f876ad9761bbbddddd5ac09a1174626c0", @@ -788,10 +800,8 @@ "cargo:rand@0.10.3 registry+https://github.com/rust-lang/crates.io-index": "ca985e2d012c7fec18287e99a55f931647e300df5804ca0f7d342af4858b0aa2", "cargo:rand@0.8.8 registry+https://github.com/rust-lang/crates.io-index": "756a8be18c6b20a35fcf32ef579029e1730adaa0139d8ef3e965b30f10f39622", "cargo:rand@0.9.5 registry+https://github.com/rust-lang/crates.io-index": "5b958038e8296fbf43e5cad0339e33906a57e2e8de6c65a0f37cbf0940a0590b", - "cargo:range-alloc@0.1.5 registry+https://github.com/rust-lang/crates.io-index": "fbf162e245b99ed7b6f48611ee86683894bd0f48b271b7c5cee8649c0e8e7a2c", "cargo:ratatui-core@0.1.2 registry+https://github.com/rust-lang/crates.io-index": "de4aadf4b33b5d604afc93ee0233637039e8e92a11580f6f82ae61437c85cc64", "cargo:ratatui-crossterm@0.1.2 registry+https://github.com/rust-lang/crates.io-index": "e80505873962ead936c983aecf8bcc91d85d8fcd80ab1a791c6fe316e0d30ef3", - "cargo:ratatui-image@11.1.0 registry+https://github.com/rust-lang/crates.io-index": "e4d19eb1934aa083e6dd38e6ba92746bee308054a52606117149e0942245d74b", "cargo:ratatui-termina@0.1.0 registry+https://github.com/rust-lang/crates.io-index": "ace1db4205a9e62b03dbe633298102673cb225266441d59013797c05fa4d5c9f", "cargo:ratatui-termion@0.1.2 registry+https://github.com/rust-lang/crates.io-index": "401e43af4a2c4e43d11727ecc4bb672ba29b9fa6c83b6818f8d484541937e1ac", "cargo:ratatui-widgets@0.3.2 registry+https://github.com/rust-lang/crates.io-index": "7f802fe9ac17a8611bd7841e94efca51533dd27b37a55716ba0dbc62c655ee7a", @@ -802,7 +812,6 @@ "cargo:ratex-parser@0.1.15 registry+https://github.com/rust-lang/crates.io-index": "aa93c6d58ce107c75468b388fcc22d9f2702aba52918bd7bbbd82076e3704f79", "cargo:ratex-types@0.1.15 registry+https://github.com/rust-lang/crates.io-index": "03d439ad4f1495b8f8d6a9d650b684d38a911ca82f9112f278f1fbf1788f575f", "cargo:raw-window-handle@0.6.2 registry+https://github.com/rust-lang/crates.io-index": "e0bef88f525969c755cf0090525b9836fb5106fb8c9b8f6130c596d82c28b1da", - "cargo:raw-window-metal@1.1.0 registry+https://github.com/rust-lang/crates.io-index": "fa11e20da3a125ad096d355aa81912ad4e17ee41ab4703a80e699835f5ef2308", "cargo:rayon-core@1.13.0 registry+https://github.com/rust-lang/crates.io-index": "9202653bd920209391cb776f015b61325cb53ceaa10f496c8038820f0a1a34af", "cargo:rayon@1.12.0 registry+https://github.com/rust-lang/crates.io-index": "88c819689f81e6866bdc35778654308c3771e36a248421e36cc7b0e41f48a6a1", "cargo:ref-cast-impl@1.0.27 registry+https://github.com/rust-lang/crates.io-index": "1294a1cabd91e62e5de19308e0a2a2e2cd8c648cb22e57f97ae14b8e2cb602fd", @@ -816,7 +825,6 @@ "cargo:regorus@0.10.1 registry+https://github.com/rust-lang/crates.io-index": "5b7bc4acf933df5dd0e18b999e9e4dc1d0982ee2ecacc4b676fec66356141a79", "cargo:regress@0.12.0 registry+https://github.com/rust-lang/crates.io-index": "320f00a60712af9aa4665fde1d037236b2cd118e5053f0fde9436f1584cb6801", "cargo:relative-path@2.0.3 registry+https://github.com/rust-lang/crates.io-index": "47cfdaab4092def06c92b4e34f1d9221f06276087dadc0b73860183010398bfc", - "cargo:renderdoc-sys@1.1.0 registry+https://github.com/rust-lang/crates.io-index": "b0df33810748e1068e3920c19f6e2d26dc3d86afd3cd3630dcbc973320eeba27", "cargo:reqwest@0.13.5 https://github.com/seanmonstar/reqwest#de55373434f07f42926599dbb5a88550d8e55112 (adapted; third-party/reqwest)": "52c116012232ca3251552cebebeb2ef6a691c82beffb83f3586bd2df2781d9a4", "cargo:resb@0.1.2 registry+https://github.com/rust-lang/crates.io-index": "0173ff674afb419a0a3cb272ff0b7a7835660fb4327f4dc500d4ac63e372c83b", "cargo:resvg@0.46.0 registry+https://github.com/rust-lang/crates.io-index": "2e121e12d086bb75cbbd25e4391bc05feef6834278be9fdd27df85b73e48dab0", @@ -864,6 +872,9 @@ "cargo:ruff_source_file@0.0.14 registry+https://github.com/rust-lang/crates.io-index": "da4fec3527d0e34938fcaa7a0c5d0890ad70127049ecb08ef79e4f3880bea183", "cargo:ruff_text_size@0.0.14 registry+https://github.com/rust-lang/crates.io-index": "3c755152c70671f3a55c5d6adc1eb932c34c4d2fbdbdc1539601720b9b6fc5df", "cargo:rusqlite@0.41.0 registry+https://github.com/rust-lang/crates.io-index": "6f83ae82dcd6f273fb680ca6b2d0de2344a19c5d3031e48ac92efd3a197e578a", + "cargo:rust-i18n-macro@4.2.4 registry+https://github.com/rust-lang/crates.io-index": "c32cf1a7d7e400ca3e938aa8c6e2920a74bad53e1c018b6e279d155efaa47f30", + "cargo:rust-i18n-support@4.2.4 registry+https://github.com/rust-lang/crates.io-index": "6dc204a34e68004927d30ff5cd5ecd878d34e8b8bda5c727ceccb5fd15d4a1a1", + "cargo:rust-i18n@4.2.4 registry+https://github.com/rust-lang/crates.io-index": "d10edee1f2f75ad6922fec93082e55ba001755144106eba2c2f7c4451cec1467", "cargo:rustc_version@0.4.1 registry+https://github.com/rust-lang/crates.io-index": "1e3cde69c78dea9d037a76d21a1ec8d9e46cb4ea8934697422a1e6bf80e72f1a", "cargo:rustc-hash@1.1.0 registry+https://github.com/rust-lang/crates.io-index": "c44836bc44732a465cfbacc1232bbcc8dfe9c3a780dfed54449707485fc86ac4", "cargo:rustc-hash@2.1.3 registry+https://github.com/rust-lang/crates.io-index": "d372cfd3b9b4e5e018433369dec96db7fd39e1e40c81c0696669718892cabeee", @@ -914,6 +925,7 @@ "cargo:serde_with@3.24.0 registry+https://github.com/rust-lang/crates.io-index": "2d9b6f26046bec9faa3999f70f23b9ebd42eacaa4af566e04ce1d913aed746e7", "cargo:serde_yaml_ng@0.10.0 registry+https://github.com/rust-lang/crates.io-index": "fc85e27e4c490ed19dd69b1ce968319f9244266ace98067ba7c4649bb194ff31", "cargo:serde_yaml@0.9.34+deprecated registry+https://github.com/rust-lang/crates.io-index": "363c14ee2d4df158297de00be1bf161bb123c65810b36c005a35223412061eb7", + "cargo:serde-saphyr@1.3.0 registry+https://github.com/rust-lang/crates.io-index": "f0e639a958c975b3691c3ec302ebdf49dfd84193457a72ec946a650511b14c1c", "cargo:serde@1.0.229 registry+https://github.com/rust-lang/crates.io-index": "e46403def502600130c893677d2d1147f96d2ab425234ea295eddcad59a4ba60", "cargo:serdect@0.4.3 registry+https://github.com/rust-lang/crates.io-index": "ff9661862e00b0b6c990fb0cda9882d9323f8bbf2adc258adc1a406e1fcbca06", "cargo:servo_arc@0.4.3 registry+https://github.com/rust-lang/crates.io-index": "cc001ac6dd8cb83d518d3a70752ceac76c539eafcfa3b60d147152cd32c1de8d", @@ -949,7 +961,6 @@ "cargo:speedate@0.17.0 registry+https://github.com/rust-lang/crates.io-index": "b61d5b4377c9dc23a3c4a3656281eec746eef6b8bb3b6c017b4c4614a525c7b9", "cargo:spin@0.10.1 registry+https://github.com/rust-lang/crates.io-index": "7687888e6c28330030ff1f0c3c5d025d4a60e2732319c4b364dd7140de49b6be", "cargo:spin@0.9.9 registry+https://github.com/rust-lang/crates.io-index": "0bb82aecf97dffcd76bb8b96323fe3b7d200dbc6449b5dbeedc279a82d85fbd0", - "cargo:spirv@0.4.0+sdk-1.4.341.0 registry+https://github.com/rust-lang/crates.io-index": "d310f30313d9896c914074e094f7b2c74d98f61202eb062fafc18604a327489d", "cargo:spki@0.7.3 registry+https://github.com/rust-lang/crates.io-index": "1938b50abd0de64430d6db7ee059ca289daa0556936246045aa9f3c72f8056b6", "cargo:spki@0.8.1 registry+https://github.com/rust-lang/crates.io-index": "5ee97ed1200ead0332f5a058752d665c53ee61f4996520638074480aaccd04ed", "cargo:sponge-cursor@0.1.0 registry+https://github.com/rust-lang/crates.io-index": "c21c38be243961adaf0f49aec14662cc65b8abd79b78b6562b502256bb50c8ba", @@ -1020,9 +1031,7 @@ "cargo:time@0.3.55 registry+https://github.com/rust-lang/crates.io-index": "e61ad0fe1c12aa78ee4892205077d55159c3c71867cfe2171eab892e0701ad6e", "cargo:timezone_provider@0.2.6 registry+https://github.com/rust-lang/crates.io-index": "fa19757a77a42042e346d542aec724ff6db794a1a2b59e4273bd83cf1516bb2f", "cargo:tiny-skia-path@0.11.4 registry+https://github.com/rust-lang/crates.io-index": "b87526ba068e3e69c16a91d16359079dadae35988c573a84ba49693080aaf596", - "cargo:tiny-skia-path@0.12.0 registry+https://github.com/rust-lang/crates.io-index": "202a6d28c38eb6872a744f654c32d60dd607097c8f201b0c57eb576987cfec54", "cargo:tiny-skia@0.11.4 registry+https://github.com/rust-lang/crates.io-index": "5d924f125caa4d98a5637190383013cd93c675d34cb145e440c778b1378aad06", - "cargo:tiny-skia@0.12.0 registry+https://github.com/rust-lang/crates.io-index": "12275160d8e79a0512c28aa181308088695b9429545cd5e24f24f117fa3d1763", "cargo:tinystr@0.8.5 registry+https://github.com/rust-lang/crates.io-index": "beb3c3762a3a13fc1d1485202d0391889163f8a9c6f73a815b2cb0caed8b813a", "cargo:tinyvec@1.13.3 registry+https://github.com/rust-lang/crates.io-index": "a432dc7515fe8cd160c81e9524c735638afca59cca1125374e27145c39d64a9f", "cargo:tokio-macros@2.7.2 registry+https://github.com/rust-lang/crates.io-index": "772bd91fb4d705de87e4b842ae83ea0d8cdeabf709149133b5d83c16b03cabaa", @@ -1057,6 +1066,7 @@ "cargo:tracing-subscriber@0.3.23 registry+https://github.com/rust-lang/crates.io-index": "c2f63c547a67874df582cb3463d08ad3f52322e0fcbd2d368acb570e7dba505b", "cargo:tracing@0.1.44 registry+https://github.com/rust-lang/crates.io-index": "e272c273a7ee5a479cd3d17f2c42625f11b2496cb2cc8c8db707b3dec751c5fe", "cargo:tree_magic_mini@3.2.2 registry+https://github.com/rust-lang/crates.io-index": "5350361dfa9e09769ab84c1c8cef9e3f9f73e009efb2af8077b220370a0cd1eb", + "cargo:triomphe@0.1.17 registry+https://github.com/rust-lang/crates.io-index": "bb25a2c6325d4a988a86dbcfbdf2b4c9fcdd363277882f0eaafbd6bd47cc9aea", "cargo:try-lock@0.2.5 registry+https://github.com/rust-lang/crates.io-index": "79fa207d80acc4bcf1fcc6e7a8c4559e86ad3466984a901edb7fe02eb27ecfd6", "cargo:ts-rs-macros@12.0.1 registry+https://github.com/rust-lang/crates.io-index": "b9c74b6e8ea64e3d1cfd4c8ef7d10e33cb95e2aee13193ab185f3d4fdeee738c", "cargo:ts-rs@12.0.1 registry+https://github.com/rust-lang/crates.io-index": "c22be9a7b3308dd7f559bbe7a179d3c29c0532f283bf3fa0c8bdcf02b5eaa8c7", @@ -1136,13 +1146,6 @@ "cargo:webview2-com@0.39.1 registry+https://github.com/rust-lang/crates.io-index": "2bdd99ed7c0d5effc07ed2d728a9190cf47508e30c0fbbc79dcfabfe7b6ce184", "cargo:weedle2@5.0.0 registry+https://github.com/rust-lang/crates.io-index": "aa84d156babf1ddccfe9a711685f89210ba9ff4b9798de225a54c8510e698c08", "cargo:weezl@0.1.12 registry+https://github.com/rust-lang/crates.io-index": "8886caaeee53b3235a2763679054b8bffd26d60111ce418cb9d58561fd9b3448", - "cargo:wgpu-core-deps-apple@30.0.1 registry+https://github.com/rust-lang/crates.io-index": "1785aa4e94d1370d8bec143e40a82f8ba2c171c0a18db7123dd960d6d600d756", - "cargo:wgpu-core-deps-windows-linux-android@30.0.1 registry+https://github.com/rust-lang/crates.io-index": "ee0baf34b7103b8757bf237cc07dd6dd49768eb35c0ba33d6d0d260bbc173bcc", - "cargo:wgpu-core@30.0.1 registry+https://github.com/rust-lang/crates.io-index": "7cf96c89de24876d82cde9d289300819a2e16da0dd6e0e0794f6e19bc100bb2f", - "cargo:wgpu-hal@30.0.1 registry+https://github.com/rust-lang/crates.io-index": "3eadf0dc77f5b99efdbf248bfd83af4954448f995ca61d5cd9ea4784ab7f82f5", - "cargo:wgpu-naga-bridge@30.0.1 registry+https://github.com/rust-lang/crates.io-index": "b7d3323f25f3aa5cf2630b6e8e1477a27a9bfac55f7fb1682d3ce55904c40eaf", - "cargo:wgpu-types@30.0.1 registry+https://github.com/rust-lang/crates.io-index": "9bbc59c6bf41b7786b5ffe12bd422624af05a5a6bf87d20a017928f6e69d9345", - "cargo:wgpu@30.0.1 registry+https://github.com/rust-lang/crates.io-index": "4c1c9374f0b6a870031300846ccd3fbb681c1f785fba75132bc96158a443c67a", "cargo:which@6.0.3 registry+https://github.com/rust-lang/crates.io-index": "c4ed0c8a466e3529c1b1c94f8f8676dd70977782f61ccdcbf55637fbd557fe0d", "cargo:which@8.0.6 registry+https://github.com/rust-lang/crates.io-index": "38abfa8b305768d60efe6f6b0f5a6241d5a56505a1898785c77f3f9b21cdaf9f", "cargo:whoami@2.1.3 registry+https://github.com/rust-lang/crates.io-index": "4a73bfcadc538532e0e9af460a2ccbef7d42fa6366738b57f0de06cc0219eec1", @@ -1202,7 +1205,6 @@ "cargo:x11rb-protocol@0.13.2 registry+https://github.com/rust-lang/crates.io-index": "d047f1e6373fdf0a133423a4522bf8eb80d96d9773b315f59b5b2fd0274baab5", "cargo:x11rb@0.13.2 registry+https://github.com/rust-lang/crates.io-index": "2cedb4d862765354dc5aff54880584a5b98a8e6ef0bdb439aa779c4df74e30f7", "cargo:x25519-dalek@3.0.0 registry+https://github.com/rust-lang/crates.io-index": "ae7b3c4f9dd3e3b0b6bf5398358467d10cdde6463aabe164a9b5923a836d4ed5", - "cargo:xml-rs@0.8.29 registry+https://github.com/rust-lang/crates.io-index": "8938cf8441a6232350c5d0e0937fa4b0da92dc2b450c7116ead9de1ab7704425", "cargo:xml5ever@0.18.1 registry+https://github.com/rust-lang/crates.io-index": "74599c6e66bc3576cbecbc63ff7b4774fce9850c9fc8b2bd13c7d6d85008e750", "cargo:xmlwriter@0.1.0 registry+https://github.com/rust-lang/crates.io-index": "b0521dc15d4310f556a62bcc2c69017e89ead161148d3bb5ddbb9eb696d9ccb3", "cargo:xxhash-rust@0.8.19 registry+https://github.com/rust-lang/crates.io-index": "045e6ce69e89fb2ebec7b323ac78c94d327819527c3222c2d61cac1c48e21c5f", @@ -1231,6 +1233,7 @@ "cargo:zlib-rs@0.6.8 registry+https://github.com/rust-lang/crates.io-index": "db46241ae502fb02e56450770e626bd4051263dd3eb67f065d9293a4eed6c8d9", "cargo:zmij@1.0.23 registry+https://github.com/rust-lang/crates.io-index": "a77f2112165f1f5dd963386d77912fb373fb10577360387deb5b8bfdae5e954d", "cargo:zoneinfo64@0.3.0 registry+https://github.com/rust-lang/crates.io-index": "0779eb1092be1aa6529f1d2e3670d3d84b5bd84f62dd0014505ebcb350fcd12b", + "cargo:zopfli@0.8.4 registry+https://github.com/rust-lang/crates.io-index": "4ec0d7b519abc4bc67b76a2800a0c102370cec618406e45d434286b46e72fe37", "cargo:zstd-safe@7.3.0 registry+https://github.com/rust-lang/crates.io-index": "c4d3bb30e9bd222142c1d46dc5b46ae4e48bebfba1a41b6e061c962bfcf12a40", "cargo:zstd-safe@8.2.0 registry+https://github.com/rust-lang/crates.io-index": "8b34a7c3c7f340c923d3e3f01580dc509178a9570635353a25ec8f5d6e32e0dc", "cargo:zstd-sys@2.1.2+zstd.1.5.7 registry+https://github.com/rust-lang/crates.io-index": "31ba1e20f006762de91fdd97b1db2777b15d4e1da16317ed7017efea95a5aca6", @@ -1244,5 +1247,5 @@ "npm:ajv@8.20.0 https://registry.npmjs.org/ajv/-/ajv-8.20.0.tgz sha512-Thbli+OlOj+iMPYFBVBfJ3OmCAnaSyNn4M1vz9T6Gka5Jt9ba/HIR56joy65tY6kx/FCF5VXNB819Y7/GUrBGA==": "e0b7c0627c7c460c99e8d7b8ac586e4c975ea2a2fae3859fdc94e67ec3aa69cc", "npm:pele@1.13.0 https://registry.npmjs.org/pele/-/pele-1.13.0.tgz sha512-Ie8UKY9x00MsuR3jO6AzUwzK2Z6MIV3Tf4EDdITiuk8Uaz8K7g0R082WqsqNaSU8DdgkrRvZThzhit83mi/uiw==": "4fa75f9a04ed6fb14b9abd85c484443e73dfb84762d829f77406ee9a1b31189b" }, - "sha256": "e01133abe95a57a67b9ab39728fad3479eed1d798b12acb8196a5adc060e5f45" + "sha256": "ef7aa56523df85636e1ac7a6fb280795c9bd164484afff111733f726059a70fc" } diff --git a/products/maka/desktop-shell/src/direct2d.rs b/products/maka/desktop-shell/src/direct2d.rs index e0dac27781c..6d784d42fa0 100644 --- a/products/maka/desktop-shell/src/direct2d.rs +++ b/products/maka/desktop-shell/src/direct2d.rs @@ -25,7 +25,7 @@ use crate::{ }; use maka_workbench::reload::{Request, UiReload}; use nsh_engine::JsonValue; -use nsh_platform_windows::{AppOptions, AppSource, quit_app, run_app, with_running_view}; +use nsh_platform_windows::{AppOptions, quit_app, run_app_with_config, with_running_view}; use tokio::{ runtime::{Handle, Runtime}, sync::watch, @@ -64,8 +64,8 @@ fn run(first: Connection, runtime: Runtime) -> Result<(), String> { .take_requests(); carry_out(requests, &runtime); refuse_reloads(reloading, runtime.handle()); - let result = run_app( - AppSource::Config(shell.attach(config)), + let result = run_app_with_config( + shell.attach(config), AppOptions { app_id: APP_ID.into(), title: TITLE.into(), @@ -172,8 +172,8 @@ mod tests { quit_app(); } }); - let code = run_app( - AppSource::Config(config), + let code = run_app_with_config( + config, AppOptions { app_id: "org.apache.maka.direct2d-test".into(), title: "Direct2D exit bridge test".into(), diff --git a/products/maka/terminal-shell/src/entry.rs b/products/maka/terminal-shell/src/entry.rs index a8bf05a2770..618021d21d2 100644 --- a/products/maka/terminal-shell/src/entry.rs +++ b/products/maka/terminal-shell/src/entry.rs @@ -24,7 +24,7 @@ use maka_host_runtime::application::host::startup; use maka_workbench::bindings::Bindings; use nsh_core::{ Points, Size, - platform::{ColorScheme, Environment, Idiom, Renderer}, + platform::{ColorScheme, Environment, Idiom}, }; use nsh_engine::EngineConfig; use std::{ @@ -151,9 +151,8 @@ fn configuration( EngineConfig { viewport, environment: Environment { - renderer: Renderer::Terminal, color_scheme: ColorScheme::Dark, - idiom: Idiom::Desktop, + idiom: Idiom::Terminal, window: viewport, ..Default::default() }, diff --git a/products/maka/terminal-shell/src/terminal.rs b/products/maka/terminal-shell/src/terminal.rs index 7750913ed3f..59cc1e8f711 100644 --- a/products/maka/terminal-shell/src/terminal.rs +++ b/products/maka/terminal-shell/src/terminal.rs @@ -33,7 +33,7 @@ mod ui; use input::Inbox; use nsh_engine::EngineConfig; -use nsh_platform_tui::CellMetrics; +use nsh_platform_tui::{AppView, CellSize, Input}; use output::Output; use std::{ io::{self, IsTerminal}, @@ -54,6 +54,86 @@ const TICK: Duration = Duration::from_millis(16); // One existing best-effort restoration window, shared by IME release and IO. const RESTORATION_WAIT: Duration = Duration::from_millis(100); +pub fn cell_viewport(columns: u16, rows: u16) -> nsh_core::Size { + let cells = CellSize::default(); + nsh_core::Size::new( + cells.width() * f32::from(columns), + cells.height() * f32::from(rows), + ) +} + +pub fn input_from_crossterm(event: crossterm::event::Event) -> Option { + use crossterm::event::{ + Event, KeyCode, KeyEventKind, KeyModifiers, MouseButton, MouseEventKind, + }; + let modifiers = |keys: KeyModifiers| nsh_platform_tui::Modifiers { + ctrl: keys.contains(KeyModifiers::CONTROL), + alt: keys.contains(KeyModifiers::ALT), + shift: keys.contains(KeyModifiers::SHIFT), + cmd: keys.contains(KeyModifiers::SUPER), + }; + let button = |button: MouseButton| match button { + MouseButton::Left => nsh_platform_tui::MouseButton::Left, + MouseButton::Right => nsh_platform_tui::MouseButton::Right, + MouseButton::Middle => nsh_platform_tui::MouseButton::Middle, + }; + match event { + Event::Resize(..) => None, + Event::FocusGained => Some(Input::Focus(true)), + Event::FocusLost => Some(Input::Focus(false)), + Event::Paste(text) => Some(Input::Paste(text)), + Event::Mouse(mouse) => { + let mut input = nsh_platform_tui::MouseInput::default(); + input.column = mouse.column; + input.row = mouse.row; + input.modifiers = modifiers(mouse.modifiers); + input.kind = match mouse.kind { + MouseEventKind::Down(b) => nsh_platform_tui::MouseKind::Down(button(b)), + MouseEventKind::Up(b) => nsh_platform_tui::MouseKind::Up(button(b)), + MouseEventKind::Moved | MouseEventKind::Drag(_) => { + nsh_platform_tui::MouseKind::Move + } + MouseEventKind::ScrollUp => nsh_platform_tui::MouseKind::Wheel { x: 0, y: -1 }, + MouseEventKind::ScrollDown => nsh_platform_tui::MouseKind::Wheel { x: 0, y: 1 }, + MouseEventKind::ScrollLeft => nsh_platform_tui::MouseKind::Wheel { x: -1, y: 0 }, + MouseEventKind::ScrollRight => nsh_platform_tui::MouseKind::Wheel { x: 1, y: 0 }, + }; + Some(Input::Mouse(input)) + } + Event::Key(key) => { + let release = key.kind == KeyEventKind::Release; + let name = match key.code { + KeyCode::Char(c) => c.to_string(), + KeyCode::Esc => "Escape".into(), + KeyCode::BackTab => "Tab".into(), + KeyCode::F(number) => format!("F{number}"), + other => format!("{other:?}"), + }; + let mut modifiers = modifiers(key.modifiers); + if key.code == KeyCode::BackTab { + modifiers.shift = true; + } + if key.kind == KeyEventKind::Repeat { + Some(Input::KeyRepeat { + key: name, + modifiers, + }) + } else { + Some(Input::Key { + key: name, + modifiers, + release, + }) + } + } + } +} + +pub fn handle_event(view: &mut AppView, event: crossterm::event::Event) -> bool { + input_from_crossterm(event) + .is_some_and(|input| view.handle(input) == nsh_platform_tui::Handled::Yes) +} + pub(crate) type NativeJob = Box; #[derive(Clone, Default)] @@ -147,7 +227,7 @@ pub(crate) fn run( .get_dimensions() .map_err(|error| error.to_string())?; let (columns, rows) = (size.cols, size.rows); - config.viewport = CellMetrics::default().viewport(columns.max(1), rows.max(1)); + config.viewport = cell_viewport(columns.max(1), rows.max(1)); config.environment.window = config.viewport; terminal .enter_raw_mode() diff --git a/products/maka/terminal-shell/src/terminal/output.rs b/products/maka/terminal-shell/src/terminal/output.rs index c8a8c5864f5..5b899902972 100644 --- a/products/maka/terminal-shell/src/terminal/output.rs +++ b/products/maka/terminal-shell/src/terminal/output.rs @@ -132,6 +132,16 @@ impl Output { #[derive(Default)] pub(super) struct FrameWriter(pub Vec); +pub(super) fn osc52(text: &str, tmux: bool) -> String { + use base64::Engine as _; + let encoded = base64::engine::general_purpose::STANDARD.encode(text.as_bytes()); + if tmux { + format!("\x1bPtmux;\x1b\x1b]52;c;{encoded}\x1b\x1b\\\x1b\\") + } else { + format!("\x1b]52;c;{encoded}\x1b\\") + } +} + impl Write for FrameWriter { fn write(&mut self, bytes: &[u8]) -> io::Result { self.0 @@ -262,8 +272,7 @@ mod tests { } let original = "中😀".repeat(1_200_000); assert!(original.len() > 8 * 1024 * 1024); - let clipboard = - nsh_platform_tui::ServiceOutput::Clipboard(original.clone()).terminal_sequence(false); + let clipboard = osc52(&original, false); let encoded = clipboard .strip_prefix("\x1b]52;c;") .and_then(|bytes| bytes.strip_suffix("\x1b\\")) diff --git a/products/maka/terminal-shell/src/terminal/pixels/session.rs b/products/maka/terminal-shell/src/terminal/pixels/session.rs index ae57b09c2e0..3aa3785ba5a 100644 --- a/products/maka/terminal-shell/src/terminal/pixels/session.rs +++ b/products/maka/terminal-shell/src/terminal/pixels/session.rs @@ -536,9 +536,7 @@ fn run( return Ok(()); } if let Some(text) = platform.take_clipboard_write() { - let bytes = nsh_platform_tui::ServiceOutput::Clipboard(text) - .terminal_sequence(presentation.tmux) - .into_bytes(); + let bytes = super::super::output::osc52(&text, presentation.tmux).into_bytes(); presentation .state .lock() @@ -768,7 +766,7 @@ mod fallback_tests { roots: roots.clone(), changes, }); - config.viewport = nsh_platform_tui::CellMetrics::default().viewport(80, 24); + config.viewport = crate::terminal::cell_viewport(80, 24); let (native_jobs, mut jobs) = tokio::sync::mpsc::unbounded_channel(); let presentation = Presentation { native_jobs: Some(native_jobs), diff --git a/products/maka/terminal-shell/src/terminal/ui.rs b/products/maka/terminal-shell/src/terminal/ui.rs index 7baeb1572a1..a1b3d3e9005 100644 --- a/products/maka/terminal-shell/src/terminal/ui.rs +++ b/products/maka/terminal-shell/src/terminal/ui.rs @@ -18,15 +18,12 @@ */ use super::output::FrameWriter; -use crossterm::event::{Event, MouseEventKind}; -use nsh_core::{ - MountBatch, - platform::{Environment, Lifecycle}, -}; -use nsh_engine::{EngineConfig, LocalEngine, MountSink}; +use crossterm::event::Event; +use nsh_core::clipboard::ClipboardBackend; +use nsh_engine::EngineConfig; use nsh_platform_tui::{ - CellMetrics, ImageProtocol, ProtocolType, ServiceOutput, ServiceRequest, Surface, SurfaceEvent, - TerminalTextEngine, + AppOptions, AppView, CellSize, ColorDepth, Handled, ImageProtocol, ProtocolType, + TerminalCapabilities, }; use ratatui::{ Terminal, TerminalOptions, Viewport, @@ -44,25 +41,24 @@ use std::{ time::Instant, }; -#[derive(Default)] -struct Commits { - batches: Vec, - error: Option, - frame: bool, +struct Osc52Clipboard { + effects: Arc>>, + tmux: bool, } -#[derive(Clone, Default)] -struct Sink(Arc>); - -impl MountSink for Sink { - fn submit(&self, batch: MountBatch) { - self.0.lock().unwrap().batches.push(batch); +impl ClipboardBackend for Osc52Clipboard { + fn text(&self) -> Option { + None } - fn report_error(&self, message: &str) { - self.0.lock().unwrap().error = Some(message.into()); - } - fn request_frame(&self) { - self.0.lock().unwrap().frame = true; + + fn set_text(&self, text: Option) { + if let Some(text) = text { + let sequence = super::output::osc52(&text, self.tmux); + self.effects + .lock() + .unwrap() + .extend_from_slice(sequence.as_bytes()); + } } } @@ -137,54 +133,45 @@ pub(super) fn spawn( } struct Session { - engine: Option>, config: EngineConfig, reloading: Option>, wake: Option>, host: nsh_engine::HostChannel, - surface: Surface, - environment: Environment, - sink: Sink, + surface: AppView, terminal: Terminal>, area: Rect, dirty: bool, - started: Instant, - effects: Vec, - tmux: bool, - deadline: Option, - frame_requested: bool, - last_sent_focus_path: Option>, + effects: Arc>>, image_protocol: Option, } impl Session { - fn new(mut config: EngineConfig, tmux: bool) -> Result { - let metrics = CellMetrics::default(); - let columns = (config.viewport.width / metrics.width()).round() as u16; - let rows = (config.viewport.height / metrics.height()).round() as u16; + fn new(config: EngineConfig, tmux: bool) -> Result { + let cells = CellSize::default(); + let columns = (config.viewport.width / cells.width()).round() as u16; + let rows = (config.viewport.height / cells.height()).round() as u16; let area = viewport(columns, rows)?; - let mut surface = Surface::new(area.width, area.height, metrics); - let access = match &config.app { - nsh_engine::App::Js(bundle) => bundle.policy.access(), - nsh_engine::App::Rust(_) => nsh_engine::Policy::default().access(), - }; - surface.set_access(access); - surface.set_host_services_enabled(true); - config.environment.fallback_key_bindings = true; - surface.set_assets(config.assets.clone()); - let sink = Sink::default(); - let environment = config.environment; + let effects = Arc::new(Mutex::new(Vec::new())); + let clipboard: Arc = Arc::new(Osc52Clipboard { + effects: effects.clone(), + tmux, + }); + let mut capabilities = TerminalCapabilities::default(); + capabilities.background = config.environment.color_scheme; + capabilities.colors = ColorDepth::TrueColor; + let mut options = AppOptions::default(); + options.cells = cells; + options.capabilities = capabilities; + options.clipboard = Some(clipboard); + options.image_protocol = Some(ImageProtocol::halfblocks()); + let mut surface = AppView::new(options); + surface.resize(area.width, area.height); let host = config.host.clone(); let reloading = config .context .get::() .map(|reload| reload.take_requests()); - let engine = LocalEngine::start( - config.clone(), - TerminalTextEngine::new(metrics), - sink.clone(), - ) - .ok_or("NSH UI engine failed to start")?; + surface.load_local(config.clone())?; let terminal = Terminal::with_options( CrosstermBackend::new(FrameWriter::default()), TerminalOptions { @@ -193,38 +180,21 @@ impl Session { ) .map_err(|error| error.to_string())?; Ok(Self { - engine: Some(engine), config, reloading, wake: None, host, surface, - environment, - sink, terminal, area, dirty: false, - started: Instant::now(), - effects: Vec::new(), - tmux, - // The first advance obtains the engine's actual timer deadline. - deadline: Some(Instant::now()), - frame_requested: false, - last_sent_focus_path: None, + effects, image_protocol: None, }) } - fn engine(&self) -> &LocalEngine { - self.engine.as_ref().expect("the UI engine is running") - } - - fn engine_mut(&mut self) -> &mut LocalEngine { - self.engine.as_mut().expect("the UI engine is running") - } - fn set_wake(&mut self, wake: Arc) { - self.engine_mut().set_wake(wake.clone()); + self.surface.set_wake_callback(Some(wake.clone())); self.wake = Some(wake); } @@ -238,18 +208,16 @@ impl Session { match request { maka_workbench::reload::Request::Pause(ready) => { self.surface.set_input_paused(true); - self.engine() - .control() - .advance_clock(std::time::Duration::ZERO, || {}); - self.deadline = self.engine_mut().pump(); - changed |= self.apply_commits()?; - self.engine() - .control() - .advance_clock(std::time::Duration::ZERO, move || { + if let Some(control) = self.surface.control() { + control.advance_clock(std::time::Duration::ZERO, || {}); + } + changed |= self.surface.pump()?; + if let Some(control) = self.surface.control() { + control.advance_clock(std::time::Duration::ZERO, move || { let _ = ready.send(Ok(())); }); - self.deadline = self.engine_mut().pump(); - changed |= self.apply_commits()?; + } + changed |= self.surface.pump()?; } maka_workbench::reload::Request::Resume => self.surface.set_input_paused(false), maka_workbench::reload::Request::Reload => { @@ -264,57 +232,43 @@ impl Session { fn reload(&mut self) -> Result<(), String> { let mut config = self.config.clone(); config.viewport = self.surface.viewport(); - config.environment = self.environment; - let metrics = self.surface.metrics(); - let sink = Sink::default(); - let mut surface = Surface::new(self.area.width, self.area.height, metrics); - surface.set_access(match &config.app { - nsh_engine::App::Js(bundle) => bundle.policy.access(), - nsh_engine::App::Rust(_) => nsh_engine::Policy::default().access(), - }); - surface.set_host_services_enabled(true); - surface.set_assets(config.assets.clone()); - surface.set_image_protocol(self.image_protocol); + let protocol = self + .image_protocol + .unwrap_or_else(ImageProtocol::halfblocks); // Detach the old VM before another attaches to the same host channel. - drop(self.engine.take()); - let mut engine = LocalEngine::start(config, TerminalTextEngine::new(metrics), sink.clone()) - .ok_or("NSH UI engine failed to reload")?; + self.surface.stop(); + self.surface.set_input_paused(false); + self.surface.resize(self.area.width, self.area.height); + self.surface.set_image_protocol(Some(protocol)); + self.surface.load_local(config)?; if let Some(wake) = &self.wake { - engine.set_wake(wake.clone()); + self.surface.set_wake_callback(Some(wake.clone())); } - self.engine = Some(engine); - self.surface = surface; - self.sink = sink; - self.started = Instant::now(); - self.last_sent_focus_path = None; - self.frame_requested = true; - self.deadline = Some(Instant::now()); + changed_after_reload(&mut self.surface)?; self.dirty = true; Ok(()) } fn initial_frame(&mut self) -> Result { - self.apply_commits()?; - self.begin_frame(); + self.surface.pump()?; + if self.surface.frame_requested() { + self.surface.begin_frame(); + } self.encode(true) } fn advance(&mut self, command: Advance) -> Result { let mut changed = false; if command.cancel_pointer { - self.cancel_pointer()?; + self.surface.cancel_pointer(); changed = true; } if let Some((columns, rows)) = command.resize { - self.surface.set_image_protocol(None); + self.surface + .set_image_protocol(Some(ImageProtocol::halfblocks())); self.image_protocol = None; self.area = viewport(columns, rows)?; self.surface.resize(self.area.width, self.area.height); - self.sync_focus_path(); - self.environment.window = self.surface.viewport(); - let control = self.engine().control(); - control.resize(self.environment.window); - control.set_environment(self.environment); // The supplied area is authoritative. Ratatui's resize path queries // the process TTY even for a Fixed viewport, but this backend only // encodes into memory for the separate physical output owner. @@ -343,44 +297,23 @@ impl Session { } for event in command.inputs { super::interrupt::activity(&self.host, &event); - let lifecycle = match event { - Event::FocusGained => Some(Lifecycle::Active), - Event::FocusLost => Some(Lifecycle::Inactive), - _ => None, - }; - if let Some(lifecycle) = lifecycle.filter(|now| *now != self.environment.lifecycle) { - self.environment.lifecycle = lifecycle; - self.engine().control().set_environment(self.environment); + if let Some(input) = super::input_from_crossterm(event) { + changed |= self.surface.handle(input) == Handled::Yes; } - changed |= match event { - Event::Mouse(mouse) - if matches!( - mouse.kind, - MouseEventKind::ScrollUp - | MouseEventKind::ScrollDown - | MouseEventKind::ScrollLeft - | MouseEventKind::ScrollRight - ) => - { - self.surface.handle_wheel(mouse, 1) != 0 - } - event => self.surface.handle_event(event), - }; - self.forward_events()?; // The next physical event sees the ordinary native tree after // every callback from this event has reached the application. - self.deadline = self.engine_mut().pump(); + changed |= self.surface.pump()?; changed |= self.reload_requests()?; - changed |= self.apply_commits()?; + changed |= self.surface.pump()?; } - if command.draw { - self.begin_frame(); + if command.draw && self.surface.frame_requested() { + self.surface.begin_frame(); } - self.deadline = self.engine_mut().pump(); + changed |= self.surface.pump()?; changed |= self.reload_requests()?; - changed |= self.apply_commits()?; - changed |= self.surface.tick(self.started.elapsed().as_secs_f64()); - self.forward_events()?; + if self.surface.needs_pump() { + changed |= self.surface.pump()?; + } self.dirty |= changed; if command.draw { let dirty = std::mem::take(&mut self.dirty); @@ -390,112 +323,23 @@ impl Session { } } - fn cancel_pointer(&mut self) -> Result<(), String> { - self.surface.pointer_left(); - self.forward_events() - } - - fn begin_frame(&mut self) { - // Paced List overscan and animation callbacks advance once per draw, - // independently of how often input or engine work needs pumping. - if std::mem::take(&mut self.frame_requested) { - self.engine().control().frame(); - } - } - - fn forward_events(&mut self) -> Result<(), String> { - let events: Vec<_> = self.surface.drain_events().collect(); - self.dispatch_events(events) - } - - fn dispatch_events(&mut self, events: Vec) -> Result<(), String> { - self.sync_focus_path(); - let control = self.engine().control(); - for event in events { - match event { - SurfaceEvent::Event(id, event, payload) => { - control.dispatch_event(id, event, payload) - } - SurfaceEvent::HintObservation(observation) => control.observe_hint(observation), - SurfaceEvent::Scroll(id, offset, applied) => control.scroll(id, offset, applied), - SurfaceEvent::InputScroll(id, offset, content, viewport) => { - control.input_scroll(id, offset, content, viewport); - } - SurfaceEvent::ListCellRetired(id, request, retired) => { - control.set_focus_path(self.surface.focus_path()); - control.retire_list_cell(id, request, retired); - } - SurfaceEvent::States(id, states) => control.set_states(id, states), - SurfaceEvent::AnimationsFinished(finished) => control.animations_finished(finished), - SurfaceEvent::ComponentSize(id, size) => control.set_component_size(id, size), - SurfaceEvent::Zoom(id, scale) => control.zoom(id, scale), - SurfaceEvent::RootSize(id, size, insets) => control.set_root_size(id, size, insets), - SurfaceEvent::Service(ServiceRequest::ClipboardWrite(text)) => { - let sequence = ServiceOutput::Clipboard(text).terminal_sequence(self.tmux); - self.effects.extend_from_slice(sequence.as_bytes()); - } - SurfaceEvent::Service(ServiceRequest::ClipboardRead { id, has_only }) => { - self.surface.complete_clipboard( - id, - has_only, - Err("this shell cannot read the system clipboard".into()), - ); - } - SurfaceEvent::Service(ServiceRequest::ClipboardPaste(edit)) => { - self.surface.complete_paste( - edit, - Err("paste through the terminal's bracketed-paste command".into()), - ); - } - SurfaceEvent::Service(_) => { - return Err("terminal host services are unavailable in this slice".into()); - } - } - } - Ok(()) - } - - fn sync_focus_path(&mut self) { - let path = self.surface.focus_path(); - if self.last_sent_focus_path.as_ref() != Some(&path) { - self.engine().control().set_focus_path(path.clone()); - self.last_sent_focus_path = Some(path); - } - } - - fn apply_commits(&mut self) -> Result { - let mut commits = std::mem::take(&mut *self.sink.0.lock().unwrap()); - if let Some(error) = commits.error { - return Err(error); - } - let changed = !commits.batches.is_empty(); - // Every delta is necessary. In particular Create/Insert and later - // prop/text deltas cannot be coalesced to the last MountBatch. - for batch in commits.batches.drain(..) { - self.surface.apply(batch); - } - self.forward_events()?; - self.frame_requested |= commits.frame; - Ok(changed) - } - fn encode(&mut self, changed: bool) -> Result { - if !changed && self.effects.is_empty() { + let has_effects = !self.effects.lock().unwrap().is_empty(); + if !changed && !has_effects { return Ok(self.frame(None)); } // The UI paints its caret; the hidden terminal cursor still anchors IME. let writer = self.terminal.backend_mut().writer_mut(); crossterm::queue!(writer, crossterm::terminal::BeginSynchronizedUpdate) .map_err(|error| error.to_string())?; - self.surface - .render(self.area, self.terminal.current_buffer_mut()); + *self.terminal.current_buffer_mut() = self.surface.buffer().clone(); self.terminal.flush().map_err(|error| error.to_string())?; self.terminal .hide_cursor() .map_err(|error| error.to_string())?; let cursor = self .surface - .input_cursor_position(self.area) + .cursor_position() .unwrap_or_else(|| (self.area.x, self.area.y).into()); self.terminal .set_cursor_position(cursor) @@ -510,12 +354,13 @@ impl Session { let mut bytes = std::mem::take(&mut self.terminal.backend_mut().writer_mut().0); // Complete clipboard effects share this immutable physical write // and its original flush receipt. - bytes.append(&mut self.effects); + bytes.append(&mut *self.effects.lock().unwrap()); Ok(self.frame(Some(bytes))) } fn frame(&self, bytes: Option>) -> Frame { - let redraw_at = if self.dirty || self.frame_requested || !self.effects.is_empty() { + let has_effects = !self.effects.lock().unwrap().is_empty(); + let redraw_at = if self.dirty || self.surface.frame_requested() || has_effects { Some(Instant::now()) } else if self.surface.animating() { // Native jobs expose pending work, not completion notifications. @@ -534,17 +379,25 @@ impl Session { }; Frame { bytes, - quit: self.surface.should_quit(), - deadline: if self.engine().needs_pump() { + quit: self.surface.exit_requested(), + deadline: if self.surface.needs_pump() { Some(Instant::now()) } else { - self.deadline + self.surface.timer_deadline() }, redraw_at, } } } +fn changed_after_reload(surface: &mut AppView) -> Result<(), String> { + surface.pump()?; + if surface.frame_requested() { + surface.begin_frame(); + } + Ok(()) +} + fn viewport(columns: u16, rows: u16) -> Result { let area = Rect::new(0, 0, columns.max(1), rows.max(1)); if usize::from(area.width) * usize::from(area.height) > 1_048_576 { @@ -565,8 +418,8 @@ mod tests { fn config(source: &str) -> EngineConfig { let mut config = EngineConfig::new(App::Js(Bundle::source(source.to_owned()))); - config.viewport = CellMetrics::default().viewport(40, 8); - config.environment.renderer = nsh_core::platform::Renderer::Terminal; + config.viewport = super::super::cell_viewport(40, 8); + config.environment.idiom = nsh_core::platform::Idiom::Terminal; config.header_heights = nsh_core::NO_NATIVE_HEADER; config.limits = Limits::default(); config.ui_sets = vec![nsh_base::registry()]; @@ -584,7 +437,7 @@ mod tests { } fn collapsed_workspace_pages(scenario: &'static str) { - use nsh_core::platform::{Idiom, Renderer}; + use nsh_core::platform::Idiom; use nsh_core::prelude::{Instance, class}; #[class] @@ -636,9 +489,8 @@ mod tests { }) .unwrap(); let mut options = config(&bundle.code); - options.viewport = CellMetrics::default().viewport(120, 36); + options.viewport = super::super::cell_viewport(120, 36); options.environment.window = options.viewport; - options.environment.renderer = Renderer::Native; options.environment.idiom = Idiom::Desktop; options.environment.native_focus_scopes = true; options.ui_sets.push(registry); @@ -891,7 +743,7 @@ mod tests { let deadline = Instant::now() + std::time::Duration::from_secs(2); for clear in [false, true] { if clear { - session.sink.submit(MountBatch { + session.surface.submit_batch(nsh_core::MountBatch { items: vec![MountItem::Command { id: editor.node, command: nsh_core::Command::Blur, @@ -899,13 +751,16 @@ mod tests { }); } let mut frame = session.advance(command([])).unwrap(); - while session.engine().needs_pump() { + while session.surface.needs_pump() { assert!(Instant::now() < deadline, "native focus never settled"); frame = session.advance(command([])).unwrap(); } assert!(frame.deadline.is_none_or(|due| due > Instant::now())); assert_eq!(frame.redraw_at, None); - assert_eq!(session.surface.focused(), (!clear).then_some(editor.node)); + assert_eq!( + session.surface.focused_node(), + (!clear).then_some(editor.node) + ); } assert!(session.surface.focus_path().is_empty()); assert!(session.surface.snapshot().contains("kept draft")); @@ -1114,8 +969,12 @@ mod tests { } let prefix = prepare(&mut session); let original = "Image and copied text 中😀".to_owned(); - let effect = ServiceOutput::Clipboard(original).terminal_sequence(false); - session.effects.extend_from_slice(effect.as_bytes()); + let effect = super::super::output::osc52(&original, false); + session + .effects + .lock() + .unwrap() + .extend_from_slice(effect.as_bytes()); let frame = session.encode(true).unwrap().bytes.unwrap(); assert!( frame.starts_with(&prefix), @@ -1130,7 +989,7 @@ mod tests { .count(), 1 ); - assert!(session.effects.is_empty()); + assert!(session.effects.lock().unwrap().is_empty()); assert!(session.encode(false).unwrap().bytes.is_none()); } @@ -1144,7 +1003,7 @@ mod tests { } } - fn mouse(surface: &Surface, label: &str, kind: MouseEventKind, column: u16) -> Event { + fn mouse(surface: &AppView, label: &str, kind: MouseEventKind, column: u16) -> Event { let node = surface .accessibility_snapshot() .into_iter() @@ -1158,7 +1017,7 @@ mod tests { }) } - fn click(surface: &Surface, label: &str) -> Vec { + fn click(surface: &AppView, label: &str) -> Vec { let node = surface .accessibility_snapshot() .into_iter() @@ -1738,7 +1597,10 @@ mod tests { .unwrap(); session.initial_frame().unwrap(); let mut input = command([ - Event::Key(KeyEvent::new(KeyCode::Char('a'), KeyModifiers::CONTROL)), + Event::Key(KeyEvent::new( + KeyCode::Char('a'), + KeyModifiers::CONTROL | KeyModifiers::SHIFT, + )), Event::Paste("你好😀".into()), ]); input.draw = false; @@ -1748,7 +1610,7 @@ mod tests { assert_eq!(editor.selection, 4..4); let bytes = session.advance(command([])).unwrap().bytes.unwrap(); assert!(bytes.ends_with(b"\x1b[1;7H\x1b[?2026l")); - session.sink.submit(MountBatch { + session.surface.submit_batch(nsh_core::MountBatch { items: vec![MountItem::Command { id: editor.node, command: nsh_core::Command::Blur, @@ -1913,7 +1775,11 @@ mod tests { fn mount_deltas_are_applied_in_order_including_create_and_later_value() { let mut session = Session::new(config("import { mount } from 'nsh'; import { element } from 'nsh:rt'; mount(() => element('view')); "), false).unwrap(); session.initial_frame().unwrap(); - session.sink.submit(MountBatch { + let bounds = nsh_core::Bounds::new( + nsh_core::geometry::point(nsh_core::geometry::px(0.0), nsh_core::geometry::px(0.0)), + nsh_core::geometry::size(nsh_core::geometry::px(160.0), nsh_core::geometry::px(16.0)), + ); + session.surface.submit_batch(nsh_core::MountBatch { items: vec![ MountItem::Create { id: 900, @@ -1924,29 +1790,28 @@ mod tests { child: 900, before: None, }, + MountItem::Input { + id: 900, + config: Box::default(), + }, MountItem::Frame { id: 900, - frame: nsh_core::Bounds::new( - nsh_core::geometry::point( - nsh_core::geometry::px(0.0), - nsh_core::geometry::px(0.0), - ), - nsh_core::geometry::size( - nsh_core::geometry::px(160.0), - nsh_core::geometry::px(16.0), - ), - ), + frame: bounds, + }, + MountItem::InputContent { + id: 900, + content: bounds, }, ], }); - session.sink.submit(MountBatch { + session.surface.submit_batch(nsh_core::MountBatch { items: vec![MountItem::InputValue { id: 900, text: "ordered".into(), count: 0, }], }); - assert!(session.apply_commits().unwrap()); + assert!(session.surface.pump().unwrap()); assert!(session.surface.snapshot().contains("ordered")); } @@ -1973,6 +1838,28 @@ mod tests { ) .unwrap(); session.initial_frame().unwrap(); + session + .advance(Advance { + image_protocol: None, + inputs: vec![ + Event::Mouse(MouseEvent { + kind: MouseEventKind::Down(MouseButton::Left), + column: 0, + row: 0, + modifiers: KeyModifiers::NONE, + }), + Event::Mouse(MouseEvent { + kind: MouseEventKind::Up(MouseButton::Left), + column: 0, + row: 0, + modifiers: KeyModifiers::NONE, + }), + ], + resize: None, + cancel_pointer: false, + draw: true, + }) + .unwrap(); let command = |key| Advance { image_protocol: None, inputs: vec![Event::Key(KeyEvent::new( @@ -2026,13 +1913,16 @@ mod tests { draw: true, }; session - .advance(command('a', KeyModifiers::CONTROL)) + .advance(command('a', KeyModifiers::CONTROL | KeyModifiers::SHIFT)) .unwrap(); let original = "x".repeat(1_048_577) + "😀"; for key in ['c', 'x'] { - let frame = session - .advance(command(key, KeyModifiers::CONTROL)) - .unwrap(); + let modifiers = if key == 'x' { + KeyModifiers::CONTROL | KeyModifiers::SHIFT + } else { + KeyModifiers::CONTROL + }; + let frame = session.advance(command(key, modifiers)).unwrap(); assert!(!frame.quit); assert_eq!( session.surface.input_context().unwrap().text, @@ -2043,7 +1933,7 @@ mod tests { }) ); let bytes = frame.bytes.unwrap(); - let sequence = ServiceOutput::Clipboard(original.clone()).terminal_sequence(false); + let sequence = super::super::output::osc52(&original, false); assert!( bytes .windows(sequence.len()) @@ -2056,16 +1946,16 @@ mod tests { Some("z") ); session - .advance(command('a', KeyModifiers::CONTROL)) + .advance(command('a', KeyModifiers::CONTROL | KeyModifiers::SHIFT)) .unwrap(); let cut = session - .advance(command('x', KeyModifiers::CONTROL)) + .advance(command('x', KeyModifiers::CONTROL | KeyModifiers::SHIFT)) .unwrap(); assert_eq!( session.surface.input_context().unwrap().text.as_deref(), Some("") ); - let sequence = ServiceOutput::Clipboard("z".into()).terminal_sequence(false); + let sequence = super::super::output::osc52("z", false); assert!( cut.bytes .unwrap() diff --git a/products/maka/terminal-shell/tests/fixtures/components.tsx b/products/maka/terminal-shell/tests/fixtures/components.tsx index 3e3526047a5..bea904b20b3 100644 --- a/products/maka/terminal-shell/tests/fixtures/components.tsx +++ b/products/maka/terminal-shell/tests/fixtures/components.tsx @@ -47,7 +47,7 @@ function Sandbox() { } as AgentSession); const saved = signal('No permission change'); return ( - + {saved()} - {platform.isTerminal ? 'TERMINAL_BRANCH' : 'DESKTOP_BRANCH'} requests:{calls()} + {platform.idiom === 'terminal' ? 'TERMINAL_BRANCH' : 'DESKTOP_BRANCH'} requests:{calls()} - + diff --git a/products/maka/workbench/app/ModelSettings.tsx b/products/maka/workbench/app/ModelSettings.tsx index 78476d8d553..f5626e65924 100644 --- a/products/maka/workbench/app/ModelSettings.tsx +++ b/products/maka/workbench/app/ModelSettings.tsx @@ -141,7 +141,7 @@ export function ModelSettings(props: { const title = () => page()?.title() ?? (contributed() ? contributionTitle(contributed()!) : tr('Settings')); const action = () => page()?.action?.() ?? null; - const terminal = platform.isTerminal; + const terminal = platform.idiom === 'terminal'; const iconButton = { ...controlStyle, width: 32, @@ -168,7 +168,7 @@ export function ModelSettings(props: { style={{ width: '100%', maxWidth: 880, - height: '100%', + flex: 1, maxHeight: 800, minHeight: 0, flexDirection: rail() ? 'row' : 'column', diff --git a/products/maka/workbench/app/NetworkSettings.tsx b/products/maka/workbench/app/NetworkSettings.tsx index 3d8e2e2cc79..b1fecb6c69c 100644 --- a/products/maka/workbench/app/NetworkSettings.tsx +++ b/products/maka/workbench/app/NetworkSettings.tsx @@ -56,25 +56,24 @@ export function NetworkSettings(props: { owner: NetworkSettingsOwner }) { } > - - - - ) : undefined + <> + + + } > diff --git a/products/maka/workbench/app/PendingMessage.tsx b/products/maka/workbench/app/PendingMessage.tsx index 38027f625cd..27e90a4fe5c 100644 --- a/products/maka/workbench/app/PendingMessage.tsx +++ b/products/maka/workbench/app/PendingMessage.tsx @@ -41,7 +41,12 @@ export function PendingMessage(props: { }) { const session = props.session; return ( - + {props.message.text} diff --git a/products/maka/workbench/app/ProviderPicker.tsx b/products/maka/workbench/app/ProviderPicker.tsx index 854531a3374..00454f4c1e5 100644 --- a/products/maka/workbench/app/ProviderPicker.tsx +++ b/products/maka/workbench/app/ProviderPicker.tsx @@ -150,7 +150,7 @@ export function ProviderPicker(props: { owner: ModelSettingsOwner }) { minHeight: 0, gap: 8, paddingHorizontal: settingsGutter, - paddingTop: platform.isTerminal ? 0 : 4, + paddingTop: platform.idiom === 'terminal' ? 0 : 4, }} > @@ -168,7 +168,7 @@ export function ProviderPicker(props: { owner: ModelSettingsOwner }) { ...inputTextStyle, flex: 1, minWidth: 0, - height: platform.isTerminal ? 16 : 32, + height: platform.idiom === 'terminal' ? 16 : 32, paddingHorizontal: settingsInset, color: C.text, placeholderColor: C.muted, @@ -236,7 +236,7 @@ export function ProviderPicker(props: { owner: ModelSettingsOwner }) { } - contentStyle={{ paddingRight: platform.isTerminal ? 0 : 8 }} + contentStyle={{ paddingRight: platform.idiom === 'terminal' ? 0 : 8 }} style={{ flex: 1, minHeight: 0 }} > {(row) => { @@ -344,7 +344,7 @@ function ProviderOption(props: { style={[ { fontSize: 14, - lineHeight: platform.isTerminal ? 16 : 20, + lineHeight: platform.idiom === 'terminal' ? 16 : 20, color: C.text, flex: 1, minWidth: 0, diff --git a/products/maka/workbench/app/RecallSearch.tsx b/products/maka/workbench/app/RecallSearch.tsx index 628cc3a06ea..05008ef68f2 100644 --- a/products/maka/workbench/app/RecallSearch.tsx +++ b/products/maka/workbench/app/RecallSearch.tsx @@ -325,10 +325,9 @@ export function RecallSearch(props: { style={{ width: '100%', maxWidth: 760, - height: '100%', + flex: 1, maxHeight: '100%', minHeight: 0, - flexShrink: 1, backgroundColor: C.surface, padding: 16, gap: 12, diff --git a/products/maka/workbench/app/RootUiSettings.tsx b/products/maka/workbench/app/RootUiSettings.tsx index 5e30169e46f..9be52ed385d 100644 --- a/products/maka/workbench/app/RootUiSettings.tsx +++ b/products/maka/workbench/app/RootUiSettings.tsx @@ -78,11 +78,11 @@ export function RootUiSettings(props: { owner: RootUiSettingsOwner }) { accessibilityLabel={tr('Choose interface')} disabled={owner.disabled()} style={{ - minHeight: platform.isTerminal ? 16 : 28, - paddingLeft: platform.isTerminal ? 0 : 10, - paddingRight: platform.isTerminal ? 0 : 6, + minHeight: platform.idiom === 'terminal' ? 16 : 28, + paddingLeft: platform.idiom === 'terminal' ? 0 : 10, + paddingRight: platform.idiom === 'terminal' ? 0 : 6, borderRadius: 8, - backgroundColor: platform.isTerminal ? undefined : C.raised, + backgroundColor: platform.idiom === 'terminal' ? undefined : C.raised, flexDirection: 'row', gap: 6, alignItems: 'center', diff --git a/products/maka/workbench/app/SessionCompactionPrompt.tsx b/products/maka/workbench/app/SessionCompactionPrompt.tsx index ed8e4909a1e..8f7083d336b 100644 --- a/products/maka/workbench/app/SessionCompactionPrompt.tsx +++ b/products/maka/workbench/app/SessionCompactionPrompt.tsx @@ -170,7 +170,7 @@ export function SessionCompactionPrompt(props: { style={{ width: '100%', maxWidth: 880, - height: '100%', + flex: 1, maxHeight: 800, minHeight: 0, padding: 16, diff --git a/products/maka/workbench/app/SessionTree.tsx b/products/maka/workbench/app/SessionTree.tsx index c0e9ce1fb57..0a49510acbf 100644 --- a/products/maka/workbench/app/SessionTree.tsx +++ b/products/maka/workbench/app/SessionTree.tsx @@ -216,7 +216,7 @@ export function SessionTree(props: { style={{ width: '100%', maxWidth: 720, - height: '100%', + flex: 1, maxHeight: 640, minHeight: 0, padding: 16, @@ -256,7 +256,7 @@ export function SessionTree(props: { estimatedItemSize={48} role="tree" accessibilityLabel={tr('Child conversations')} - style={{ width: contentWidth(), flex: 1, minHeight: 0 }} + style={{ width: contentWidth(), height: '100%', flex: 1, minHeight: 0 }} > {(item) => ( key}> diff --git a/products/maka/workbench/app/SettingsPage.tsx b/products/maka/workbench/app/SettingsPage.tsx index 52cef2ca6a8..ec5522f2ce1 100644 --- a/products/maka/workbench/app/SettingsPage.tsx +++ b/products/maka/workbench/app/SettingsPage.tsx @@ -34,7 +34,7 @@ import { inputTextStyle, } from './ui'; -const terminal = platform.isTerminal; +const terminal = platform.idiom === 'terminal'; /** The page's side margin; groups start here. */ export const settingsGutter = terminal ? 0 : 24; /** Where text starts inside a group; the title, section names and notes align to it. */ @@ -51,6 +51,27 @@ const rowStyle = { const labelStyle = { fontSize: 14, lineHeight: terminal ? 16 : 20 }; const textGap = terminal ? 0 : 2; +function SettingsFooter(props: { render: () => JSX.Element | undefined }) { + const content = props.render(); + return ( + + {content} + + ); +} + /** * A settings page below the panel's title row: its sections scroll, its footer * (Save, Cancel) stays in view. @@ -58,9 +79,11 @@ const textGap = terminal ? 0 : 2; export function SettingsBody(props: { children: JSX.Element; footer?: JSX.Element; + footerShown?: boolean; ref?: (node: ScrollRef) => void; accessibilityLabel?: string; }) { + const hasFooter = 'footer' in props; return ( - - - {props.footer} - + + props.footer} /> ); diff --git a/products/maka/workbench/app/SkillSettings.tsx b/products/maka/workbench/app/SkillSettings.tsx index c2cea1696c7..4349cf84b4e 100644 --- a/products/maka/workbench/app/SkillSettings.tsx +++ b/products/maka/workbench/app/SkillSettings.tsx @@ -206,7 +206,7 @@ function Detail(props: { owner: SkillSettingsOwner }) { { fontFamily: 'monospace', fontSize: 13, - lineHeight: platform.isTerminal ? 16 : 20, + lineHeight: platform.idiom === 'terminal' ? 16 : 20, color: C.text, }, { userSelect: 'text' }, diff --git a/products/maka/workbench/app/ToolCard.tsx b/products/maka/workbench/app/ToolCard.tsx index 7d085c53aa5..7eaec0ea1b4 100644 --- a/products/maka/workbench/app/ToolCard.tsx +++ b/products/maka/workbench/app/ToolCard.tsx @@ -429,7 +429,7 @@ export function ToolCard(props: { })} trailing={ - 0}> + 0}> - + { @@ -513,7 +513,7 @@ export function ToolCard(props: { props.maxHeight() - controlStyle.minHeight - detailsGap - - (platform.isTerminal ? 0 : cardPadding.top + cardPadding.bottom), + (platform.idiom === 'terminal' ? 0 : cardPadding.top + cardPadding.bottom), ), }} contentStyle={{ gap: 16 }} diff --git a/products/maka/workbench/app/ToolImage.tsx b/products/maka/workbench/app/ToolImage.tsx index 57433c5a3e9..9a0ac96e285 100644 --- a/products/maka/workbench/app/ToolImage.tsx +++ b/products/maka/workbench/app/ToolImage.tsx @@ -100,7 +100,7 @@ export function ToolImageStrip(props: { preview(image: ImagePreview): void; }) { // Terminal cells are too coarse for thumbnails; expanded tools still show each image. - if (platform.isTerminal) return ; + if (platform.idiom === 'terminal') return ; const shown = () => props.images().slice(-stripLimit); const hidden = () => props.images().length - shown().length; return ( diff --git a/products/maka/workbench/app/TurnNavigation.tsx b/products/maka/workbench/app/TurnNavigation.tsx index 6b15965dcb1..565c223bc3a 100644 --- a/products/maka/workbench/app/TurnNavigation.tsx +++ b/products/maka/workbench/app/TurnNavigation.tsx @@ -18,9 +18,9 @@ */ import { textTooltip } from './ui'; -import { Canvas, computed, effect, inputAction, signal, Text, View, Overlay, List } from 'nsh'; +import { Canvas, computed, effect, inputAction, signal, Text, View, List } from 'nsh'; import type { ListRef } from 'nsh'; -import { Button } from 'nsh/base'; +import { Button, Tooltip } from 'nsh/base'; import { pixelRatio, platform, windowSize } from 'nsh'; import { host as nativeHost } from 'maka/host'; import type { Position } from './history'; @@ -30,18 +30,18 @@ import { tr } from './locale'; // Cell input rounds by half a 16 / scale row; include the two-point stroke. const markPitch = computed(() => { - if (platform.isTerminal) return 16; + if (platform.idiom === 'terminal') return 16; pixelRatio(); windowSize(); return Math.max(24, 16 / nativeHost.uiScaleFactor + 2); }); -const railInset = platform.isTerminal ? 0 : 6; +const railInset = platform.idiom === 'terminal' ? 0 : 6; const railMargin = 32; -export const railWidth = () => (platform.isTerminal ? 24 : markPitch()); +export const railWidth = () => (platform.idiom === 'terminal' ? 24 : markPitch()); function TurnMark(props: { active: boolean; busy: boolean; landmark: boolean }) { const color = () => (props.active ? C.text : C.line); - if (platform.isTerminal) + if (platform.idiom === 'terminal') return ( {tr('Navigating…')} - + } selected={props.active} onPress={inputAction(props.navigate, props.item())} @@ -198,7 +198,7 @@ export function TurnNavigation(props: { const available = Math.min(420, Math.max(0, height() - railMargin * 2)); return Math.min( contentHeight(), - platform.isTerminal ? Math.floor(available / markPitch()) * markPitch() : available, + platform.idiom === 'terminal' ? Math.floor(available / markPitch()) * markPitch() : available, ); }); const activeIndex = computed(() => { @@ -250,10 +250,10 @@ export function TurnNavigation(props: { /> )} - 0}> + 0}> - + @@ -265,9 +265,9 @@ export function TurnNavigation(props: { position: 'absolute', right: 0, top: '100%', - marginTop: platform.isTerminal ? 0 : 8, + marginTop: platform.idiom === 'terminal' ? 0 : 8, width: railWidth(), - height: platform.isTerminal ? 32 : markPitch(), + height: platform.idiom === 'terminal' ? 32 : markPitch(), borderRadius: 8, alignItems: 'center', justifyContent: 'center', diff --git a/products/maka/workbench/app/TurnPanel.tsx b/products/maka/workbench/app/TurnPanel.tsx index b128573dc28..eaa286fd1e0 100644 --- a/products/maka/workbench/app/TurnPanel.tsx +++ b/products/maka/workbench/app/TurnPanel.tsx @@ -44,7 +44,7 @@ const groupHeaderHeight = Math.max( controlStyle.minHeight, captionTextStyle.lineHeight + 2 * controlStyle.paddingVertical, ); -const memberGap = platform.isTerminal ? 6 : 0; +const memberGap = platform.idiom === 'terminal' ? 6 : 0; const activityFollowThreshold = captionTextStyle.lineHeight; export type LiveActivity = { @@ -83,7 +83,7 @@ export function turnOutcome(turn: TurnPresentation): string | null { export function canFoldTurn(turn: TurnPresentation): boolean { if (!turn.worked || turn.interleavedInput) return false; const outcome = turnOutcome(turn); - if (platform.isTerminal) return outcome === 'completed' && !turn.active; + if (platform.idiom === 'terminal') return outcome === 'completed' && !turn.active; return outcome === null || outcome === 'completed'; } @@ -181,14 +181,16 @@ export function TurnSummary(props: { ? tr('Worked for {duration}', { duration: time }) : ''; const counts = - !platform.isTerminal && props.canFold() ? activityCounts(props.groups(), props.row) : ''; + platform.idiom !== 'terminal' && props.canFold() + ? activityCounts(props.groups(), props.row) + : ''; return [status, counts].filter(Boolean).join(' · ') || tr('Completed'); }; const choose = (action: { turnId: string; open: boolean }) => { if (props.turn().turnId === action.turnId && props.canFold()) props.toggle(action.open); }; return ( - + { measurements(); @@ -411,7 +413,7 @@ function ActivityLog(props: { props.reading(true); } }} - contentStyle={{ paddingLeft: platform.isTerminal ? 0 : 8, paddingRight: 8 }} + contentStyle={{ paddingLeft: platform.idiom === 'terminal' ? 0 : 8, paddingRight: 8 }} ref={(node) => { ownList = node; state.list = node; @@ -426,7 +428,7 @@ function ActivityLog(props: { node.focus(); } }} - style={{ height: bodyHeight(), marginLeft: platform.isTerminal ? 0 : -8 }} + style={{ height: bodyHeight(), marginLeft: platform.idiom === 'terminal' ? 0 : -8 }} > {(id) => ( key}> @@ -554,7 +556,7 @@ type TurnPanelProps = { export function TurnPanel(props: TurnPanelProps) { // On the desktop the turn's summary row is the only disclosure: groups have no // header of their own and show their members whenever the turn is open. - if (!platform.isTerminal) + if (platform.idiom !== 'terminal') effect(() => { if (props.state.open() || !props.group().rowIds.length) return; const live = !props.group().closed; @@ -563,14 +565,16 @@ export function TurnPanel(props: TurnPanelProps) { props.state.open.set(true); }); return ( - - + + 0}> - + tool.toolUseId}> {(tool) => } diff --git a/products/maka/workbench/app/Workbench.tsx b/products/maka/workbench/app/Workbench.tsx index d9b85a6de44..1426da1f54b 100644 --- a/products/maka/workbench/app/Workbench.tsx +++ b/products/maka/workbench/app/Workbench.tsx @@ -29,8 +29,8 @@ const CENTER_MIN = 48 * CELL; const BROWSER_MIN = 24 * CELL; const BROWSER_MAX = 40 * CELL; const PREVIEW_MIN = 40 * CELL; -const GAP = platform.isTerminal ? CELL : 0; -const INSET = platform.isTerminal ? 0 : PANEL_INSET; +const GAP = platform.idiom === 'terminal' ? CELL : 0; +const INSET = platform.idiom === 'terminal' ? 0 : PANEL_INSET; const available = () => windowSize().width - 2 * INSET; export const canDockBrowser = (withPreview = false) => @@ -109,7 +109,7 @@ export function Workbench(props: { axis="horizontal" handleAccessibilityLabel={tr('Resize workspace panels')} // On the desktop the sidebar and the panel part by fill alone. - handleStyle={{ backgroundColor: platform.isTerminal ? C.line : 'transparent' }} + handleStyle={{ backgroundColor: platform.idiom === 'terminal' ? C.line : 'transparent' }} style={{ flex: 1, minWidth: 0, minHeight: 0, gap: GAP }} > {props.navigation()} - {platform.isTerminal ? ( + {platform.idiom === 'terminal' ? ( panes() ) : ( diff --git a/products/maka/workbench/app/WorkspaceBrowser.tsx b/products/maka/workbench/app/WorkspaceBrowser.tsx index bd243d36d25..ad5da2722a5 100644 --- a/products/maka/workbench/app/WorkspaceBrowser.tsx +++ b/products/maka/workbench/app/WorkspaceBrowser.tsx @@ -103,18 +103,18 @@ type WorkspaceGroup = ConversationGroup & { name: string }; export function WorkspaceBrowser(props: WorkspaceBrowserProps) { const titleBarRow = () => ownTitleBar && props.docked(); - const navIcon = () => (platform.isTerminal ? C.secondary : C.muted); - const navText = () => (platform.isTerminal ? C.text : C.secondary); + const navIcon = () => (platform.idiom === 'terminal' ? C.secondary : C.muted); + const navText = () => (platform.idiom === 'terminal' ? C.text : C.secondary); const selectedNavText = (selected: boolean) => ({ fontSize: 14, - color: selected && !platform.isTerminal ? C.text : navText(), - fontWeight: selected && !platform.isTerminal ? ('500' as const) : undefined, + color: selected && platform.idiom !== 'terminal' ? C.text : navText(), + fontWeight: selected && platform.idiom !== 'terminal' ? ('500' as const) : undefined, }); const botSelected = () => props.botSession?.() != null && props.selected() === props.botSession?.(); // Desktop rows hold one line; the terminal's also name the workspace. - const rowHeight = () => (compact() ? 32 : platform.isTerminal ? 48 : 36); - const navigationRowHeight = () => (platform.isTerminal && !compact() ? 40 : 32); + const rowHeight = () => (compact() ? 32 : platform.idiom === 'terminal' ? 48 : 36); + const navigationRowHeight = () => (platform.idiom === 'terminal' && !compact() ? 40 : 32); const browser = props.browsing; const visibleSessions = computed(() => { const bot = props.botSession?.() ?? null; @@ -193,7 +193,7 @@ export function WorkspaceBrowser(props: WorkspaceBrowserProps) { () => new Map(groups().map((group) => [`group:${group.key}`, group])), ); const rowIds = computed(() => - platform.isTerminal + platform.idiom === 'terminal' ? choosingWorkspace() ? scopes().map((scope) => scope.id) : visibleSessions().map((session) => session.id) @@ -343,7 +343,7 @@ export function WorkspaceBrowser(props: WorkspaceBrowserProps) { gap: 8, }} > - + - + - + - + - + - + - + @@ -1053,7 +1065,7 @@ export function WorkspaceBrowser(props: WorkspaceBrowserProps) { flexDirection: 'row', alignItems: 'center', gap: 4, - ...(platform.isTerminal + ...(platform.idiom === 'terminal' ? { paddingTop: 8, borderTopWidth: 1, borderTopColor: C.line } : {}), }} @@ -1081,7 +1093,7 @@ export function WorkspaceBrowser(props: WorkspaceBrowserProps) { {tr('Settings')} - + + + + {`A: ${a.routes().join(">")} B: ${b.routes().join(">")}`} + + + {(route) => {route}} + + + {(route) => {route}} + + +)); diff --git a/third-party/nsh/crates/nsh-testing/tests/testing/windows/App.test.tsx b/third-party/nsh/crates/nsh-testing/tests/testing/windows/App.test.tsx new file mode 100644 index 00000000000..0d16be53d33 --- /dev/null +++ b/third-party/nsh/crates/nsh-testing/tests/testing/windows/App.test.tsx @@ -0,0 +1,91 @@ +import { expect, open, test } from "nsh/test"; + +const DESKTOP = { platform: "macos", width: 800, height: 600 } as const; + +test("the main window is focused, on one display", async () => { + const app = await open("./App.tsx", DESKTOP); + await app.waitFor("Focused: main"); + const main = app.window("main"); + expect(main.id).toBe("main"); + expect(main.state()).toMatchObject({ + mode: "normal", + minimized: false, + visible: true, + focused: true, + contentBounds: { origin: { x: 0, y: 0 }, size: { width: 800, height: 600 } }, + }); + expect(app.window("notes").state()).toBe(null); +}); + +test("a window opens shown and focused, and a press goes to the window its view is in", async () => { + const app = await open("./App.tsx", DESKTOP); + await app.press("Open notes"); + await app.waitFor("Focused: notes"); + expect(app.window("notes").state()).toMatchObject({ + visible: true, + focused: true, + bounds: { origin: { x: 40, y: 60 }, size: { width: 300, height: 200 } }, + }); + expect(app.window("main").state()?.focused).toBe(false); + // Its button sits where the main window's does, in a window of its own. + await app.press("In notes"); + await app.waitFor("Presses: notes in notes"); + await app.press("Main button"); + await app.waitFor("Presses: main"); + // The press activated the main window. + await app.waitFor("Focused: main"); + expect(app.window("notes").state()?.focused).toBe(false); +}); + +test("a popup closes when the focus leaves it", async () => { + const app = await open("./App.tsx", DESKTOP); + await app.press("Open popup"); + await app.waitFor("Focused: popup"); + await app.press("Main button"); + await app.waitFor("Log: popup blur"); + // Hidden at once, closed once the app removes it. + await app.waitFor("In popup", { state: "gone" }); + await app.waitUntil(() => app.window("popup").state() === null); +}); + +test("Escape closes the focused dialog", async () => { + const app = await open("./App.tsx", DESKTOP); + await app.press("Open dialog"); + await app.waitFor("Focused: dialog"); + await app.keyboard.press("escape"); + await app.waitFor("Log: dialog escape"); + await app.waitFor("Focused: main"); +}); + +test("the close button closes a window, unless it keeps itself open", async () => { + const app = await open("./App.tsx", DESKTOP); + await app.press("Open notes"); + await app.waitFor("In notes"); + await app.window("notes").pressClose(); + await app.waitFor("Log: notes closePress"); + await app.waitFor("In notes", { state: "gone" }); + + await app.press("Open guard"); + await app.waitFor("In guard"); + await app.window("guard").pressClose(); + await app.waitFor("Log: guard closePress closeButton"); + expect(app.window("guard").state()?.visible).toBe(true); + expect(app.shows("In guard")).toBe(true); + await app.press("Close guard"); + await app.waitFor("Log: guard close"); + await expect(() => app.window("guard").pressClose()).rejects.toThrow('no window "guard" is open'); +}); + +test("a window's picture needs a real platform, as the main window's does", async () => { + const app = await open("./App.tsx", DESKTOP); + await expect(() => app.window("notes").screenshot()).rejects.toThrow('no window "notes" is open'); + await app.press("Open notes"); + await app.waitFor("In notes"); + await expect(() => app.window("notes").screenshot()).rejects.toThrow("needs a real platform"); + await expect(() => app.window("main").screenshot()).rejects.toThrow("needs a real platform"); +}); + +test("off the desktops an app has no windows of its own", async () => { + const app = await open("./App.tsx", { platform: "ios" }); + expect(() => app.window("main").state()).toThrow("no windows of its own"); +}); diff --git a/third-party/nsh/crates/nsh-testing/tests/testing/windows/App.tsx b/third-party/nsh/crates/nsh-testing/tests/testing/windows/App.tsx new file mode 100644 index 00000000000..d2a39cb42d5 --- /dev/null +++ b/third-party/nsh/crates/nsh-testing/tests/testing/windows/App.tsx @@ -0,0 +1,69 @@ +// Windows of the app's own as headless runs play a desktop's: they open +// shown and focused (a panel without the focus), a press in one focuses +// it, a popup closes when the focus leaves it, Escape closes a dialog, +// and the close button reports its press and closes unless the window +// keeps itself open. Each window's button sits where the main window's +// does: a press goes to the window the view is in. +import { mount, signal, Text, View } from "nsh"; +import { currentWindow, focusedWindow, Window } from "nsh/desktop"; + +const presses = signal("none"); +const notesOpen = signal(false); +const popupOpen = signal(false); +const dialogOpen = signal(false); +const guardOpen = signal(false); +const log = signal("none"); + +function Button(props: { label: string; onPress: () => void }) { + return ( + + {props.label} + + ); +} + +/** A window's one button, where the main window's first is. */ +function Inside(props: { name: string }) { + const win = currentWindow(); + return + + + + + + ); +}); diff --git a/third-party/nsh/crates/nsh-tui-host/tests/fixtures/agent/agent.test.tsx b/third-party/nsh/crates/nsh-tui-host/tests/fixtures/agent/agent.test.tsx new file mode 100644 index 00000000000..90c1572d996 --- /dev/null +++ b/third-party/nsh/crates/nsh-tui-host/tests/fixtures/agent/agent.test.tsx @@ -0,0 +1,38 @@ +import { expect, open, test } from "nsh/test"; + +test("terminal screenshots capture styled Cells after real pointer input", async () => { + const app = await open("./App.tsx", { width: 160, height: 64 }); + await app.press("id:increment"); + await app.waitFor("Count 1"); + const bytes = await app.screenshot(); + const picture = JSON.parse(new TextDecoder().decode(new Uint8Array(bytes))); + expect(picture.format).toBe("nsh-tui-cells"); + expect(picture.version).toBe(1); + expect(picture.width).toBe(20); + expect(picture.height).toBe(4); + expect(picture.rows.length).toBe(4); + expect(picture.rows.every((row: unknown[]) => row.length === 20)).toBe(true); + expect(picture.rows[0][0]).toEqual({ + symbol: "界", fg: "blue", bg: "reset", underline: "reset", modifiers: ["bold", "italic", "underlined"], + }); + expect(picture.rows[0][2].symbol).toBe("A"); + const shown = picture.rows.map((row: { symbol: string }[]) => row.map(cell => cell.symbol).join("")); + expect(shown.some((row: string) => row.includes("Count 1"))).toBe(true); + expect(Array.from(await app.screenshot())).toEqual(Array.from(bytes)); +}); + +test("terminal startup reports app errors through the test agent", async () => { + await expect(() => open("./error.tsx")).rejects.toThrow("terminal startup failure"); +}); + +test("terminal mouse presses reveal mounted controls below and above the scroll viewport", async () => { + const app = await open("./Scroll.tsx", { width: 320, height: 160 }); + const picture = JSON.parse(new TextDecoder().decode(new Uint8Array(await app.screenshot()))); + const shown = picture.rows.map((row: { symbol: string }[]) => row.map(cell => cell.symbol).join("")).join("\n"); + expect(app.texts()).toContain("Team"); + expect(shown.includes("Team")).toBe(false); + await app.press("Team"); + await app.waitFor("Pressed: Team"); + await app.press("Start"); + await app.waitFor("Pressed: Start"); +}); diff --git a/third-party/nsh/crates/nsh-tui-host/tests/fixtures/agent/error.tsx b/third-party/nsh/crates/nsh-tui-host/tests/fixtures/agent/error.tsx new file mode 100644 index 00000000000..c9bcc28b81a --- /dev/null +++ b/third-party/nsh/crates/nsh-tui-host/tests/fixtures/agent/error.tsx @@ -0,0 +1 @@ +throw new Error("terminal startup failure"); diff --git a/third-party/nsh/crates/nsh-tui-host/tests/fixtures/animation/App.tsx b/third-party/nsh/crates/nsh-tui-host/tests/fixtures/animation/App.tsx new file mode 100644 index 00000000000..a2119ce87c7 --- /dev/null +++ b/third-party/nsh/crates/nsh-tui-host/tests/fixtures/animation/App.tsx @@ -0,0 +1,30 @@ +import { Animated, Canvas, Text, View, createAnimatedValue, mount, signal } from "nsh"; + +function App() { + const progress = createAnimatedValue(0); + const finished = signal(0); + const x = progress.interpolate({ inputRange: [0, 1], outputRange: [0, 16] }); + const color = progress.interpolate({ inputRange: [0, 1], outputRange: ["#ff0000", "#00ff00"] }); + const run = () => { + progress.set(0); + Animated.timing(progress, { toValue: 1, duration: 80 }).start(result => { + if (result.finished) finished.set(finished() + 1); + }); + }; + return ( + + Run + + Again + + { + cx.fillStyle = color; + cx.translate(x, 0); + cx.fillRect(0, 0, 16, 16); + }} /> + Finished {finished()} + + ); +} + +mount(App); diff --git a/third-party/nsh/crates/nsh-tui-host/tests/fixtures/animation/animation.test.tsx b/third-party/nsh/crates/nsh-tui-host/tests/fixtures/animation/animation.test.tsx new file mode 100644 index 00000000000..6e01b5d7cca --- /dev/null +++ b/third-party/nsh/crates/nsh-tui-host/tests/fixtures/animation/animation.test.tsx @@ -0,0 +1,19 @@ +import { expect, open, test } from "nsh/test"; + +test("native animation finishes through the terminal host and paints its final Cells", async () => { + const app = await open("./App.tsx", { width: 320, height: 128 }); + await app.press("id:run"); + await app.waitFor("Finished 1"); + const picture = JSON.parse(new TextDecoder().decode(new Uint8Array(await app.screenshot()))); + expect(picture.format).toBe("nsh-tui-cells"); + expect(picture.rows[1][0].symbol).toBe(" "); + expect(picture.rows[1][2].symbol).toBe("A"); + expect(picture.rows[1][2].fg).toBe("green"); + expect(picture.rows[2][0].symbol).toBe(" "); + expect(picture.rows[2][2].symbol).toBe("⣿"); + expect(picture.rows[2][3].symbol).toBe("⣿"); + expect(picture.rows[2][2].fg).toBe("green"); + await app.press("id:again"); + await app.waitFor("Finished 2"); + expect(app.shows("Finished 2")).toBe(true); +}); diff --git a/third-party/nsh/crates/nsh-tui-host/tests/fixtures/controls/App.tsx b/third-party/nsh/crates/nsh-tui-host/tests/fixtures/controls/App.tsx new file mode 100644 index 00000000000..6c48224f4c7 --- /dev/null +++ b/third-party/nsh/crates/nsh-tui-host/tests/fixtures/controls/App.tsx @@ -0,0 +1,9 @@ +import { mount, View } from "nsh"; +import { Controls } from "../../../../../examples/gallery/demos/Controls"; + +// The first card of each control the tests go through, in their order, above one "Last event" card. +mount(() => ( + + + +)); diff --git a/third-party/nsh/crates/nsh-tui-host/tests/fixtures/controls/Controls.test.tsx b/third-party/nsh/crates/nsh-tui-host/tests/fixtures/controls/Controls.test.tsx new file mode 100644 index 00000000000..481b392ba14 --- /dev/null +++ b/third-party/nsh/crates/nsh-tui-host/tests/fixtures/controls/Controls.test.tsx @@ -0,0 +1,152 @@ +import { expect, open, test } from "nsh/test"; + +test("the official Controls demo is operable with the terminal key scheme", async () => { + // A single column keeps the demo's reading order, in an ordinary 100 by 40 Cell terminal. + const app = await open("./App.tsx", { width: 800, height: 640, clock: {} }); + await app.waitFor("Select all"); + await app.keyboard.press("tab"); + await app.keyboard.press("enter"); + await app.waitFor("Notifications: off"); + expect(app.enabled("Badges")).toBe(false); + await app.keyboard.press("ctrl+n"); + await app.keyboard.press("enter"); + await app.waitFor("Haptics: on"); + await app.keyboard.press("down"); + await app.keyboard.press("enter"); + await app.waitFor("Images load at a lower quality"); + await app.keyboard.press("tab"); + await app.keyboard.press("enter"); + await app.waitFor("Select all: true"); + expect(app.texts()).toContain("4 of 4"); + await app.keyboard.press("enter"); + await app.waitFor("Nothing to show"); + + // Four filter items, then the first radio. Enterprise remains outside the focus order. + for (let i = 0; i < 5; i++) await app.keyboard.press("tab"); + // The group's stop is its checked radio (Plus): up moves to Free. + await app.keyboard.press("up"); + await app.keyboard.press("enter"); + await app.waitFor("Plan: Free"); + await app.keyboard.press("down"); + await app.keyboard.press("enter"); + await app.waitFor("Plan: Plus"); + await app.keyboard.press("down"); + await app.keyboard.press("enter"); + await app.waitFor("Plan: Team"); + await app.keyboard.press("tab"); + await app.keyboard.press("enter"); + await app.waitFor("Continue: Team, $12 / mo"); + + await app.keyboard.press("tab"); + await app.keyboard.press("right"); + await app.keyboard.press("enter"); + await app.waitFor("Deployed to production"); + await app.keyboard.press("ctrl+f"); + await app.keyboard.press("enter"); + await app.waitFor("Grace Hopper"); + await app.keyboard.press("ctrl+b"); + await app.keyboard.press("enter"); + await app.waitFor("Tab: Activity"); + await app.keyboard.press("right"); + await app.keyboard.press("tab"); + await app.keyboard.press("enter"); + await app.waitFor("Storage: expanded"); + expect(app.texts()).toContain("54 GB"); + await app.keyboard.press("enter"); + await app.waitFor("Storage: collapsed"); + expect(app.texts()).not.toContain("Apps"); + await app.keyboard.press("tab"); + await app.keyboard.press("enter"); + await app.waitFor("Advanced: expanded"); + await app.keyboard.press("tab"); + await app.keyboard.press("enter"); + await app.waitFor("Keep originals: on"); + await app.keyboard.press("shift+tab"); + await app.keyboard.press("enter"); + await app.waitFor("Advanced: collapsed"); + await app.keyboard.press("enter"); + await app.waitFor("Edits are saved as copies"); + await app.keyboard.press("enter"); + await app.waitFor("Advanced: collapsed"); + + await app.keyboard.press("tab"); + await app.keyboard.press("enter"); + await app.waitFor("Upload: started"); + await app.wait(900); + expect(app.texts()).toContain("30%"); + await app.keyboard.press("enter"); + await app.waitFor("Upload: paused"); + expect(app.count("role:progressbar")).toBe(2); + await app.keyboard.press("tab"); // Reset + await app.keyboard.press("tab"); // Volume thumb + await app.keyboard.press("right"); + await app.waitFor("Volume: 65"); + await app.keyboard.press("pageup"); + await app.waitFor("Volume: 75"); + await app.keyboard.press("home"); + await app.waitFor("Volume: 0"); + await app.keyboard.press("end"); + await app.waitFor("Volume: 100"); + await app.keyboard.press("tab"); + await app.keyboard.press("end"); + await app.waitFor("Price: 400 to 400"); + await app.keyboard.press("tab"); + await app.keyboard.press("end"); + await app.waitFor("Price: 400 to 500"); + await app.keyboard.press("home"); + await app.waitFor("Price: 400 to 400"); + await app.keyboard.press("tab"); + await app.keyboard.press("enter"); + await app.waitFor("Volume: muted"); + expect(app.enabled("label:Volume")).toBe(false); + await app.keyboard.press("enter"); + await app.waitFor("Volume: unmuted"); + const picture = JSON.parse(new TextDecoder().decode(new Uint8Array(await app.screenshot()))); + expect(picture.format).toBe("nsh-tui-cells"); + expect(picture.rows.some((row: { symbol: string }[]) => row.map(cell => cell.symbol).join("").includes("100%"))).toBe(true); +}, 180_000); + +test("the official controls take mouse presses and preserve disabled and collapsed behavior", async () => { + const app = await open("./App.tsx", { width: 800, height: 640, clock: {} }); + await app.press("Notifications"); + await app.waitFor("Notifications: off"); + await expect(() => app.press("Badges")).rejects.toThrow("is disabled"); + await app.press("Select all"); + await app.waitFor("Select all: true"); + await app.press("Videos"); + await app.waitFor("Videos: false"); + await app.press("Team"); + await app.waitFor("Plan: Team"); + await expect(() => app.press("Enterprise")).rejects.toThrow("is disabled"); + await app.press("Continue with Team"); + await app.waitFor("Continue: Team, $12 / mo"); + await app.press("role:tab[Activity]"); + await app.waitFor("Deployed to production"); + await expect(() => app.press("Billing")).rejects.toThrow("is disabled"); + await app.press("role:button[/^Advanced/]"); + await app.waitFor("Advanced: expanded"); + await app.press("Keep originals"); + await app.waitFor("Keep originals: on"); + await app.press("role:button[/^Advanced/]"); + await app.waitFor("Advanced: collapsed"); + expect(app.texts()).not.toContain("Keep originals"); + await app.press("role:button[/^Advanced/]"); + await app.waitFor("Edits are saved as copies"); + await app.press("Send"); + await app.wait(3000); + await app.waitFor("Upload: done"); + await app.press("Reset"); + await app.waitFor("Upload: reset"); + expect(app.texts()).toContain("0%"); +}, 180_000); + +test("the official Volume slider follows a mouse drag to both ends", async () => { + const app = await open("./App.tsx", { width: 800, height: 640, clock: {} }); + await app.waitFor("Select all"); + // The drag starts on the slider's middle and goes past its start: the value is the track's first Cell. + await app.drag("label:Volume", { x: -2000, y: 0 }); + await app.waitFor("Volume: 0"); + // Past its end: the last Cell, the largest value. + await app.drag("label:Volume", { x: 2000, y: 0 }); + await app.waitFor("Volume: 100"); +}); diff --git a/third-party/nsh/crates/nsh-tui-host/tests/fixtures/controls/nsh.json b/third-party/nsh/crates/nsh-tui-host/tests/fixtures/controls/nsh.json new file mode 100644 index 00000000000..410e204035a --- /dev/null +++ b/third-party/nsh/crates/nsh-tui-host/tests/fixtures/controls/nsh.json @@ -0,0 +1,6 @@ +{ + "name": "Controls acceptance", + "id": "com.longbridge.nsh.tests.controls", + "version": "1.0.0", + "theme": "../../../../../examples/nsh-gallery-ui/theme.json" +} diff --git a/third-party/nsh/crates/nsh-tui-host/tests/fixtures/performance/DataTable.tsx b/third-party/nsh/crates/nsh-tui-host/tests/fixtures/performance/DataTable.tsx new file mode 100644 index 00000000000..46a4689943d --- /dev/null +++ b/third-party/nsh/crates/nsh-tui-host/tests/fixtures/performance/DataTable.tsx @@ -0,0 +1,12 @@ +import { mount } from "nsh"; +import { DataTable } from "nsh/base"; + +const columns = Array.from({ length: 24 }, (_, index) => ({ + key: `c${index}`, title: `Column ${index + 1}`, width: 128, +})); +const data = Array.from({ length: 10000 }, (_, row) => Object.fromEntries( + columns.map((column, index) => [column.key, `R${row + 1} C${index + 1}`]), +)); + +mount(() => ); diff --git a/third-party/nsh/crates/nsh-tui-host/tests/fixtures/performance/LongList.tsx b/third-party/nsh/crates/nsh-tui-host/tests/fixtures/performance/LongList.tsx new file mode 100644 index 00000000000..e22e59ff99d --- /dev/null +++ b/third-party/nsh/crates/nsh-tui-host/tests/fixtures/performance/LongList.tsx @@ -0,0 +1,54 @@ +import { mount, Scroll, signal, Text, View } from "nsh"; + +// Pin the former terminal gallery's 500-row workload and dark palette for comparable baselines. +const colors = { + text: "#e6e8ee", muted: "#9aa1b2", faint: "#5f6676", accent: "#7aa2f7", focus: "#262c3a", +}; + +const WORDS = ["alpha", "bravo", "charlie", "delta", "echo", "foxtrot", "golf", "hotel", "india", "juliet", "kilo", "lima"]; + +export function LongList() { + const items = Array.from({ length: 500 }, (_, i) => ({ + id: i + 1, + title: `${WORDS[i % WORDS.length]} ${WORDS[(i * 7) % WORDS.length]}`, + size: ((i * 7919) % 9000) + 120, + })); + const done = signal>(new Set()); + const toggle = (id: number) => + done.update((s) => { + const next = new Set(s); + if (next.has(id)) next.delete(id); + else next.add(id); + return next; + }); + return ( + <> + + 500 rows in one scroll view: wheel, ↑ ↓, PgUp / PgDn. Click a row to mark it ·{" "} + {done().size} marked + + + + {(item) => { + const it = item(); + const ticked = () => done().has(it.id); + return ( + toggle(it.id)} style={{ flexDirection: "row", height: 16, gap: 16 }}> + {String(it.id)} + {ticked() ? "*" : " "} + {it.title} + {(it.size / 100).toFixed(1)} KB + + ); + }} + + + + ); +} + +mount(() => ( + + + +)); diff --git a/third-party/nsh/crates/nsh-tui-host/tests/fixtures/pointer/App.tsx b/third-party/nsh/crates/nsh-tui-host/tests/fixtures/pointer/App.tsx new file mode 100644 index 00000000000..2325240e24b --- /dev/null +++ b/third-party/nsh/crates/nsh-tui-host/tests/fixtures/pointer/App.tsx @@ -0,0 +1 @@ +import "./Gestures"; diff --git a/third-party/nsh/crates/nsh-tui-host/tests/fixtures/pointer/Gestures.tsx b/third-party/nsh/crates/nsh-tui-host/tests/fixtures/pointer/Gestures.tsx new file mode 100644 index 00000000000..2ede297c8e2 --- /dev/null +++ b/third-party/nsh/crates/nsh-tui-host/tests/fixtures/pointer/Gestures.tsx @@ -0,0 +1,4 @@ +import { mount } from "nsh"; +import { Gestures } from "../../../../../examples/gallery/demos/Gestures"; + +mount(Gestures); diff --git a/third-party/nsh/crates/nsh-tui-host/tests/fixtures/pointer/Physics.tsx b/third-party/nsh/crates/nsh-tui-host/tests/fixtures/pointer/Physics.tsx new file mode 100644 index 00000000000..c15681bedea --- /dev/null +++ b/third-party/nsh/crates/nsh-tui-host/tests/fixtures/pointer/Physics.tsx @@ -0,0 +1,4 @@ +import { mount } from "nsh"; +import { Physics } from "../../../../../examples/gallery/demos/Physics"; + +mount(Physics); diff --git a/third-party/nsh/crates/nsh-tui-host/tests/fixtures/pointer/Pointer.test.tsx b/third-party/nsh/crates/nsh-tui-host/tests/fixtures/pointer/Pointer.test.tsx new file mode 100644 index 00000000000..c9ceac739e9 --- /dev/null +++ b/third-party/nsh/crates/nsh-tui-host/tests/fixtures/pointer/Pointer.test.tsx @@ -0,0 +1,33 @@ +import { expect, open, test } from "nsh/test"; + +const viewport = { width: 1200, height: 960 }; + +test("the unchanged Physics demo receives a native pan release", async () => { + const app = await open("./Physics.tsx", viewport); + await app.waitFor("label:Draggable card"); + const releases = () => app.texts()[app.texts().indexOf("Releases") + 1]; + expect(releases()).toBe("0"); + await app.drag("label:Draggable card", { x: 64, y: 32 }); + await app.waitUntil(() => releases() === "1"); +}); + +test("the unchanged Gestures demo receives both native pan and responder motion", async () => { + const app = await open("./Gestures.tsx", viewport); + await app.waitFor("id:photo"); + await app.drag("id:photo", { x: 64, y: 32 }); + await app.waitUntil(() => { + const texts = app.texts(); + return parseInt(texts[texts.indexOf("Drag") + 1]) >= 64; + }); + await app.drag("id:ball", { x: 64, y: 0 }); + await app.waitFor("64, 0"); +}); + +test("the unchanged Resizable demo resizes its sidebar on the Cell grid", async () => { + const app = await open("./Resizable.tsx", viewport); + await app.waitFor("Sidebar 220 pt"); + await app.drag("label:Resize the sidebar", { x: 64, y: 0 }); + await app.waitUntil(() => app.texts().some(text => + text.startsWith("Sidebar ") && Math.abs(parseFloat(text.slice(8)) - 284) <= 8)); + expect(app.texts().some(text => text.startsWith("Last resize: Row: "))).toBe(true); +}); diff --git a/third-party/nsh/crates/nsh-tui-host/tests/fixtures/pointer/Resizable.tsx b/third-party/nsh/crates/nsh-tui-host/tests/fixtures/pointer/Resizable.tsx new file mode 100644 index 00000000000..b2f3936436a --- /dev/null +++ b/third-party/nsh/crates/nsh-tui-host/tests/fixtures/pointer/Resizable.tsx @@ -0,0 +1,4 @@ +import { mount } from "nsh"; +import { Resizable } from "../../../../../examples/gallery/demos/Resizable"; + +mount(Resizable); diff --git a/third-party/nsh/crates/nsh-tui-host/tests/fixtures/pointer/nsh.json b/third-party/nsh/crates/nsh-tui-host/tests/fixtures/pointer/nsh.json new file mode 100644 index 00000000000..24ed3ae6fb5 --- /dev/null +++ b/third-party/nsh/crates/nsh-tui-host/tests/fixtures/pointer/nsh.json @@ -0,0 +1,6 @@ +{ + "name": "Terminal pointer acceptance", + "id": "com.longbridge.nsh.test.pointer", + "version": "1.0.0", + "theme": "../../../../../examples/nsh-gallery-ui/theme.json" +} diff --git a/third-party/nsh/crates/nsh-tui-host/tests/fixtures/search/App.tsx b/third-party/nsh/crates/nsh-tui-host/tests/fixtures/search/App.tsx new file mode 100644 index 00000000000..8fcff374aba --- /dev/null +++ b/third-party/nsh/crates/nsh-tui-host/tests/fixtures/search/App.tsx @@ -0,0 +1,16 @@ +import { mount, Scroll, signal, Text, View } from "nsh"; + +function App() { + const focused = signal("none"), pressed = signal("none"); + const rows = Array.from({ length: 20 }, (_, index) => String(index)); + // The status names rows by number: it is text on screen too, so it must not match the test's query. + return + focus:{focused()} pressed:{pressed()} + + {rows.map((row) => focused.set(row)} onPress={() => pressed.set(row)}>{`row${row}`})} + + footer + ; +} +mount(App); diff --git a/third-party/nsh/crates/nsh-tui-host/tests/fixtures/search/search.test.tsx b/third-party/nsh/crates/nsh-tui-host/tests/fixtures/search/search.test.tsx new file mode 100644 index 00000000000..ca24355c782 --- /dev/null +++ b/third-party/nsh/crates/nsh-tui-host/tests/fixtures/search/search.test.tsx @@ -0,0 +1,26 @@ +import { expect, open, test } from "nsh/test"; +import type { App } from "nsh/test"; + +async function shownRows(app: App): Promise { + const picture = JSON.parse(new TextDecoder().decode(new Uint8Array(await app.screenshot()))); + return picture.rows.map((row: { symbol: string }[]) => row.map(cell => cell.symbol).join("").trimEnd()); +} + +test("C-s and C-r search the screen in the Minibuffer, which Enter removes at the match", async () => { + const app = await open("./App.tsx", { width: 320, height: 160 }); + await app.waitFor("focus:none pressed:none"); + expect((await shownRows(app))[9]).toBe("footer"); + await app.keyboard.press("ctrl+s"); + for (const key of "row1") await app.keyboard.press(key); + await app.waitFor("focus:1 pressed:none"); + expect((await shownRows(app))[9]).toBe("/row1"); + await app.keyboard.press("ctrl+s"); + await app.waitFor("focus:10 pressed:none"); + expect((await shownRows(app)).slice(1, 5)).toContain("row10"); + await app.keyboard.press("ctrl+r"); + await app.waitFor("focus:1 pressed:none"); + await app.keyboard.press("enter"); + expect((await shownRows(app))[9]).toBe("footer"); + await app.keyboard.press("enter"); + await app.waitFor("focus:1 pressed:1"); +}); diff --git a/third-party/nsh/crates/nsh-tui-host/tests/fixtures/text-input/App.tsx b/third-party/nsh/crates/nsh-tui-host/tests/fixtures/text-input/App.tsx new file mode 100644 index 00000000000..98596f1f4ff --- /dev/null +++ b/third-party/nsh/crates/nsh-tui-host/tests/fixtures/text-input/App.tsx @@ -0,0 +1,21 @@ +import { mount, signal, Text, View } from "nsh"; +import { Input } from "nsh/base"; + +function App() { + const value = signal(""), changes = signal(0), selection = signal("0:0"); + const status = signal("idle"), submitted = signal("no"); + return + { value.set(text); changes.set(changes() + 1); }} + onSelectionChange={(range) => selection.set(`${range.start}:${range.end}`)} + onFocus={() => status.set("editing")} onBlur={() => status.set("idle")} + onSubmit={() => submitted.set(value())} /> + + + status.set(`paste:${e.text}`)} style={{ width: 240, height: 16 }} /> + value:{value().slice(0, 40)} + changes:{changes()} selection:{selection()} + status:{status()} submit:{submitted()} + ; +} +mount(App); diff --git a/third-party/nsh/crates/nsh-tui-host/tests/fixtures/text-input/Form.tsx b/third-party/nsh/crates/nsh-tui-host/tests/fixtures/text-input/Form.tsx new file mode 100644 index 00000000000..440e474cb0e --- /dev/null +++ b/third-party/nsh/crates/nsh-tui-host/tests/fixtures/text-input/Form.tsx @@ -0,0 +1,97 @@ +import { type JSX, mount, signal, Text, View } from "nsh"; +import { Input } from "nsh/base"; + +const TEXT = "#e6e8ee"; +const MUTED = "#9aa1b2"; +const FAINT = "#5f6676"; +const ACCENT = "#7aa2f7"; +const DOWN = "#f85149"; +const UP = "#3fb950"; + +function Button(props: { label: string; onPress: () => void }) { + return ( + + {`[ ${props.label} ]`} + + ); +} + +/** A one-row field between brackets, `[ text ]`, its error on the row below. */ +function TextField(props: { value: string; onChange: (v: string) => void; placeholder: string; error?: string; masked?: boolean }) { + const bracket = () => (props.error ? DOWN : FAINT); + return ( + + + [ + + ] + + + ✗ {props.error} + + + ); +} + +function Field(props: { label: string; children: JSX.Element }) { + return ( + + {props.label} + {props.children} + + ); +} + +/** A sign-up form: three validated fields, a checkbox, and the account it creates. */ +function Form() { + const name = signal(""); + const email = signal(""); + const password = signal(""); + const subscribe = signal(true); + const tried = signal(false); + const sent = signal(null); + const errors = () => ({ + name: name().trim() ? undefined : "Enter your name", + email: /^\S+@\S+\.\S+$/.test(email()) ? undefined : "Enter an email like ada@example.com", + password: password().length >= 6 ? undefined : "At least 6 characters", + }); + const shown = (key: "name" | "email" | "password") => (tried() ? errors()[key] : undefined); + const submit = () => { + tried.set(true); + const e = errors(); + if (!e.name && !e.email && !e.password) sent.set(`${name()} <${email()}>${subscribe() ? ", subscribed" : ""}`); + }; + return ( + + + name.set(v)} placeholder="Ada Lovelace" error={shown("name")} /> + + + email.set(v)} placeholder="ada@example.com" error={shown("email")} /> + + + password.set(v)} placeholder="6 characters or more" error={shown("password")} masked /> + + + subscribe.set(!subscribe())} role="checkbox" style={{ flexDirection: "row", gap: 8 }}> + {subscribe() ? "[x]" : "[ ]"} + Send me the monthly notes + + + +