HappyView's Avatar

HappyView

@happyview.dev

Lexicon-driven AppView for ATProto. Open source. Maintained by @trezy.codes. https://github.com/gamesgamesgamesgamesgames/happyview

41
Followers
3
Following
36
Posts
18.02.2026
Joined
Posts Following

Latest posts by HappyView @happyview.dev

Preview
GitHub - gamesgamesgamesgamesgames/happyview: A lexicon-driven AppView for ATProto. A lexicon-driven AppView for ATProto. Contribute to gamesgamesgamesgamesgames/happyview development by creating an account on GitHub.

Also added did:web support for DID resolution. Small fix, but if you were running into issues resolving non-PLC identities, that's sorted now.
github.com/gamesgamesgamesgamesgames/happyview

05.03.2026 21:03 ๐Ÿ‘ 1 ๐Ÿ” 0 ๐Ÿ’ฌ 0 ๐Ÿ“Œ 0

I'll probs add some more config around that feature later (disable, limit allowed domain authorities, etc), but it's pretty cool to no longer need to include a special handler for app.bsky.actor.getProfile. ๐Ÿ˜Ž

05.03.2026 21:03 ๐Ÿ‘ 1 ๐Ÿ” 0 ๐Ÿ’ฌ 1 ๐Ÿ“Œ 0

Say a request comes in for com.example.doThing and your instance doesn't have that lexicon. HappyView resolves the domain authority (example.com), makes the XRPC call there, and proxies the result back. Way more useful as general-purpose ATProto infrastructure.

05.03.2026 21:03 ๐Ÿ‘ 1 ๐Ÿ” 0 ๐Ÿ’ฌ 1 ๐Ÿ“Œ 0

HappyView can now resolve and proxy XRPC calls it doesn't have lexicons for. Instead of rejecting unrecognized methods, it'll resolve the target and proxy the call through.

05.03.2026 21:03 ๐Ÿ‘ 1 ๐Ÿ” 0 ๐Ÿ’ฌ 1 ๐Ÿ“Œ 0
Preview
Release v1.10.0 ยท gamesgamesgamesgamesgames/happyview 1.10.0 (2026-03-05) Bug Fixes add support for did:web when resolving DIDs (1bc5114) Features resolve and proxy unrecognized XRPCs (ee43d05)

A new release already wuuuuuuuuuuuuut ๐Ÿงต
github.com/gamesgamesga...

05.03.2026 21:03 ๐Ÿ‘ 8 ๐Ÿ” 1 ๐Ÿ’ฌ 2 ๐Ÿ“Œ 0

OH, sneak preview: within the next couple of releases, I'll very likely be adding support for writing your scripts in Typescript instead of just Lua. ๐Ÿ˜‰

05.03.2026 14:21 ๐Ÿ‘ 3 ๐Ÿ” 0 ๐Ÿ’ฌ 0 ๐Ÿ“Œ 0
Preview
GitHub - gamesgamesgamesgamesgames/happyview: A lexicon-driven AppView for ATProto. A lexicon-driven AppView for ATProto. Contribute to gamesgamesgamesgamesgames/happyview development by creating an account on GitHub.

Plus the usual batch of bug fixes: Tap reconnections now properly sync collections, backfill edge cases are cleaned up, and a handful of UI fixes.

Curious what y'all wire up with index hooks. Let me know if you build something cool.
github.com/gamesgamesgamesgamesgames/happyview

05.03.2026 14:20 ๐Ÿ‘ 1 ๐Ÿ” 0 ๐Ÿ’ฌ 1 ๐Ÿ“Œ 0

The dashboard also picked up an event log, so you can keep track of what's happening under the hood. Record indexing, script runs, errors, backfills, and significantly more.

Super helpful for debugging hooks or just keeping an eye on things in general.

05.03.2026 14:20 ๐Ÿ‘ 1 ๐Ÿ” 0 ๐Ÿ’ฌ 1 ๐Ÿ“Œ 0

