Stage history editor:
- The edit form's Pipeline section is now the application's history:
one row per step (stage + date), Add Step and Remove Step, kept in
date order. The last step is the current stage and the first step's
date the date applied, replacing the separate Stage and Date Applied
fields. An application logged after the fact (applied, interviewed,
rejected) keeps its whole path.
- JobsDatabase::replaceStageHistory() rewrites a job's history in one
transaction (sorted, repeats collapsed, stage and date applied kept in
step); StageHistoryModel backs the section; JobsModel::addJob() now
returns the new id so a new application's history can be saved.
- `kareer history <id> [Stage=YYYY-MM-DD ...]` shows or replaces it.
Auto-ghosting:
- Applications still at Applied with no activity (the later of the
date applied and the last stage change) for more than 30 days move to
Ghosted, recorded like any stage change. Runs at startup for GUI and
CLI, after switching databases, and shortly after the setting changes.
- Preferences gains an Applications section: on/off and the number of
days (kareerrc [AutoGhost]). The GUI shows a passive notification; the
CLI notes it on stderr so --json output stays clean.
Fixes:
- The Add Application form pre-filled empty text fields with the word
"undefined" (typing "a" gave "undefineda"): fields with no value
reached QML as undefined. Every field now gets a typed default.
- Embed the app icon as the window icon fallback, so the window and
About page show it when running uninstalled.
Tests: history replacement and the after-the-fact Allstate case, the
ghosting rules (fresh/stale/logged-late/reopened/threshold), and empty
new-form fields.
Co-Authored-By: Claude Opus 5 (1M context) <[email protected]>
Claude-Session: https://claude.ai/code/session_01BxDf7HqD1xPnsZP8wt3NTk
- `kareer --db <path>` works for the GUI and every subcommand, before
or after the subcommand name, and creates the file if missing. main()
strips it from argv before CLI/GUI routing; every parser declares it
so it shows in --help.
- Path precedence: --db > KAREER_DB_PATH > the location chosen in the
GUI (kareerrc [Database] Path, read at startup for GUI and CLI alike)
> $XDG_DATA_HOME/kareer/kareer.sqlite.
- First GUI run (nothing forced, no file yet, or the configured file
has gone missing): DatabaseSetupDialog offers the default location, a
folder of the user's choice, or an existing database used in place.
Until then JobsDatabase opens nothing.
- Preferences gains a Database section: Move to... (copies, leaves the
original), Open Existing..., Use Default Location. Refuses foreign
SQLite files and unwritable ones.
- Models call JobsDatabase::reopenIfPathChanged() on refresh, so
switching databases needs no restart.
- Link KF6::ConfigCore; add a QuickDialogs2 configure-time guard; add
kconfig to the Arch dependencies and a note to the Flatpak manifest.
- README documents --db, the precedence, and the first-run choice, and
gains Fedora 44 build dependencies; CONTRIBUTING gets a dev recipe.
Co-Authored-By: Claude Opus 5 (1M context) <[email protected]>
Claude-Session: https://claude.ai/code/session_01BxDf7HqD1xPnsZP8wt3NTk
- 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