Add app-slider-field: a mat-slider with a number field. Typed values
apply on Enter or blur, clamped and snapped to the step.
Pendulum uses it. Fractal keeps ngx-slider (log zoom) plus a field.
Drop the ": value" suffix from slider labels.
Move gpu-state.ts out of gray-scott so gray-scott and lenia share it.
Fix gray-scott: skip the texture swap until the step shader is ready,
otherwise the seed is lost.
Info panel: support routerLink, so GoL and Lenia link to each other.
Ant System on the travelling salesman problem, run on the CPU.
Click the canvas to add cities while the colony runs.
Show the nearest-neighbor tour as a baseline. Tick ROADMAP.
Add linkLabel to AlgorithmEntry. The info panel shows it instead of
"Wikipedia" when set, for links that are not Wikipedia.
Tick the boids item in ROADMAP.md and add a Boids 3D item.
Plain backtracking froze the tab on big maps. Pick the most
constrained region first (DSATUR), and stop after 100,000 attempts.
Measured on 52,000 maps (38x38): max 48 ms, about 1 in 2,900 give up.
Points that never escape kept the last loop index as iter, so they
never reached the black color. Start iter at maxIterations and set it
only when a point escapes. Update the ITEM_4 text (en, de) to match.
Each algorithm page shows its numbers with app-metrics.
FpsCounter publishes a rate every 500 ms, not every frame.
Fractal 2D reset now also resets the zoom slider.
Add idea, complexity, data structures, GPU use to 10 algorithm pages.
Link logic files on Gitea; a spec fails on a missing path.
Fix wrong texts: cloth phases, pendulum dt, fractal lighting, typos.
Add optional Decisions and Result blocks to the project dialog.
Fill them for ToBePlayed, Tribble, Claude-in-a-Box and Playground.
Remove Portainer and the Google Drive backup claims from Tribble.
ngx-slider throws during prerender (no layout APIs on the server).
Its ngOnDestroy then calls disconnect() on null, so about 1 in 10
prerender builds failed. Gate fractal and pendulum sliders on a
signal set by afterNextRender.
Update the Playground entry on the projects page: diagram,
prerender, privacy and operations bullets, one challenge,
one learning, and the Traefik, nginx and Tailscale technologies.
Fonts come from npm, not Google, so no third-party font requests.
Pages are prerendered at build time; browser-only code is guarded.
nginx serves per-route HTML, a real 404 and gzip.
Build the dog outline from one mirrored right half.
Smooth it with Chaikin corner cutting (3 passes).
Also add a ROADMAP note for the circles slider thumb.
Draw a shape or pick a preset, then rebuild it with a direct DFT.
Each frequency becomes one circle. Circles are sorted by radius, and
the circles slider keeps the biggest N. Also tick the ROADMAP item and
add the FOURIER SEO key.
Old copy was generic and did not match the code. Texts now describe
the real features: PlayStation sync, file imports, tests, security.
Add per-game itch.io links, new chips, and a test that checks every
About project key exists in en and de.
The canvas had a 1px frame. The company logos are opaque white, so
invert them to match the dark tiles. Core fetches the Auth public key
(JWKS), so the To Be Played diagram now shows that arrow.
Add diagrams to three projects. A tap opens them full size.
Align en/de texts: no versions, Gitea not GitHub, Portainer, home
server + VPS. Make To Be Played the featured project.
Remove the Hostinger logo image.
Move logic from 5 components into services and pure modules, with a
shared animator for pathfinding and labyrinth. Add specs for them and
for pendulum and cloth physics.
Fix Game of Life crash: clamp rows and cols to the max.
Fix random pathfinding on 2 columns: in bounds, start not equal end.
Angular 22 defaults to OnPush, so Eager is removed.
Template state is now signals, so sorting needs no detectChanges.
Game of Life execution time now updates live.
Remove the unused ImageDialogComponent and turn the OnPush lint rule
back on.
Convert 26 PNG/JPG assets to WebP: max 1600 px, q80, diagrams lossless.
src/assets shrinks from 8.3 MB to 4.2 MB.
Use me.jpg for og:image and twitter:image; some crawlers skip WebP.
Add scripts/check-assets.mjs to lint, so a wrong asset path fails lint,
not only at runtime.
Karma needed headless Chrome. Vitest with jsdom runs with no browser.
Lighthouse CI now gets Chrome from @puppeteer/browsers.
Two CSS font tests are dropped: jsdom does not apply real CSS.
The slider never ran because Swiper custom elements were not registered.
Use the bundle build so the navigation and pagination modules are included.
Add a spec that checks the registration.
Move to Angular 22 and update all dependencies. TypeScript stays on 6.0
(7 is blocked by Angular 22). Drop the ip-address override, add
fast-uri and basic-ftp overrides for audit fixes.
Set ChangeDetectionStrategy.Eager on components, as the ng update
migration does, and turn off the new OnPush lint rule.
Add the To Be Played project to the projects page and the about page.