Turn Ghostwriter's flat message list into a tree structure, enabling
Claude.ai/ChatGPT-style branching conversations.
**Data model**: Add `parentMessageId` and `activeChildId` to messages,
`activeRootMessageId` to threads. Migration backfills existing messages
into a linear chain and links regenerated messages as siblings.
**Backend**: Tree-walking queries (getActivePathFromRoot, getAncestorPath,
getSiblingsOf), rewritten history builder that follows the ancestor path,
new editMessage and switchBranch services, regenerate now works on any
assistant message (not just the latest).
**Frontend**: BranchNavigator component (← 2/3 → arrows), inline edit on
user messages, per-message regenerate on assistant messages, regenerate
button removed from composer (now per-message).
**Infra**: Pin Node 22 via Volta to prevent ABI mismatches with
better-sqlite3 across environments.
When switching between job tabs (e.g. Discovered → Applied), the detail
panel would briefly show the previously selected job with the new tab's
action buttons — confusing and error-prone.
Three coordinated fixes:
- setActiveTab now checks if the selected job's status fits the target
tab, keeping it when valid (e.g. Discovered → All Jobs) and clearing
it otherwise.
- New visibleSelectedJob useMemo guard synchronously nulls out the
selected job when it doesn't belong to the active tab, eliminating
the one-frame flash caused by the data hook's useEffect lag.
- Auto-select effect now handles the case where a job passes the status
check but gets filtered out by source/sponsor/salary filters.
* Add startup.jobs extractor support
* Harden startup.jobs extractor inputs
* Wire startupjobs into Docker and CI
* Tighten startupjobs review follow-ups
* fix: publish ghcr during release workflow
* feat: add startupjobs max jobs configuration and update related tests
* Add RxResume URL setting to dashboard
* Potential fix for pull request finding
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
* Potential fix for pull request finding
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
* Potential fix for pull request finding
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
* Potential fix for pull request finding
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
---------
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
* Add language settings for AI-generated resume output
* Resolve merge conflicts for language settings PR
* Fix language settings review feedback and CI lint
* Tighten language setting precedence and onboarding validation
---------
Co-authored-by: saad <Saad>
* initial
* lint fix
* docs!
* fix CI
* ci and runner fix
* fix + docs!
* make CI pass
* country specific search
* remove country specific language
* fix UI
* address comments
* Address visa sponsor PR feedback
* Address remaining visa sponsor review feedback
* Harden visa sponsor provider validation
* feat(settings): add rxresume mode and v5 api key settings
* feat(server): add mode-aware rxresume adapter with auto v5-first selection
* refactor(server): route settings profile and pdf generation through rxresume adapter
* feat(api): support rxresume v4/v5 in onboarding and settings routes with ok/meta responses
* feat(client): add rxresume mode selector and v5 api key setup flow
* docs: document rxresume auto mode with v5-first self-hosted setup
* test: verify dual-mode rxresume support and ci parity checks
* comments
* services folder
* correct types for v5
* tests and docs fix
* Fix RxResume auto fallback and route API consistency
* warning for both being set
* simpler response
* onboarding component improvements, v5 check still not working
* fix list resume endpoint...
* fix api endpoints to latest v5 docs
* don't show the entire project field on v5
* remove auto entirely
* formatting
* ci green
* v5 has a different resume schema
* remove redundant check
* remove requirement that only one must be specified
* consolidate sections
* base resume can be v4 or v5
* saving now works
* status indicator
* actually render some pills
* reason for failure
* fix apikey verification
* dedupe isValidatingMode
* reefactoor
* simplification?
* refactor?
* ci passing
* remove auto from docs
* tailoring is schema dependent
* skills object tighter
* remove redundant text
* fix lint
* mode
* Deduplicate string cleanup helpers and not-found responses
* Enforce aliased imports for infra and shared modules
* Enforce @client/@server aliases for deep relative imports
* Deduplicate visa sponsor and location filter definitions
* Use shared city filter export in extractor location checks