From cb8e525508b6d9993966a36004fde7fbf4e1fa72 Mon Sep 17 00:00:00 2001 From: Andy Dixon Date: Sat, 25 Jul 2026 11:15:28 +0100 Subject: [PATCH] Redesign the interface as a hand-made dev zine Replaces the gradient, frosted-glass look with flat warm ink, hard black edges and offset shadows, a clashing lime/pink/sky/tangerine palette, and self-hosted Archivo Black, Atkinson Hyperlegible and Space Mono (Inter is gone). Stickers, slight tilts, a marker-style heading, a barber-pole progress bar, wiggling icons and chattier copy give it some restless energy; reduced-motion users get none of the animation. Toolbar buttons are now labelled chips in consistent groups (Open; 2D/3D/City; Fit/Layers/Code/palette; Lines/Refs), and the city bar is one even row: Heli, Walk, Fly, then Tour and Copy link with shortcuts, help text underneath and the address moved to the top right. Copy link feedback no longer wipes the button's icon. A tab half way down the sidebar's left edge (or [) folds the sidebar away and back, remembered per device. The local folder option is hidden unless the server reports it enabled. Canvas text, posters and signs switch to the new fonts once loaded, and the city's ground, fog, grid, pavements and wall are warmed to match. --- web/app.js | 46 ++- web/favicon.svg | 10 +- web/fonts/archivo-black.woff2 | Bin 0 -> 18604 bytes web/fonts/atkinson-400.woff2 | Bin 0 -> 17208 bytes web/fonts/atkinson-700.woff2 | Bin 0 -> 17524 bytes web/fonts/space-mono-400.woff2 | Bin 0 -> 16520 bytes web/fonts/space-mono-700.woff2 | Bin 0 -> 16724 bytes web/index.html | 82 ++-- web/labels.js | 16 +- web/renderer.js | 10 +- web/styles.css | 667 +++++++++++++++------------------ 11 files changed, 397 insertions(+), 434 deletions(-) create mode 100644 web/fonts/archivo-black.woff2 create mode 100644 web/fonts/atkinson-400.woff2 create mode 100644 web/fonts/atkinson-700.woff2 create mode 100644 web/fonts/space-mono-400.woff2 create mode 100644 web/fonts/space-mono-700.woff2 diff --git a/web/app.js b/web/app.js index 59719de..e29798e 100644 --- a/web/app.js +++ b/web/app.js @@ -118,7 +118,7 @@ function computeLayout(){ function computeCity(){ cityModel=layoutCity(files,currentName); const instances=[{x:-80,y:-80,w:cityModel.width+160,h:cityModel.height+160,height:.02,color:[0,0,0],kind:KIND.ground}]; - for(const block of cityModel.blocks)if(block.depth>0)instances.push({x:block.x,y:block.y,w:block.w,h:block.h,height:.1+.06*Math.min(block.depth,4),color:[.55,.6,.9],kind:KIND.block}); + for(const block of cityModel.blocks)if(block.depth>0)instances.push({x:block.x,y:block.y,w:block.w,h:block.h,height:.1+.06*Math.min(block.depth,4),color:[.95,.9,.78],kind:KIND.block}); cityEntries=[]; for(const item of layoutItems){ const building=cityModel.buildings.get(item.id);if(!building)continue; @@ -140,7 +140,7 @@ function computeCity(){ cityFolders=cityModel.blocks.map(block=>({block,buildings:byDirectory.get(block.node.path)||[],label:folderLabel(block.node.path,currentName)})).filter(folder=>folder.buildings.length); const tally=node=>{let files=node.files.length,lines=node.files.reduce((n,f)=>n+(f.lines||0),0);for(const child of node.children.values()){const t=tally(child);files+=t.files;lines+=t.lines;}return{files,lines};}; cityDistricts=cityModel.blocks.filter(block=>block.depth===1).map(block=>({block,...tally(block.node),top:Math.max(10,...[...cityIndex.near(block.x+block.w/2,block.y+block.h/2,Math.hypot(block.w,block.h)/2)].filter(b=>b.x>=block.x&&b.x+b.w<=block.x+block.w&&b.y>=block.y&&b.y+b.h<=block.y+block.h).map(b=>b.height))})); - for(const wall of cityWallBoxes)instances.push({...wall,color:[.55,.5,1],kind:KIND.wall}); + for(const wall of cityWallBoxes)instances.push({...wall,color:[.78,.95,.21],kind:KIND.wall}); pastePosters(); renderer.setCity(instances,{width:cityModel.width,height:cityModel.height}); buildMinimap();updateCityHud();updateTrails();updateRoutes();updateBeacons();signState.key='';facadeState={entry:null,texture:null};renderer.setFacade(null); @@ -324,8 +324,8 @@ $('#tourButton').addEventListener('click',event=>{event.currentTarget.blur();tou // ---- Shareable places: repository, view, camera and file in the URL fragment ---- let currentRepoUrl=''; $('#shareButton').addEventListener('click',async event=>{ - const button=event.currentTarget,label=button.textContent;button.blur(); - const flash=text=>{button.textContent=text;setTimeout(()=>{button.textContent=label;},1800);}; + const button=event.currentTarget,labelElement=button.querySelector('.label'),label=labelElement.textContent;button.blur(); + const flash=text=>{labelElement.textContent=text;button.classList.add('done');setTimeout(()=>{labelElement.textContent=label;button.classList.remove('done');},1800);}; if(!currentRepoUrl){flash('Needs a GitHub repo');return;} const hash=encodePlace({repo:currentRepoUrl,view:renderer.mode,camera:renderer.city,file:selected?.path}); window.history.replaceState(null,'',hash); @@ -372,8 +372,8 @@ function minimapTransform(){ function buildMinimap(){ const dpr=2,canvas=document.createElement('canvas');canvas.width=MINIMAP.width*dpr;canvas.height=MINIMAP.height*dpr; const ctx=canvas.getContext('2d'),{scale,ox,oy}=minimapTransform();ctx.scale(dpr,dpr); - ctx.strokeStyle='rgba(141,125,255,.55)';ctx.lineWidth=1.5;ctx.strokeRect(ox-WALL.margin*scale,oy-WALL.margin*scale,(cityModel.width+WALL.margin*2)*scale,(cityModel.height+WALL.margin*2)*scale); - ctx.fillStyle='rgba(141,125,255,.08)'; + ctx.strokeStyle='rgba(200,241,53,.7)';ctx.lineWidth=1.5;ctx.strokeRect(ox-WALL.margin*scale,oy-WALL.margin*scale,(cityModel.width+WALL.margin*2)*scale,(cityModel.height+WALL.margin*2)*scale); + ctx.fillStyle='rgba(243,236,220,.06)'; for(const block of cityModel.blocks)if(block.depth===1)ctx.fillRect(ox+block.x*scale,oy+block.y*scale,block.w*scale,block.h*scale); for(const item of layoutItems){const b=item.city;if(!b||!fileAlerts.has(item.path))continue;ctx.fillStyle='#ff4d3d';ctx.beginPath();ctx.arc(ox+(b.x+b.w/2)*scale,oy+(b.y+b.h/2)*scale,2.6,0,Math.PI*2);ctx.fill();} for(const item of layoutItems){const b=item.city;if(!b)continue;ctx.fillStyle=`rgba(${item.color.map(v=>Math.round(v*255)).join(',')},.85)`;ctx.fillRect(ox+b.x*scale,oy+b.y*scale,Math.max(.6,b.w*scale),Math.max(.6,b.h*scale));} @@ -491,7 +491,7 @@ function escapeHtml(value=''){return String(value).replace(/[&<>"]/g,char=>({'&' const syntaxPalette={plain:'#b6bfd0',comment:'#5c667a',string:'#8fd694',number:'#f5a97f',keyword:'#c69cff',type:'#6ec6ff',function:'#7aa7ff',property:'#5fd3c6',operator:'#8f9ab0',constant:'#ff8fa3',tag:'#5fd3c6'}; // Matches the renderer's tile top so code drawn over a 3D roof blends with the WebGL face. -const TILE_TOP='#0e1118'; +const TILE_TOP='#16140f'; const syntaxKeywords=new Set(`abstract as async await break case catch class const continue crate def default defer delete do else enum export extends extern false final finally fn for from func function get go if impl import in instanceof interface is lambda let loop match mod module mut namespace new nil None null of override package private protected pub public raise readonly require return self set static struct super switch this throw trait true try type typeof undefined union unsafe use using var virtual void where while with yield`.split(' ')); const syntaxConstants=new Set('true false null nil none undefined nan infinity self this super'.split(' ')); const tokenPattern=/"(?:\\.|[^"\\])*"|'(?:\\.|[^'\\])*'|`(?:\\.|[^`\\])*`|\b0x[\da-f]+\b|\b0b[01]+\b|#[\da-f]{3,8}\b|\b\d+(?:\.\d+)?(?:e[+-]?\d+)?\b|[A-Za-z_$][\w$-]*|\s+|./gi; @@ -605,9 +605,9 @@ function selectFile(file,addHistory=true){ function renderInspector(){ const hint=$('#inspectHint'),content=$('#inspectContent'); - if(!files.length){hint.hidden=false;hint.textContent='Open a local folder or GitHub repository to begin.';content.innerHTML='';return;} + if(!files.length){hint.hidden=false;hint.textContent='Open a codebase to get going.';content.innerHTML='';return;} if(!selected){ - hint.hidden=false;hint.textContent=expandedCoverageLayer?'Click a file or use ↑ and ↓ to move around the map':'Select an entity on the map'; + hint.hidden=false;hint.textContent=expandedCoverageLayer?'Click a file or use ↑ and ↓ to move around the map':'Click anything on the map. Go on.'; const coverageRows=Object.entries(layerLabels).map(([key,label])=>``).join(''); const expandedLabel=layerLabels[expandedCoverageLayer]; content.innerHTML=`
Coverage · ${escapeHtml(currentName)}

${format(files.length)} indexed files

known links${format(sceneStats.known)}inferred links${format(sceneStats.inferred)}definitions${format(sceneStats.definitions)}source lines${format(sceneStats.totalLines)}security alerts${alertSummary()}
Semantic coverageClick a section
${coverageRows}
${expandedCoverageLayer?`
${escapeHtml(expandedLabel)}Click or ↑ ↓ to navigate
`:''}`; @@ -696,7 +696,7 @@ $$('.tab').forEach(tab=>tab.addEventListener('click',()=>switchTab(tab.dataset.t function resizeOverlay(){const dpr=Math.min(devicePixelRatio||1,2),w=Math.floor(overlay.clientWidth*dpr),h=Math.floor(overlay.clientHeight*dpr);if(overlay.width!==w||overlay.height!==h){overlay.width=w;overlay.height=h;}overlayCtx.setTransform(dpr,0,0,dpr,0,0);} function drawChip(ctx,text,x,y,maxWidth,accent,occupied,force=false,align='left'){ if(maxWidth<24)return false; - ctx.font='600 11px Inter, system-ui, sans-serif'; + ctx.font='600 11px "Space Mono", ui-monospace, monospace'; let label=text; if(ctx.measureText(label).width>maxWidth-10){let low=1,high=label.length;while(lowbox.xother.x&&box.yother.y))return false; occupied?.push(box); - ctx.fillStyle='rgba(10,12,18,.88)';ctx.fillRect(x,y,width,17); + ctx.fillStyle='rgba(21,19,15,.92)';ctx.fillRect(x,y,width,17); if(accent){ctx.fillStyle=accent;ctx.fillRect(x,y,2,17);} ctx.fillStyle='rgba(237,241,238,.94)';ctx.fillText(label,x+5,y+2); return true; @@ -716,7 +716,7 @@ function drawFileChip(ctx,item,rect,accent,occupied,force=false){ return drawChip(ctx,item.name,anchor.x,anchor.y-8,maxWidth,accent,occupied,force,'center'); } function drawOverlay(){ - resizeOverlay();const ctx=overlayCtx,w=overlay.clientWidth,h=overlay.clientHeight;ctx.clearRect(0,0,w,h);ctx.save();ctx.font='600 11px Inter, system-ui, sans-serif';ctx.textBaseline='top'; + resizeOverlay();const ctx=overlayCtx,w=overlay.clientWidth,h=overlay.clientHeight;ctx.clearRect(0,0,w,h);ctx.save();ctx.font='600 11px "Space Mono", ui-monospace, monospace';ctx.textBaseline='top'; codeTexturesPending=false; codeTextureDeadline=performance.now()+5; if(renderer.mode==='city'){visibleScreenItems=[];drawCityOverlay();ctx.restore();return;} @@ -1242,6 +1242,7 @@ window.addEventListener('resize',()=>{dirty=true;}); const dialog=$('#loadDialog');$('#loadButton').addEventListener('click',()=>dialog.showModal());$('#welcomeOpen').addEventListener('click',()=>dialog.showModal()); $('#localFolderButton').addEventListener('click',async()=>{ + if(!localFoldersEnabled)return; dialog.close(); if('showDirectoryPicker' in window){try{const handle=await window.showDirectoryPicker();const chosen=[];await collectHandles(handle,'',chosen);await uploadLocal(handle.name,chosen);}catch(error){if(error.name!=='AbortError')showError(error.message);}} else $('#folderFallback').click(); @@ -1323,12 +1324,17 @@ async function resumeAfterGithub(){ requestAnimationFrame(()=>(pending&&tone==='ok'?$('#githubButton'):$('#githubInput')).focus()); } +let localFoldersEnabled=false; +$$('.local-only').forEach(element=>{element.hidden=true;}); async function checkBackend(){ const indicator=$('.live-dot'); try{ const response=await apiFetch(apiUrl('/api/health')); if(!response.ok)throw new Error(`HTTP ${response.status}`); + const health=await response.json(); indicator.classList.add('connected');indicator.title='Indexer connected';indicator.setAttribute('aria-label','Indexer connected'); + // Local folder uploads only exist when the server was started with SHOW_LOCAL=true. + localFoldersEnabled=health.localFolders===true;$$('.local-only').forEach(element=>{element.hidden=!localFoldersEnabled;}); }catch{ indicator.classList.remove('connected');indicator.title='Indexer unavailable';indicator.setAttribute('aria-label','Indexer unavailable'); } @@ -1360,6 +1366,18 @@ dialog.addEventListener('click',event=>{if(event.target===dialog)dialog.close(); $$('.tab').forEach((tab,index)=>{tab.id=`tab-${tab.dataset.tab}`;tab.setAttribute('aria-controls',`panel-${tab.dataset.tab}`);$(`#panel-${tab.dataset.tab}`).setAttribute('aria-labelledby',tab.id);tab.addEventListener('keydown',event=>{if(!['ArrowLeft','ArrowRight','Home','End'].includes(event.key))return;event.preventDefault();const tabs=$$('.tab'),next=event.key==='Home'?0:event.key==='End'?tabs.length-1:(index+(event.key==='ArrowRight'?1:-1)+tabs.length)%tabs.length;switchTab(tabs[next].dataset.tab);tabs[next].focus();});}); switchTab('inspector'); new ResizeObserver(()=>{dirty=true;}).observe(viewport); -$('#settingsButton').title='Workspace settings';$('#settingsButton').setAttribute('aria-label','Workspace settings'); -$('#settingsButton svg').innerHTML=''; +// Sidebar folds away with the tab on its left edge (or [ ); remembered on this device. +function setInspectorHidden(hidden){ + $('.workspace').classList.toggle('inspector-hidden',hidden); + const toggle=$('#inspectorToggle');toggle.setAttribute('aria-expanded',String(!hidden));toggle.title=hidden?'Show the sidebar ([)':'Hide the sidebar ([)'; + try{localStorage.setItem('codenav.inspectorHidden',hidden?'1':'');}catch{} + dirty=true; +} +$('#inspectorToggle').addEventListener('click',event=>{event.currentTarget.blur();setInspectorHidden(!$('.workspace').classList.contains('inspector-hidden'));}); +document.addEventListener('keydown',event=>{if(event.key==='['&&!event.metaKey&&!event.ctrlKey&&!/INPUT|TEXTAREA|SELECT/.test(document.activeElement?.tagName)&&!document.querySelector('dialog[open]')){event.preventDefault();$('#inspectorToggle').click();}}); +try{if(localStorage.getItem('codenav.inspectorHidden'))setInspectorHidden(true);}catch{} +// Canvas text (signs, posters, labels) needs the web fonts loaded before it rasterises them. +Promise.all(['400 30px "Archivo Black"','400 13px "Atkinson Hyperlegible"','700 13px "Atkinson Hyperlegible"','700 11px "Space Mono"'].map(font=>document.fonts.load(font))).then(()=>{ + labelAtlas.clear();if(cityModel)pastePosters();signState.key='';resetCodeCaches();dirty=true; +}).catch(()=>{}); renderer.setData([]);fitScene();renderInspector();renderHistory();requestAnimationFrame(animate);checkBackend();loadGithubStatus().then(()=>/[?&](github|setup_action)=/.test(location.search)?resumeAfterGithub():openPlaceFromHash()); diff --git a/web/favicon.svg b/web/favicon.svg index a9c8b85..613d131 100644 --- a/web/favicon.svg +++ b/web/favicon.svg @@ -1,6 +1,8 @@ - - - - + + + + + + diff --git a/web/fonts/archivo-black.woff2 b/web/fonts/archivo-black.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..a88b0b5352960c400c46ee17180d0d8f5c0d0db9 GIT binary patch literal 18604 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 LDf^jF)&SPc?#=oh literal 0 HcmV?d00001 diff --git a/web/fonts/atkinson-700.woff2 b/web/fonts/atkinson-700.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..bc31903acd1b6772780b04b4f6f7e0e9f36021bb GIT binary patch literal 17524 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 literal 0 HcmV?d00001 diff --git a/web/fonts/space-mono-700.woff2 b/web/fonts/space-mono-700.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..6563bad69c80c737252e98378763276116c17a3a GIT binary patch literal 16724 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 literal 0 HcmV?d00001 diff --git a/web/index.html b/web/index.html index 04c8d92..89ca767 100644 --- a/web/index.html +++ b/web/index.html @@ -3,46 +3,45 @@ - + CodeNavigator - + +

-
CodeNavigator
-
- - - +
CodeNavigator
+ +
+ + +
- -
- - - - +
+ + + +
- -
- - +
+ +
-
- No codebase loaded - Open a folder or public repository + no repo yet + nothing open yet
- +
@@ -51,15 +50,16 @@
- Codebase landscapes -

See your code
as a place.

-

Every file becomes a tile sized by its lines, grouped by folder and coloured by purpose. Fly over it in 2D or 3D, search every symbol, and follow imports from file to file.

-
Ctrl O
-
Public & private GitHub reposLocal foldersSymbol searchImport graph
+ code, but it's a place now +

See your code
as a city.

+ +

Every file is a building, every folder a street. Fly over it, walk around it, get lost in it. Search every symbol, follow imports door to door, and watch the insecure bits smoulder.

+
or hit Ctrl O
+
public + private GitHublocal folderswalkable citiesimport routesthings on firelittle people
+