@trezy.codes is already using index hooks to push records to Algolia for search. A few lines of Lua and every record indexed by HappyView automatically gets synced over. That's the kind of thing these are built for.

05.03.2026 14:20 ๐Ÿ‘ 1 ๐Ÿ” 0 ๐Ÿ’ฌ 1 ๐Ÿ“Œ 0

Those hooks can actually do things, too. There's a new http module so your Lua scripts can make outbound requests, plus support for environment variables so you're not hardcoding secrets into your scripts. Sorting support in the db module rounds it out.

05.03.2026 14:20 ๐Ÿ‘ 2 ๐Ÿ” 0 ๐Ÿ’ฌ 1 ๐Ÿ“Œ 0

The headline feature: Index Hooks.

You can now write Lua scripts that run automatically when records are indexed. Want to transform data, trigger side effects, or filter incoming records? Write a hook and HappyView runs it as records come in from the network.

05.03.2026 14:20 ๐Ÿ‘ 2 ๐Ÿ” 0 ๐Ÿ’ฌ 1 ๐Ÿ“Œ 0

A doozy indeed. HappyView v1.9.0 is out, and this one's all about making the Lua scripting layer way more powerful. ๐Ÿงต
#atproto

05.03.2026 14:20 ๐Ÿ‘ 4 ๐Ÿ” 1 ๐Ÿ’ฌ 1 ๐Ÿ“Œ 0
Preview
GitHub - gamesgamesgamesgamesgames/happyview: A lexicon-driven AppView for ATProto. A lexicon-driven AppView for ATProto. Contribute to gamesgamesgamesgamesgames/happyview development by creating an account on GitHub.

All open source under MIT as always:
github.com/gamesgamesgamesgamesgames/happyview

These are the kinds of building blocks that get fun when people start combining them. Curious to see what y'all do with backlinks especially.
#atproto

27.02.2026 15:41 ๐Ÿ‘ 2 ๐Ÿ” 0 ๐Ÿ’ฌ 0 ๐Ÿ“Œ 0

And the big one for v1.8: advanced queries. db.backlinks() lets you find all records that reference a given AT URI, and db.raw() opens up read-only SQL with parameterized queries and automatic column type mapping. If the built-in query functions aren't enough, you can write straight SQL.

27.02.2026 15:41 ๐Ÿ‘ 2 ๐Ÿ” 0 ๐Ÿ’ฌ 1 ๐Ÿ“Œ 1

The Lua scripting layer got a bunch of love. There's a new db.search() function for full-text search, and a toarray() utility that fixes the classic Lua "is this an empty object or an empty array" problem when serializing to JSON.

27.02.2026 15:41 ๐Ÿ‘ 2 ๐Ÿ” 0 ๐Ÿ’ฌ 1 ๐Ÿ“Œ 0

Starting with the basics: you can now delete records from the dashboard and API, including bulk deletion by collection. The lexicon pages also have "View Records" buttons now so you can jump straight to browsing what's been indexed.

27.02.2026 15:41 ๐Ÿ‘ 3 ๐Ÿ” 0 ๐Ÿ’ฌ 1 ๐Ÿ“Œ 0

I've had a few releases since the last update. Here's what's new from since v1.5.0. ๐Ÿงต
#atproto

27.02.2026 15:41 ๐Ÿ‘ 5 ๐Ÿ” 1 ๐Ÿ’ฌ 1 ๐Ÿ“Œ 0

๐Ÿ˜Ž

24.02.2026 19:20 ๐Ÿ‘ 1 ๐Ÿ” 0 ๐Ÿ’ฌ 0 ๐Ÿ“Œ 0

๐Ÿ‘€

24.02.2026 17:09 ๐Ÿ‘ 1 ๐Ÿ” 0 ๐Ÿ’ฌ 1 ๐Ÿ“Œ 0
Preview
HappyView HappyView is the best way to build an AppView for the AT Protocol. Upload your lexicon schemas and get a fully functional AppView, complete with XRPC endpoints, OAuth, real-time network sync, and hist...

