diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml
index 1c6309ea77..70ad37c2cc 100644
--- a/.github/workflows/test.yml
+++ b/.github/workflows/test.yml
@@ -14,9 +14,9 @@ jobs:
ruby-versions:
uses: ruby/actions/.github/workflows/ruby_versions.yml@master
with:
- # 2.7 breaks `test_parse_statements_nodoc_identifier_alias_method`
- min_version: 3.0
+ min_version: 3.2
versions: '["mswin"]'
+ engine: cruby
test:
needs: ruby-versions
@@ -26,14 +26,6 @@ jobs:
ruby: ${{ fromJson(needs.ruby-versions.outputs.versions) }}
os: [ubuntu-latest, macos-latest, windows-latest]
exclude:
- - os: windows-latest
- ruby: truffleruby
- - os: windows-latest
- ruby: truffleruby-head
- - os: windows-latest
- ruby: jruby
- - os: windows-latest
- ruby: jruby-head
- os: macos-latest
ruby: mswin
- os: ubuntu-latest
@@ -68,7 +60,7 @@ jobs:
strategy:
fail-fast: false
matrix:
- prism_version: ['1.0.0', '1.3.0', '1.7.0', 'head']
+ prism_version: ['1.6.0', '1.7.0', 'head']
runs-on: ubuntu-latest
env:
RUBYOPT: --enable-frozen_string_literal
diff --git a/CLAUDE.md b/CLAUDE.md
index 164dc8bcfe..23decc096d 100644
--- a/CLAUDE.md
+++ b/CLAUDE.md
@@ -10,3 +10,30 @@ Please refer to `AGENTS.md` for comprehensive project documentation, including:
- CI/CD information
All project-specific instructions and guidelines are maintained in `AGENTS.md`.
+
+## Design Context
+
+**Personality:** Minimal, focused, fast. A well-organized reference tool — never decorative, never in the way.
+
+**References:** Elixir HexDocs, Tailwind CSS v2 docs. **Anti-references:** busy enterprise docs, heavy drop shadows, ornamental borders.
+
+### Design Principles
+
+1. **Types are equal partners** — Type signatures are as important as method names. Immediately visible, not hidden metadata.
+2. **Hierarchy through typography, not decoration** — Font size, weight, color. No badges, pills, or ornamental borders for structural info. Let whitespace do the heavy lifting.
+3. **Code is the content** — Method names, params, and types all use `--font-code`. Don't mix prose typography into code contexts.
+4. **Scan-first design** — Method entries parseable at a glance: name → type → description. Each layer visually distinct.
+5. **Respect the design system** — Use CSS custom properties exclusively. No hardcoded values. Dark mode and themes must work automatically.
+
+### Design Tokens (Aliki Theme)
+
+| Token | Light | Dark | Usage |
+|-------|-------|------|-------|
+| `--color-text-primary` | `#1c1917` | `#fafaf9` | Method names, headings |
+| `--color-text-secondary` | `#57534e` | `#e7e5e4` | Type signatures, descriptions |
+| `--color-text-tertiary` | `#78716c` | `#a8a29e` | De-emphasized metadata |
+| `--font-code` | ui-monospace stack | same | All code: names, params, types |
+| `--font-size-lg` | 18px | same | Method headings |
+| `--font-size-sm` | 14px | same | Type signatures |
+| `--font-size-xs` | 12px | same | Metadata, labels |
+| `--space-1` to `--space-6` | 4px–24px | same | All spacing |
diff --git a/Gemfile b/Gemfile
index 317623101b..4b2be8f5d5 100644
--- a/Gemfile
+++ b/Gemfile
@@ -18,7 +18,5 @@ elsif ENV['PRISM_VERSION']
end
platforms :ruby do
- if Gem::Version.new(RUBY_VERSION) >= Gem::Version.new('3.2')
- gem 'mini_racer' # For testing the searcher.js file
- end
+ gem 'mini_racer' # For testing the searcher.js file
end
diff --git a/lib/rdoc/code_object/any_method.rb b/lib/rdoc/code_object/any_method.rb
index f56110ea11..26b42c07cb 100644
--- a/lib/rdoc/code_object/any_method.rb
+++ b/lib/rdoc/code_object/any_method.rb
@@ -14,7 +14,7 @@ class RDoc::AnyMethod < RDoc::MethodAttr
# RDoc 4.1
# Added is_alias_for
- MARSHAL_VERSION = 3 # :nodoc:
+ MARSHAL_VERSION = 4 # :nodoc:
##
# Don't rename \#initialize to \::new
@@ -166,6 +166,7 @@ def marshal_dump
@parent.class,
@section.title,
is_alias_for,
+ @type_signature,
]
end
@@ -204,6 +205,7 @@ def marshal_load(array)
@parent_title = array[13]
@section_title = array[14]
@is_alias_for = array[15]
+ @type_signature = array[16]
array[8].each do |new_name, document|
add_alias RDoc::Alias.new(nil, @name, new_name, RDoc::Comment.from_document(document), singleton: @singleton)
diff --git a/lib/rdoc/code_object/attr.rb b/lib/rdoc/code_object/attr.rb
index bfc981f7e8..3895121854 100644
--- a/lib/rdoc/code_object/attr.rb
+++ b/lib/rdoc/code_object/attr.rb
@@ -11,7 +11,7 @@ class RDoc::Attr < RDoc::MethodAttr
# Added parent name and class
# Added section title
- MARSHAL_VERSION = 3 # :nodoc:
+ MARSHAL_VERSION = 4 # :nodoc:
##
# Is the attribute readable ('R'), writable ('W') or both ('RW')?
@@ -108,7 +108,8 @@ def marshal_dump
@file.relative_name,
@parent.full_name,
@parent.class,
- @section.title
+ @section.title,
+ @type_signature,
]
end
@@ -140,6 +141,7 @@ def marshal_load(array)
@parent_name = array[8]
@parent_class = array[9]
@section_title = array[10]
+ @type_signature = array[11]
@file = RDoc::TopLevel.new array[7] if version > 1
diff --git a/lib/rdoc/code_object/method_attr.rb b/lib/rdoc/code_object/method_attr.rb
index 3169640982..f968543bdd 100644
--- a/lib/rdoc/code_object/method_attr.rb
+++ b/lib/rdoc/code_object/method_attr.rb
@@ -58,6 +58,11 @@ class RDoc::MethodAttr < RDoc::CodeObject
attr_accessor :call_seq
+ ##
+ # RBS type signature from inline #: annotations
+
+ attr_accessor :type_signature
+
##
# The call_seq or the param_seq with method name, if there is no call_seq.
@@ -86,6 +91,7 @@ def initialize(text, name, singleton: false)
@block_params = nil
@call_seq = nil
@params = nil
+ @type_signature = nil
end
##
diff --git a/lib/rdoc/generator/template/aliki/_head.rhtml b/lib/rdoc/generator/template/aliki/_head.rhtml
index c6c238d26c..4d05606e58 100644
--- a/lib/rdoc/generator/template/aliki/_head.rhtml
+++ b/lib/rdoc/generator/template/aliki/_head.rhtml
@@ -145,6 +145,11 @@
defer
>
+
+