Skip to content

Version bumped timescaledb-tune from 0.14.3 to 0.16.0 - #376

Closed
brianewell wants to merge 2 commits into
TritonDataCenter:release/trunkfrom
brianewell:release/trunk
Closed

Version bumped timescaledb-tune from 0.14.3 to 0.16.0#376
brianewell wants to merge 2 commits into
TritonDataCenter:release/trunkfrom
brianewell:release/trunk

Conversation

@brianewell

Copy link
Copy Markdown

Note:
-> pkglint
NOTE: Makefile:3: Package version "0.15.0" is greater than the latest "0.14.3" from ../../doc/CHANGES-2023:1380.
Looks fine.

I'm not sure if I should be adding my own notes to this file as I don't have commit access to the upstream.

@brianewell brianewell changed the title Version bumped timescaledb-tune from 0.14.3 to 0.15.0 Version bumped timescaledb-tune from 0.14.3 to 0.16.0 Mar 28, 2024
@brianewell brianewell closed this Apr 20, 2024
jperkin pushed a commit that referenced this pull request May 1, 2024
 - Added --locked to Install Instruction & Update dependencies by @AmmarAbouZor in #376
 - Fixed: Specify arm target on mac build and release by @AmmarAbouZor in #377
 - Update all dependencies to their latest versions
jperkin pushed a commit that referenced this pull request May 17, 2024
0.21.0 (2024-03-10)
-------------------

