Changelog

What changed, release by release.

Built from GitHub Releases each time a version ships. heap. itself tells you when there is something new.

All releases on GitHub
0.5.5latest

1 features · 1 docs

Features1
  • themeHeap. ink as the default theme; screenshots and brand card fixed #177
Docs1
  • Product-focused README and fresh 0.5.4 screenshots #176
Release page and downloads ↗
0.5.4

1 features · 1 fixes · 3 changes · 1 build & ci

Features1
  • File attachments and saved views #168
Fixes1
  • S/A findings of the 2026-09-30 e2e audit #169
Changes3
  • Design audit: contrast tokens and keyboard focus (S tier) #170
  • Design audit: A, B and C tiers #174
  • Audit 2026-09-30: B·S and B·A tiers #175
Build & CI1
  • qmllintFix the module import that made the ratchet always red #167
Release page and downloads ↗
0.5.2

6 features · 2 changes · 1 docs · 2 build & ci

Features6
  • siteA full website with a browser demo #158
  • integrationsWrite a cross-project issue back to its own repo #160
  • themeEditable themes, 8 presets and a soft contrast mode #161
  • uiLabelled sidebar, resizable right panel, new icons, integration cards #162
  • uiDesign tokens, a quieter palette and card, a better editor and themed menus #163
  • themeA low-contrast dark family replaces the old extra presets #164
Changes2
  • Quick capture from any app, a wider vocabulary and readable confirmations #165
  • @dependabot[bot] made their first contribution in https://github.com/sectapunterx/heap/pull/157
Docs1
  • Fresh screenshots and a README that matches the code #159
Build & CI2
  • Cut CI time and harden the pipeline #156
  • Bump the actions group with 5 updates by @dependabot[bot] in https://github.com/sectapunterx/heap/pull/157
Release page and downloads ↗
0.5.0

Undo and redo, recurring events, and many notes with links between them.

Features73
  • searchMake the header search box a query box #115
  • syncWalk every page of a tracker pull, and wait out a rate limit #118
  • integrationsLet the user map a tracker's statuses onto columns #119
  • stateSchema v5 — per-task rank and dependency links #130
  • undoA real undo/redo stack #131
  • boardManual card order with drop-position insert #132
  • boardSort a column by priority, due date, recency or title #136
  • taskRender the description as markdown, and tick its checklist #137
  • calA recurrence-rule engine for events #141
  • weekThe whole day, a now line, dropped cards, and click to create #143
  • calendarRemind about meetings, not only the standup #144
  • calendarAll-day, multi-day and cross-midnight events #145
  • calendarRecurring events, .ics, and keyboard navigation #146
  • notesMany notes instead of one blob #147
  • notesA list of notes beside the one being edited #148
  • notesImport and export a folder of .md files #149
  • notesLinks that cross from one note to another #150
  • docsA tree of pages, not just a catalog #151
  • searchMake the header search box a query box #115
  • syncWalk every page of a tracker pull, and wait out a rate limit #118
  • integrationsLet the user map a tracker's statuses onto columns #119
  • stateSchema v5 — per-task rank and dependency links #130
  • undoA real undo/redo stack #131
  • boardManual card order with drop-position insert #132
  • boardSort a column by priority, due date, recency or title #136
  • taskRender the description as markdown, and tick its checklist #137
  • calA recurrence-rule engine for events #141
  • weekThe whole day, a now line, dropped cards, and click to create #143
  • calendarRemind about meetings, not only the standup #144
  • calendarAll-day, multi-day and cross-midnight events #145
  • calendarRecurring events, .ics, and keyboard navigation #146
  • notesMany notes instead of one blob #147
  • notesA list of notes beside the one being edited #148
  • notesImport and export a folder of .md files #149
  • notesLinks that cross from one note to another #150
  • docsA tree of pages, not just a catalog #151
  • searchMake the header search box a query box #115
  • syncWalk every page of a tracker pull, and wait out a rate limit #118
  • integrationsLet the user map a tracker's statuses onto columns #119
  • stateSchema v5 — per-task rank and dependency links #130
  • undoA real undo/redo stack #131
  • boardManual card order with drop-position insert #132
  • boardSort a column by priority, due date, recency or title #136
  • taskRender the description as markdown, and tick its checklist #137
  • calA recurrence-rule engine for events #141
  • weekThe whole day, a now line, dropped cards, and click to create #143
  • calendarRemind about meetings, not only the standup #144
  • calendarAll-day, multi-day and cross-midnight events #145
  • calendarRecurring events, .ics, and keyboard navigation #146
  • notesMany notes instead of one blob #147
  • notesA list of notes beside the one being edited #148
  • notesImport and export a folder of .md files #149
  • notesLinks that cross from one note to another #150
  • docsA tree of pages, not just a catalog #151
  • searchMake the header search box a query box #115
  • syncWalk every page of a tracker pull, and wait out a rate limit #118
  • integrationsLet the user map a tracker's statuses onto columns #119
  • stateSchema v5 — per-task rank and dependency links #130
  • undoA real undo/redo stack #131
  • boardManual card order with drop-position insert #132
  • boardSort a column by priority, due date, recency or title #136
  • taskRender the description as markdown, and tick its checklist #137
  • calA recurrence-rule engine for events #141
  • weekThe whole day, a now line, dropped cards, and click to create #143
  • calendarRemind about meetings, not only the standup #144
  • calendarAll-day, multi-day and cross-midnight events #145
  • calendarRecurring events, .ics, and keyboard navigation #146
  • notesMany notes instead of one blob #147
  • notesA list of notes beside the one being edited #148
  • notesImport and export a folder of .md files #149
  • notesLinks that cross from one note to another #150
  • docsA tree of pages, not just a catalog #151
  • peopleMake the rail a to-do list and add someone by searching #154
