Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
47 commits
Select commit Hold shift + click to select a range
f24a949
changes for jaspr
JohnWeidner Mar 2, 2026
05a29b2
fix: replace markdown formatting with html inside the callout component
thierryoliveira Mar 3, 2026
69da87d
changes after using the visual comparison tool
JohnWeidner Mar 3, 2026
0986ab9
changes for collapsible left sidebar
JohnWeidner Mar 3, 2026
5919901
feat: create custom component for [edit this page] on footer
thierryoliveira Mar 4, 2026
c9c2f10
feat: create a custom [DocCallout] component to match the Docusaurus …
thierryoliveira Mar 4, 2026
adabdc1
fix: render dual-theme syntax-highlighted code blocks for light/dark …
thierryoliveira Mar 4, 2026
90be0c3
fix: correct dark mode accent colors and TOC pill borders to match Do…
thierryoliveira Mar 4, 2026
fb87b17
feat: implement collapsible/expandable sidebar custom component
thierryoliveira Mar 4, 2026
22844ed
fix: indentation of children menu items
thierryoliveira Mar 4, 2026
ec345c3
change for cards on workflows page and next/previous cards on first a…
JohnWeidner Mar 4, 2026
ff7ac64
changes for h1 and h2 font-weight appearance
JohnWeidner Mar 4, 2026
a051a44
changes for single column of package cards on workflows page for narr…
JohnWeidner Mar 4, 2026
33fcb5f
changes for hamburger menu button size and "On this page" menu appear…
JohnWeidner Mar 4, 2026
faed0f1
changes for truncating cards on the workflow cards
JohnWeidner Mar 4, 2026
1cc1f6b
fix hover underline issue
JohnWeidner Mar 4, 2026
927302f
fix spell check issues
JohnWeidner Mar 4, 2026
df9f4bf
spell check related change
JohnWeidner Mar 4, 2026
cf57ed3
added a redirect for anyone accessing the workflows file at its old l…
JohnWeidner Mar 4, 2026
e5a6c76
minor padding changes
JohnWeidner Mar 4, 2026
13615ec
change so that when you select an item on right side bar, it gets hig…
JohnWeidner Mar 4, 2026
23e42ad
fix: pixel-perfect mobile sidebar matching Docusaurus
thierryoliveira Mar 4, 2026
da9178f
fix: mobile sidebar header layout, item width, and dark bg color
thierryoliveira Mar 4, 2026
52d47b9
chore: use workflows_nav_icon.svg image button in mobile sidebar header
thierryoliveira Mar 4, 2026
5b1544f
feat: add '← Back to main menu' row and remove mobile sidebar divider
thierryoliveira Mar 4, 2026
f66754e
misc changes
JohnWeidner Mar 4, 2026
e40980e
changes related to the theme switcher and copy code buttons
JohnWeidner Mar 4, 2026
11506d7
change for opaque title bar
JohnWeidner Mar 4, 2026
837e3ef
fix for green check mark for copy code button in dark mode
JohnWeidner Mar 4, 2026
68538e7
home page spacing
JohnWeidner Mar 4, 2026
6f4112c
changes for code items in right side bar styled differently
JohnWeidner Mar 4, 2026
cbf3a74
table styling for Mas Publish page
JohnWeidner Mar 4, 2026
278ade6
feat: add two-panel mobile sidebar and home page hamburger menu
thierryoliveira Mar 4, 2026
6cf685a
fix: remove [Edit this page] from the workflows category page
thierryoliveira Mar 5, 2026
5fbb52a
Here's a summary of what I fixed in this session:
JohnWeidner Mar 5, 2026
5f55cda
Here's a summary of what was fixed in this session, focused on font s…
JohnWeidner Mar 5, 2026
f733d40
fix previous button border always being blue
JohnWeidner Mar 5, 2026
2fcc051
minor styling changes
JohnWeidner Mar 5, 2026
10af498
change for syntax hilighting of json code blocks
JohnWeidner Mar 5, 2026
5a07aed
changes for Workflow page's cards and site footer styling
JohnWeidner Mar 5, 2026
fbcad88
fix: make navigation buttons bigger to match docusaurus UI
thierryoliveira Mar 5, 2026
e90e822
fix: decrease spacing above the [edit this page] to match docusaurus UI
thierryoliveira Mar 5, 2026
0083689
fix: footers font size and spacing below the nav buttons
thierryoliveira Mar 5, 2026
f8b31b4
fix: missing theme toggle button on mobile nav sidebar variation
thierryoliveira Mar 5, 2026
bf2496a
fix: dark themed navigation button colors and height
thierryoliveira Mar 5, 2026
a1c81d6
minor style changes
JohnWeidner Mar 5, 2026
9239069
move custom colors and use named colors instead
JohnWeidner Mar 5, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
57 changes: 57 additions & 0 deletions .claude/settings.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
{
"permissions": {
"allow": [
"Bash(lsof -ti:3000)",
"Bash(node capture.mjs)",
"Bash(node compare.mjs)",
"Bash(open /Users/john/projects/very_good_workflows/tools/visual-compare/screenshots/report.html)",
"Bash(node /private/tmp/check-h1.mjs)",
"Bash(node check-h1.mjs)",
"Bash(lsof -ti:4000)",
"Bash(npx serve build/jaspr -l 4000)",
"Bash(curl -s -o /dev/null -w \"%{http_code}\" http://localhost:4000/docs/overview/)",
"Bash(node capture.mjs --jaspr-only)",
"Bash(node inspect-dark.mjs)",
"Bash(node inspect-spr.mjs)",
"Bash(node inspect-width.mjs)",
"Bash(dart run jaspr_cli:jaspr build)",
"Bash(pkill -f build_daemon)",
"Bash(pkill -f dart.*build_runner)",
"Bash(curl -s http://localhost:4000/docs/overview/)",
"mcp__plugin_wingspan_dart__dart_fix",
"Bash(node capture.js --url=\"http://localhost:4000/docs/workflows\" --name=\"docs-workflows\" --width=1200)",
"Bash(node capture.mjs --url=\"http://localhost:3000/docs/workflows\" --name=\"docs-workflows\" --width=1200)",
"Bash(node capture.mjs --url=\"http://localhost:4000/docs/workflows\" --name=\"docs-workflows\" --width=1200)",
"mcp__plugin_wingspan_dart__hover",
"Bash(jaspr serve --port 4000)",
"Bash(curl -s -o /dev/null -w \"%{http_code}\" http://localhost:4000/docs/workflows)",
"Bash(node /tmp/measure-layout.mjs)",
"Bash(npm run capture:jaspr)",
"Bash(npm run compare)",
"Bash(node analyze-diffs.mjs)",
"Bash(ls /Users/john/projects/very_good_workflows/tools/visual-compare/screenshots/diff-*.png)",
"Bash(curl -s -o /dev/null -w \"%{http_code}\" http://localhost:4000/)",
"Bash(node measure.mjs)",
"Bash(node measure-home.mjs)",
"Bash(node measure-buttons.mjs)",
"Read(//Users/john/.pub-cache/hosted/pub.dev/jaspr_content-0.5.0/lib/components/**)",
"Bash(curl -s http://localhost:4000/)",
"Read(//Users/john/.pub-cache/hosted/pub.dev/jaspr_content-0.5.0/**)",
"Read(//Users/john/.pub-cache/hosted/pub.dev/jaspr-0.22.3/lib/src/dom/**)",
"Read(//Users/john/.pub-cache/hosted/pub.dev/jaspr-0.22.3/lib/**)",
"Bash(grep -n 'final class li\\\\|final class ul' /Users/john/.pub-cache/hosted/pub.dev/jaspr-0.22.3/lib/src/dom/html/*.dart)",
"Bash(while read hash msg)",
"Bash(do echo \"=== $msg ===\")",
"Bash(git diff-tree --no-commit-id --name-only -r \"$hash\")",
"Bash(done)",
"Bash(python3 -c \"import sys,json; h=json.load\\(sys.stdin\\); [print\\(f\"\"{e[''timestamp''][:16]} {e[''parityScore'']}%\"\"\\) for e in h]\")",
"Bash(node -e \":*)",
"Bash(xargs kill -9)",
"Bash(lsof -ti:5467)",
"Bash(pkill -9 -f 'dart.*build_daemon')",
"Bash(python3 -m json.tool)",
"Bash(ls /Users/john/projects/very_good_workflows/tools/visual-compare/screenshots/parity*)",
"Bash(ls /Users/john/projects/very_good_workflows/tools/visual-compare/parity*)"
]
}
}
20 changes: 19 additions & 1 deletion .github/cspell.json
Original file line number Diff line number Diff line change
Expand Up @@ -15,28 +15,46 @@
}
],
"useGitignore": true,
"ignorePaths": [
"**/*.tmLanguage.json"
],
"words": [
"amannn",
"APPDATA",
"brickhub",
"Consolas",
"creatordate",
"creds",
"clsx",
"Csvg",
"Contador",
"endtemplate",
"evenodd",
"flexbox",
"frontmatter",
"Infima",
"jaspr",
"linecap",
"linejoin",
"localizable",
"Menlo",
"mostrado",
"noopener",
"noreferrer",
"Noto",
"Octicon",
"pΓ‘gina",
"peaceiris",
"Scrollspy",
"Segoe",
"srealmoreno",
"retag",
"Texto",
"typecheck",
"unhighlighted",
"viewports",
"webfactory",
"xlink"
"xlink",
"zoomable"
]
}
70 changes: 70 additions & 0 deletions JASPR_MIGRATION.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,70 @@
# Migrating from Docusaurus to Jaspr

