Skip to content

v2.3.1 — zero-JS framework: full utility/component library, docs site, audit repair (browser-verified) - #5

Open
hesam-oxe wants to merge 10 commits into
TaniCSS:mainfrom
hesam-oxe:fix/v2.3.1-audit-bugs
Open

v2.3.1 — zero-JS framework: full utility/component library, docs site, audit repair (browser-verified)#5
hesam-oxe wants to merge 10 commits into
TaniCSS:mainfrom
hesam-oxe:fix/v2.3.1-audit-bugs

Conversation

@hesam-oxe

Copy link
Copy Markdown
Contributor

Tani v2.3.1 — complete framework + full bug-audit repair

Brings the framework from v1.x to v2.3.1: a zero-JS, zero-build, utility-first CSS library with OKLCH colors, dark mode, RTL via logical properties, container queries and scroll-driven animations — followed by a complete bug audit in which every fix was verified in a real browser (Chromium).

Verification: Selenium smoke suite — 28/28 PASS (computed styles, breakpoints, dark-mode toggle, RTL mapping, console-error check) plus 18 extra computed-style probes for the new fixes.


What's included (release by release)

feat: v2.1 — utility + component library

12-col grid, full flexbox helpers, token-driven spacing scale, typography scale, full OKLCH palette utilities, shadows/glows, transforms & transitions, z-index/overflow/opacity/inset utilities.

feat: v2.1.1 — audit fixes

Responsive navbar breakpoint fix, anchor-tooltip wiring, scoped prose constraint, invalid-CSS corrections, list-group / input-group / btn-close, min-width responsive prefix system (sm/md/lg/xl/xxl-).

feat: v2.2.0 — premium polish

Zero-JS Popover (4 directions, glass/gold), Carousel (scroll-snap + marquee autoplay), animations library (all reduced-motion safe), container-query utilities, subgrid, glassmorphism/gold tokens, gradient text, 3D utilities.

feat: v2.3.0 — completeness release

Logical spacing (ms/me/ps/pe-*), full numeric sizing scale (1–96 + size-*), filters & backdrop-filters, per-axis transforms, transitions/durations/eases, gradients with from/via/to-*, form validation states, floating labels, offcanvas (4 sides), striped/animated progress, extended animation set, responsive display utilities.

fix: browser-verified v2.3.0 corrections

First smoke-test round caught 5 real bugs (filters, transforms, animations, figure, validation, progress, offcanvas, responsive display).

fix: v2.3.1 — THIS PR's core — full audit repair

  • 🐛 Broken features repaired: missing @keyframes pulse; gradient fallbacks + working via-*; .drop-shadow consumed by .filter; standalone backdrop-blur-* restored (still composable)
  • 🐛 Missing tokens defined: --text / --text-muted
  • ✨ Real zero-JS wiring: navbar checkbox toggle, offcanvas checkbox + backdrop, toast dismiss via :has()
  • 🧹 Deduplicated conflicting sections (forms/modal/pagination/progress/navs each existed 2–3×; v1 !important spacing block removed)
  • 📐 One monotonic spacing scale shared by base + responsive-prefixed utilities
  • ♻️ ~800 lines of dead rules removed; RTL-safe logical divide-*; non-colliding data-tooltip-pos; tabs ×6; .display-1..3

Docs site (zero dependencies)

Interactive playground, live-searchable utility reference (2800+ classes extracted from source), 10 downloadable templates, learning path + quiz, search, TOC, prev/next pager, syntax highlighting, copy buttons, mobile nav.

Tooling & tests (new)

  • tools/minify.py — string-aware CSS minifier (preserves calc() spacing); min build regenerated from source
  • tests/smoke_selenium.py — portable computed-style test suite (__file__ root, TANI_CHROME/TANI_CHROMEDRIVER overrides) with committed visual screenshots
  • CONTRIBUTING.md added

Metric Value
Files changed 22
Lines +6,551 / −8,861
Raw CSS ~222KB → min ~183KB → gzip ~32KB
Tests 28/28 PASS on Chromium

No breaking renames: all pre-existing classes keep working (additive policy documented in CONTRIBUTING.md).

