Changing an application's stage and pressing Save closed the form
without saving the stage: JobsDatabase::updateJob() deliberately skips
the stage column so every move lands in stage_history, but
JobEditModel::save() never followed up with setStage(). It now does,
as the CLI's update command always has.
Also:
- Validate that company and title are non-empty and say so, instead of
saving a blank field
- Always set lastError on failure, clear it on the next attempt, and
bind the page's error message to it
- Reload the form's values when jobsModel is assigned, since QML does
not guarantee it is set before editingJobId
- Bind the salary spin boxes to the model and write back only on user
edits; guard the notes field the same way
- Add jobeditmodeltest covering load order, edits, stage history,
salaries round-tripping, adding, and validation errors
Co-Authored-By: Claude Opus 5 (1M context) <[email protected]>
Claude-Session: https://claude.ai/code/session_01BxDf7HqD1xPnsZP8wt3NTk
reuse-action@v3 runs reuse 3.x, which predates REUSE.toml and flagged
every file the annotations cover - the actual reason the REUSE job
never passed. v5 matches the reuse 5.x used to verify locally.
Co-Authored-By: Claude Fable 5 <[email protected]>
Claude-Session: https://claude.ai/code/session_019FXfh48mASRsE1WEhy9jcM
clang-format job: the flatpak CI image has no ECM on the host, so the
configure step that generated .clang-format could never run. Commit the
ECM-generated .clang-format instead (it is MIT, LICENSES/MIT.txt added),
drop the container, pin clang-format 22.1.8 from PyPI to match the
version the tree is formatted with, and reformat the sources to match.
REUSE job: add the missing CC0-1.0 license text, a copyright line for
the metainfo, REUSE.toml coverage for README/CONTRIBUTING/.gitignore,
and REUSE-Ignore markers around CONTRIBUTING.md's SPDX example so the
parser stops reading prose as a license declaration. reuse lint now
passes locally (54/54 files).
Co-Authored-By: Claude Fable 5 <[email protected]>
Claude-Session: https://claude.ai/code/session_019FXfh48mASRsE1WEhy9jcM
The AUR is not accepting new accounts at the moment, so the package
(tested with makepkg, check() runs the full test suite) lives in-repo
until it can be pushed to aur.archlinux.org as 'kareer'.
Co-Authored-By: Claude Fable 5 <[email protected]>
Claude-Session: https://claude.ai/code/session_019FXfh48mASRsE1WEhy9jcM
- Spread columns by rank among the stages actually present, so sparse
pipelines fill the width instead of leaving dead stretches
- Top-align columns: the funnel's success path runs level along the top
and drop-off ribbons only ever descend
- Give each ribbon its slot per node side (outgoing by target height,
incoming by source height) so ribbons stop braiding over each other
- Move the last column's labels to its left so they always stay
on-screen, with a theme halo to stay legible over ribbons
- Never hide small-node labels; elide with tooltip instead
- Guarantee columns and ribbons fit the viewport (clamp-aware scale,
spill-proof ribbon thickness)
- Debounce resize relayouts and stop re-querying SQLite on resize
- Canonicalize stage names on write (CLI "rejected" -> "Rejected") and
repair pre-existing rows on database open
- Take Sankey node width/padding from Kirigami units
- Add QuickShapesPrivate configure-time guard for QtQuick.Shapes
- Extend sankeylayouttest: viewport fit, ribbon containment, slot
ordering, sparse-column spread, canonicalization, degenerate sizes
- README: build-dependency and generator fixes, document SettingsPage
Co-Authored-By: Claude Fable 5 <[email protected]>
Claude-Session: https://claude.ai/code/session_019FXfh48mASRsE1WEhy9jcM
- Rework the add/edit form onto a generic, catalog-driven field model
(JobFieldCatalog + JobEditModel), replacing the old hand-written
ApplicationEditDialog with ApplicationEditPage
- Add a Preferences page (reachable from the hamburger menu) with a
KColorSchemeManager-backed color scheme switcher
- Add an About page reading from KAboutData
- Ship a full hicolor icon set (16-128px + scalable) via ecm_install_icons
instead of a single flat SVG
- Restyle the edit form after KDE System Settings' Audio page:
Kirigami.ListSectionHeader per category, flat separated rows, no card
borders
- Explicitly declare Kirigami/KirigamiAddons/ColorScheme as CMake
dependencies instead of relying on the QML import scanner alone
- Add KDEClangFormat/KDEGitCommitHooks, a CMakePresets.json, and a
REUSE + clang-format lint CI workflow
- Reformat SPDX headers to include copyright, remove debug screenshot
scaffolding
- Add .github/workflows/test.yml, using flatpak-builder's run-tests
option so PRs and pushes exercise ctest inside the same KDE SDK
sandbox as release builds.
- Add REUSE.toml covering files that can't carry an inline SPDX header
(.desktop, keys/*.asc).
- Add CONTRIBUTING.md documenting build/test/release steps.
C++/Qt6/KDE Frameworks 6 app with a SQLite-backed data layer, a
Sankey-diagram dashboard, and a full CLI (add/list/show/update/stage/
delete/stats/stages) for scripting from other tools.