]> Repositorios git - classgraph.git/log
classgraph.git
5 weeks agoRender instance context constraints as predicate nodes
Javier Sagredo [Wed, 6 May 2026 22:31:10 +0000 (00:31 +0200)]
Render instance context constraints as predicate nodes

Was: instance → class node, edge labelled "ctx: <args>".
Now: instance → predicate node ("Foo a b" rendered like a constraint),
edge labelled "instance context".

The new node kind 'predicate' deduplicates on a structural id
(class qid + JSON-stringified args), so the same constraint surfaces
once even when it appears in multiple superclass / context slots —
the next commit relies on this to merge unmatched-superclass
requirements with overlapping context predicates.

Side panel grows a renderPredicatePanel that explains the node's role
and links to the underlying class.

Co-Authored-By: Claude Opus 4.7 (1M context) <[email protected]>
5 weeks agoShorten "superclass needed Foo a b" edge label to "superclass constraint"
Javier Sagredo [Wed, 6 May 2026 22:27:58 +0000 (00:27 +0200)]
Shorten "superclass needed Foo a b" edge label to "superclass constraint"

The class + arg shape is already on the target node (matched instance,
or — after the next commit — a predicate node), so spelling it out on
the edge label was redundant. Plain "superclass constraint" describes
the relationship the edge depicts and lets the eye stay on the nodes.

Co-Authored-By: Claude Opus 4.7 (1M context) <[email protected]>
5 weeks agoDon't draw the predicate-class node alongside fam-resolves matches
Javier Sagredo [Wed, 6 May 2026 22:27:28 +0000 (00:27 +0200)]
Don't draw the predicate-class node alongside fam-resolves matches

The "fam-resolves" chain pulled the predicate class into the instance
view as a separate node and connected it to the matched instance with
a green "defines" edge — duplicating information already on the
matched-instance label. Drop the class anchor + defines edge here, the
same way commit 3a8e0ac handled the matched-superclass case.

Co-Authored-By: Claude Opus 4.7 (1M context) <[email protected]>
5 weeks agoDrop the instance → fam-instance "= (Rhs)" edge
Javier Sagredo [Wed, 6 May 2026 22:14:26 +0000 (00:14 +0200)]
Drop the instance → fam-instance "= (Rhs)" edge

The dotted-purple edge from a focused instance to its associated
fam-instance carried only the RHS label, which the fam-instance
node's own label already shows in full. Removing it cleans up the
instance view; the fam-instance still surfaces because the family
node points at it via fam-defines, which is enough to indicate the
context relevance.

Also drop the now-dead cytoscape style rule and the legend row.

Co-Authored-By: Claude Opus 4.7 (1M context) <[email protected]>
5 weeks agoDrop the "satisfies Foo" label on fam-resolves chain edges
Javier Sagredo [Wed, 6 May 2026 22:13:09 +0000 (00:13 +0200)]
Drop the "satisfies Foo" label on fam-resolves chain edges

The teal-dotted edge between a fam-instance and the matched class
instance already speaks for itself — its endpoints (and the side
panel on click) carry the same information the inline label was
trying to add. The label was just visual noise.

Co-Authored-By: Claude Opus 4.7 (1M context) <[email protected]>
5 weeks agoRemove the "via Bar" instance → family edge
Javier Sagredo [Wed, 6 May 2026 22:12:43 +0000 (00:12 +0200)]
Remove the "via Bar" instance → family edge

The dashed light-purple arrow connecting an instance to a referenced
type family was visually opaque — readers couldn't tell what
relationship it depicted. Drop it from addFamilyLinksFromArgs along
with its cytoscape style rule and the help-legend row.

The fam-instance nodes the function surfaces and the fam-resolves
chain edges remain — those are the meaningful continuations from the
matched-superclass-instance node.

Co-Authored-By: Claude Opus 4.7 (1M context) <[email protected]>
5 weeks agoDon't draw the superclass class node when an instance matches locally
Javier Sagredo [Wed, 6 May 2026 22:11:33 +0000 (00:11 +0200)]
Don't draw the superclass class node when an instance matches locally