Fixes57
  • archiveStop the binding loop and the recursive rearrange #116
  • qmlStop shadowing base-type properties on Popup and Item #117
  • notesFlush a pending edit on destruction and on quit #121
  • testsRestore the three suites the source-list refactor emptied #123
  • stateGate the ladder per rung and refuse a newer schema #122
  • calendarClamp every event write into the day #124
  • calendarSettings defaults, week start in the picker, month paging #125
  • calendarTime-block a task from its own estimate, and find a free slot #126
  • markdownHighlight a fence with its own language's comment syntax #127
  • boardKeep statusChangedAt through a column-delete undo, cover status CRUD #128
  • shellRail-ordered view shortcuts, docs search, window geometry #129
  • calendarDraw the whole day, and open on the part of it you are in #140
  • weekLay overlapping events side by side instead of on top #142
  • archiveStop the binding loop and the recursive rearrange #116
  • qmlStop shadowing base-type properties on Popup and Item #117
  • notesFlush a pending edit on destruction and on quit #121
  • testsRestore the three suites the source-list refactor emptied #123
  • stateGate the ladder per rung and refuse a newer schema #122
  • calendarClamp every event write into the day #124
  • calendarSettings defaults, week start in the picker, month paging #125
  • calendarTime-block a task from its own estimate, and find a free slot #126
  • markdownHighlight a fence with its own language's comment syntax #127
  • boardKeep statusChangedAt through a column-delete undo, cover status CRUD #128
  • shellRail-ordered view shortcuts, docs search, window geometry #129
  • calendarDraw the whole day, and open on the part of it you are in #140
  • weekLay overlapping events side by side instead of on top #142
  • notesNever lose text that has no note behind it #152
  • archiveStop the binding loop and the recursive rearrange #116
  • qmlStop shadowing base-type properties on Popup and Item #117
  • notesFlush a pending edit on destruction and on quit #121
  • testsRestore the three suites the source-list refactor emptied #123
  • stateGate the ladder per rung and refuse a newer schema #122
  • calendarClamp every event write into the day #124
  • calendarSettings defaults, week start in the picker, month paging #125
  • calendarTime-block a task from its own estimate, and find a free slot #126
  • markdownHighlight a fence with its own language's comment syntax #127
  • boardKeep statusChangedAt through a column-delete undo, cover status CRUD #128
  • shellRail-ordered view shortcuts, docs search, window geometry #129
  • calendarDraw the whole day, and open on the part of it you are in #140
  • weekLay overlapping events side by side instead of on top #142
  • notesNever lose text that has no note behind it #152
  • integrationsLet a card be connected with typed credentials #153
  • archiveStop the binding loop and the recursive rearrange #116
  • qmlStop shadowing base-type properties on Popup and Item #117
  • notesFlush a pending edit on destruction and on quit #121
  • testsRestore the three suites the source-list refactor emptied #123
  • stateGate the ladder per rung and refuse a newer schema #122
  • calendarClamp every event write into the day #124
  • calendarSettings defaults, week start in the picker, month paging #125
  • calendarTime-block a task from its own estimate, and find a free slot #126
  • markdownHighlight a fence with its own language's comment syntax #127
  • boardKeep statusChangedAt through a column-delete undo, cover status CRUD #128
  • shellRail-ordered view shortcuts, docs search, window geometry #129
  • calendarDraw the whole day, and open on the part of it you are in #140
  • weekLay overlapping events side by side instead of on top #142
  • notesNever lose text that has no note behind it #152
  • integrationsLet a card be connected with typed credentials #153
Build & CI4
  • testsShare the AppController dependency list #120
  • testsShare the AppController dependency list #120
  • testsShare the AppController dependency list #120
  • testsShare the AppController dependency list #120
Release page and downloads ↗
0.4.9

Tracker issues look and behave like the real thing.

Features1
  • oauthRegister Sentry as a public client, dropping its secret #107
Changes7
  • Ticket enrichment: make a mirrored issue look and behave like one (HEAP-117) #108
  • Stop a task id from silently destroying another task #109
  • Stop a tracker pull from undoing what the user decided #110
  • Let a branch find its own ticket, and stop it finding someone else's #111
  • Restrict the secrets file, refresh the palette, drop a lying toggle #112
  • Build one card per task, not one per task per column #113
  • Stop recomputing what has not changed #114
Release page and downloads ↗
0.4.8

Lossless, time-aware task storage and a round of UI fixes.

Features13
  • cliAdd --data-dir so a run can use a throwaway profile #83
  • markdownParse notes into an AST that knows its source lines #85
  • markdownOutline, callouts, footnotes and rich-text rendering #86
  • notesDraw the parsed document instead of handing it to Qt #87
  • notesMake the rendered view answer back #88
  • notesGive the editor markdown keys, and move the rules into C++ #89
  • notesReplace the editor's line-by-line highlighting #90
  • integrationsHand-rolled OAuth engine for every provider dialect #94
  • integrationsBrowser sign-in for Todoist, Asana, ClickUp, Sentry, Bitbucket #95
  • integrationsBrowser sign-in for Jira and Trello #96
  • integrationsMattermost directory — sign in and fetch contacts #98
  • integrationsImport Mattermost contacts into Docs and the People rail #99
  • jiraSupport Server and Data Center #102
Fixes8
  • pagesLanding fetched a raw {{ }} placeholder; drop build chrome and SRI strip #75
  • buildResolve heap_core link-feature clash in QML tests #78
  • uiVisual bugs, dead hit targets and the RU/EN mix #81
  • integrationsMake the trackers actually connect and sync #82
  • integrationsActually refresh expired OAuth tokens #93
  • jiraA pasted ticket URL broke the base URL, and a 401 said nothing #100
  • integrationsCrash, credential leaks and a dead Trello flow #101
  • oauthStop asking Trello users for an API key the sign-in supplied #106
Performance1
  • gitStop freezing the window while a branch is created #92
Changes2
  • HEAP-104: sync cascade-delete, any-order datetime parse, sync-comment context, column scrollbar #79
  • HEAP-104: harden the task data model for lossless, time-aware persistence #76
Docs7
  • pagesReadable screenshots + new landing #74
  • landingAdd qt6-networkauth-dev to Linux build deps #77
  • notesDescribe the editor that now exists #91
  • helpIn-app guide for integrations #97
  • oauthA step-by-step setup guide, and fix two things it exposed #103
  • oauthCorrect the setup guide against the live consoles #104
  • oauthSentry rotates its client secret, it does not need recreating #105
