All checks were successful
ci / fast (linux) (push) Successful in 7m14s
Add support for the attr() function in CSS content property values,
enabling patterns like `content: " (" attr(href) ")"` on ::before/::after
pseudo-elements. The implementation parses attr() at CSS parse time into
ContentValue::Items, then resolves attribute references against the DOM
during pseudo-element style computation, converting to ContentValue::String
before layout sees it.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
7.7 KiB
7.7 KiB
Investigation: FreeBSD.org Homepage
URL: https://www.freebsd.org Last investigated: 2026-03-10
Summary
The FreeBSD homepage renders with excellent fidelity. All previously reported issues have been resolved. The page shows proper multi-column float layout, horizontal navigation bar, themed colors (#990000 dark red headings, #666666 nav text), styled buttons with rounded corners and colored backgrounds, the beastie mascot background image, the grey news container with four columns (Latest News, Upcoming Events, Press, Security Advisories), and a correctly positioned footer. The CSS attr() function (F-012) is now supported after implementation in this session.
Findings
F-001: CSS @import rules not supported
- Status: Fixed (2026-03-09)
- Found: 2026-03-09
- Category: CSS Support
- Severity: High
- Description: The main stylesheet
fixed.cssconsists entirely of@importstatements that pull in 6 sub-stylesheets. The engine now fetches and applies all imported stylesheets correctly. - Evidence: Render log shows fetching of
global.css,layout.css,text.css,navigation.css,table.css, andiefixes.css. All CSS rules are applied (colors, layout, backgrounds).
F-002: Flex item sizing causes header overflow
- Status: Fixed (2026-03-09)
- Found: 2026-03-09
- Category: Layout
- Severity: High
- Description: Flex content sizing for replaced elements (images) now respects specified dimensions from HTML width/height attributes, falling back to intrinsic size only when no specified size exists. The header donate/search section is now visible within the viewport.
- Evidence: "Donate" text now renders at x=674 (within 800px viewport). The logo wrapper div correctly sizes based on the img width="457" attribute rather than the 914px intrinsic width.
F-003: @font-face rule parsing failure
- Status: Fixed (2026-03-09)
- Found: 2026-03-09
- Category: CSS Support
- Severity: Medium
- Description: FreeBSD's font-awesome-min.css had
font-weightandfont-styledescriptors outside the@font-faceblock (after the closing}). The parser now handles stray}tokens at the top level and during selector parsing, recovering gracefully instead of consuming subsequent rules as malformed selector text. The@font-facerule itself was already parsed correctly. - Evidence: No selector parse warnings in render log. The
.faand subsequent FontAwesome rules are now parsed correctly.
F-004: Navigation renders as vertical bulleted list instead of horizontal bar
- Status: Fixed (2026-03-09)
- Found: 2026-03-09
- Category: Layout
- Severity: High
- Description: The
<nav>element now renders as a compact horizontal navigation bar with proper float-based layout. All top-level items (Home, About, Get FreeBSD, Documentation, Community, Developers, Support, Foundation) display horizontally with correct styling. - Evidence: Nav element (node #93) has content height 28.8px with items arranged horizontally. Text rendered in #666666 bold verdana at 14.4px, matching navigation.css rules.
F-005: Multi-column float layout not applied to content sections
- Status: Fixed (2026-03-09)
- Found: 2026-03-09
- Category: Layout
- Severity: High
- Description: Float-based multi-column layouts now work correctly. The feature area shows three columns (left content, middle with beastie, right with shortcuts/releases), and the news container has four columns. Clear properties work to separate sections.
- Evidence:
#frontfeatureleft(node #324) has width 216 (~30% of 720). Beastie background image renders at x=256. News columns appear at y=493 with proper column widths.
F-006: Body background image not rendered
- Status: Fixed (2026-03-09)
- Found: 2026-03-09
- Category: Display
- Severity: Medium
- Description: The body background image (hdr_fill.png) now renders correctly with
repeat-xacross the top of the page. - Evidence: Display list shows
BackgroundImage rect=(0, 0, 800, 600) image_id=img#19 pos=(Zero,Zero) repeat=RepeatX.
F-007: Container width and centering not applied
- Status: Fixed (2026-03-09)
- Found: 2026-03-09
- Category: Layout
- Severity: Medium
- Description: The
#containerdiv now has proper width (90%) and centering via auto margins. - Evidence: Container div (node #61) has content width 720 with margin 0 40 0 40, correctly centered in the 800px viewport.
F-008: Heading and link colors use defaults instead of themed values
- Status: Fixed (2026-03-09)
- Found: 2026-03-09
- Category: Display
- Severity: Low
- Description: Headings and links now render with the correct themed colors.
- Evidence: H1 "The FreeBSD Project" renders in #990000 at 19.2px bold. Nav links render in #666666 bold. Body links render in #990000 with underlines.
F-009: "New to FreeBSD?" and "Download FreeBSD" buttons unstyled
- Status: Fixed (2026-03-09)
- Found: 2026-03-09
- Category: Display
- Severity: Low
- Description: The
.frontgetroundboxbuttons now display with correct styling: rounded corners (15px radius), colored backgrounds (#eeeeee for "New to FreeBSD?", #facc2e yellow for "Download FreeBSD"), and bold dark red text. - Evidence: Display list shows
SolidRect rect=(466, 175.96, 325, 44.96) color=#eeeeee radii=(15,15,15,15)andSolidRect rect=(466, 230.92, 325, 44.96) color=#facc2e radii=(15,15,15,15).
F-010: News/Events/Press/Security columns missing grey background
- Status: Fixed (2026-03-09)
- Found: 2026-03-09
- Category: Display
- Severity: Low
- Description: The news/events container now has the correct grey background.
- Evidence: Display list shows
SolidRect rect=(40, 493.54, 720, 512.47) color=#eeeeee.
F-011: overflow:hidden not creating BFC to contain floats
- Status: Not a Bug
- Found: 2026-03-09
- Resolved: 2026-03-09
- Category: Layout
- Severity: N/A
- Description: Originally reported as
#contenthavingoverflow: hiddenbut height=0. Investigation revealed the actual FreeBSD CSS (layout.css) sets#content { clear: both; display: block; }— there is nooverflow: hidden. Since#contentdoes not establish a BFC, its height=0 is correct per CSS 2.1 spec (all meaningful children are floated and thus out-of-flow). The#frontnemscontainerhasdisplay: inline; float: left; width: 100%which is correctly blockified todisplay: blockby CSS 2.1 §9.7 and positioned as a float. The page renders correctly:clear: bothon the footer pushes it below all floats. - Evidence: FreeBSD
layout.csscontains#content { clear: both; display: block; }— no overflow property. BFC float containment was verified working correctly via 7 regression tests incrates/layout/src/tests/bfc_float_containment_tests.rs.
F-012: CSS content: attr() function not supported
- Status: Fixed (2026-03-10)
- Found: 2026-03-09
- Category: CSS Support
- Severity: Low
- Description: The CSS
content: attr(title)declaration inglobal.csspreviously failed to parse. This has been resolved by implementing fullattr()function support in the CSS parser and style computation pipeline, including content lists likecontent: "prefix" attr(name) "suffix". - Evidence: The
parse_content_valuefunction now handlesattr()tokens, producingContentValue::Itemswhich is resolved against DOM attributes during pseudo-element style computation. No parse warnings forcontent: attr(title)in the current render.
Stats
| Status | High | Medium | Low | Total |
|---|---|---|---|---|
| Open | 0 | 0 | 0 | 0 |
| Fixed | 4 | 3 | 4 | 11 |