hesam-oxe and others added 10 commits August 15, 2026 07:04
- Added full 12-col grid, flex helpers, spacing/typography scales
- Added zero-JS components: Tabs, Tooltips, Switch, Skeletons, Avatars, Timeline, Steps
- Fixed broken dialog.modal, container-fluid, dark-mode toggles
- Added universal focus-visible, prefers-contrast, print styles
- Removed 708 important flags — utilities now win by cascade order
- OKLCH color palettes for bg/text/border
- Gzip: 14.4KB (was 15KB)
- Min: 80.7KB raw
- Fix navbar-toggler never visible on mobile (couldn't open menu)
- Fix anchor tooltips (missing anchor-name on .anchor)
- Scope global p max-width to .prose instead of all paragraphs
- Fix invalid .list-disc declaration
- Renumber mislabeled utility sections (12-19 -> 41-48)
- Add per-axis spacing (mt-6..py-px), full opacity & gray color scales
- Add ring/divide/space/aspect/object/cursor/select/pointer/list/inset/
  backdrop/transition/duration/line-clamp utilities
- Add list-group, input-group, btn-close, offcanvas components
- Add min-width responsive system (sm/md/lg/xl/xxl)
- Rebuild dist/css/tani.min.css (was empty)
…rid, Premium Polish

- Popover (zero-JS): hover/focus, 4 directions, glass + gold variants, arrows, a11y
- Carousel (zero-JS): scroll-snap + anchor arrows/dots/touch, carousel-cols-2/3/4,
  autoplay marquee variant with pause-on-hover
- Animations: animate-fade-in/slide-up/scale-in/pulse/float/bounce/spin/shimmer,
  hover-lift 3D, marquee, typewriter (all honor prefers-reduced-motion)
- Container queries: .cq + .cq-sm/md/lg/xl-* utility classes
- Subgrid: grid-subgrid / grid-cols-subgrid / grid-rows-subgrid
- Premium polish: glass/glass-dark/glass-strong, gold tokens + gold-* utilities,
  text-gradient (brand/cool/sunset), glow-lg/xl/gold, shadow-colored, 3D tilt/rotate
- index.html: live examples + code for every new feature
- README: v2.2.0 changelog, updated comparison table, migration guide
- Rebuilt dist/css/tani.min.css; bumped version to 2.2.0
…ency

- New assets/docs.css: dark-default theme, gold accent, glassmorphic sidebar,
  sticky header, code blocks w/ copy, live preview demos, TOC, pager, responsive
- New assets/docs.js: theme toggle (dark default + light), client-side search,
  copy-to-clipboard, self-contained syntax highlighter (html/css), mobile menu,
  TOC + active-nav via IntersectionObserver, prev/next pager
- Rebuilt index.html: Getting Started, Core Concepts, Utilities, all Components
  (incl. Popover, Carousel, Animations, CQ, Subgrid), Responsive, RTL & Dark,
  Customization, Migration, FAQ, Changelog — every feature with live demos
- Fixed highlighter token-restore bug (placeholder now ASCII-safe)
- Verified: anchors resolve, JS runs without throwing, highlighter preserves text
…debar, search, TOC, live demos, copy buttons, prev/next, mobile nav
…earning path, extra pages

- Playground: editable HTML/CSS + live iframe preview, device breakpoints,
  design-token color pickers, spacing & typography visualizers
- Utility Reference: all 2075 classes parsed from tani.css, fuzzy search,
  category filter, printable quick-reference card
- Templates: 10 page templates (landing, dashboard, blog, admin, login,
  pricing, portfolio, docs, ecommerce, 404) with live preview + download
- Learn: beginner tutorial, advanced theming guide, scored quiz
- Extra pages: 404, contributors, license, about
- Framework: added gold buttons/text/border, sidebar-link, brand,
  carousel-cols-1 utilities; rebuilt tani.min.css
- Perf: debounced header + reference search
- Expanded FAQ; glass/gold nav polish

Tested: highlighter preserves text, reference filter, category filter,
template download decode, quiz scoring, JS runs without errors,
all anchors resolve, all classes exist in framework, HTML well-formed.
…a parity)

