feat: Add P2P Domain Conflicts management
Implement comprehensive P2P domain conflict resolution allowing users to choose between local claim hashes and consensus-resolved hashes for domains where they have local claims but another claimant won consensus. Key features: - P2P Domain Conflicts UI tab in Local DNS section - Hash preference toggle (local vs resolved) with automatic client restart - Extended selector_cache.json to store hashPreferences alongside versionPreferences - DNS cache invalidation for immediate preference application - REST API endpoints for conflict detection and preference management - Automatic Holesail client restart when hash preferences change - Complete documentation updates across README, API docs, and glossary Resolves conflicts between local claims and consensus resolution by giving users control over which hash their domain resolves to, with seamless client management ensuring immediate effect.
This commit is contained in:
@@ -91,6 +91,7 @@
|
||||
<div class="flex gap-2 mb-4 flex-shrink-0">
|
||||
<button onclick="showSubTab('local-dns', 'records')" id="local-dns-subtab-records" class="px-4 py-2 bg-primary text-white rounded hover:bg-primary-hover">DNS Records</button>
|
||||
<button onclick="showSubTab('local-dns', 'conflicts')" id="local-dns-subtab-conflicts" class="px-4 py-2 theme-button-info rounded transition-colors">DNS Conflicts</button>
|
||||
<button onclick="showSubTab('local-dns', 'p2p-conflicts')" id="local-dns-subtab-p2p-conflicts" class="px-4 py-2 theme-button-info rounded transition-colors">P2P Conflicts</button>
|
||||
</div>
|
||||
|
||||
<!-- DNS Records Sub-tab -->
|
||||
@@ -147,6 +148,32 @@
|
||||
</div>
|
||||
<div id="dnsConflictsPagination" class="flex justify-center mt-4 space-x-2 flex-shrink-0"></div>
|
||||
</div>
|
||||
|
||||
<!-- P2P Domain Conflicts Sub-tab -->
|
||||
<div id="local-dns-p2p-conflicts" class="sub-tab-content hidden flex flex-col flex-1 min-h-0">
|
||||
<div class="mb-4 flex items-center gap-2 flex-shrink-0">
|
||||
<h3 class="text-xl font-bold">P2P Domain Conflicts</h3>
|
||||
<button onclick="openInfoModal('p2p-domain-conflicts')" class="text-sm px-3 py-1 theme-button-info rounded transition-colors">Info</button>
|
||||
</div>
|
||||
<div class="mb-6 flex-shrink-0">
|
||||
<input id="search-p2p-domain-conflicts" type="text" placeholder="Search conflicts..." class="w-full p-3 rounded-lg theme-input focus:outline-none focus:ring-2 focus:ring-primary" oninput="filterP2pDomainConflicts()">
|
||||
</div>
|
||||
<div class="overflow-x-auto overflow-y-auto flex-1 min-h-0">
|
||||
<table class="w-full theme-table rounded-lg">
|
||||
<thead class="theme-table thead sticky top-0 z-10">
|
||||
<tr>
|
||||
<th class="p-3 text-left">Domain</th>
|
||||
<th class="p-3 text-left">Local Hash</th>
|
||||
<th class="p-3 text-left">Resolved Hash</th>
|
||||
<th class="p-3 text-left">Hash Preference</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody id="p2pDomainConflictsTable"></tbody>
|
||||
</table>
|
||||
<div id="p2pDomainConflictsScrollSentinel" class="scroll-sentinel"></div>
|
||||
</div>
|
||||
<div id="p2pDomainConflictsPagination" class="flex justify-center mt-4 space-x-2 flex-shrink-0"></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="entries" class="tab-content hidden flex flex-col" style="height: calc(100vh - 250px); max-height: calc(100vh - 250px);">
|
||||
|
||||
Reference in New Issue
Block a user