--- a/src/heatmap.cpp Sun Aug 10 11:59:03 2025 +0200 +++ b/src/heatmap.cpp Sun Aug 10 15:22:25 2025 +0200 @@ -41,10 +41,12 @@ const auto line_view = std::string_view{line}; const auto pos_delim1 = line_view.find('#', 0); const auto pos_delim2 = line_view.find('#', pos_delim1 + 1); + const auto pos_delim3 = line_view.find('#', pos_delim2 + 1); std::string author{settings.map_author(line_view.substr(0, pos_delim1))}; - std::string_view date_view{line_view.substr(pos_delim1+1, pos_delim2)}; - std::string_view summary_view{line_view.substr(pos_delim2+1)}; + std::string_view date_view{line_view.substr(pos_delim1+1, pos_delim2 - pos_delim1 - 1)}; + std::string_view tags_view{line_view.substr(pos_delim2+1, pos_delim3 - pos_delim2 - 1)}; + std::string_view summary_view{line_view.substr(pos_delim3+1)}; int year = 0; unsigned int month = 0, day = 0; @@ -54,10 +56,14 @@ std::from_chars(date_parts[0].begin(), date_parts[0].end(), year); std::from_chars(date_parts[1].begin(), date_parts[1].end(), month); std::from_chars(date_parts[2].begin(), date_parts[2].end(), day); - auto &[summaries] = m_heatmap[repo_key][author][chrono::year_month_day{ - chrono::year{year}, chrono::month{month}, chrono::day{day} - }]; + auto &[summaries, tags] = + m_heatmap[repo_key][author][chrono::year_month_day{ + chrono::year{year}, chrono::month{month}, chrono::day{day} + }]; summaries[m_current_repo].emplace_back(summary_view); + if (!tags_view.empty()) { + tags[m_current_repo].emplace_back(tags_view); + } } }