You are browsing as a guest. Sign up (or log in) to start making projects!

prada

@prada

Joined September 1st, 2026

  • 4Devlogs
  • 2Projects
  • 1Ships
  • 3Votes
"Il n'y a qu'une chose qui puisse rendre un rêve impossible à réaliser : la peur d'échouer." — Paulo Coelho

(There is only one thing that makes a dream impossible to achieve: the fear of failure.)
Ship Pending review

Last update was mostly optimizations and bug fixes, but this ship is all about new features, UI cleanups, and a big Stacklet overhaul. Main focus was making everything feel alive, fixing layout glitches, and giving better tab control without hogging memory.

UI/UX Fixes:

  • Fixed a splash screen rendering a ghost duplicate over onboarding
  • Fixed tutorial highlights misaligning mid-scroll
  • Added a scroll container so the accessories panel doesn’t get cut off by popup height limits
  • Fixed Stacklet’s positioning so he actually stands on the logo instead of floating next to it

Bug Fixes:

  • Fixed a duplicate const declaration that silently crashed an entire script file
  • Fixed typewriter animation where overlapping text streams canceled each other mid-sentence

New Features:

  • Stacklet overhaul: rebuilt him with a full animation rig (antenna lag, arm overshoots, squash jumps)
  • Instant Undo: one-click undo if you accidentally sort or deduplicate tabs
  • Tab suspension & Read Later: freezes idle tabs and saves week-old tabs automatically
  • Quick Search: command palette style launcher to jump to any tab fast

Spent ~28 hours (only 11 logged…) on this build getting the physics and UI quirks sorted out. Next up is polishing based on feedback. If you test it out and have ideas, drop a review or ping me on GitHub / Discord (fraghaft)!

Try project → See source code →
Open comments for this post

8h 34m 4s logged

8+ Hours of Stax: Big Updates & Quality-of-Life Improvements! 🚀

What started as “Stax is working fine” quickly turned into an 8+ hour feature binge! Stax was doing its job, but I knew it could be even better. Here is a breakdown of the new features added to save memory, boost performance, and make your workflow smoother:

  • Instant Undo Action: Accidentally sorted or deduplicated tabs? You can now undo your last action with a single click to restore your workspace immediately.
  • Suspend Inactive Tabs: Free up memory and boost browser performance by freezing idle background tabs directly from the extension.
  • Save & Restore Sessions: Working across multiple projects? Easily save your current session and reopen it anytime from the new Saved Sessions tab.
  • Enhanced Smart Sort & AI Methods: Re-engineered category patterns and AI matching rules to deliver cleaner, faster, and far more accurate tab organization.
  • Quick Switch Search: Easily find and jump to any tab or open website using the new search icon command palette.
0
0
93
Open comments for this post

2h 47m 53s logged

Stamped - Devlog

Finished my site for the Personal Site mission.

What it is: opens with a short confession instead of a bio, then an optional 7-panel story about getting stuck while learning to code. Includes losing 60+ hours of work on a Minecraft admin dashboard I built (login pages, live server stats, full permissions system) with no backup. Screenshots are all that’s left of it, so that’s how it’s shown.

Stack: plain HTML/CSS/JS, no framework. halftone black and white style.

Live: https://stamped-zeta.vercel.app/

0
0
16
Open comments for this post

31m 59s logged

Stax Devlog 2!!! / What I did

Before this update, Stax could only group a tab if I had explicitly hardcoded its exact domain into the background script. Anything else just got dumped into a generic grey group, which meant the extension barely worked unless I had manually added the site beforehand.

I overhauled the classification logic so it looks for broader patterns instead of fixed domain lists. It now checks domain endings like .shop or .bank, path keywords like /cart or /checkout, platform routes like /pull/42, and active page titles as a fallback so a tab named “Your boarding pass” gets caught under Travel even on a random airline site.

I also cleaned up the codebase structure. popup.js and sidepanel.js were sharing a bunch of copy-pasted helper functions. I moved those out into a shared script file so I’m not maintaining the exact same logic in two places.

Issues I ran into and fixed

  • Keyword classifier false positives. The old string check was matching shop anywhere inside a URL string. That meant photoshop.adobe.com was getting sorted straight into Shopping. Switched it to match proper hostname boundaries so creative tools don’t end up in shopping groups.

  • Code duplication across UI files. Having identical helper functions in both popup.js and sidepanel.js meant any bug fix had to be applied twice. Extracted them into a common utility script to keep both views in sync.

What’s next

  • Workspaces. Saving full tab group setups to chrome.storage.local so you can close an entire session and restore it later.
  • Command Palette. Adding a Cmd+K / Ctrl+K search overlay to quickly search across all open tabs and jump to them instantly.
0
0
22
Open comments for this post

1h 45m 43s logged

Stax — hybrid sort, a real auto-sort toggle, and settings that finally live where they should

Stax groups browser tabs into color-coded groups. Local domain rules by default, plus an optional AI pass (Claude or Gemini, your own key) for tabs that don’t match anything obvious.

What I did

Local rule matching and AI grouping used to be two separate paths. Smart Sort only ran local rules. A separate button re-ran AI on everything from scratch and ignored what local rules had already sorted, so tabs the local rules couldn’t place just sat there ungrouped even with an API key set. I merged these into one pipeline: local rules run first since they’re instant, free, and work offline, and only the leftover tabs get handed to AI. If the AI call fails, it now falls back to the local result instead of breaking the whole action.

The auto-sort-on-new-tab toggle in Preferences used to be fake. It wrote a value to storage that nothing ever read, so flipping the switch did literally nothing. Wired it up for real, debounced per window so restoring a saved session doesn’t fire a sort for every single tab.

Settings and the custom domain-rule editor used to live on a separate page you had to open in a new tab. Moved the whole thing into the popup as a second screen, and built a side panel that mirrors it with live updates as tabs and groups change, so you’re not stuck refreshing manually.

Issues I ran into and fixed

  • Keyword classifier false positives. The fallback classifier (kicks in when a domain isn’t in the built-in list) was doing plain substring matching on hostnames. “shop” was matching photoshop.adobe.com, “dev” was matching random domains that just happened to contain those letters. Switched it to match whole hostname tokens instead, which kills the false positives without losing the keyword coverage.

  • Extension pages slipping through. chrome-extension:// pages weren’t excluded from sorting the way chrome:// pages were. The old regex only matched schemes ending right after the browser name, so extension pages like the built-in PDF viewer could end up grouped under a garbage name based on the extension ID. Fixed the exclusion list to cover that too.

  • Silent save failures. Settings saves had zero error handling around chrome.storage.sync.set. That API has an 8KB-per-item quota, so enough custom rules could make a save fail silently while the UI still said “Saved.” Wrapped it in a try/catch so a failed save actually tells you it failed now.

  • Dead options page. After moving settings into the popup, the old separate options.html/options.js page wasn’t wired to anything in the manifest anymore. It was just dead code sitting in the repo doing nothing. Deleted it instead of fixing a page nobody could ever reach.

What’s next

Nothing blocking, the extension works end to end. For later: popup.js and sidepanel.js currently duplicate a few small helper functions (glyph lookup, sending messages), so I’d like to pull those into one shared file so I’m not editing the same logic twice.

0
0
23

Followers

Loading…