view infinite_canvas/docs/README.md @ 279:b3b547563ec7

Add Google connector service and agent wiki Implement the C/Seobeo Google Drive and Gmail connector with encrypted OAuth storage, Zenbu authentication, browser testing, AI tool discovery, chunked HTTP decoding, and Bazel coverage. Consolidate repository guidance into progressive wiki documentation and enforce arena-first allocation for new first-party C code. Co-authored-by: Copilot <[email protected]> Copilot-Session: 84c338fd-0939-4bb3-b7f3-1062eb213e5d
author MrJuneJune <me@mrjunejune.com>
date Mon, 17 Aug 2026 22:22:36 -0700
parents 8d560f50ed4c
children 49e9e591c9bb
line wrap: on
line source

# Infinite Canvas Agent Wiki

Use this tree before changing rendering, entities, pinning, or context:

```text
Infinite Canvas
├── Rendering surfaces
│   ├── Raylib world primitives and UI components
│   ├── Raylib-generated Lucide vectors
│   ├── Native CEF image/web textures
│   └── WebAssembly DOM image/iframe overlays
├── Entity model and extension path
│   ├── defaults and retained state
│   ├── picking, interaction, and drawing
│   └── semantic context serialization
├── Screen-space behavior
│   ├── camera transforms
│   ├── pinned entities
│   └── notification stacking
└── Session lineage
    ├── original renderer
    └── scalability, images, pinning, context, and icons
```

- [Rendering surfaces](rendering.md)
- [Entities and components](entities-and-components.md)
- [Pinning and visible context](pinning-and-context.md)
- [Session lineage](session-lineage.md)

## Runtime frame order

`main.c` owns the integration order:

1. Update viewport dimensions.
2. Let native web surfaces translate focused input.
3. Update scene interaction and keyboard focus.
4. Apply camera pan/zoom.
5. Reproject pinned entities and notification stacks.
6. Reconcile web/image resources with visible entities.
7. Draw the Raylib world.
8. Composite native browser textures or position web overlays.
9. Draw the developer UI.

Preserve this order. In particular, pinned positions must be synchronized before
surface bounds are calculated, and native surface textures must draw after the
Raylib entity frames.