From 7953a7af88b0f59e7a8c47c21c2eec7d4a2a8df1 Mon Sep 17 00:00:00 2001 From: nixorokish Date: Fri, 2 Jan 2026 21:31:59 -0700 Subject: [PATCH 1/5] change status filtering to JS pills under categories, remove in-page organization --- .ruby-version | 1 + Gemfile.lock | 1 + _includes/eiplist.html | 23 ++++++++++++ _includes/eiptable.html | 9 ----- _includes/head.html | 73 +++++++++++++++++++++++++++++++++++++ _includes/header.html | 16 ++++++++- all.html | 3 +- assets/css/override.css | 31 ++++++++++++++++ assets/css/style.scss | 79 +++++++++++++++++++++++++++++++++++++++++ core.html | 3 +- erc.html | 3 +- informational.html | 3 +- interface.html | 3 +- meta.html | 3 +- networking.html | 3 +- 15 files changed, 237 insertions(+), 17 deletions(-) create mode 100644 .ruby-version create mode 100644 _includes/eiplist.html diff --git a/.ruby-version b/.ruby-version new file mode 100644 index 00000000000000..be94e6f53db6b3 --- /dev/null +++ b/.ruby-version @@ -0,0 +1 @@ +3.2.2 diff --git a/Gemfile.lock b/Gemfile.lock index 21a6074d83a08a..451f3d8b8cda63 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -291,6 +291,7 @@ GEM PLATFORMS arm64-darwin-22 + arm64-darwin-23 x86_64-linux DEPENDENCIES diff --git a/_includes/eiplist.html b/_includes/eiplist.html new file mode 100644 index 00000000000000..983f84b4984582 --- /dev/null +++ b/_includes/eiplist.html @@ -0,0 +1,23 @@ +{% assign eips = include.eips | sort: "eip" %} + + + + + + + + + + + {% for page in eips %} + {% if page.eip %} + + + + + + + {% endif %} + {% endfor %} + +
NumberTitleAuthorStatus
{{ page.eip | xml_escape }}{{ page.title | xml_escape }}{% include authorlist.html authors=page.author %}{{ page.status | xml_escape }}
diff --git a/_includes/eiptable.html b/_includes/eiptable.html index e2e2a78257c363..d391d43105788d 100644 --- a/_includes/eiptable.html +++ b/_includes/eiptable.html @@ -1,12 +1,3 @@ - {% for status in site.data.statuses %} {% assign eips = include.eips|where:"status",status|sort:"eip" %} {% assign count = eips|size %} diff --git a/_includes/head.html b/_includes/head.html index b5de6313b5899a..36e11f75791126 100644 --- a/_includes/head.html +++ b/_includes/head.html @@ -92,4 +92,77 @@ } }); + diff --git a/_includes/header.html b/_includes/header.html index 2afd73fb539985..a8054439124ad5 100644 --- a/_includes/header.html +++ b/_includes/header.html @@ -19,11 +19,25 @@ {%- for path in page_paths -%} {%- assign my_page = site.pages | where: "path", path | first -%} {%- if my_page.title -%} - {{ my_page.title | escape }} + {{ my_page.title | escape }} {%- endif -%} {%- endfor -%} {%- endif -%} + {% if page.category_filter %} +
+ +
+ {% endif %} diff --git a/all.html b/all.html index d57a5a94c7fc18..b7a93dac941669 100644 --- a/all.html +++ b/all.html @@ -1,6 +1,7 @@ --- layout: page title: All +category_filter: All --- -{% include eiptable.html eips=site.pages %} +{% include eiplist.html eips=site.pages %} diff --git a/assets/css/override.css b/assets/css/override.css index 9a62d4842489ef..71b5f8cdbaf1e9 100644 --- a/assets/css/override.css +++ b/assets/css/override.css @@ -24,6 +24,37 @@ background-color: #111100; } + .status-nav-label { + color: #aaa; + } + + .status-link, + .status-link:visited, + .status-link:link { + border-color: rgba(255, 255, 255, 0.2); + background: rgba(255, 255, 255, 0.05); + color: #ccc !important; + } + + .status-link:hover { + background-color: rgba(255, 255, 255, 0.1); + border-color: rgba(255, 255, 255, 0.3); + color: #eee !important; + } + + .status-link.active, + .status-link.active:visited, + .status-link.active:link { + background-color: rgba(140, 135, 180, 0.7); + border-color: rgba(140, 135, 180, 0.7); + color: #fff !important; + } + + .status-link.active:hover { + background-color: rgba(160, 155, 200, 0.8); + border-color: rgba(160, 155, 200, 0.8); + } + :root { color-scheme: dark; --bs-body-color: #dee2e6; diff --git a/assets/css/style.scss b/assets/css/style.scss index 6868f7af5cf60a..3ea520e31eee2c 100644 --- a/assets/css/style.scss +++ b/assets/css/style.scss @@ -14,6 +14,74 @@ $content-width: 1152px; } } +// Category nav active state +.site-nav .page-link.active { + font-weight: 600; + color: #726E97; +} + +// Status filter bar +.status-nav { + width: 100%; + padding: 8px 0; + display: flex; + align-items: center; + justify-content: center; + gap: 6px; + flex-wrap: wrap; +} + +.status-nav-label { + font-size: 12px; + font-weight: 500; + color: #888; +} + +.status-nav-links { + display: flex; + flex-wrap: wrap; + gap: 3px; +} + +.status-link, +.status-link:visited, +.status-link:link { + font-size: 11px; + padding: 2px 8px; + border-radius: 10px; + border: 1px solid rgba(128, 128, 128, 0.3); + background: rgba(128, 128, 128, 0.08); + color: #666 !important; + cursor: pointer; + transition: all 0.15s ease; +} + +.status-link:hover { + background-color: rgba(128, 128, 128, 0.15); + border-color: rgba(128, 128, 128, 0.4); + text-decoration: none; + color: #444 !important; +} + +.status-link.active, +.status-link.active:visited, +.status-link.active:link { + background-color: rgba(114, 110, 151, 0.85); + border-color: rgba(114, 110, 151, 0.85); + color: #fff !important; +} + +.status-link.active:hover { + background-color: rgba(90, 87, 120, 0.9); + border-color: rgba(90, 87, 120, 0.9); + color: #fff !important; +} + +// Hide status column when filtering +.eiptable.status-filtered .status { + display: none; +} + .page-content { a.anchor-link { width: 16px; @@ -164,3 +232,14 @@ h1 a { word-break: normal; overflow-wrap: normal; } + +// EIP table styles +.eiptable { + .title { + width: 67%; + } + + .author { + width: 33%; + } +} diff --git a/core.html b/core.html index 29cceb2e7ccaa9..392018463216cf 100644 --- a/core.html +++ b/core.html @@ -1,7 +1,8 @@ --- layout: page title: Core +category_filter: Core --- {% assign eips=site.pages|where:"type","Standards Track"|where:"category","Core" %} -{% include eiptable.html eips=eips %} +{% include eiplist.html eips=eips %} diff --git a/erc.html b/erc.html index bc3ba28ce54365..c21220a25aec59 100644 --- a/erc.html +++ b/erc.html @@ -1,7 +1,8 @@ --- layout: page title: ERC +category_filter: ERC --- {% assign eips=site.pages|where:"type","Standards Track"|where:"category","ERC" %} -{% include eiptable.html eips=eips %} +{% include eiplist.html eips=eips %} diff --git a/informational.html b/informational.html index bfe27671758df6..26c5acb9c072b7 100644 --- a/informational.html +++ b/informational.html @@ -1,7 +1,8 @@ --- layout: page title: Informational +category_filter: Informational --- {% assign eips=site.pages|where:"type","Informational" %} -{% include eiptable.html eips=eips %} +{% include eiplist.html eips=eips %} diff --git a/interface.html b/interface.html index aba214600957d0..776ad7bfed1561 100644 --- a/interface.html +++ b/interface.html @@ -1,7 +1,8 @@ --- layout: page title: Interface +category_filter: Interface --- {% assign eips=site.pages|where:"type","Standards Track"|where:"category","Interface" %} -{% include eiptable.html eips=eips %} +{% include eiplist.html eips=eips %} diff --git a/meta.html b/meta.html index d9ff658586c8c0..18d1d78683f776 100644 --- a/meta.html +++ b/meta.html @@ -1,7 +1,8 @@ --- layout: page title: Meta +category_filter: Meta --- {% assign eips=site.pages|where:"type","Meta" %} -{% include eiptable.html eips=eips %} +{% include eiplist.html eips=eips %} diff --git a/networking.html b/networking.html index 0c62b7fc3067f4..f2006784a86e48 100644 --- a/networking.html +++ b/networking.html @@ -1,7 +1,8 @@ --- layout: page title: Networking +category_filter: Networking --- {% assign eips=site.pages|where:"type","Standards Track"|where:"category","Networking" %} -{% include eiptable.html eips=eips %} +{% include eiplist.html eips=eips %} From 7aaa1a5dad278852f6e7a556820606cf79040219 Mon Sep 17 00:00:00 2001 From: nixorokish Date: Fri, 2 Jan 2026 22:26:21 -0700 Subject: [PATCH 2/5] add status definitions, remove column --- .ruby-version | 1 - Gemfile.lock | 1 - _includes/eiplist.html | 2 - _includes/head.html | 88 +++++++++++++++++++++++++++++++++-------- _includes/header.html | 15 +++++-- assets/css/override.css | 8 ++++ assets/css/style.scss | 35 +++++++++++++++- 7 files changed, 124 insertions(+), 26 deletions(-) delete mode 100644 .ruby-version diff --git a/.ruby-version b/.ruby-version deleted file mode 100644 index be94e6f53db6b3..00000000000000 --- a/.ruby-version +++ /dev/null @@ -1 +0,0 @@ -3.2.2 diff --git a/Gemfile.lock b/Gemfile.lock index 451f3d8b8cda63..21a6074d83a08a 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -291,7 +291,6 @@ GEM PLATFORMS arm64-darwin-22 - arm64-darwin-23 x86_64-linux DEPENDENCIES diff --git a/_includes/eiplist.html b/_includes/eiplist.html index 983f84b4984582..474d21fc740bbf 100644 --- a/_includes/eiplist.html +++ b/_includes/eiplist.html @@ -5,7 +5,6 @@ Number Title Author - Status @@ -15,7 +14,6 @@ {{ page.eip | xml_escape }} {{ page.title | xml_escape }} {% include authorlist.html authors=page.author %} - {{ page.status | xml_escape }} {% endif %} {% endfor %} diff --git a/_includes/head.html b/_includes/head.html index 36e11f75791126..05d5ec489d4bdf 100644 --- a/_includes/head.html +++ b/_includes/head.html @@ -100,11 +100,13 @@ function filterByStatus(status) { var rows = table.querySelectorAll('tbody tr'); + var visibleCount = 0; rows.forEach(function(row) { if (!status || row.getAttribute('data-status') === status) { - row.style.display = ''; + row.classList.remove('hidden'); + visibleCount++; } else { - row.style.display = 'none'; + row.classList.add('hidden'); } }); @@ -118,36 +120,89 @@ } }); - // Hide status column when filtering by status - if (status) { - table.classList.add('status-filtered'); + // Show "No EIPs" message if filter returns no results + var noResultsMsg = document.getElementById('no-results'); + if (visibleCount === 0) { + table.style.display = 'none'; + if (!noResultsMsg) { + noResultsMsg = document.createElement('p'); + noResultsMsg.id = 'no-results'; + noResultsMsg.textContent = 'No EIPs'; + noResultsMsg.className = 'no-results'; + table.parentNode.insertBefore(noResultsMsg, table.nextSibling); + } + noResultsMsg.style.display = ''; } else { - table.classList.remove('status-filtered'); + table.style.display = ''; + if (noResultsMsg) noResultsMsg.style.display = 'none'; } } + // Status definitions from EIP-1 + var statusInfo = { + 'living': { + name: 'Living', + description: 'A special status for EIPs that are designed to be continually updated and not reach a state of finality.' + }, + 'final': { + name: 'Final', + description: 'This EIP represents the final standard. A Final EIP exists in a state of finality and should only be updated to correct errata and add non-normative clarifications.' + }, + 'last-call': { + name: 'Last Call', + description: 'This is the final review window for an EIP before moving to Final. An EIP editor will assign Last Call status and set a review end date, typically 14 days later.' + }, + 'review': { + name: 'Review', + description: 'An EIP Author marks an EIP as ready for and requesting Peer Review.' + }, + 'draft': { + name: 'Draft', + description: 'The first formally tracked stage of an EIP in development. An EIP is merged by an EIP Editor into the EIP repository when properly formatted.' + }, + 'stagnant': { + name: 'Stagnant', + description: 'Any EIP in Draft, Review, or Last Call if inactive for a period of 6 months or greater is moved to Stagnant. An EIP may be resurrected from this state by Authors or EIP Editors.' + }, + 'withdrawn': { + name: 'Withdrawn', + description: 'The EIP Author(s) have withdrawn the proposed EIP. This state has finality and can no longer be resurrected using this EIP number.' + } + }; + // Map hash to status name function getStatusFromHash() { var hash = window.location.hash.slice(1); if (!hash) return ''; - var statusMap = { - 'living': 'Living', - 'final': 'Final', - 'last-call': 'Last Call', - 'review': 'Review', - 'draft': 'Draft', - 'stagnant': 'Stagnant', - 'withdrawn': 'Withdrawn' - }; - return statusMap[hash] || ''; + var info = statusInfo[hash]; + return info ? info.name : ''; + } + + // Update status description + function updateStatusDescription(hash) { + var descEl = document.getElementById('status-description'); + var textEl = document.getElementById('status-description-text'); + if (!descEl || !textEl) return; + + var info = statusInfo[hash]; + if (info) { + textEl.textContent = info.description; + descEl.style.display = ''; + } else { + descEl.style.display = 'none'; + } } // Apply filter on load + var initialHash = window.location.hash.slice(1); filterByStatus(getStatusFromHash()); + updateStatusDescription(initialHash); // Apply filter on hash change window.addEventListener('hashchange', function() { + var hash = window.location.hash.slice(1); filterByStatus(getStatusFromHash()); + updateStatusDescription(hash); }); // Handle click on status links @@ -160,6 +215,7 @@ } else { history.pushState('', document.title, window.location.pathname); filterByStatus(''); + updateStatusDescription(''); } }); }); diff --git a/_includes/header.html b/_includes/header.html index a8054439124ad5..adc4418837ba7b 100644 --- a/_includes/header.html +++ b/_includes/header.html @@ -32,12 +32,19 @@ Status: + {% endif %} diff --git a/assets/css/override.css b/assets/css/override.css index 71b5f8cdbaf1e9..78379572750d13 100644 --- a/assets/css/override.css +++ b/assets/css/override.css @@ -55,6 +55,14 @@ border-color: rgba(160, 155, 200, 0.8); } + .status-description { + color: #aaa; + } + + .status-description-ref { + color: #777 !important; + } + :root { color-scheme: dark; --bs-body-color: #dee2e6; diff --git a/assets/css/style.scss b/assets/css/style.scss index 3ea520e31eee2c..443f8d1f737e52 100644 --- a/assets/css/style.scss +++ b/assets/css/style.scss @@ -77,11 +77,42 @@ $content-width: 1152px; color: #fff !important; } -// Hide status column when filtering -.eiptable.status-filtered .status { +// Status description (shown when filtering) +.status-description { + text-align: center; + padding: 4px 0 8px; + font-size: 12px; + color: #666; + line-height: 1.4; +} + +.status-description-text { + margin: 0; + display: inline; +} + +.status-description-ref { + margin-left: 4px; + font-size: 10px; + color: #999 !important; + text-decoration: none; + &:hover { + text-decoration: underline; + } +} + +// Hidden rows (for filtering) +.hidden { display: none; } +// No results message +.no-results { + text-align: center; + color: #888; + padding: 2em 0; +} + .page-content { a.anchor-link { width: 16px; From ba278a80574351f9dfec05dc16ff62809a554d8c Mon Sep 17 00:00:00 2001 From: nixorokish Date: Fri, 2 Jan 2026 23:14:18 -0700 Subject: [PATCH 3/5] remove unnecessary margin --- assets/css/style.scss | 1 - 1 file changed, 1 deletion(-) diff --git a/assets/css/style.scss b/assets/css/style.scss index 443f8d1f737e52..2c5a3304680627 100644 --- a/assets/css/style.scss +++ b/assets/css/style.scss @@ -92,7 +92,6 @@ $content-width: 1152px; } .status-description-ref { - margin-left: 4px; font-size: 10px; color: #999 !important; text-decoration: none; From c1905efbbdb0dc73c385b6c81b56a1af5119f916 Mon Sep 17 00:00:00 2001 From: nixorokish Date: Sat, 3 Jan 2026 16:20:12 -0700 Subject: [PATCH 4/5] gave ids to the status filter links --- _includes/header.html | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/_includes/header.html b/_includes/header.html index adc4418837ba7b..e9520666664007 100644 --- a/_includes/header.html +++ b/_includes/header.html @@ -32,13 +32,13 @@ Status: {% endif %} diff --git a/assets/css/override.css b/assets/css/override.css index 78379572750d13..71b5f8cdbaf1e9 100644 --- a/assets/css/override.css +++ b/assets/css/override.css @@ -55,14 +55,6 @@ border-color: rgba(160, 155, 200, 0.8); } - .status-description { - color: #aaa; - } - - .status-description-ref { - color: #777 !important; - } - :root { color-scheme: dark; --bs-body-color: #dee2e6; diff --git a/assets/css/style.scss b/assets/css/style.scss index 2c5a3304680627..1a01619035e914 100644 --- a/assets/css/style.scss +++ b/assets/css/style.scss @@ -77,29 +77,6 @@ $content-width: 1152px; color: #fff !important; } -// Status description (shown when filtering) -.status-description { - text-align: center; - padding: 4px 0 8px; - font-size: 12px; - color: #666; - line-height: 1.4; -} - -.status-description-text { - margin: 0; - display: inline; -} - -.status-description-ref { - font-size: 10px; - color: #999 !important; - text-decoration: none; - &:hover { - text-decoration: underline; - } -} - // Hidden rows (for filtering) .hidden { display: none;