- Logical spacing ms/me/ps/pe (RTL-safe)
- Full sizing scale: numeric w-/h-*, size-*, min/max-w/h, aspect ratios
- Filters + backdrop-blur (combinable var stack): blur, brightness, contrast,
  grayscale, invert, saturate, sepia, hue-rotate
- Transforms: per-axis translate/rotate/scale, skew, origin-*, transform-gpu
- Transitions: property variants + full duration/delay/ease scales
- Interactivity: appearance-none, resize, select-*, will-change-*, cursor-*, pointer-events-*
- Typography scale, backgrounds/gradients, border styles + divide, responsive display
- Form validation is-valid/valid-feedback, figure, floating labels, offcanvas
  (4 sides + backdrop), progress striped/animated, table variants
- Animations library (ping, flash, heart-beat, fade/zoom/slide, shake, float, spin)
- Docs: refreshed 2824-class reference, v2.3.0 changelog + demo section, CDN bump
- Comprehensive tests: CSS integrity, feature presence, RTL/dark/a11y/reduced-motion, docs parity
- Responsive display utilities (.d-md-block etc.) were not wrapped in
  min-width media queries, so they applied at all widths. Now correctly
  scoped and overridable (base .d-none !important no longer blocks them).
- skew-* used the unsupported individual 'skew' property; switched to
  transform: skewX()/skewY() (composes with translate/rotate/scale).
- Dark mode never defined --surface, leaving .offcanvas background invalid;
  --surface now declared in :root and overridden in both dark contexts.
- Added default .blur and .backdrop-blur (no-suffix) classes (only suffixed
  variants existed).
- Docs: v2.3.0 demo section used bare 'flex' (-> d-flex); changelog notes fixes.

Tests: add tests/visual/all-components.html (all new components) + tests/
smoke_selenium.py (Selenium + Chromium) asserting computed styles, responsive
breakpoints via CDP, dark-mode toggle, RTL logical spacing, console errors,
and screenshots. 28/28 smoke checks pass; 5/5 docs JS tests pass.
Framework (dist/css/tani.css, -700 lines):
- add missing @Keyframes pulse (animate-pulse-slow was a silent no-op)
- gradients: always-valid from/to fallbacks + working via-* via color-mix
- .drop-shadow consumed by .filter chain (+ empty default declared)
- restore standalone backdrop-blur-* while keeping .backdrop composition
- define --text / --text-muted tokens (brand, sidebar-link, lead, floating
  labels, figure captions were silently unstyled)
- real zero-JS wiring: navbar-toggle-check opens mobile menu, offcanvas-check
  drives panel+backdrop, toast dismiss via :has(.toast-hide-check:checked)
- dedupe conflicting sections (forms/modal/pagination/progress/navs/tabs,
  v1 !important spacing block, tripled legacy responsive helpers)
- unify spacing scale: mt-3 == lg-mt-3 == 0.75rem, monotonic 0..3rem
- accordion rotated-minus glitch, breadcrumb styling regression,
  toggler icon double-background, brand margin, logical divide-*,
  d-xxl-* outside media query, data-tooltip-pos attribute, tabs x6,
  .display-1..3, --tw-* vars scoped to :root

Docs:
- docs.js search: fix malformed #section#anchor hrefs + smooth scroll
- index.html: v2.3.1 version select, rem-based spacing table, dark-mode
  class in quick start, skip-link, tooltip demo, CDN tag bump
- contributors.html: replace fabricated roster with real authors
- README: unwrap code fence, honest sizes (183KB min/32KB gzip), zero-JS
  navbar/modal/offcanvas/toast examples, corrected comparison table
- add CONTRIBUTING.md (was a dead link)

Tooling/tests:
- tools/minify.py: string-aware minifier (preserves calc() spaces);
  tani.min.css regenerated from source
- smoke_selenium.py: portable paths (__file__ root, TANI_CHROME/
  TANI_CHROMEDRIVER overrides) instead of hardcoded /home/kali paths

Verified: tests/smoke_selenium.py 28/28 PASS on Chromium + 18 extra
computed-style probes for the new fixes.
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