Skip to content

Releases: woolkingx/containTAB

containTAB 0.3.0

Choose a tag to compare

@woolkingx woolkingx released this 14 Jun 02:44

[0.3.0] - 2026-06-13

This release records the full private-development line from 0.2.2 through
0.3.0, including the intermediate 0.2.3 development builds.

Added

  • Handbook architecture atlas for data owners, object methods, runtime flow, proof gates, UI behavior, schemas, bug notes, decisions, and logic flow.
  • Schema-owned runtime objects for global config, container extension metadata, default container strategy, assignment decisions, and tab/container state.
  • GlobalConfig storage object with one-time migration from legacy pref=* settings into the config object.
  • ContainerExtension storage object for containTAB-owned container lifetime and UI icon metadata.
  • Default-container strategy support for by-tab, by-domain, and by-host creation.
  • Default-container tests for short domain-prefixed by-tab sequence names.
  • Manifest identity tests for the private Firefox extension ID.
  • Fingerprint subsystem files and schemas for per-container fingerprint work, kept behind disabled/experimental gates.
  • Theme mode setting with system, light, and dark choices.
  • Dark theme SCSS palette and a three-tier cascade: explicit dark, explicit light, or system prefers-color-scheme.
  • applyTheme() runtime helper for writing document.documentElement.dataset.theme.
  • Native popup Settings runtime with save rollback and reset side-effect handling.
  • Container edit UI for name, containTAB-owned icon, and lifetime.
  • Multiline rule pattern inputs for semicolon-delimited host patterns.
  • Rule import subpage with explicit paste/import feedback.
  • In-popup confirmation for rule and container delete actions.
  • Popup help content for hostname-only matching, semicolon OR rules, glob syntax, fragment syntax, and the no-regex rule model.
  • Smoke parity gate for popup runtime/smoke DOM shape.
  • Runtime UI design gate checks for smoke HTML/CSS/JS, style-guide CSS, runtime SCSS, and ContainersSection.js regression contracts.
  • Extension identity gate verifies the canonical Firefox ID containtab@woolkingx.local across source, build, release zip, and bundled Lacuna policy packages.
  • Lacuna storage identity known-issue documentation and proof-gate notes.
  • Work plans for container edit UI, runtime-owner implementation, handbook topology cleanup, popup/lifecycle fixes, theme mode, schema-runtime convergence, UI token structure, settings-native runtime UI, Lacuna identity research, runtime UI projection SOP, and 0.3.0 release prep.

Changed

  • Public version moved from 0.2.2/intermediate 0.2.3 to 0.3.0.
  • Popup runtime moved from ad hoc UI behavior toward handbook/smoke-driven projection.
  • Popup UI rebuilt around the smoke-canonical subpage model.
  • Rules is now the popup home tab.
  • Rule add/edit/import, container create/edit, and Settings flows use dedicated subpages where applicable.
  • Container edit is a subpage flow again, not a modal.
  • Add rule container field starts empty; typed new container names create the Firefox contextual identity before writing the rule.
  • Add rule and edit rule use a combobox-style container field: type a name or choose from dropdown.
  • Runtime typography is normalized to a 15px base with larger tokens reserved for explicit titles.
  • Settings rows use a fixed control column so select values and action buttons do not drift by content width.
  • Default container strategy display uses bytab.
  • Default container strategy moved from raw templates to named modes.
  • Auto-created default containers use short domain-prefixed sequence names (github-01, youtube-01) instead of timestamp-like long names.
  • Rule and container tables now project from data through filter/sort into rendered rows.
  • Container list sorts by container name with No Container last.
  • Rule rows resolve current container names from identity state, so renamed containers are reflected in the rule table.
  • Row metrics, nav icon sizing, container/rule icon sizing, switch states, radius tokens, and reduced-motion handling were aligned with the smoke UI.
  • Rule transfer stays user-activated through Settings and opens the import subpage rather than hidden backend behavior.
  • Rule export CSV now uses portable host,containerName,enabled rows; import paste uses the same format and resolves names to the current profile's identities.
  • Theme and container defaults were synced through handbook schema/docs surfaces.
  • Private extension identity was pinned to containtab@woolkingx.local.
  • Firebox/Lacuna policy and bundled XPI identities were aligned to the canonical private ID.
  • check-extension-identity now reads the package version when finding the release zip.
  • Runtime popup tests expanded around rule flow, container flow, settings flow, help, filters, import, delete confirmations, and smoke parity.
  • Build/release docs now describe file-install packages rather than the original add-on update chain.