- Improve documentation. [#483]

- Add a minimum version requirement for ``asdf-wcs-schemas``. [#491]

- Fix ``WCS.__str__`` for instances without transforms. [#489]

0.20.0 (2023-11-29)
-------------------

- Replace ``pkg_resources`` with ``importlib.metadata``. [#478]

- Serialize and deserialize ``pixel_shape`` with asdf. [#480]

0.19.0 (2023-09-15)
-------------------

Bug Fixes
^^^^^^^^^

- Synchronize ``array_shape`` and ``pixel_shape`` attributes of WCS
  objects. [#439]

- Fix failures and warnings with numpy 2.0. [#472]

other
^^^^^

- Remove deprecated old ``bounding_box``. The new implementation is released with
  astropy v 5.3. [#458]

- Refactor ``CoordinateFrame.axis_physical_types``. [#459]

- ``StokesFrame`` uses now ``astropy.coordinates.StokesCoord``. [#452]

- Dropped support for Python 3.8. [#451]

- Fixed a call to ``astropy.coordinates`` in ``wcstools.wcs_from_points``. [#448]

- Code and docstrings clean up. [#460]

- Register all available asdf extension manifests from ``asdf-wcs-schemas``
  except 1.0.0 (which contains duplicate tag versions). [#469]

- Register empty extension for 1.0.0 to avoid warning about a missing
  extension when opening old files. [#475]


0.18.3 (2022-12-23)
-------------------
Bug Fixes
^^^^^^^^^

- Fixed a bug in the estimate of pixel scale in the iterative inverse
  code. [#423]

- Fixed constant term in the polynomial used for SIP fitting.
  Improved stability and accuracy of the SIP fitting code. [#427]


0.18.2 (2022-09-07)
-------------------
Bug Fixes
^^^^^^^^^

- Corrected the reported requested forward SIP accuracy and reported fit
  residuals by ``to_fits_sip()`` and ``to_fits()``. [#413, #419]

- Fixed a bug due to which the check for divergence in ``_fit_2D_poly()`` and
  hence in ``to_fits()`` and ``to_fits_sip()`` was ignored. [#414]

New Features
^^^^^^^^^^^^

0.18.1 (2022-03-15)
-------------------
Bug Fixes
^^^^^^^^^

- Remove references to the ``six`` package. [#402]

0.18.0 (2021-12-22)
-------------------
Bug Fixes
^^^^^^^^^

- Updated code in ``region.py`` with latest improvements and bug fixes
  from ``stsci.skypac.regions.py`` [#382]

- Added support to ``_compute_lon_pole()`` for computation of ``lonpole``
  for all projections from ``astropy.modeling.projections``. This also
  extends support for different projections in ``wcs_from_fiducial()``. [#389]

New Features
^^^^^^^^^^^^

- Enabled ``CompoundBoundingBox`` support for wcs. [#375]

- Moved schemas to standalone package ``asdf-wcs-schemas``.
  Reworked the serialization code to use ASDF converters. [#388]

0.17.1 (2021-11-27)
-------------------

Bug Fixes
^^^^^^^^^

- Fixed a bug with StokesProfile and array types. [#384]


0.17.0 (2021-11-17)
-------------------
Bug Fixes
^^^^^^^^^

- `world_axis_object_components` and `world_axis_object_classes` now ensure
  unique keys in `CompositeFrame` and `CoordinateFrame`. [#356]

- Fix issue where RuntimeWarning is raised when there are NaNs in coordinates
  in angle wrapping code [#367]

- Fix deprecation warning when wcs is initialized with a pipeline [#368]

- Use ``CD`` formalism in ``WCS.to_fits_sip()``. [#380]


New Features
^^^^^^^^^^^^
- ``wcs_from_points`` now includes fitting for the inverse transform. [#349]

- Generalized ``WCS.to_fits_sip`` to be able to create a 2D celestial FITS WCS
  from celestial subspace of the ``WCS``. Also, now `WCS.to_fits_sip``
  supports arbitrary order of output axes. [#357]


API Changes
^^^^^^^^^^^
- Modified interface to ``wcs_from_points`` function to better match analogous function
  in astropy. [#349]

- ``Model._BoundingBox`` was renamed to ``Model.ModelBoundingBox``. [#376, #377]

0.16.1 (2020-12-20)
-------------------
Bug Fixes
^^^^^^^^^
- Fix a regression with ``pixel_to_world`` for output frames with one axis. [#342]

0.16.0 (2020-12-18)
-------------------
New Features
^^^^^^^^^^^^

- Added an option to `to_fits_sip()` to be able to specify the reference
  point (``crpix``) of the FITS WCS. [#337]

- Added support for providing custom range of degrees in ``to_fits_sip``. [#339]

Bug Fixes
^^^^^^^^^

- ``bounding_box`` now works with tuple of ``Quantities``. [#331]

- Fix a formula for estimating ``crpix`` in ``to_fits_sip()`` so that ``crpix``
  is near the center of the bounding box. [#337]

- Allow sub-pixel sampling of the WCS model when computing SIP approximation in
  ``to_fits_sip()``. [#338]

- Fixed a bug in ``to_fits_sip`` due to which ``inv_degree`` was ignored. [#339]
jperkin pushed a commit that referenced this pull request Aug 24, 2024
## v2.1.4

**Implemented enhancements:**

- Config reload command for live profile reload [#811]
- Button to save/apply preferences [#801]
- Favorites/Bookmarks ??? [#706]
- Plugin Submission + Generic Plugin Utility Functions & KeyBinding Feature:   Mouseless / Mousefree / Keyboard URL opening or yanking  [#681]
- Add detachable tabs feature to preferences [#698]

**Closed issues:**

- Suddenly lagging on gnome4  [#899]
- Keybindings for cursor/caret movement  [#896]
- Group tab shortcut does not work for a window with 1 parent terminal with N internal terminals  [#893]
- Donations? [#891]
- [Feature request\] Possibility to enlarge edge bar of a tab [\#885]
- Neovim incompatible keybindings [#881]
- preferences -> layout -\> add/save does nothing [\#877]
- drag and drop file from file-manager to terminator-release 2.1.3 causes a crash [#871]
- Feature Request - Add the possibility to add padding for the output [#867]
- file:/// links not clickable if the root dir has a underscore [#865]
- terminator bug: can't get file path [#861]
- Window splits are transparent, showing screen behind [#854]
- terminator.py get_focussed\_terminal always returns none [\#852]
- [Feature Request\] Add SelectAll function [\#851]
- Issues with Terminal reloading [#850]
- Add custom keybinding to set ctrl+backspace to delete a full word instead of alt-backspace or ctrl+w [#838]
- Crash after unzooming a single terminal inside a tab [#835]
- Profile per window [#831]
- Option for prompt for closing against accidental closure [#830]
- FCITX input method does not work in Version 2.1.2  anymore  [#828]
- Slow Resize [#825]
- Adjust size / resize cursor area is 1px [#820]
- Add preferences about default window size [#815]
- Plugins don't receive keboard signals on newly opened windows [#808]
- keyboard-shortcut-support-for-plugins-code-decoupling [#805]
- Ability to undo or restore changes to the preferences [#802]
- Explain what "Smart copy" means [#800]
- Include global menu/preferences button in the window title bar [#799]
- Can't open context menu [#796]
- custom plugins are not found when using `--display` [#795]
- doc/help missing --display option [#794]
- In krusader terminator option --working-directory=DIR doesn't work [#793]
- Pasting on tab title bar closes tab. [#789]
- When in broadcast mode single character
- System wide defaults [#782]
- can't run on mac os ventura [#780]
- Implement OSC52 functionality to use clipboard [#779]
- Logger plugin crashes with "TypeError: 'NoneType' object is not subscriptable" [#776]
- Split panes based on size of current pane [#772]
- Broadcasting terminals duplicates keys in other terminals
- Terminator layouts don't respect any more the number of columns [#766]
- Different font for tabs
- Re-size the width of Terminator, the Shell Prompt will repeatedly increase in the terminal windows. [#762]
- No focus in right click menu [#761]
- sudden problem with line spacing
- After chaning to python3.11 getting a import error [#752]
- clipboard - putty style paste - copy using external app - cant paste into terminator [#749]
- Context Menu not showing in v2.1.3 [#746]
- Long delay before able to enter password [#745]
- terminal.py: AttributeError: 'bytes' object has no attribute 'encode'. Did you mean: 'decode'? [#743]
- drag and drop of path stopped working in terminator version 2.1.3 [#742]
- [Feature\] Have the ability to set custom geometry permanently [\#737]
- traceback when drag and drop [#727]
- Unset keybinding toggle_scrollbar prevents right-click menu from opening [\#724]
- Font size change unexpectedly when maximizing a splitted windows. [#721]
-  When broadcast terminator duplicates the keys in others terminals
- 2.1.3 release for Ubuntu 22.04 LTS [#718]
- Layouts menu not working [#717]
- "Don't ask, don't tell" focus hack causes gnome-shell to freeze for seconds / Xwayland to crash [#714]
- How to enable fast encoding change? [#712]
- Release file [#705]
- Failed to execute default Terminal Emulator on Kali Linux. [#700]
- Disable detachable tabs flag [#697]
- Focus loss when renaming a tab [#696]
- Slowdowns, hangs and crashes when used with ibus [#695]
- Pasting Primary Clipboard Pastes Mouse Clipboard [#636]
- Feature request: Save and restore terminal state [#563]

**Merged pull requests:**

- Install manpages to share/man on FreeBSD [#898]
- Properly parse file:/// URIs [#895]
- fix traceback in layout_done [\#887]
- fix syntax warnings [#886]
- Ask before close gui [#884]
- window.py: Fix window group toggle keybind [#883]
- [bug 760\] working directory feature is broken [\#882]
- add missing @with_proxy, fixes \#850 [\#875]
- Updates for file po/terminator.pot in ru [#863]
- [bug 852\] - 852-terminator\_py\_get\_focussed\_terminal\_always\_returns\_none [\#856]
- 846 mouseless keyboard url open fails to extract text and clear search between commands [#855]
- [bug 835\] 835-crash-after-unzooming-a-single-terminal-inside-a-tab \#835 [\#849]
- [bug 843\] 843-Plugin-SaveLastSessionLayout-not-saving-layout-when-use… [\#844]
- 706 favorites bookmarks plugin [#841]
- Ask before closing, even if there is only one terminal [#834]
- Fix: Add CLI command to reload configuration [#824]
-  [bug 802\] - Ability to undo or restore changes to the preferences \#802 [\#822]
- chore: bump ations/checkout
- Fix Insert Term Name Plugin error [#819]
- 681 Plugin submission mouseless keyboard url open decoupled code [#810]
- [bug 808\] Plugins-dont-receive-keboard-signals-on-newly-opened-windows [\#809]
- Document syntax error [#807]
- 805 keyboard shortcut support for plugins code decoupling [#806]
- Updates for file po/terminator.pot in zh_CN on branch master [\#798]
- Add command line option --toggle-visibility [#797]
- Revert "modify terminator separater size setting in gui to start from 1" [#778]
- Alter get_text\_range call based on VTE version [\#777]
- Updates for po/terminator.pot in hr [#774]
- Enable sixel support in VTE if it's available. [#770]
- add new tab after current tab option [#767]
- remove deprecated pytest-runner [#756]
- Rewrite terminator_config.5 man page in AsciiDoc format [\#747]
- fix: Minor fixes in terminatorlib/configjson.py [#741]
- fix: typo in french translation [#738]
- Fix for issue #676: title field not seem to be working with JSON profile [\#736]
- Remove more unused settings and update the docs accordingly [#735]
- Remove settings 'hide_tabbar' and 'disable\_real\_transparency' [\#734]
- Rewrite terminator.1 man page in AsciiDoc format [#733]
- fix drag and drop [#728]
- Do not remove focus from the last_active\_window [\#726]
- Fix context menu keybinding reading. [#725]
- Fix typo in man page [#722]
- Capitalize the first letter for "Read only" [#720]
- Remove hack to ensure that focus is set. [#716]
- feat: Add CLI command to reload configuration [#690]

## v2.1.3

**Implemented enhancements:**

- Option to set split ratio of terminals [#708]
- Add option to set given terminal to "read only" [#649]
- background image - respect ratio [#644]
- Shortcut for autosplit h/v depending on active terminal size [#613]
- Feature: Insert terminal name to terminal
- Background image drawing modes and alignment [#713]
- Zoom on notebook even if there is only one terminal in the tab + keep tab position and label in notebook rotation [#589]

**Fixed bugs:**

- Resets the tab title on rotation [#624]
- - bug context menu
- Fix missing icons when started with Ctrl-Alt-T [#628]

**Closed issues:**

- Terminator not working with latest version of python-cairo [#711]
- [Bug\]\[Fedora 36 KDE\]\[terminator v2.1.1\] "broadcast group" sends each terminal input/keystroke depending on the group's members count to everyone in the group [\#704]
- reset_clear doesn't show new prompt [\#703]
- `-x`/`--execute` still broken [#702]
- Make unfocused terminal text transparent instead of blacker [#694]
- A translucent separation occurs between terminals [#687]
- [2.1.2\] Foreground processes started in new window close immediately [\#673]
- Is there a official page to maintain a offical/third-part plugin list? [#668]
- What happened to the change terminal titlebar under preferences? [#664]
- [Feature Request\] - In the Context Menu\
- terminator: error: unrecognized arguments [#660]
- Plugin Submission : SaveLastSessionLayout Uses Layout to Auto-Save Last session and CWD on Terminal Window Close [#654]
- Loading layout loads only the last added layout from context menu
- When can we expect a new release? [#650]
- Profiles for different Shells - is it possible? how does it work? [#640]
- Double input to broadcasted group [#623]
- background images only  displaying on default profile [#595]
- The repository 'https://ppa.launchpadcontent.net/mattrose/terminator/ubuntu jammy Release' does not have a Release file. [#594]
- Increase the usage of augmented assignment statements [#555]

**Merged pull requests:**

- Better distinguishing of inactive windows from the active one, by changing the background brightness [#709]
- Ctrl+Click on group button automatically creates groups whenever needed [#691]
- [bug 680\] Open up keybindings page on keypress \#680 [\#686]
- Translate '/po/terminator.pot' in 'pt_BR' [\#684]
- Plugin and Group menu item that inserts the name of the terminal. [#683]
- Add Readonly toggle to popup menu [#679]
- Fix argument handling of the --execute flag [#678]
- Remove all ibus workarounds [#674]
- [bug 613\] -  Shortcut for autosplit h/v depending on active terminal … [\#671]
- [bug 662\] \[Feature Request\] - In the Context Menu\
- [bug 559\] Add menu autocomplete \#559 [\#665]
- [bug 662\] \[Feature Request\] - In the Context Menu\
- [bug 654\] - Plugin Submission : SaveLastSessionLayout Uses Layout to … [\#661]
- Update terminal.py [#659]
- docs: Change number of columns in repology badge [#657]
- Plugin Submission : SaveLastSessionLayout Uses Layout to Auto-Save Last session and CWD [#655]
- Fix typos [#651]
- data: Remove GNOME branding [#647]
- this line has an extra ';' symbol [#632]
- Use the term 'zero padded' instead of 'padded'. [#189]

## v2.1.2

**Implemented enhancements:**

- [Feature request\] move layout/session definitions into separate files with a dedicated extension in a dedicated directory [\#604]
- Bash completion [#495]
- Changing cursor foreground color [#467]
- Wallpaper configuration option from terminal [#466]
- Launch a new command in a vertical or horizontal split. [#446]
- Separators is wider after upgrading to ubuntu 21.04 [#445]
- Broadcast profile changes to existing terminals [#421]
- How to deactivate the middle mouse button paste? [#415]
- Feature request: expose the window and terminal title setting features in context menu [#405]
- Integrate --layout-json command line parameter so that it can be passed to dbus [#401]
- Feature request: move titlebar colors config to profiles, rather than global settings [#379]
- Visual aids [#367]
- Feature Request: detach tab [#302]
- Pls add version on OS X [#283]

**Fixed bugs:**

- Ctrl+Shift+Mouse-Scroll triggers Ctrl+Mouse Scroll [#606]
- None isn't a valid value of keybindings config anymore [#548]
- psutil.AccessDenied: psutil.AccessDenied
- Find functionality does not show matches on same line [#511]
- Ratio and/or position on a config file's layout ignored [#433]
- Black background remains after hide_window [\#425]
- Cannot create working config file with 5 terminals [#409]
- Terminal loses focus versus tab title [#400]
- Terminal title-bars are transparent on first start [#392]

**Closed issues:**

- Hide window in waybar [#633]
- Split window profile incorrect inheritance  [#631]
- [Question\] is there a way to prevent Terminator from dereferencing symbolic links? [\#617]
- Terminator not working on RHEL 9  [#616]
- Is there a right-click menu in sway? [#614]
- Set Terminator tab title via command line [#603]
- Unable to launch KeyError: b'Rss:' [#601]
- Cannot view emoji [#599]
- Clickable filepath:rownumber [#598]
- Feature Request: set initial window size in preferences [#593]
- Update the authorship in README [#586]
- xbindkeys doesn't work in Terminator, but works in other apps [#582]
- Unable to load Keybinder module [#580]
- terminator for MacOS user [#578]
- UTF-8 character breaks terminator config file [#577]
- Terminator need to highlight search string [#575]
- Custom Commands NOT Working in Linux Mint 20.3 [#573]
- Can't add/remove terminal panes from layout editor [#572]
- Language not applied after build [#569]
- Moving Cursor Word By Word using ALT + Arrows [#566]
- Enabling "putty style paste" causes context menu to be unreachable with 2-button mouse [#565]
- Setting stty options [#564]
- Switch focus and splits don't work when terminal is zoomed [#550]
- Will terminator ever consider picking up ligature support? [#543]
- feature request: Implement line spacing as a configuration option [#542]
- Change separator color [#538]
- remotinator split and execute command — cannot determine uuid [#537]
- Split vertical keyboard don't work on debian 11 [#535]
- Vte.Terminal
- Fix Keyboard Input [#533]
- group broadcasting switched on/off for all groups [#532]
- Drop a file from nautilus onto terminator window no longer works
- Crash everytime after encoding is changed to TCVN [#529]
- Change the color of the current tab to highlight it better [#522]
- Feature: Configuration to colorize split screens from default grey colour, Issue: Remove ability to select 0 and 1 handle_size from configuration gui [\#518]
- Error when using "Insert Terminal Number"
- Auto-scroll to the cursor position when typing [#513]
- hide_window mapped with Shift+Control+Alt+$an\_alphabet catches Control+Alt+$an\_alphabet instead [\#509]
- Cursor is blinking on inactive windows [#508]
- custom commands are not persisted [#505]
- Terminator slow to close if xclip was invoked [#503]
- terminator failing to open on ubuntu 21.04 [#502]
- Monospace Bold isn't working [#497]
- No prompt when closing terminator now, despite say vim running in terminal [#496]
- suppor for sixel graphics [#492]
- which is deprecated and should not be used [#488]
- could tmux Key bindings using in terminator? [#474]
- Support OpenType font features [#473]
- Crash on Terminal resize when using fish [#458]
- Incorrect layout sorting in notebook [#453]
- Coloring Tabs / Tabs Appearance [#449]
- Option to disable system notifications [#448]
- Window vanishes [#447]
- Multiple Terminator instances randomly crash on Ubuntu 20.04 [#444]
- Option to open URLs with just a click [#434]
- Doubled input from keyboard when broadcasting in tabs [#432]
- Does this tool support macOS Big Sur? [#430]
- terminator is slow [#426]
- Add more fundamental "editor-ish" feature [#424]
- Allow disabling and resetting keybindings in Preferences [#423]
- Project based layout [#418]
- Unable to Install from Source [#412]
- CTRL+A behaviour abnormal [#384]
- regexp/command hyperlink handler [#381]
- Update PPA to 2.1.0 [#374]
- Create Snap and Flatpak for Terminator [#206]
- Remove gtk-update-icon-cache handling in setup [#102]

**Merged pull requests:**

- update translations [#656]
- Terminal ctrl+mousewheel: do not try to zoom if shift is pressed [#609]
- More fixes to the Color pickers in the Preferences Editor [#592]
- Modification in the /terminatorlib/prefseditor.py file [#590]
- Various README fixes [#588]
- Remove duplicated info in some debug messages [#576]
- Added hotfix for #78 that deletes GTK\_IM\_MODULE environment variable [\#574]
- Fix POTFILES.in + update translation files [#571]
- Add initial flatpak-spawn support [#570]
- Fix: handle_size treated as cell\_width [\#561]
- Transifex translations from Dec 20 2021 [#558]
- Unzoom terminal on interaction [#553]
- Add ability to configure cell width
- Improve and optimize the code for background images [#551]
- Fix: 'None' value for keybindings breaks editor [#549]
- don't traceback while searching through /proc [#546]
- os.environ does not have LANGUAGE in Centos8. [#544]
- Remove Encoding settings
- Allow multiline commands in Custom Commands plugin [#525]
- Add paste_selection keybinding. [\#520]
- Fix terminal separator size setting [#519]
- Automatically focus the Keybindings menu [#516]
- Fix hide_window keybinding unset check [\#515]
- Add 'Disable mouse paste' [#512]
- Bug Fix: hide_window keybinding ignores Shift key [\#510]
- Improve argument parser + implement bash completion [#506]
- add Set Window Title item to context menu [#501]
- BugFix: terminal won't restart if there is no custom command [#500]
- Add a "Copy" button to clone profiles [#499]
- Make tabs detachable + minor bugfix [#494]
- remove gtk-update-icon-cache from setup.py [#493]
- remove vsplit_cmd and hsplit\_cmd from ipc.py, superseded by newer hsp… [\#491]
- Update tr.po [#490]
- add bg_img and bg\_img\_all commands to remotinator [\#487]
- Cursor: make it possible to change foreground color
- fixes for --config-json [#484]
- GUI: set all CheckButtons off to avoid blinking + remove grid empty rows/columns [#482]
- Move titlebar settings to profiles
- Issue 365 [#480]
- Fix typo in `po/de.po` [#476]
- add parameters to remotinator split commands [#472]
- add switch_profile\_all command to remotinator [\#471]
- Set CAN_FOCUS to False for notebook widgets [\#470]
- tell titlebar to start focussed out if it does not have focus [#462]
- Update translation [#460]
- Add new plugin for opening current directory using right mouse button [#459]
- Fixed Issue #425 \
- Incorrect layout sorting in notebook [#454]
- Closing tab on middle mouse button press [#451]
- Bug Fix: 'Clear selection on copy' is always unchecked [#443]
- Fixed issue #433 \
- Fix the background image loading exception handling [#436]
- Added set_tab\_title command to remotinator. [\#435]
- Ukrainianized by 93% [#428]
- Fixed geometry hints [#416]
- Feat+run cmd on match [#399]
- add feat: config to open links with single click [#398]
- Add new vsplit hsplit cmd dbus [#390]
- Added new get_focused\_terminal dbus command which returns uuid of current focused terminal [\#389]

## v2.1.1

**Implemented enhancements:**

- add "switch profile" command to remotinator [#321]

**Fixed bugs:**

- Terminal text isn't shown on lost focus of multiple tabs and hidden scroll bar [#372]

**Closed issues:**

- Terminator display freeze [#411]
- Albert hotkey
- ImportError: bad magic number in 'six': b'x03\xf3\r\n' [\#404]
- Last split in tab greyed out [#402]
- Using the `--debug-classes` option makes terminator crash [#397]
- cannot import name 'Validator' from 'validate' | arch community/terminator 2.1.0-2 [#395]
- Clicking on terminator title bars does not focus the terminal belonging to the title-bar [#394]
- Losing focus on a tabbed window will grey out the window [#393]
- Terminator turns white when using tabs [#391]
- unremovable background image [#387]
- Tab focus change causes white-out of console [#383]
- Allow hide title bar as global option [#377]
- Add project management tool [#376]
- module 'command_notify' has no attribute 'AVAILABLE' [\#375]
- weird bug with long commands [#373]
- Open in terminal [#368]
- Clipboard commands [#366]
- Background image not showing up on Xubuntu 20.04 [#364]
- Pasted text is highlighted [#363]
- [FR\] Option to elide terminal title from the left [\#362]
- Windows title are not udpated after ssh session disconnected [#359]
- No broadcast menu in sway [#357]
- Remove spaces between tabs [#331]
- Enhancement: Stjerm Layout Like Functionality [#298]
- Unwanted transparent pane separators [#293]
- clusterssh like behaviour via plugin [#222]

**Merged pull requests:**

- Release version 2.1.1 [#413]
- i18n: pt_BR: add missing space in translations with shortcuts [\#406]
- Fixed race condition when calling grab_focus after underlying vte could be closed [\#388]
- disable 2.7 tests until we can figure out how to run them in GH [#386]
- Revert 74 [#385]
- update spanish translation [#370]
- Remotinator "switch_profile" command [\#361]
- clarify config file sentences [#360]
- fix broadcast menu for sway and wayland [#358]
github-actions Bot pushed a commit that referenced this pull request Oct 13, 2024
## [2.1.0] - 2024-09-27

### Added

- Use `SLUMBER_CONFIG_PATH` to customize configuration (_not_ collection) file path [#370](LucasPickering/slumber#370)
- Add a dynamic variant to `!select` chain type, allowing your collection to present a list of values driven from the output of another chain. (thanks @anussel5559)
  - [See docs for more](https://slumber.lucaspickering.me/book/api/request_collection/chain_source.html#select)
- Cancel in-flight requests with the `cancel` action (bound to escape by default)
- Add `slumber new` subcommand to generate new collection files [#376](LucasPickering/slumber#376)
- Add `default` field to profiles
  - When using the CLI, the `--profile` argument can be omitted to use the default profile
- Reset edited recipe values to their default using `z`
  - You can [customize the key](https://slumber.lucaspickering.me/book/api/configuration/input_bindings.html) to whatever you want
- Add `selector_mode` field to chains, to control how single vs multiple results from a JSONPath selector are handled
  - Previously, if a selector returned multiple results, an error was returned. Now, the result list will be rendered as a JSON array. To return to the previous behavior, set `selector_mode: single` in your chain.
  - [See docs for more](https://slumber.lucaspickering.me/book/api/request_collection/chain.html#selector-mode)

### Changed

- Update file locations to adhere to XDG spec on Linux [#371](LucasPickering/slumber#371)
  - Move config file to [config dir](https://docs.rs/dirs/latest/dirs/fn.config_dir.html), which remains the same on MacOS/Windows but changes on Linux. For backward compatibility, the previous path ([data dir](https://docs.rs/dirs/latest/dirs/fn.data_dir.html)) will be checked and used if present
  - Move log files to [state dir](https://docs.rs/dirs/latest/dirs/fn.state_dir.html) on Linux and [cache dir](https://docs.rs/dirs/latest/dirs/fn.cache_dir.html) on MacOS/Windows
  - Database file remains in [data dir](https://docs.rs/dirs/latest/dirs/fn.data_dir.html) on all platforms
- Create config file on startup if it doesn't exist
- If config file fails to load during TUI startup, display an error and fall back to the default, rather than crashing
- De-deprecate `{{env.VARIABLE}}` template sources
  - They'll remain as a simpler alternative to `!env` chains

### Fixed

- Updated the Configuration docs to remove the non-existent `slumber show dir` command (thanks @SVendittelli)
- Retain all request history when collection file is reloaded
  - Previously, pending and failed requests were lost on reload within a single session. These will still be lost when a session is exited.
- Fix serialization of query parameter lists
- Don't update UI for useless events (e.g. cursor moves)

## [2.0.0] - 2024-09-06

2.0 is headlined by a highly requested feature: one-off edits to recipes! If you need to tweak a query parameter or edit a body, but don't want to modify your collection file, you can now highlight the value in question and hit `e` to modify it. The override will be retained until you modify the collection file or exit Slumber, at which point it will revert to its original value.

Aside from the major new feature, there is one breaking change to the escape syntax of templates. The old backslash-based syntax was fraught with edge cases and unpredictable behavior. This new syntax is simpler to use, simpler to implement, and much more bulletproof. This syntax was rare to use to begin with, so **most people will be unimpacted by this change.**

Here's the full list of changes:

### Breaking

- Replace backslash escape sequence with a simpler scheme based on `_`
  - For example, previously a key would be escaped as `\{{`. This introduced complexities around how to handle additional backslashes, and also required doubling up backslashes in YAML
  - The new equivalent would be `{_{`, which parses as `{{`
  - The goal of this change is to make escaping behavior simpler and more consistent
  - For more info on the new behavior, [see the docs](https://slumber.lucaspickering.me/book/api/request_collection/template.html#escape-sequences)
- Remove `--log` CLI argument
  - See note on log files in Changed section for why this is no longer necessary

### Added

- Edit recipe values (query params, headers, etc.) in the TUI to provide one-off values
  - Press `e` on any value you want to edit (you can [customize the key](https://slumber.lucaspickering.me/book/api/configuration/input_bindings.html))
- Add `editor` field to the config, allowing you to customize what editor Slumber opens for in-app editing
  - [See docs for more](https://slumber.lucaspickering.me/book/api/configuration/editor.html)
- Add `!select` chain type, allowing your collection to prompt the user to select a value from a static list (thanks @anussel5559)
  - [See docs for more](https://slumber.lucaspickering.me/book/api/request_collection/chain_source.html#select)

### Changed

- `!json` bodies are now prettified when sent to the server
- Use `vim` as default editor if none is configured
- Move logs back to a shared file
  - They had been split into one file per session, which made them hard to find
  - The file is now eventually deleted once it exceeds a certain size

### Fixed

- Fix basic auth being label as bearer auth in Recipe Authentication pane
- Use correct binding for `search` action in the placeholder of the response filter textbox
  - Previously it was hardcoded to display the default of `/`
- Fix response body filter not applying on new responses
- Support quoted arguments in editor commands
- Fix certain UI values not persisting correctly
- Propagate unconsumed key events from text boxes
  - E.g. F5 will now refresh the collection while a text box is in focus
- Redraw TUI when terminal is resized
- Clamp text window scroll state when window is resized or text changes
- Fix extraneous input events when exiting Vim [#351](LucasPickering/slumber#351)
- Improve performance and fix crashes when handling large request/response bodies [#356](LucasPickering/slumber#356)
  - Further improvements for large bodies will be coming in the future

## [1.8.1] - 2024-08-11

This release is focused on improving rendering performance. The TUI should generally feel more polished and responsive when working with large bodies, and CPU usage will be much lower.

### Added

- Add `debug` configuration field, to enable developer information

### Fixed

- Reduce CPU usage while idling
  - Previously, Slumber would re-render every 250ms while idling, which could lead to high CPU usage, dependending on what's on the screen. Now it will only update when changes occur, meaning idle CPU usage will be nearly 0
- Fix backlogged events when renders are slow
  - If renders are being particular slow, it was previously possible for input events (e.g. repeated scrolling events) to occur faster than the UI could keep up. This would lead to "lock out" behavior, where you'd stop scrolling and it'd take a while for the UI to catch up.
  - Now, the TUI will skip draws as necessary to keep up with the input queue. In practice the skipping should be hard to notice as it only occurs during rapid TUI movements anyway.
- Improve rendering performance for large bodies and syntax highlighting
- Fix incorrect decoration in folder tree visualization

## [1.8.0] - 2024-08-09

The highlight (no pun intended) of this release is syntax highlighting. Beyond that, the release contains a variety of small fixes and improvements.

### Added

- Add syntax highlighting to recipe, request, and response display [#264](LucasPickering/slumber#264)

### Changed

- Change layout of internal database for request and UI state storage
  - This _shouldn't_ have any user impact, it's just a technical improvement. If you notice any issues such as missing or incorrect request history, please [let me know](https://github.com/LucasPickering/slumber/issues/new?assignees=&labels=bug&projects=&template=bug_report.md)
- Upgrade to Rust 1.80
- Disable unavailable menu actions [#222](LucasPickering/slumber#222)
- Support template for header names in the `section` field of `!request` chains
- Expand `~` to the home directory in `!file` chain sources and when saving response body as a file
- Ignore key events with additional key modifiers
  - For example, an action bound to `w` will no longer match `ctrl w`
- Actions can now be unbound by specifying an empty binding
  - For example, binding `submit: []` will make the submit action inaccessible

### Fixed

- Fix `cargo install slumber` when not using `--locked`
- Don't type in text boxes when modifiers keys (other than shift) are enabled
  - Should mitigate some potential confusing behavior when using terminal key sequences
- Query parameter and header toggle rows no longer lose their state when switching profiles
github-actions Bot pushed a commit that referenced this pull request Dec 15, 2024
# htmltools 0.5.8.1

* `capturePlot()`s examples are now only run when `interactive()`. (#429)

# htmltools 0.5.8

## Improvements

* .The fill CSS attached to fillable containers and fill items with
  `bindFillRole()` now uses a [CSS cascade
  layer](https://developer.mozilla.org/en-US/docs/Learn/CSS/Building_blocks/Cascade_layers)
  named `htmltools` to reduce the precedence order of the fill
  CSS. (#425)

* Improved documentation for boolean attributes in
  `tagAppendAttributes()` to note that they can be set via an `NA`
  value, e.g. `tagAppendAttributes(div(), contenteditable = NA)`
  creates `<div contenteditable></div>`. (thanks @russHyde, #427)

## Bug fixes

* `bindFillRole()` now attaches its `HTMLDependency()` to fill items,
  thus reducing the possibility of filling layout breaking due to
  missing CSS. (#421)


# htmltools 0.5.7

## New Features

* `save_html()` is now an S3 generic, allowing for more customization
  over how certain classes are saved to an HTML file. (#411)

## Improvements

* Fill items no longer set `overflow: auto` or `width: 100%` by default. (#401)

* `css()` now fully supports setting custom CSS properties (or CSS
  variables) via inline styles. When the name of a value passed to
  `css()` starts with `--`, it will be treated as a custom CSS
  property and absolutely no changes will be made to the variable. For
  example, `css("--font_size" = "3em")` returns `--font_size:3em;`
  while `css(font_size = "3em")` will return `font-size:3em`. (#402)

## Bug fixes

* `{htmltools}` now requires `{rlang}` version 1.0.0 or higher. (#403)

# htmltools 0.5.6.1

## Improvements

* `tagQuery()` no longer throws an error when attempting to traverse a
  NULL value with r-devel. (#407)

# htmltools 0.5.6

## Possibly breaking changes

* Closed #386: Fillable containers no longer set `overflow: auto` by
  default. Instead, they set `min-width` and `min-height` to `0` to
  ensure that fill items a constrained in the fillable container
  without clipping their direct children. (#387)

* Closed #370: Non-fill items in fillable containers no longer grow or
  shrink and instead respect their intrinsic size. Use `height` to
  control the height of non-fill items in fillable containers and
  `min-height` and `max-height` on fill items to limit how much they
  are allowed to grow or shrink within a fillable container. (#391)

## Minor improvements

* Closed #375: calling `htmlDependency()` or a function that returns
  an `htmlDependency()` object (e.g.,
  `fontawesome::fa_html_dependency()`) in an R chunk in an R Markdown
  or knitr-powered Quarto document will now include the dependency
  rather than printing the object structure. If you want to print the
  object structure, you can use `print()` or `str()`. (#376)

* Closed #124: `includeHTML()` will now issue a warning if it detects
  that the file passed to it contains a complete HTML
  document. `includeHTML()` is designed to include HTML fragments
  where the contents of the file can be written directly into the
  current app or document, but subtle errors can occur when the file
  contains a complete HTML document. In most cases, you should instead
  use `tags$iframe()` to embed external documents. (#382)

# htmltools 0.5.5

## Bug fixes

* Closed #355: `tagQuery()` was failing to select elements with tag
  names that contained hyphens. (@slodge, #302)

* Closed #366: `tagQuery()`'s `find()` method no longer errors out
  when tags contain language objects. (#366)
jperkin pushed a commit that referenced this pull request Jan 28, 2025
Pkgsrc changes:
 * Remove now-upstream-integrated patch.
 * Checksum changes.

Upstream changes:

NSD version 4.11.0 had a serious bug in which applying updates to
zones (and other modifications that require a reload, such as adding
and deleting zones), could stop entirely after reception of a broken
or corrupted update via zone transfer. We believe that this broken
state would appear as one of the NSD processes consuming 100% CPU.
Version 4.11.1 has this corrected as well as some other smaller
non-critical bugs.

We strongly advise to not run NSD version 4.11.0, and if you have
it deployed already, upgrade to 4.11.1 at the earliest possible
opportunity.

4.11.1
================
BUG FIXES:
        - Fix #415: Fix out of tree builds. Thanks Florian Obser (@fobser).
        - Fix #414: XoT interoperability with BIND and Knot
        - Fix #421: old-main can quit before the reload process received
          from old-main that it is done on the reload_listener pipe.
          Thanks Otto Retter.
        - Fix whitespace in comment.
        - Fix #424: Stalled updates after corrupt transfer.

4.11.0
================
FEATURES:
        - Support reloading configuration on SIGHUP.
        - Fix #383: log timestamps in ISO8601 format with timezone.
          This adds the option `log-time-iso: yes` that logs in ISO8601
          format.
        - Updated cookie secrets management.
          The default cookie secret file location can be set at compile time
          with the --with-cookiesecretsfile=path option to configure. The
          default location is changed to {dbdir}/cookiesecrets.txt. The
          previous default location will be checked at startup when there is
          no cookie secrets file at the new default location.
          A staging cookie can now also be configured in the configuration
          file and secrets configured in the configuration file now take
          precedence over those read from file.
          All DNS related setting in the configuration file will be reevaluated
          and effectuated after nsd-control reconfig.
        - Merge #398: RFC 9660 The DNS Zone Version (ZONEVERSION) Option
        - Merge #406: ohttp and tls-supported-groups SvcParam suppor
        - Merge #408: NINFO, RKEY, RESINFO, WALLET, CLA and TA RR types
        - Merge #409: Writing of NSAP-PTR, GPOS and HIP RR types
        - Merge #407: Better balanced verbosity levels for logging.

BUG FIXES:
        - Fix title underline and declaration after statement warnings.
        - Add cross platform freebsd, openbsd and netbsd to github ci.
        - Update simdzone to include fix for netbsd double bswap declarations,
          and also semantic checks for DS and ZONEMD. And CFLAGS has -march
          prepended to fix detection.
        - Merge #376: Point the user towards tcpdump for logging individual
          queries.
        - Track $INCLUDEs in zone files.
        - Fix ci to update macos-12 to the macos-15 runner image.
        - Merge #390: Apply non-xfr tasks before xfr tasks.
          This fixes an issue where non-xfr tasks are lost when they are
          batch processed together with non-xfr tasks.
          This merge also changes that notifies are passed on from the serve
          processes to the xfrd directly instead of via main. This was
          necessary to allow applying the non-xfr tasks without forking a
          backup-main for the sole purpose of forwarding notifies.
        - Merge #391: Update copyright lines (in version output).
        - Fix #392: Inconsistent documentation about control-interface.
        - Merge #395: Explain the zonefile example better.
        - Merge #394: Fix the path to use doc/manual/.
        - Fix analyzer issue in do_print_cookie_secrets to check for failure.
        - Merge #404: Introducing Sphinx substitution in code blocks.
          As well as other fixes with Sphinx build.
        - Update Copyright lines in help output
        - Merge #395: Explain zonefile example better
        - Merge #394: Fix doc path (fixes "Edit on GitHub" button in the docs)
        - Fix Makefile for parallel build failure around bison rule.
        - Fix #405: Fix typo in documentation.
        - Treat a mismatch in RRset TTLs as a warning.
github-actions Bot pushed a commit that referenced this pull request Feb 2, 2025
6.2.0
 - MacOS: we have temporarilyy switched to a static build of libcurl 8.11.1 until
   apple updates their very buggy libcurl (#376)
 - Fix LTO error for R_multi_setopt
 - Fix parsing of #fragment links in curl_parse() (#366)
github-actions Bot pushed a commit that referenced this pull request Feb 6, 2025
Another breaking release with the highlight this time being the introduction of new subcommands! The existing functionality of calling inlyne <FILE> is still preserved as long as it doesn't conflict with an existing subcommand. You can use the new inlyne view <FILE> subcommand to unambiguously view a file

The first of our new subcommands is inlyne config open which makes editing inlyne's config file much simpler for people not accustomed to sniffing out obscure config file locations
Breaking Changes

    Switch inlyne's CLI with the current functionality under inlyne view (#284)

Features

    Add history navigation exposed via shortcuts (#258 #269)
    Add the new inlyne config subcommand for interacting with inlyne's config file (#285 #386)
    Modify our custom panic hook to follow a nice workflow for creating GH issues (#286)
    Allow specifying capital letters in keybinding definition (#287)
        In addition to the existing method of { key = 'a', mod = ["Shift"] }
    Allow specifying window position and size through config and CLI (#290)
    Add a desktop entry file (#293 #317)
    Allow double and triple click selection (#295 #339)
    Don't show the scrollbar when the content fits on one screen (#313)
    Add window class properties for wayland (#343 #349)

Fixes

    Update the window title on file navigation (#274)
    Fix a crash that could happen when clicking some relative file links (#292)
    Use appropriate relative sizes for headers (#307)
    Scroll on clicking the scrollbar as well as moving (#314)
    Top align checkboxes instead of centering with content (#316)
    Don't panic when the file to view is missing (#332)

Documentation

    Track code coverage with codecov.io (#337 #341 #346 #350 #378)
    Update some Cargo.toml fields (#369)

Internal

    Add a dependabot workflow to update CI actions (#265)
    Dependabot CI action bumps (#266 #267 #340 #344 #363 #374 #376 #379 #384)
    Tweak CI to avoid spawning duplicate jobs for PRs (#268)
    Ensure that we can always deserialize the default keybindings (#270)
    Update dependencies (#272 #298 #300 #301 #333 #334 #336 #370)
    Improve test coverage (#273)
    Setup initial metrics infrastructure (#289)
    Switch our HTTP client from reqwest to ureq (#296)
    Placate clippy (#297 #326 #377 #383)
    Add dev bounding box toggle (#308 #312)
    Replace wiremock with tiny_http for testing (#320 #321)
    Update image and remove streamed image decoding (#325)
    Test our custom user agent (#328)
    Cleanup test utilities (#331 #335)
    Speed up graceful image failure test (#345)
    Fix test perf regression and new beta toolchain warning (#348)
    Narrow focus of snapshot tests (#364)
    Switch from the now deprecated PanicInfo to PanicHookInfo (#371)
    Bump CI nightly toolchain version (#372)
github-actions Bot pushed a commit that referenced this pull request Feb 9, 2025
0.5.6 (2025-02-08)

Security Fix

Fixes CVE-2025-25186 (GHSA-7fc5-f82f-cx69): A malicious server can exhaust
client memory by sending APPENDUID or COPYUID responses with very large
uid-set ranges.  Net::IMAP::UIDPlusData expands these ranges into arrays of
integers.

Fix with minor API changes

Set config.parser_use_deprecated_uidplus_data to false to replace
UIDPlusData with AppendUIDData and CopyUIDData.  These classes store their
UIDs as Net::IMAP::SequenceSet objects (not expanded into arrays of
integers).  Code that does not handle APPENDUID or COPYUID responses should
not see any difference.  Code that does handle these responses may need to
be updated.

For v0.3.8, this option is not available
For v0.4.19, the default value is true.
For v0.5.6, the default value is :up_to_max_size.
For v0.6.0, the only allowed value will be false (UIDPlusData will be
removed from v0.6).

Mitigate with backward compatible API

Adjust config.parser_max_deprecated_uidplus_data_size to limit the maximum
UIDPlusData UID set size.
When config.parser_use_deprecated_uidplus_data == true, larger sets will
crash.
When config.parser_use_deprecated_uidplus_data == :up_to_max_size, larger
sets will use AppendUIDData or CopyUIDData.

For v0.3,8, this limit is hard-coded to 10,000.
For v0.4.19, this limit defaults to 1000.
For v0.5.6, this limit defaults to 100.
For v0.6.0, the only allowed value will be 0 (UIDPlusData will be removed
from v0.6).

Please Note: unhandled responses

If the client does not add response handlers to prune unhandled responses, a
malicious server can still eventually exhaust all client memory, by
repeatedly sending malicious responses.  However, net-imap has always
retained unhandled responses, and it has always been necessary for
long-lived connections to prune these responses.  This is not significantly
different from connecting to a trusted server with a long-lived connection.
To limit the maximum number of retained responses, a simple handler might
look something like the following:

  limit = 1000
  imap.add_response_handler do |resp|
    next unless resp.respond_to?(:name) && resp.respond_to?(:data)
    name = resp.name
    code = resp.data.code&.name if resp.data.in?(Net::IMAP::ResponseText)
    imap.responses(name) { _1.slice!(0...-limit) }
    imap.responses(code) { _1.slice!(0...-limit) }
  end

Added

* Ensure ResponseParser config is mutable and non-global by @nevans in #381
* Add SequenceSet methods for querying about duplicates by @nevans in #384
* Add SequenceSet#each_ordered_number by @nevans in #386
* Add SequenceSet#find_ordered_index by @nevans in #396
* Add SequenceSet#ordered_at by @nevans in #397
* Add AppendUIDData and CopyUIDData classes by @nevans in #400
* Add parser config for APPENDUID/COPYUID, Deprecate UIDPlusData by @nevans
  in #401

Fixed

* Fix SequenceSet#append when its @string is nil by @nevans in #376
* Fix SequenceSet merging in another SequenceSet by @nevans in #377
* Fix SequenceSet count dups with multiple "*" by @nevans in #387
* Re-raise #starttls error from receiver thread by @nevans in #395

Documentation

* Fix SequenceSet#cover? documentation by @nevans in #379
* Document COPYUID in tagged vs untagged responses by @nevans in #398

Other Changes

* Move UIDPlusData to its own file by @nevans in #391
* Parse uid-set as sequence-set without * by @nevans in #393

Miscellaneous

* Bump step-security/harden-runner from 2.10.2 to 2.10.3 by @dependabot in #375
* Bump step-security/harden-runner from 2.10.3 to 2.10.4 by @dependabot in #380
* Improve test coverage for SequenceSet enums by @nevans in #383
*  Refactor SequenceSet enumerator tests by @nevans in #385
* Add "irb" to Gemfile to silence warning by @nevans in #388
* Omit flaky test with macOS platform by @hsbt in #389
* Improve UIDPlusData test coverage by @nevans in #392
* Rename UIDPLUS test file for consistency by @nevans in #399
github-actions Bot pushed a commit that referenced this pull request Feb 3, 2026
18.0.0 (2024-10-24)

Changed

* [Ruby] Minimum supported ruby is now 2.7+ (#308)

18.0.1 (2024-10-28)

Fixed

    [Python] Release process didn't release to pypi correctly

18.1.0 (2026-01-20)

Added

* [Java] Add OSGi metadata
* [Java] class KeyboardFriendlyDecimalFormatSymbols is now public and can be
  used when creating a custom Locale-aware type transformation method (#376
  antagoony)

Changed

* [Ruby] Minor cosmetic / CI changes for development (Nothing front-facing)
* [Python] PEP 639 licence metadata specification (#361)

Removed

* [Python] Remove support for end-of-life Python 3.8 and 3.9 (#359)

19.0.0 (2026-01-25)

Added

* [Java] Make CucumberExpressionParser::parse public (#340)

Changed

* Make StepMatchArgument.Group.children optional (#370)
* [Java] Set release version to 17 (#374)
jperkin pushed a commit that referenced this pull request May 14, 2026
Upstream's changelog:

 workflow: add libcups2-dev dependency by @rdmark in #335
 Correct doc README by @rdmark in #326
 Fix all warnings on running bootstrap by @dgsga in #346
 bootstrap: Add checks for required packages by @rdmark in #338
 Enable compilation on macOS hosts v2 by @dgsga in #349
 macros: Use the AC_LANG_SOURCE macro, issue #347 by @rdmark in #351
 Remove redundant documentation in conf files; improve man pages, #333 by @rdmark in #334
 Use non-interactive PAM session when available by @rdmark in #367
 papd: Future-proof CUPS API usage by @rdmark in #373
 Update atalkd.service to be consistent with other init scripts. by @rdmark in #372
 Adopt downstream Debian patches by @rdmark in #370
 Restore tarball distribution of doc/ (GitHub#374) by @rdmark in #375
 Regenerate man pages from xml sources by @rdmark in #376
jperkin pushed a commit that referenced this pull request May 14, 2026
This version has added support for custom previewers and custom preloaders,
as well as completed most of the work on the concurrent plugin system.

In addition, it includes many performance optimizations, such as rewriting the
entire file system, refactoring the entire UI rendering architecture, enhancing
the task scheduling system, and implementing partial rendering for frequently
updated components.

This version also introduces many meaningful new features, such as path
auto-completion, real-time file filtering, Kitty Unicode placeholders
protocol support. Read the changelog below for details.

This is a breaking change version, please refer to our upgrade guide:
Migrating to Yazi v0.2.0

What's Changed
    refactor(nix): add shell completion and avoid impure by @XYenon in #293
    refactor: publish to crates.io by @sxyazi in #298
    feat: add a new Folder:icon() API to make it easier for users to extend
          icons by @sxyazi in #301
    feat: add config support for coordinate and size adjustment for ueberzugpp
          image preview by @15cm in #304
    fix: clear Sixel image with empty characters instead of \x2B[K to be
         compatible with GNOME VTE by @linsui in #309
    fix: nix flakes by @sxyazi in #306
    fix: change the rust tool chain in shell.nix from stable to nightly
         by @15cm in #314
    feat: support image preview on WSL by @sxyazi in #315
    fix: use WAYLAND_DISPLAY and DISPLAY to detect Wayland/X11 when
         XDG_SESSION_TYPE is not set by @sxyazi in #312
    fix: channel blockage caused by fuse permissions under the root user
         by @sxyazi in #321
    fix: jq previews empty when the user sets tab_size=8 by @sxyazi in #320
    chore: add .vscode and .idea to .gitignore by @XOR-op in #322
    feat: add an identifier before the extension to prevent file conflicts
          rather than after by @rick-yao in #316
    ci: add Rust target "aarch64-unknown-linux-gnu" to release workflow
        by @nifr in #326
    feat: add overlays to flake.nix by @musjj in #218
    docs: update readme links to website by @uncenter in #332
    feat: use USERPROFILE to retrieve readable path on Windows
          by @sravioli in #331
    feat: auto-completion for input component by @XOR-op in #324
    perf: fallback to plain highlighter for long text by @sxyazi in #329
    fix: the parent does not hover properly on switching the hidden state
         by @sxyazi in #339
    feat: better Zellij support with multi-factor detection involving emulator
          types by @sxyazi in #336
    fix: precache n-1 and n+1 pages by @Hanaasagi in #349
    feat: new reveal command by @sxyazi in #341
    refactor: extracting commands into separate files to make them easier to
              maintain by @sxyazi in #338
    feat: make width of completion relative to input by @XOR-op in #353
    feat: raise open file descriptors limit at startup by @sxyazi in #342
    fix: prefix matching should have higher priority in completion
         by @XOR-op in #352
    feat: display the number of deleted files in the prompt by @sxyazi in #359
    fix: Rust panics instead of returning an error when file times are
         invalid by @sxyazi in #357
    feat: add support for opening a file on startup by @sxyazi in #358
    feat: new kitty graphics protocol implementation for better compatibility
          with tmux through Unicode placeholders by @sxyazi in #365
    perf: precache small images to avoid cache misses; use symlink_metadata
          instead of metadata by @sxyazi in #367
    refactor: use more reasonable numeric field types for configs
              by @sxyazi in #368
    perf: clear only limited cells when hiding images by @sxyazi in #369
    perf: reduce peak memory footprint during decoding large images
          by @sxyazi in #375
    feat: make Input and Select positions customizable by @Hanaasagi in #361
    feat: expose image max alloc and bound to allow for more control
          by @sxyazi in #376
    feat: add more optimization options by @Walker-00 in #377
    fix: directories are recreated after deletion did not update the watcher
         tracking properly by @sxyazi in #381
    feat: make emacs readline keybindings configurable by @sxyazi in #382
    feat: cursor and page key navigation parity with Vim bindings
          by @flexiondotorg in #386
    feat: add more mime-types, file extensions and icons to the preset theme
          by @flexiondotorg in #387
    feat: include commit hash in yazi --version by @Hanaasagi in #393
    fix: popup components (Input, Select, etc.) being covered by previewed
         images by @sxyazi in #360
    fix: stepwise renaming causes uncertain sorting order by @sxyazi in #398
    refactor: move event to shared by @sxyazi in #403
    feat: support sorting by file extension by @jyshaw in #405
    refactor: integrate tasks into scheduler by @sxyazi in #406
    fix: catchup with the latest stable Rust by @XYenon in #409
    fix: build with rust-overlay by @XYenon in #410
    fix: crashes when selection indicator exceeds the visible area while a
         wrong folder_offset specified by @sxyazi in #416
    feat: new config option to suppress pre-caching tasks
          by @againstpetra in #430
    fix: do not use LuaJIT in riscv64 and loongarch64 architecture
         by @eatradish in #439
    feat: copy content over SSH by @sxyazi in #447
    feat!: custom preloader & previewer by @sxyazi in #401
    feat: filter files in real-time by @Rolv-Apneseth in #454
    fix: panic caused by set_hook by @sxyazi in #459
    feat: fine-grained scheduling priority by @sxyazi in #462
    fix: add --follow option to paste command by @eatradish in #436
    feat: support ANSI themes by @smores56 in #460
    perf: new UI rendering architecture by @sxyazi in #468
    fix: resize isn't triggered on app restoring by @sxyazi in #483
    feat: image orientation support by @sxyazi in #488
    refactor: quit command by @aserowy in #484
    feat: icon color and ordered icon rules support by @sxyazi in #503
    fix: prevent recursive caching - don't cache files in the cache directory
         by @sxyazi in #504
    chore: add schema urls to preset config by @uncenter in #506
    fix: update paged files after filter done by @sxyazi in #505
    feat: add support for highlighting by file type by @Akmadan23 in #510
    perf: partial rendering progress and composite into a complete UI to reduce
          CPU consumption caused by frequent progress updates
          by @sxyazi in #509
    feat: add --empty and --cursor options to the rename command
          by @Akmadan23 in #513
    feat: add YAZI_LEVEL env variable for shells by @isti115 in #514
jperkin pushed a commit that referenced this pull request May 14, 2026
# rio 1.0.1

* POTENTIALLY BREAKING: Due to compiling time concerns, roll back the decision to move `arrow` to `Imports`. It is now `Suggests`. `setclass = "arrow"` works if `arrow` is installed. #315 #376

# rio 1.0.0

* Stop loading the entire namespace of a suggested package when it is available #296
* Unexport objects: `.import`, `.export`, `is_file_text`; remove
  documentation for `arg_reconcile` #321
* Update Examples to make them more realistic #327
* Add support for `qs` #275 h/t David Schoch
* Use `arrow` to import / export `feather` #340
* `export_list` can write multiple data frames to a single archive
  file (e.g. zip, tar) or a directory #346 h/t David Schoch
* `get_info` is added #350
* POTENTIALLY BREAKING: `setclass` parameter is now
  authoritative. Therefore: `import("starwars.csv", data.table = TRUE,
  setclass = "tibble")` will return a tibble (unlike previous versions
  where a data.table is returned). The default class is data
  frame. You can either explicitly use the `setclass` parameter; or
  set the option: `options(rio.import.class = "data.table")`. h/t
  David Schoch #336
* Parquet and feather are now formats supported out of the box;
  Possible to setclass to `arrow` / `arrow_table`; ArrowTabular class
  can be exported #315
* Add "extension", "labelled" vignettes
* Support readODS 2.1.0 features such as reading and writing Flat ODS;
  export Multiple data frames #358
* POTENTIALLY BREAKING: Use `writexl` instead of `openxlsx`. Option to
  read xlsx with `openxlsx` (i.e. `import("starwars.xlsx", readxl =
  FALSE)`) is always `TRUE`. The ability to overwrite an existing
  sheet in an existing xlsx file is also removed. It is against the
  design principle of `rio`.

* POTENTIALLY BREAKING: The following options are deprecated:
  `import(fread)`, `import(readr = TRUE)`, `import(haven)`,
  `import(readxl)` and `export(fwrite)`. import will almost use
  `data.table`, `haven`, `readxl`, and internal function (for fwf) to
  import and export data. Currently, those options stay for backward
  compatibility but will be removed in v2.0.0. #343 h/t David Schoch

* POTENTIALLY BREAKING: `...` is handled differently. Underlying
 functions using "Tidy" convention (e.g. `readxl::read_xlsx()`) can
 use "Base Convention" (See the new vignette: `remap`). Unused
 arguments passed to the underlying function as `...` are silently
 ignored by default. A new option `rio.ignoreunusedargs` is added to
 control this behavior. #326

* Bug fixes
   - ... is correctly passed for exporting ODS and feather #318
   - POTENTIALLY BREAKING: JSON are exported in UTF-8 by default;
     solved encoding issues on Windows R < 4.2. This won't affect any
     modern R installation where UTF-8 is the default. #318
   - POTENTIALLY BREAKING: YAML are exported using
     yaml::write_yaml(). But it can't pass the UTF-8 check on older
     systems.  Disclaimer added. #318

   - More check for the `file` argument #301
   - `import_list` works with single Excel/HTML/Zip online #294
   - Correct XML/HTML escaping #303
   - Create directory if it doesn't exist #347
* Declutter
   - remove the obsolete data.table option #323
   - write all documentation blocks in markdown #311
   - remove all @importFrom #325 h/t David Schoch
   - rearrange "Package Philosophy" as a Vignette #320
   - Create a single source of truth about all import and export functions #313
   - Clarify all concepts: now there is only `format` #351
* New authors
   - David Schoch @schochastics

# rio 0.5.30

* Maintenance release: new maintainer
* Mark `.sas7bdat` as deprecated
* Change the minimum R version to 3.6

# rio 0.5.29

* fixes for CRAN


# rio 0.5.28

* Various fixes to tests, examples, and documentation for CRAN.
* Temporarily disabled some tests that failed on Mac M1s.

# rio 0.5.27

* Documentation fixes for CRAN.
jperkin pushed a commit that referenced this pull request May 14, 2026
v0.17.0 is a new release with a lot of features, bug fixes, and specifically a
patch fixing a very annoying Spotify API bug.

This release also marks a big milestone for the project: 1k ⭐ 🥳🥳🥳 .
Thanks everyone for contributing, using, and starring the project!

What's Changed
    Add custom text input widget with cursor, to use in search page by @micleo2 in #329
    chore: update github actions by @LucasFA in #339
    reset buffered playback upon handling GetCurrentPlayback request by @aome510 in #341
    docs: fixes keymap command name by @massivebird in #342
    chore(docs): Remove unneeded explicit link by @LucasFA in #344
    Wait for the copy command to exit. by @Fuyukai in #346
    build: use cross for cross-compilation, locally and in CD by @LucasFA in #343
    feat: Souvlaki 0.7.0 and Linux Dbus volume control support by @LucasFA in #348
    extend capabilities for ShowActionsOn* commands by @aome510 in #352
    handle title padding with hidden borders by @aome510 in #351
    update dependencies, bump lyric_finder to v0.1.5 by @aome510 in #353
    Add miscellaneous UI code changes by @aome510 in #354
    update issue templates by @aome510 in #366
    fix clippy warning by @aome510 in #367
    re-create a new session when restarting the integrated client by @aome510 in #370
    Don't create streaming connections for non-streaming instances by @Schnouki in #371
    Remove winit from compilation on Linux by @LucasFA in #372
    Explicit cargo-binstall support by @LucasFA in #377
    Add popup for creating new playlist by @aome510 in #379
    Make Daemon feature imply streaming feature by @LucasFA in #376
    use liked icon's length to configure the column's width by @aome510 in #380
    Patch spotify API bugs by @aome510 in #386
jperkin pushed a commit that referenced this pull request May 14, 2026
 - Added --locked to Install Instruction & Update dependencies by @AmmarAbouZor in #376
 - Fixed: Specify arm target on mac build and release by @AmmarAbouZor in #377
 - Update all dependencies to their latest versions
jperkin pushed a commit that referenced this pull request May 14, 2026
0.21.0 (2024-03-10)
-------------------

- Improve documentation. [#483]

- Add a minimum version requirement for ``asdf-wcs-schemas``. [#491]

- Fix ``WCS.__str__`` for instances without transforms. [#489]

0.20.0 (2023-11-29)
-------------------

- Replace ``pkg_resources`` with ``importlib.metadata``. [#478]

- Serialize and deserialize ``pixel_shape`` with asdf. [#480]

0.19.0 (2023-09-15)
-------------------

Bug Fixes
^^^^^^^^^

- Synchronize ``array_shape`` and ``pixel_shape`` attributes of WCS
  objects. [#439]

- Fix failures and warnings with numpy 2.0. [#472]

other
^^^^^

- Remove deprecated old ``bounding_box``. The new implementation is released with
  astropy v 5.3. [#458]

- Refactor ``CoordinateFrame.axis_physical_types``. [#459]

- ``StokesFrame`` uses now ``astropy.coordinates.StokesCoord``. [#452]

- Dropped support for Python 3.8. [#451]

- Fixed a call to ``astropy.coordinates`` in ``wcstools.wcs_from_points``. [#448]

- Code and docstrings clean up. [#460]

- Register all available asdf extension manifests from ``asdf-wcs-schemas``
  except 1.0.0 (which contains duplicate tag versions). [#469]

- Register empty extension for 1.0.0 to avoid warning about a missing
  extension when opening old files. [#475]


0.18.3 (2022-12-23)
-------------------
Bug Fixes
^^^^^^^^^

- Fixed a bug in the estimate of pixel scale in the iterative inverse
  code. [#423]

- Fixed constant term in the polynomial used for SIP fitting.
  Improved stability and accuracy of the SIP fitting code. [#427]


0.18.2 (2022-09-07)
-------------------
Bug Fixes
^^^^^^^^^

- Corrected the reported requested forward SIP accuracy and reported fit
  residuals by ``to_fits_sip()`` and ``to_fits()``. [#413, #419]

- Fixed a bug due to which the check for divergence in ``_fit_2D_poly()`` and
  hence in ``to_fits()`` and ``to_fits_sip()`` was ignored. [#414]

New Features
^^^^^^^^^^^^

0.18.1 (2022-03-15)
-------------------
Bug Fixes
^^^^^^^^^

- Remove references to the ``six`` package. [#402]

0.18.0 (2021-12-22)
-------------------
Bug Fixes
^^^^^^^^^

- Updated code in ``region.py`` with latest improvements and bug fixes
  from ``stsci.skypac.regions.py`` [#382]

- Added support to ``_compute_lon_pole()`` for computation of ``lonpole``
  for all projections from ``astropy.modeling.projections``. This also
  extends support for different projections in ``wcs_from_fiducial()``. [#389]

New Features
^^^^^^^^^^^^

- Enabled ``CompoundBoundingBox`` support for wcs. [#375]

- Moved schemas to standalone package ``asdf-wcs-schemas``.
  Reworked the serialization code to use ASDF converters. [#388]

0.17.1 (2021-11-27)
-------------------

Bug Fixes
^^^^^^^^^

- Fixed a bug with StokesProfile and array types. [#384]


0.17.0 (2021-11-17)
-------------------
Bug Fixes
^^^^^^^^^

- `world_axis_object_components` and `world_axis_object_classes` now ensure
  unique keys in `CompositeFrame` and `CoordinateFrame`. [#356]

- Fix issue where RuntimeWarning is raised when there are NaNs in coordinates
  in angle wrapping code [#367]

- Fix deprecation warning when wcs is initialized with a pipeline [#368]

- Use ``CD`` formalism in ``WCS.to_fits_sip()``. [#380]


New Features
^^^^^^^^^^^^
- ``wcs_from_points`` now includes fitting for the inverse transform. [#349]

- Generalized ``WCS.to_fits_sip`` to be able to create a 2D celestial FITS WCS
  from celestial subspace of the ``WCS``. Also, now `WCS.to_fits_sip``
  supports arbitrary order of output axes. [#357]


API Changes
^^^^^^^^^^^
- Modified interface to ``wcs_from_points`` function to better match analogous function
  in astropy. [#349]

- ``Model._BoundingBox`` was renamed to ``Model.ModelBoundingBox``. [#376, #377]

0.16.1 (2020-12-20)
-------------------
Bug Fixes
^^^^^^^^^
- Fix a regression with ``pixel_to_world`` for output frames with one axis. [#342]

0.16.0 (2020-12-18)
-------------------
New Features
^^^^^^^^^^^^

- Added an option to `to_fits_sip()` to be able to specify the reference
  point (``crpix``) of the FITS WCS. [#337]

- Added support for providing custom range of degrees in ``to_fits_sip``. [#339]

Bug Fixes
^^^^^^^^^

- ``bounding_box`` now works with tuple of ``Quantities``. [#331]

- Fix a formula for estimating ``crpix`` in ``to_fits_sip()`` so that ``crpix``
  is near the center of the bounding box. [#337]

- Allow sub-pixel sampling of the WCS model when computing SIP approximation in
  ``to_fits_sip()``. [#338]

- Fixed a bug in ``to_fits_sip`` due to which ``inv_degree`` was ignored. [#339]
jperkin pushed a commit that referenced this pull request May 14, 2026
## v2.1.4

**Implemented enhancements:**

- Config reload command for live profile reload [#811]
- Button to save/apply preferences [#801]
- Favorites/Bookmarks ??? [#706]
- Plugin Submission + Generic Plugin Utility Functions & KeyBinding Feature:   Mouseless / Mousefree / Keyboard URL opening or yanking  [#681]
- Add detachable tabs feature to preferences [#698]

**Closed issues:**

- Suddenly lagging on gnome4  [#899]
- Keybindings for cursor/caret movement  [#896]
- Group tab shortcut does not work for a window with 1 parent terminal with N internal terminals  [#893]
- Donations? [#891]
- [Feature request\] Possibility to enlarge edge bar of a tab [\#885]
- Neovim incompatible keybindings [#881]
- preferences -> layout -\> add/save does nothing [\#877]
- drag and drop file from file-manager to terminator-release 2.1.3 causes a crash [#871]
- Feature Request - Add the possibility to add padding for the output [#867]
- file:/// links not clickable if the root dir has a underscore [#865]
- terminator bug: can't get file path [#861]
- Window splits are transparent, showing screen behind [#854]
- terminator.py get_focussed\_terminal always returns none [\#852]
- [Feature Request\] Add SelectAll function [\#851]
- Issues with Terminal reloading [#850]
- Add custom keybinding to set ctrl+backspace to delete a full word instead of alt-backspace or ctrl+w [#838]
- Crash after unzooming a single terminal inside a tab [#835]
- Profile per window [#831]
- Option for prompt for closing against accidental closure [#830]
- FCITX input method does not work in Version 2.1.2  anymore  [#828]
- Slow Resize [#825]
- Adjust size / resize cursor area is 1px [#820]
- Add preferences about default window size [#815]
- Plugins don't receive keboard signals on newly opened windows [#808]
- keyboard-shortcut-support-for-plugins-code-decoupling [#805]
- Ability to undo or restore changes to the preferences [#802]
- Explain what "Smart copy" means [#800]
- Include global menu/preferences button in the window title bar [#799]
- Can't open context menu [#796]
- custom plugins are not found when using `--display` [#795]
- doc/help missing --display option [#794]
- In krusader terminator option --working-directory=DIR doesn't work [#793]
- Pasting on tab title bar closes tab. [#789]
- When in broadcast mode single character
- System wide defaults [#782]
- can't run on mac os ventura [#780]
- Implement OSC52 functionality to use clipboard [#779]
- Logger plugin crashes with "TypeError: 'NoneType' object is not subscriptable" [#776]
- Split panes based on size of current pane [#772]
- Broadcasting terminals duplicates keys in other terminals
- Terminator layouts don't respect any more the number of columns [#766]
- Different font for tabs
- Re-size the width of Terminator, the Shell Prompt will repeatedly increase in the terminal windows. [#762]
- No focus in right click menu [#761]
- sudden problem with line spacing
- After chaning to python3.11 getting a import error [#752]
- clipboard - putty style paste - copy using external app - cant paste into terminator [#749]
- Context Menu not showing in v2.1.3 [#746]
- Long delay before able to enter password [#745]
- terminal.py: AttributeError: 'bytes' object has no attribute 'encode'. Did you mean: 'decode'? [#743]
- drag and drop of path stopped working in terminator version 2.1.3 [#742]
- [Feature\] Have the ability to set custom geometry permanently [\#737]
- traceback when drag and drop [#727]
- Unset keybinding toggle_scrollbar prevents right-click menu from opening [\#724]
- Font size change unexpectedly when maximizing a splitted windows. [#721]
-  When broadcast terminator duplicates the keys in others terminals
- 2.1.3 release for Ubuntu 22.04 LTS [#718]
- Layouts menu not working [#717]
- "Don't ask, don't tell" focus hack causes gnome-shell to freeze for seconds / Xwayland to crash [#714]
- How to enable fast encoding change? [#712]
- Release file [#705]
- Failed to execute default Terminal Emulator on Kali Linux. [#700]
- Disable detachable tabs flag [#697]
- Focus loss when renaming a tab [#696]
- Slowdowns, hangs and crashes when used with ibus [#695]
- Pasting Primary Clipboard Pastes Mouse Clipboard [#636]
- Feature request: Save and restore terminal state [#563]

**Merged pull requests:**

- Install manpages to share/man on FreeBSD [#898]
- Properly parse file:/// URIs [#895]
- fix traceback in layout_done [\#887]
- fix syntax warnings [#886]
- Ask before close gui [#884]
- window.py: Fix window group toggle keybind [#883]
- [bug 760\] working directory feature is broken [\#882]
- add missing @with_proxy, fixes \#850 [\#875]
- Updates for file po/terminator.pot in ru [#863]
- [bug 852\] - 852-terminator\_py\_get\_focussed\_terminal\_always\_returns\_none [\#856]
- 846 mouseless keyboard url open fails to extract text and clear search between commands [#855]
- [bug 835\] 835-crash-after-unzooming-a-single-terminal-inside-a-tab \#835 [\#849]
- [bug 843\] 843-Plugin-SaveLastSessionLayout-not-saving-layout-when-use… [\#844]
- 706 favorites bookmarks plugin [#841]
- Ask before closing, even if there is only one terminal [#834]
- Fix: Add CLI command to reload configuration [#824]
-  [bug 802\] - Ability to undo or restore changes to the preferences \#802 [\#822]
- chore: bump ations/checkout
- Fix Insert Term Name Plugin error [#819]
- 681 Plugin submission mouseless keyboard url open decoupled code [#810]
- [bug 808\] Plugins-dont-receive-keboard-signals-on-newly-opened-windows [\#809]
- Document syntax error [#807]
- 805 keyboard shortcut support for plugins code decoupling [#806]
- Updates for file po/terminator.pot in zh_CN on branch master [\#798]
- Add command line option --toggle-visibility [#797]
- Revert "modify terminator separater size setting in gui to start from 1" [#778]
- Alter get_text\_range call based on VTE version [\#777]
- Updates for po/terminator.pot in hr [#774]
- Enable sixel support in VTE if it's available. [#770]
- add new tab after current tab option [#767]
- remove deprecated pytest-runner [#756]
- Rewrite terminator_config.5 man page in AsciiDoc format [\#747]
- fix: Minor fixes in terminatorlib/configjson.py [#741]
- fix: typo in french translation [#738]
- Fix for issue #676: title field not seem to be working with JSON profile [\#736]
- Remove more unused settings and update the docs accordingly [#735]
- Remove settings 'hide_tabbar' and 'disable\_real\_transparency' [\#734]
- Rewrite terminator.1 man page in AsciiDoc format [#733]
- fix drag and drop [#728]
- Do not remove focus from the last_active\_window [\#726]
- Fix context menu keybinding reading. [#725]
- Fix typo in man page [#722]
- Capitalize the first letter for "Read only" [#720]
- Remove hack to ensure that focus is set. [#716]
- feat: Add CLI command to reload configuration [#690]

## v2.1.3

**Implemented enhancements:**

- Option to set split ratio of terminals [#708]
- Add option to set given terminal to "read only" [#649]
- background image - respect ratio [#644]
- Shortcut for autosplit h/v depending on active terminal size [#613]
- Feature: Insert terminal name to terminal
- Background image drawing modes and alignment [#713]
- Zoom on notebook even if there is only one terminal in the tab + keep tab position and label in notebook rotation [#589]

**Fixed bugs:**

- Resets the tab title on rotation [#624]
- - bug context menu
- Fix missing icons when started with Ctrl-Alt-T [#628]

**Closed issues:**

- Terminator not working with latest version of python-cairo [#711]
- [Bug\]\[Fedora 36 KDE\]\[terminator v2.1.1\] "broadcast group" sends each terminal input/keystroke depending on the group's members count to everyone in the group [\#704]
- reset_clear doesn't show new prompt [\#703]
- `-x`/`--execute` still broken [#702]
- Make unfocused terminal text transparent instead of blacker [#694]
- A translucent separation occurs between terminals [#687]
- [2.1.2\] Foreground processes started in new window close immediately [\#673]
- Is there a official page to maintain a offical/third-part plugin list? [#668]
- What happened to the change terminal titlebar under preferences? [#664]
- [Feature Request\] - In the Context Menu\
- terminator: error: unrecognized arguments [#660]
- Plugin Submission : SaveLastSessionLayout Uses Layout to Auto-Save Last session and CWD on Terminal Window Close [#654]
- Loading layout loads only the last added layout from context menu
- When can we expect a new release? [#650]
- Profiles for different Shells - is it possible? how does it work? [#640]
- Double input to broadcasted group [#623]
- background images only  displaying on default profile [#595]
- The repository 'https://ppa.launchpadcontent.net/mattrose/terminator/ubuntu jammy Release' does not have a Release file. [#594]
- Increase the usage of augmented assignment statements [#555]

**Merged pull requests:**

- Better distinguishing of inactive windows from the active one, by changing the background brightness [#709]
- Ctrl+Click on group button automatically creates groups whenever needed [#691]
- [bug 680\] Open up keybindings page on keypress \#680 [\#686]
- Translate '/po/terminator.pot' in 'pt_BR' [\#684]
- Plugin and Group menu item that inserts the name of the terminal. [#683]
- Add Readonly toggle to popup menu [#679]
- Fix argument handling of the --execute flag [#678]
- Remove all ibus workarounds [#674]
- [bug 613\] -  Shortcut for autosplit h/v depending on active terminal … [\#671]
- [bug 662\] \[Feature Request\] - In the Context Menu\
- [bug 559\] Add menu autocomplete \#559 [\#665]
- [bug 662\] \[Feature Request\] - In the Context Menu\
- [bug 654\] - Plugin Submission : SaveLastSessionLayout Uses Layout to … [\#661]
- Update terminal.py [#659]
- docs: Change number of columns in repology badge [#657]
- Plugin Submission : SaveLastSessionLayout Uses Layout to Auto-Save Last session and CWD [#655]
- Fix typos [#651]
- data: Remove GNOME branding [#647]
- this line has an extra ';' symbol [#632]
- Use the term 'zero padded' instead of 'padded'. [#189]

## v2.1.2

**Implemented enhancements:**

- [Feature request\] move layout/session definitions into separate files with a dedicated extension in a dedicated directory [\#604]
- Bash completion [#495]
- Changing cursor foreground color [#467]
- Wallpaper configuration option from terminal [#466]
- Launch a new command in a vertical or horizontal split. [#446]
- Separators is wider after upgrading to ubuntu 21.04 [#445]
- Broadcast profile changes to existing terminals [#421]
- How to deactivate the middle mouse button paste? [#415]
- Feature request: expose the window and terminal title setting features in context menu [#405]
- Integrate --layout-json command line parameter so that it can be passed to dbus [#401]
- Feature request: move titlebar colors config to profiles, rather than global settings [#379]
- Visual aids [#367]
- Feature Request: detach tab [#302]
- Pls add version on OS X [#283]

**Fixed bugs:**

- Ctrl+Shift+Mouse-Scroll triggers Ctrl+Mouse Scroll [#606]
- None isn't a valid value of keybindings config anymore [#548]
- psutil.AccessDenied: psutil.AccessDenied
- Find functionality does not show matches on same line [#511]
- Ratio and/or position on a config file's layout ignored [#433]
- Black background remains after hide_window [\#425]
- Cannot create working config file with 5 terminals [#409]
- Terminal loses focus versus tab title [#400]
- Terminal title-bars are transparent on first start [#392]

**Closed issues:**

- Hide window in waybar [#633]
- Split window profile incorrect inheritance  [#631]
- [Question\] is there a way to prevent Terminator from dereferencing symbolic links? [\#617]
- Terminator not working on RHEL 9  [#616]
- Is there a right-click menu in sway? [#614]
- Set Terminator tab title via command line [#603]
- Unable to launch KeyError: b'Rss:' [#601]
- Cannot view emoji [#599]
- Clickable filepath:rownumber [#598]
- Feature Request: set initial window size in preferences [#593]
- Update the authorship in README [#586]
- xbindkeys doesn't work in Terminator, but works in other apps [#582]
- Unable to load Keybinder module [#580]
- terminator for MacOS user [#578]
- UTF-8 character breaks terminator config file [#577]
- Terminator need to highlight search string [#575]
- Custom Commands NOT Working in Linux Mint 20.3 [#573]
- Can't add/remove terminal panes from layout editor [#572]
- Language not applied after build [#569]
- Moving Cursor Word By Word using ALT + Arrows [#566]
- Enabling "putty style paste" causes context menu to be unreachable with 2-button mouse [#565]
- Setting stty options [#564]
- Switch focus and splits don't work when terminal is zoomed [#550]
- Will terminator ever consider picking up ligature support? [#543]
- feature request: Implement line spacing as a configuration option [#542]
- Change separator color [#538]
- remotinator split and execute command — cannot determine uuid [#537]
- Split vertical keyboard don't work on debian 11 [#535]
- Vte.Terminal
- Fix Keyboard Input [#533]
- group broadcasting switched on/off for all groups [#532]
- Drop a file from nautilus onto terminator window no longer works
- Crash everytime after encoding is changed to TCVN [#529]
- Change the color of the current tab to highlight it better [#522]
- Feature: Configuration to colorize split screens from default grey colour, Issue: Remove ability to select 0 and 1 handle_size from configuration gui [\#518]
- Error when using "Insert Terminal Number"
- Auto-scroll to the cursor position when typing [#513]
- hide_window mapped with Shift+Control+Alt+$an\_alphabet catches Control+Alt+$an\_alphabet instead [\#509]
- Cursor is blinking on inactive windows [#508]
- custom commands are not persisted [#505]
- Terminator slow to close if xclip was invoked [#503]
- terminator failing to open on ubuntu 21.04 [#502]
- Monospace Bold isn't working [#497]
- No prompt when closing terminator now, despite say vim running in terminal [#496]
- suppor for sixel graphics [#492]
- which is deprecated and should not be used [#488]
- could tmux Key bindings using in terminator? [#474]
- Support OpenType font features [#473]
- Crash on Terminal resize when using fish [#458]
- Incorrect layout sorting in notebook [#453]
- Coloring Tabs / Tabs Appearance [#449]
- Option to disable system notifications [#448]
- Window vanishes [#447]
- Multiple Terminator instances randomly crash on Ubuntu 20.04 [#444]
- Option to open URLs with just a click [#434]
- Doubled input from keyboard when broadcasting in tabs [#432]
- Does this tool support macOS Big Sur? [#430]
- terminator is slow [#426]
- Add more fundamental "editor-ish" feature [#424]
- Allow disabling and resetting keybindings in Preferences [#423]
- Project based layout [#418]
- Unable to Install from Source [#412]
- CTRL+A behaviour abnormal [#384]
- regexp/command hyperlink handler [#381]
- Update PPA to 2.1.0 [#374]
- Create Snap and Flatpak for Terminator [#206]
- Remove gtk-update-icon-cache handling in setup [#102]

**Merged pull requests:**

- update translations [#656]
- Terminal ctrl+mousewheel: do not try to zoom if shift is pressed [#609]
- More fixes to the Color pickers in the Preferences Editor [#592]
- Modification in the /terminatorlib/prefseditor.py file [#590]
- Various README fixes [#588]
- Remove duplicated info in some debug messages [#576]
- Added hotfix for #78 that deletes GTK\_IM\_MODULE environment variable [\#574]
- Fix POTFILES.in + update translation files [#571]
- Add initial flatpak-spawn support [#570]
- Fix: handle_size treated as cell\_width [\#561]
- Transifex translations from Dec 20 2021 [#558]
- Unzoom terminal on interaction [#553]
- Add ability to configure cell width
- Improve and optimize the code for background images [#551]
- Fix: 'None' value for keybindings breaks editor [#549]
- don't traceback while searching through /proc [#546]
- os.environ does not have LANGUAGE in Centos8. [#544]
- Remove Encoding settings
- Allow multiline commands in Custom Commands plugin [#525]
- Add paste_selection keybinding. [\#520]
- Fix terminal separator size setting [#519]
- Automatically focus the Keybindings menu [#516]
- Fix hide_window keybinding unset check [\#515]
- Add 'Disable mouse paste' [#512]
- Bug Fix: hide_window keybinding ignores Shift key [\#510]
- Improve argument parser + implement bash completion [#506]
- add Set Window Title item to context menu [#501]
- BugFix: terminal won't restart if there is no custom command [#500]
- Add a "Copy" button to clone profiles [#499]
- Make tabs detachable + minor bugfix [#494]
- remove gtk-update-icon-cache from setup.py [#493]
- remove vsplit_cmd and hsplit\_cmd from ipc.py, superseded by newer hsp… [\#491]
- Update tr.po [#490]
- add bg_img and bg\_img\_all commands to remotinator [\#487]
- Cursor: make it possible to change foreground color
- fixes for --config-json [#484]
- GUI: set all CheckButtons off to avoid blinking + remove grid empty rows/columns [#482]
- Move titlebar settings to profiles
- Issue 365 [#480]
- Fix typo in `po/de.po` [#476]
- add parameters to remotinator split commands [#472]
- add switch_profile\_all command to remotinator [\#471]
- Set CAN_FOCUS to False for notebook widgets [\#470]
- tell titlebar to start focussed out if it does not have focus [#462]
- Update translation [#460]
- Add new plugin for opening current directory using right mouse button [#459]
- Fixed Issue #425 \
- Incorrect layout sorting in notebook [#454]
- Closing tab on middle mouse button press [#451]
- Bug Fix: 'Clear selection on copy' is always unchecked [#443]
- Fixed issue #433 \
- Fix the background image loading exception handling [#436]
- Added set_tab\_title command to remotinator. [\#435]
- Ukrainianized by 93% [#428]
- Fixed geometry hints [#416]
- Feat+run cmd on match [#399]
- add feat: config to open links with single click [#398]
- Add new vsplit hsplit cmd dbus [#390]
- Added new get_focused\_terminal dbus command which returns uuid of current focused terminal [\#389]

## v2.1.1

**Implemented enhancements:**

- add "switch profile" command to remotinator [#321]

**Fixed bugs:**

- Terminal text isn't shown on lost focus of multiple tabs and hidden scroll bar [#372]

**Closed issues:**

- Terminator display freeze [#411]
- Albert hotkey
- ImportError: bad magic number in 'six': b'x03\xf3\r\n' [\#404]
- Last split in tab greyed out [#402]
- Using the `--debug-classes` option makes terminator crash [#397]
- cannot import name 'Validator' from 'validate' | arch community/terminator 2.1.0-2 [#395]
- Clicking on terminator title bars does not focus the terminal belonging to the title-bar [#394]
- Losing focus on a tabbed window will grey out the window [#393]
- Terminator turns white when using tabs [#391]
- unremovable background image [#387]
- Tab focus change causes white-out of console [#383]
- Allow hide title bar as global option [#377]
- Add project management tool [#376]
- module 'command_notify' has no attribute 'AVAILABLE' [\#375]
- weird bug with long commands [#373]
- Open in terminal [#368]
- Clipboard commands [#366]
- Background image not showing up on Xubuntu 20.04 [#364]
- Pasted text is highlighted [#363]
- [FR\] Option to elide terminal title from the left [\#362]
- Windows title are not udpated after ssh session disconnected [#359]
- No broadcast menu in sway [#357]
- Remove spaces between tabs [#331]
- Enhancement: Stjerm Layout Like Functionality [#298]
- Unwanted transparent pane separators [#293]
- clusterssh like behaviour via plugin [#222]

**Merged pull requests:**

- Release version 2.1.1 [#413]
- i18n: pt_BR: add missing space in translations with shortcuts [\#406]
- Fixed race condition when calling grab_focus after underlying vte could be closed [\#388]
- disable 2.7 tests until we can figure out how to run them in GH [#386]
- Revert 74 [#385]
- update spanish translation [#370]
- Remotinator "switch_profile" command [\#361]
- clarify config file sentences [#360]
- fix broadcast menu for sway and wayland [#358]
jperkin pushed a commit that referenced this pull request May 14, 2026
## [2.1.0] - 2024-09-27

### Added

- Use `SLUMBER_CONFIG_PATH` to customize configuration (_not_ collection) file path [#370](LucasPickering/slumber#370)
- Add a dynamic variant to `!select` chain type, allowing your collection to present a list of values driven from the output of another chain. (thanks @anussel5559)
  - [See docs for more](https://slumber.lucaspickering.me/book/api/request_collection/chain_source.html#select)
- Cancel in-flight requests with the `cancel` action (bound to escape by default)
- Add `slumber new` subcommand to generate new collection files [#376](LucasPickering/slumber#376)
- Add `default` field to profiles
  - When using the CLI, the `--profile` argument can be omitted to use the default profile
- Reset edited recipe values to their default using `z`
  - You can [customize the key](https://slumber.lucaspickering.me/book/api/configuration/input_bindings.html) to whatever you want
- Add `selector_mode` field to chains, to control how single vs multiple results from a JSONPath selector are handled
  - Previously, if a selector returned multiple results, an error was returned. Now, the result list will be rendered as a JSON array. To return to the previous behavior, set `selector_mode: single` in your chain.
  - [See docs for more](https://slumber.lucaspickering.me/book/api/request_collection/chain.html#selector-mode)

### Changed

- Update file locations to adhere to XDG spec on Linux [#371](LucasPickering/slumber#371)
  - Move config file to [config dir](https://docs.rs/dirs/latest/dirs/fn.config_dir.html), which remains the same on MacOS/Windows but changes on Linux. For backward compatibility, the previous path ([data dir](https://docs.rs/dirs/latest/dirs/fn.data_dir.html)) will be checked and used if present
  - Move log files to [state dir](https://docs.rs/dirs/latest/dirs/fn.state_dir.html) on Linux and [cache dir](https://docs.rs/dirs/latest/dirs/fn.cache_dir.html) on MacOS/Windows
  - Database file remains in [data dir](https://docs.rs/dirs/latest/dirs/fn.data_dir.html) on all platforms
- Create config file on startup if it doesn't exist
- If config file fails to load during TUI startup, display an error and fall back to the default, rather than crashing
- De-deprecate `{{env.VARIABLE}}` template sources
  - They'll remain as a simpler alternative to `!env` chains

### Fixed

- Updated the Configuration docs to remove the non-existent `slumber show dir` command (thanks @SVendittelli)
- Retain all request history when collection file is reloaded
  - Previously, pending and failed requests were lost on reload within a single session. These will still be lost when a session is exited.
- Fix serialization of query parameter lists
- Don't update UI for useless events (e.g. cursor moves)

## [2.0.0] - 2024-09-06

2.0 is headlined by a highly requested feature: one-off edits to recipes! If you need to tweak a query parameter or edit a body, but don't want to modify your collection file, you can now highlight the value in question and hit `e` to modify it. The override will be retained until you modify the collection file or exit Slumber, at which point it will revert to its original value.

Aside from the major new feature, there is one breaking change to the escape syntax of templates. The old backslash-based syntax was fraught with edge cases and unpredictable behavior. This new syntax is simpler to use, simpler to implement, and much more bulletproof. This syntax was rare to use to begin with, so **most people will be unimpacted by this change.**

Here's the full list of changes:

### Breaking

- Replace backslash escape sequence with a simpler scheme based on `_`
  - For example, previously a key would be escaped as `\{{`. This introduced complexities around how to handle additional backslashes, and also required doubling up backslashes in YAML
  - The new equivalent would be `{_{`, which parses as `{{`
  - The goal of this change is to make escaping behavior simpler and more consistent
  - For more info on the new behavior, [see the docs](https://slumber.lucaspickering.me/book/api/request_collection/template.html#escape-sequences)
- Remove `--log` CLI argument
  - See note on log files in Changed section for why this is no longer necessary

### Added

- Edit recipe values (query params, headers, etc.) in the TUI to provide one-off values
  - Press `e` on any value you want to edit (you can [customize the key](https://slumber.lucaspickering.me/book/api/configuration/input_bindings.html))
- Add `editor` field to the config, allowing you to customize what editor Slumber opens for in-app editing
  - [See docs for more](https://slumber.lucaspickering.me/book/api/configuration/editor.html)
- Add `!select` chain type, allowing your collection to prompt the user to select a value from a static list (thanks @anussel5559)
  - [See docs for more](https://slumber.lucaspickering.me/book/api/request_collection/chain_source.html#select)

### Changed

- `!json` bodies are now prettified when sent to the server
- Use `vim` as default editor if none is configured
- Move logs back to a shared file
  - They had been split into one file per session, which made them hard to find
  - The file is now eventually deleted once it exceeds a certain size

### Fixed

- Fix basic auth being label as bearer auth in Recipe Authentication pane
- Use correct binding for `search` action in the placeholder of the response filter textbox
  - Previously it was hardcoded to display the default of `/`
- Fix response body filter not applying on new responses
- Support quoted arguments in editor commands
- Fix certain UI values not persisting correctly
- Propagate unconsumed key events from text boxes
  - E.g. F5 will now refresh the collection while a text box is in focus
- Redraw TUI when terminal is resized
- Clamp text window scroll state when window is resized or text changes
- Fix extraneous input events when exiting Vim [#351](LucasPickering/slumber#351)
- Improve performance and fix crashes when handling large request/response bodies [#356](LucasPickering/slumber#356)
  - Further improvements for large bodies will be coming in the future

## [1.8.1] - 2024-08-11

This release is focused on improving rendering performance. The TUI should generally feel more polished and responsive when working with large bodies, and CPU usage will be much lower.

### Added

- Add `debug` configuration field, to enable developer information

### Fixed

- Reduce CPU usage while idling
  - Previously, Slumber would re-render every 250ms while idling, which could lead to high CPU usage, dependending on what's on the screen. Now it will only update when changes occur, meaning idle CPU usage will be nearly 0
- Fix backlogged events when renders are slow
  - If renders are being particular slow, it was previously possible for input events (e.g. repeated scrolling events) to occur faster than the UI could keep up. This would lead to "lock out" behavior, where you'd stop scrolling and it'd take a while for the UI to catch up.
  - Now, the TUI will skip draws as necessary to keep up with the input queue. In practice the skipping should be hard to notice as it only occurs during rapid TUI movements anyway.
- Improve rendering performance for large bodies and syntax highlighting
- Fix incorrect decoration in folder tree visualization

## [1.8.0] - 2024-08-09

The highlight (no pun intended) of this release is syntax highlighting. Beyond that, the release contains a variety of small fixes and improvements.

### Added

- Add syntax highlighting to recipe, request, and response display [#264](LucasPickering/slumber#264)

### Changed

- Change layout of internal database for request and UI state storage
  - This _shouldn't_ have any user impact, it's just a technical improvement. If you notice any issues such as missing or incorrect request history, please [let me know](https://github.com/LucasPickering/slumber/issues/new?assignees=&labels=bug&projects=&template=bug_report.md)
- Upgrade to Rust 1.80
- Disable unavailable menu actions [#222](LucasPickering/slumber#222)
- Support template for header names in the `section` field of `!request` chains
- Expand `~` to the home directory in `!file` chain sources and when saving response body as a file
- Ignore key events with additional key modifiers
  - For example, an action bound to `w` will no longer match `ctrl w`
- Actions can now be unbound by specifying an empty binding
  - For example, binding `submit: []` will make the submit action inaccessible

### Fixed

- Fix `cargo install slumber` when not using `--locked`
- Don't type in text boxes when modifiers keys (other than shift) are enabled
  - Should mitigate some potential confusing behavior when using terminal key sequences
- Query parameter and header toggle rows no longer lose their state when switching profiles
jperkin pushed a commit that referenced this pull request May 14, 2026
# htmltools 0.5.8.1

* `capturePlot()`s examples are now only run when `interactive()`. (#429)

# htmltools 0.5.8

## Improvements

* .The fill CSS attached to fillable containers and fill items with
  `bindFillRole()` now uses a [CSS cascade
  layer](https://developer.mozilla.org/en-US/docs/Learn/CSS/Building_blocks/Cascade_layers)
  named `htmltools` to reduce the precedence order of the fill
  CSS. (#425)

* Improved documentation for boolean attributes in
  `tagAppendAttributes()` to note that they can be set via an `NA`
  value, e.g. `tagAppendAttributes(div(), contenteditable = NA)`
  creates `<div contenteditable></div>`. (thanks @russHyde, #427)

## Bug fixes

* `bindFillRole()` now attaches its `HTMLDependency()` to fill items,
  thus reducing the possibility of filling layout breaking due to
  missing CSS. (#421)


# htmltools 0.5.7

## New Features

* `save_html()` is now an S3 generic, allowing for more customization
  over how certain classes are saved to an HTML file. (#411)

## Improvements

* Fill items no longer set `overflow: auto` or `width: 100%` by default. (#401)

* `css()` now fully supports setting custom CSS properties (or CSS
  variables) via inline styles. When the name of a value passed to
  `css()` starts with `--`, it will be treated as a custom CSS
  property and absolutely no changes will be made to the variable. For
  example, `css("--font_size" = "3em")` returns `--font_size:3em;`
  while `css(font_size = "3em")` will return `font-size:3em`. (#402)

## Bug fixes

* `{htmltools}` now requires `{rlang}` version 1.0.0 or higher. (#403)

# htmltools 0.5.6.1

## Improvements

* `tagQuery()` no longer throws an error when attempting to traverse a
  NULL value with r-devel. (#407)

# htmltools 0.5.6

## Possibly breaking changes

* Closed #386: Fillable containers no longer set `overflow: auto` by
  default. Instead, they set `min-width` and `min-height` to `0` to
  ensure that fill items a constrained in the fillable container
  without clipping their direct children. (#387)

* Closed #370: Non-fill items in fillable containers no longer grow or
  shrink and instead respect their intrinsic size. Use `height` to
  control the height of non-fill items in fillable containers and
  `min-height` and `max-height` on fill items to limit how much they
  are allowed to grow or shrink within a fillable container. (#391)

## Minor improvements

* Closed #375: calling `htmlDependency()` or a function that returns
  an `htmlDependency()` object (e.g.,
  `fontawesome::fa_html_dependency()`) in an R chunk in an R Markdown
  or knitr-powered Quarto document will now include the dependency
  rather than printing the object structure. If you want to print the
  object structure, you can use `print()` or `str()`. (#376)

* Closed #124: `includeHTML()` will now issue a warning if it detects
  that the file passed to it contains a complete HTML
  document. `includeHTML()` is designed to include HTML fragments
  where the contents of the file can be written directly into the
  current app or document, but subtle errors can occur when the file
  contains a complete HTML document. In most cases, you should instead
  use `tags$iframe()` to embed external documents. (#382)

# htmltools 0.5.5

## Bug fixes

* Closed #355: `tagQuery()` was failing to select elements with tag
  names that contained hyphens. (@slodge, #302)

* Closed #366: `tagQuery()`'s `find()` method no longer errors out
  when tags contain language objects. (#366)
jperkin pushed a commit that referenced this pull request May 14, 2026
Pkgsrc changes:
 * Remove now-upstream-integrated patch.
 * Checksum changes.

Upstream changes:

NSD version 4.11.0 had a serious bug in which applying updates to
zones (and other modifications that require a reload, such as adding
and deleting zones), could stop entirely after reception of a broken
or corrupted update via zone transfer. We believe that this broken
state would appear as one of the NSD processes consuming 100% CPU.
Version 4.11.1 has this corrected as well as some other smaller
non-critical bugs.

We strongly advise to not run NSD version 4.11.0, and if you have
it deployed already, upgrade to 4.11.1 at the earliest possible
opportunity.

4.11.1
================
BUG FIXES:
        - Fix #415: Fix out of tree builds. Thanks Florian Obser (@fobser).
        - Fix #414: XoT interoperability with BIND and Knot
        - Fix #421: old-main can quit before the reload process received
          from old-main that it is done on the reload_listener pipe.
          Thanks Otto Retter.
        - Fix whitespace in comment.
        - Fix #424: Stalled updates after corrupt transfer.

4.11.0
================
FEATURES:
        - Support reloading configuration on SIGHUP.
        - Fix #383: log timestamps in ISO8601 format with timezone.
          This adds the option `log-time-iso: yes` that logs in ISO8601
          format.
        - Updated cookie secrets management.
          The default cookie secret file location can be set at compile time
          with the --with-cookiesecretsfile=path option to configure. The
          default location is changed to {dbdir}/cookiesecrets.txt. The
          previous default location will be checked at startup when there is
          no cookie secrets file at the new default location.
          A staging cookie can now also be configured in the configuration
          file and secrets configured in the configuration file now take
          precedence over those read from file.
          All DNS related setting in the configuration file will be reevaluated
          and effectuated after nsd-control reconfig.
        - Merge #398: RFC 9660 The DNS Zone Version (ZONEVERSION) Option
        - Merge #406: ohttp and tls-supported-groups SvcParam suppor
        - Merge #408: NINFO, RKEY, RESINFO, WALLET, CLA and TA RR types
        - Merge #409: Writing of NSAP-PTR, GPOS and HIP RR types
        - Merge #407: Better balanced verbosity levels for logging.

BUG FIXES:
        - Fix title underline and declaration after statement warnings.
        - Add cross platform freebsd, openbsd and netbsd to github ci.
        - Update simdzone to include fix for netbsd double bswap declarations,
          and also semantic checks for DS and ZONEMD. And CFLAGS has -march
          prepended to fix detection.
        - Merge #376: Point the user towards tcpdump for logging individual
          queries.
        - Track $INCLUDEs in zone files.
        - Fix ci to update macos-12 to the macos-15 runner image.
        - Merge #390: Apply non-xfr tasks before xfr tasks.
          This fixes an issue where non-xfr tasks are lost when they are
          batch processed together with non-xfr tasks.
          This merge also changes that notifies are passed on from the serve
          processes to the xfrd directly instead of via main. This was
          necessary to allow applying the non-xfr tasks without forking a
          backup-main for the sole purpose of forwarding notifies.
        - Merge #391: Update copyright lines (in version output).
        - Fix #392: Inconsistent documentation about control-interface.
        - Merge #395: Explain the zonefile example better.
        - Merge #394: Fix the path to use doc/manual/.
        - Fix analyzer issue in do_print_cookie_secrets to check for failure.
        - Merge #404: Introducing Sphinx substitution in code blocks.
          As well as other fixes with Sphinx build.
        - Update Copyright lines in help output
        - Merge #395: Explain zonefile example better
        - Merge #394: Fix doc path (fixes "Edit on GitHub" button in the docs)
        - Fix Makefile for parallel build failure around bison rule.
        - Fix #405: Fix typo in documentation.
        - Treat a mismatch in RRset TTLs as a warning.
jperkin pushed a commit that referenced this pull request May 14, 2026
6.2.0
 - MacOS: we have temporarilyy switched to a static build of libcurl 8.11.1 until
   apple updates their very buggy libcurl (#376)
 - Fix LTO error for R_multi_setopt
 - Fix parsing of #fragment links in curl_parse() (#366)
jperkin pushed a commit that referenced this pull request May 14, 2026
Another breaking release with the highlight this time being the introduction of new subcommands! The existing functionality of calling inlyne <FILE> is still preserved as long as it doesn't conflict with an existing subcommand. You can use the new inlyne view <FILE> subcommand to unambiguously view a file

The first of our new subcommands is inlyne config open which makes editing inlyne's config file much simpler for people not accustomed to sniffing out obscure config file locations
Breaking Changes

    Switch inlyne's CLI with the current functionality under inlyne view (#284)

Features

    Add history navigation exposed via shortcuts (#258 #269)
    Add the new inlyne config subcommand for interacting with inlyne's config file (#285 #386)
    Modify our custom panic hook to follow a nice workflow for creating GH issues (#286)
    Allow specifying capital letters in keybinding definition (#287)
        In addition to the existing method of { key = 'a', mod = ["Shift"] }
    Allow specifying window position and size through config and CLI (#290)
    Add a desktop entry file (#293 #317)
    Allow double and triple click selection (#295 #339)
    Don't show the scrollbar when the content fits on one screen (#313)
    Add window class properties for wayland (#343 #349)

Fixes

    Update the window title on file navigation (#274)
    Fix a crash that could happen when clicking some relative file links (#292)
    Use appropriate relative sizes for headers (#307)
    Scroll on clicking the scrollbar as well as moving (#314)
    Top align checkboxes instead of centering with content (#316)
    Don't panic when the file to view is missing (#332)

Documentation

    Track code coverage with codecov.io (#337 #341 #346 #350 #378)
    Update some Cargo.toml fields (#369)

Internal

    Add a dependabot workflow to update CI actions (#265)
    Dependabot CI action bumps (#266 #267 #340 #344 #363 #374 #376 #379 #384)
    Tweak CI to avoid spawning duplicate jobs for PRs (#268)
    Ensure that we can always deserialize the default keybindings (#270)
    Update dependencies (#272 #298 #300 #301 #333 #334 #336 #370)
    Improve test coverage (#273)
    Setup initial metrics infrastructure (#289)
    Switch our HTTP client from reqwest to ureq (#296)
    Placate clippy (#297 #326 #377 #383)
    Add dev bounding box toggle (#308 #312)
    Replace wiremock with tiny_http for testing (#320 #321)
    Update image and remove streamed image decoding (#325)
    Test our custom user agent (#328)
    Cleanup test utilities (#331 #335)
    Speed up graceful image failure test (#345)
    Fix test perf regression and new beta toolchain warning (#348)
    Narrow focus of snapshot tests (#364)
    Switch from the now deprecated PanicInfo to PanicHookInfo (#371)
    Bump CI nightly toolchain version (#372)
jperkin pushed a commit that referenced this pull request May 14, 2026
0.5.6 (2025-02-08)

Security Fix

Fixes CVE-2025-25186 (GHSA-7fc5-f82f-cx69): A malicious server can exhaust
client memory by sending APPENDUID or COPYUID responses with very large
uid-set ranges.  Net::IMAP::UIDPlusData expands these ranges into arrays of
integers.

Fix with minor API changes

Set config.parser_use_deprecated_uidplus_data to false to replace
UIDPlusData with AppendUIDData and CopyUIDData.  These classes store their
UIDs as Net::IMAP::SequenceSet objects (not expanded into arrays of
integers).  Code that does not handle APPENDUID or COPYUID responses should
not see any difference.  Code that does handle these responses may need to
be updated.

For v0.3.8, this option is not available
For v0.4.19, the default value is true.
For v0.5.6, the default value is :up_to_max_size.
For v0.6.0, the only allowed value will be false (UIDPlusData will be
removed from v0.6).

Mitigate with backward compatible API

Adjust config.parser_max_deprecated_uidplus_data_size to limit the maximum
UIDPlusData UID set size.
When config.parser_use_deprecated_uidplus_data == true, larger sets will
crash.
When config.parser_use_deprecated_uidplus_data == :up_to_max_size, larger
sets will use AppendUIDData or CopyUIDData.

For v0.3,8, this limit is hard-coded to 10,000.
For v0.4.19, this limit defaults to 1000.
For v0.5.6, this limit defaults to 100.
For v0.6.0, the only allowed value will be 0 (UIDPlusData will be removed
from v0.6).

Please Note: unhandled responses

If the client does not add response handlers to prune unhandled responses, a
malicious server can still eventually exhaust all client memory, by
repeatedly sending malicious responses.  However, net-imap has always
retained unhandled responses, and it has always been necessary for
long-lived connections to prune these responses.  This is not significantly
different from connecting to a trusted server with a long-lived connection.
To limit the maximum number of retained responses, a simple handler might
look something like the following:

  limit = 1000
  imap.add_response_handler do |resp|
    next unless resp.respond_to?(:name) && resp.respond_to?(:data)
    name = resp.name
    code = resp.data.code&.name if resp.data.in?(Net::IMAP::ResponseText)
    imap.responses(name) { _1.slice!(0...-limit) }
    imap.responses(code) { _1.slice!(0...-limit) }
  end

Added

* Ensure ResponseParser config is mutable and non-global by @nevans in #381
* Add SequenceSet methods for querying about duplicates by @nevans in #384
* Add SequenceSet#each_ordered_number by @nevans in #386
* Add SequenceSet#find_ordered_index by @nevans in #396
* Add SequenceSet#ordered_at by @nevans in #397
* Add AppendUIDData and CopyUIDData classes by @nevans in #400
* Add parser config for APPENDUID/COPYUID, Deprecate UIDPlusData by @nevans
  in #401

Fixed

* Fix SequenceSet#append when its @string is nil by @nevans in #376
* Fix SequenceSet merging in another SequenceSet by @nevans in #377
* Fix SequenceSet count dups with multiple "*" by @nevans in #387
* Re-raise #starttls error from receiver thread by @nevans in #395

Documentation

* Fix SequenceSet#cover? documentation by @nevans in #379
* Document COPYUID in tagged vs untagged responses by @nevans in #398

Other Changes

* Move UIDPlusData to its own file by @nevans in #391
* Parse uid-set as sequence-set without * by @nevans in #393

Miscellaneous

* Bump step-security/harden-runner from 2.10.2 to 2.10.3 by @dependabot in #375
* Bump step-security/harden-runner from 2.10.3 to 2.10.4 by @dependabot in #380
* Improve test coverage for SequenceSet enums by @nevans in #383
*  Refactor SequenceSet enumerator tests by @nevans in #385
* Add "irb" to Gemfile to silence warning by @nevans in #388
* Omit flaky test with macOS platform by @hsbt in #389
* Improve UIDPlusData test coverage by @nevans in #392
* Rename UIDPLUS test file for consistency by @nevans in #399
jperkin pushed a commit that referenced this pull request May 14, 2026
18.0.0 (2024-10-24)

Changed

* [Ruby] Minimum supported ruby is now 2.7+ (#308)

18.0.1 (2024-10-28)

Fixed

    [Python] Release process didn't release to pypi correctly

18.1.0 (2026-01-20)

Added

* [Java] Add OSGi metadata
* [Java] class KeyboardFriendlyDecimalFormatSymbols is now public and can be
  used when creating a custom Locale-aware type transformation method (#376
  antagoony)

Changed

* [Ruby] Minor cosmetic / CI changes for development (Nothing front-facing)
* [Python] PEP 639 licence metadata specification (#361)

Removed

* [Python] Remove support for end-of-life Python 3.8 and 3.9 (#359)

19.0.0 (2026-01-25)

Added

* [Java] Make CucumberExpressionParser::parse public (#340)

Changed

* Make StepMatchArgument.Group.children optional (#370)
* [Java] Set release version to 17 (#374)
jperkin pushed a commit that referenced this pull request May 14, 2026
1.99.0 (2026-04-03)

* Bump sass from 1.98.0 to 1.99.0 in /ext/sass (#376)
  Bumps [sass](https://github.com/sass/dart-sass) from 1.98.0 to 1.99.0.

  - Release notes: https://github.com/sass/dart-sass/releases
  - Changelog: https://github.com/sass/dart-sass/blob/main/CHANGELOG.md
  - Commits) https://sass/dart-sass@1.98.0...1.99.0)
jperkin pushed a commit that referenced this pull request May 22, 2026
1.99.0 (2026-04-03)

* Bump sass from 1.98.0 to 1.99.0 in /ext/sass (#376)
  Bumps [sass](https://github.com/sass/dart-sass) from 1.98.0 to 1.99.0.

  - Release notes: https://github.com/sass/dart-sass/releases
  - Changelog: https://github.com/sass/dart-sass/blob/main/CHANGELOG.md
  - Commits) https://sass/dart-sass@1.98.0...1.99.0)
github-actions Bot pushed a commit that referenced this pull request May 24, 2026
3.103 2026-05-21

  [Improvements]
  - PR #326 Make ttree totals references (GH #325)
  - PR #332 Make truncate filter Character Entity Reference aware
  - PR #333 Skip require for already-loaded Template::Plugin subclasses

  [Bug Fixes]
  - PR #323 Fix list.grep('0') never returns matches (GH #322)
  - PR #334 Re-save compiled template to disk when source changes
  - PR #337 Escape single quotes in html_filter and HTML.escape [CVE-2026-5090, 2026-05-19]
  - PR #338 Assert plugin always throws on defined values (GH #300)
  - PR #341 Throw Template::Exception with type 'while' on WHILE loop termination
  - PR #342 Add explicit parentheses for operator precedence in Stash.pm
  - PR #343 Remove redundant duplicate regex substitution in Plugins.pm
  - PR #364 Quote interpolated filename in plugin error regex
  - PR #365 Allow iteration of constant references (GH #207)
  - PR #374 Fix blank error reported for template exception (GH #373)
  - PR #375 Correct hash dereference on array ref in _assign() DEFAULT path
  - PR #376 Use file path instead of undef $compiled in _load_compiled error
  - PR #394 Throw proper exception for nonexistent methods in Scalar plugin

  [Maintenance]
  - PR #324 Fix missing closing tag in documentation
  - PR #328 Grammar/spelling fix ("be thrown")
  - PR #329 Document configuration
  - PR #330 Typo fixes (dyanamic, relvant)
  - PR #335 Add tests for grammar factory
  - PR #336 Modernize GitHub Actions CI workflow
  - PR #339 Add 127 unit tests for under-tested core modules
  - PR #348 Add AI policy document
  - PR #357 CI: pre-install XML deps without tests for Template::Plugin::XML CI (GH #356)
  - PR #368 Remove stale TT3 promise from FAQ (GH #313)
  - PR #369 Migrate Template::Test from manual TAP to Test::Builder (GH #301)
  - PR #378 Add SECURITY.md (GH #331)
  - PR #397 Add CLAUDE.md with rules for generated files and releases
  - Update MANIFEST for current shipping policies
github-actions Bot pushed a commit that referenced this pull request Jul 9, 2026
v3.10.0     Sun Jun  7 11:50:37 CDT 2026
========================================
[SECURITY]
CVE-2026-49147: filename ANSI escape sequences
CVE-2026-49146: project .ackrc -A -B -C memory exhaustion
CVE-2026-49145: project .ackrc --follow / --files-from file exfiltration

[FIXES]
Fixed a bug where types set in the .ackrc could not be overridden from the
command line. Thanks, Dmitri Vereshchagin. (GH #393)


v3.9.0      Mon May 26 15:02:57 CDT 2025
========================================
The --not option can be used with either --and or --or.

The -g option can now use any of the boolean options, --and, --or or --not.

[FIXES]
When using --output='$f', the filename would be colorized in the output
line, but should not have been.  This has been fixed. Thanks, Dabrien
'Dabe' Murphy. (GH #350)


v3.8.2      Sun Apr  6 10:45:04 CDT 2025
========================================
ack now needs YAML::PP to run its tests. Many of ack's tests are stored in
YAML files for flexibility.

[FIXES]
ack would always set a return code of 1 if -c was used.  Now it properly
returns 1 if no files match, and 0 if any files match.


v3.8.1      Tue Dec 31 21:22:59 CST 2024
========================================
[ENHANCEMENTS]
The rules for Pytest were modified so that zsh's ad hoc scraping of
filetypes for tab completion wouldn't blow up. (GH #386)


v3.8.0      Fri Dec 20 22:07:26 CST 2024
========================================
[FEATURES]
Add --and and --or options to allow combinations of search terms. This is
in addition to the --not that was added in v3.7.0. (GH #385)

Add support for Pytest filetype.

Add support for Terraform. Thanks, Thiago Perrotta. (GH #377)

[FIXES]
The ack-standalone that gets built, and is what's available for download at
https://beyondgrep.com, now puts each of the modules it pulls in into its
own lexical scope.  This should fix any future conflicts of pragmata that
might come up in the future. Thanks, mauke. (GH #376)
github-actions Bot pushed a commit that referenced this pull request Jul 13, 2026
## [0.21.0] - 2026-07-10

### Added

- **Cloud-enabled `sem diff` now creates an immutable, owner-private hosted review URL.** Snapshot uploads include changed-entity caller/callee relations and truthful Git provenance: branch, scope, base/head refs, and available SHAs. Working-tree reviews explicitly report `HEAD → WORKTREE` rather than implying that uncommitted changes exist on GitHub.
- **GitHub login can now be exchanged for a revocable CLI session.** Raw GitHub credentials are not persisted as sem credentials, and the CLI session resolves to the same stable principal used by web reviews.

### Fixed

- **Hosted-review upload failures are visible without breaking the local diff.** `sem diff` still exits successfully with its complete local result, while stderr explains that the private review could not be uploaded.
- **Transitional cloud repository states refresh immediately.** `sem whoami` no longer leaves a repository stuck at a cached `pending` state after cloud indexing has completed.
- **`sem diff` now collapses contiguous line chunks on unsupported files into one summary line.** When a file has no grammar, sem falls back to fixed 20-line chunks, so deleting or adding one previously printed a wall of `⊖ chunk lines 1-20 [deleted]` / `21-40` / `41-60` … lines that ate context for no information. Contiguous chunks of the same change type now consolidate to a single line, e.g. `⊖ 13 chunks  lines 1-246  [deleted]`. Verbose mode (`-v`) is unchanged, since it still prints per-chunk content. Thanks @graipher for the report (#466).

### Performance

- **`sem context` now answers from an indexed point query instead of loading the whole graph, so it scales to millions of entities.** It previously hydrated every entity (plus decompressed bodies) just to answer about one, so on a 2.3M-entity repo each call took ~15s. The SQLite cache is already normalized and indexed, so when the git oracle proves the cache fresh (no filesystem walk) `sem context` now builds only the k-hop neighbourhood around the target straight from the store: batched `IN (...)` edge queries, bodies fetched per hop, stopping once there is enough content to cover the token budget so a hub entity's fan-out does not explode the fetch. It reuses the existing packer on that subgraph, so output is byte-for-byte identical to the full-graph path, and falls back to the full load whenever the oracle declines. On the Linux kernel (2.31M entities) `sem context` drops from ~15s to 0.44s per call; on Kubernetes (520k) from ~5s to ~1.2s.
- **Default (`All`-mode) `sem impact` now answers from the indexed cache too, instead of hydrating the whole graph.** A full cache stored entities and edges but not test flags, so All/Tests-mode impact (which includes the "covered by N tests" answer) fell through to a full-graph load — ~3.5s on Kubernetes, ~10.7s for an unbounded `--depth 0`, even for a tiny blast radius. The full save now records test flags (shared with the topology save) behind a metadata marker, so the existing point-query path can serve All-mode impact straight from indexed edge queries. Output is identical to the full-load path — verified byte-for-byte against it, including the tests field. On Kubernetes (520k entities) default `sem impact` drops from **~3.5s to 0.04s**, and `--depth 0` from **~10.7s to 0.04s**. Caches built before the marker still take the full path, so nothing regresses.
- **The resident MCP server no longer holds the whole graph in RAM by default, cutting idle memory dramatically.** It used to proactively build and keep the entire deserialized graph in memory on startup so the first query would be warm — ~671MB on Kubernetes, ~5GB on the Linux kernel. But `context` and `impact` now answer from the indexed cache directly, and the CLI's fast paths bypass the resident entirely, so that proactive hold is mostly wasted memory. Prewarm is now opt-in (`SEM_PREWARM`); by default the resident stays light and builds the full graph lazily, only when a query that genuinely needs it (graph/diff/text) runs. On Kubernetes an idle resident drops from **671MB to 10MB**.

## [0.20.0] - 2026-07-05

### Changed

- **Indexing now shows a staged loader with a real, whole-build progress bar, not a single "Building entity graph" spinner.** A cold graph build renders each phase sem-core reports as a persistent `◆` line — `Scanning files — N found`, `Parsing code — done` — and a **single filling bar with a live percentage spans the entire build**: the build is two passes over the file set (parse, then resolve), so the bar's length is 2×files and its position is (files parsed + files resolved). It tops out at ~50% when parsing finishes and only reaches 100% when resolution actually completes — so 100% means genuinely done, not "parsing done." Fed by two lock-free per-file counters (`graph_parse_done`, `graph_resolve_done`) via phase hooks. Ends with the existing `✓ N entities · M files in …ms` summary. Warm cache fires nothing and stays instant; TTY-only, so agents, pipes, the MCP server, and CI see nothing (the bar's poll thread never even spawns off a terminal).
- **`sem setup` now shows a staged progress loader instead of a flat list of check lines.** Setup runs as a small tree of steps — `git diff → sem diff`, `Claude Code hooks`, `pre-commit hook` — each with a live braille spinner that resolves to a green `◆` (did something), a dim `·` (nothing to do / not applicable, e.g. not in a git repo), or a yellow `⚠` (left a file untouched on purpose, e.g. an unparseable `settings.json`). It ends with a one-line summary and the `sem unsetup` revert hint. Same idempotent behaviour, just legible at a glance.

### Added

- **sem-core: `set_build_phase_hook` / `clear_build_phase_hook` / `BuildPhase` + `graph_parse_done` + `graph_resolve_done`** — an optional per-thread callback at graph-build phase boundaries (parsing, resolving) plus a lock-free counter of files parsed, so a front-end can render staged progress and a live parse bar. No-op for every caller that doesn't read them.

## [0.19.0] - 2026-07-05

### Removed

- **Removed `sem orient` and all fuzzy/ranked retrieval.** The `orient` command and its `--pack` briefing, the sem-core ranking (lexical scoring, IDF, recall net, structural priming), the `sem_entities query=` intent-search mode, and the resident server's `orient` socket op are all gone. Ranking a natural-language task to the right entity proved unreliable — a 45-task validation showed the ranker's hit-rate (~47%) could not be lifted by heuristics without causing regressions — and it was the only non-deterministic thing in sem. sem is now purely deterministic: `context` (read an entity plus its callers/callees), `impact` (blast radius), `diff`, `entities` (list by path, or `text=` for exact-substring search), `blame`, `log`. To find code whose name you don't know, use a plain text search to get a candidate name, then hand it to `sem context` for the structure grep can't give. The prompt-submit hook keeps its deterministic exact-name prefetch and no longer shells out to the ranker.

### Fixed

- **Dot-chain extraction is now linear, not quadratic, in file size.** `extract_dot_chains_with_positions` computed each match's line number by counting newlines from the start of the file every time, so on a large file dense with `a.b` chains the cost was O(matches times filelen). Since the regex yields matches in increasing byte order, it now tracks the line number incrementally and counts only the newlines since the previous match, which is linear overall and produces identical one-based line numbers. Verified byte-for-byte identical graph output on React (34,251 entities, 73,702 edges). No change for typical files; it removes a cliff on very large generated or minified sources.

- **Structural hashing no longer allocates a Vec per AST node.** The two structural-hash walkers (`hash_structural_tokens` and its name-excluding variant) collected every internal node's children into a fresh heap `Vec` (plus a fresh tree-sitter cursor) just to push them in reverse, despite a comment claiming zero allocations. They now reuse a single cursor and push children in place, reversing the appended slice, which is byte-for-byte identical output. On a cold graph build this removes roughly 300k allocations (structural hashing alone dropped from about 319k allocations to 13.5k, measured with dhat on deno). Peak RSS is unchanged and wall time is within noise under mimalloc, but the churn reduction helps memory-constrained and non-mimalloc builds. Hashes are verified identical across 3,337 entities, so rename detection and existing caches are unaffected.

### Added

- **`sem setup` now makes sem a Claude Code session default (macOS/Linux).** Beyond the `git diff` alias, it installs two session hooks into `~/.claude/settings.json`: a warm resident graph (SessionStart runs `sem mcp --resident` detached, so structural queries answer in single-digit ms instead of rebuilding) and prompt-time context injection (`sem hook prompt-submit`). The JSON edit is idempotent, backs up `settings.json` first, refuses to touch a file it can't parse, and preserves every existing user hook and key; `sem unsetup` removes exactly the sem hooks and cleans up empty arrays. Local warmth is free and login-free — cloud (`sem login`) is repositioned in the README as the scale/team/CI upgrade, not the way to get warmth.

### Documentation

- **Benchmarks page rebuilt on the July 2026 paired-run data.** The docs site's benchmarks page now reports the real agent A/B numbers (grep+read agent vs sem agent on SWE-bench Verified bugs, hidden-test graded): 50-65% faster code understanding, verify loop 2.90s to 0.59s per iteration when call-graph edges resolve (bimodal, 1.2x floor disclosed), token parity stated plainly, and an explicit "what sem does not do" section including the unchanged solve rate. Retired the stale "75% fewer tokens" and "2.3x agent accuracy" hero claims. Changelog page gains entries for v0.17-v0.18 work with the lessons that produced them.

## [0.18.0] - 2026-07-03

### Fixed

- **sem now works on repos using git's reftable ref storage** (`git init --ref-format=reftable`, git 2.45+). Previously every command died with libgit2's cryptic `unsupported extension name extensions.refstorage`. libgit2 can't read reftable refs, but the object database and index are unchanged, so GitBridge now tolerates the extension and routes just the ref resolutions (`HEAD`, refspecs, revwalk starts) through the git CLI while libgit2 keeps doing everything else by OID. Verified end to end on a real reftable repo: working/staged/commit/range diffs, blame, and per-file history all produce identical results to a files-backend repo. One residual gap: the cache freshness oracle's direct `git2::Repository::open` is `.ok()`-guarded, so on reftable repos it just skips the acceleration (correctness unaffected). Requires `git` on PATH for the ref lookups. Thanks @bengry for the report and clean repro (#451).

### Added

- **Unique-method-name call edges (dynamic languages).** Attribute calls on receivers of unknown type (`index.keep_levels(...)`) previously produced no graph edge, hiding real dependents and blinding `--tests`. In Python/Ruby — where receiver types are statically unknowable — a method name with exactly one definition repo-wide now resolves to it: one candidate, one edge; any ambiguity, no edge. Static languages keep precision-first resolution (an unresolved receiver there is deliberate: shadowed import, instance property).
- **`Parent::child` entity qualifiers.** `sem impact "Dataset::set_index"` and friends now work everywhere `Parent.child` does (graph and cached lookups).

- **`sem impact --tests` lexical fallback + fast-path fallthrough.** Graph edges miss tests that call a target through a module namespace (`xr.where(...)` resolves to no entity), so `--tests` could answer "No tests found" for a function with dozens of tests. Now: an empty tests answer from the sidecar or disk cache is treated as non-authoritative and falls through to the full path, which backstops zero graph edges with lexical reachability — test entities naming the target as a whole word — clearly labeled as weaker evidence. Found live: an agent's graph-selected verify loop (run only the tests that reach your change) went from 0 selected tests to a 56-test net on `xr.where`, versus the 1,900+ tests of whole-file runs.
- **Sharper `--pack` briefings.** Term ranking is now IDF-weighted (a term appearing in half the repo is worth almost nothing), `<details>` environment dumps in issue text are stripped before extraction, attribute accesses glued to receivers ("d2.loc") also emit their `.attr` suffixes as terms, and one of the three briefing slots goes to the top name-echo orient hit — for bugs where the issue names a surface API the culprit's body never mentions.

- **`sem orient --pack <tokens>`: turn-zero briefings from task text.** Feed orient a whole issue or task description and it returns a packed briefing — the top matching functions' bodies plus their immediate callers/callees — sized to the token budget. Ranking is body-term convergence: code-ish terms are extracted from the task text (flags, dotted names, identifiers) and entities are ranked by how many distinct terms their bodies contain, since issue vocabulary lives in bodies, not names. Built for prompt-time injection (the agent-side analog of the prompt-submit prefetch hook): the code an agent would spend its first turns foraging for arrives at turn zero. Honest calibration: on three ground-truth issues it put the exact target function first on two; issues that quote the tool's own output can still poison term extraction.

- **sem is published to the official MCP registry** as `io.github.Ataraxy-Labs/sem`, so MCP clients that browse the registry (VS Code, Cursor, Claude Code, and others) can discover and install the server directly. The release workflow now publishes each release to the registry via `mcp-publisher` (authenticated with GitHub OIDC, no extra secrets), backed by a `server.json` manifest and an `mcpName` field in the npm wrapper.

### Performance

- **Delta-fills: changed entities answer with a diff against the version your session saw.** The attention ledger now stores fill contents, so when a session re-asks about an entity that changed since its last look, the answer is an entity-level delta (`∆ alpha · changed since you read it … - x = 1 / + x = 42`) instead of the whole packed body. Measured end to end: a post-edit re-ask that previously re-sent the body now costs 2 diff lines. Completes the ledger's answer set — new entity: full fill; unchanged: one line; changed: delta; `SEM_FRESH=1` / `fresh: true` always forces the full re-pack. Deltas larger than 120 lines fall back to a full fill.

- **Attention ledger covers the MCP path.** `sem_context` (the tool agent sessions actually call) now runs through the same per-session fill ledger: an MCP server process serves exactly one session, so re-asks for unchanged entities collapse to one `≡ unchanged since you read it` line automatically — no environment variable needed. New optional `fresh: true` param forces a full re-send (for when context compaction dropped the earlier fill).

- **Attention ledger v1: repeated context fills collapse to one line.** The resident server now keeps a per-session ledger of every `context` fill it has emitted (entity id + content fingerprint). When the same session re-asks for an unchanged entity, the answer is a single `≡ unchanged since you read it` line instead of the full packed body — the body is already sitting in the asking model's context window, so re-sending it is pure token waste. Measured through the CLI socket path: 8,586 bytes first fill, 139 bytes on repeat (98.4% suppressed). Opt-in via `SEM_SESSION=<id>` in the environment; `SEM_FRESH=1` bypasses; anonymous calls are never suppressed. Any change to the target entity misses the fingerprint and re-sends in full. This is the first piece of the attention architecture (docs/attention-architecture.md): space (graph), time (commit index), attention (ledger).

- **`sem entities --text`**: entity-addressed text search from the CLI (the MCP tool already had it) — one line per hit (file, innermost entity, line, matched text) instead of whole bodies, served from the resident server's warm graph in milliseconds with a local-graph fallback. This is the token-cheap way for an agent to verify a call site or find a string: a body-level `sem context` costs hundreds of tokens where a text hit costs ~15.

- **Auto-resident server: every sem CLI query after the first answers in milliseconds, on any repo.** A socket miss now spawns `sem mcp --resident` (hidden plumbing) detached in the background: a server that holds the repo's graph warm and serves ONLY the per-repo unix socket, exiting on its own when idle for 30 minutes or when it loses the bind race to a live session. `sem context` and `sem orient` gain sidecar fast paths (impact already had one), so the full structural read loop runs against the warm graph: measured on a 30K-LOC repo, first `sem context` 0.68s cold (spawning the resident), then context/orient/impact all under 10ms. In a controlled agent benchmark (6 verified code-understanding questions, classic grep/read agent vs sem agent, identical prompts and batching guidance), the sem agent answered in 13s vs 37s with equal 6/6 correctness — 65% faster. `SEM_NO_AUTOWARM=1` disables the auto-spawn, `SEM_NO_SIDECAR=1` the fast path.

- **Token-efficient tool output**: the same answers at a fraction of the tokens the consuming model has to read (and pay for). (1) The context packer stops enumerating noise: related test entities are folded into per-role counts instead of packed as one-line "#[test]" stubs (unless the target itself is a test, when its test neighborhood is the question), bare attribute/comment signatures are skipped, and transitive tiers are capped at 25 entries per role with the remainder counted. What was dropped is stated explicitly in one line ("not packed: +64 direct dependents (64 tests) · sem_impact lists them"), so the signal survives at a fraction of the cost. Measured: `sem context` on a hot sem-core entity 7,272 to 4,113 tokens (-43%, 119 to 48 entries); on a hot weave entity 5,216 to 3,498 (-33%, 146 to 27 entries, the 119 test stubs now one line). (2) The `sem_entities` MCP tool renders compact per-line trees (name · type · lines, children indented, files as group headers) instead of pretty-printed JSON: measured 3.7x fewer tokens on a 115-entity file (5,028 to 1,361). Applies to the MCP path and query modes; CLI `--json` output is unchanged for scripts.

- **Semantic commit index (storage engine layer 2)**: history is now stored as entity deltas. Each commit is semantic-diffed against its first parent exactly once and persisted as entity-change rows in the cache (`commits` + `entity_changes` tables, sha-keyed and branch-agnostic); every later history query is a SQLite lookup plus a diff of only the commits git gained since. Measured on the sem repo: `sem log` over 500 commits drops from 4.46s to **0.03s** on the second query (~150x), with the first query as the one-time indexing pass and each new commit costing one incremental diff. Applies to `sem log` repo analytics (hotspots + co-change pairs) and the MCP `sem_log` tool; per-entity traces are unchanged. Aggregation is shared code between the live git walk and the store (`aggregate_history_analytics`), tested to produce identical hotspot/co-change output, so the two paths cannot drift. Merge-heavy history gets better semantics: each commit is attributed its own first-parent diff instead of a diff against its arbitrary revwalk neighbor, and merge commits contribute no changes of their own (their first-parent diff restates the merged-in commits, which index individually). File-filtered queries index full-repo diffs once and filter at aggregation, so the first filtered query costs more than the old pathspec-scoped walk but every later query on any filter is instant. Cache schema v9; existing caches rebuild automatically on first use.

- **CLI sidecar fast path**: `sem impact` now answers from the resident `sem mcp` server's warm graph via its unix socket before doing any local work — measured **4.5ms** end-to-end on a 158K-LOC repo, versus 22.4ms for the local cold path and 7.7ms for a ripgrep scan of the same repo: the full blast radius (callers, dependencies, depth-bounded transitive impact, affected tests) is now cheaper than a raw text match. Output is byte-identical to the local path (the sidecar ships serialized `EntityInfo`s that the CLI feeds to its existing printers; verified across all modes and `--json`). The fast path is an accelerator, never a requirement: bounded socket timeouts and silent fallback mean no resident server (or `SEM_NO_SIDECAR=1`, `--no-cache`, custom scopes, `.semignore`, `--entity-id`) just runs the normal local path. Server-side, the new sidecar `impact` op classifies affected tests only among the entities the impact BFS actually reached, instead of walking the whole corpus per call (6.8ms → 0.1ms on a 4.7K-entity graph).

### Fixed

- Internal: rustfmt line-wrap missed in the #445 sidecar change; no behavior change.

- The context packer's token estimator was undercounting real tokens 2-3x on dense code (words x 1.3 vs the ~4 chars/token reality: a context reported as 661 tokens measured ~2,400 real tokens), silently overshooting every budget. It now takes the max of the word- and character-based estimates, so nominal budgets match what the consuming model actually pays.

- The context packer's "not packed" summary line pluralizes roles correctly ("transitive dependencies", not "dependencys").

- Workspace version bumped to 0.16.0: `ContextResult` gained the public `omitted` field (a breaking change for struct-literal constructors, flagged by cargo-semver-checks), and 0.x semantics put breaking changes in the minor version.

- The docs site deploys through workflow-based GitHub Pages (`.github/workflows/docs-pages.yml`: upload `/docs` verbatim, deploy) instead of the legacy branch-based Jekyll builder, which began failing repo-wide with zero-duration "Page build failed" errors on commits that didn't touch docs — including on direct build requests via the Pages API. The site is pure static HTML, so the legacy builder added nothing but a failure mode; deploys now also skip entirely on commits that don't change `docs/`.

### Changed

- The GitHub Action's PR-comment footer now tells the reader what to do next — "add it to your repo in 2 minutes", linking to the action's install snippet — instead of only naming the tool. Every entity-diff comment is seen by all of a repo's collaborators; the footer is the loop that turns viewers into installs.

### Added

- **`sem repos`** — where your code is stored, in one command. Two inventories side by side: the **cloud account** (authoritative `GET /v1/repos`: every indexed repo with status, entity/file counts, last-indexed time, indexed commit, and any indexing error rendered inline) and **local storage** (every entity cache under the sem cache root with size on disk, entity count, cache kind, and the repo it was built from). `--json` for scripts. Listing the account also reconciles this machine's `~/.sem/repos.json` mirror with server truth — stale entries (a repo registered mid-index stays "pending, 0 entities" forever otherwise) were silently mis-routing the local-vs-cloud decision for impact/context queries. Caches are now stamped with their repo root at save time (`repo_root` in `cache_metadata`); caches built before this show as unlabeled and self-label on their next rebuild.

- Fish shell support, via the `tree-sitter-fish` grammar (gated behind the `lang-fish` feature in `grammar-all`). Extracts functions — including the config.fish pattern of definitions inside a top-level `if status is-interactive` block — and resolves fish call edges (a `command`'s name against repo functions, builtins excluded), so `sem impact` sees which fish functions call which. A `function` defined inside another function stays part of the outer entity's content, matching fish's runtime semantics (inner definitions become global, not lexical children). Previously `.fish` files fell back to generic line-based chunking with an unsupported-language warning. Thanks @thalys for the request (#433).

### Documentation

- **First-principles page on the docs site** (`docs/first-principles.html`, linked from every page's nav): four charts explaining why the recent latency work changes what an agent can afford to do, not just how fast it runs — the scan-vs-index crossover (a text scan pays per byte; residency removes the index's ~800ms hydrate floor, so the constant-time line wins at every repo size), the ~100ms human-perception threshold every new path now sits under, model turns as the real cost unit (3 → 2 → 1 inference turns per structural answer via one-call lookup, then prompt-time prefetch), and tokens per answer (the measured ~15% entity-tree-vs-JSON ratio). Measured numbers come from this changelog; model curves and turn timings are labeled illustrative on the page. Charts are dependency-free inline SVG with hover tooltips and a table view each.

### Performance

- **Content-store cache (storage engine layer 1)**: the entity cache no longer duplicates source text per entity. Each file's text is stored once (zstd) in a `file_contents` table, and any entity whose body is provably a byte slice of it (`content == file[start_byte..end_byte]`, verified at save time) stores NULL content and is re-sliced on load; unprovable entities (no spans, normalized endings) keep content inline. On a 139K-entity corpus (fresh cache both sides) this cut the cache 20% (269MB to 216MB; the content layer itself −58%, 80MB to 24MB inline + 10MB zstd), engaged for 77% of entities. Honest costs: warm full-content loads pay ~0.13s extra for decompress+slice on that corpus (0.38s to 0.51s); topology loads and the MCP server's in-memory hot path are unaffected, and cold build time is unchanged within noise (peak RSS ~−5%). Correctness gates: byte-identical graph vs the previous binary on the full corpus, byte-identical entity content round-trip (including multi-byte unicode and nested entities), and incremental saves keep the file store in sync with entity deletes. Cache schema v8 — existing caches rebuild automatically on first use.

### Added

- **Entity-addressed text search**: `sem_entities` takes a `text` parameter — an exact substring searched across entity bodies in the warm in-memory graph (no file reads). Hits come back addressed by the innermost enclosing entity (`file: entity (Lline): matched text`), ready to chain into `sem_context`/`sem_impact`, in ~20-30ms warm on an 85K-LOC repo. This retires the main remaining reason agents fell back to grep (strings, error messages, config keys); misses say honestly that comments between entities and non-code files are not covered.

### Performance

- Graph build: the scope resolver no longer allocates its debug resolution log (several owned strings per reference, discarded by every production path — only a bench consumed it), and edge dedup is index-based instead of cloning both entity IDs per edge into a hash set. Output is byte-identical (proven edge-for-edge on a 139K-entity build); ~1-3% fewer instructions retired. Groundwork toward #320/#322 — the remaining peak-memory work (entity content sharing, ID interning) is tracked there.

### Added

- **`sem hook prompt-submit`** (hidden plumbing): the prompt-time prefetch, compiled. Reads a Claude Code UserPromptSubmit event, extracts identifier-shaped tokens from the prompt (backticked, snake_case, CamelCase, qualified — never plain words), resolves them against the resident server's socket sidecar, and prints packed entity context for injection. **10ms end-to-end** (was ~40ms as a Python hook — interpreter startup and a git subprocess, both eliminated: repo root is found by walking to `.git` in-process). Silent on conversational prompts, slash commands, unknown names, or when no server is resident.

### Added

- The socket sidecar is unix-only (`cfg(unix)`): Windows builds skip it with a no-op and the prefetch hook falls back silently — the sidecar is an accelerator, never a requirement. (Fixes the Windows build break the sidecar introduced.)
- **Socket sidecar**: `sem mcp` now exposes the warm in-memory graph on a per-repo unix socket (`~/.sem/sock/<repo-hash>.sock`, one JSON line in, one out). Short-lived local callers — the prompt-prefetch hook, future CLI fast paths — get one-call entity context in single-digit milliseconds instead of paying a fresh process plus SQLite hydrate (~800ms). Stale sockets from dead servers are detected and taken over; the sidecar is a silent accelerator, never a requirement.

### Added

- **One-call lookup**: `sem_context`'s `file_path` is now optional. With only an `entity_name`, the entity is resolved across the whole repo (unique match proceeds; ambiguity returns a compact candidate list with the files; no match returns near-name suggestions) and the body plus callers/callees comes back in a single round-trip — one agent call where grep needs two (search, then read). Measured 26ms wall on a prewarmed server, name-only, unfamiliar repo.

### Performance

- The sem MCP server is now **local-first and prewarmed**. Cloud-first routing on `sem_impact`/`sem_context` cost a network round-trip on every call before the local answer (and carried the same wrong-entity risk gated in the CLI); it is now behind `SEM_MCP_CLOUD=1` until the server resolves name+file strictly. The server also builds the CWD repo's graph in the background at startup, so the agent's first structural query answers from memory. Measured on an 85K-LOC repo: warm `sem_context` runs in under 1ms wall (faster than a ripgrep scan of the same repo), and the first call dropped from 129ms cold to ~0 with prewarm.

### Removed

- Team presence was pulled from the `--badge` package before it shipped as a feature (product call: not a feature for now). The statusline no longer shows teammates and the hook sends nothing anywhere; the dormant server endpoints remain unadvertised.

### Added

- The `--badge` statusline is now **live at trigger time**: a PreToolUse hook flips the badge to an animated spinner with the entity name the moment the agent calls sem (`⊕ sem ⠹ impact validateToken…`), and the completed state (count, latency, savings) lands when the call finishes. The render hot path never touches the network (renders measured at ~20ms).

### Fixed

- The `sem context` / `sem_context` budget packer no longer starves the target while neighbors feast. Previously a target too big for the budget collapsed to its first line (2 tokens) while a single large dependency could consume the entire budget with its full body. The target now degrades gracefully — full body → head-truncated body (docstring, fields, leading code, with an explicit `… truncated: N more lines` marker) using up to ~70% of the budget → bare signature — and no neighbor may cost more tokens than the target itself did (budget/10 floor), oversized neighbors degrading to signatures. On the same query (a large class, budget 2000) the target went from 2 tokens to 1,398 and the answer-relevant attributes are now in the payload.

### Added

- **Entity-level history analytics**: `sem log` with no entity now analyzes recent repo history in one pass and reports **hotspots** (the most-changed code entities, with commit counts, distinct authors, and the last commit that touched each) and **co-change pairs** (entities that repeatedly change in the same commits, with a confidence score — "these two never change apart"). Counts are per commit, code entities only (doc headings, config properties, and lockfile chunks are excluded so the signal is about code), and bulk commits touching >50 entities are excluded from pair-counting to keep quadratic noise out. Same via MCP: `sem_log` without `entity_name`. `--file` scopes to one file; `--json` returns everything. This is the time axis a snapshot dependency graph cannot see: which code churns, and which code moves together.

### Changed

- `sem_impact` MCP results now render as a **blast-radius tree** (`◉` header, one `├─▶` branch per file, real callers first, all-test files sunk to the bottom, nothing elided) — expanding the tool widget is the live graph, no separate viewer process needed. The bundled skill also instructs agents to draw the blast radius as a small ASCII tree directly in their reply when an impact result drives the answer.

- `sem_impact` and `sem_context` MCP results now render as a compact entity tree instead of pretty-printed JSON: dependents/dependencies/transitive impact grouped one line per file, every entity name preserved, with the elapsed time and source in a footer. The same information lands in about 15% of the tokens, and the expanded tool widget in agent UIs reads at a glance (`⊕ entity · file`, `← 29 dependents · 10 files`, `⚡ 70 transitively affected`). Context entries keep their verbatim content under a per-entry header.

## [0.15.1] - 2026-07-01

### Added

- `npx @ataraxy-labs/sem-skill --badge` (opt-in) installs a live sem badge in the Claude Code statusline: it shows how many structural queries ran this session, the last command **and the entity it analyzed**, its latency, a sparkline of recent latencies, and a rotating stat (distinct entities analyzed, top command) (`⊕ sem ×12  impact validateToken 9ms  ▁▂▃▅▂  · 7 entities analyzed`). It is fed by a PostToolUse hook that catches sem via **both** the MCP tools and the `sem` CLI (Bash), and falls back to recent activity so the badge never stalls on "idle". Non-destructive: it backs up settings and never overwrites an existing statusline (it prints how to add the badge yourself instead).
- **GitHub Action** (`Ataraxy-Labs/sem/action`): entity-level semantic diff comments on pull requests. One sticky comment per PR showing which functions/classes/methods were added, modified, or deleted, updated in place on every push; cosmetic-only PRs (formatting/comments) are called out explicitly. Installs the prebuilt binary (~2s), needs no config or API keys, and never fails the build. sem's own PRs now dogfood it via `.github/workflows/pr-entity-diff.yml`.
- The savings meter now lives in the **statusline itself** — no extra process. The `--badge` badge always shows the live estimated time + tokens this session's sem calls saved vs grep+read (`⊕ sem ×5 diff · ≈ 4m · ≈ 25k tokens saved`), and when idle it shows the lifetime total (`⊕ sem idle · ≈ 3h · ≈ 190k tokens saved`). The PostToolUse hook is the single writer of the persisted lifetime tally (`~/.claude/sem-savings.json`), so the counter grows from real usage whether or not the live viewer is open. Estimates stay anchored to the measured benchmark and labelled `≈`.
- Live viewer for the `--badge` install: `~/.claude/sem-live.py` (run it in a spare terminal pane). It redraws an ASCII blast-radius graph each time sem runs — the analyzed entity, its direct callers (real ones surfaced, test fan-out collapsed), and the transitive count — plus a **savings meter**: a running, honestly-estimated tally of the grep+read round-trips, time, and tokens sem saved this session, and a lifetime counter persisted across sessions (`~/.claude/sem-savings.json`). Estimates are anchored to a measured benchmark and labelled `≈`. The badge hook now also records `--file` and cwd so the graph can be reconstructed.

### Fixed

- Repository discovery now tolerates Git worktrees that use the `extensions.relativeworktrees` config key, avoiding libgit2's unsupported-extension error when plain `git` can open the checkout.
- Cloud-backed `sem impact` / `sem context` no longer answer queries they can't answer correctly. Two gates added: `--no-cache` now always computes fresh locally (previously the cloud snapshot was served anyway), and **file-hinted queries (`--file`) stay local** — the cloud resolves entities by name with a silent name-only fallback, so for same-named entities (e.g. ten `fn run` command handlers) it could return the *wrong entity's* graph, and a stale cloud index could drop dependents that exist locally. Local resolution disambiguates exactly; the cloud path returns once the server resolves name+file strictly and exposes its indexed commit for a freshness check.
- Impact/dependency resolution now follows type-qualified associated calls (`Type::method()`) when the receiver is a known repo type, so a caller reached only through a static/associated path is no longer dropped from `sem impact`. Previously, e.g., a test helper calling `SemPlugin::detect_changes()` was invisible to the reverse-dependency graph, and its transitive callers were missing from the blast radius. Resolution stays precise: a bare module path (`foo::bar::baz()`) still does not bind to a same-name local function, and common associated names (`Type::new`, `::default`) are not guessed.

### Performance

- Faster graph hydrate on large repos. The public `EntityGraph` maps now use `rustc-hash` (FxHashMap) instead of std SipHash, matching the build's internal maps, and the SQLite cache sets read pragmas (`mmap_size`, `cache_size`, `temp_store=MEMORY`) on every connection. On a 200K-entity / 800K-edge graph this is about 9% faster to hydrate (0.42s to 0.39s, no overlap across repeats); negligible on small repos. Output is byte-identical.

## [0.15.0] - 2026-06-30

### Changed

- Whole-repo commands (`sem graph`) now skip the file-discovery walk when git proves the cache is fresh (HEAD unchanged and the working tree clean), serving the cached topology directly. On a 200K-file repo this is about 9x faster with git fsmonitor and about 4.5x faster without it; small repos and non-git repos are unchanged. The oracle only ever declines to accelerate, never serves stale results, and the `git status` check is time-bounded (`SEM_FRESHNESS_TIMEOUT_MS`) with `SEM_FRESHNESS=scan|git|auto` to override.

### Added

- `sem xref` lists cross-repo dependencies across your indexed repos: entities in one repo that depend on entities in another. A single-repo local graph can't see this, so it's a cloud feature (requires `sem login`) and is gated to the team/enterprise tier. Adds `cross_deps()` to the shared cloud client.
- `sem diff` now prints a one-line hint, when run interactively and logged out, that `sem login` reveals what your changes break across repos (a cross-repo question a local single-repo diff can't answer). It is heavily throttled (at most once a week), shown only on a terminal with real entity changes, and stays completely silent in CI, pipes, `--json`/non-terminal output, and for logged-in users.

### Performance

- Cache freshness checks now run the per-file `stat` + content-hash scan in parallel (rayon) instead of sequentially (#351). On touched-file cache hits over large repos, the freshness scan was the dominant remaining cost (~42ms of sequential filesystem/hash work on a 5K-file touched scenario); it now scales across cores. SQLite reads stay serial (the connection isn't shared across threads) and fingerprint-refresh writes remain serial and best-effort — only the pure filesystem+hash work is parallelized, so cache-hit validity is unchanged.

### Documentation

- The bundled `/sem` agent skill no longer hardcodes a language count. It said "31 languages", which went stale as grammars were added and disagreed with the README ("32") and the crate description ("28"); it now says "30+ languages" so it can't drift, and an en-dash was replaced with a hyphen.
- README: documented the optional cloud acceleration flow (`sem login` serves `impact`/`context`/`entities` from a warm pre-built graph for large repos; local is unchanged and `SEM_LOCAL=1` forces local), and added Lua to the supported-languages table.

### Added

- Lua support, via the `tree-sitter-lua` grammar (gated behind the `lang-lua` feature in `grammar-all`). Extracts global, `local`, table (`t.f`), and method (`t:f`) functions. Thanks @mmgeorge for the request (#393).
- `SemanticEntity` now carries optional `start_byte`/`end_byte` offsets, populated from the underlying tree-sitter node during code extraction. A consumer can slice the exact original bytes of an entity out of a file given only its `file_path` and span, without re-parsing. Persisted through the entity cache and surfaced in `sem entities --json`. Thanks to Thomas J. for the request.

### Added

- `npx @ataraxy-labs/sem-skill`: one-command setup of sem for coding agents. Installs the sem skill into `~/.claude/skills/` and registers the `sem mcp` server, so an agent uses sem (impact / context / orient / diff) over grep for structural questions without manual setup. Builds on the skill contributed in #376.

### Added

- An agent skill (`skills/sem/SKILL.md`) documenting sem's semantic diff, impact, blame, history, context, and graph workflows for coding agents. Thanks @linhlban150612 for the contribution (#376).
- `self-update` Cargo feature (on by default) gates the built-in `sem update` and the background update-available check. Distro and package-manager builds that own the binary's lifecycle can opt out with `cargo build --no-default-features`; `sem update` then prints a "update through your package manager" message instead of replacing the binary. Thanks @0323pin (pkgsrc/NetBSD) for the request (#390).

### Added

- `sem context --hops N` bounds the related entities to N graph hops from the target (instead of filling to the token budget), so you can ask for "the entity and just its immediate neighborhood." The `sem_context` MCP tool gains the same `hops` parameter. 0 (the default) keeps the existing unbounded, budget-driven behavior.

### Changed

- The `sem mcp` instructions now tell agents to read code with `sem_context` (which returns an entity's full source plus its callers/callees, addressed by name) rather than opening the file, reserving direct file reads for editing and non-code. Reading by entity is robust to line drift and arrives with the dependency context.
acidburn0zzz pushed a commit to acidburn0zzz/pkgsrc that referenced this pull request Jul 27, 2026
0.8.3 (2026-06-30)

What's Changed

* Remove MultiJson dependency and replace with JSON by @kojix2 in TritonDataCenter#373
* Add dependabot configuration by @kojix2 in TritonDataCenter#375
* Bump actions/checkout from 4 to 5 by @dependabot[bot] in TritonDataCenter#376
* Fix typos in documentation and README files by @kojix2 in TritonDataCenter#374
* Fix undefined var in FfirzmqAdapter by @kojix2 in TritonDataCenter#377
* Bump actions/checkout from 5 to 6 by @dependabot[bot] in TritonDataCenter#379
* Avoid conflict with Ruby's numbered parameters by @zalt50 in TritonDataCenter#380
* Accept newer Jupyter console kernel error message by @kojix2 in TritonDataCenter#382
* Remove obsolete Docker CI files by @kojix2 in TritonDataCenter#381
* Fix CI hang on Ruby 3.4 by avoiding live ZMQ session in test by @sealocal
  in TritonDataCenter#383
* Remove legacy IRUBY_OLD_SESSION session implementations by @kojix2 in TritonDataCenter#384
* Rename session serializer file by @kojix2 in TritonDataCenter#385
* Remove CI requirements file by @kojix2 in TritonDataCenter#386
* Remove unused test wrapper script by @kojix2 in TritonDataCenter#387
* Add explicit session cleanup by @kojix2 in TritonDataCenter#388
* Test heartbeat cleanup contract by @kojix2 in TritonDataCenter#389
* Use raw zmq_proxy for ffi-rzmq heartbeat by @kojix2 in TritonDataCenter#391
* Add micromamba setup for Python environment in CI workflow by @kojix2 in
  TritonDataCenter#392
* Remove obsolete PyCall dependency by @kojix2 in TritonDataCenter#393
* Add Ruby 4.0 to CI workflow matrix by @kojix2 in TritonDataCenter#394
* Bump actions/checkout from 6 to 7 by @dependabot[bot] in TritonDataCenter#395
* Update README by @kojix2 in TritonDataCenter#396
* v0.8.3 by @kojix2 in TritonDataCenter#397

New Contributors

* @dependabot[bot] made their first contribution in TritonDataCenter#376
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant