Skip to content

vivy-company/VVDevKit

Repository files navigation

VVDevKit

macOS iOS Swift License Sponsor

VVDevKit is a Metal-based rendering framework for macOS and iOS with batteries included. It provides production-oriented modules for code editing, diff rendering/review, markdown rendering, syntax highlighting, and timeline-style UI, all built on top of a shared primitives layer.

Built for Aizen.win.

Status: VVDevKit is early and under active development. Public APIs, module boundaries, and package structure can change.

What Is Included

  • VVDevKit (umbrella module)
  • VVCode (Metal-based code editor + diff UI surfaces)
  • VVMarkdown (Metal-based markdown renderer)
  • VVMetalPrimitives (scene graph, primitives, and layout/view composition)
  • VVHighlighting (Tree-sitter syntax highlighting)
  • VVGit (git parsing/integration helpers, including unified diff parsing)
  • VVLSP (Language Server Protocol integration)
  • VVChatTimeline (timeline/chat UI module built on VVMarkdown + primitives)
  • VVDiff capability surface (via VVDiffView / VVMultiBufferDiffView in VVCode and VVDiffParser / VVDiffHunk in VVGit)

Architecture

VVDevKit is layered:

  1. VVMetalPrimitives is the rendering substrate (primitives, scene, layout/view composition).
  2. Feature modules (VVCode, VVMarkdown, VVChatTimeline) build on top of primitives.
  3. Support modules (VVHighlighting, VVGit, VVLSP) provide language and tooling integration.
  4. VVDevKit re-exports the batteries-included surface for convenient adoption.

See Docs/Architecture.md for module boundaries, dependency rules, and extraction phases.

Requirements

  • macOS 13+ / iOS 13+
  • Swift 5.9+

Installation

Add the package:

dependencies: [
    .package(url: "https://github.com/vivy-company/VVDevKit", from: "0.1.0")
]

Use the umbrella product:

.target(
    name: "YourApp",
    dependencies: [
        .product(name: "VVDevKit", package: "VVDevKit")
    ]
)

Then import:

import VVDevKit

You can also depend on individual products (VVCode, VVMarkdown, VVMetalPrimitives, VVChatTimeline) if you want a narrower integration.

Diff APIs

Diff support is first-class in VVDevKit.

  • VVDiffView (VVCode): Metal-backed unified/split diff renderer.
  • VVMultiDiffDocument + VVMultiBufferDiffView (VVCode): multi-file diff projection and review surface.
  • VVDiffParser + VVDiffHunk (VVGit): parse unified diff text and map line-level change status.

Today this is shipped as VVCode/VVGit APIs (not a separate Swift package product named VVDiff).

Dynamic Grammar Loading

Language grammars are built as dynamic libraries and loaded on demand.

swift build --product TreeSitterSwift
swift build --product TreeSitterPython
swift build --product TreeSitterRust

Bundle the generated .dylib files in your app's Frameworks folder.

Roadmap

  • Keep VVDevKit as the batteries-included framework in this repository.
  • Keep VVMetalPrimitives as the core substrate and continue hardening boundaries.
  • Extract primitives/pipelines into a separate Swift package (and potentially separate repo) when boundaries are stable.

License

GPL-3.0

About

VVDevKit is a Metal-based rendering framework for macOS/iOS with batteries included: VVCode, VVMarkdown, VVMetalPrimitives, VVChatTimeline, highlighting, Git, and LSP. Built for Aizen.win.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Sponsor this project

 

Packages

 
 
 

Contributors