Tests1
  • qmlFull component coverage + 10 confirmed bug fixes #80
Build & CI1
  • Vendor md4c as a static library #84
Release page and downloads ↗
0.4.2

17 features · 3 fixes · 15 changes · 4 docs · 4 tests · 9 build & ci

Features17
  • uiWire dead Blocked & Code Review sidebar buttons (HEAP-69) #31
  • Hotkeys for archive, theme toggle, new contact/profile (HEAP-48) #35
  • Side-by-side layout for overlapping calendar events (HEAP-31) #36
  • Tracker-sync foundation — integration types + StatusMap (HEAP-18) #39
  • SyncSerializer — git-friendly profile/event JSON (HEAP-19) #40
  • Notes query-language parser (HEAP-20) #41
  • JsonMerger — 3-way structural merge for non-git sync (HEAP-27) #42
  • Rotating log file + Report an issue / Open logs folder (HEAP-64) #48
  • Auto-update check via GitHub Releases + single-sourced version (HEAP-63) #49
  • 2-way GitHub Issues sync (HEAP-74) #50
  • Git write-actions — branch-from-task, commit↔task, inline PR/CI (HEAP-76) #51
  • Jira + GitLab tracker-sync providers (HEAP-75) #53
  • Global full-text search across tasks, notes, docs, snippets (HEAP-80) #54
  • [[wiki-links]] + backlinks in notes and a searchable snippet library (HEAP-79) #55
  • Per-task time tracking + weekly "what I shipped" report (HEAP-78) #56
  • Recurring tasks + reusable task/checklist templates (HEAP-77) #57
  • Native macOS support — .app bundle, Carbon global hotkey, CI (HEAP-68) #60
Fixes3
  • uiRemove redundant C++ sidebar button (HEAP-70) #30
  • Suppress duplicate OS notification when window is focused (HEAP-47) #34
  • gitRe-match focused branch on prefix change + settings hint #65
Changes15
  • Bugfix: heap 40 no icon release #15
  • Bugfix: calendar fix #16
  • UI: heap-37 create manual #17
  • Ui: some improvements #19
  • Ui: new design #20
  • Ui: gh pages #21
  • UI/heap 45 gh pages #22
  • Update .clang-format #23
  • Ui: en ru toggle #24
  • Ui: selecting multiple tickets and archive #25
  • Tests: all tests auto in ci and CMakeLists.txt #26
  • Feature: capture notes + tests #27
  • MVP release-prep: pre-release blockers + global hotkeys (HEAP-15, 50–60) #28
  • Content: genericize DocsView demo seed from telecom to generic-dev (HEAP-66) #58
  • Heap 1.0 polish: settings fixes, calendar, data-reset, macOS chrome #64
Docs4
  • Onboarding tutorial, hotkeys & data references (HEAP-29) #37
  • Public release announcement copy (HEAP-30) #38
  • Dev-friendly + accurate landing and README (HEAP-72) #45
  • Reliable Pages deploy + dev-first README & landing (HEAP-73) #46
Tests4
  • qmlNotes @mention caret fix + first Qt Quick Test harness (HEAP-65, HEAP-49) #29
  • uiComponent test harness — extract heap_core lib, test real QML (HEAP-49) #32
  • uiClick-driven interaction tests for FilterBar + SideRail (HEAP-49) #33
  • Broaden unit coverage — models, AppController, text edges (HEAP-49) #44
Build & CI9
  • Release triggering manually #18
  • Cross-platform packaging + tag-triggered release (HEAP-28) #43
  • Authenticode-sign Windows binaries + installer (HEAP-62) #47
  • Unblock Release by disabling the macOS package job #52
  • Run heap_qml_tests on Linux via Qt 6.8 (HEAP-71) #59
  • Fix macOS Release Qt install (unblocks the whole Release) #61
  • Fix macOS release .dmg — re-sign bundle + drag-install layout #62
  • releaseSemver release naming + v1.0.0 #63
  • releaseSign Windows artifacts via SignPath Foundation #66
Release page and downloads ↗