Repository navigation
Releases: hk9890/task-manager-ui
Releases · hk9890/task-manager-ui
Release list
v0.21.0
- Action required on macOS 12 Monterey. The macOS binaries now need
macOS 13 Ventura or later; macOS 12 is not supported. On macOS 12, stay on
v0.20.0 or update macOS. - Action required if your config file has a
---line after its
settings. A config file with more than one YAML document now fails
startup and--check-configwiththe file holds more than one YAML document. A single---at the end of the file counts. Before, the app
read the first document and ignored the rest without a warning. Delete the
---line, and move any settings below it into the first document. - Security: a crafted link in an issue could make the detail page slow to
draw. A link with a crafted, very long path in the description of an issue
or in a comment made each draw of that detail page slow (GO-2026-6218). Only
someone who can write to a store you open could put it there, and no setting
prevented it. The release binaries are now built with Go 1.27.2, which fixes
it. - Fixed: an empty config file, or one with only comments, stopped
startup withdecode yaml: EOF. Such a file now starts the app with the
defaults, at the default path and at a--configpath alike. - Fixed: on a 256-colour terminal, the latte theme drew a near-black band
under the row, the tab or the menu-bar button under the pointer. The band is
now light grey. - Fixed: descriptions and comments were drawn in colours the terminal does
not have. A 16-colour terminal was sent 256-colour codes, and a 256-colour
terminal was sent true-colour codes in code blocks. Every colour is now drawn
in the colours of the terminal. - Fixed: under
NO_COLOR, descriptions and comments were drawn in
colour. They now have no colour, as the rest of the screen. - Fixed: a paste with Windows line ends added an empty line after every
line in the issue editor, and two spaces in place of one in a title, a
filter or a dialog field. - Fixed: a comment that started with a blank line lost that line when the
issue editor saved it. - Changed: under
NO_COLOR, bold and reverse text are drawn. Before, no
text attribute was drawn outside descriptions and comments. - Changed: on a 256-colour terminal some colours use other palette entries,
for example the grey of muted text and the selection band. - Changed: the placeholder of a dialog field is drawn in the grey of muted
text, as every other placeholder is.
v0.20.0
- Action required if you edit an issue with
alt+e. The key, the handoff
to your$EDITORand theeditor.commandconfig key are gone. Edit the
issue withalt+u: the new issue editor also holds the description. A
config that setseditor.command, or that binds theedit_issueaction,
still starts, with a startup warning for each: delete the entry. - Action required if your config binds
ctrl+sin the shell context or
alt+din the detail context.ctrl+snow saves in the issue editor and
alt+ddeletes a comment. A config that already binds one of them to
another action of that context fails startup and--check-config, for
example withkey "ctrl+s" conflicts between actions ... in shell context.
Rebind one of the two; the new actions aresave_editinshelland
delete_commentindetail. - Changed: one issue editor replaces the dialogs.
alt+n,alt+u,
deleteandalt+anow open a full screen and no longer a box over the
screen. It has a row for the title, the status, the type, the priority, the
assignee and the labels, and the description below them as text of many
lines.tab,shift+tab,upanddownmove between the fields, and in
the descriptionupanddownmove the cursor until its first or its last
line.leftandrightstep the status, the type and the priority through
the values of the store.ctrl+sor theSavebutton saves, andescor
Cancelleaves without a question. Only the fields you changed are written.
deleteopens the editor with the status onclosedand the cursor on the
close reason, and writes nothing until you save. For a comment the editor
has the text alone. The dialogs for the status and for the priority alone
are gone.
docs/user-guide/key-bindings.md
has all the keys. - Fixed: the dialogs to create and to update an issue did not fit a terminal
of fewer than about 39 rows. On a terminal of 30 rows the labels, the
description and the buttons were not drawn. The issue editor fits a terminal
of 80 columns and 24 rows. - Changed: a refused save keeps the editor open. When the store refuses a
save, for example for an empty title or a description that a store hook
rejects, the editor stays open with what you typed, and the refusal stands
in red above the form. Correct it and save again. - Added: edit and delete a comment. On the detail page
rightfrom the
content moves to the comments, andupanddownselect one.enteredits
the selected comment in the issue editor, andalt+ddeletes it after a yes
in a dialog. An edited comment gets a new time and your name, so it moves to
the top. A rule now stands between two comments. - Added: buttons on the detail page.
editstands at the right end of the
line with the ID of the issue,addon theCommentsheading, andedit
anddeleteon the selected comment. Each shows the key that does the same,
and a click presses it. - Changed: the Metadata pane of the detail page only shows the fields. It
takes no focus, no key and no click:leftandrightmove between the
dependencies, the content and the comments, andenteron the status or the
priority no longer opens a dialog. The pane does not scroll. When the screen
is too short for all its rows, as on a terminal of 80 columns and 24 rows,
it ends on… (N more). It is 2 columns narrower, and the content has those
columns. - Changed: the detail page does not draw the line of the view tabs.
taband
shift+tabstill leave it for a tab.
v0.19.1
- Security — an escape sequence in an issue reached your terminal. The app
sent a control character in a description, the notes, a comment or a field
of an issue to the terminal as it was. Whoever can write an issue in a store
you open could send an escape sequence to your terminal, for example one
that sets the window title. No setting was needed.taskmgraccepts a
control character in a description and in a close reason, and the sequence
went out when the detail page of that issue drew that text. It refuses one
in a title, an assignee and a label, so those need a store file that
another tool wrote; such a title went out as soon as the Board listed the
issue. A control character other than a line break or a TAB now draws as a
space, and a format character that shapes nothing, such as a right-to-left
override, is dropped. - Fixed: a TAB in a description or in the notes broke the issue detail
page. When the app drew the body as markdown, because it has a heading, a
list, a quote, a code block or a link, the line with the TAB ran past the
border of its pane. Most such lines also ran past the edge of the terminal,
and each of those moved the rows above it up by one. With two of them, or
with one on a terminal of 24 rows, the menu bar left the screen. A line
stayed on the screen only when its TABs moved the text by no more than the
blank columns at the right of a wide terminal: 1 column from 102 columns, 2
from 104. A TAB now draws as spaces up to the next 4-column stop, and the
line stays in its pane. - Fixed: the detail page cut text of a description, the notes or a comment
that did not fit its pane. In a body drawn as markdown, a word wider than
the pane, such as a long URL or a run of Chinese or Japanese text, ended in
…and the rest of it was shown nowhere. A line of a code block with no
space in it did too, and so did every long line of a comment that the app
frames as command output. A table with more columns than the pane has room
for lost the text of its headings, and one with still more columns lost
most of its cells. This text now goes on in the next line. A table that
cannot fit draws as wrapped text: each row keeps the bars between its
cells, but the cells no longer stand in columns. - Fixed: a description, the notes or a comment wrapped in the wrong place.
A line broke at a hyphen inside a word, and one word then stood alone on the
next line. A long line of a code block went on at the left margin, without
the indent of the block. The second line of a long list item started under
the bullet or the number, not under the text. A quote line with a long word
went on without its bar, and so did a line of a list or of a second quote
inside a quote. Text with no markdown broke in the middle of a word. A line
that the app wraps now breaks at a space and goes on under the text of its
first line, and only a word wider than the line is broken. Two cases did not
change: a list item that its author wrapped by hand still goes on under its
bullet or its number, and a cell of a table still breaks at a hyphen. - Changed: a comment that the app frames as command output now wraps its long
lines, and its limit of 28 lines counts lines on the screen. A log with long
lines shows fewer of its lines before… (+N lines elided). The limit of 18
lines of another comment did not change. - Changed: in a comment framed as command output and in a description, the
notes or a comment with no markdown, a line that wraps loses its runs of
spaces: each run inside the line becomes one space, so text aligned in
columns loses its alignment on that line. The indent at the start of the
line stays, unless it is wider than half the pane: such a line wraps with
no indent. A line that fits keeps its spaces. - Changed: a block quote that its author wrapped by hand keeps those line
ends. Before, the quote flowed to the width of the pane. A line break that
the author forced in a paragraph, with two spaces or a backslash at the line
end, now stays too. A paragraph wrapped by hand still flows when the body
has markdown in it. - Fixed: a line break or a TAB in a field of an issue broke the frame.
taskmgraccepts one in a close reason, so a reason of two lines given to
taskmgr close --reasonwas enough to break the detail page of that issue.
It stores none in the other fields, so there it comes from a store file
that another tool or a hand edit wrote. A line break in the title, in the
ID or in the first three characters of the status made the row of the issue
one line higher on the Board, on the Docs tab and in the store search, so
each row below it moved down. On the detail page, a line break in the
title, the ID, the status, the type, the assignee, the owner, the close
reason, a label or the author of a comment added a row and moved the
borders. A TAB in one of them but the ID pushed the rest of its line past
the border of the pane. Each of these fields now draws on one line.
v0.19.0
- Action required: the keys changed. No action is on a bare letter, digit or
symbol key any more, because those keys now type into the filter. The new
defaults:alt+hhelp,alt+sstores,alt+fsearch,alt+rreload,
alt+eedit,alt+nnew issue,alt+uupdate,alt+acomment,delete
close,alt+v/alt+p/alt+lthe three launchers,ctrl+cquit. Move
with the arrow keys,pgup,pgdown,homeandend, and open with
enter:h,j,k,landono longer move or open.ctrl+q,?,
1–4,ctrl+space,/and>are gone. They/nkeys of a dialog
are unchanged. Thealt+keys need a terminal that sendsaltas an escape
prefix; on macOS turn on the Option-as-Meta setting of the terminal.esc
and a letter that reach the app together read as thatalt+key: under tmux
keepescape-timeat 10 ms or lower, the default since tmux 3.5.
docs/user-guide/key-bindings.md
has the whole list. - Action required if your config binds keys. A
keybindingsentry in the
shell,boardordetailcontext that binds a single printable character
orspacenow fails startup and--check-config, with an error that names
the key, the action and the context. Bind the action to analt+orctrl+
key, for examplequit: [ctrl+q]. Themodalcontext still takes any key.
An entry on a key that a new default gives to another action in the same
context also fails, for example withkey "alt+n" conflicts between actions ... in shell context. Rebind one of the two. The shell actionsmode_board,
mode_docs,mode_search,mode_detailandtoggle_search, the board
actionload_moreand the wholesearchcontext no longer exist: an entry
for one is ignored with a startup warning, so delete it. New actions are
open_searchinshellandmove_home,move_end,page_upand
page_downinboard. - Action required if your config binds
backspace,ctrl+w,ctrl+uor
ctrl+t. An entry in theshellorboardcontext on one of these keys
now fails startup and--check-config, with an error that names the key, the
action and the context. The filter and the store search now take these keys
first, so such a binding cannot run on those screens. Bind the action to
another key. Thedetailandmodalcontexts still take them. - Action required if your config binds
alt+cin the shell context.alt+c
now opens the configuration screen, and a config that already binds it to
another shell action fails startup withkey "alt+c" conflicts between actions ... in shell context. Rebind one of the two; the new action isopen_config. - Added: a configuration screen.
alt+c, or the newconfigbutton on the
menu bar, opens a screen whereleftandrightstep the theme and the
glyph set. A change shows at once and is written to the config file, which
keeps its comments and its layout; a missing file is created. When the file
cannot be changed safely, nothing changes and a toast says why.escreturns
to where you came from. - Changed: the header. The first button on the menu bar is the name of the
open store, in bold; it opens the store picker, asstoresdid. A name
longer than 24 columns is cut to 24. On a narrow bar it is cut further, down
to 8 columns, before a button is dropped. The text at the right of the tab
line — the store, the view, the selected issue andIdle— is gone: each
part repeated what the screen already shows. - Changed: the look of the screen. On a terminal wider than 100 columns the
app leaves blank columns at the sides, 2 on each side from 104 columns. On
one higher than 24 rows it leaves a blank row above and below from 26 rows,
whatever its width. The margin takes the first 4 columns over 100 and the
first 2 rows over 24, so the app is not drawn smaller when the window grows.
Help is a full screen and no longer a box over the screen: the keys stand in
sections in one column, the keys of Detail, of a dialog and of the
configuration screen included,alt+horesccloses it, andenterno
longer does. A description too long for the screen goes on in its column on
the next line, and a help taller than the screen reads… (N earlier)on its
first row and… (N more)on its last. The configuration screen has the same
chrome: a title line, a rule, one blue line and a second rule. On the
configuration screen the blue line names the config file a change is written
to. A menu-bar button has a space on each side, and the button or the tab
under the pointer is lit over that whole cell; a click anywhere on it counts.
A button's label is the text colour, and the rule under the bar starts under
the first label. In the key legend the key is now the dim part and what it
does the bright part, the hints are joined by•, the line starts one column
in, and it ends in…when hints are left off. The bar is wider, so a narrow
terminal drops the version and the last buttons sooner. The band on the row
under the pointer is now the shade between the background and the selected
row: lighter than the background on a dark theme, darker on
catppuccin-latte. A 256-colour terminal draws that band in a grey. A
16-colour terminal has no shade for it: the row under the pointer is not
marked there, a tab changes its text colour and a button's label turns bold. - Fixed: a directory with a line break or a tab in its name broke the store
picker. The path drew on two lines, so a click landed one row off. A store
name and a path now draw on one line, without format characters such as a
right-to-left override. The error of a failed store listing does too: a
registry file with a value of the wrong type gave an error of two or more
lines. The same holds for the create-store form, every toast and the error
of a board column or of the detail view: a directory name with an escape
sequence in it reached the terminal from the create-store form. A format
character that shapes nothing, such as a right-to-left override or a soft
hyphen, is dropped; a joiner in an emoji or a script stays. A long error on
the detail view wraps, and a toast draws at most 6 lines, the last a…
when it cut the message. - Added: type to filter. On the Board and Docs tabs every key you type goes
into a filter on the line above the columns. A row stays when every word of
the filter is in its title or its ID. The matched text is marked and each
column header readsN of M, the matching rows of the loaded rows.
backspace,ctrl+wandctrl+uedit the filter andescclears it. The
filter stays through a tab switch, a detail round trip and a reload. - Changed: search is no longer a tab.
alt+f, or the newsearchbutton
on the menu bar, opens the store search from a tab or from the detail. It is
one list of results and searches as you type: a search runs 150 ms after the
last key, andenterpressed inside that time opens the result of what you
typed. There is noenterto run the query, no preview pane and no pane
focus.ctrl+tstill switches between open issues and all issues. A search
shows at most 100 results and the header reads100 of Mwhen the store
holds more.escclears the query and then returns to where you opened the
search; from a result's detailescreturns to the results. The view tabs
are Board and Docs. - Changed: the Done column loads the next page of closed issues only by itself,
when the selection comes near the end of the loaded rows. The>key that
loaded a page on demand is removed. - Added:
pgup,pgdown,homeandendmove the selection on the Board, the
Docs tab, the store search and the store picker. - Changed: when the terminal is too narrow for all board columns, the columns
stay in place until the focus leaves them, and then move only as far as
needed. A click orleft/righton a column already drawn no longer shifts the
board. The wheel now scrolls the column under the pointer and focuses it. - Fixed: one central store directory that cannot be read no longer empties the
store picker. That store is listed asbroken, andenteron it shows the
reason on a second toast line. - Fixed: one central store directory that cannot be read no longer stops the
app from starting elsewhere. Before,taskmgr-uiexited withfailed to open task-manager store for ...in every directory that has no local.tasks
store. It now opens the store of that directory, or the store picker when the
directory has none. Only a start in the project of the unreadable store, or
with--store-nameon it, still fails. - Fixed: the error toast of a refused write said the reason two times. A write
that a hook refuses, or that the store finds not valid, names it one time. - Fixed: the result of a write, an edit or a launcher that came back while help
or a dialog was open was lost, and no toast reported it. The toast now shows. - Fixed: when the detail of an issue failed to load, the toast
Failed to load selected issue detailscame back on each change of the store and each timed
refresh. It now shows one time for an issue, and again when you reload. - Fixed: a refresh you did not ask for moved the cursor to another issue in the
Done column when other closes had pushed the selected issue below the rows
already loaded. The refresh now loads up to 3 more pages of Done to find the
issue again, and the cursor returns to it. When the issue is not in those
pages, the cursor stays on its row as before.
v0.18.0
- Action required on a light terminal. The app now draws in a theme of its
own,catppuccin-mochaby default, and no longer follows the terminal
background. Mocha is dark: on a light terminal the selected row and much of
the text are hard to read. Setui: {theme: catppuccin-latte}in your config. - Action required if you select text by dragging. The app now takes the
mouse, and a plain drag no longer makes a terminal selection. Holdshift
and drag for the terminal's own selection. The mouse cannot be turned off. - Changed: the screen layout. The first line is a menu bar with the
stores,reload,helpandquitbuttons, each with its key, and the
version on the right. The view tabs Board, Docs and Search have a line of
their own under it. An issue row is two lines: type and title, then priority,
status and ID. A store picker row is the name and status, then the project
path. The selected row is marked by a bar and a band of colour in place of
›. The last line names what each key does. A screen shows about half as
many issues as before. - Added: the views follow the store. The board, the Docs tab, the search
results and the detail now reload when anything writes the store: the
taskmgrCLI, an agent or anothertaskmgr-ui. This also happens while the
terminal is not focused. Before, a view reloaded at most once a minute, and
an app whose terminal reported that it lost the focus did not reload until
the focus came back. A change that arrives under a dialog or the help overlay
shows when it closes. A change that arrives while you type a search query
shows when you run the query or leave the query field. Where the store cannot
be watched, the views refresh on focus and once a minute as before.
--no-auto-refreshturns the new refresh off with the other two;rreloads
at once either way. - Added: mouse support. Click a row to select it and click it again to open
it. Click a view tab, a menu-bar button or a pane. The wheel moves a list's
selection and scrolls detail text and the help. Dialogs take keys only.
docs/user-guide/key-bindings.md
has the whole list. - Added: drag to copy. A drag selects a box of text and letting go sends it
to the clipboard through the terminal. The toast saysSent, notCopied:
a terminal or multiplexer that ignores the OSC 52 clipboard sequence leaves
the clipboard as it was, and the app cannot tell. Useshiftand drag there. - Added: themes.
ui.themetakescatppuccin-mocha,catppuccin-macchiato,
catppuccin-frappeorcatppuccin-latte, the one light theme. - Added: glyph sets.
ui.glyphstakesunicode, the default, which spells
type, priority and status as letters as before;nerd, which draws them as
icons and needs a Nerd Font; orascii. An
unknown theme or glyph set fails startup and--check-configwith the valid
names. - Changed: the search results scroll. A search loads up to 100 results and
the Results pane scrolls through them with the selection. Before, it loaded
only the results that fit the pane, and the others could be reached only by
narrowing the query. The header reads7 of 13when the pane shows part of
the list. - Fixed: the help overlay was cut at the bottom of the terminal and the rest
could not be read. It now scrolls on the detail scroll keys,j/k,
pgup/pgdown,home/end, and under the wheel. - Fixed: on the Search view in a terminal shorter than 11 rows, the first lines
of the screen scrolled off the top. The screen is now cut to the terminal
height: the menu bar stays on the first line and the key legend on the last. - Fixed: a refresh you did not ask for returned the Done column to its first
page. With the column paged down, the selected issue left the column and the
cursor moved to another one. The column now reloads as deep as it was paged,
and the cursor stays on its issue while that issue is within those rows. A
cursor move made while a refresh ran was also undone when it finished.r
still returns to the first page.
v0.17.0
- Action required if your config binds
sin the shell context.snow
opens the store picker, and a config that already binds it to another shell
action fails startup withkey "s" conflicts between actions ... in shell context. Rebind one of the two;docs/user-guide/key-bindings.md
has an example. - Added: a store picker.
sfrom any tab lists every central task store
registered on this machine with its name, project path and health, and marks
the one in use.enterswitches the running app to the highlighted store in
place: the board, Docs tab, search, detail and launchers all follow, and the
header names the new store. A store the registry knows but cannot open stays
listed with the reason.escreturns to the tab you came from. - Changed: starting with no task store opens the picker instead of exiting.
taskmgr-uirun outside any project used to printno .tasks directory found
and exit 1. It now opens on the picker with a toast saying why, as does an
unknown--store-name. A store that exists but cannot be opened still exits
1. - Added: create a store from the picker. When started somewhere with no
store, two rows above the registry offer to create a local store or a central
store for that directory, with the ID prefix and registry name prefilled the
waytaskmgr initwould choose them. The new store opens straight away. - Changed: launchers are refused while the active store's project directory
is missing. A central store whose project was moved or deleted still opens,
butn,pandlused to run in a directory that was gone and blamed the
launcher. Each now refuses with a toast naming the path, and the Detail
footer says the launchers are off. A launcher with its ownworkdirstill
runs;eis unaffected. - Columns now read newest change first. Not Ready, Ready, In Progress and
the Docs tab order their rows by last change, most recent at the top, with
priority as the tie-break. Before, priority came first and a P0 issue
untouched for a month sat above the work you changed an hour ago. Done keeps
its close-date order. - Age markers show where the stale work starts. A muted divider reading
older than 1 dayand another readingolder than 1 weeksit before the
first issue past that age, each with the count of issues below it. A column
of fresh work shows no divider; a column where everything is stale shows
both stacked at the top. Done draws none. - Fixed: a write that a store hook refused was reported as
update issue failed: update issue: unknown: ..., as if the app had faulted.
It is now reported as a refusal with the hook's own reason, the way the
taskmgrCLI reports it. - Fixed: under
--repo memory, a search page shorter than the full result set
was reported as complete, so no further page was offered and the list was
silently truncated.
v0.16.0
Changelog
- d798e11 docs(changelog): complete the v0.16.0 release notes (#80)
- c613a2a fix: remediate the twenty findings of the post-v0.15.0 review (#79)
- a40526c fix: repair two rendering defects and document the SDK v0.9.0 hooks migration (#78)
- ef8740f chore(deps): upgrade the task-manager SDK to v0.9.0 (#76)
- 9461537 test: pin fourteen branches a second mutation audit proved unasserted (#77)
- 203772d fix: remediate the codebase review findings (#75)
- 896bbd0 test: pin the sites a mutation audit proved unasserted (#74)
- e7bfef7 docs(monitoring): correct three runtime-record descriptions (#73)
- da8fff1 docs: remediate the full documentation audit findings (#72)
- 54e4b22 chore(deps): Bump jdx/mise-action from 4.2.5 to 4.3.0 (#71)
- 1ce8723 fix: remediate the full-source review findings (#70)
v0.15.0
Changelog
- 333be02 docs(changelog): prepare the v0.15.0 release notes
- bd8940a chore(deps): upgrade the task-manager SDK to v0.8.0 (#69)
- 4a8da41 Merge pull request #68 from hk9890/worktree-search-open-scope
- 3202d6a Merge branch 'main' into worktree-search-open-scope
- 5619561 Merge pull request #67 from hk9890/worktree-doc-anchor-gate
- 544d00d Merge branch 'main' into worktree-doc-anchor-gate
- 1e898cd Merge pull request #66 from hk9890/worktree-chevron-clip
- 6986d43 Merge branch 'main' into worktree-chevron-clip
- fe92598 Merge pull request #65 from hk9890/worktree-security-scope-store
- a8792e6 Merge branch 'main' into worktree-security-scope-store
- 76bc1c1 feat(search): search open work by default, ctrl+t for closed history
- 93cf4ba test(docs): fail the build on a dead link anchor
- 286a3d8 fix(detail): keep the selection off a pane's scroll-indicator rows
- 93343e0 fix(memory): exclude doc-type issues from Ready and Blocked (#64)
- 4bbe9f1 docs(security): stop implying the store is always in-tree
- dfdc944 ci: remove the Claude Code GitHub Actions integration (#63)
- 0b2b5cd docs: route by action and align the doc set with the writing-project-docs standard (#62)
- 28ef53d feat(ui): add a Docs tab and move tab/shift+tab to the tab strip (#61)
- d72c06d chore: promote the tracker store to the central registry (#60)
- b22fa76 chore(deps): Bump jdx/mise-action from 4.2.4 to 4.2.5 (#58)
- 31c77c3 chore(deps): Bump actions/attest-build-provenance from 4.1.1 to 4.2.2 (#54)
- aebb15d chore(deps): Bump anthropics/claude-code-action from 1.0.185 to 1.0.196 (#59)
- 0517272 chore(deps): Bump golang.org/x/tools from 0.48.0 to 0.49.0 (#57)
- 8c12bfd chore(deps): Bump github.com/charmbracelet/x/ansi from 0.11.7 to 0.11.8 (#55)
v0.14.0
v0.13.0
Changelog
- 71250c1 Merge pull request #49 from hk9890/worktree-release-v0.13.0
- 855aaa9 docs: add the v0.13.0 CHANGELOG section
- fae79ce ci: drop the automatic Claude PR review
- bfacd7a test: cover the modal keyboard path the mutation tests skipped
- 192a16a refactor: close the codebase-review findings on doc/code drift
- c440802 docs: compact the change-management docs to their owned content
- 8897f73 chore: adopt worktree-based change management
- f2d8618 chore: upgrade task-manager SDK to v0.7.0 and support the doc type
- 51eac7c chore(deps): Bump actions/setup-go from 6.5.0 to 7.0.0
- 46c46c8 chore(deps): Bump actions/checkout from 7.0.0 to 7.0.1 (#42)
- ef679dd chore(deps): Bump jdx/mise-action from 4.2.1 to 4.2.3 (#43)
- 56b2cd1 chore(deps): Bump jdx/mise-action from 4.2.0 to 4.2.1 (#40)
- 36e6d29 chore(deps): Bump golang.org/x/tools from 0.46.0 to 0.48.0 (#39)
- e76f9ce chore(deps): Bump goreleaser/goreleaser-action from 7.2.2 to 7.2.3 (#37)