release: freeze Nexus One AI 1.0.0-rc1
This commit is contained in:
1 parent
63acefd890
commit
4f1419ca93
152 files changed
+9445
-828
No files matched your search
@@ -39,6 +39,95 @@ const EXTEND_INTERVAL = 60000; // poll session state every 60 seconds
|
||||
return;
|
||||
}
|
||||
|
||||
// Keep the streamlined prototype navigation consistent on every legacy
|
||||
// page while features are progressively enabled.
|
||||
function applyPrototypeNavigation() {
|
||||
const topnav = document.querySelector('.topnav');
|
||||
const nav = topnav && topnav.querySelector('nav');
|
||||
if (!topnav || !nav) return;
|
||||
|
||||
const directUseCases = nav.querySelector('a[href="usecases.html"]');
|
||||
if (directUseCases) directUseCases.remove();
|
||||
|
||||
const dropdowns = Array.from(nav.querySelectorAll('.nav-dropdown'));
|
||||
const helpDropdown = dropdowns.find(el => {
|
||||
const button = el.querySelector('.nav-drop-btn');
|
||||
return button && button.textContent.trim().startsWith('Help');
|
||||
});
|
||||
if (helpDropdown) helpDropdown.remove();
|
||||
nav.querySelectorAll('.nav-sep').forEach(el => el.remove());
|
||||
|
||||
const aiDropdown = Array.from(nav.querySelectorAll('.nav-dropdown')).find(el => {
|
||||
const button = el.querySelector('.nav-drop-btn');
|
||||
return button && button.textContent.trim().startsWith('AI Tools');
|
||||
});
|
||||
if (aiDropdown) {
|
||||
const menu = aiDropdown.querySelector('.nav-drop-menu');
|
||||
if (menu) {
|
||||
menu.innerHTML = `
|
||||
<span class="nav-drop-cat">BUILD /</span>
|
||||
<a href="app-studio.html">App Studio</a>
|
||||
<a href="applications.html">Applications</a>
|
||||
<a href="dataset-creation.html">Dataset Creation</a>
|
||||
<a href="training.html">Model Training</a>
|
||||
<span class="nav-drop-cat">WORK /</span>
|
||||
<a href="prompt-studio.html">Nexus Prompt Studio</a>
|
||||
<a href="tool-openwebui.html">Open WebUI</a>
|
||||
<a href="nexus-notebook.html">Nexus Notebook</a>
|
||||
<span class="nav-drop-cat">AUTOMATE /</span>
|
||||
<a href="agents.html">Agent Studio</a>
|
||||
<span class="nav-drop-cat">QUALITY /</span>
|
||||
<a href="evals.html">AI Evaluation</a>
|
||||
<span class="nav-drop-cat">DEVELOPER /</span>
|
||||
<a href="tool-jupyter.html">Jupyter Notebook</a>
|
||||
`;
|
||||
}
|
||||
}
|
||||
|
||||
const adminDropdown = Array.from(nav.querySelectorAll('.nav-dropdown')).find(el => {
|
||||
const button = el.querySelector('.nav-drop-btn');
|
||||
return button && button.textContent.trim().startsWith('Admin');
|
||||
});
|
||||
let navRight = topnav.querySelector('.nav-right');
|
||||
if (!navRight) {
|
||||
navRight = document.createElement('div');
|
||||
navRight.className = 'nav-right';
|
||||
topnav.appendChild(navRight);
|
||||
}
|
||||
if (adminDropdown) navRight.insertBefore(adminDropdown, navRight.firstChild);
|
||||
|
||||
const currentPage = window.location.pathname.split('/').pop() || 'index.html';
|
||||
nav.querySelectorAll('a, .nav-drop-btn').forEach(el => el.classList.remove('active'));
|
||||
const currentLink = nav.querySelector(`a[href="${currentPage}"]`);
|
||||
if (currentLink) currentLink.classList.add('active');
|
||||
if (aiDropdown && (currentPage === 'app-studio.html' || currentPage === 'applications.html' || currentPage === 'dataset-creation.html' || currentPage === 'training.html' || currentPage === 'prompt-studio.html' || currentPage === 'tool-openwebui.html' || currentPage === 'nexus-notebook.html' || currentPage === 'meeting.html' || currentPage === 'agents.html' || currentPage === 'workflows.html' || currentPage === 'schedules.html' || currentPage === 'evals.html' || currentPage === 'nexus-compare.html' || currentPage === 'rag-quality.html' || currentPage === 'feedback.html' || currentPage === 'tool-jupyter.html')) {
|
||||
aiDropdown.querySelector('.nav-drop-btn')?.classList.add('active');
|
||||
}
|
||||
}
|
||||
|
||||
applyPrototypeNavigation();
|
||||
|
||||
// Consolidate overlapping tools under three product-level workspaces while
|
||||
// preserving their existing routes and functionality.
|
||||
(function applyProductModeNavigation() {
|
||||
const page = window.location.pathname.split('/').pop() || 'index.html';
|
||||
const products = [
|
||||
{ name: 'Nexus Notebook', pages: ['nexus-notebook.html','meeting.html'], modes: [['Notebook','nexus-notebook.html'],['Meetings','meeting.html']] },
|
||||
{ name: 'Agent Studio', pages: ['agents.html','workflows.html','schedules.html'], modes: [['Agents','agents.html'],['Workflows','workflows.html'],['Scheduled Jobs','schedules.html']] },
|
||||
{ name: 'AI Evaluation', pages: ['evals.html','nexus-compare.html','rag-quality.html','feedback.html','model-compare.html'], modes: [['Eval Suites','evals.html'],['Model Compare','nexus-compare.html'],['RAG Quality','rag-quality.html'],['Feedback','feedback.html']] }
|
||||
];
|
||||
const product = products.find(item => item.pages.includes(page));
|
||||
if (!product || document.querySelector('.product-mode-nav')) return;
|
||||
const style = document.createElement('style');
|
||||
style.textContent = '.product-mode-nav{height:44px;display:flex;align-items:center;gap:6px;padding:0 28px;border-bottom:1px solid var(--bdr,#e2e8f0);background:var(--navy2,#fff);position:relative;z-index:20}.product-mode-name{font-weight:700;font-size:13px;color:var(--ink,#172033);margin-right:12px}.product-mode-nav a{padding:7px 11px;border-radius:7px;color:var(--med,#64748b);font-size:12px;text-decoration:none}.product-mode-nav a:hover{background:rgba(124,58,237,.08);color:var(--purple,#7c3aed)}.product-mode-nav a.active{background:rgba(124,58,237,.12);color:var(--purple,#7c3aed);font-weight:700}@media(max-width:720px){.product-mode-nav{padding:0 12px;overflow-x:auto}.product-mode-name{display:none}.product-mode-nav a{white-space:nowrap}}';
|
||||
document.head.appendChild(style);
|
||||
const bar = document.createElement('div');
|
||||
bar.className = 'product-mode-nav';
|
||||
bar.setAttribute('aria-label', product.name + ' modes');
|
||||
bar.innerHTML = '<span class="product-mode-name">' + product.name + '</span>' + product.modes.map(mode => '<a href="' + mode[1] + '"' + (mode[1] === page ? ' class="active" aria-current="page"' : '') + '>' + mode[0] + '</a>').join('');
|
||||
document.querySelector('.topnav')?.insertAdjacentElement('afterend', bar);
|
||||
})();
|
||||
|
||||
// ── Inject user chip + logout into nav ─────────────────────────────────────
|
||||
const topnav = document.querySelector('.topnav');
|
||||
if (topnav) {
|
||||
|
||||
Reference in new issue
Block a user