Skip to content

About

Online community dashboard as a new tab — Bluesky feeds + Telegram / Slack digests + participation opportunities

Resources

Stars

1 star

Watchers

0 watching

Forks

Repository files navigation

My Community

A community dashboard available as a Chrome new-tab extension and a responsive web companion. Stay connected to your communities across devices, and keep browser tabs in tidy local collections when the extension is installed.

What you get

Community Digest — Curated links shared by your communities, with thumbnails and descriptions. No algorithmic noise, just what your people are reading.

Bluesky Network — Popular posts from people you follow. Tune the feed right at the top: choose the source and time window, show or hide reposts, and rank by most liked or most discussed. Connect your Bluesky account to enable this feed.

Participation — Upcoming sessions, deliberations, and events from your communities. Never miss an opportunity to join the conversation.

Saved Tabs — A built-in tab manager. Save the current tab with the toolbar button or Alt+S, organize tabs into collections, drag to reorder, search across everything, and import from Toby or your bookmarks. Everything stays local and private to this device, never shared with your community, with automatic daily backups.

Toggle any feed on or off. Choose light, dark, or system theme. The extension works without Bluesky — digest and participation are always available.

Install

  1. Download the latest .zip from Releases
  2. Extract the folder
  3. Open Chrome and go to chrome://extensions
  4. Enable "Developer mode" (toggle in top-right)
  5. Click "Load unpacked" and select the extracted folder
  6. Open a new tab — you're in!

The companion dashboard is also available at my.citizeninfra.org without an extension. It includes the community dashboard, focused feeds, account settings, and cross-device layout preferences. Browser tab management remains extension-only.

Development

The two entry points share the dashboard components, stores, feed lifecycle, normalization rules, and preference schema.

