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.

Guides

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.

  1. 001 Built to Be Forked Accepted 2026-09-11
  2. 002 Measures and Dimensions over Ransack Accepted 2026-09-13
  3. 003 Cross-filtering with Turbo Frames Accepted 2026-09-13
  4. 004 Charts and JavaScript Delivery Accepted 2026-09-15
  5. 005 Pane URLs and the Mount Path Accepted 2026-09-15
  6. 006 Time Dimensions with Groupdate Accepted (the click source paragraph is superseded by ADR 045) 2026-09-15
  7. 007 Ordering and Limits Accepted 2026-09-15
  8. 008 Dashboard Filters in the Page URL Accepted 2026-09-15
  9. 009 Snapshots Accepted 2026-09-15
  10. 010 Agent Guidance Ships, the Agent Waits Accepted 2026-09-15
  11. 011 Panes Do Not Render in the Host Layout Accepted 2026-09-15
  12. 012 Frames and Panes Are Data Accepted 2026-09-15
  13. 013 Naming and Addressing Frames Accepted 2026-09-15
  14. 014 Corrections Before Frames Are Built Accepted 2026-09-15
  15. 015 How Breaking Change Is Communicated Accepted 2026-09-16
  16. 016 The Styling Vocabulary Accepted 2026-09-16
  17. 017 Janela Owns No Data Store Accepted 2026-09-16
  18. 018 A Table Is the Universal Renderer Accepted 2026-09-16
  19. 019 A Created Frame Asks the Host Who Owns It Accepted 2026-09-16
  20. 020 Formatting Belongs to the Measure Accepted 2026-09-16
  21. 021 A Check Has a Name, and a Host Can Silence It Accepted 2026-09-16
  22. 022 A Host's Route Helpers Work Inside the Engine Accepted 2026-09-16
  23. 023 Vitral Is a Theme, Not the Stylesheet Accepted 2026-09-16
  24. 024 Selecting More Than One Value Accepted (the exclusive null group paragraph is superseded by ADR 049) 2026-09-16
  25. 025 Janela Bounds What a Filter Can Ask For Accepted 2026-09-17
  26. 026 A Renderer Is the Seam, and HTML Comes First Accepted 2026-09-18
  27. 027 The Gallery Is a Host Page, Built from the Gem's Helpers Accepted 2026-09-18
  28. 028 The Predicate List ADR 025 Named Was Not Quite Right Accepted 2026-09-18
  29. 029 A Pane's Frame Is Identified by Who It Is, Not by What It Shows Accepted 2026-09-18
  30. 030 A Pane's src Belongs to Turbo, So a Host Talks to the Frame Accepted 2026-09-18
  31. 031 A Subclass Inherits the Dashboard Its Parent Declared Accepted 2026-09-19
  32. 032 Janela Will Not Read a Model It Has Not Been Told How to Scope Accepted 2026-09-20
  33. 033 A Snapshot Is Told Who Owns It, Because There Is No Request to Ask Accepted 2026-09-21
  34. 034 Janela Will Not Freeze a Scope the Host Has Not Named Accepted 2026-09-21
  35. 035 A Check Does What Janela Does, or It Says What It Saw Accepted 2026-09-22
  36. 036 Janela Publishes What a Theme May Target, and Vitral Is Only One Accepted 2026-09-22
  37. 037 1.0 Means the Surface Stops Moving, Not That Janela Is Finished Accepted 2026-09-23
  38. 038 A Ratio Is a Measure of Its Own, Stored as a Fraction and Read as a Percentage Accepted 2026-09-24
  39. 039 A Pane Can Hold Words, and Only Code Writes Markup Accepted 2026-09-24
  40. 040 A Host Can Fix a Frame's Filter, and No Click Removes It Accepted 2026-09-24
  41. 041 A Host Finds Its Frame by Owner and Key Accepted 2026-09-24
  42. 042 A Chart's Title Is a Figcaption, and the Canvas Points to It Accepted 2026-09-28
  43. 043 A Frame's Default Filter Names the Model It Narrows Accepted 2026-09-28
  44. 044 A Categorical Dimension Can Say What It Excludes, Not Only What It Includes Accepted 2026-09-29
  45. 045 Clicking a Time Bucket Filters the Frame to Its Range Accepted 2026-09-29
  46. 046 A Ring Is Server Drawn SVG, and a Palette Is Eight Fixed Colours Accepted 2026-09-29
  47. 047 A Chart's Height Is One of Five Steps, and Unset Changes Nothing Accepted 2026-09-30
  48. 048 A Frame Can Be Told to Refresh, and Janela Never Decides When Proposed 2026-09-30
  49. 049 The Null Group Is One More Value in a Selection Accepted 2026-09-30
  50. 050 A Single Value's Prominence Is One of Three Steps, and Unset Changes Nothing Accepted 2026-09-30
  51. 051 A Table Can Carry Companion Columns, and a Fact Is Shown Only When It Is Shared Accepted 2026-09-30
  52. 052 Two People Cut Releases, Reports Go Private, and Support Is Best Effort Accepted 2026-09-30
  53. 053 An Agent Reaches Janela Through Tools the Host Scopes, and Janela Registers None Accepted 2026-10-02
  54. 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
  55. 055 A Category Pane Can Be Sorted by Its Measure Either Way, or by Its Label Accepted 2026-10-13
  56. 056 The Demo Counts Its Own Visits, and an Agent Arranges the Dashboard Accepted 2026-10-13
  57. 057 A Host Is Told About the Agent Tools, and a Generator Sets Them Up Accepted 2026-10-14
  58. 058 The Deployed Demo Is Reached Over SSH, and Its Visits Frame Survives a Reset Accepted 2026-10-14
  59. 059 A Host Can Tell Janela's Own Pages That Its Layout Draws Charts Proposed 2026-10-14
  60. 060 The Demo Tells Search Engines What It Is, and Shows Its Own Adoption Proposed 2026-10-14
  61. 061 The Demo Speaks Brazilian Portuguese Under a Prefix, and the Gem Stays English Proposed 2026-10-14
  62. 062 A Time Pane Can Accumulate, and Carry More Series on Two Axes Accepted 2026-10-29
  63. 063 A Pane Can Ignore a Filter Its Model Cannot Apply Accepted 2026-10-29