From 33b379de5fa8d1b8e348865f5b6439cc87d4a722 Mon Sep 17 00:00:00 2001 From: cybdo Date: Thu, 10 Sep 2026 20:27:06 +1000 Subject: [PATCH 1/2] allow journal resync with empty journal --- app/controllers/projects_controller.rb | 13 +++++-- app/javascript/pages/Projects/Show.tsx | 19 +++++++++++ app/javascript/types/index.ts | 1 + app/jobs/sync_journal_job.rb | 34 ++++++++++++++++--- app/models/project.rb | 1 + ...00_add_journal_parse_failed_to_projects.rb | 5 +++ db/schema.rb | 3 +- test/fixtures/projects.yml | 1 + test/models/project_test.rb | 1 + 9 files changed, 71 insertions(+), 7 deletions(-) create mode 100644 db/migrate/20260910120000_add_journal_parse_failed_to_projects.rb diff --git a/app/controllers/projects_controller.rb b/app/controllers/projects_controller.rb index ab2074ce..601f8e08 100644 --- a/app/controllers/projects_controller.rb +++ b/app/controllers/projects_controller.rb @@ -299,9 +299,17 @@ def sync_journal return end - SyncJournalJob.perform_now(@project.id, clear: params[:clear] == "true") + result = SyncJournalJob.perform_now(@project.id, clear: params[:clear] == "true") audit!("project.journal_synced", target: @project) - redirect_to @project, notice: "Journal synced." + + case result + when :invalid_repo + redirect_to @project, alert: "That repo link doesn't look like a GitHub, GitLab, or Codeberg URL." + when :fetch_failed + redirect_to @project, alert: "Couldn't find a JOURNAL.md in that repo. Check the repo link and branch." + else + redirect_to @project, notice: "Journal synced." + end end def export_devlogs @@ -507,6 +515,7 @@ def serialize_project_detail(project) tags: project.tags, repo_link: project.repo_link, journal_branch: project.journal_branch, + journal_parse_failed: project.journal_parse_failed, status: project.status, devlog_mode: project.devlog_mode, uses_ai: project.uses_ai, diff --git a/app/javascript/pages/Projects/Show.tsx b/app/javascript/pages/Projects/Show.tsx index 3e0b11ac..e9f959e6 100644 --- a/app/javascript/pages/Projects/Show.tsx +++ b/app/javascript/pages/Projects/Show.tsx @@ -1190,6 +1190,24 @@ export default function ProjectsShow({ + {project.repo_link && project.journal_parse_failed && can.update && ( +
+ warning +
+

Couldn't sync JOURNAL.md

+

+ Forge couldn't find any journal entries to sync. This can happen if the repo link is invalid,{' '} + JOURNAL.md is missing, or it doesn't follow the + expected format. Check the{' '} + + format guide + {' '} + and re-sync. +

+
+
+ )} + {!project.repo_link && can.update && (
link_off @@ -1215,6 +1233,7 @@ export default function ProjectsShow({ Add a JOURNAL.md to your repo and click "Sync JOURNAL.md" above.

+

If journals are missing, check the format guide.