diff --git a/CLAUDE.md b/CLAUDE.md index 4d78862..28bc7ff 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -32,7 +32,7 @@ bundle exec jekyll serve --livereload ## Architecture -**Data-driven content:** Platform specs live in YAML files, not code. Most updates are data edits. +**Data-driven content:** Platform specs live in YAML files, not code. Most updates are data edits. Do NOT change the schema without explicit direction or approval since this data is also relied upon by 3rd parties. ``` _data/ diff --git a/_data/components.yml b/_data/components.yml index 8cde205..dd96c6b 100644 --- a/_data/components.yml +++ b/_data/components.yml @@ -30,42 +30,42 @@ categories: name: Common Components color: gray items: + - id: cpp_standard + name: "C++ API/SDK" - id: python name: Python subtitle: "(built with ucs4 pre-3.x)" - - id: qt - name: Qt - id: pyqt name: PyQt - id: pyside name: "Qt for Python (PySide)" - - id: numpy - name: NumPy + - id: qt + name: Qt + - id: aces + name: ACES + - id: alembic + name: Alembic + - id: boost + name: Boost + - id: fbx + name: FBX - id: imath name: Imath first_year: 2021 + - id: numpy + name: NumPy + - id: onemkl + name: "oneMKL/MKL" + - id: onetbb + name: "oneTBB/TBB" + min_max: true + - id: opencolorio + name: OpenColorIO - id: openexr name: OpenEXR - - id: ptex - name: Ptex - id: opensubdiv name: OpenSubdiv - id: openvdb name: OpenVDB - - id: alembic - name: Alembic - - id: fbx - name: FBX - - id: opencolorio - name: OpenColorIO - - id: aces - name: ACES - - id: boost - name: Boost - - id: onetbb - name: "oneTBB/TBB" - min_max: true - - id: onemkl - name: "oneMKL/MKL" - - id: cpp_standard - name: "C++ API/SDK" + - id: ptex + name: Ptex diff --git a/_data/useful_links.yml b/_data/useful_links.yml index b0ca923..b48659b 100644 --- a/_data/useful_links.yml +++ b/_data/useful_links.yml @@ -13,12 +13,7 @@ description: "Ready-to-build containers implementing VFX Reference Platform compliant build environments." icon: "container" -- title: "DCC Tool Version Compatibility" - url: "https://docs.google.com/spreadsheets/d/1-8VdfspUBpkYJzfKKovI-H2bZeb5Wn3cuNPsq_Ho3S8/edit?usp=sharing" - description: "Track major digital content creation tool version compatibility with each platform year." - icon: "grid" - - title: "VFX Industry Build Matrix" - url: "https://docs.google.com/spreadsheets/d/1EwRlz5ZYObEOdBfIk8iTX5thlpTyEAfp3bxOgAfFOiU/edit?usp=sharing" + url: "http://vfxindustrybuildmatrix.aswf.io/" description: "Cross-reference of build configurations used across the VFX industry." icon: "matrix" diff --git a/_includes/platform-table.html b/_includes/platform-table.html index 0a1b845..bb2666e 100644 --- a/_includes/platform-table.html +++ b/_includes/platform-table.html @@ -5,7 +5,7 @@ {% assign col_count = include.years | size | plus: 1 %} -
+
@@ -27,10 +27,18 @@ {% for category in site.data.components.categories %} - + {% if include.compact %} + + {% for year in include.years %}{% endfor %} + {% else %} + + {% endif %} {% for item in category.items %} diff --git a/assets/css/main.css b/assets/css/main.css index 944b249..abada43 100644 --- a/assets/css/main.css +++ b/assets/css/main.css @@ -8,6 +8,10 @@ line-height: 1.6; font-feature-settings: 'cv01', 'cv02'; } + + :is(.dark) { + color-scheme: dark; + } } @layer components { @@ -96,6 +100,57 @@ @apply border border-gray-200 dark:border-gray-700 rounded-lg overflow-hidden; } + /* Scrollbar at top variant (used on history page) */ + .platform-table-scrollbar-top .overflow-x-auto { + transform: rotateX(180deg); + } + + .platform-table-scrollbar-top .overflow-x-auto > table { + transform: rotateX(180deg); + } + + /* Compact table variant (used on history page) */ + .platform-table-compact .platform-table th { + @apply px-2 py-2 text-sm; + } + + .platform-table-compact .platform-table td { + @apply px-2 py-2 text-xs; + } + + .platform-table-compact .platform-table .category-header td { + @apply text-xs py-1.5; + } + + /* Sticky first column for compact table */ + .platform-table-compact .platform-table th:first-child, + .platform-table-compact .platform-table td:first-child { + position: sticky; + left: 0; + z-index: 1; + } + + .platform-table-compact .platform-table th:first-child { + @apply bg-blue-600 dark:bg-blue-800; + z-index: 2; + } + + .platform-table-compact .platform-table td:first-child { + @apply bg-white dark:bg-gray-900; + } + + .platform-table-compact .platform-table tr.row-alt td:first-child { + @apply bg-gray-50 dark:bg-gray-800; + } + + .platform-table-compact .platform-table .category-header td { + @apply bg-gray-200 dark:bg-gray-700; + } + + .platform-table-compact .platform-table .category-header td:first-child { + z-index: 2; + } + /* Draft badge for non-final platform years */ .draft-badge { @apply ml-1 text-xs font-medium px-1.5 py-0.5 rounded-full bg-yellow-100 text-yellow-800 dark:bg-yellow-900/40 dark:text-yellow-300 align-middle; @@ -273,7 +328,7 @@ @media (min-width: 1024px) { .useful-links-grid > * { - width: calc(33.333% - 0.6667rem); + width: calc(50% - 0.5rem); } } @@ -282,6 +337,19 @@ @apply bg-blue-50 dark:bg-blue-900/20 border border-blue-100 dark:border-blue-800/30 rounded-lg p-5; } + /* View toggle buttons */ + .view-toggle-btn { + @apply text-gray-500 dark:text-gray-400 bg-transparent cursor-pointer; + } + + .view-toggle-btn:hover { + @apply bg-gray-100 dark:bg-gray-700; + } + + .view-toggle-btn.active { + @apply bg-blue-600 dark:bg-blue-700 text-white; + } + /* Accordion styles */ .accordion-item { @apply border border-gray-200 dark:border-gray-700 rounded-lg mb-2; diff --git a/assets/js/history-view-toggle.js b/assets/js/history-view-toggle.js new file mode 100644 index 0000000..98b4c29 --- /dev/null +++ b/assets/js/history-view-toggle.js @@ -0,0 +1,27 @@ +// History page view toggle (Table / Cards) with localStorage persistence +(function() { + var STORAGE_KEY = 'historyView'; + var tableView = document.getElementById('table-view'); + var cardView = document.getElementById('card-view'); + var btnTable = document.getElementById('view-table'); + var btnCards = document.getElementById('view-cards'); + + if (!tableView || !cardView || !btnTable || !btnCards) return; + + function setView(view) { + var isTable = view === 'table'; + tableView.classList.toggle('hidden', !isTable); + cardView.classList.toggle('hidden', isTable); + btnTable.classList.toggle('active', isTable); + btnCards.classList.toggle('active', !isTable); + try { localStorage.setItem(STORAGE_KEY, view); } catch (e) {} + } + + btnTable.addEventListener('click', function() { setView('table'); }); + btnCards.addEventListener('click', function() { setView('cards'); }); + + // Initialize from saved preference (default: table) + var saved = 'table'; + try { saved = localStorage.getItem(STORAGE_KEY) || 'table'; } catch (e) {} + setView(saved); +})(); diff --git a/platform_history.html b/platform_history.html index 635a770..da367ac 100644 --- a/platform_history.html +++ b/platform_history.html @@ -64,14 +64,32 @@

-
-

All Platforms

+
+ +

All Platforms

+ +
+ + +
+
+ +
+ {% include platform-table.html years=all_years scrollbar_top=true compact=true %}
-
- {% for year in all_years %} - {% include year-card.html year=year %} - {% endfor %} +
@@ -85,3 +103,5 @@

Previous Status Updates

{% include note-popover-content.html %} + +
- - {{ category.name }} - + + {{ category.name }} + + + {{ category.name }} +