Skip to content

Rebuild sidebar as a clean icon-first navigation - #75

Merged
emnl51 merged 10 commits into
mainfrom
codex/sidebar-clean-rebuild
Aug 25, 2026
Merged

emnl51 merged 10 commits into
mainfrom
codex/sidebar-clean-rebuild

Conversation

@emnl51

@emnl51 emnl51 commented Aug 25, 2026

Copy link
Copy Markdown
Owner

Summary

  • replaces the previous layered sidebar grouping code with a new five-section navigation component
  • makes collapsed desktop mode a centered icon-only rail with labels, expanders, submenus, search, and user copy hidden
  • keeps mobile navigation fully expanded regardless of the saved desktop collapse preference
  • searches the rendered localized labels, including Turkish menu names
  • version-stamps ui-shell.js and serves it with revalidation so browser caches cannot keep an old sidebar after upgrades
  • updates regression tests, README, and Unreleased changelog

Validation

  • JavaScript syntax validated with V8
  • regression assertions updated for the new navigation structure and compact/mobile behavior

Main sections

Control Panel 路 Jobs 路 Job Review 路 Settings 路 Administration

@emnl51
emnl51 merged commit cadf140 into main Aug 25, 2026
7 of 8 checks passed

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

馃挕 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 3529a4a9ff

鈩癸笍 About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 馃憤.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread app/ui-shell.js
for(const data of NAVIGATION){const primary=data.primary?sourceButtons.get(data.primary):null;const children=data.children.map(tab=>sourceButtons.get(tab)).filter(Boolean);if(!primary&&!children.length)continue;
const section=document.createElement('section');section.className='bert-nav-section';section.dataset.section=data.key;const submenu=document.createElement('div');submenu.id=`bert-nav-${data.key}`;submenu.className='bert-nav-submenu';
children.forEach(button=>{button.className='bert-nav-button';button.innerHTML=destinationMarkup(button.dataset.tab);button.title=localizedLabel(DESTINATIONS[button.dataset.tab]?.label||button.dataset.tab);submenu.appendChild(button)});
if(primary){primary.className='bert-nav-button';primary.innerHTML=destinationMarkup(primary.dataset.tab);primary.title=localizedLabel(data.label);const row=document.createElement('div');row.className='bert-nav-row';row.appendChild(primary);

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Preserve the active class while rebuilding buttons

On an initial visit without a saved tab, assigning className replaces the template's active class on the Overview button. The Overview content remains visible, but no navigation destination receives active styling; moreover, entering and then clearing a navigation search finds no active button and collapses the current section. Preserve whether each button was active when applying the new navigation class.

Useful? React with 馃憤聽/ 馃憥.

Comment thread app/ui-shell.js
const observer=new MutationObserver(muts=>{for(const m of muts){m.addedNodes.forEach(n=>{if(n.nodeType===1)annotateTables(n);translateInterface(n)})}annotateTables()});
observer.observe(document.body,{childList:true,subtree:true});
window.addEventListener('resize',()=>{if(window.innerWidth>980)setMenu(false)});
window.addEventListener('resize',()=>{if(window.innerWidth>980)setMenu(false);else app.classList.remove('jt-collapsed')});

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Restore the collapsed rail after returning to desktop

When a user with the desktop sidebar collapsed narrows the viewport below 980px, this handler removes jt-collapsed but leaves the saved preference set to 1; widening the same window again only closes the mobile menu and never reapplies the class. The desktop therefore unexpectedly stays expanded until a reload, despite the persisted compact-mode preference. Reapply the saved state when crossing back above the desktop breakpoint.

Useful? React with 馃憤聽/ 馃憥.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant