Skip to content

feat: add org.hyperboards.board and org.hyperboards.contributor lexicons - #149

Merged
aspiers merged 8 commits into
hypercerts-org:developfrom
daviddao:feat/add-hyperboards-lexicons
Mar 2, 2026
Merged

feat: add org.hyperboards.board and org.hyperboards.contributor lexicons#149
aspiers merged 8 commits into
hypercerts-org:developfrom
daviddao:feat/add-hyperboards-lexicons

Conversation

@daviddao

@daviddao daviddao commented Feb 26, 2026

Copy link
Copy Markdown
Contributor

Summary

Adds formal lexicon definitions for the two org.hyperboards.* record types already in production in hyperboards-v2:

  • org.hyperboards.board — the primary hyperboard record that wraps an activity/collection with visual presentation config (background, colors, aspect ratio) and per-contributor item overrides (display name, hover effects, video, links)
  • org.hyperboards.contributor — contributor presentation defaults reusable across multiple boards (video, hover image/iframe, circular crop, link URL)

Closes #148.

Design

Hyperboards is a presentation layer on top of hypercerts claim data. The namespace separation (org.hyperboards.* vs org.hypercerts.claim.*) cleanly distinguishes visual config from claim data:

org.hypercerts.claim.activity     ← claim data (what work was done)
org.hyperboards.board             ← presentation (how to display it)
org.hyperboards.contributor       ← presentation defaults per contributor

The board's subject field is a strongRef to the activity/collection it visualizes. The board's items[] array contains per-contributor overrides keyed by itemRef (a strongRef to contributorInformation). This gives a 3-layer merge model:

  1. Board items (most specific) → per-contributor per-board overrides
  2. Contributor defaults → shared across boards
  3. Contributor info (base) → display name, avatar from the claim layer

Schema Highlights

org.hyperboards.board

Property Type Required Description
subject strongRef Activity or collection being visualized
config #boardConfig Background, colors, aspect ratio
items #boardItem[] Per-contributor presentation overrides
createdAt datetime Record creation timestamp

org.hyperboards.contributor

Property Type Required Description
contributorRef strongRef The contributorInformation record
videoUrl uri Default video URL
hoverImageUrl uri Default hover image
hoverIframeUrl uri Default hover iframe
circularImage boolean Default circular crop
url uri Default click-through link
createdAt datetime Record creation timestamp

Checklist

  • Lexicon JSON files follow style guide (all properties described, maxLength set, camelCase)
  • npm run gen-api — types generated for org/hyperboards/board.ts and org/hyperboards/contributor.ts
  • npm run gen-schemas-md — SCHEMAS.md updated
  • npm run format — all formatted
  • npm run check — lint, typecheck, build, 7/7 tests pass
  • Changeset included (minor version bump)

Summary by CodeRabbit

  • New Features
    • Added hyperboard visual customization: configure backgrounds (image or iframe), colors, image shapes, and layout options.
    • Added contributor display profiles with custom names, images, videos, and hover effects.
    • Introduced video support (up to 20MB) for enhanced media capabilities.
    • Increased image size limit from 5MB to 10MB for larger visual assets.

@changeset-bot

changeset-bot Bot commented Feb 26, 2026

Copy link
Copy Markdown

🦋 Changeset detected

Latest commit: fea8132

The changes in this PR will be included in the next version bump.

This PR includes changesets to release 1 package
Name Type
@hypercerts-org/lexicon Minor

Not sure what this means? Click here to learn what changesets are.

Click here if you're a maintainer who wants to add another changeset to this PR

@coderabbitai

coderabbitai Bot commented Feb 26, 2026

Copy link
Copy Markdown

Note

Reviews paused

It looks like this branch is under active development. To avoid overwhelming you with review comments due to an influx of new commits, CodeRabbit has automatically paused this review. You can configure this behavior by changing the reviews.auto_review.auto_pause_after_reviewed_commits setting.

Use the following commands to manage reviews:

  • @coderabbitai resume to resume automatic reviews.
  • @coderabbitai review to trigger a single review.

Use the checkboxes below for quick actions:

  • ▶️ Resume reviews
  • 🔍 Trigger review
📝 Walkthrough

Walkthrough

This PR introduces two new hyperboards lexicons: org.hyperboards.board for board configuration with visual presentation settings and contributor overrides, and org.hyperboards.displayProfile for contributor visual defaults. Also adds a smallVideo definition to the hypercerts defs and updates supporting documentation.

Changes

Cohort / File(s) Summary
Hyperboards Lexicons
lexicons/org/hyperboards/board.json, lexicons/org/hyperboards/displayProfile.json
Introduces two new lexicon definitions: org.hyperboards.board with record type containing subject, config (boardConfig), contributorOverrides array, and createdAt; org.hyperboards.displayProfile for visual presentation with displayName, image, video, hover variants, and URL properties.
Hypercerts Definitions
lexicons/org/hypercerts/defs.json
Adds new smallVideo definition (blob, video/mp4 and video/webm, max 20MB); updates largeImage description to reflect 10MB size.
Schema Documentation
SCHEMAS.md
Documents new external lexicon definitions for org.hyperboards.board, org.hyperboards.board#boardConfig, org.hyperboards.board#contributorOverride, and org.hyperboards.displayProfile with all properties and constraints.
Metadata
.changeset/add-hyperboards-lexicons.md, .prettierignore
Adds changeset entry for minor version bump; extends ignore patterns for additional AI tool directories.

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~12 minutes

Possibly related PRs

Suggested reviewers

  • aspiers

Poem

🐰 Hyperboards hop into view,
With lexicons fresh and new,
Small videos in sight,
Display profiles bright,
Board configs all coded through!


Important

Pre-merge checks failed

Please resolve all errors before merging. Addressing warnings is optional.

❌ Failed checks (1 error, 3 warnings)

