Documentation
Two kinds of writing. The guides say how to do a thing. The decisions say why Janela is shaped
the way it is, which is the part most libraries leave out and the part you want before you
change something. Every page here is a file that ships inside the gem, rendered rather than
restated, so it cannot drift from what you installed.
Decisions
63 decisions, in the order they were made. An accepted one is
never rewritten: a later decision supersedes it and says so, so the record stays honest.
-
001
Built to Be Forked
Accepted
2026-09-11
-
002
Measures and Dimensions over Ransack
Accepted
2026-09-13
-
003
Cross-filtering with Turbo Frames
Accepted
2026-09-13
-
004
Charts and JavaScript Delivery
Accepted
2026-09-15
-
005
Pane URLs and the Mount Path
Accepted
2026-09-15
-
006
Time Dimensions with Groupdate
Accepted (the click source paragraph is superseded by ADR 045)
2026-09-15
-
007
Ordering and Limits
Accepted
2026-09-15
-
008
Dashboard Filters in the Page URL
Accepted
2026-09-15
-
009
Snapshots
Accepted
2026-09-15
-
010
Agent Guidance Ships, the Agent Waits
Accepted
2026-09-15
-
011
Panes Do Not Render in the Host Layout
Accepted
2026-09-15
-
012
Frames and Panes Are Data
Accepted
2026-09-15
-
013
Naming and Addressing Frames
Accepted
2026-09-15
-
014
Corrections Before Frames Are Built
Accepted
2026-09-15
-
015
How Breaking Change Is Communicated
Accepted
2026-09-16
-
016
The Styling Vocabulary
Accepted
2026-09-16
-
017
Janela Owns No Data Store
Accepted
2026-09-16
-
018
A Table Is the Universal Renderer
Accepted
2026-09-16
-
019
A Created Frame Asks the Host Who Owns It
Accepted
2026-09-16
-
020
Formatting Belongs to the Measure
Accepted
2026-09-16
-
021
A Check Has a Name, and a Host Can Silence It
Accepted
2026-09-16
-
022
A Host's Route Helpers Work Inside the Engine
Accepted
2026-09-16
-
023
Vitral Is a Theme, Not the Stylesheet
Accepted
2026-09-16
-
024
Selecting More Than One Value
Accepted (the exclusive null group paragraph is superseded by ADR 049)
2026-09-16
-
025
Janela Bounds What a Filter Can Ask For
Accepted
2026-09-17
-
026
A Renderer Is the Seam, and HTML Comes First
Accepted
2026-09-18
-
027
The Gallery Is a Host Page, Built from the Gem's Helpers
Accepted
2026-09-18
-
028
The Predicate List ADR 025 Named Was Not Quite Right
Accepted
2026-09-18
-
029
A Pane's Frame Is Identified by Who It Is, Not by What It Shows
Accepted
2026-09-18
-
030
A Pane's src Belongs to Turbo, So a Host Talks to the Frame
Accepted
2026-09-18
-
031
A Subclass Inherits the Dashboard Its Parent Declared
Accepted
2026-09-19
-
032
Janela Will Not Read a Model It Has Not Been Told How to Scope
Accepted
2026-09-20
-
033
A Snapshot Is Told Who Owns It, Because There Is No Request to Ask
Accepted
2026-09-21
-
034
Janela Will Not Freeze a Scope the Host Has Not Named
Accepted
2026-09-21
-
035
A Check Does What Janela Does, or It Says What It Saw
Accepted
2026-09-22
-
036
Janela Publishes What a Theme May Target, and Vitral Is Only One
Accepted
2026-09-22
-
037
1.0 Means the Surface Stops Moving, Not That Janela Is Finished
Accepted
2026-09-23
-
038
A Ratio Is a Measure of Its Own, Stored as a Fraction and Read as a Percentage
Accepted
2026-09-24
-
039
A Pane Can Hold Words, and Only Code Writes Markup
Accepted
2026-09-24
-
040
A Host Can Fix a Frame's Filter, and No Click Removes It
Accepted
2026-09-24
-
041
A Host Finds Its Frame by Owner and Key
Accepted
2026-09-24
-
042
A Chart's Title Is a Figcaption, and the Canvas Points to It
Accepted
2026-09-28
-
043
A Frame's Default Filter Names the Model It Narrows
Accepted
2026-09-28
-
044
A Categorical Dimension Can Say What It Excludes, Not Only What It Includes
Accepted
2026-09-29
-
045
Clicking a Time Bucket Filters the Frame to Its Range
Accepted
2026-09-29
-
046
A Ring Is Server Drawn SVG, and a Palette Is Eight Fixed Colours
Accepted
2026-09-29
-
047
A Chart's Height Is One of Five Steps, and Unset Changes Nothing
Accepted
2026-09-30
-
048
A Frame Can Be Told to Refresh, and Janela Never Decides When
Proposed
2026-09-30
-
049
The Null Group Is One More Value in a Selection
Accepted
2026-09-30
-
050
A Single Value's Prominence Is One of Three Steps, and Unset Changes Nothing
Accepted
2026-09-30
-
051
A Table Can Carry Companion Columns, and a Fact Is Shown Only When It Is Shared
Accepted
2026-09-30
-
052
Two People Cut Releases, Reports Go Private, and Support Is Best Effort
Accepted
2026-09-30
-
053
An Agent Reaches Janela Through Tools the Host Scopes, and Janela Registers None
Accepted
2026-10-02
-
054
A Chart Reads Numbers the Way Its Measure Formats Them
Accepted (the sentence that a line ignores value_labels is superseded by ADR 062)
2026-10-06
-
055
A Category Pane Can Be Sorted by Its Measure Either Way, or by Its Label
Accepted
2026-10-13
-
056
The Demo Counts Its Own Visits, and an Agent Arranges the Dashboard
Accepted
2026-10-13
-
057
A Host Is Told About the Agent Tools, and a Generator Sets Them Up
Accepted
2026-10-14
-
058
The Deployed Demo Is Reached Over SSH, and Its Visits Frame Survives a Reset
Accepted
2026-10-14
-
059
A Host Can Tell Janela's Own Pages That Its Layout Draws Charts
Proposed
2026-10-14
-
060
The Demo Tells Search Engines What It Is, and Shows Its Own Adoption
Proposed
2026-10-14
-
061
The Demo Speaks Brazilian Portuguese Under a Prefix, and the Gem Stays English
Proposed
2026-10-14
-
062
A Time Pane Can Accumulate, and Carry More Series on Two Axes
Accepted
2026-10-29
-
063
A Pane Can Ignore a Filter Its Model Cannot Apply
Accepted
2026-10-29