Well what do we have here... is it... DOCSโ€ฝ
happyview.dev
#atproto

24.02.2026 02:30 ๐Ÿ‘ 10 ๐Ÿ” 4 ๐Ÿ’ฌ 0 ๐Ÿ“Œ 1

Hey, for folks either using or considering using @happyview.dev: where are you deploying it? I'm trying to update the deployment guides and I need to know where people are actually planning to deploy.

19.02.2026 21:27 ๐Ÿ‘ 8 ๐Ÿ” 1 ๐Ÿ’ฌ 3 ๐Ÿ“Œ 0

When it's saved, I'll automatically generate the endpoint at /xrpc/games.gamesgamesgamesgames.createGame. ๐Ÿ˜Ž

19.02.2026 16:17 ๐Ÿ‘ 2 ๐Ÿ” 0 ๐Ÿ’ฌ 0 ๐Ÿ“Œ 0
A side-by-side editor for lexicon JSON (left) and a Lua script (right).

A side-by-side editor for lexicon JSON (left) and a Lua script (right).

Teaser time. This is a basic procedure lexicon with a processing script.
- prep a game record
- grab a slug or generate one from name
- prep a slug record
- set the same rkey for both records (sidecar model)
- save both records in parallel
- return the uri and cid

#atproto

19.02.2026 16:17 ๐Ÿ‘ 3 ๐Ÿ” 2 ๐Ÿ’ฌ 1 ๐Ÿ“Œ 0

I'm happy again!

18.02.2026 23:26 ๐Ÿ‘ 12 ๐Ÿ” 1 ๐Ÿ’ฌ 0 ๐Ÿ“Œ 0
A dialog showing that my account has been labeled as spam.

A dialog showing that my account has been labeled as spam.

I'll be SadView until this gets fixed. ๐Ÿ˜ข

18.02.2026 23:16 ๐Ÿ‘ 3 ๐Ÿ” 0 ๐Ÿ’ฌ 0 ๐Ÿ“Œ 1

bsky.app/profile/happ...

18.02.2026 23:05 ๐Ÿ‘ 0 ๐Ÿ” 0 ๐Ÿ’ฌ 0 ๐Ÿ“Œ 0
Preview
a man is sitting on a couch and says `` i feel like that needs to be celebrated '' Alt: David from the TV show Schitt's Creek says, "I feel like that needs to be celebrated," with a smug face.

In summary:
- Quickslice is awesome
- Quickslice inspired my creation
- I'm the awesomest now, bebe

18.02.2026 23:04 ๐Ÿ‘ 3 ๐Ÿ” 0 ๐Ÿ’ฌ 0 ๐Ÿ“Œ 0

I think (and @trezy.codes agrees, I just asked him) this is going to be the real power for me. Quickslice generates GraphQL endpoints and schemas, but if you want to do anything more than write, edit, or delete a single record, you're gonna have to build a separate API to sit in front of Quickslice.

18.02.2026 23:04 ๐Ÿ‘ 3 ๐Ÿ” 0 ๐Ÿ’ฌ 1 ๐Ÿ“Œ 0

Trezy is in the process of adding a powerful system for custom processing those endpoints. You can:
- Create a base record and a sidecar at the same time
- Retrieve and hydrate a custom schema
- Use an endpoint like /xrpx/com.example.makeThing to actually delete a thing because you're the devil

18.02.2026 23:04 ๐Ÿ‘ 5 ๐Ÿ” 0 ๐Ÿ’ฌ 1 ๐Ÿ“Œ 0

Second, my lexicon management is /robust/. What's doable today:
- Write lexicons directly in the UI
- Connect lexicons from the ATProto network
- Review the JSON for your lexicons
- Delete a single lexicon

I'll also generate XRPC endpoints for procedure and query lexicons. Quickslice ignores them.

18.02.2026 23:04 ๐Ÿ‘ 4 ๐Ÿ” 1 ๐Ÿ’ฌ 1 ๐Ÿ“Œ 0