Check name Status Explanation Resolution
Lexicon Documentation Sync ❌ Error ERD.puml was not updated despite new entities (org.hyperboards.board and org.hyperboards.displayProfile) with relationships to existing entities being added to the lexicon. Update ERD.puml to include the new org.hyperboards.board and org.hyperboards.displayProfile entities and their relationships to existing entities.
Title check ⚠️ Warning Title mentions org.hyperboards.board but claims org.hyperboards.contributor; actual PR adds displayProfile instead, making the title partially inaccurate. Update title to reflect actual lexicons: 'feat: add org.hyperboards.board and org.hyperboards.displayProfile lexicons' to match the implemented changes.
Linked Issues check ⚠️ Warning PR implements most linked issue requirements but with significant schema changes: contributor → displayProfile rename, boardItem → contributorOverride rename, itemRef → contributor rename, isBlueprint removal, and image/video field restructuring that differ from issue specifications. Verify that renamed lexicons (displayProfile vs. contributor) and restructured fields (image/video as union types, removed isBlueprint) align with hyperboards-v2 implementation requirements and update issue documentation accordingly.
Out of Scope Changes check ⚠️ Warning PR includes out-of-scope changes: updated largeImage size definition (5MB→10MB), added smallVideo definition, and modified .prettierignore with four new patterns unrelated to hyperboards lexicon objectives. Move largeImage update, smallVideo definition, and .prettierignore changes to separate focused PRs aligned with their specific objectives, or document why they are required for hyperboards lexicon functionality.
✅ Passed checks (3 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Lexicons Styleguide Compliance ✅ Passed New lexicon files in org.hyperboards comply with AT Protocol lexicon styleguide. Style check passed with 9 warnings; two minor issues were styleguide-compliant deviations.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment

Tip

Try Coding Plans. Let us write the prompt for your AI agent so you can ship faster (with fewer bugs).
Share your feedback on Discord.


Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@holkexyz

Copy link
Copy Markdown
Member

Pushed a review commit with the following improvements:

  • Rename boardconfig (org.hyperboards.config)
  • Rename contributordisplayProfile (org.hyperboards.displayProfile) — clarifies it's a user-declared presentation record in the contributor's own PDS
  • Image fields now use union [uri, smallImage] (consistent with project conventions, enables PDS blob storage)
  • backgroundOpacity changed from decimal string to integer 0–100
  • circularImage replaced with imageShape (knownValues: ["circular", "square"]) in boardConfig; removed from per-item and displayProfile
  • boardItem.itemRef now a union of strongRef and contributorIdentity to support contributors identified by DID only

All checks pass (gen-api, lint, prettier, typecheck, build, 7/7 tests).

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@SCHEMAS.md`:
- Around line 461-465: Update ERD.puml to add the two new record entities
org.hyperboards.config and org.hyperboards.displayProfile and their structural
relationships: add org.hyperboards.config as a record that references activity
and collection via its subject field (subject should accept either activity or
collection) and add org.hyperboards.displayProfile as a record that references
contributorInformation via its contributorRef field; ensure both are represented
as entities (not cosmetic attributes) and link the relationships in the diagram
so the subject relationship points to activity and collection and contributorRef
points to contributorInformation.

ℹ️ Review info

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 6555ae4 and fc6b658.

📒 Files selected for processing (4)
  • .changeset/add-hyperboards-lexicons.md
  • SCHEMAS.md
  • lexicons/org/hyperboards/config.json
  • lexicons/org/hyperboards/displayProfile.json
🚧 Files skipped from review as they are similar to previous changes (1)
  • .changeset/add-hyperboards-lexicons.md

Comment thread SCHEMAS.md Outdated
Comment on lines +461 to +465
### `org.hyperboards.config`

**Description:** Configuration record for a hyperboard, wrapping an underlying activity or collection with visual presentation settings. Stored in the creator's PDS.

**Key:** `tid`

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟠 Major

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
# Check if ERD.puml exists and what entities/relationships it currently contains
if [ -f "ERD.puml" ]; then
  echo "=== ERD.puml exists ==="
  echo "--- Total lines ---"
  wc -l ERD.puml
  echo ""
  echo "--- Checking for org.hyperboards references ---"
  rg -n "hyperboards" ERD.puml || echo "No hyperboards references found"
  echo ""
  echo "--- Current entities in ERD.puml (sample) ---"
  rg -n "^entity" ERD.puml | head -30
else
  echo "ERD.puml not found in repository root"
  fd -t f "ERD.puml"
fi

Repository: hypercerts-org/hypercerts-lexicon

Length of output: 358


🏁 Script executed:

#!/bin/bash
# Check what org.hyperboards lexicons exist in the repository
echo "=== Looking for org.hyperboards lexicons ==="
fd "hyperboards" lexicons/ --type f --extension json
echo ""
echo "=== Content of hyperboards lexicons (if any exist) ==="
fd "hyperboards" lexicons/ --type f --extension json --exec cat {} \;

Repository: hypercerts-org/hypercerts-lexicon

Length of output: 177


🏁 Script executed:

#!/bin/bash
# Check for references to activity, collection, contributorInformation in SCHEMAS.md around line 461
echo "=== SCHEMAS.md context around line 461 ==="
sed -n '455,475p' SCHEMAS.md
echo ""
echo "=== All org.hyperboards sections in SCHEMAS.md ==="
rg -A 5 "org\.hyperboards" SCHEMAS.md

Repository: hypercerts-org/hypercerts-lexicon

Length of output: 3599


🏁 Script executed:

#!/bin/bash
# Search more broadly for hyperboards in the entire repository
echo "=== All hyperboards files in repo ==="
fd "hyperboards" . --type f
echo ""
echo "=== Check for *.json files containing hyperboards ==="
rg "hyperboards" --type json -l
echo ""
echo "=== Check lexicons directory structure ==="
find lexicons -type d | head -20

Repository: hypercerts-org/hypercerts-lexicon

Length of output: 613


🏁 Script executed:

#!/bin/bash
# Look at git status to understand what's being changed
echo "=== Recent git changes ==="
git status 2>/dev/null || echo "Git status not available"
echo ""
echo "=== Check if there are any staged hyperboards changes ==="
git diff --name-only 2>/dev/null | grep -i hyperboards || echo "No staged hyperboards changes in git diff"
echo ""
echo "=== List all files in lexicons/org ==="
find lexicons/org -type f -name "*.json" | sort

Repository: hypercerts-org/hypercerts-lexicon

Length of output: 1119


🏁 Script executed:

#!/bin/bash
# Examine the actual hyperboards JSON files
echo "=== org.hyperboards.config.json ==="
cat lexicons/org/hyperboards/config.json
echo ""
echo "=== org.hyperboards.displayProfile.json ==="
cat lexicons/org/hyperboards/displayProfile.json

Repository: hypercerts-org/hypercerts-lexicon

Length of output: 7625


🏁 Script executed:

#!/bin/bash
# Check the current structure of ERD.puml to understand what entities are documented
echo "=== All entities in ERD.puml ==="
rg '^entity' ERD.puml
echo ""
echo "=== Sample relationships in ERD.puml ==="
rg '\{.*\}' ERD.puml | grep -E '(one|many|^\|)' | head -20

Repository: hypercerts-org/hypercerts-lexicon

Length of output: 241


🏁 Script executed:

#!/bin/bash
# Check if activity, collection, and contributorInformation are in ERD.puml
echo "=== Checking for hypercerts entities in ERD.puml ==="
rg "activity|collection|contributorInformation" ERD.puml -n
echo ""
echo "=== Full ERD.puml content ==="
cat ERD.puml

Repository: hypercerts-org/hypercerts-lexicon

Length of output: 8989


Update ERD.puml to include the two new org.hyperboards entities and their relationships.

The new org.hyperboards.config and org.hyperboards.displayProfile lexicons are missing from ERD.puml. org.hyperboards.config should reference both activity and collection (via the subject field which accepts either entity), and org.hyperboards.displayProfile should reference contributorInformation (via the contributorRef field). These are record-level entities with structural relationships, not cosmetic fields, and must be included in the diagram per the coding guidelines.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@SCHEMAS.md` around lines 461 - 465, Update ERD.puml to add the two new record
entities org.hyperboards.config and org.hyperboards.displayProfile and their
structural relationships: add org.hyperboards.config as a record that references
activity and collection via its subject field (subject should accept either
activity or collection) and add org.hyperboards.displayProfile as a record that
references contributorInformation via its contributorRef field; ensure both are
represented as entities (not cosmetic attributes) and link the relationships in
the diagram so the subject relationship points to activity and collection and
contributorRef points to contributorInformation.

@aspiers
aspiers force-pushed the feat/add-hyperboards-lexicons branch from 811e5d0 to 542db0e Compare February 26, 2026 17:17
Comment thread lexicons/org/hyperboards/config.json Outdated
@@ -0,0 +1,152 @@
{
"lexicon": 1,
"id": "org.hyperboards.config",

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Think this should be org.hyperboards.board

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

implemented

Comment thread lexicons/org/hyperboards/config.json Outdated
Comment thread lexicons/org/hyperboards/config.json Outdated
"description": "Per-contributor presentation override within a specific board.",
"required": ["itemRef"],
"properties": {
"itemRef": {

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

identityOverride or just identity

@aspiers aspiers left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Some simple renames but otherwise good

@aspiers aspiers assigned holkexyz and unassigned holkexyz Feb 27, 2026
@holkexyz
holkexyz requested a review from aspiers March 1, 2026 21:55
daviddao and others added 7 commits March 2, 2026 01:03
- Rename board → config (org.hyperboards.config)
- Rename contributor → displayProfile (org.hyperboards.displayProfile)
- Use union [uri, smallImage] for image fields (project convention)
- Change backgroundOpacity from decimal string to integer 0–100
- Replace circularImage boolean with imageShape knownValues in boardConfig
- Make boardItem.itemRef a union supporting strongRef and contributorIdentity
- Regenerate SCHEMAS.md

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Change key from tid to literal:self (one profile per user)
- Drop contributorRef (owner is implicit from PDS)
- Add displayName and image fields
- Use union types for image fields (URI or blob)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Add org.hypercerts.defs#smallVideo (video/mp4, video/webm, up to 20MB).
Change videoUrl to video union (uri | smallVideo) in config and displayProfile.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Rename config.json to board.json (org.hyperboards.config → org.hyperboards.board)
- Rename items → contributorOverrides, boardItem → contributorOverride
- Rename itemRef → contributor

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Rename contributorOverride(s) → contributorDefault(s) to reflect
  fallback semantics
- Add 'override' boolean field to control whether defaults take
  precedence over the contributor's own settings
- Update all field descriptions to clarify default/fallback behavior

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@aspiers
aspiers force-pushed the feat/add-hyperboards-lexicons branch from 244d5ad to 895b884 Compare March 2, 2026 10:50
@s-adamantine

Copy link
Copy Markdown
Contributor

Review commit pushed: naming improvements for org.hyperboards.board

Changes

Renames:

  • contributorDefaultscontributorAppearances (array field on board record)
  • contributorDefaultcontributorAppearance (definition name)
  • overrideenforced (boolean flag within each appearance entry)

Updated descriptions:

  • Array field: "Per-contributor appearance settings for this board. Each entry configures how a specific contributor is visually presented, such as display name, avatar, and hover effects."
  • Definition: "Appearance settings for a specific contributor on this board."
  • Enforced flag: "When true, these appearance settings take precedence over the contributor's own display profile. When false or omitted, they serve as fallbacks."

Rationale

The previous names (contributorDefault, override) were misleading:

  • "Default" implies the values are always fallbacks, but when override: true they're the opposite — they take precedence. contributorAppearance is neutral and describes what the object actually is (appearance config), independent of the merge behavior.
  • "Override" is ambiguous about direction (who overrides whom). enforced reads more clearly: the board creator is enforcing these values over the contributor's own display profile.

The descriptions were also simplified — the array-level description no longer tries to explain the enforced flag's precedence semantics (that's the flag's own description's job).

All checks pass (gen-api, lint, prettier, typecheck, build, 7/7 tests).

Comment thread lexicons/org/hyperboards/config.json Outdated
Comment thread lexicons/org/hyperboards/board.json Outdated
Comment thread lexicons/org/hyperboards/board.json Outdated
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@aspiers
aspiers merged commit 255c19c into hypercerts-org:develop Mar 2, 2026
4 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Add org.hyperboards.board and org.hyperboards.contributor lexicons

4 participants