[READ-ONLY] Mirror of https://github.com/bombshell-dev/clack. Effortlessly build beautiful command-line apps bomb.sh/docs/clack/basics/getting-started/
cli command-line command-line-app node prompt prompts
5

Configure Feed

Select the types of activity you want to include in your feed.

fix(note): hard wrap (#383)

Co-authored-by: James Garbutt <43081j@users.noreply.github.com>

authored by

Hyper-Z11
James Garbutt
and committed by
GitHub
(Sep 5, 2025, 10:47 AM +0100) 2839c663 09e596c6

+124 -115
+5
.changeset/great-lies-dance.md
··· 1 + --- 2 + "@clack/prompts": patch 3 + --- 4 + 5 + fix(note): hard wrap text to column limit
+7 -3
packages/prompts/src/note.ts
··· 2 2 import type { Writable } from 'node:stream'; 3 3 import { stripVTControlCharacters as strip } from 'node:util'; 4 4 import { getColumns } from '@clack/core'; 5 - import { wrapAnsi } from 'fast-wrap-ansi'; 5 + import { type Options as WrapAnsiOptions, wrapAnsi } from 'fast-wrap-ansi'; 6 6 import color from 'picocolors'; 7 7 import { 8 8 type CommonOptions, ··· 22 22 const defaultNoteFormatter = (line: string): string => color.dim(line); 23 23 24 24 const wrapWithFormat = (message: string, width: number, format: FormatFn): string => { 25 - const wrapMsg = wrapAnsi(message, width).split('\n'); 25 + const opts: WrapAnsiOptions = { 26 + hard: true, 27 + trim: false, 28 + }; 29 + const wrapMsg = wrapAnsi(message, width, opts).split('\n'); 26 30 const maxWidthNormal = wrapMsg.reduce((sum, ln) => Math.max(strip(ln).length, sum), 0); 27 31 const maxWidthFormat = wrapMsg 28 32 .map(format) 29 33 .reduce((sum, ln) => Math.max(strip(ln).length, sum), 0); 30 34 const wrapWidth = width - (maxWidthFormat - maxWidthNormal); 31 - return wrapAnsi(message, wrapWidth); 35 + return wrapAnsi(message, wrapWidth, opts); 32 36 }; 33 37 34 38 export const note = (message = '', title = '', opts?: NoteOptions) => {
+112 -112
packages/prompts/test/__snapshots__/note.test.ts.snap
··· 3 3 exports[`note (isCI = false) > don't overflow 1`] = ` 4 4 [ 5 5 "│ 6 - ◇ title ───────────────────────────────────────────────────────────────────╮ 7 - │ │ 8 - │ test string test string test string test string test string test string │ 9 - │ test string test string test string test string test string test string │ 10 - │ test string test string test string test string test string test string │ 11 - │ test string test string test string test string test string test string │ 12 - │ test string test string test string test string test string test string │ 13 - │ test string test string │ 14 - │ test string test string test string test string test string test string │ 15 - │ test string test string test string test string test string test string │ 16 - │ test string test string test string test string test string test string │ 17 - │ test string test string test string test string test string test string │ 18 - │ test string test string test string test string test string test string │ 19 - │ test string test string │ 20 - │ test string test string test string test string test string test string │ 21 - │ test string test string test string test string test string test string │ 22 - │ test string test string test string test string test string test string │ 23 - │ test string test string test string test string test string test string │ 24 - │ test string test string test string test string test string test string │ 25 - │ test string test string │ 26 - │ test string test string test string test string test string test string │ 27 - │ test string test string test string test string test string test string │ 28 - │ test string test string test string test string test string test string │ 29 - │ test string test string test string test string test string test string │ 30 - │ test string test string test string test string test string test string │ 31 - │ test string test string │ 32 - │ │ 33 - ├───────────────────────────────────────────────────────────────────────────╯ 6 + ◇ title ────────────────────────────────────────────────────────────────────╮ 7 + │ │ 8 + │ test string test string test string test string test string test string  │ 9 + │ test string test string test string test string test string test string  │ 10 + │ test string test string test string test string test string test string  │ 11 + │ test string test string test string test string test string test string  │ 12 + │ test string test string test string test string test string test string  │ 13 + │ test string test string  │ 14 + │ test string test string test string test string test string test string  │ 15 + │ test string test string test string test string test string test string  │ 16 + │ test string test string test string test string test string test string  │ 17 + │ test string test string test string test string test string test string  │ 18 + │ test string test string test string test string test string test string  │ 19 + │ test string test string  │ 20 + │ test string test string test string test string test string test string  │ 21 + │ test string test string test string test string test string test string  │ 22 + │ test string test string test string test string test string test string  │ 23 + │ test string test string test string test string test string test string  │ 24 + │ test string test string test string test string test string test string  │ 25 + │ test string test string  │ 26 + │ test string test string test string test string test string test string  │ 27 + │ test string test string test string test string test string test string  │ 28 + │ test string test string test string test string test string test string  │ 29 + │ test string test string test string test string test string test string  │ 30 + │ test string test string test string test string test string test string  │ 31 + │ test string test string │ 32 + │ │ 33 + ├────────────────────────────────────────────────────────────────────────────╯ 34 34 ", 35 35 ] 36 36 `; ··· 38 38 exports[`note (isCI = false) > don't overflow with formatter 1`] = ` 39 39 [ 40 40 "│ 41 - ◇ title ──────────────────────────────────────────────────────────────────╮ 42 - │ │ 43 - │ * test string test string test string test string test string test * │ 44 - │ * string test string test string test string test string test string * │ 45 - │ * test string test string test string test string test string test * │ 46 - │ * string test string test string test string test string test string * │ 47 - │ * test string test string test string test string test string test * │ 48 - │ * string test string test string test string test string * │ 49 - │ * test string test string test string test string test string test * │ 50 - │ * string test string test string test string test string test string * │ 51 - │ * test string test string test string test string test string test * │ 52 - │ * string test string test string test string test string test string * │ 53 - │ * test string test string test string test string test string test * │ 54 - │ * string test string test string test string test string * │ 55 - │ * test string test string test string test string test string test * │ 56 - │ * string test string test string test string test string test string * │ 57 - │ * test string test string test string test string test string test * │ 58 - │ * string test string test string test string test string test string * │ 59 - │ * test string test string test string test string test string test * │ 60 - │ * string test string test string test string test string * │ 61 - │ * test string test string test string test string test string test * │ 62 - │ * string test string test string test string test string test string * │ 63 - │ * test string test string test string test string test string test * │ 64 - │ * string test string test string test string test string test string * │ 65 - │ * test string test string test string test string test string test * │ 66 - │ * string test string test string test string test string * │ 67 - │ │ 68 - ├──────────────────────────────────────────────────────────────────────────╯ 41 + ◇ title ───────────────────────────────────────────────────────────────────╮ 42 + │ │ 43 + │ * test string test string test string test string test string test  * │ 44 + │ * string test string test string test string test string test string  * │ 45 + │ * test string test string test string test string test string test  * │ 46 + │ * string test string test string test string test string test string  * │ 47 + │ * test string test string test string test string test string test  * │ 48 + │ * string test string test string test string test string  * │ 49 + │ * test string test string test string test string test string test  * │ 50 + │ * string test string test string test string test string test string  * │ 51 + │ * test string test string test string test string test string test  * │ 52 + │ * string test string test string test string test string test string  * │ 53 + │ * test string test string test string test string test string test  * │ 54 + │ * string test string test string test string test string  * │ 55 + │ * test string test string test string test string test string test  * │ 56 + │ * string test string test string test string test string test string  * │ 57 + │ * test string test string test string test string test string test  * │ 58 + │ * string test string test string test string test string test string  * │ 59 + │ * test string test string test string test string test string test  * │ 60 + │ * string test string test string test string test string  * │ 61 + │ * test string test string test string test string test string test  * │ 62 + │ * string test string test string test string test string test string  * │ 63 + │ * test string test string test string test string test string test  * │ 64 + │ * string test string test string test string test string test string  * │ 65 + │ * test string test string test string test string test string test  * │ 66 + │ * string test string test string test string test string * │ 67 + │ │ 68 + ├───────────────────────────────────────────────────────────────────────────╯ 69 69 ", 70 70 ] 71 71 `; ··· 126 126 exports[`note (isCI = true) > don't overflow 1`] = ` 127 127 [ 128 128 "│ 129 - ◇ title ───────────────────────────────────────────────────────────────────╮ 130 - │ │ 131 - │ test string test string test string test string test string test string │ 132 - │ test string test string test string test string test string test string │ 133 - │ test string test string test string test string test string test string │ 134 - │ test string test string test string test string test string test string │ 135 - │ test string test string test string test string test string test string │ 136 - │ test string test string │ 137 - │ test string test string test string test string test string test string │ 138 - │ test string test string test string test string test string test string │ 139 - │ test string test string test string test string test string test string │ 140 - │ test string test string test string test string test string test string │ 141 - │ test string test string test string test string test string test string │ 142 - │ test string test string │ 143 - │ test string test string test string test string test string test string │ 144 - │ test string test string test string test string test string test string │ 145 - │ test string test string test string test string test string test string │ 146 - │ test string test string test string test string test string test string │ 147 - │ test string test string test string test string test string test string │ 148 - │ test string test string │ 149 - │ test string test string test string test string test string test string │ 150 - │ test string test string test string test string test string test string │ 151 - │ test string test string test string test string test string test string │ 152 - │ test string test string test string test string test string test string │ 153 - │ test string test string test string test string test string test string │ 154 - │ test string test string │ 155 - │ │ 156 - ├───────────────────────────────────────────────────────────────────────────╯ 129 + ◇ title ────────────────────────────────────────────────────────────────────╮ 130 + │ │ 131 + │ test string test string test string test string test string test string  │ 132 + │ test string test string test string test string test string test string  │ 133 + │ test string test string test string test string test string test string  │ 134 + │ test string test string test string test string test string test string  │ 135 + │ test string test string test string test string test string test string  │ 136 + │ test string test string  │ 137 + │ test string test string test string test string test string test string  │ 138 + │ test string test string test string test string test string test string  │ 139 + │ test string test string test string test string test string test string  │ 140 + │ test string test string test string test string test string test string  │ 141 + │ test string test string test string test string test string test string  │ 142 + │ test string test string  │ 143 + │ test string test string test string test string test string test string  │ 144 + │ test string test string test string test string test string test string  │ 145 + │ test string test string test string test string test string test string  │ 146 + │ test string test string test string test string test string test string  │ 147 + │ test string test string test string test string test string test string  │ 148 + │ test string test string  │ 149 + │ test string test string test string test string test string test string  │ 150 + │ test string test string test string test string test string test string  │ 151 + │ test string test string test string test string test string test string  │ 152 + │ test string test string test string test string test string test string  │ 153 + │ test string test string test string test string test string test string  │ 154 + │ test string test string │ 155 + │ │ 156 + ├────────────────────────────────────────────────────────────────────────────╯ 157 157 ", 158 158 ] 159 159 `; ··· 161 161 exports[`note (isCI = true) > don't overflow with formatter 1`] = ` 162 162 [ 163 163 "│ 164 - ◇ title ──────────────────────────────────────────────────────────────────╮ 165 - │ │ 166 - │ * test string test string test string test string test string test * │ 167 - │ * string test string test string test string test string test string * │ 168 - │ * test string test string test string test string test string test * │ 169 - │ * string test string test string test string test string test string * │ 170 - │ * test string test string test string test string test string test * │ 171 - │ * string test string test string test string test string * │ 172 - │ * test string test string test string test string test string test * │ 173 - │ * string test string test string test string test string test string * │ 174 - │ * test string test string test string test string test string test * │ 175 - │ * string test string test string test string test string test string * │ 176 - │ * test string test string test string test string test string test * │ 177 - │ * string test string test string test string test string * │ 178 - │ * test string test string test string test string test string test * │ 179 - │ * string test string test string test string test string test string * │ 180 - │ * test string test string test string test string test string test * │ 181 - │ * string test string test string test string test string test string * │ 182 - │ * test string test string test string test string test string test * │ 183 - │ * string test string test string test string test string * │ 184 - │ * test string test string test string test string test string test * │ 185 - │ * string test string test string test string test string test string * │ 186 - │ * test string test string test string test string test string test * │ 187 - │ * string test string test string test string test string test string * │ 188 - │ * test string test string test string test string test string test * │ 189 - │ * string test string test string test string test string * │ 190 - │ │ 191 - ├──────────────────────────────────────────────────────────────────────────╯ 164 + ◇ title ───────────────────────────────────────────────────────────────────╮ 165 + │ │ 166 + │ * test string test string test string test string test string test  * │ 167 + │ * string test string test string test string test string test string  * │ 168 + │ * test string test string test string test string test string test  * │ 169 + │ * string test string test string test string test string test string  * │ 170 + │ * test string test string test string test string test string test  * │ 171 + │ * string test string test string test string test string  * │ 172 + │ * test string test string test string test string test string test  * │ 173 + │ * string test string test string test string test string test string  * │ 174 + │ * test string test string test string test string test string test  * │ 175 + │ * string test string test string test string test string test string  * │ 176 + │ * test string test string test string test string test string test  * │ 177 + │ * string test string test string test string test string  * │ 178 + │ * test string test string test string test string test string test  * │ 179 + │ * string test string test string test string test string test string  * │ 180 + │ * test string test string test string test string test string test  * │ 181 + │ * string test string test string test string test string test string  * │ 182 + │ * test string test string test string test string test string test  * │ 183 + │ * string test string test string test string test string  * │ 184 + │ * test string test string test string test string test string test  * │ 185 + │ * string test string test string test string test string test string  * │ 186 + │ * test string test string test string test string test string test  * │ 187 + │ * string test string test string test string test string test string  * │ 188 + │ * test string test string test string test string test string test  * │ 189 + │ * string test string test string test string test string * │ 190 + │ │ 191 + ├───────────────────────────────────────────────────────────────────────────╯ 192 192 ", 193 193 ] 194 194 `;