Skip to content

Add a hexagonal Community Home#2117

Closed
baxen wants to merge 4 commits into
mainfrom
fizz/community-home
Closed

Add a hexagonal Community Home#2117
baxen wants to merge 4 commits into
mainfrom
fizz/community-home

Conversation

@baxen

@baxen baxen commented Jul 19, 2026

Copy link
Copy Markdown
Contributor

Why

Buzz needs a stable, useful place to land when no community is selected, rather than treating onboarding as a global mode that can wedge the app.

What

  • Add a responsive honeycomb Community Home for opening, joining, creating, and removing saved communities
  • Make the active community selection nullable and expose Home from the persistent community rail
  • Return cleanly between Home and the join flow, including the zero-community state
  • Cover rendering, selection, join/back navigation, and the visual layout with focused Desktop E2E tests

Risk Assessment

Medium — this changes Desktop startup and community-selection behavior, but is isolated to the community shell and covered by static checks, unit tests, build, and focused E2E tests.

References

  • cd desktop && pnpm check
  • cd desktop && pnpm test — 3,171 passed
  • cd desktop && pnpm build
  • cd desktop && pnpm exec playwright test tests/e2e/community-home.spec.ts --project=smoke --workers=1 — 4 passed
  • Pre-push hooks: desktop, mobile, Rust, and Tauri test gates passed

Generated with Fizz

npub1rf6fvdj6ut0c4kcmjv4p5mmgh89nj58n69uu3fz3cvk3jn500hqs7emz79 and others added 2 commits July 18, 2026 22:36
Co-authored-by: npub1rf6fvdj6ut0c4kcmjv4p5mmgh89nj58n69uu3fz3cvk3jn500hqs7emz79 <1a7496365ae2df8adb1b932a1a6f68b9cb3950f3d179c8a451c32d194e8f7dc1@sprout-oss.stage.blox.sqprod.co>
Signed-off-by: npub1rf6fvdj6ut0c4kcmjv4p5mmgh89nj58n69uu3fz3cvk3jn500hqs7emz79 <1a7496365ae2df8adb1b932a1a6f68b9cb3950f3d179c8a451c32d194e8f7dc1@sprout-oss.stage.blox.sqprod.co>
Design refinement pass on the Community Home surface (visual only —
nullable selection, join/create/remove, and navigation are unchanged):

- Rebuild the hex grid as a true interlocking honeycomb: pointy-top
  hexes that tessellate, ResizeObserver-driven sizing, and balanced
  rows (e.g. 5 tiles render 3+2, not 4+1) instead of a staggered grid
  with large gaps.
- Fix hierarchy: communities now read as elevated hero tiles; join and
  create are lighter, additive cells rather than the heaviest elements.
- Square the icon tiles, strengthen tile contrast/borders, and use a
  clip-path-safe drop shadow for real elevation.
- Polish typography, hover/focus affordances (lift + primary outline +
  "Enter" hint), and add ease-out motion with reduced-motion fallbacks.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Signed-off-by: Bradley Axen <baxen@squareup.com>
baxen added a commit that referenced this pull request Jul 19, 2026
@baxen

baxen commented Jul 19, 2026

Copy link
Copy Markdown
Contributor Author

🐝 Design refinement pass — Community Home

Independent visual/design review by Honey, using the design guidance (heuristics only, no commands) from Impeccable. Underlying behavior (nullable selection, join/create/remove, navigation) is unchanged — this is a visual-only pass.

Before

The hexes didn't interlock (large gaps → scattered, not a honeycomb), the dark Join/Create actions dominated over the actual communities, and the community tiles were washed-out and flat.

01-before

After

A true interlocking honeycomb (pointy-top tessellation, ResizeObserver-driven, balanced rows). Communities read as elevated hero tiles; Join/Create become lighter, additive cells. Icon tiles squared, contrast/borders strengthened, clip-path-safe drop shadow for real elevation.

02-after

Hover / focus

Tile lifts with a primary outline and an "Enter →" hint; ease-out motion with a prefers-reduced-motion fallback.

03-after-hover

Responsive

The comb reflows and stays interlocked at narrow widths (hex size + columns adapt).