Previously every "superclass needed" arrow pulled in both the matched
instance node *and* a class node for the superclass — joined to the
matched instance by an extra "defines" edge. The class node duplicated
information already on the matched-instance label, just adding clutter.
Restrict the class-node side to the no-local-match branch, which still
needs somewhere for its needs-external edge to terminate.

Co-Authored-By: Claude Opus 4.7 (1M context) <[email protected]>
5 weeks agoRelabel "needs Foo" superclass edges to "superclass needed Foo"
Javier Sagredo [Wed, 6 May 2026 22:10:50 +0000 (00:10 +0200)]
Relabel "needs Foo" superclass edges to "superclass needed Foo"

The plain "needs Foo …" edge label in the instance view glossed
which kind of constraint we were displaying (context vs. superclass
vs. ambient). Make it explicit: this edge represents a *superclass*
requirement.

Co-Authored-By: Claude Opus 4.7 (1M context) <[email protected]>
5 weeks agoAdd docs/INTERNALS.md (with neutral examples)
Javier Sagredo [Wed, 6 May 2026 22:10:09 +0000 (00:10 +0200)]
Add docs/INTERNALS.md (with neutral examples)

The internals walkthrough was sitting uncommitted from an earlier
session. Adding it now, with the Cardano-flavoured examples
(Ticked / Shelley / Byron / TxOut/LedgerState) swapped for neutral
Wrap / Foo Int / Element shapes — the doc explains classgraph
internals, not any particular downstream project's vocabulary.

Co-Authored-By: Claude Opus 4.7 (1M context) <[email protected]>
5 weeks agoDocument setup for the two Emacs editor-link schemes
Javier Sagredo [Wed, 6 May 2026 22:09:17 +0000 (00:09 +0200)]
Document setup for the two Emacs editor-link schemes

Step-by-step org-protocol setup (init.el snippet + xdg-mime desktop
entry + macOS pointer) plus a DIY emacs:// scheme path with a sample
emacsclient wrapper script. Both end with the "pick from dropdown"
step so the user can see the loop close.

Co-Authored-By: Claude Opus 4.7 (1M context) <[email protected]>
5 weeks agoAdd two Emacs editor-link schemes
Javier Sagredo [Wed, 6 May 2026 22:08:40 +0000 (00:08 +0200)]
Add two Emacs editor-link schemes

