All checks were successful
ci / fast (linux) (push) Successful in 6m46s
Install BMAD workflow framework with agent commands and templates. Create product brief, PRD, project context, and architecture decision document covering networking/persistence strategy, JS engine evolution path, threading model, web_api scaling, system integration, and tab/process model. Add generated project documentation (architecture overview, component inventory, development guide, source tree analysis). Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
6.7 KiB
6.7 KiB
Component Inventory — rust_browser
Generated: 2026-03-05 | Scan Level: Deep
Crate Inventory by Layer
Layer 0: Foundation
| Crate | Files | Key Exports | Purpose |
|---|---|---|---|
| shared | 3 | Point, Size, Rect, Color, NodeId, StyleId, LayoutId, BrowserUrl, EdgeSizes, CornerRadii, FontStyle, FontWeight, ImageId |
Common types, geometry primitives, ID types, error handling |
Layer 1: JavaScript Engine
| Crate | Files | Key Exports | Purpose |
|---|---|---|---|
| js_parser | 35 | JsParser, Tokenizer, Program, Statement, Expression, Token, ParseError |
JavaScript tokenization and AST parsing |
| js_vm | 48 | JsVm, JsValue, Interpreter, Environment, VmConfig, HostEnvironment, JsFunction, RuntimeError, OutputSink |
JavaScript interpreter/virtual machine |
| js | 1 | JsEngine, JsError (+ re-exports from js_parser, js_vm) |
High-level JS engine facade |
Layer 1: Document/Style Pipeline
| Crate | Files | Key Exports | Purpose |
|---|---|---|---|
| html | 9 | HtmlParser (parse, parse_into, parse_fragment, tokenize) |
HTML5 tokenization and tree building |
| dom | 10 | Document, Node, NodeKind, ElementData, Attribute, TreeIterator |
Arena-based DOM tree representation |
| css | 36 | CssParser, CssTokenizer, Stylesheet, CssValue, Declaration, Rule, Selector, Unit, FontFaceRule |
CSS parsing, tokenization, data structures |
| selectors | 17 | SelectorEngine, MatchedRule, Selector, SimpleSelector, Combinator, PseudoClass, PseudoElement, Specificity, AncestorFilter |
CSS selector matching, specificity, cascade |
| style | 34 | StyledDocument, StyleContext, ComputedStyles, Display, Position, Float, Clear, BoxSizing, Overflow, TextAlign, VerticalAlign |
Style computation: cascade, inheritance, UA defaults |
Layer 1: Layout & Rendering
| Crate | Files | Key Exports | Purpose |
|---|---|---|---|
| layout | 60 | LayoutEngine, LayoutNode, TextMeasurer, FixedWidthTextMeasurer, ProportionalTextMeasurer, FontMetrics |
Layout engine: block, inline, flex, table, positioned |
| display_list | 13 | DisplayListBuilder, DisplayItem (SolidRect, Border, Text, Image, BackgroundImage, LinearGradient, BoxShadow, PushClip, PopClip), DisplayList |
Backend-agnostic painting commands |
| render | 14 | Renderer, CpuRasterizer, PixelBuffer |
CPU rasterization of display lists |
| graphics | 1 | GraphicsBackend |
Graphics backend abstraction (placeholder) |
Layer 1: Infrastructure
| Crate | Files | Key Exports | Purpose |
|---|---|---|---|
| net | 7 | NetworkStack, HttpLoader, FileLoader, DataUriLoader, Response, LoadResult, LoadId |
HTTP/HTTPS, file://, data: URI loading with caching |
| image | 1 | ImageStore, ImagePipeline, DecodedImage |
Image decoding: PNG, JPEG, GIF, WebP, SVG |
| fonts | 5 | FontProvider, FontRequest, TextMetrics, ScaledFontMetrics, GlyphMask |
Font loading, metrics, text measurement, rasterization |
| storage | 1 | StorageEngine |
Persistent storage (placeholder) |
| platform | 4 | PlatformContext, EventLoop, Window, WindowConfig, WindowEvent, KeyCode, MouseButton, Modifiers |
OS window/event loop abstraction (winit + softbuffer) |
| web_api | 14 | WebApiFacade, EventTarget, EventListenerRegistry, TaskQueue, MicrotaskQueue, PromiseRegistry, DispatchResult |
JS↔DOM bridge, events, scheduling, promises |
Layer 2: Browser Runtime
| Crate | Files | Key Exports | Purpose |
|---|---|---|---|
| browser_runtime | 5 | BrowserRuntime, BrowsingContext, Navigation, NavigationState, NavigationId |
Tab management, navigation lifecycle, history |
Layer 3: Application Shell
| Crate | Files | Key Exports | Purpose |
|---|---|---|---|
| app_browser | 31 | main(), run_windowed_mode(), run_render_mode() |
Desktop binary: CLI, pipeline orchestration, browser chrome, hit testing, form handling |
Application Shell Components (app_browser)
| Module | Purpose |
|---|---|
| main | CLI argument parsing, mode selection |
| app_state | Mutable browser state (page, scroll, focus) |
| chrome | Browser UI chrome (URL bar, status) |
| pipeline | HTML → styled DOM → layout → display list → render |
| event_handler | User input dispatch (keyboard, mouse) |
| render_mode | Offline rendering orchestration |
| net_utils | URL loading helpers |
| hit_test | Click target resolution from display list |
| form | Form input state and handling |
| focus_outline | Keyboard focus visualization |
Display List Item Types
| Item | Purpose |
|---|---|
SolidRect |
Colored rectangle fill |
Border |
Border edge rendering (4 sides) |
Text |
Rendered text with font/color/position |
Image |
Raster image content |
BackgroundImage |
Background image with position/repeat/size |
LinearGradient |
CSS linear gradient fill |
BoxShadow |
Drop shadow and inset shadow |
PushClip / PopClip |
Clipping region stack |
CSS Property Coverage
The style system handles properties across these categories:
| Category | Examples |
|---|---|
| Box Model | margin, padding, border, width, height, box-sizing |
| Display/Flow | display, position, float, clear, overflow |
| Text | font-family/size/weight/style, text-align, text-transform, line-height, white-space |
| Color/Background | color, background-color/image/position/repeat/size, opacity |
| Flexbox | flex-direction, justify-content, align-items, flex-grow/shrink/basis |
| Table | table-layout, border-collapse, border-spacing |
| Visual | visibility, z-index, box-shadow, border-radius |
| CSS Variables | Custom properties with var() substitution |
See docs/CSS2.1_Implementation_Checklist.md for detailed property-level status.
JavaScript Feature Coverage
The JS engine supports:
| Category | Features |
|---|---|
| Values | undefined, null, boolean, number, string, object, array, function, symbol (partial) |
| Operators | Arithmetic, comparison, logical, bitwise, assignment, typeof, instanceof |
| Control Flow | if/else, for, while, do-while, switch, for-in, for-of, try/catch/finally |
| Functions | Declarations, expressions, arrow functions, closures, rest/spread, default params |
| Objects | Literals, methods, getters/setters, computed properties, destructuring |
| Built-ins | Math, JSON, Array methods, String methods, Object methods, Date, RegExp, Map, Set |
| ES6+ | let/const, template literals, classes, promises, iterators, generators (partial) |
See docs/js_feature_matrix.md for detailed feature-level status.