Fixed

  • Default container naming now uses <domain>-01 style sequence numbers instead of long timestamp-like names.
  • Default container lifetime creation uses the configured lifetime path.
  • Settings writes now use await+rollback behavior on failure.
  • Reset applies the active theme after preferences are restored.
  • Bottom nav icon height is locked so image/SVG icons do not resize the nav.
  • Container lifecycle cleanup is gated by owner preference and no longer relies on unsafe name regex cleanup.
  • Tab lifecycle no longer cleans rules or container metadata through unsafe broad startup assumptions.
  • Host input Enter now passes the correct lifetime toggle path when adding a rule.
  • Rule import feedback and user activation were restored after runtime UI changes.
  • Rule import remains backward-compatible with old cookieStoreId rows while preserving No Container round trips without exposing profile-local IDs in new exports.
  • Rule deletion now uses in-popup confirmation.
  • Rule lifetime controls, rule icons, and container icon metadata are aligned with the popup smoke model.
  • Popup filters update on every input event, not only Enter.
  • Container filter matches container name only; rule filter matches both container and rule pattern.
  • Container rename no longer leaves stale names in the rule table.
  • Create container and edit container behavior are separated; edit updates existing identity, create creates a new identity.
  • No Container is no longer prefilled in add-rule container input.
  • Settings select values no longer truncate due to content-width sizing.
  • Dialog/action button typography was reduced back to the 15px base scale.
  • Runtime/source/smoke drift that previously allowed modal/subpage and typography regressions is now blocked by gates.
  • Lacuna packaging identity drift is documented as a known issue; source and bundled policy IDs are aligned to the canonical extension ID.
  • check-extension-identity no longer hardcodes the old package zip version.
  • Sass deprecation warnings and legacy JS API usage were cleaned up in the build path.

Documentation

  • Handbook now treats the smoke prototype as the UI behavior truth surface.
  • UI popup docs, style docs, proof gates, schemas, logic flow, bug notes, decisions, and index navigation were updated for the runtime UI projection.
  • Schema docs now cover container naming, global preferences, default container strategy, container extension metadata, assignment decisions, fingerprint config, tab state, and runtime architecture.
  • Lacuna storage identity is documented as a known issue: same-ID installs should preserve storage, but formal signing / UUID / profile namespace behavior still needs future live-profile proof.
  • CHANGELOG and README were refreshed for the 0.3.0 private release and the 0.2.2 to 0.3.0 change line.

Verification

  • npm run check:ui-design
  • npm test -- src/ui/__tests__/popup-smoke-parity.test.js src/ui/__tests__/popup-ui.test.js
  • npm run lint
  • npm run build
  • npm run check:extension-identity
  • web-ext-artifacts/containtab-0.3.0.zip readback: manifest version 0.3.0, extension ID containtab@woolkingx.local.

Asset

  • ZIP SHA256: 8c6a8109ec23a21f54e12de13d32122de6db6039d9103e5e8fd713186e4dcbec

v0.2.2

Choose a tag to compare

@woolkingx woolkingx released this 12 Apr 01:56

What's Changed

Build

  • Declare type: module in package.json (ESM)
  • Rename webpack configs → webpack.{common,dev,prod}.cjs
  • Add resolve: { fullySpecified: false } to babel-loader rule
  • Eliminate MODULE_TYPELESS_PACKAGE_JSON warning

Tests

  • Add @vitest/coverage-v8 reporter
  • Test count: 232 → 362

v0.2.0

Choose a tag to compare

@woolkingx woolkingx released this 09 Apr 08:14

What's New

Fixed

  • Empty cookieStoreId silently skipped rule match — now creates container on match
  • In-memory tab count lost on restart — replaced with live browser.tabs.query
  • Popup height collapsed in Firefox — uses window.screen.height / 3

Changed

  • Unified test runner: jest → vitest (232 tests)
  • Rule input: container dropdown → text input for container name
  • Help: inline toggle → dedicated sub-screen
  • Rule list sorted by container name, then host
  • Documentation reduced from 11,488 to 1,837 lines (-84%)

Added

  • Lifetime toggle button on each rule row (temp/keep)
  • Pure functions extracted to core: isRedirectable(), canNavigateTo(), targetContainer(), hasRules()
  • ETP Standard mode recommendation in README

Removed

  • Dead code: ExtendedURL/, filterByKey, v2/
  • jest, babel-jest, jest-environment-jsdom dependencies

Full Changelog: v0.1.2...v0.2.0

v0.1.2

Choose a tag to compare

@woolkingx woolkingx released this 08 Apr 05:50

Fixed

  • Build pipeline: npm run build now passes lint + test + webpack + web-ext
  • .gitignore: exclude dist/ from eslint scan
  • Core tests: removed import from 'vitest' (jest uses globals)
  • HostStorage test: fixed API call to match rewritten get() signature
  • Jest config: exclude .cleanup/ from test discovery
  • Icon scaled to fill canvas (no more oversized padding)

v0.1.1

Choose a tag to compare

@woolkingx woolkingx released this 08 Apr 05:21
  • New 3D isometric icon (2x2x2 cube grid, 4 container colors)
  • Popup width auto-adapts to content
  • SCSS: CSS custom properties + dark mode (Firefox Proton palette)
  • System font stack

v0.1.0 — containTAB initial release

Choose a tag to compare

@woolkingx woolkingx released this 08 Apr 04:49

Fork of Containerise 3.9.0, full rewrite.

Highlights

  • Pure function core (matcher, lock, naming, url) — 54 tests
  • Drill-down popup UI (Rules / Containers / Settings)
  • One-tab-one-world isolation model
  • Dark mode via prefers-color-scheme
  • Temporary container lifecycle (untilLastTab)

See CHANGELOG.md for details.