## 1. Scaffold the Jaspr project

```bash
dart pub global activate jaspr_cli
jaspr create --template=docs site_jaspr
```

This gives you a Jaspr static site pre-configured with `jaspr_content`, which includes a `DocsLayout` with sidebar, header, dark/light mode, markdown parsing, and syntax highlighting out of the box.

## 2. Migrate your content

Your current docs are 10 Markdown files in `site/docs/` with YAML frontmatter (`sidebar_position`, `title`, `description`). These can largely be copied over as-is -- `jaspr_content` uses a `FilesystemLoader` that reads `.md` files from a content directory and supports frontmatter.

The current sidebar is auto-generated from the filesystem in Docusaurus. In Jaspr, the sidebar is defined explicitly in Dart code:

```dart
sidebar: Sidebar(groups: [
SidebarGroup(links: [
SidebarLink(text: 'Overview', href: '/'),
]),
SidebarGroup(title: 'Workflows', links: [
SidebarLink(text: 'Dart Package', href: '/workflows/dart_package'),
SidebarLink(text: 'Flutter Package', href: '/workflows/flutter_package'),
// ... etc
]),
]),
```

## 3. Recreate the custom homepage

The current homepage (`site/src/pages/index.tsx`) is a custom React component with a hero banner, CTA button, and blog section. In Jaspr, you'd build this as a `StatelessComponent` using Jaspr's HTML element functions (`div`, `a`, `img`, etc.) with typed `Styles` for CSS.

## 4. Migrate theming

The custom CSS (`site/src/css/custom.css`) defines brand colors, Poppins font, and dark mode overrides. In Jaspr, theming is done via `ContentTheme`:

```dart
theme: ContentTheme(
primary: ThemeColor(Color('#2a48df'), dark: Color('#66fbd1')),
background: ThemeColor(Colors.white, dark: Color('#0b0d0e')),
),
```

## 5. Update the deployment workflow

Replace the Node/Docusaurus build steps in `.github/workflows/site_deploy.yaml` with Dart/Jaspr:

```yaml
- uses: dart-lang/setup-dart@v1
- run: dart pub global activate jaspr_cli
- run: jaspr build
# Output goes to build/jaspr/ instead of site/build/
```

## Key differences to be aware of

| Aspect | Docusaurus (current) | Jaspr |
|---|---|---|
| Sidebar | Auto-generated from filesystem | Manual definition in Dart |
| Custom pages | React/TSX components | Dart `StatelessComponent` |
| Styling | CSS/CSS Modules | Typed `Styles` in Dart + optional CSS |
| Markdown extensions | MDX (JSX in Markdown) | Custom components registered in Dart |
| Search | Algolia integration available | No built-in search |
| Docs versioning | Built-in | Not available |

## Tradeoffs

