Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

v3.1 Release #2559

Closed
wants to merge 453 commits into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
453 commits
Select commit Hold shift + click to select a range
ab45bf7
Merge pull request #2373 from midichef/side_colors
anjakefala May 17, 2024
e8db0ae
[text] pass through kwargs in open_text_source to open #2374
saulpw May 17, 2024
c744cde
[options] rename options.note_* to options.disp_note_* #2381
saulpw May 19, 2024
e96ffa9
[sheets] display cell notes using clipdraw to allow onclick #2381
saulpw May 19, 2024
54f8147
Merge pull request #2392 from midichef/replay_row_duplication
anjakefala May 20, 2024
05536fb
Merge pull request #2378 from midichef/keypresses_screen
anjakefala May 20, 2024
e31c90c
Merge pull request #2360 from midichef/http_errors
anjakefala May 20, 2024
b0b601f
[dev] update bug report template #2397
saulpw May 21, 2024
950725a
[tests-] add test for pr #2400
anjakefala May 22, 2024
4d596a9
Merge pull request #2400 from midichef/merge_diff_empty
anjakefala May 22, 2024
21a2c00
[tests-] check timing of replaying large sheets #2369
anjakefala May 22, 2024
033c65c
Merge pull request #2369 from midichef/mainloop_timeout
anjakefala May 22, 2024
1ece22d
[viewtsv] fix missing import and argument to open_tsv
tavisrudd May 22, 2024
d77d021
Merge pull request #2411 from tavisrudd/patch-1
anjakefala May 23, 2024
a6a1be8
Merge pull request #2370 from midichef/status_latency
anjakefala May 23, 2024
4f678e0
[globals] import math.*; export datetime and date as the vd date subc…
saulpw May 22, 2024
8603dc6
[date-] add missing type-datedelta and to menu
saulpw May 23, 2024
447686c
[aggregators] cleanup into Aggregator.aggregate()
saulpw May 23, 2024
521410e
[layout] hidden columns accessible beyond right of sheet #2394
saulpw May 23, 2024
c4cd7a0
[dev] rename Sheet._ordered_cols to Sheet.availCols
saulpw May 24, 2024
7122913
[sheets-] clear more drawcache properties in addColumn
saulpw May 24, 2024
8a8f92e
[tests] remove large test files
saulpw May 24, 2024
7a9ce02
[dev] add some lingering docs
saulpw May 24, 2024
b44b80d
[colorizers-] expand into separate classes
saulpw May 24, 2024
c9e07eb
[vdplus] move vestigial vdplus into new platform dir
saulpw May 24, 2024
d5ca442
Merge pull request #2186 from midichef/status_longname
anjakefala May 24, 2024
fdb0509
[tests] add load-xpt
anjakefala May 24, 2024
a9980b3
Merge pull request #2365 from midichef/xport_v2
anjakefala May 24, 2024
52384b1
Merge pull request #2352 from midichef/ensureloaded_misc
anjakefala May 24, 2024
38e3137
Merge pull request #2351 from midichef/join_loads
anjakefala May 24, 2024
448318d
[history] create visidata_dir if not exists #2298
saulpw May 24, 2024
e00e8d8
[mouse-] guide error-cell with ErrorCellSheet
midichef Apr 15, 2024
f513f8b
[csv-] use newline='' for opening files
midichef May 25, 2024
1a3b1e4
[csv- json- jsonla-] handle error in guess of empty file
midichef Apr 27, 2024
9fe6adc
[jsonla-] handle decoding errors in filetype guess
midichef Apr 30, 2024
738bb8b
[dev] drop support for Python 3.7 #2231
anjakefala Jun 3, 2024
3e7ded5
[shell] ensure add-col shell is properly quoted #2415
anjakefala Jun 3, 2024
b2648f9
Merge pull request #2418 from saulpw/kef/3.7
anjakefala Jun 3, 2024
5258503
[dev] reorder sections in bug report template
saulpw Jun 4, 2024
c01c2b5
[unfurl] column cursor finish on unfurled column
saulpw Jun 4, 2024
8fea025
[save-] handle empty delimiter when safety_first
midichef Jun 9, 2024
5723b4b
[graph] add g. on ColumnsSheet #2424
saulpw Jun 22, 2024
bfeb999
[misc-] fix minor errors in symbol imports/references
midichef Apr 21, 2024
9e79edf
[misc-] remove imports of already imported symbols
midichef Apr 21, 2024
10edc8f
[path-] remove redundant overridden stat() function
midichef Apr 21, 2024
b2cda95
[column-] fix var name typo in displayer_full
midichef Apr 22, 2024
8e3e04a
[form-] fix missing vars in replayCommand
midichef Apr 22, 2024
c930a3c
[orgmode-] fix var name typo in putChanges
midichef Apr 22, 2024
8c16d46
Merge pull request #2412 from midichef/guess_errors
anjakefala Jun 25, 2024
dfb8aa8
Merge pull request #2361 from midichef/batch_reload
anjakefala Jun 25, 2024
dfc4773
[loaders] msgpack #2419
saulpw Jun 9, 2024
6250b7c
[path-] split into Path.open into open_bytes/open_text; reopen stdin …
saulpw Jun 28, 2024
002cd84
Merge pull request #2422 from maxim-uvarov/pw24_msgpack
anjakefala Jun 28, 2024
557dcf5
[fec-] remove open_fec() from globals
midichef Mar 5, 2024
2ecb220
[fec-] restore ability to dive into rows #2433
midichef Jun 28, 2024
9421130
[sheets- pyobj-] fix minor typos
midichef Feb 27, 2024
dcb64ec
[modify-] clarify prompt for add-rows
midichef Jun 27, 2024
cb95380
[modify-] clarify warnings for undo after commit
midichef Jun 29, 2024
269f7a3
[sheet-] in execCommand(), fail if cmd does not exist
midichef Jun 30, 2024
9072885
[main-] load macros for batch mode
midichef Jul 1, 2024
12b5079
[tests-] enable formerly inactive test for macro
midichef Jun 30, 2024
7d4b590
Merge pull request #2432 from midichef/misc_minor_202406
anjakefala Jul 1, 2024
90d3409
Merge pull request #2374 from midichef/csv_newline
anjakefala Jul 1, 2024
fbd06c8
[column-] make cell error symbol clickable
midichef May 24, 2024
173285c
Merge pull request #2381 from midichef/error_note_click
anjakefala Jul 1, 2024
759cc10
[command] deprecate view-cell #2381
saulpw Jul 1, 2024
de378e6
[theme] change color_clickable to bold #2381
saulpw Jul 1, 2024
2549f14
Merge pull request #2421 from midichef/safety_delimiter
anjakefala Jul 2, 2024
c979073
[unzip-http] bump to 0.5.1
anjakefala Jul 4, 2024
861fc7a
[unzip-http] update to latest version
anjakefala Jul 8, 2024
aa126fb
Merge pull request #2436 from midichef/exec_fail_noncmd
anjakefala Jul 8, 2024
d25095f
Merge pull request #2428 from midichef/pyflakes_symbols
anjakefala Jul 8, 2024
f6be80c
[tests] add test for loading fec
anjakefala Jul 9, 2024
f541b46
Merge pull request #2434 from midichef/fec_dive
anjakefala Jul 9, 2024
32a5994
[main- path-] make "-p -" replay stdin as a .vdj file
midichef May 27, 2024
2425a5f
[open-] fix hang after open-file runs on tty stdin
midichef May 8, 2024
144f0ad
[docs] document replay support from stdin for .vdj
anjakefala Jul 10, 2024
20aa4de
Merge pull request #2442 from midichef/replay_stdin
anjakefala Jul 10, 2024
fa32fd5
[dir-] remove vestigial commit binding
saulpw Jul 10, 2024
62d01ba
[indexsheet] Ctrl+C cancel threads on current row (sheet)
saulpw Jul 10, 2024
4b560b9
[status] only get status source when --debug #2370
saulpw Jul 10, 2024
79225d9
[help] theme colors improvements
saulpw Jul 10, 2024
b25371d
[ods] strip empty cells/rows from end #2440
saulpw Jul 10, 2024
a26a9f3
[desktop-] simplify Exec command string
midichef Jul 12, 2024
627f6f1
[tests] update tests for Python 3.12
anjakefala Jul 13, 2024
25d6997
Merge pull request #2452 from saulpw/kef/2447
anjakefala Jul 13, 2024
09f1a08
[tests-] add test extras: brotli, msgpack, xport v2
midichef Jul 13, 2024
b075e79
Merge pull request #2454 from midichef/setup_2024_07_13
anjakefala Jul 13, 2024
db93340
Merge pull request #2450 from midichef/desktop_exec
anjakefala Jul 14, 2024
7150d78
[show-command-info-] handle empty cmd and cmd does not exist
anjakefala Jul 14, 2024
97e2009
[xlsx] add options.xlsx_color_cells (default: True) to allow disablin…
anjakefala Jul 15, 2024
c92235d
Merge pull request #2455 from saulpw/kef/2317
anjakefala Jul 15, 2024
224b6f3
[dev] remove top-level deprecated guides
anjakefala Jul 17, 2024
6fff636
[csv tsv] remove default regex_skip of hash lines #2458
saulpw Jul 17, 2024
bd16ca7
[tests] pass tests if tsv keeps hash lines
midichef Jul 18, 2024
03420e1
Merge pull request #2461 from midichef/tests_keep_hash
anjakefala Jul 19, 2024
76cf850
[main-] when batch mode is interactive, keep undo, quitguard
midichef Jul 18, 2024
02b888b
Merge pull request #2459 from midichef/batch_interactive_options
anjakefala Jul 19, 2024
ad9769b
[tests-] add tests extra: fecfile
midichef Jul 18, 2024
f17c4a9
[build-] use test extra for installing test dependencies
anjakefala Jul 19, 2024
963c319
[tests-] add missing PyYAML test dep
anjakefala Jul 19, 2024
24fc8e0
Merge pull request #2462 from midichef/setup_2024_07_17
anjakefala Jul 19, 2024
8731df6
[docs-] document using visidata.exe for windows
anjakefala Jul 21, 2024
556df9f
Merge pull request #2468 from saulpw/kef/2262
anjakefala Jul 21, 2024
f34eee2
[guides-] give guides the same background colour as sidebar
anjakefala Jul 22, 2024
a9a1e87
[guide-] change current row cursor to underline
anjakefala Jul 22, 2024
0e8056c
Merge pull request #2469 from saulpw/kef/guides-color
anjakefala Jul 22, 2024
e95caa8
guide: initial type sheet
reagle Jul 17, 2024
de52c52
Merge pull request #2457 from reagle/develop
anjakefala Jul 23, 2024
8f823f5
[build] pin to a particular version of ibis
anjakefala Jul 23, 2024
68e21c5
[sheets-] prevent offscreen draw for tall col headers
midichef Aug 3, 2024
f6a6310
[canvas-] round consistently for point/label plots #2487
midichef Aug 5, 2024
f31f1cb
[canvas-] change mock window size from 80x25 to 1x1 #2171
midichef Aug 4, 2024
a653a32
[sheets-] prevent error msgs when col sep is empty #2491
midichef Aug 6, 2024
892960f
[dirsheet] open-row-filetype opens row after querying for filetype
anjakefala Aug 6, 2024
7c9531c
Merge pull request #2491 from midichef/empty_colsep
anjakefala Aug 7, 2024
15fad9a
Merge pull request #2487 from midichef/graph_plot_points
anjakefala Aug 7, 2024
66d4b3f
Merge pull request #2484 from midichef/addstr_bounds_y
anjakefala Aug 7, 2024
5c6044a
[docs] add options to TypeSheet.md
anjakefala Jul 25, 2024
253e314
Merge pull request #2471 from saulpw/kef/typesheet
anjakefala Aug 7, 2024
07e7406
[sort-] order with Columns ASAP, not colnames #2494
midichef Aug 9, 2024
f5c07df
Merge pull request #2494 from midichef/sort_col_not_name
anjakefala Aug 10, 2024
62361d6
[input-] honor record=False for input()
midichef Aug 23, 2024
528a568
[docs input] update docstring with record behaviour
anjakefala Aug 26, 2024
cd0eb7f
Merge pull request #2499 from midichef/input_do_not_record
anjakefala Aug 26, 2024
98c412a
[input-] fix input(record=False) ignoring typed input
midichef Aug 27, 2024
8cb1b60
[input-] keep inputMultiple() input during redo
midichef Aug 27, 2024
3a05bd7
Merge pull request #2501 from midichef/input_record_fix
anjakefala Aug 28, 2024
e118a0f
[misc-] remove blank lines before elif/else #2504
midichef Aug 30, 2024
f23b825
[markdown] use col_href as link for col
saulpw Jul 29, 2024
9e3fab1
[open-rows-] make asyncthread
saulpw Aug 7, 2024
9979479
[status] show time on thread completion
saulpw Aug 7, 2024
b4d9a55
[sidebar] Ctrl+G to cycle in both main and input modes #2202
saulpw Aug 31, 2024
4572109
[format] display '{field_name}' when field_name is not an in-scope va…
anjakefala Aug 31, 2024
b59ceea
[multiline] pass disp_wrap_* options to textwrap #2506
saulpw Sep 1, 2024
6576e16
[expr] add memory to autocomplete keys #2509
saulpw Sep 4, 2024
5843899
[test-] fix sheetless input
saulpw Sep 4, 2024
378a459
[save-] derived null in text formats should be empty string #2476
saulpw Sep 4, 2024
077ce77
[test-] fix goldens #2476
saulpw Sep 4, 2024
d30ca33
[eml-] save email parts without filenames #2376
saulpw Sep 4, 2024
4ba099f
[xpt] upgrade to xport>=3 #2364
saulpw Sep 5, 2024
e700a8c
[pyobj-] simplify pyobj type checks
saulpw Sep 5, 2024
97b7bbf
[tests] update xpt test version
anjakefala Sep 5, 2024
772d871
[test] specify pandas version
anjakefala Sep 5, 2024
87c6dc5
[test] fix minimum pandas version to 1.5.3
anjakefala Sep 5, 2024
06e5067
[tests] turn off load-xpt for python 3.12
anjakefala Sep 5, 2024
bbfbb45
[window] pad lists with None so all are same size #2279
saulpw Sep 5, 2024
4ac3532
Merge pull request #2516 from saulpw/test-pandas
anjakefala Sep 5, 2024
f7f24d7
[undo-] cmdlog always use rowidx, not rowkey #2246
saulpw Sep 5, 2024
99508c0
[cmdlog-] commented lines apply in .vdj even if overridden on JsonLin…
saulpw Sep 5, 2024
ad53f9b
[join doc-] clarify merge function #1843
saulpw Sep 6, 2024
9e36459
[cmdlog] add replay= kwargs to addCommand to selectively disable logging
saulpw Sep 7, 2024
db75a25
[undo-] fix row input vars
saulpw Sep 7, 2024
bf580b9
[input] refactor into InputWidget
saulpw Sep 9, 2024
5e13b7c
[type] addType auto-add to globals
saulpw Sep 9, 2024
86193cf
[dev] cleanup unused imports
saulpw Sep 9, 2024
821d23d
[settings] selectively add keys from .visidatarc.__all__
saulpw Sep 9, 2024
636edc3
[expr] create user subset of globals used for tab completion
saulpw Sep 9, 2024
12f1d89
[dev-] fix build for older versions
saulpw Sep 9, 2024
585a652
[test-] fix completer test; lognormvariate not in completions
saulpw Sep 9, 2024
df5e823
[types-] give names to unnamed types
saulpw Sep 9, 2024
21f4117
[mouse-] clicking when disp_menu=0 raises exception
saulpw Sep 9, 2024
c12e3b0
[test-] deprecated does not add its globals
saulpw Sep 9, 2024
cc43b1d
Revert "[expr] create user subset of globals used for tab completion"…
saulpw Sep 10, 2024
85ddd76
[globals] remove importStar, import stdlib symbols deliberately
saulpw Sep 10, 2024
d603a74
[status-] show thread time only if disp_expert < 0 or --profile
saulpw Sep 10, 2024
46f2c44
[menu] Ctrl+H escapes the menu
saulpw Sep 12, 2024
7f580e7
[json] remove column type inference #2475 #2131
saulpw Sep 13, 2024
30073b0
[json-] fix tests
saulpw Sep 13, 2024
3c19ede
[help-] avoid errors for commands with no menu path
midichef Sep 13, 2024
d1ba5c7
[help-] widen command description column
midichef Sep 13, 2024
b0092d5
[mailbox-] for "mbox" filetype, also accept "mailbox"
midichef Sep 20, 2024
325c993
[xml-] save XML as utf-8 instead of utf-8-sig #2520
midichef Sep 20, 2024
0fa285e
[sidebar-] speed up default_sidebar
midichef Sep 15, 2024
63984dd
[docs guides] Add a new ColumnsGuide (#2527)
thejud Sep 23, 2024
e9d0202
[ddw] allow passing of fillchar variable (used by darkdraw)
anjakefala Sep 23, 2024
2515b9b
[macros] update docstr and add to System menu
saulpw Sep 23, 2024
8cde857
[macro] record all commands; add status indicator #2435
saulpw Sep 23, 2024
ed09663
[docs] add note that regex operations apply to display values #2481
anjakefala Sep 23, 2024
d8d3f82
[freq] refactor histogram to work on any column #2208
saulpw Sep 23, 2024
f890b9a
[multiline] only expand cursor row when options.disp_multiline_focus …
saulpw Sep 23, 2024
aa92f5b
[guides] Add the SlideGuide describing column and row movement (#2529)
thejud Sep 24, 2024
f9c4ce1
[guides] Add a new ClipboardGuide describing cut/copy/paste (#2530)
thejud Sep 24, 2024
523dd03
[grep-] add loader for output of grep/ripgrep (#2443)
midichef Sep 24, 2024
295bbd1
[guides] Add a new guide about the MemorySheet (#2532)
thejud Sep 24, 2024
c1c5523
[editor-] fix ^O value being set in sheet
anjakefala Sep 25, 2024
e337610
Merge pull request #2503 from midichef/inputmultiple_redo
anjakefala Sep 25, 2024
5d2f146
Add a new guide for the CommandsSheet. (#2535)
thejud Sep 27, 2024
136d671
[dedupe-] move Basesheet row commands to TableSheet
midichef Sep 28, 2024
6eeeb70
[docs-] recommend help.commands.long-name syntax for guides
anjakefala Sep 30, 2024
9f3960f
Add a SplitPaneGuide (#2533)
thejud Sep 30, 2024
4719dea
[guide] Add a basic ModifyGuide (#2537)
thejud Sep 30, 2024
837adbc
[dev] migrate ExprColumn to expr.py
saulpw Sep 23, 2024
61b3e91
[setcol-expr] do not set value on error
saulpw Sep 23, 2024
b59b745
[setcol-expr] show true number set
saulpw Sep 23, 2024
a62b520
[expr] support curcol in g= and other non-ExprColumn expressions #2524
saulpw Sep 30, 2024
1af5fcd
[change-precision] fail on untyped column #2523
saulpw Sep 30, 2024
f371e86
[f5log-] missing import zoneinfo
saulpw Sep 30, 2024
97c31c3
[expr-] allow row["colname"] and row.colname #2539
saulpw Oct 1, 2024
af8433e
[commands] exec-longname-simple for old non-palette input
saulpw Oct 1, 2024
3f587ee
[macro-] do not record macro inner steps #2531
saulpw Oct 1, 2024
13216e2
[theme] default "white on 233" fixes gnome-terminal
saulpw Oct 1, 2024
eb0fa41
[theme] default "white on black" for higher contrast
saulpw Oct 2, 2024
7c24ffe
[loaders] options.max_rows to stop early #2356
saulpw Oct 2, 2024
ff7c37e
[show-expr-] fix test with curcol for evalExpr
saulpw Oct 2, 2024
6047cdc
[docs] update built manpage
saulpw Oct 2, 2024
dc8c259
[cliptext-] fix onclick url #2466
saulpw Oct 2, 2024
9f41f1e
[guides] hide "n" column
saulpw Oct 2, 2024
c31bbd6
[guides] Add the PivotGuide (#2536)
thejud Oct 2, 2024
87e635a
[canvas- graph-] draw lines at user-defined x or y
midichef Aug 17, 2024
21e89bf
[canvas- graph-] combine resetBounds and refresh
midichef Aug 21, 2024
0014525
[canvas- graph-] recalculate view after zooming/moving it
midichef Aug 26, 2024
541e552
[graph-] fix small y-error offset in resize-y-input
midichef Aug 26, 2024
f5fe494
[interface] slight bg glow for cursor column
saulpw Oct 3, 2024
b2027fc
[graph] add refline commands to Plot menu #2489
saulpw Oct 4, 2024
72f628d
[save-] do not log cell-value exceptions #2542
saulpw Oct 4, 2024
551b06c
[aggregators] async summary on bottom rows #2209
saulpw Oct 4, 2024
eebb684
[input] disable input palette when options.disp_expert set
saulpw Oct 4, 2024
a0ace0f
[vds-] use blank line for sheets with no rows #2342
saulpw Oct 4, 2024
feb0d60
[sheet] make 20 tabs clickable #2030
saulpw Oct 5, 2024
8fdf2c7
[expr] allow curcol in select- and search- #989
saulpw Oct 5, 2024
d50a1bf
[shell] add $curcol #989
saulpw Oct 5, 2024
51b4164
[shell] fix $curcol #989
saulpw Oct 5, 2024
0d3d529
[transpose-] allow to set values #2548
saulpw Oct 6, 2024
0557545
[shell-] currow property on sheet
saulpw Oct 6, 2024
7691657
[expert] no cmdpalette nor help if options.disp_expert>5 #1733
saulpw Oct 6, 2024
389c605
[columns-] fix test; hide expr attribute by default
saulpw Oct 6, 2024
3bdda47
Merge pull request #2485 from midichef/graph_window_init
anjakefala Oct 6, 2024
0a74faa
[features-] add command hide-uniform-cols
midichef Sep 28, 2024
c26d51d
Merge pull request #2453 from midichef/hide_boring_cols
anjakefala Oct 7, 2024
acdf5f7
[guides] Add a FrequencyTable Guide (#2534)
thejud Oct 7, 2024
ef6558e
[guides] Add an inital MeltGuide (#2544)
thejud Oct 7, 2024
51ebd51
[guides-] fix packaging of guides #2538
anjakefala Oct 7, 2024
b892832
[dev] update CHANGELOG
saulpw Oct 7, 2024
2f01432
[guides] pull guides from visidata module #2538
anjakefala Oct 8, 2024
545886a
[guides-] fix package data installation directory for guides
anjakefala Oct 9, 2024
7636756
[dev] minor update CHANGELOG
saulpw Oct 9, 2024
a64bc55
[status] hintStatus on menu line #2546
saulpw Oct 9, 2024
a24ef18
Revert "[window] pad lists with None so all are same size #2279"
saulpw Oct 10, 2024
749672f
[input-] fix ^V and ^N errors #2556
saulpw Oct 11, 2024
c189ba5
[multiline-] show disp_rowbot_sep #2556
saulpw Oct 11, 2024
1f9ca59
[multiline-] use bottom row when disp_multiline_focus #2556
saulpw Oct 11, 2024
a743607
[docs] update columns.md; add knownCols #1631
saulpw Oct 12, 2024
cccc06f
[guide] Add a RegexGuide (#2552)
thejud Oct 12, 2024
d68aca0
[guides-] add option to regex page
anjakefala Oct 12, 2024
90f7eee
[disp] multiline_focus True by default #2205
saulpw Oct 12, 2024
035d5dc
[xls] fail on non-local file #2557
saulpw Oct 13, 2024
329b7bc
[dev] update ROADMAP
saulpw Oct 14, 2024
a079ab0
[dev] prep for v3.1
saulpw Oct 14, 2024
19eb5ce
[build] do not test docs build on CI
anjakefala Oct 14, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
27 changes: 20 additions & 7 deletions .github/ISSUE_TEMPLATE/bug_report.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,17 +9,30 @@ assignees: ''

**Small description**

**Data to reproduce**

[Please include a small amount of sample data that demonstrates the issue.]

**Steps to reproduce**

[If the issue takes more than a few commands, please attach a [saved commandlog](http://visidata.org/docs/save-restore/).]

**Expected result**

**Actual result with screenshot**
If you get an unexpected error, please include the full stack trace that you get with `Ctrl-E`.

**Steps to reproduce with sample data and a .vd**
First try reproducing without any user configuration by using the flag `-N`.
e.g. `echo "abc" | vd -f txt -N`
[If there is an error message, please include the full stack trace shown with `Ctrl+E`.]

**Configuration**

Please attach the commandlog (saved with `Ctrl-D`) to show the steps that led to the issue.
See [here](http://visidata.org/docs/save-restore/) for more details.
- Does this issue reproduce without any plugins or configuration (using the `-N` CLI flag)?

- Does this issue reproduce with either the [latest release](https://www.visidata.org/releases/), or with the [develop branch](https://www.visidata.org/install/#update-visidata-from-an-existing-installation)?

**Additional context**
Please include the version of VisiData and Python.

- What platform and version are you using (Linux, MacOS, Windows)?

- Which version of Python?

- Which terminal are you using (for display and input issues)?
21 changes: 13 additions & 8 deletions .github/workflows/main.yml
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ jobs:

strategy:
matrix:
python-version: [3.7, 3.8, 3.9, "3.10", "3.11"]
python-version: [3.8, 3.9, "3.10", "3.11", "3.12"]

runs-on: ubuntu-latest
timeout-minutes: 20
Expand Down Expand Up @@ -43,9 +43,12 @@ jobs:
- name: Install lxml dependencies
run: sudo apt install -y libxml2-dev libxslt-dev

- name: Install ping dependencies
run: sudo apt install -y traceroute

- name: Install optional dependencies
run: |
pip3 install -r requirements.txt
pip3 install ".[test]"
pip3 install pytest

- name: Run unit tests
Expand All @@ -59,15 +62,17 @@ jobs:
- name: Test macros
run: |
mkdir -p ~/.visidata
cp tests/macros/macro* ~/.visidata/
cp tests/macros/macros.jsonl tests/macros/1.vdj ~/.visidata/
vd --batch -p tests/macros/test_macro.vd --output tests/macros/golden/test_macro.tsv
git --no-pager diff --numstat tests/
git --no-pager diff --exit-code tests/

- name: Check docs are built without errors
run: |
sudo apt install aha
dev/mkman.sh

- name: Ensure VisiData can create completions
run: python -v dev/zsh-completion.py

- name: Ensure VisiData does not drop lines from RepeatFiles
run: |
NUMLINES=$(seq 10000 | vd -b | wc -l)
if ! [[ $NUMLINES -eq 10000 ]]; then
exit 1
fi
127 changes: 127 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,132 @@
# VisiData version history

# v3.1 (2024-10-XX)

- drop support for Python 3.7 #2231
- [vdsql] bump ibis dep to v8
- [test] fix minimum pandas version to 1.5.3

## Improvements

- [sidebar] Ctrl+G to cycle sidebar (including off) in both main and input modes #2202
- [sidebar help] rightmost statusline ({vd.sidebarStatus}) shows number of help sidebars (clickable to toggle sidebar)
- [sheet tabs] left statusline sheet tabs (clickable to jump to sheet) #2030
- [aggregators] immediate async summary of column aggregators on bottom rows #2209
- [graph] reflines at user-defined x or y #2487
- [guides] add several guides (thanks to @thejud @reagle @ajkerrigan @anjakefala)
- [expressions] much cleanup
- `row["colname"]` to refer to a specific column by name, without needing to be a valid identifier #2539
- `_row` is underlying row object
- support curcol in g= and select and search expressions #2524
- $curcol for addcol-sh
- globals include most symbols from math by default; also datetime and date both as the vd.date subclass
- [input] memory variables included as autocomplete keys #2509

## Tweaks

- [window] pad windows with None so all are same size #2279
- [history] create visidata_dir (default ~/.visidata/) if not exists to enable input history by default #2298
- [cli] "-p -" replays stdin as a .vdj file
- [guide] allow front matter in guide .md files; "sheettype" metadata to associate with a sheet
- [cmdpalette] do not fuzzymatch keys that start with _
- [interface] hidden columns minutely visible past right of sheet; `_` to re-expand #2394
- [interface] record all commands in macro (even replay=False); add status indicator when recording #2435
- [interface] clickable cell error symbol
- [interface] default theme color improvements, including a slight bg glow for cursor column
- [aggregators] add keymin; handle corner cases #2308
- many small interface improvements: error messages, clarifications, edge cases, guardrails. (thanks to @midichef for many of these)

## Options

- max_rows to stop loading early #2356
- [xlsx] add xlsx_color_cells (default: True); set to False to disable xlsx cell colorizers
- regex_skip is now replayable
- disp_multiline_focus to only expand cursor row when multiline enabled #2205
- disp_expert (int); set to 1 to enable advanced interface elements and unhide advanced columns by default; set to 5 (or greater) to disable input palette and help sidebars
- pass disp_wrap_* to textwrap for multiline display #2506
- rename note_* to disp_note_* #2381
- separate color_longname into color_longname_status and color_longname_guide

## Commands

- addcol-histogram to make histogram from any numeric column #2208
- exec-longname-simple for single-line (non-palette) input
- go-col-name to go to a column by name
- [dir] open-row-filetype to open row using the given filetype
- [graph] plot-source-selected on ColumnsSheet #2424
- [experimental] sort-selected-asc/desc #2295
- deprecate view-cell #2381
- unfurl finishes with column cursor on unfurled column

## API

- [command] addCommand(..., replay=False) to not add to cmdlog
- [sort] add Sheet.ordering property as list[tuple[Column,bool]] #2295
- [path] note nonstandard behavior of RepeatFile.read()
- [input] allow different record kwarg for different fields in inputMultiple

## Loaders

- [msgpack] new loader #2419
- [grep] new loader for output of grep/ripgrep #2443

- [csv] display loading/saving progress
- [csv] handle more dialect parameters from Sniffer
- [csv tsv] remove default regex_skip of hash lines #2458
- [eml] save email parts without filenames #2376
- [fixed] skip separating space in fixed_width loader #2255
- [json] remove column type inference #2475 #2131
- [json] warn if some cols/sheets were not saved #2199
- [markdown] use col_href as link for col
- [ods] strip empty cells/rows from end #2440
- [rec] roundtrippable
- [sas] allow edits to source sheet
- [save] derived null in text formats should be empty string #2476
- [save] handle empty delimiter when options.safety_first
- [text] do not strip lines of whitespace #2328
- [tsv] allow empty regex_skip
- [tsv] allow saving with NUL delimiters
- [tsv] if field or row delimiter is NUL, disable regex skipping
- [vds] allow sheets with no rows #2342
- [xml] save XML as utf-8 instead of utf-8-sig #2520

## Bugfixes

- [command] addcol-sh: ensure arguments are properly quoted #2415
- [selection] make toggle thread-safe for FreqTableSheet #1671
- [undo] prevent undo of command that created sheet #2244
- [undo] cmdlog always use rowidx, not rowkey #2246
- [cliptext] fix onclick url #2466
- [mouse] fix mouse-disable #2379
- [sort] do not modify Sheet._ordering #2254
- [bindings] do not re-prettykeys; call prettykeys for all bindkey() too #2247
- [terminal] add no-op for ANSI focus-in and focus-in #2247
- [sort] add _ordering to Sheet class instead of __init__ #2190
- [transpose] allow to set values #2548
- [sheet] make 20 tabs clickable #2030
- [macro] do not record macro inner steps #2531
- [filetype] use correct case for file extension determination #2263
- [replay] stop stderr batch progress when interactive #2251
- [replay] wait for replay to start before stderr progress #2251
- [replay] fix rare duplication of replay cmds #2392
- and many more

# v3.0.2 (2024-01-15)

### Fixes and minor improvements

- [cli] add `--guides` to open the guide index
- [cmdpalette] only first 10 suggestions should have shortcut keys #2242
- [draw] use default bg on col hdr sep
- [input] draw help sidebar on top of sheet/updater #2241
- [graph] sort by x and y columns when diving (PR by @midichef #2226)
- [guides] improve formatting of command and options in sidebar + guides
- [replay] stop stderr batch progress when entering interactive mode #2251
- [shell] clean up DirSheet sidebar
- [sidebar] grab user's keystroke of sidebar-toggle for helpstring #2250
- [sort] a better fix for maintaining sort ordering on sheet copies #2190 #2254
- [tests] add "test" extras for installing PyPI packages needed to run tests

# v3.0.1 (2024-01-07)

### Fixes and minor improvements
Expand Down
16 changes: 8 additions & 8 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@ VisiData is designed to be extensible, and most feature requests can be implemen
If this would require changes to the VisiData core, and a reasonable design is approved, then the issue can stay open until the core changes have been made.
Otherwise, in the spirit of Marie Kondo, the issue will be closed without prejudice.

Feature requeste with some amount of working Python code are more likely to get attention.
Feature requests with some amount of working Python code are more likely to get attention.
Design proposals with concrete use cases are very welcome.

## Writing a well constructed bug report
Expand All @@ -50,28 +50,28 @@ If you encounter any bugs or have any problems, please [create an issue on GitHu

A great bug report will include:

- a stacktrace, if there is an unexpected error; the most recent full stack traces can be viewed with `Ctrl+E` (then saved with `Ctrl+S`)
- a [.vd](http://visidata.org/docs/save-restore/) and sample dataset that reproduces the issue
- a .png/.gif (esp. for user interface changes)
- a stacktrace, if there is an unexpected error; the most recent full stack traces can be viewed with `Ctrl+E` (then saved with `Ctrl+S`)
- a [.vd](http://visidata.org/docs/save-restore/) and sample dataset that reproduces the issue
- a .png/.gif (esp. for user interface changes)

Some examples of great bug reports:

- [#350 by @chocolateboy](https://github.com/saulpw/visidata/issues/350)
- [#340 by @Mikee-3000](https://github.com/saulpw/visidata/issues/340)
- [#350 by @chocolateboy](https://github.com/saulpw/visidata/issues/350)
- [#340 by @Mikee-3000](https://github.com/saulpw/visidata/issues/340)


## Submitting Source Code

Check out the [Plugin Authors Guide](https://visidata.org/docs/api) for an overview of the API.
Code in `plugins/` or `visidata/loaders/` is welcome, as long as it is useful to someone and safe for everyone.
Code in `visidata/features/` or `visidata/loaders/` is generally welcome, as long as it is useful to someone and safe for everyone.
Updates or additions to the core code should be proposed via an [Github Issue](https://github.com/saulpw/visidata/issues/new/choose) before submitting a PR.

VisiData has two main branches:

- [stable](https://github.com/saulpw/visidata/tree/stable) has the last known good version of VisiData (what is in pypi/brew/apt).
- [develop](https://github.com/saulpw/visidata/tree/develop) has the most up-to-date version of VisiData (which will eventually be merged to stable).

All pull requests should be submitted against `develop`. Submitters will need to e-sign a Copyright Assignment Agreement (CAA) before a pull request will be accepted.
All pull requests should be submitted against `develop`. Submitters will need to e-sign a [Copyright Assignment Agreement (CAA)](https://visidata.org/caa) before a pull request will be accepted.

# Open Source License and Copyright

Expand Down
1 change: 1 addition & 0 deletions MANIFEST.in
Original file line number Diff line number Diff line change
Expand Up @@ -12,3 +12,4 @@ include visidata/experimental/noahs_tapestry/*.json
include visidata/experimental/noahs_tapestry/*.md
include visidata/experimental/noahs_tapestry/*.ddw
include visidata/experimental/noahs_tapestry/*.sqlite
include visidata/guides/*.md
9 changes: 8 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# VisiData v3.0
# VisiData v3.1

[![Tests](https://github.com/saulpw/visidata/workflows/visidata-ci-build/badge.svg)](https://github.com/saulpw/visidata/actions/workflows/main.yml)
[![Gitpod ready-to-code](https://img.shields.io/badge/Gitpod-ready--to--code-blue?logo=gitpod)](https://gitpod.io/#https://github.com/saulpw/visidata)
Expand Down Expand Up @@ -33,9 +33,16 @@ See [visidata.org/install](https://visidata.org/install) for detailed instructio

### Usage

On Linux and OS/X

$ vd <input>
$ <command> | vd

On Windows

$ visidata <input>
$ <command> | visidata

Press `Ctrl+Q` to quit at any time.

Hundreds of other commands and options are also available; see the documentation.
Expand Down
6 changes: 3 additions & 3 deletions bin/viewtsv.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
# as plugin: `from viewtsv import open_tsv` in .visidatarc
# standalone: `viewtsv.py <tsv-files>'

from visidata import Sheet, ColumnItem, asyncthread, options
from visidata import VisiData, Sheet, ColumnItem, asyncthread, options

@VisiData.api
def open_tsv(vd, p):
Expand Down Expand Up @@ -37,5 +37,5 @@ def reload(self):
# a minimal main() for standalone apps
if __name__ == '__main__':
import sys
from visidata import run, Path
run(*(open_tsv(Path(fn)) for fn in sys.argv[1:]))
from visidata import run, Path, vd
run(*(vd.open_tsv(Path(fn)) for fn in sys.argv[1:]))
6 changes: 1 addition & 5 deletions dev/ROADMAP
Original file line number Diff line number Diff line change
Expand Up @@ -40,11 +40,7 @@
6. default theme
- tooling to make it easier to browse color combos

7. website
- add vd.org/contributors
- add vd.org/pricing

8. new clients
7. new clients
- vd tui client: connect to vd server as separate terminal process
- vd web client
- lightweight JS widget to display/interact with command server
34 changes: 34 additions & 0 deletions dev/checklists/feature.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@

# Feature Checklist

- [ ] user docs in docs/
- [ ] API docs in docs/api/
- [ ] release notes (in changelog until release)
- [ ] add to labeled screenshot (if feature visible in main UI)
- [ ] screenshot image and/or animated gif (if feature visible in UI)
- [ ] passing pytest (all test_ functions in the module/feature)

## Marketing

- [ ] video demo
- [ ] blog post
- [ ] mastodon post

# Loader sample data

- [ ] small amount of sample data in `sample_data`, including (when supported by the format/loader):
- [ ] compression
- [ ] null value ("N/A" or "" or None)
- [ ] error value ("#ERR")
- [ ] int type
- [ ] float type
- [ ] date type
- [ ] nested data
- [ ] list of homogenous values
- [ ] dict (subrecord)
- [ ] multiple sheets
- [ ] non-ascii characters


- [ ] extra data for special features (e.g. .zip encryption)

2 changes: 2 additions & 0 deletions dev/checklists/manual-tests.md
Original file line number Diff line number Diff line change
Expand Up @@ -94,3 +94,5 @@
22. Test `open-row` on an html link: https://hls.gsfc.nasa.gov/data/
23. That DirSheet requires a commit-sheet before changes on filesystem
24. Test adding multiple aggregators via palette (+)
25. time vd -p tests/quit-nosave.vdj - note down the time. compare to PR #2369
26. Use the z; command. Then type in a command line like echo "| Ceci n'est pas une pipe"
4 changes: 0 additions & 4 deletions dev/checklists/release.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,10 +11,6 @@
c. visidata.org; (formats?)
- remember to check the tables with prettier: https://github.com/saulpw/visidata/pull/2056

3. Verify that VisiData is up-to-date:
* help menu
* plugins.jsonl

3. Ensure `develop` automated tests run correctly with dev/test.sh

4. Go through the manual tests checklist
Expand Down
Loading
Loading