chore: prepare for v2.0 release

- Remove bin/obj/publish from git tracking
- Update .gitignore for .NET project (source only)
- Add release.ps1 local publish script (replaces Gitea workflow)
- Remove .gitea/workflows/release.yml
- Fix duplicate group names to show library names
- Fix HTML export to show Name column in duplicates report
- Fix consolidated permissions HTML to show folder/library names

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
Dev
2026-04-09 16:42:12 +02:00
parent 10e5ae9125
commit f41172c398
2038 changed files with 174 additions and 18357 deletions

View File

@@ -36,11 +36,24 @@ public class DuplicatesService : IDuplicatesService
var groups = allItems
.GroupBy(item => MakeKey(item, options))
.Where(g => g.Count() >= 2)
.Select(g => new DuplicateGroup
.Select(g =>
{
GroupKey = g.Key,
Name = g.First().Name,
Items = g.ToList()
var items = g.ToList();
var name = items[0].Name;
var libraries = items
.Select(i => i.Library)
.Where(l => !string.IsNullOrEmpty(l))
.Distinct(StringComparer.OrdinalIgnoreCase)
.OrderBy(l => l, StringComparer.OrdinalIgnoreCase)
.ToList();
return new DuplicateGroup
{
GroupKey = g.Key,
Name = libraries.Count > 0
? $"{name} ({string.Join(", ", libraries)})"
: name,
Items = items
};
})
.OrderByDescending(g => g.Items.Count)
.ThenBy(g => g.Name)

View File

@@ -77,6 +77,7 @@ public class DuplicatesHtmlExportService
<thead>
<tr>
<th>#</th>
<th>Name</th>
<th>Library</th>
<th>Path</th>
<th>Size</th>
@@ -97,6 +98,7 @@ public class DuplicatesHtmlExportService
sb.AppendLine($"""
<tr>
<td>{j + 1}</td>
<td>{H(item.Name)}</td>
<td>{H(item.Library)}</td>
<td><a href="{H(item.Path)}" target="_blank">{H(item.Path)}</a></td>
<td>{size}</td>

View File

@@ -506,8 +506,12 @@ a:hover { text-decoration: underline; }
if (entry.LocationCount == 1)
{
// Single location — inline site title, no badge
sb.AppendLine($" <td>{HtmlEncode(entry.Locations[0].SiteTitle)}</td>");
// Single location — inline site title + object title
var loc0 = entry.Locations[0];
var locLabel = string.IsNullOrEmpty(loc0.ObjectTitle)
? HtmlEncode(loc0.SiteTitle)
: $"{HtmlEncode(loc0.SiteTitle)} &rsaquo; {HtmlEncode(loc0.ObjectTitle)}";
sb.AppendLine($" <td>{locLabel}</td>");
sb.AppendLine("</tr>");
}
else
@@ -520,9 +524,12 @@ a:hover { text-decoration: underline; }
// Hidden sub-rows — one per location
foreach (var loc in entry.Locations)
{
var subLabel = string.IsNullOrEmpty(loc.ObjectTitle)
? $"<a href=\"{HtmlEncode(loc.SiteUrl)}\">{HtmlEncode(loc.SiteTitle)}</a>"
: $"<a href=\"{HtmlEncode(loc.SiteUrl)}\">{HtmlEncode(loc.SiteTitle)}</a> &rsaquo; {HtmlEncode(loc.ObjectTitle)}";
sb.AppendLine($"<tr data-group=\"{currentLocId}\" style=\"display:none\">");
sb.AppendLine($" <td colspan=\"5\" style=\"padding-left:2em\">");
sb.AppendLine($" <a href=\"{HtmlEncode(loc.SiteUrl)}\">{HtmlEncode(loc.SiteTitle)}</a>");
sb.AppendLine($" {subLabel}");
sb.AppendLine(" </td>");
sb.AppendLine("</tr>");
}

Some files were not shown because too many files have changed in this diff Show More