@deepseek-harness-tui/dsh-tui 0.11.1 → 0.11.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +50 -20
- package/assets/whale-girl/whale-girl-dark.png +0 -0
- package/assets/whale-girl/whale-girl-happy.png +0 -0
- package/assets/whale-girl/whale-girl.png +0 -0
- package/bin/dsh-tui.js +63 -3
- package/cordis.patch.yml +39 -17
- package/cordis.yml +3 -2
- package/lib/settings.json +1272 -0
- package/lib/types/adapter/channel/ui-policy.d.ts +9 -2
- package/lib/types/adapter/channel/ui-policy.d.ts.map +1 -1
- package/lib/types/adapter/channel/ui-policy.js +13 -0
- package/lib/types/adapter/kernel/replay.d.ts.map +1 -1
- package/lib/types/adapter/kernel/replay.js +2 -0
- package/lib/types/adapter/ports/channel-display.d.ts +12 -0
- package/lib/types/adapter/ports/channel-display.d.ts.map +1 -1
- package/lib/types/adapter/ports/channel-session.d.ts +38 -0
- package/lib/types/adapter/ports/channel-session.d.ts.map +1 -1
- package/lib/types/adapter/ports/channel-settings.d.ts +12 -0
- package/lib/types/adapter/ports/channel-settings.d.ts.map +1 -1
- package/lib/types/adapter/ports/channel-ui.d.ts +46 -4
- package/lib/types/adapter/ports/channel-ui.d.ts.map +1 -1
- package/lib/types/adapter/ports/channel-view.d.ts +43 -0
- package/lib/types/adapter/ports/channel-view.d.ts.map +1 -1
- package/lib/types/commands.d.ts.map +1 -1
- package/lib/types/commands.js +2 -0
- package/lib/types/components/BalanceReportRow.d.ts +10 -2
- package/lib/types/components/BalanceReportRow.d.ts.map +1 -1
- package/lib/types/components/BalanceReportRow.js +18 -4
- package/lib/types/components/CompactionStatusRow.d.ts +24 -0
- package/lib/types/components/CompactionStatusRow.d.ts.map +1 -0
- package/lib/types/components/CompactionStatusRow.js +72 -0
- package/lib/types/components/GoalTodoPanel.js +2 -2
- package/lib/types/components/HelpMenu.d.ts +2 -2
- package/lib/types/components/HelpMenu.d.ts.map +1 -1
- package/lib/types/components/HelpMenu.js +5 -4
- package/lib/types/components/InlineMathParagraph.d.ts +22 -0
- package/lib/types/components/InlineMathParagraph.d.ts.map +1 -0
- package/lib/types/components/InlineMathParagraph.js +178 -0
- package/lib/types/components/LogoV2.d.ts +41 -3
- package/lib/types/components/LogoV2.d.ts.map +1 -1
- package/lib/types/components/LogoV2.js +148 -24
- package/lib/types/components/Markdown.d.ts +10 -3
- package/lib/types/components/Markdown.d.ts.map +1 -1
- package/lib/types/components/Markdown.js +47 -14
- package/lib/types/components/MathBlock.d.ts +13 -0
- package/lib/types/components/MathBlock.d.ts.map +1 -0
- package/lib/types/components/MathBlock.js +136 -0
- package/lib/types/components/MessageList.d.ts +10 -1
- package/lib/types/components/MessageList.d.ts.map +1 -1
- package/lib/types/components/MessageList.js +13 -4
- package/lib/types/components/MigratePicker.d.ts +30 -0
- package/lib/types/components/MigratePicker.d.ts.map +1 -0
- package/lib/types/components/MigratePicker.js +38 -0
- package/lib/types/components/PromptInput.d.ts +17 -0
- package/lib/types/components/PromptInput.d.ts.map +1 -1
- package/lib/types/components/PromptInput.js +48 -7
- package/lib/types/components/SplitDiffView.d.ts.map +1 -1
- package/lib/types/components/SplitDiffView.js +2 -1
- package/lib/types/components/StarPrompt.d.ts +53 -0
- package/lib/types/components/StarPrompt.d.ts.map +1 -0
- package/lib/types/components/StarPrompt.js +281 -0
- package/lib/types/components/StreamingMarkdown.d.ts.map +1 -1
- package/lib/types/components/StreamingMarkdown.js +20 -3
- package/lib/types/components/TimelineRail.d.ts.map +1 -1
- package/lib/types/components/TimelineRail.js +9 -1
- package/lib/types/components/Whale.d.ts +17 -8
- package/lib/types/components/Whale.d.ts.map +1 -1
- package/lib/types/components/Whale.js +25 -15
- package/lib/types/components/WhaleGirl.d.ts +29 -0
- package/lib/types/components/WhaleGirl.d.ts.map +1 -0
- package/lib/types/components/WhaleGirl.js +32 -0
- package/lib/types/components/WorkingSpinner.d.ts +4 -1
- package/lib/types/components/WorkingSpinner.d.ts.map +1 -1
- package/lib/types/components/WorkingSpinner.js +2 -2
- package/lib/types/components/bigfont.d.ts +47 -18
- package/lib/types/components/bigfont.d.ts.map +1 -1
- package/lib/types/components/bigfont.js +55 -40
- package/lib/types/components/design-system/ThemeProvider.d.ts +6 -0
- package/lib/types/components/design-system/ThemeProvider.d.ts.map +1 -1
- package/lib/types/components/design-system/ThemeProvider.js +40 -1
- package/lib/types/components/maidPortrait.d.ts +44 -0
- package/lib/types/components/maidPortrait.d.ts.map +1 -0
- package/lib/types/components/maidPortrait.js +178 -0
- package/lib/types/components/mathPreview.d.ts +25 -0
- package/lib/types/components/mathPreview.d.ts.map +1 -0
- package/lib/types/components/mathPreview.js +48 -0
- package/lib/types/components/messages/AssistantThinkingMessage.d.ts.map +1 -1
- package/lib/types/components/messages/AssistantThinkingMessage.js +2 -1
- package/lib/types/components/messages/AssistantToolUseMessage.d.ts.map +1 -1
- package/lib/types/components/messages/AssistantToolUseMessage.js +3 -2
- package/lib/types/components/messages/TranscriptImages.d.ts.map +1 -1
- package/lib/types/components/messages/TranscriptImages.js +11 -1
- package/lib/types/components/questions/AskUserQuestionPanel.d.ts +14 -2
- package/lib/types/components/questions/AskUserQuestionPanel.d.ts.map +1 -1
- package/lib/types/components/questions/AskUserQuestionPanel.js +80 -38
- package/lib/types/components/questions/PlanReviewPanel.d.ts.map +1 -1
- package/lib/types/components/questions/PlanReviewPanel.js +3 -3
- package/lib/types/components/sessions/ForeignSessionRow.d.ts +34 -0
- package/lib/types/components/sessions/ForeignSessionRow.d.ts.map +1 -0
- package/lib/types/components/sessions/ForeignSessionRow.js +43 -0
- package/lib/types/components/sessions/SourceTabs.d.ts +52 -0
- package/lib/types/components/sessions/SourceTabs.d.ts.map +1 -0
- package/lib/types/components/sessions/SourceTabs.js +70 -0
- package/lib/types/components/splashEggs.d.ts +56 -0
- package/lib/types/components/splashEggs.d.ts.map +1 -0
- package/lib/types/components/splashEggs.js +67 -0
- package/lib/types/components/splashFonts.d.ts +119 -0
- package/lib/types/components/splashFonts.d.ts.map +1 -0
- package/lib/types/components/splashFonts.js +267 -0
- package/lib/types/components/splashLayout.d.ts +41 -0
- package/lib/types/components/splashLayout.d.ts.map +1 -0
- package/lib/types/components/splashLayout.js +40 -0
- package/lib/types/components/whaleGirlSprite.d.ts +17 -0
- package/lib/types/components/whaleGirlSprite.d.ts.map +1 -0
- package/lib/types/components/whaleGirlSprite.js +47 -0
- package/lib/types/deepseekPricing.d.ts +74 -0
- package/lib/types/deepseekPricing.d.ts.map +1 -1
- package/lib/types/deepseekPricing.js +110 -11
- package/lib/types/dsh-adapter/channel/action-readiness.d.ts +1 -1
- package/lib/types/dsh-adapter/channel/action-readiness.d.ts.map +1 -1
- package/lib/types/dsh-adapter/channel/action-readiness.js +6 -1
- package/lib/types/dsh-adapter/channel/background-action.d.ts +1 -0
- package/lib/types/dsh-adapter/channel/background-action.d.ts.map +1 -1
- package/lib/types/dsh-adapter/channel/background-action.js +1 -0
- package/lib/types/dsh-adapter/channel/binding-events.d.ts +8 -9
- package/lib/types/dsh-adapter/channel/binding-events.d.ts.map +1 -1
- package/lib/types/dsh-adapter/channel/binding-events.js +69 -21
- package/lib/types/dsh-adapter/channel/compaction.d.ts +2 -1
- package/lib/types/dsh-adapter/channel/compaction.d.ts.map +1 -1
- package/lib/types/dsh-adapter/channel/compaction.js +35 -2
- package/lib/types/dsh-adapter/channel/local-actions.d.ts.map +1 -1
- package/lib/types/dsh-adapter/channel/local-actions.js +6 -1
- package/lib/types/dsh-adapter/channel/model-switch.d.ts.map +1 -1
- package/lib/types/dsh-adapter/channel/model-switch.js +5 -1
- package/lib/types/dsh-adapter/channel/paths.d.ts.map +1 -1
- package/lib/types/dsh-adapter/channel/paths.js +7 -1
- package/lib/types/dsh-adapter/channel/preferences.d.ts +1 -1
- package/lib/types/dsh-adapter/channel/preferences.d.ts.map +1 -1
- package/lib/types/dsh-adapter/channel/preferences.js +16 -0
- package/lib/types/dsh-adapter/channel/projection.d.ts +1 -2
- package/lib/types/dsh-adapter/channel/projection.d.ts.map +1 -1
- package/lib/types/dsh-adapter/channel/projection.js +127 -17
- package/lib/types/dsh-adapter/channel/question-record.d.ts +76 -0
- package/lib/types/dsh-adapter/channel/question-record.d.ts.map +1 -0
- package/lib/types/dsh-adapter/channel/question-record.js +107 -0
- package/lib/types/dsh-adapter/channel/session-lineage.d.ts +42 -0
- package/lib/types/dsh-adapter/channel/session-lineage.d.ts.map +1 -0
- package/lib/types/dsh-adapter/channel/session-lineage.js +51 -0
- package/lib/types/dsh-adapter/channel/session-live-adoption.d.ts +2 -0
- package/lib/types/dsh-adapter/channel/session-live-adoption.d.ts.map +1 -1
- package/lib/types/dsh-adapter/channel/session-live-adoption.js +9 -3
- package/lib/types/dsh-adapter/channel/session-metadata.d.ts +2 -1
- package/lib/types/dsh-adapter/channel/session-metadata.d.ts.map +1 -1
- package/lib/types/dsh-adapter/channel/session-metadata.js +39 -7
- package/lib/types/dsh-adapter/channel/session-reset.d.ts +1 -1
- package/lib/types/dsh-adapter/channel/session-reset.d.ts.map +1 -1
- package/lib/types/dsh-adapter/channel/session-reset.js +7 -0
- package/lib/types/dsh-adapter/channel/session-resume.d.ts +1 -0
- package/lib/types/dsh-adapter/channel/session-resume.d.ts.map +1 -1
- package/lib/types/dsh-adapter/channel/session-resume.js +4 -2
- package/lib/types/dsh-adapter/channel/settings-host.d.ts.map +1 -1
- package/lib/types/dsh-adapter/channel/settings-host.js +8 -0
- package/lib/types/dsh-adapter/channel/state.d.ts +14 -1
- package/lib/types/dsh-adapter/channel/state.d.ts.map +1 -1
- package/lib/types/dsh-adapter/channel/state.js +6 -1
- package/lib/types/dsh-adapter/channel/subagent-projection.d.ts +30 -35
- package/lib/types/dsh-adapter/channel/subagent-projection.d.ts.map +1 -1
- package/lib/types/dsh-adapter/channel/subagent-projection.js +138 -4
- package/lib/types/dsh-adapter/channel/types.d.ts +1 -1
- package/lib/types/dsh-adapter/channel/types.d.ts.map +1 -1
- package/lib/types/dsh-adapter/channel.d.ts.map +1 -1
- package/lib/types/dsh-adapter/channel.js +19 -4
- package/lib/types/dsh-adapter/compat/messages.d.ts +6 -0
- package/lib/types/dsh-adapter/compat/messages.d.ts.map +1 -1
- package/lib/types/dsh-adapter/compat/messages.js +9 -0
- package/lib/types/dsh-adapter/contract.d.ts +5 -5
- package/lib/types/dsh-adapter/contract.d.ts.map +1 -1
- package/lib/types/dsh-adapter/contract.js +8 -6
- package/lib/types/dsh-adapter/index.d.ts +36 -1
- package/lib/types/dsh-adapter/index.d.ts.map +1 -1
- package/lib/types/dsh-adapter/index.js +22 -6
- package/lib/types/dsh-adapter/migrate/adapters/claude-code.d.ts +3 -0
- package/lib/types/dsh-adapter/migrate/adapters/claude-code.d.ts.map +1 -0
- package/lib/types/dsh-adapter/migrate/adapters/claude-code.js +131 -0
- package/lib/types/dsh-adapter/migrate/adapters/claude-code.parse.d.ts +17 -0
- package/lib/types/dsh-adapter/migrate/adapters/claude-code.parse.d.ts.map +1 -0
- package/lib/types/dsh-adapter/migrate/adapters/claude-code.parse.js +329 -0
- package/lib/types/dsh-adapter/migrate/adapters/codex.d.ts +3 -0
- package/lib/types/dsh-adapter/migrate/adapters/codex.d.ts.map +1 -0
- package/lib/types/dsh-adapter/migrate/adapters/codex.js +102 -0
- package/lib/types/dsh-adapter/migrate/adapters/codex.parse.d.ts +16 -0
- package/lib/types/dsh-adapter/migrate/adapters/codex.parse.d.ts.map +1 -0
- package/lib/types/dsh-adapter/migrate/adapters/codex.parse.js +289 -0
- package/lib/types/dsh-adapter/migrate/adapters/grok-build.d.ts +3 -0
- package/lib/types/dsh-adapter/migrate/adapters/grok-build.d.ts.map +1 -0
- package/lib/types/dsh-adapter/migrate/adapters/grok-build.js +117 -0
- package/lib/types/dsh-adapter/migrate/adapters/grok-build.parse.d.ts +13 -0
- package/lib/types/dsh-adapter/migrate/adapters/grok-build.parse.d.ts.map +1 -0
- package/lib/types/dsh-adapter/migrate/adapters/grok-build.parse.js +178 -0
- package/lib/types/dsh-adapter/migrate/adapters/omp.d.ts +3 -0
- package/lib/types/dsh-adapter/migrate/adapters/omp.d.ts.map +1 -0
- package/lib/types/dsh-adapter/migrate/adapters/omp.js +133 -0
- package/lib/types/dsh-adapter/migrate/adapters/scan-fs.d.ts +60 -0
- package/lib/types/dsh-adapter/migrate/adapters/scan-fs.d.ts.map +1 -0
- package/lib/types/dsh-adapter/migrate/adapters/scan-fs.js +178 -0
- package/lib/types/dsh-adapter/migrate/adapters/scan.d.ts +8 -0
- package/lib/types/dsh-adapter/migrate/adapters/scan.d.ts.map +1 -0
- package/lib/types/dsh-adapter/migrate/adapters/scan.js +40 -0
- package/lib/types/dsh-adapter/migrate/adapters/zcode.d.ts +3 -0
- package/lib/types/dsh-adapter/migrate/adapters/zcode.d.ts.map +1 -0
- package/lib/types/dsh-adapter/migrate/adapters/zcode.js +93 -0
- package/lib/types/dsh-adapter/migrate/adapters/zcode.parse.d.ts +9 -0
- package/lib/types/dsh-adapter/migrate/adapters/zcode.parse.d.ts.map +1 -0
- package/lib/types/dsh-adapter/migrate/adapters/zcode.parse.js +89 -0
- package/lib/types/dsh-adapter/migrate/bin-path.d.ts +6 -0
- package/lib/types/dsh-adapter/migrate/bin-path.d.ts.map +1 -0
- package/lib/types/dsh-adapter/migrate/bin-path.js +30 -0
- package/lib/types/dsh-adapter/migrate/browse.d.ts +42 -0
- package/lib/types/dsh-adapter/migrate/browse.d.ts.map +1 -0
- package/lib/types/dsh-adapter/migrate/browse.js +90 -0
- package/lib/types/dsh-adapter/migrate/cli.d.ts +9 -0
- package/lib/types/dsh-adapter/migrate/cli.d.ts.map +1 -0
- package/lib/types/dsh-adapter/migrate/cli.js +106 -0
- package/lib/types/dsh-adapter/migrate/import-one.d.ts +89 -0
- package/lib/types/dsh-adapter/migrate/import-one.d.ts.map +1 -0
- package/lib/types/dsh-adapter/migrate/import-one.js +133 -0
- package/lib/types/dsh-adapter/migrate/index.d.ts +35 -0
- package/lib/types/dsh-adapter/migrate/index.d.ts.map +1 -0
- package/lib/types/dsh-adapter/migrate/index.js +107 -0
- package/lib/types/dsh-adapter/migrate/parse/injection.d.ts +40 -0
- package/lib/types/dsh-adapter/migrate/parse/injection.d.ts.map +1 -0
- package/lib/types/dsh-adapter/migrate/parse/injection.js +127 -0
- package/lib/types/dsh-adapter/migrate/parse/jsonl.d.ts +28 -0
- package/lib/types/dsh-adapter/migrate/parse/jsonl.d.ts.map +1 -0
- package/lib/types/dsh-adapter/migrate/parse/jsonl.js +40 -0
- package/lib/types/dsh-adapter/migrate/parse/role-turns.d.ts +28 -0
- package/lib/types/dsh-adapter/migrate/parse/role-turns.d.ts.map +1 -0
- package/lib/types/dsh-adapter/migrate/parse/role-turns.js +50 -0
- package/lib/types/dsh-adapter/migrate/parse/title.d.ts +18 -0
- package/lib/types/dsh-adapter/migrate/parse/title.d.ts.map +1 -0
- package/lib/types/dsh-adapter/migrate/parse/title.js +29 -0
- package/lib/types/dsh-adapter/migrate/parse/tools.d.ts +62 -0
- package/lib/types/dsh-adapter/migrate/parse/tools.d.ts.map +1 -0
- package/lib/types/dsh-adapter/migrate/parse/tools.js +110 -0
- package/lib/types/dsh-adapter/migrate/picker.d.ts +64 -0
- package/lib/types/dsh-adapter/migrate/picker.d.ts.map +1 -0
- package/lib/types/dsh-adapter/migrate/picker.js +86 -0
- package/lib/types/dsh-adapter/migrate/recent-agents.d.ts +40 -0
- package/lib/types/dsh-adapter/migrate/recent-agents.d.ts.map +1 -0
- package/lib/types/dsh-adapter/migrate/recent-agents.js +100 -0
- package/lib/types/dsh-adapter/migrate/sessionize.d.ts +39 -0
- package/lib/types/dsh-adapter/migrate/sessionize.d.ts.map +1 -0
- package/lib/types/dsh-adapter/migrate/sessionize.js +271 -0
- package/lib/types/dsh-adapter/migrate/types.d.ts +176 -0
- package/lib/types/dsh-adapter/migrate/types.d.ts.map +1 -0
- package/lib/types/dsh-adapter/migrate/types.js +11 -0
- package/lib/types/dsh-adapter/migrate/uuid.d.ts +7 -0
- package/lib/types/dsh-adapter/migrate/uuid.d.ts.map +1 -0
- package/lib/types/dsh-adapter/migrate/uuid.js +25 -0
- package/lib/types/dsh-adapter/plugin.d.ts +4 -2
- package/lib/types/dsh-adapter/plugin.d.ts.map +1 -1
- package/lib/types/dsh-adapter/plugin.js +143 -364
- package/lib/types/dsh-adapter/providerWizard.d.ts +17 -0
- package/lib/types/dsh-adapter/providerWizard.d.ts.map +1 -1
- package/lib/types/dsh-adapter/providerWizard.js +254 -66
- package/lib/types/dsh-adapter/questions.d.ts +22 -15
- package/lib/types/dsh-adapter/questions.d.ts.map +1 -1
- package/lib/types/dsh-adapter/questions.js +47 -45
- package/lib/types/dsh-adapter/sessions/digest.d.ts +11 -6
- package/lib/types/dsh-adapter/sessions/digest.d.ts.map +1 -1
- package/lib/types/dsh-adapter/sessions/digest.js +20 -13
- package/lib/types/dsh-adapter/sessions/frames.d.ts +3 -1
- package/lib/types/dsh-adapter/sessions/frames.d.ts.map +1 -1
- package/lib/types/dsh-adapter/sessions/frames.js +5 -4
- package/lib/types/dsh-adapter/sessions/list.d.ts +6 -1
- package/lib/types/dsh-adapter/sessions/list.d.ts.map +1 -1
- package/lib/types/dsh-adapter/sessions/list.js +188 -164
- package/lib/types/dsh-adapter/sessions/recovery.d.ts +16 -0
- package/lib/types/dsh-adapter/sessions/recovery.d.ts.map +1 -0
- package/lib/types/dsh-adapter/sessions/recovery.js +108 -0
- package/lib/types/dsh-adapter/sessions/snapshot.d.ts +7 -0
- package/lib/types/dsh-adapter/sessions/snapshot.d.ts.map +1 -0
- package/lib/types/dsh-adapter/sessions/snapshot.js +90 -0
- package/lib/types/dsh-adapter/sessions/store.d.ts +10 -4
- package/lib/types/dsh-adapter/sessions/store.d.ts.map +1 -1
- package/lib/types/dsh-adapter/sessions/store.js +62 -25
- package/lib/types/dsh-adapter/sideQuestion.d.ts +41 -2
- package/lib/types/dsh-adapter/sideQuestion.d.ts.map +1 -1
- package/lib/types/dsh-adapter/sideQuestion.js +98 -2
- package/lib/types/dsh-adapter/subagents.d.ts +28 -3
- package/lib/types/dsh-adapter/subagents.d.ts.map +1 -1
- package/lib/types/dsh-adapter/subagents.js +77 -2
- package/lib/types/herdr.d.ts +2 -0
- package/lib/types/herdr.d.ts.map +1 -1
- package/lib/types/herdr.js +9 -3
- package/lib/types/i18n.d.ts +424 -42
- package/lib/types/i18n.d.ts.map +1 -1
- package/lib/types/i18n.js +145 -20
- package/lib/types/ink/components/App.d.ts +2 -2
- package/lib/types/ink/components/App.d.ts.map +1 -1
- package/lib/types/ink/components/App.js +5 -1
- package/lib/types/ink/components/Image.d.ts +14 -1
- package/lib/types/ink/components/Image.d.ts.map +1 -1
- package/lib/types/ink/components/Image.js +2 -2
- package/lib/types/ink/events/input-event.js +3 -3
- package/lib/types/ink/hooks/use-terminal-images.d.ts +12 -0
- package/lib/types/ink/hooks/use-terminal-images.d.ts.map +1 -1
- package/lib/types/ink/hooks/use-terminal-images.js +13 -0
- package/lib/types/ink/ink.d.ts +6 -0
- package/lib/types/ink/ink.d.ts.map +1 -1
- package/lib/types/ink/ink.js +16 -1
- package/lib/types/ink/kitty-graphics.d.ts +44 -3
- package/lib/types/ink/kitty-graphics.d.ts.map +1 -1
- package/lib/types/ink/kitty-graphics.js +184 -23
- package/lib/types/ink/output.d.ts +24 -2
- package/lib/types/ink/output.d.ts.map +1 -1
- package/lib/types/ink/output.js +83 -5
- package/lib/types/ink/parse-keypress.d.ts +26 -1
- package/lib/types/ink/parse-keypress.d.ts.map +1 -1
- package/lib/types/ink/parse-keypress.js +156 -13
- package/lib/types/ink/render-node-to-output.d.ts.map +1 -1
- package/lib/types/ink/render-node-to-output.js +8 -1
- package/lib/types/ink/screen.d.ts +24 -0
- package/lib/types/ink/screen.d.ts.map +1 -1
- package/lib/types/ink/screen.js +89 -0
- package/lib/types/ink/selection.d.ts +40 -18
- package/lib/types/ink/selection.d.ts.map +1 -1
- package/lib/types/ink/selection.js +142 -30
- package/lib/types/ink/sixel-codec.d.ts +12 -1
- package/lib/types/ink/sixel-codec.d.ts.map +1 -1
- package/lib/types/ink/sixel-codec.js +29 -5
- package/lib/types/ink/sixel-graphics.d.ts.map +1 -1
- package/lib/types/ink/sixel-graphics.js +5 -3
- package/lib/types/ink/styles.d.ts +9 -0
- package/lib/types/ink/styles.d.ts.map +1 -1
- package/lib/types/ink/terminal-image.d.ts +8 -0
- package/lib/types/ink/terminal-image.d.ts.map +1 -1
- package/lib/types/ink/terminal-querier.d.ts +7 -1
- package/lib/types/ink/terminal-querier.d.ts.map +1 -1
- package/lib/types/ink/terminal-querier.js +12 -2
- package/lib/types/ink/timeline-rail.d.ts +5 -0
- package/lib/types/ink/timeline-rail.d.ts.map +1 -1
- package/lib/types/math/inline-layout.d.ts +29 -0
- package/lib/types/math/inline-layout.d.ts.map +1 -0
- package/lib/types/math/inline-layout.js +106 -0
- package/lib/types/math/layout.d.ts +58 -0
- package/lib/types/math/layout.d.ts.map +1 -0
- package/lib/types/math/layout.js +59 -0
- package/lib/types/math/renderer.d.ts +64 -0
- package/lib/types/math/renderer.d.ts.map +1 -0
- package/lib/types/math/renderer.js +256 -0
- package/lib/types/screens/Chat.d.ts +14 -1
- package/lib/types/screens/Chat.d.ts.map +1 -1
- package/lib/types/screens/Chat.js +606 -53
- package/lib/types/screens/SessionSupervisor.d.ts +2 -1
- package/lib/types/screens/SessionSupervisor.d.ts.map +1 -1
- package/lib/types/screens/SessionSupervisor.js +156 -19
- package/lib/types/screens/Settings.d.ts.map +1 -1
- package/lib/types/screens/Settings.js +49 -11
- package/lib/types/screens/StatusLine.d.ts.map +1 -1
- package/lib/types/screens/StatusLine.js +45 -15
- package/lib/types/screens/chatOverlay.d.ts +5 -0
- package/lib/types/screens/chatOverlay.d.ts.map +1 -1
- package/lib/types/screens/chatOverlay.js +1 -0
- package/lib/types/screens/sessionSupervisor/ForeignSessionPanes.d.ts +47 -0
- package/lib/types/screens/sessionSupervisor/ForeignSessionPanes.d.ts.map +1 -0
- package/lib/types/screens/sessionSupervisor/ForeignSessionPanes.js +65 -0
- package/lib/types/screens/sessionSupervisor/model.d.ts +12 -0
- package/lib/types/screens/sessionSupervisor/model.d.ts.map +1 -1
- package/lib/types/screens/sessionSupervisor/model.js +26 -0
- package/lib/types/screens/sessionSupervisor/useForeignSessions.d.ts +107 -0
- package/lib/types/screens/sessionSupervisor/useForeignSessions.d.ts.map +1 -0
- package/lib/types/screens/sessionSupervisor/useForeignSessions.js +312 -0
- package/lib/types/screens/sessionSupervisor/useSessionSupervisor.d.ts +4 -1
- package/lib/types/screens/sessionSupervisor/useSessionSupervisor.d.ts.map +1 -1
- package/lib/types/screens/sessionSupervisor/useSessionSupervisor.js +97 -14
- package/lib/types/sessionHistory.d.ts +2 -2
- package/lib/types/sessionHistory.d.ts.map +1 -1
- package/lib/types/sessionHistory.js +31 -5
- package/lib/types/settings/definitions.d.ts +681 -0
- package/lib/types/settings/definitions.d.ts.map +1 -0
- package/lib/types/settings/definitions.js +511 -0
- package/lib/types/starAction.d.ts +44 -0
- package/lib/types/starAction.d.ts.map +1 -0
- package/lib/types/starAction.js +52 -0
- package/lib/types/terminal-utils/latex.d.ts +10 -0
- package/lib/types/terminal-utils/latex.d.ts.map +1 -0
- package/lib/types/terminal-utils/latex.js +1417 -0
- package/lib/types/terminal-utils/markdown.d.ts +3 -1
- package/lib/types/terminal-utils/markdown.d.ts.map +1 -1
- package/lib/types/terminal-utils/markdown.js +26 -1
- package/lib/types/terminal-utils/math.d.ts +66 -0
- package/lib/types/terminal-utils/math.d.ts.map +1 -0
- package/lib/types/terminal-utils/math.js +337 -0
- package/lib/types/tips.d.ts.map +1 -1
- package/lib/types/tips.js +6 -0
- package/lib/types/tuiDisplayPrefs.d.ts +67 -0
- package/lib/types/tuiDisplayPrefs.d.ts.map +1 -1
- package/lib/types/tuiDisplayPrefs.js +59 -0
- package/lib/types/ui.d.ts +1 -1
- package/lib/types/ui.d.ts.map +1 -1
- package/lib/types/ui.js +1 -1
- package/lib/types/usageStats.d.ts +98 -0
- package/lib/types/usageStats.d.ts.map +1 -0
- package/lib/types/usageStats.js +169 -0
- package/lib/types/utils/bmp.d.ts +17 -0
- package/lib/types/utils/bmp.d.ts.map +1 -0
- package/lib/types/utils/bmp.js +154 -0
- package/lib/types/utils/clipboard.d.ts +14 -2
- package/lib/types/utils/clipboard.d.ts.map +1 -1
- package/lib/types/utils/clipboard.js +143 -8
- package/lib/types/utils/fold-long-lines.d.ts.map +1 -1
- package/lib/types/utils/fold-long-lines.js +2 -1
- package/lib/types/utils/keymap.d.ts +4 -1
- package/lib/types/utils/keymap.d.ts.map +1 -1
- package/lib/types/utils/keymap.js +8 -0
- package/lib/types/utils/modifiers.d.ts +4 -3
- package/lib/types/utils/modifiers.d.ts.map +1 -1
- package/lib/types/utils/modifiers.js +4 -3
- package/node_modules/@dsh-tui-vendor/mathjax-tex-svg/LICENSE +202 -0
- package/node_modules/@dsh-tui-vendor/mathjax-tex-svg/NOTICE +20 -0
- package/node_modules/@dsh-tui-vendor/mathjax-tex-svg/index.d.ts +16 -0
- package/node_modules/@dsh-tui-vendor/mathjax-tex-svg/lib/bundled-packages.json +4 -0
- package/node_modules/@dsh-tui-vendor/mathjax-tex-svg/lib/index.mjs +20 -0
- package/node_modules/@dsh-tui-vendor/mathjax-tex-svg/lib/index.mjs.LEGAL.txt +35 -0
- package/node_modules/@dsh-tui-vendor/mathjax-tex-svg/package.json +29 -0
- package/package.json +111 -97
|
@@ -10,10 +10,39 @@
|
|
|
10
10
|
* the cursor is now). The rendered highlight normalizes to start ≤ end.
|
|
11
11
|
*/
|
|
12
12
|
import type { Screen, StylePool } from './screen.js';
|
|
13
|
+
import type { TerminalImagePlacement } from './terminal-image.js';
|
|
13
14
|
type Point = {
|
|
14
15
|
col: number;
|
|
15
16
|
row: number;
|
|
16
17
|
};
|
|
18
|
+
/**
|
|
19
|
+
* One copy region a screen row touches: a rectangle whose cells are not
|
|
20
|
+
* text (a formula drawn as a terminal image) together with the text it
|
|
21
|
+
* stands for. The text is the formula's SOURCE (see Image.copyText) and is
|
|
22
|
+
* inserted at `at`, a character offset into the row's own text.
|
|
23
|
+
*/
|
|
24
|
+
export type SelectionRegion = {
|
|
25
|
+
readonly at: number;
|
|
26
|
+
/** Stable id of the region (Screen.copyRegion). */
|
|
27
|
+
readonly id: number;
|
|
28
|
+
readonly text: string;
|
|
29
|
+
};
|
|
30
|
+
/**
|
|
31
|
+
* Text extracted from one screen row plus the copy regions it touched.
|
|
32
|
+
* Regions travel OUTSIDE `text` on purpose: a row's characters are model
|
|
33
|
+
* output, so nothing in them may be re-read as metadata (an earlier design
|
|
34
|
+
* serialized regions into the text and let ordinary content impersonate
|
|
35
|
+
* them — see getSelectedText).
|
|
36
|
+
*/
|
|
37
|
+
export type SelectionRow = {
|
|
38
|
+
readonly text: string;
|
|
39
|
+
/** The row continues the previous one: the `\n` came from word-wrap, not
|
|
40
|
+
* from the source. Captured at extraction time because the screen's
|
|
41
|
+
* softWrap bitmap shifts with content. */
|
|
42
|
+
readonly sw: boolean;
|
|
43
|
+
/** Region insertions, ascending by `at`. */
|
|
44
|
+
readonly regions: readonly SelectionRegion[];
|
|
45
|
+
};
|
|
17
46
|
/**
|
|
18
47
|
* Selection state for fullscreen mode: the anchor/focus cell pair plus
|
|
19
48
|
* the off-screen row accumulators captured during drag-to-scroll.
|
|
@@ -35,23 +64,16 @@ export type SelectionState = {
|
|
|
35
64
|
hi: Point;
|
|
36
65
|
kind: 'word' | 'line';
|
|
37
66
|
} | null;
|
|
38
|
-
/**
|
|
39
|
-
*
|
|
40
|
-
* so without this accumulator,
|
|
41
|
-
* loses the top of the selection
|
|
42
|
-
*
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
* word-wrap, not in the source). Captured alongside the text at
|
|
49
|
-
* scroll time since the screen's softWrap bitmap shifts with content.
|
|
50
|
-
* getSelectedText uses these to join wrapped rows back into logical
|
|
51
|
-
* lines. */
|
|
52
|
-
scrolledOffAboveSW: boolean[];
|
|
53
|
-
/** Parallel to scrolledOffBelow. */
|
|
54
|
-
scrolledOffBelowSW: boolean[];
|
|
67
|
+
/** Rows that scrolled out ABOVE the viewport during drag-to-scroll, as
|
|
68
|
+
* extracted rows (text + wrap bit + copy regions). The screen buffer
|
|
69
|
+
* only holds the current viewport, so without this accumulator,
|
|
70
|
+
* dragging down past the bottom edge loses the top of the selection
|
|
71
|
+
* once the anchor clamps. Prepended to the on-screen rows by
|
|
72
|
+
* getSelectedText. Reset on start/clear. Newest at the end. */
|
|
73
|
+
scrolledOffAbove: SelectionRow[];
|
|
74
|
+
/** Symmetric: rows scrolled out BELOW when dragging up. Appended;
|
|
75
|
+
* newest at the front. */
|
|
76
|
+
scrolledOffBelow: SelectionRow[];
|
|
55
77
|
/** Pre-clamp anchor row. Set when shiftSelection clamps anchor so a
|
|
56
78
|
* reverse scroll can restore the true position and pop accumulators.
|
|
57
79
|
* Without this, PgDn (clamps anchor) → PgUp leaves anchor at the wrong
|
|
@@ -524,6 +546,6 @@ export declare function captureScrolledRows(s: SelectionState, screen: Screen, f
|
|
|
524
546
|
* @param selection - the selection whose range to highlight.
|
|
525
547
|
* @param stylePool - the style pool providing the selection background.
|
|
526
548
|
*/
|
|
527
|
-
export declare function applySelectionOverlay(screen: Screen, selection: SelectionState, stylePool: StylePool): void;
|
|
549
|
+
export declare function applySelectionOverlay(screen: Screen, selection: SelectionState, stylePool: StylePool, images?: readonly TerminalImagePlacement[]): void;
|
|
528
550
|
export {};
|
|
529
551
|
//# sourceMappingURL=selection.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"selection.d.ts","sourceRoot":"","sources":["../../../src/ink/selection.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAGH,OAAO,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;
|
|
1
|
+
{"version":3,"file":"selection.d.ts","sourceRoot":"","sources":["../../../src/ink/selection.ts"],"names":[],"mappings":"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"}
|
|
@@ -23,8 +23,6 @@ export function createSelectionState() {
|
|
|
23
23
|
anchorSpan: null,
|
|
24
24
|
scrolledOffAbove: [],
|
|
25
25
|
scrolledOffBelow: [],
|
|
26
|
-
scrolledOffAboveSW: [],
|
|
27
|
-
scrolledOffBelowSW: [],
|
|
28
26
|
lastPressHadAlt: false,
|
|
29
27
|
coveredFingerprint: null,
|
|
30
28
|
coveredText: null,
|
|
@@ -50,8 +48,6 @@ export function startSelection(s, col, row) {
|
|
|
50
48
|
s.anchorSpan = null;
|
|
51
49
|
s.scrolledOffAbove = [];
|
|
52
50
|
s.scrolledOffBelow = [];
|
|
53
|
-
s.scrolledOffAboveSW = [];
|
|
54
|
-
s.scrolledOffBelowSW = [];
|
|
55
51
|
s.virtualAnchorRow = undefined;
|
|
56
52
|
s.virtualFocusRow = undefined;
|
|
57
53
|
s.dragBounds = undefined;
|
|
@@ -122,8 +118,6 @@ export function clearSelection(s) {
|
|
|
122
118
|
s.anchorSpan = null;
|
|
123
119
|
s.scrolledOffAbove = [];
|
|
124
120
|
s.scrolledOffBelow = [];
|
|
125
|
-
s.scrolledOffAboveSW = [];
|
|
126
|
-
s.scrolledOffBelowSW = [];
|
|
127
121
|
s.virtualAnchorRow = undefined;
|
|
128
122
|
s.virtualFocusRow = undefined;
|
|
129
123
|
s.dragBounds = undefined;
|
|
@@ -503,13 +497,11 @@ export function shiftSelection(s, dRow, minRow, maxRow, width) {
|
|
|
503
497
|
// scrolledOffAbove pushes newest at the end (closest to on-screen).
|
|
504
498
|
const drop = oldAboveDebt - newAboveDebt;
|
|
505
499
|
s.scrolledOffAbove.length -= drop;
|
|
506
|
-
s.scrolledOffAboveSW.length = s.scrolledOffAbove.length;
|
|
507
500
|
}
|
|
508
501
|
if (newBelowDebt < oldBelowDebt) {
|
|
509
502
|
// scrolledOffBelow unshifts newest at the front (closest to on-screen).
|
|
510
503
|
const drop = oldBelowDebt - newBelowDebt;
|
|
511
504
|
s.scrolledOffBelow.splice(0, drop);
|
|
512
|
-
s.scrolledOffBelowSW.splice(0, drop);
|
|
513
505
|
}
|
|
514
506
|
// Invariant: accumulator length ≤ debt. If the accumulator exceeds debt,
|
|
515
507
|
// the excess is stale — e.g., moveFocus cleared virtualFocusRow without
|
|
@@ -523,13 +515,10 @@ export function shiftSelection(s, dRow, minRow, maxRow, width) {
|
|
|
523
515
|
// Above pushes newest at END → keep END.
|
|
524
516
|
s.scrolledOffAbove =
|
|
525
517
|
newAboveDebt > 0 ? s.scrolledOffAbove.slice(-newAboveDebt) : [];
|
|
526
|
-
s.scrolledOffAboveSW =
|
|
527
|
-
newAboveDebt > 0 ? s.scrolledOffAboveSW.slice(-newAboveDebt) : [];
|
|
528
518
|
}
|
|
529
519
|
if (s.scrolledOffBelow.length > newBelowDebt) {
|
|
530
520
|
// Below unshifts newest at FRONT → keep FRONT.
|
|
531
521
|
s.scrolledOffBelow = s.scrolledOffBelow.slice(0, newBelowDebt);
|
|
532
|
-
s.scrolledOffBelowSW = s.scrolledOffBelowSW.slice(0, newBelowDebt);
|
|
533
522
|
}
|
|
534
523
|
// Clamp col depends on which EDGE (not dRow direction): virtual tracking
|
|
535
524
|
// means a top-clamped point can stay top-clamped during a dRow>0 reverse
|
|
@@ -845,13 +834,10 @@ export function shiftSelectionForViewportResize(s, screen, oldTop, oldBottom, ne
|
|
|
845
834
|
if (newBottom > oldBottom && s.scrolledOffBelow.length > 0) {
|
|
846
835
|
const drop = Math.min(newBottom - oldBottom, s.scrolledOffBelow.length);
|
|
847
836
|
s.scrolledOffBelow.splice(0, drop);
|
|
848
|
-
s.scrolledOffBelowSW.splice(0, drop);
|
|
849
837
|
}
|
|
850
838
|
if (newTop < oldTop && s.scrolledOffAbove.length > 0) {
|
|
851
839
|
const drop = Math.min(oldTop - newTop, s.scrolledOffAbove.length);
|
|
852
|
-
|
|
853
|
-
s.scrolledOffAbove.length = keep;
|
|
854
|
-
s.scrolledOffAboveSW.length = keep;
|
|
840
|
+
s.scrolledOffAbove.length -= drop;
|
|
855
841
|
}
|
|
856
842
|
if (newTop > oldTop)
|
|
857
843
|
captureScrolledRows(s, screen, oldTop, newTop - 1, 'above');
|
|
@@ -941,21 +927,37 @@ export function isCellSelected(s, col, row) {
|
|
|
941
927
|
return false;
|
|
942
928
|
return true;
|
|
943
929
|
}
|
|
944
|
-
/** Extract text from one screen row
|
|
945
|
-
* continuation (screen.softWrap[row+1]>0),
|
|
946
|
-
* column and skip the trailing trim so the
|
|
947
|
-
* the join. See Screen.softWrap for why the
|
|
930
|
+
/** Extract text from one screen row, plus the copy regions it touches.
|
|
931
|
+
* When the next row is a soft-wrap continuation (screen.softWrap[row+1]>0),
|
|
932
|
+
* clamp to that content-end column and skip the trailing trim so the
|
|
933
|
+
* word-separator space survives the join. See Screen.softWrap for why the
|
|
934
|
+
* clamp is necessary. */
|
|
948
935
|
function extractRowText(screen, row, colStart, colEnd) {
|
|
949
936
|
const noSelect = screen.noSelect;
|
|
937
|
+
const copyRegion = screen.copyRegion;
|
|
950
938
|
const rowOff = row * screen.width;
|
|
951
939
|
const contentEnd = row + 1 < screen.height ? screen.softWrap[row + 1] : 0;
|
|
952
940
|
const lastCol = contentEnd > 0 ? Math.min(colEnd, contentEnd - 1) : colEnd;
|
|
953
941
|
let line = '';
|
|
942
|
+
const regions = [];
|
|
943
|
+
let lastRegion = 0;
|
|
954
944
|
for (let col = colStart; col <= lastCol; col++) {
|
|
955
945
|
// Skip cells marked noSelect (gutters, line numbers, diff sigils).
|
|
956
946
|
// Check before cellAt to avoid the decode cost for excluded cells.
|
|
957
947
|
if (noSelect[rowOff + col] === 1)
|
|
958
948
|
continue;
|
|
949
|
+
// A copy region (a formula image) contributes one entry per run of its
|
|
950
|
+
// cells: the text it stands for, at the offset those cells occupy here.
|
|
951
|
+
// resolveCopyRegions inserts it once per selection.
|
|
952
|
+
const region = copyRegion?.[rowOff + col] ?? 0;
|
|
953
|
+
if (region !== 0) {
|
|
954
|
+
if (region !== lastRegion) {
|
|
955
|
+
regions.push({ at: line.length, id: region, text: screen.copyTexts?.get(region) ?? '' });
|
|
956
|
+
}
|
|
957
|
+
lastRegion = region;
|
|
958
|
+
continue;
|
|
959
|
+
}
|
|
960
|
+
lastRegion = 0;
|
|
959
961
|
const cell = cellAt(screen, col, row);
|
|
960
962
|
if (!cell)
|
|
961
963
|
continue;
|
|
@@ -967,7 +969,60 @@ function extractRowText(screen, row, colStart, colEnd) {
|
|
|
967
969
|
}
|
|
968
970
|
line += cell.char;
|
|
969
971
|
}
|
|
970
|
-
|
|
972
|
+
// The trailing trim may only eat blanks written AFTER the last region: a
|
|
973
|
+
// region's cells are content (a formula's box), so the space separating it
|
|
974
|
+
// from the text before it survives. The markers this replaced were never
|
|
975
|
+
// whitespace, which is what used to protect that space.
|
|
976
|
+
const tail = regions.length > 0 ? regions[regions.length - 1].at : 0;
|
|
977
|
+
return {
|
|
978
|
+
text: contentEnd > 0 ? line : line.slice(0, tail) + line.slice(tail).replace(/\s+$/, ''),
|
|
979
|
+
sw: screen.softWrap[row] > 0,
|
|
980
|
+
regions,
|
|
981
|
+
};
|
|
982
|
+
}
|
|
983
|
+
/**
|
|
984
|
+
* Apply the copy regions of the extracted rows: a region's text appears
|
|
985
|
+
* once, at its first row in reading order; a row holding nothing but blank
|
|
986
|
+
* cells and regions already copied (the lower rows of a block formula
|
|
987
|
+
* image) is dropped; and a multi-line region starts its own line, without
|
|
988
|
+
* the indent left of it.
|
|
989
|
+
*
|
|
990
|
+
* Regions arrive as data (id + offset + text), never as characters inside
|
|
991
|
+
* `text`: a row's characters are model output, and nothing in them may be
|
|
992
|
+
* read back as metadata.
|
|
993
|
+
*/
|
|
994
|
+
function resolveCopyRegions(rows) {
|
|
995
|
+
const emitted = new Set();
|
|
996
|
+
const resolved = [];
|
|
997
|
+
for (const row of rows) {
|
|
998
|
+
if (row.regions.length === 0) {
|
|
999
|
+
resolved.push({ text: row.text, sw: row.sw });
|
|
1000
|
+
continue;
|
|
1001
|
+
}
|
|
1002
|
+
let copied = false;
|
|
1003
|
+
let repeated = false;
|
|
1004
|
+
let text = '';
|
|
1005
|
+
let at = 0;
|
|
1006
|
+
for (const region of row.regions) {
|
|
1007
|
+
const start = Math.min(region.at, row.text.length);
|
|
1008
|
+
text += row.text.slice(at, start);
|
|
1009
|
+
at = start;
|
|
1010
|
+
if (emitted.has(region.id)) {
|
|
1011
|
+
repeated = true;
|
|
1012
|
+
continue;
|
|
1013
|
+
}
|
|
1014
|
+
emitted.add(region.id);
|
|
1015
|
+
copied = true;
|
|
1016
|
+
if (region.text.includes('\n') && text.trim() === '')
|
|
1017
|
+
text = '';
|
|
1018
|
+
text += region.text;
|
|
1019
|
+
}
|
|
1020
|
+
text += row.text.slice(at);
|
|
1021
|
+
if (repeated && !copied && text.trim() === '')
|
|
1022
|
+
continue;
|
|
1023
|
+
resolved.push({ text, sw: row.sw });
|
|
1024
|
+
}
|
|
1025
|
+
return resolved;
|
|
971
1026
|
}
|
|
972
1027
|
/** Accumulator for selected text that merges soft-wrapped rows back
|
|
973
1028
|
* into logical lines. push(text, sw) appends a newline before text
|
|
@@ -1058,6 +1113,9 @@ export function refreshSelectionFingerprint(s, screen, coordinated) {
|
|
|
1058
1113
|
s.coveredText = null;
|
|
1059
1114
|
}
|
|
1060
1115
|
const { cells, noSelect, width, height, charPool, softWrap } = screen;
|
|
1116
|
+
const copyRegion = screen.copyRegion;
|
|
1117
|
+
const copyTexts = screen.copyTexts;
|
|
1118
|
+
const coveredRegions = new Set();
|
|
1061
1119
|
let h = 0x811c9dc5;
|
|
1062
1120
|
for (let row = b.start.row; row <= b.end.row; row++) {
|
|
1063
1121
|
if (row < 0 || row >= height)
|
|
@@ -1078,6 +1136,17 @@ export function refreshSelectionFingerprint(s, screen, coordinated) {
|
|
|
1078
1136
|
continue;
|
|
1079
1137
|
if (noSelect[rowOff + col] === 1)
|
|
1080
1138
|
continue;
|
|
1139
|
+
// A copy region (a formula image) is content too: its cells are blank,
|
|
1140
|
+
// so without this term a formula swapped under a stationary highlight
|
|
1141
|
+
// would hash identically while the copied SOURCE changed. Fold the id
|
|
1142
|
+
// in at its position, under its own constant so an id can never stand
|
|
1143
|
+
// in for a neighbouring cell's code unit; the region TEXT follows after
|
|
1144
|
+
// the cell loops.
|
|
1145
|
+
const region = copyRegion?.[rowOff + col] ?? 0;
|
|
1146
|
+
if (region !== 0) {
|
|
1147
|
+
coveredRegions.add(region);
|
|
1148
|
+
h = Math.imul(h ^ 0x7feb352d ^ region, 0x9e3779b9);
|
|
1149
|
+
}
|
|
1081
1150
|
// Resolve the id through the pool and hash the actual characters —
|
|
1082
1151
|
// the exact string getSelectedText would emit for this cell. Two
|
|
1083
1152
|
// pools holding the same glyph hash identically, so a generational
|
|
@@ -1106,6 +1175,24 @@ export function refreshSelectionFingerprint(s, screen, coordinated) {
|
|
|
1106
1175
|
const wrapClamp = contentEnd > 0 ? Math.min(colEnd, contentEnd - 1) + 1 : 0;
|
|
1107
1176
|
h = Math.imul(h ^ 0x27d4eb2f ^ wrapClamp, 0x165667b1);
|
|
1108
1177
|
}
|
|
1178
|
+
// The bytes a region contributes live outside the cells (Screen.copyTexts),
|
|
1179
|
+
// so they are hashed here — in id order, after the position terms above, so
|
|
1180
|
+
// a changed source moves the hash and the byte verdict below can refuse it.
|
|
1181
|
+
//
|
|
1182
|
+
// Ids and text code units are both folded as plain numbers, and an image id
|
|
1183
|
+
// is free to equal a code unit (id 65 next to a source starting with "A"):
|
|
1184
|
+
// without a delimiter, `id 65 + "AY"` hashed exactly like `id 1, "XA"` plus
|
|
1185
|
+
// `id 65, "Y"`, and the guard missed that swap. Fold the id under its own
|
|
1186
|
+
// constant and length-delimit the text. (This is a fingerprint, not a
|
|
1187
|
+
// bijection — the byte comparison below is the verdict.)
|
|
1188
|
+
for (const id of [...coveredRegions].sort((a, b) => a - b)) {
|
|
1189
|
+
const regionText = copyTexts?.get(id) ?? '';
|
|
1190
|
+
h = Math.imul(h ^ 0x7feb352d ^ id, 0x01000193);
|
|
1191
|
+
h = Math.imul(h ^ regionText.length, 0x01000193);
|
|
1192
|
+
for (let k = 0; k < regionText.length; k++) {
|
|
1193
|
+
h = Math.imul(h ^ regionText.charCodeAt(k), 0x01000193);
|
|
1194
|
+
}
|
|
1195
|
+
}
|
|
1109
1196
|
if (s.coveredFingerprint === null) {
|
|
1110
1197
|
// First frame observing this selection: baseline, no verdict. The text is
|
|
1111
1198
|
// captured here too — it is the ground truth the next hash change is
|
|
@@ -1153,19 +1240,21 @@ export function getSelectedText(s, screen) {
|
|
|
1153
1240
|
if (!b)
|
|
1154
1241
|
return '';
|
|
1155
1242
|
const { start, end } = b;
|
|
1156
|
-
const sw = screen.softWrap;
|
|
1157
1243
|
const lines = [];
|
|
1244
|
+
const rows = [];
|
|
1158
1245
|
for (let i = 0; i < s.scrolledOffAbove.length; i++) {
|
|
1159
|
-
|
|
1246
|
+
rows.push(s.scrolledOffAbove[i]);
|
|
1160
1247
|
}
|
|
1161
1248
|
for (let row = start.row; row <= end.row; row++) {
|
|
1162
1249
|
const rowStart = row === start.row ? start.col : 0;
|
|
1163
1250
|
const rowEnd = row === end.row ? end.col : screen.width - 1;
|
|
1164
|
-
|
|
1251
|
+
rows.push(extractRowText(screen, row, rowStart, rowEnd));
|
|
1165
1252
|
}
|
|
1166
1253
|
for (let i = 0; i < s.scrolledOffBelow.length; i++) {
|
|
1167
|
-
|
|
1254
|
+
rows.push(s.scrolledOffBelow[i]);
|
|
1168
1255
|
}
|
|
1256
|
+
for (const row of resolveCopyRegions(rows))
|
|
1257
|
+
joinRows(lines, row.text, row.sw);
|
|
1169
1258
|
return lines.join('\n');
|
|
1170
1259
|
}
|
|
1171
1260
|
/**
|
|
@@ -1201,21 +1290,17 @@ export function captureScrolledRows(s, screen, firstRow, lastRow, side, screenRo
|
|
|
1201
1290
|
if (lo > hi)
|
|
1202
1291
|
return;
|
|
1203
1292
|
const width = screen.width;
|
|
1204
|
-
const sw = screen.softWrap;
|
|
1205
1293
|
const captured = [];
|
|
1206
|
-
const capturedSW = [];
|
|
1207
1294
|
for (let row = lo; row <= hi; row++) {
|
|
1208
1295
|
const colStart = row === start.row ? start.col : 0;
|
|
1209
1296
|
const colEnd = row === end.row ? end.col : width - 1;
|
|
1210
1297
|
const screenRow = row - screenRowOffset;
|
|
1211
1298
|
captured.push(extractRowText(screen, screenRow, colStart, colEnd));
|
|
1212
|
-
capturedSW.push(sw[screenRow] > 0);
|
|
1213
1299
|
}
|
|
1214
1300
|
if (side === 'above') {
|
|
1215
1301
|
// Newest rows go at the bottom of the above-accumulator (closest to
|
|
1216
1302
|
// the on-screen content in reading order).
|
|
1217
1303
|
s.scrolledOffAbove.push(...captured);
|
|
1218
|
-
s.scrolledOffAboveSW.push(...capturedSW);
|
|
1219
1304
|
// We just captured the top of the selection. The anchor (=start when
|
|
1220
1305
|
// dragging down) is now pointing at content that will scroll out; its
|
|
1221
1306
|
// col constraint was applied to the captured row. Reset to col 0 so
|
|
@@ -1235,7 +1320,6 @@ export function captureScrolledRows(s, screen, firstRow, lastRow, side, screenRo
|
|
|
1235
1320
|
// Newest rows go at the TOP of the below-accumulator — they're
|
|
1236
1321
|
// closest to the on-screen content.
|
|
1237
1322
|
s.scrolledOffBelow.unshift(...captured);
|
|
1238
|
-
s.scrolledOffBelowSW.unshift(...capturedSW);
|
|
1239
1323
|
if (s.anchor && s.anchor.row === end.row && hi === end.row) {
|
|
1240
1324
|
s.anchor = { col: width - 1, row: s.anchor.row };
|
|
1241
1325
|
if (s.anchorSpan) {
|
|
@@ -1267,13 +1351,14 @@ export function captureScrolledRows(s, screen, firstRow, lastRow, side, screenRo
|
|
|
1267
1351
|
* @param selection - the selection whose range to highlight.
|
|
1268
1352
|
* @param stylePool - the style pool providing the selection background.
|
|
1269
1353
|
*/
|
|
1270
|
-
export function applySelectionOverlay(screen, selection, stylePool) {
|
|
1354
|
+
export function applySelectionOverlay(screen, selection, stylePool, images = []) {
|
|
1271
1355
|
const b = selectionBounds(selection);
|
|
1272
1356
|
if (!b)
|
|
1273
1357
|
return;
|
|
1274
1358
|
const { start, end } = b;
|
|
1275
1359
|
const width = screen.width;
|
|
1276
1360
|
const noSelect = screen.noSelect;
|
|
1361
|
+
const covered = imageCoveredCells(images, width, screen.height);
|
|
1277
1362
|
for (let row = start.row; row <= end.row && row < screen.height; row++) {
|
|
1278
1363
|
const colStart = row === start.row ? start.col : 0;
|
|
1279
1364
|
const colEnd = row === end.row ? Math.min(end.col, width - 1) : width - 1;
|
|
@@ -1285,8 +1370,35 @@ export function applySelectionOverlay(screen, selection, stylePool) {
|
|
|
1285
1370
|
// still highlight so the selection extent remains visible.
|
|
1286
1371
|
if (noSelect[idx] === 1)
|
|
1287
1372
|
continue;
|
|
1373
|
+
// Skip cells a terminal image is painted over: Kitty draws images
|
|
1374
|
+
// below cells with a non-default background, so a highlighted cell
|
|
1375
|
+
// would hide the image (a selected formula turned into a blank box).
|
|
1376
|
+
if (covered?.has(idx) === true)
|
|
1377
|
+
continue;
|
|
1288
1378
|
const cell = cellAtIndex(screen, idx);
|
|
1289
1379
|
setCellStyleId(screen, col, row, stylePool.withSelectionBg(cell.styleId));
|
|
1290
1380
|
}
|
|
1291
1381
|
}
|
|
1292
1382
|
}
|
|
1383
|
+
/**
|
|
1384
|
+
* Screen cell indexes under terminal images that are actually painted this
|
|
1385
|
+
* frame (not waiting on a raster, not fully covered by a later overlay), or
|
|
1386
|
+
* undefined when there are none.
|
|
1387
|
+
*/
|
|
1388
|
+
function imageCoveredCells(images, width, height) {
|
|
1389
|
+
let covered;
|
|
1390
|
+
for (const image of images) {
|
|
1391
|
+
if (image.graphicsReady === false || image.occludedFully === true)
|
|
1392
|
+
continue;
|
|
1393
|
+
const rect = image.clip ?? image;
|
|
1394
|
+
const top = Math.max(0, Math.floor(rect.y));
|
|
1395
|
+
const left = Math.max(0, Math.floor(rect.x));
|
|
1396
|
+
const bottom = Math.min(height, Math.floor(rect.y) + rect.rows);
|
|
1397
|
+
const right = Math.min(width, Math.floor(rect.x) + rect.columns);
|
|
1398
|
+
for (let row = top; row < bottom; row++) {
|
|
1399
|
+
for (let col = left; col < right; col++)
|
|
1400
|
+
(covered ??= new Set()).add(row * width + col);
|
|
1401
|
+
}
|
|
1402
|
+
}
|
|
1403
|
+
return covered;
|
|
1404
|
+
}
|
|
@@ -9,7 +9,18 @@ export interface SixelEncodeRequest {
|
|
|
9
9
|
readonly source: TerminalImageSource;
|
|
10
10
|
readonly width: number;
|
|
11
11
|
readonly height: number;
|
|
12
|
-
|
|
12
|
+
/**
|
|
13
|
+
* Colour the transparent pixels composite onto. Required unless {@link ink}
|
|
14
|
+
* is set: Sixel has no alpha of its own, so anything that is not a
|
|
15
|
+
* single-colour ink mask has to be blended onto a real colour first.
|
|
16
|
+
*/
|
|
17
|
+
readonly background?: string;
|
|
18
|
+
/**
|
|
19
|
+
* Emit the raster transparent (the DCS background select already means "no
|
|
20
|
+
* action") and promote coverage to a hard mask, so only covered pixels are
|
|
21
|
+
* painted and whatever the terminal shows behind them stays visible.
|
|
22
|
+
*/
|
|
23
|
+
readonly transparent?: boolean;
|
|
13
24
|
readonly presentation?: 'preview' | 'transcript';
|
|
14
25
|
readonly crop?: SixelCrop;
|
|
15
26
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sixel-codec.d.ts","sourceRoot":"","sources":["../../../src/ink/sixel-codec.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAA;
|
|
1
|
+
{"version":3,"file":"sixel-codec.d.ts","sourceRoot":"","sources":["../../../src/ink/sixel-codec.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAA;AAW9D,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;IACpB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;CACxB;AAED,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,MAAM,EAAE,mBAAmB,CAAA;IACpC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IACvB;;;;OAIG;IACH,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAA;IAC5B;;;;OAIG;IACH,QAAQ,CAAC,WAAW,CAAC,EAAE,OAAO,CAAA;IAC9B,QAAQ,CAAC,YAAY,CAAC,EAAE,SAAS,GAAG,YAAY,CAAA;IAChD,QAAQ,CAAC,IAAI,CAAC,EAAE,SAAS,CAAA;CAC1B;AAED,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;IACzB,QAAQ,CAAC,OAAO,EAAE,IAAI,CAAC,kBAAkB,EAAE,QAAQ,CAAC,GAAG;QAAE,QAAQ,CAAC,MAAM,CAAC,EAAE,mBAAmB,CAAA;KAAE,CAAA;CACjG;AAED,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,MAAM,CAAC,EAAE,WAAW,CAAA;IAC7B,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAA;IAC1B,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,EAAE,CAAA;IAChC,QAAQ,CAAC,SAAS,CAAC,EAAE,OAAO,CAAA;CAC7B;AASD,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;CACtB;AAED,8EAA8E;AAC9E,wBAAsB,WAAW,CAAC,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAAC,WAAW,CAAC,CAEnF;AA2FD,qFAAqF;AACrF,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAmC;IAC1D,OAAO,CAAC,KAAK,CAAI;IAEX,MAAM,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,EAAE,kBAAkB,GAAG,OAAO,CAAC,mBAAmB,CAAC;CAoBtF"}
|
|
@@ -1,6 +1,14 @@
|
|
|
1
1
|
import { FINALIZER, fromRGBA8888, introducer, PALETTE_ANSI_256, sixelEncode } from 'sixel';
|
|
2
2
|
import { loadSharp } from '../dsh-adapter/sharp.js';
|
|
3
3
|
import { isTerminalImageSource, TERMINAL_IMAGE_MAX_EDGE, TERMINAL_IMAGE_MAX_BYTES, TERMINAL_IMAGE_PREVIEW_MAX_EDGE, TERMINAL_IMAGE_PREVIEW_MAX_BYTES, SIXEL_MAX_ENCODED_BYTES, SIXEL_CACHE_BYTES, SIXEL_CACHE_ENTRIES } from './terminal-image.js';
|
|
4
|
+
/**
|
|
5
|
+
* Coverage a transparent raster needs before a pixel is painted. Sixel alpha
|
|
6
|
+
* is binary and this encoder keeps only fully opaque pixels, so anti-aliased
|
|
7
|
+
* edges would otherwise be dropped outright and thin every glyph stroke to a
|
|
8
|
+
* hairline; promoting coverage keeps the artwork's visual weight. Biased
|
|
9
|
+
* below 0.5 because formula strokes are thin to begin with.
|
|
10
|
+
*/
|
|
11
|
+
const TRANSPARENT_COVERAGE_THRESHOLD = 64;
|
|
4
12
|
/** CPU-heavy work: called in the image worker, never in the frame painter. */
|
|
5
13
|
export async function encodeSixel(request) {
|
|
6
14
|
return encodeRegion(await prepareSixel(request), request.crop);
|
|
@@ -11,7 +19,7 @@ function validateRasterBounds(request) {
|
|
|
11
19
|
const maxBytes = request.presentation === 'preview' ? TERMINAL_IMAGE_PREVIEW_MAX_BYTES : TERMINAL_IMAGE_MAX_BYTES;
|
|
12
20
|
if (!Number.isSafeInteger(width) || !Number.isSafeInteger(height) ||
|
|
13
21
|
width < 1 || height < 1 || width > maxEdge || height > maxEdge ||
|
|
14
|
-
width * height * 4 > maxBytes || background.length > 64) {
|
|
22
|
+
width * height * 4 > maxBytes || (background !== undefined && background.length > 64)) {
|
|
15
23
|
throw new Error('Invalid Sixel raster bounds');
|
|
16
24
|
}
|
|
17
25
|
}
|
|
@@ -23,7 +31,11 @@ async function prepareSixel(request) {
|
|
|
23
31
|
const sharp = await loadSharp();
|
|
24
32
|
if (sharp === undefined)
|
|
25
33
|
throw new Error('Image decoder unavailable');
|
|
26
|
-
|
|
34
|
+
// An ink mask is emitted transparent; every other raster composites onto a
|
|
35
|
+
// colour first, because Sixel cannot express partial alpha and blending is
|
|
36
|
+
// what keeps soft edges (shadows, translucent panels) smooth.
|
|
37
|
+
const transparent = request.transparent === true;
|
|
38
|
+
const fill = transparent ? undefined : resolveBackground(background ?? '#000000');
|
|
27
39
|
// The manager already fits the source aspect for large previews, so 'fill'
|
|
28
40
|
// avoids a one-pixel letterbox stripe there.
|
|
29
41
|
const highResolution = width > TERMINAL_IMAGE_MAX_EDGE || height > TERMINAL_IMAGE_MAX_EDGE;
|
|
@@ -33,11 +45,16 @@ async function prepareSixel(request) {
|
|
|
33
45
|
// in 11–133 ms. The indexed PNG round trip is how sharp exposes its palette.
|
|
34
46
|
// effort 1 keeps every colour within one level of the source, while effort
|
|
35
47
|
// 10 costs seconds on noisy images.
|
|
36
|
-
const
|
|
48
|
+
const sized = sharp(source.data, {
|
|
37
49
|
raw: { width: source.width, height: source.height, channels: 4 },
|
|
50
|
+
});
|
|
51
|
+
const indexed = await (fill === undefined ? sized : sized.flatten({ background: fill }))
|
|
52
|
+
.resize({
|
|
53
|
+
width,
|
|
54
|
+
height,
|
|
55
|
+
fit: highResolution ? 'fill' : 'contain',
|
|
56
|
+
background: fill ?? { r: 0, g: 0, b: 0, alpha: 0 },
|
|
38
57
|
})
|
|
39
|
-
.flatten({ background: fill })
|
|
40
|
-
.resize({ width, height, fit: highResolution ? 'fill' : 'contain', background: fill })
|
|
41
58
|
.toColourspace('srgb')
|
|
42
59
|
.ensureAlpha()
|
|
43
60
|
.png({ palette: true, colours: 256, dither: 0, effort: 1, compressionLevel: 1 })
|
|
@@ -45,6 +62,13 @@ async function prepareSixel(request) {
|
|
|
45
62
|
const data = await sharp(indexed).ensureAlpha().raw().toBuffer();
|
|
46
63
|
if (data.byteLength !== width * height * 4)
|
|
47
64
|
throw new Error('Invalid quantized raster size');
|
|
65
|
+
if (transparent) {
|
|
66
|
+
// Binary ink: anything below the coverage threshold becomes fully
|
|
67
|
+
// transparent, everything above becomes solid.
|
|
68
|
+
for (let index = 3; index < data.length; index += 4) {
|
|
69
|
+
data[index] = data[index] >= TRANSPARENT_COVERAGE_THRESHOLD ? 255 : 0;
|
|
70
|
+
}
|
|
71
|
+
}
|
|
48
72
|
const palette = new Set();
|
|
49
73
|
for (let index = 0; index < data.length; index += 4) {
|
|
50
74
|
palette.add((data[index] << 16) | (data[index + 1] << 8) | data[index + 2]);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sixel-graphics.d.ts","sourceRoot":"","sources":["../../../src/ink/sixel-graphics.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,kBAAkB,EAAE,WAAW,EAA2C,MAAM,kBAAkB,CAAA;AAChH,OAAO,EAIL,KAAK,gBAAgB,EAAE,KAAK,sBAAsB,EACnD,MAAM,qBAAqB,CAAA;AAC5B,OAAO,EAAuB,KAAK,MAAM,EAAE,MAAM,aAAa,CAAA;AAC9D,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,YAAY,CAAA;AAwBtC,KAAK,OAAO,GAAG,CAAC,OAAO,EAAE,kBAAkB,KAAK,OAAO,CAAC,WAAW,CAAC,CAAA;AAiBpE,oFAAoF;AACpF,qBAAa,oBAAoB;IAyBnB,OAAO,CAAC,QAAQ,CAAC,OAAO;IAAc,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC;IAxB3E,OAAO,CAAC,IAAI,CAA+C;IAC3D,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAoC;IACxD,OAAO,CAAC,MAAM,CAAI;IAClB,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAwC;IAC9D,OAAO,CAAC,WAAW,CAAI;IACvB,OAAO,CAAC,UAAU,CAAI;IACtB,OAAO,CAAC,MAAM,CAAqB;IACnC,OAAO,CAAC,OAAO,CAAgB;IAC/B,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAiC;IACvD,OAAO,CAAC,OAAO,CAAoB;IACnC,OAAO,CAAC,SAAS,CAAmC;IACpD,OAAO,CAAC,WAAW,CAAmC;IACtD,wEAAwE;IACxE,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAmC;IACxD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAwB;IAChD,OAAO,CAAC,MAAM,CAAoB;IAClC,OAAO,CAAC,UAAU,CAAoB;IACtC,OAAO,CAAC,YAAY,CAAuC;IAC3D,OAAO,CAAC,QAAQ,CAAQ;IACxB,OAAO,CAAC,KAAK,CAAQ;IACrB,OAAO,CAAC,OAAO,CAAI;IACnB,OAAO,CAAC,IAAI,CAAI;IAChB,OAAO,CAAC,cAAc,CAAQ;gBAED,OAAO,EAAE,MAAM,IAAI,EAAmB,OAAO,CAAC,EAAE,OAAO,YAAA;IAEpF,IAAI,QAAQ,IAAI,OAAO,CAAgE;IAEvF,cAAc,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI;IAKtC,WAAW,CAAC,IAAI,EAAE,gBAAgB,GAAG,OAAO;IAQ5C,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI;IAO/C,QAAQ,CAAC,OAAO,GAAI,WAAW,sBAAsB,KAAG,OAAO,CAc9D;IAED,OAAO,CAAC,OAAO;
|
|
1
|
+
{"version":3,"file":"sixel-graphics.d.ts","sourceRoot":"","sources":["../../../src/ink/sixel-graphics.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,kBAAkB,EAAE,WAAW,EAA2C,MAAM,kBAAkB,CAAA;AAChH,OAAO,EAIL,KAAK,gBAAgB,EAAE,KAAK,sBAAsB,EACnD,MAAM,qBAAqB,CAAA;AAC5B,OAAO,EAAuB,KAAK,MAAM,EAAE,MAAM,aAAa,CAAA;AAC9D,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,YAAY,CAAA;AAwBtC,KAAK,OAAO,GAAG,CAAC,OAAO,EAAE,kBAAkB,KAAK,OAAO,CAAC,WAAW,CAAC,CAAA;AAiBpE,oFAAoF;AACpF,qBAAa,oBAAoB;IAyBnB,OAAO,CAAC,QAAQ,CAAC,OAAO;IAAc,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC;IAxB3E,OAAO,CAAC,IAAI,CAA+C;IAC3D,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAoC;IACxD,OAAO,CAAC,MAAM,CAAI;IAClB,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAwC;IAC9D,OAAO,CAAC,WAAW,CAAI;IACvB,OAAO,CAAC,UAAU,CAAI;IACtB,OAAO,CAAC,MAAM,CAAqB;IACnC,OAAO,CAAC,OAAO,CAAgB;IAC/B,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAiC;IACvD,OAAO,CAAC,OAAO,CAAoB;IACnC,OAAO,CAAC,SAAS,CAAmC;IACpD,OAAO,CAAC,WAAW,CAAmC;IACtD,wEAAwE;IACxE,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAmC;IACxD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAwB;IAChD,OAAO,CAAC,MAAM,CAAoB;IAClC,OAAO,CAAC,UAAU,CAAoB;IACtC,OAAO,CAAC,YAAY,CAAuC;IAC3D,OAAO,CAAC,QAAQ,CAAQ;IACxB,OAAO,CAAC,KAAK,CAAQ;IACrB,OAAO,CAAC,OAAO,CAAI;IACnB,OAAO,CAAC,IAAI,CAAI;IAChB,OAAO,CAAC,cAAc,CAAQ;gBAED,OAAO,EAAE,MAAM,IAAI,EAAmB,OAAO,CAAC,EAAE,OAAO,YAAA;IAEpF,IAAI,QAAQ,IAAI,OAAO,CAAgE;IAEvF,cAAc,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI;IAKtC,WAAW,CAAC,IAAI,EAAE,gBAAgB,GAAG,OAAO;IAQ5C,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI;IAO/C,QAAQ,CAAC,OAAO,GAAI,WAAW,sBAAsB,KAAG,OAAO,CAc9D;IAED,OAAO,CAAC,OAAO;IAkDf;;;;;;;;;;;;;;;;OAgBG;IACH,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,SAAS,sBAAsB,EAAE,GAAG;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE;IAwGhI,iFAAiF;IACjF,KAAK,CAAC,IAAI,EAAE,IAAI,GAAG,MAAM;IAmBzB,aAAa,IAAI,IAAI;IAErB,KAAK,IAAI,MAAM;IAWf,OAAO,IAAI,MAAM;IAajB,OAAO,CAAC,KAAK;IAiBb,OAAO,CAAC,WAAW;IAcnB,OAAO,CAAC,UAAU;IAwBlB,OAAO,CAAC,KAAK;IAWb,OAAO,CAAC,QAAQ;IAchB,OAAO,CAAC,cAAc;CAkEvB"}
|
|
@@ -122,13 +122,15 @@ export class SixelGraphicsManager {
|
|
|
122
122
|
const cropHeight = Math.min((bottom - y) * this.cell.height, height - top, Math.floor((this.rows - y) * this.cell.height / 6) * 6);
|
|
123
123
|
if (cropWidth <= 0 || cropHeight <= 0)
|
|
124
124
|
return undefined;
|
|
125
|
-
|
|
126
|
-
|
|
125
|
+
// Undefined keeps the raster transparent (only ink pixels are painted); a
|
|
126
|
+
// colour flattens onto it, for images that sit on a painted surface.
|
|
127
|
+
const background = placement.background;
|
|
128
|
+
const assetKey = `${id}:${placement.source.width}:${placement.source.height}:${width}:${height}:${placement.transparent === true ? 'transparent' : background ?? 'default'}`;
|
|
127
129
|
const key = `${assetKey}:${left}:${top}:${cropWidth}:${cropHeight}`;
|
|
128
130
|
return {
|
|
129
131
|
assetKey, key, placement, ready: false,
|
|
130
132
|
rect: { x, y, columns: Math.ceil(cropWidth / this.cell.width), rows: Math.ceil(cropHeight / this.cell.height) },
|
|
131
|
-
request: { source: placement.source, width, height, background, presentation: placement.presentation,
|
|
133
|
+
request: { source: placement.source, width, height, ...(background === undefined ? {} : { background }), ...(placement.transparent === true ? { transparent: true } : {}), presentation: placement.presentation,
|
|
132
134
|
crop: { left, top, width: cropWidth, height: cropHeight } },
|
|
133
135
|
};
|
|
134
136
|
}
|
|
@@ -332,6 +332,15 @@ export type Styles = {
|
|
|
332
332
|
* doesn't pick up leading whitespace from middle rows.
|
|
333
333
|
*/
|
|
334
334
|
readonly noSelect?: boolean | 'from-left-edge';
|
|
335
|
+
/**
|
|
336
|
+
* This one-row box continues the line of the row above it: the break
|
|
337
|
+
* between them is a wrap, not a newline, so a fullscreen copy joins the
|
|
338
|
+
* two rows (as it does for wrapped <Text>). The value is the width of the
|
|
339
|
+
* row above, in columns from this box's left edge — where that row's
|
|
340
|
+
* content ends. For rows laid out outside <Text> (a paragraph with inline
|
|
341
|
+
* images); selection-only, no effect on painting.
|
|
342
|
+
*/
|
|
343
|
+
readonly softWrapContinuation?: number;
|
|
335
344
|
};
|
|
336
345
|
/**
|
|
337
346
|
* Apply a style diff to a layout node, delegating each property group to its
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"styles.d.ts","sourceRoot":"","sources":["../../../src/ink/styles.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"styles.d.ts","sourceRoot":"","sources":["../../../src/ink/styles.ts"],"names":[],"mappings":"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"}
|
|
@@ -59,6 +59,14 @@ export interface TerminalImagePlacement {
|
|
|
59
59
|
readonly rows: number;
|
|
60
60
|
};
|
|
61
61
|
readonly background?: string;
|
|
62
|
+
/**
|
|
63
|
+
* Float on the terminal: the raster paints only its covered pixels and
|
|
64
|
+
* leaves the rest untouched, instead of compositing onto a backing colour.
|
|
65
|
+
* Sixel cannot express partial alpha, so coverage is promoted to a hard
|
|
66
|
+
* mask at encode time. Formulas and artwork with transparent margins use
|
|
67
|
+
* this.
|
|
68
|
+
*/
|
|
69
|
+
readonly transparent?: boolean;
|
|
62
70
|
/** False while a protocol-specific raster is pending or unavailable. */
|
|
63
71
|
readonly graphicsReady?: boolean;
|
|
64
72
|
/** Later paint operations cover part of this raster's visible cells. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"terminal-image.d.ts","sourceRoot":"","sources":["../../../src/ink/terminal-image.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"terminal-image.d.ts","sourceRoot":"","sources":["../../../src/ink/terminal-image.ts"],"names":[],"mappings":"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"}
|