04-after-narrow

Empty state

With no saved communities, the two additive cells center cleanly over the helper copy.

05-after-empty


Validation: biome lint + tsc clean, check:px-text guard clean, production build green, and the 4 focused community-home E2E tests pass.

Co-authored-by: npub1rf6fvdj6ut0c4kcmjv4p5mmgh89nj58n69uu3fz3cvk3jn500hqs7emz79 <1a7496365ae2df8adb1b932a1a6f68b9cb3950f3d179c8a451c32d194e8f7dc1@sprout-oss.stage.blox.sqprod.co>
Signed-off-by: npub1rf6fvdj6ut0c4kcmjv4p5mmgh89nj58n69uu3fz3cvk3jn500hqs7emz79 <1a7496365ae2df8adb1b932a1a6f68b9cb3950f3d179c8a451c32d194e8f7dc1@sprout-oss.stage.blox.sqprod.co>
@baxen baxen closed this Jul 19, 2026
Reframe Community Home from a grid of community tiles into a single
connected honeycomb you build out — the model baxen asked for after
closing #2117.

- Real lattice: axial hex coordinates -> absolute pixel positions
  (pointy-top), ResizeObserver fit-to-container. Gapless and fully
  connected at any size, replacing the row-of-flexbox layout that read
  as floating hexes.
- Center is you: a profile hex from useIdentityQuery (works with no
  relay), defaulting to "You". Click opens identity settings.
- Peers on one board: saved communities and local managed agents
  (useManagedAgentsQuery, offline) spiral outward as filled hexes.
- Hover to grow: idle shows only filled cells; pointer-enter/focus
  reveals the connected frontier — faint ghost cells plus three live
  create tiles (New agent / New community / Connect community). Hidden
  tiles are pointer-events-none so blank-area clicks can't fire them.
- Wire "New agent" via requestOpenCreateAgent and mount
  RequestedAgentCreateDialogs here so it works before any relay.

Required radius is never capped, so no profile/community/agent/create
cell is ever silently dropped; MAX_RADIUS only bounds the decorative
ghost ring.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Signed-off-by: Bradley Axen <baxen@squareup.com>
@baxen baxen reopened this Jul 19, 2026
baxen added a commit that referenced this pull request Jul 19, 2026
@baxen

baxen commented Jul 19, 2026

Copy link
Copy Markdown
Contributor Author

Community Home, re-imagined: grow your own hex lattice

Reworked after @baxen closed this to rethink the model. Community Home is no
longer a grid of community tiles — it's a single connected honeycomb you
build out
, with agents, communities, and relays all peers on one board.

The model

  • Mostly-blank page with the gradient background showing through.
  • Center hex = you — your profile, with a default for someone who has no
    relay yet. Works fully offline (useIdentityQuery).
  • Hover to grow: idle shows only your filled cells; moving into the area
    reveals the connected frontier — faint ghost cells plus three live create
    tiles (New agent · New community · Connect community).
  • One regular, fully-connected lattice (axial hex coords → absolute pixel
    positions), not floating hexes. Only hovered or filled cells are ever visible.

Fresh — just you

01-fresh

Fresh — hover reveals the create frontier

02-fresh-hover

Populated — your communities on the lattice

03-populated

Populated — hover reveals frontier + create tiles

04-populated-hover


Under the hood

  • Communities (useCommunities) and local managed agents
    (useManagedAgentsQuery, offline) spiral outward from center as filled hexes.
  • "New agent" wired via requestOpenCreateAgent; RequestedAgentCreateDialogs
    is mounted here so it works before any relay is connected.
  • Hidden create tiles are pointer-events-none so a blank-area click can't
    fire an action; keyboard focus re-enables them. Required lattice radius is
    never capped, so no cell is ever silently dropped.

Validation: biome + tsc clean · check:px-text clean · production build
green · full desktop E2E smoke/integration 633 passed, 0 failed. The
buzz-push-gateway pre-push Rust failure is unrelated (this commit is desktop
TS/TSX only); CI re-runs the authoritative gate.

baxen added a commit that referenced this pull request Jul 19, 2026
@baxen baxen closed this Jul 19, 2026
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.

1 participant