emacs://: a freeform URL the user maps to emacsclient via xdg-mime.
emacs-org://: the canonical org-protocol://open-source URL handler
that ships with Emacs once (require 'org-protocol) is loaded.

Co-Authored-By: Claude Opus 4.7 (1M context) <[email protected]>
5 weeks agoDon't recolor the focused type-family node
Javier Sagredo [Wed, 6 May 2026 22:07:56 +0000 (00:07 +0200)]
Don't recolor the focused type-family node

The [?focused] cytoscape rule used to paint every focused node dark
blue, which on the amber family node left dark-on-dark text that
couldn't be read. Split the rule: class nodes still go navy; family
nodes keep their amber palette and indicate focus via a thicker brown
border and larger text.

Co-Authored-By: Claude Opus 4.7 (1M context) <[email protected]>
5 weeks agoRename Pin to Focus in the side-panel UI
Javier Sagredo [Wed, 6 May 2026 22:07:21 +0000 (00:07 +0200)]
Rename Pin to Focus in the side-panel UI

Side-panel button is now "🎯 Focus" / "🎯 Unfocus" (was "📌 Pin" /
"📌 Unpin"). Hint text, help legend, counts line, and README all
updated. Internal identifiers (focusSet, pinClass, the panel-btn.pin
CSS class, data-action="toggle-pin") stay as-is — they're invisible
to users and changing them invites bigger churn.

Co-Authored-By: Claude Opus 4.7 (1M context) <[email protected]>
5 weeks agoRender type-level lists as [a, b, c] not (: a (: b []))
Javier Sagredo [Wed, 6 May 2026 22:06:25 +0000 (00:06 +0200)]
Render type-level lists as [a, b, c] not (: a (: b []))

renderArg now special-cases GHC's promoted cons (`:`) / nil (`[]`)
TyCons and the unapplied list TyCon, unfolding nested cons chains
into Haskell list syntax. Demo gets a Bagful + BagList exhibit so
the path is exercised.

Co-Authored-By: Claude Opus 4.7 (1M context) <[email protected]>
5 weeks agoInfer per-package source roots from classgraph-view --input
Javier Sagredo [Wed, 6 May 2026 22:05:20 +0000 (00:05 +0200)]
Infer per-package source roots from classgraph-view --input

Add a --source-root PKG=PATH override and infer a default per-package
root from each --input dir's parent. Schema gains iiDefinedIn /
fiDefinedIn (filled in at merge time from the dump's mdPackage), so
orphan instances resolve under the *defining* package, not the
class's. Render embeds the resulting map; viewer's editor links look
up the per-package root before falling back to the localStorage
override.

Co-Authored-By: Claude Opus 4.7 (1M context) <[email protected]>
5 weeks agoFix render of tuples and add source-code links
Javier Sagredo [Wed, 6 May 2026 21:35:33 +0000 (23:35 +0200)]
Fix render of tuples and add source-code links

5 weeks agoAdd haddocks to side panel if compiled with -haddock
Javier Sagredo [Wed, 6 May 2026 21:23:23 +0000 (23:23 +0200)]
Add haddocks to side panel if compiled with -haddock

5 weeks agoWIP
Javier Sagredo [Wed, 6 May 2026 20:56:21 +0000 (22:56 +0200)]
WIP

5 weeks agoAdd README.md
Javier Sagredo [Mon, 4 May 2026 00:34:07 +0000 (02:34 +0200)]
Add README.md

5 weeks agoAdd classgraph-plugin-flag.sh for unintrusive plugin usage
Javier Sagredo [Mon, 4 May 2026 00:26:18 +0000 (02:26 +0200)]
Add classgraph-plugin-flag.sh for unintrusive plugin usage

5 weeks agoMark top-level classes (no subclasses) and render them at the top
Javier Sagredo [Sun, 3 May 2026 23:54:00 +0000 (01:54 +0200)]
Mark top-level classes (no subclasses) and render them at the top

5 weeks agoData families: (data) label, hide synthetic RHS, per-family filter; fix instance...
Javier Sagredo [Sun, 3 May 2026 23:36:23 +0000 (01:36 +0200)]
Data families: (data) label, hide synthetic RHS, per-family filter; fix instance source spans

5 weeks agoNormalise package ids when merging dumps
Javier Sagredo [Sun, 3 May 2026 22:49:22 +0000 (00:49 +0200)]
Normalise package ids when merging dumps

5 weeks agoSupport multiple --input directories
Javier Sagredo [Sun, 3 May 2026 22:30:01 +0000 (00:30 +0200)]
Support multiple --input directories

5 weeks agoSide panel: subclass index, pin/mute buttons; search now locates rather than drills in
Javier Sagredo [Sun, 3 May 2026 22:00:13 +0000 (00:00 +0200)]
Side panel: subclass index, pin/mute buttons; search now locates rather than drills in

5 weeks agoResolve family-instance chains to matching class instances; treat (~) as equality...
Javier Sagredo [Sun, 3 May 2026 21:45:36 +0000 (23:45 +0200)]
Resolve family-instance chains to matching class instances; treat (~) as equality class

5 weeks agodemo: cover equality, family-in-context, greetings, and multi-param instance cases
Javier Sagredo [Sun, 3 May 2026 16:43:03 +0000 (18:43 +0200)]
demo: cover equality, family-in-context, greetings, and multi-param instance cases

5 weeks agoviewer: search bar, pin/mute/filter panels, splitter, equality preds, clean type...
Javier Sagredo [Sun, 3 May 2026 16:41:35 +0000 (18:41 +0200)]
viewer: search bar, pin/mute/filter panels, splitter, equality preds, clean type printing

5 weeks agoFirst commit
Javier Sagredo [Sat, 2 May 2026 10:32:23 +0000 (12:32 +0200)]
First commit