# Extension
cd extension
npm ci
for f in scripts/*.test.mjs; do node "$f" || break; done
npm run build

# Web companion
cd web
npm ci
npm test
npm run dev

The repository root contains Railway configuration for the primary web service and netlify.toml for static secondary deployments. Both build from the full repository because web/ imports shared dashboard source under extension/src/; Railway starts web/server.mjs, while Netlify publishes web/dist with the SPA redirects and matching cache/security headers in web/public.

Secondary deployments can set VITE_PINNED_COMMUNITY_ID to preselect one community and hide the picker, VITE_BLUESKY_ENABLED=false to remove Network, Bluesky sign-in, and OAuth client metadata, and VITE_LINKS_API_BASE to read links from that community's private service. The pinned PXXI deployment always disables Bluesky, offers Telegram sign-in first and email for accounts already linked to Telegram, and routes the Community Input sign-in prompt to those same account options. On PXXI, VITE_DECISIONS_API_BASE adds Crapotkin's member-gated decision index to the existing Community Input feed and provides the selected decision's detail route; PXXI falls back to its configured links origin because both endpoints live on Crapotkin. Other deployments never load the private brain index. VITE_WEB_ORIGIN remains the deployment's exact public origin. web/.env.philanthropic-xxi.example records the PXXI shape without credentials.

The legacy Supabase session source is an optional fallback: set both VITE_SUPABASE_URL and VITE_SUPABASE_ANON_KEY at build time to include it, or omit both and use the primary events API alone. See docs/web-privacy.md for the browser storage and synchronization contract.

Getting started

Click the gear icon to:

  • Sign in to your community account with Bluesky or email
  • Select your communities
  • Toggle which feeds to show

Open the Network tab and connect Bluesky to see popular posts from people you follow (optional).

Changelog

0.3.26 — September 2026

  • You can dress your dashboard in a community's own look. When a community you follow publishes an official skin, it appears under Settings → Appearance → Skin. Preview it first; nothing changes until you choose "Use this skin", and you can return to the My Community default at any time. A skin changes colours, type and corners only. If a community later updates its skin, you are offered the new version rather than switched to it.
  • Avails polls show up in Participation previews. Open scheduling polls from your communities now appear in the Participation tile alongside events, and polls from private communities are only requested with your community account.

0.3.25 — September 2026

  • Dashboard tiles stay off when you turn them off. Digest, Participation, and Community Input no longer switch themselves back on immediately after you hide them in Settings.

0.3.24 — September 2026

  • Dashboard previews stay current even when you do not open their full feed. Digest, Participation, and Network tiles now refresh expired snapshots quietly after the dashboard appears, while keeping their previous content visible during the update. This fixes community digest tiles that could otherwise remain frozen indefinitely.
  • Your dashboard choices can follow you between the extension and the web companion. Signed-in community accounts synchronize selected communities, visible feeds, tile order and depth, and Network preferences; if two devices change the layout at once, My Community asks which version to keep instead of overwriting one silently.
  • The extension can work as a dashboard without managing tabs. Turn Tab Manager off in Settings to hide collections and disable toolbar or Alt+S tab-saving actions, so a hidden collection cannot silently capture and close a tab. Community wiki suggestions remain available.
  • Connected community spaces can appear alongside the main feeds. Communities may surface featured work, contribution links, stewardship tasks for administrators, and active shared-listening rooms without crowding the core dashboard tiles.

0.3.23 — September 2026

  • The dashboard is now a community overview rather than a row of feed tabs. Enabled feeds appear as rearrangeable tiles, with civic priorities such as decisions needing your response and events happening now brought forward. Each tile automatically fits complete preview rows into the available space, can remember an exact item limit, and links each preview directly to its underlying post, source, session, or decision. The full feed remains available from the tile heading or its quiet hover action.
  • New tabs keep useful previews without reloading every source. Previously loaded, account-matched previews remain visible while the most recently focused feed refreshes; feeds with no saved preview populate one at a time after first paint. Community and Bluesky caches are separated by account so private content cannot cross identities.
  • Community Input now reads as one civic workflow. Decisions and suggested wiki sources are grouped as Needs your response, In progress, or Resolved, while call proposals stay in Participation where they belong.
  • The extension asks for one fewer website permission. A legacy Community Admin host entry that the current sign-in and feed paths no longer use has been removed.

0.3.22 — August 2026

  • Saying when you are free is now only offered for public communities. The times you publish are saved to your own Bluesky account, which anyone can read — and because the record names the community it is for, publishing one for a private community would have shown that you are a member of it, to anyone looking, with no way to take it back afterwards. Private communities now say so on the card instead of offering the grid. Nothing you published before is affected: the only community anyone could publish for was already public.

0.3.21 — August 2026

  • Say once when you are usually free, and your community's calls can find a time without a poll. When you say you would come to a proposed call, the card now asks when you are generally free — seven days, morning, afternoon or evening, a few taps. Your answer is kept for the whole community rather than that one call, so every later call it proposes costs you nothing. Once enough people have answered, a time gets picked and booked without anyone making a poll or chasing replies. Until now there was nowhere to answer that question at all, which is why every call proposed so far has quietly expired without being scheduled.
  • Your answer is saved to your own Bluesky account, not to us. That means it is yours to change or delete, and any tool can read it rather than only this one. It is also readable by anyone, which the card says plainly before you publish it, and it expires after eight weeks unless you update it. Nothing is ever put in your calendar without asking you first.

0.3.20 — August 2026

  • Calls your community is proposing now have their own card in Participation. When someone asks whether the community should meet about something, it appears above "Finding a time", showing how many people have said they would be there, and you answer by liking the Bluesky post straight from the card. Until now these arrived in Community Input dressed as consent decisions: they offered Agree, Pass and Raise objection, showed a tally permanently stuck at zero, and answered a click with a raw server error. They also left a count on the Community Input tab that nothing you did could clear.
  • The extension no longer sends anything to Google. Two things had been reporting back quietly. Every new tab loaded its fonts from Google's servers, and every saved tab sent that site's web address to Google to fetch its icon, on every render rather than once when you saved it. The fonts now ship inside the extension and icons come from the browser's own cache, so neither happens at all.
  • It asks for access to fewer websites. Three of the twelve website permissions were either never used or no longer needed, and are gone.

0.3.19 — August 2026

  • Nothing changes for you in this one. It is groundwork so the sign-in breakage in 0.3.18 cannot repeat: Community Admin's web address used to be written down in six separate places that nothing kept in agreement, and updating only some of them left the extension half-working with no error explaining why. It is now recorded once, and a release where the remaining copies disagree fails to build instead of shipping.

0.3.18 — August 2026

  • Sign-in works again. Community Admin moved to a new web address and the extension was still looking for it at the old one, which broke the Bluesky and email sign-in paths at the same time. Both are restored.
  • Bluesky sign-in now checks which server sent you back. Every Bluesky account can live on a different server, and the extension talks to whichever one your handle points at. It already confirmed that a sign-in response belonged to your session; it now also confirms the response came from the server it expected, and refuses it otherwise.

0.3.17 — July 2026

  • Sessions your community opens now appear in your Participation feed. When an organizer publishes a Harmonica session, a retrospective for instance, it arrives in a new "Open to Join" group with a link straight into the conversation, and moves to Recently Completed with a link to the results once it closes. These sessions carry no start time because you take part whenever suits you, which is exactly why they never showed up before.

0.3.16 — July 2026

  • Scheduling polls now appear in your Participation feed. When someone opens an Avails poll to find a time for your community, it shows up as a card in a new "Finding a time" group, so you can add your availability without opening a chat app. The response count, which used to always read zero, now shows the real number.

0.3.15 — July 2026

  • The dashboard feeds are easier to read, in both light and dark themes. Buttons and badges that were hard to read on the dark theme now meet contrast standards, the community objection button is legible everywhere, and the option chips throughout Settings announce their selected state to screen readers.
  • Feeds now tell you when something failed to load. If the Digest, Participation, or Community Input feed can't reach its source, you see a calm "Something didn't load, try again" instead of an empty page that looked like there was simply nothing there.
  • Signed-out Community Input shows what it is for. Instead of a bare sign-in form, the tab previews the kinds of decisions and sources your community weighs in on, then invites you to sign in.
  • Small refinements. Consistent loading messages across feeds, tidier titles, and source labels that use the app's own palette instead of third-party brand colors.

0.3.14 — July 2026

  • Choose where wiki suggestions go, right where you pick your communities. The "Wiki suggestions go to" setting moved next to your community list in Settings, so it is always visible instead of tucked under the tab-saving options. Follow more than one community and you pick the target; with a single community it is automatic.
  • Turning the toolbar button into a wiki-suggest button is now a clear on/off toggle. It replaces the look-alike "save" option that used to sit beside "Saved Tabs", and it spells out that suggesting leaves the tab open, unlike saving, which closes it.
  • Settings controls are more accessible. The option chips throughout Settings now announce their selected state to screen readers.

0.3.13 — July 2026

  • Suggesting a page now tells you what happened. When you send a page to your community's wiki, a message appears naming the outcome and community ("Suggested to Scenius"), and the toolbar tooltip reflects the action, so you are not left guessing when the tab stays open.
  • The Community Input feed is organized into sections. Decisions and sources are grouped into Needs your response, In progress, and Resolved, so what needs your attention sits up top and settled items move out of the way.
  • People show up by their Bluesky handle. Suggestions and proposals from Bluesky members now show their @handle instead of a generic "a member" or "an organizer."

0.3.12 — July 2026

  • Suggest any page for your community's wiki. Send the page you're on to your community's wiki queue, either with the toolbar button (set it to "Community wiki queue" in Settings) or the new Alt+Shift+S shortcut. It appears in the Community Input tab for members to support, so good sources rise to the wiki together. Pick which community suggestions go to under Settings, Save Behavior.

0.3.11 — July 2026

  • Community knowledge sits in the same feed as decisions. The Community Input tab now shows sources your community is weighing for the wiki, right alongside decisions to ratify. Support, pass, or oppose a source, watch it move from gathering support to ready for the wiki, and the tab badge now counts both decisions and sources awaiting your input.

0.3.10 — July 2026

  • The Network feed now respects your Bluesky content settings. Posts containing words you have muted, posts you have hidden, and replies or quote posts you have chosen to hide on Bluesky no longer show up here. Your reposts preference is picked up from Bluesky too, and you can still change it in the feed's controls.

0.3.9 — July 2026

  • The Network feed now opens on the best of your follows. It defaults to Bluesky's own "Best of Follows" feed, which surfaces the top posts from across everyone you follow, instead of our own reshuffle of your most recent posts. "Popular With Friends" sits next to it, both under Algorithmic in the feed picker. If a feed is ever unavailable, the view falls back to your Following timeline so it never comes up empty. Following and Lists still rank by most liked or most discussed, exactly as before.

0.3.8 — July 2026

  • Network posts show what they actually contain. Links, @mentions, and #hashtags in a post are now clickable, link posts show a preview card, and quoted posts render inline instead of vanishing. Posts with several images show all of them, up to four. Video and galleries show a marker for now and open on Bluesky.
  • Clearer, more accessible cards. Each post card is now a proper link you can open with the keyboard, and every embedded link or quote is its own target, so you land exactly where you clicked.

0.3.7 — July 2026

  • The Network feed now respects each feed's nature. Curated feeds like "Popular With Friends" are shown the way the feed itself ranks them, instead of being reshuffled by engagement and trimmed to a time window that never applied. The feed picker groups your sources into Chronological (Following, Lists) and Algorithmic, and the time window and sort controls now appear only where they mean something.
  • "Most discussed" actually sorts by discussion. It now ranks posts by how many replies they drew, so it surfaces genuinely different posts from "Most liked" instead of a near-identical list.

0.3.6 — July 2026

  • The Network feed shows its filters, and you can change them in place. The feed now opens with the rule it is using across the top: which feed, how far back, whether reposts show, and how posts are ranked. Adjust any of them right there instead of opening Settings. The ranking reads "most liked" or "most discussed" so it is clear what each does. (Disconnecting Bluesky moved to Settings, under Network.)
  • Your saved tabs are marked private. A small lock sits beside "Collections" as a reminder, and the Tab Manager tab in Settings explains it in full: your saved tabs and collections stay on this device and are never shared with your community.

0.3.5 — July 2026

  • The consent loop closes. Objected decisions now show the objection itself (who raised it stays private), you can change your response any time while the window is open, and amended re-posts link back to the version they replace.
  • You can see there's something to decide. The Community Input tab shows a badge with the number of open decisions you haven't responded to.

0.3.4 — July 2026

  • Decisions show where they came from. A decision drafted from a sync meeting now names the meeting it came from, so you know which conversation you are being asked to consent to.

0.3.3 — July 2026

  • Community Input: decide together by consent. A new signed-in tab shows the decisions your communities are weighing. Agree, pass, or raise a blocking objection with a reason. Silence counts as consent, and a decision ratifies when its window closes without an objection. Sign in with email or Bluesky to take part.

0.3.2 — July 2026

  • Bluesky now stays connected. Fixed a bug where the Network feed kept asking you to reconnect Bluesky even though you had already signed in. Your sign-in now persists reliably across new tabs and days.

0.3.1 — July 2026

  • Cleaner, more consistent typography. The editorial serif is now reserved for the "My Community" wordmark and the title of the collection you are viewing; sidebar and settings labels use the clean sans throughout. "Dashboard" reads as a first-class destination above your collections.
  • Fixed the "Move to" menu. Moving a saved tab to another collection now opens a proper floating menu that shows the full list, scrolls if it is long, and no longer gets clipped as you scroll the collection.

0.3.0 — July 2026

  • Sign in with Bluesky or email. Your community account now has two equal sign-in options: a Bluesky account or an email magic link. Pick whichever your community knows you by.
  • One Bluesky sign-in for everything. A single Bluesky sign-in powers both your community account and the Network feed. App passwords are retired; you sign in through Bluesky's own consent screen instead. If you used the old app-password flow, you will be prompted to reconnect once.
  • The Bluesky tab is now "Network." The same ATProto protocol runs different networks (Bluesky, Blacksky, and more), so the tab reflects the network rather than one app. Connect the feed right from the Network tab.
  • Note: this update adds the identity permission and a couple of Bluesky host permissions (for the in-browser sign-in), so Chrome will ask you to re-approve the extension on update.

0.2.0 — June 2026

  • Saved Tabs: a full tab manager now lives alongside the dashboard. The dashboard is pinned at the top of the new side panel; your tab collections sit below it. Save tabs with the toolbar button or the Alt+S shortcut, drag to reorder within and across collections, search everything, and import from Toby or Chrome bookmarks. Tabs are stored locally with a daily backup.
  • Save targets and backups are configurable in Settings → Save Behavior / Backups; set the keyboard shortcut at chrome://extensions/shortcuts.
  • Note: this update adds the alarms, downloads, and bookmarks permissions (for backups, daily backup files, and bookmark import), so Chrome will ask you to re-approve the extension on update.

0.1.4 — February 2026

  • Live jam rooms from Navidrome Jam appear in the participation feed with animated equalizer bars
  • Community selection moved to its own settings section — events-only communities (Newspeak House, Civic Tech Toronto, Metagov) no longer shown under "Telegram groups"
  • Metagov added as a community (Luma events)

0.1.3 — February 2026

  • Participation feed now aggregates events from all selected communities (Telegram event links, external APIs)
  • Events color-coded by community — accent bars and badges match digest feed colors
  • Source badges (Luma, Telegram) and location display on event cards

0.1.2 — February 2026

  • Like and unlike Bluesky posts directly from the feed
  • Digest links now stay visible for 7 days (previously disappeared after Telegram digest was posted)

0.1.1 — February 2026

  • Choose from your saved Bluesky feeds
  • See which community each link comes from (color-coded badges)
  • Share links to Bluesky with one click
  • Cleaner settings organized by feed

0.1.0 — February 2026

  • Community dashboard replacing Chrome new tab
  • Community Digest with thumbnails and descriptions
  • Bluesky feed with time windows (24h/7d/30d) and engagement sorting
  • Participation feed with sessions and events
  • Light/dark/system theme

Roadmap: ATProto as shared identity

My Community currently uses Bluesky app passwords for the Bluesky feed. As the Citizen Infrastructure ecosystem adopts ATProto OAuth as a shared identity layer, the dashboard becomes a unified hub:

  • One login for all tools. Sign in with your Bluesky handle once — your identity works across avails (scheduling), navidrome-jam (music), community-admin, and any future Citizen Infra tool. No separate accounts.
  • Zero-friction scheduling. When you click an avails poll banner, your identity is already known — go straight to marking availability instead of entering your name.
  • Create polls from the dashboard. Embed avails poll creation directly in the participation feed. Your OAuth session writes to your PDS without leaving the new tab.
  • Richer participation feed. Show personalized status on poll banners ("You haven't responded yet" vs "You responded — 3 slots") by matching your DID against poll responses.
  • Activity tracking. Polls you created or responded to, jam sessions you joined, community events you RSVP'd to — all visible in one place, powered by ATProto records.

ATProto identity turns a collection of independent tools into a coherent ecosystem where your data and identity flow between apps on an open protocol.


Part of Citizen Infrastructure — tools that teach collective action through use.

See also: Dear Neighbors (neighborhood dashboard) · Avails (group scheduling) · Scenius Digest (digest data source)

About

Online community dashboard as a new tab — Bluesky feeds + Telegram / Slack digests + participation opportunities

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Sponsor this project

Packages

Contributors

Languages