The main benefit is staying entirely within the Dart ecosystem. The main costs are losing Docusaurus's auto-generated sidebar, built-in search integration, and the broader plugin ecosystem. The site is relatively straightforward (10 doc pages, one custom homepage), so the migration scope is manageable.
30 changes: 30 additions & 0 deletions site_jaspr/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
# Files and directories created by pub.
**/doc/api/
.dart_tool/
.packages

# Conventional directory for build output.
/build/

# Miscellaneous
*.class
*.log
*.pyc
*.swp
.DS_Store
.atom/
.buildlog/
.history
.svn/
migrate_working_dir/

# IntelliJ related
*.iml
*.ipr
*.iws
.idea/

# The .vscode folder contains launch configuration and tasks you configure in
# VS Code which you may wish to be included in version control, so this line
# is commented out by default.
#.vscode/
15 changes: 15 additions & 0 deletions site_jaspr/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
# site_jaspr

A documentation site built with Jaspr

## Running the project

Run your project using `jaspr serve`.

The development server will be available on `http://localhost:8080`.

## Building the project

Build your project using `jaspr build`.

The output will be located inside the `build/jaspr/` directory.
46 changes: 46 additions & 0 deletions site_jaspr/analysis_options.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
# This file configures the static analysis results for your project (errors,
# warnings, and lints).
#
# This enables the 'recommended' set of lints from `package:lints`.
# This set helps identify many issues that may lead to problems when running
# or consuming Dart code, and enforces writing Dart using a single, idiomatic
# style and format.
#
# If you want a smaller set of lints you can change this to specify
# 'package:lints/core.yaml'. These are just the most critical lints
# (the recommended set includes the core lints).
# The core lints are also what is used by pub.dev for scoring packages.

include: package:lints/recommended.yaml

analyzer:
# exclude:
# - path/to/excluded/files/**

# Jaspr has a custom analyzer plugin 'jaspr_lints', which is enabled here.
#
# You can toggle Jaspr specific lint rules in the 'diagnostics' section below.
plugins:
jaspr_lints:
version: ^0.6.0
diagnostics:
prefer_html_components: true
sort_children_last: true
styles_ordering: true

# Uncomment the following section to enable or disable additional rules.

# linter:
# rules:
# camel_case_types: true

# For more information about the core and recommended set of lints, see
# https://dart.dev/go/core-lints

formatter:
# Change this to your preferred line length.
page_width: 120
trailing_commas: preserve

# For additional information about configuring this file, see
# https://dart.dev/guides/language/analysis-options
3 changes: 3 additions & 0 deletions site_jaspr/content/_data/links.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
website: https://verygood.ventures
devTools: https://developer.vgv.dev
github: https://github.com/VeryGoodOpenSource/very_good_workflows
3 changes: 3 additions & 0 deletions site_jaspr/content/_data/site.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
# Site Configuration
titleBase: Very Good Workflows
favicon: favicon.ico
8 changes: 8 additions & 0 deletions site_jaspr/content/docs/category/workflows.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
---
title: "Workflows"
---

<meta http-equiv="refresh" content="0; url=/docs/workflows">
<link rel="canonical" href="/docs/workflows">

If you are not redirected automatically, [click here](/docs/workflows).
45 changes: 45 additions & 0 deletions site_jaspr/content/docs/overview.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
---
title: Overview
description: A collection of reusable GitHub workflows used at Very Good Ventures.
image: /images/meta/open-graph.png
---

# Overview

[GitHub workflows][github_workflows_link] are configurable, automated processes that can run at various points during the development process. For example, a workflow can run when a pull request is created or updated to perform various code quality checks before allowing the changes to be merged.

Very Good Workflows is a collection of workflows that we use at VGV to run automated checks in our CI pipelines. While built by VGV to be used internally, they can be used by anyone.

## Quick Start πŸš€

To get started, add Very Good Workflows to an existing GitHub workflow:

```yaml
# A reusable workflow for Dart packages
uses: VeryGoodOpenSource/very_good_workflows/.github/workflows/dart_package.yml@v1

# A reusable workflow for Flutter packages
uses: VeryGoodOpenSource/very_good_workflows/.github/workflows/flutter_package.yml@v1

# A reusable workflow for ensuring commits are semantic
uses: VeryGoodOpenSource/very_good_workflows/.github/workflows/semantic_pull_request.yml@v1

# A reusable workflow for verifying package scores on pub.dev
uses: VeryGoodOpenSource/very_good_workflows/.github/workflows/pana.yml@v1

# A reusable workflow for running a spell check
uses: VeryGoodOpenSource/very_good_workflows/.github/workflows/spell_check.yml@v1

# A reusable workflow for publishing Flutter packages
uses: VeryGoodOpenSource/very_good_workflows/.github/workflows/flutter_pub_publish.yml@v1

# A reusable workflow for publishing Dart packages
uses: VeryGoodOpenSource/very_good_workflows/.github/workflows/dart_pub_publish.yml@v1

# A reusable workflow for publishing Mason bricks
uses: VeryGoodOpenSource/very_good_workflows/.github/workflows/mason_publish.yml@v1

```

[github_workflows_link]: https://docs.github.com/en/actions/learn-github-actions/workflow-syntax-for-github-actions
[very_good_ventures_link]: https://verygood.ventures
47 changes: 47 additions & 0 deletions site_jaspr/content/docs/workflows.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
---
title: "Workflows"
description: "Learn about all of the workflows that Very Good Workflows supports."
---

# Workflows πŸ¦„

Learn about all of the workflows that Very Good Workflows supports.

<div class="workflow-cards">
<a class="workflow-card" href="/docs/workflows/dart_package">
<h3>πŸ“„ Dart Package</h3>
<p>This workflow runs helpful checks on a Dart package according to the steps below. As with any workflow, it can be customized.</p>
</a>
<a class="workflow-card" href="/docs/workflows/dart_pub_publish">
<h3>πŸ“„ Dart Pub Publish</h3>
<p>We use this workflow to publish a Dart package to pub.dev.</p>
</a>
<a class="workflow-card" href="/docs/workflows/flutter_package">
<h3>πŸ“„ Flutter Package</h3>
<p>This workflow runs helpful checks on a Flutter package according to the steps below. As with any workflow, it can be customized.</p>
</a>
<a class="workflow-card" href="/docs/workflows/flutter_pub_publish">
<h3>πŸ“„ Flutter Pub Publish</h3>
<p>We use this workflow to publish a Flutter package to pub.dev.</p>
</a>
<a class="workflow-card" href="/docs/workflows/license_check">
<h3>πŸ“„ License Check</h3>
<p>At VGV, we keep track of the rights and restrictions external dependencies might impose on Dart or Flutter projects.</p>
</a>
<a class="workflow-card" href="/docs/workflows/mason_publish">
<h3>πŸ“„ Mason Publish</h3>
<p>We use this workflow to publish a brick to brickhub.dev.</p>
</a>
<a class="workflow-card" href="/docs/workflows/pana">
<h3>πŸ“„ Pana</h3>
<p>We use the Dart tool pana to validate that your pub score will be the max possible score before publishing a package to pub.dev.</p>
</a>
<a class="workflow-card" href="/docs/workflows/semantic_pull_request">
<h3>πŸ“„ Semantic Pull Request</h3>
<p>At VGV, we use conventional commits. This way, our commit history is clean and useful when we squash and merge β€” we can easily see the type and brief description of each PR.</p>
</a>
<a class="workflow-card" href="/docs/workflows/spell_check">
<h3>πŸ“„ Spell Check</h3>
<p>We use cspell for basic spell check on our projects.</p>
</a>
</div>
Loading