Skip to content

Add Solid Chat to apps list#954

Closed
jeswr wants to merge 3 commits intosolid:mainfrom
jeswr:feat/add-solid-chat-app
Closed

Add Solid Chat to apps list#954
jeswr wants to merge 3 commits intosolid:mainfrom
jeswr:feat/add-solid-chat-app

Conversation

@jeswr
Copy link
Copy Markdown
Member

@jeswr jeswr commented Apr 21, 2026

Summary

  • Adds a tile on the Apps page for https://chat.solidproject.org/ — a build of LibreChat (the open-source AI chat platform) with Solid integrated so chat history is stored in the user's Pod, making it portable across compatible clients.
  • Adds a new "Chat" option to the category filter dropdown.

Test plan

  • The Solid Chat tile renders on /apps and links to https://chat.solidproject.org/
  • The "Chat" filter shows only the Solid Chat tile
  • The embedded link to the LibreChat site works

🤖 Generated with Claude Code

Adds a tile for https://chat.solidproject.org/ — a build of LibreChat
with Solid integrated to store chat history in the user's Pod, enabling
chat history portability across compatible clients. Also adds a new
"Chat" category to the filter dropdown.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Copilot AI review requested due to automatic review settings April 21, 2026 09:52
@netlify
Copy link
Copy Markdown

netlify Bot commented Apr 21, 2026

Deploy Preview for musical-sawine-26ffa9 ready!

Name Link
🔨 Latest commit ac4613b
🔍 Latest deploy log https://app.netlify.com/projects/musical-sawine-26ffa9/deploys/69ea4ccba773f10008a0b74a
😎 Deploy Preview https://deploy-preview-954--musical-sawine-26ffa9.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.

To edit notification comments on pull requests, go to your Netlify project configuration.

Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Adds Solid Chat (LibreChat + Solid integration) as a new app tile on the Apps page and exposes it via a new “Chat” category filter option.

Changes:

  • Added a new “Chat” option to the category filter dropdown.
  • Added a “Solid Chat” tile linking to https://chat.solidproject.org/ with an inline link to LibreChat.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread apps.html Outdated
Comment on lines +204 to +210
<li data-name="Solid Chat" data-category="Chat">
<a href="https://chat.solidproject.org/">
<div class="tile-header">
<h3>Solid Chat</h3>
</div>
<p>A build of <span class="external-link" role="link" tabindex="0" aria-label="Open LibreChat website" onclick="event.preventDefault(); event.stopPropagation(); window.location.assign('https://www.librechat.ai/'); return false;" onkeydown="if(event.key==='Enter'||event.key===' '){ event.preventDefault(); event.stopPropagation(); window.location.assign('https://www.librechat.ai/'); }">LibreChat</span> — an open-source AI chat platform that unifies conversations across providers like Anthropic, OpenAI, and Azure — with Solid integrated so that your chat history is stored in your Solid Pod, making it portable across compatible clients.</p>
</a>
Copy link

Copilot AI Apr 21, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The “Default Order” sort mode relies on a hard-coded defaultOrder list in the inline script. Since this new tile’s data-name ("Solid Chat") isn’t in that list, selecting “Default Order” will place it (and any other unlisted tiles) ahead of the intended default items. Consider updating the default-order logic to preserve the initial DOM order (e.g., store an original index per tile at load) or, at minimum, add this app to the defaultOrder list and ensure unknown names sort after known ones.

Copilot uses AI. Check for mistakes.
Renames the Apps page tile to "Portable LibreChat" to make its purpose
(AI conversation portability via LibreChat) clearer, adds the LibreChat
logo, and links to the Solid LibreChat fork source code on GitHub.
Copy link
Copy Markdown
Member

@csarven csarven left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What's the process of this getting released under chat.? Is the publication of content and issuing of subdomains limited to ODI or?

Perhaps AI can fix "Continue with Solid":

Image

@elf-pavlik
Copy link
Copy Markdown
Member

Similar to my comment on #955

Can ODI deploy it on ODI namespace and keep Solid Project away from picking winners in app space?

@jeswr
Copy link
Copy Markdown
Member Author

jeswr commented Apr 21, 2026

Similar to my comment on #955

Can ODI deploy it on ODI namespace and keep Solid Project away from picking winners in app space?

We can get chat.solidproject.org moved over to chat.theodi.org or similar -- the reason that domain was chosen is that the Solid team has access to manage the solidproject.org domain but not the theodi.org domain by default.

We will get this done by May 9th.

jeswr added a commit to jeswr/solidproject.org that referenced this pull request Apr 23, 2026
Incorporate @jeswr's PR solid#954 contribution into this PR so that both
apps-list batches land together: a tile for https://chat.solidproject.org/,
a Solid-integrated build of LibreChat that stores chat history in the
user's Pod for portability across compatible clients.

- Re-adds the "Chat" filter option removed in commit f860f46
  (alongside the Liqid Chat removal) now that a working chat app is
  back in the list.
- Uses the a11y-correct markup pattern introduced earlier in this PR:
  native <a href> with descriptive text and rel="noopener noreferrer",
  and both secondary links (LibreChat project site and the solid/LibreChat
  source repo) placed in the sibling <p class="app-source"> outside
  the outer tile anchor so nothing is nested.
- Adds assets/img/logo/librechat.svg (from PR solid#954).
@jeswr jeswr mentioned this pull request Apr 23, 2026
4 tasks
@jeswr
Copy link
Copy Markdown
Member Author

jeswr commented Apr 23, 2026

Superceded by #956

@jeswr jeswr closed this Apr 23, 2026
jeswr added a commit that referenced this pull request Apr 23, 2026
* Add 14 Solid apps to apps list

Adds tiles for the following verified-live Solid-OIDC apps that work
with solidcommunity.net (or any standard Solid Pod provider):

- Liqid Chat (o-team)
- PodCal (Zero Limit)
- SolidOS Databrowser / Mashlib
- Synara AI, Pod Drive, Pod Resume, HomeVault, VitalStats (PrivateDataPod)
- InnerPod, MSFatigue, FilePod, KeyPod, GeoPod, SecureDialog
  (Software Innovation Institute, ANU)

Also adds the following new categories to the filter dropdown:
Chat, Location, Scheduling, Security.

Apps were discovered via web research (Solid Forum, awesome-solid,
anusii/ANU SII, Noel de Martin, Vincent Tunru, PodOS, Stucco, ActivityPods
and PrivateDataPod ecosystems) and filtered to those that are live and
support arbitrary Solid OIDC providers. Apps that were found to be
provider-locked (e.g. Pocket Change / login.stucco.software) or tied to
a specific server infrastructure (ActivityPods-only apps) were excluded.

* Use <a href> for source-code links in app tiles (a11y)

Apply @csarven's review feedback from PR #956: replace every
<span role="link"> + onclick="window.location.assign(...)" construct
inside apps.html with a native <a href> that has descriptive link text
and rel="noopener noreferrer".

- Native anchors restore right-click / middle-click / prefetch, keyboard
  activation via Enter only (not Space, which is the button pattern),
  and proper link exposure to assistive tech — satisfying the First
  Rule of ARIA.
- Link text now states the target (e.g. "GitHub (anusii/notepod)")
  rather than "here", satisfying WCAG 2.4.4 and 2.4.9 without needing
  an aria-label override.
- Because nested anchors are invalid, the source-code link is now in a
  sibling <p class="app-source"> rendered below the primary tile link,
  instead of inside the tile-wrapping <a>.
- Drops the custom .external-link styling that was compensating for
  the fake link; native <a> styling applies.
- Also closes HealthPod's missing </li> that previously swallowed the
  MovieStar tile.

* Remove Liqid Chat tile

Per @jeswr's review comment on PR #956: Liqid Chat is not currently
working correctly as a hosted client, so drop it from the list until
the operator can confirm it is back online. It was the only app in the
Chat category, so the Chat option is also removed from the category
filter dropdown. If Liqid Chat (or another Solid chat client) is
re-added later, the category can be restored at the same time.

* Style .app-source anchors as normal inline links

Follow-up to 9244da4. roborev/copilot review pointed out that
`.tiles.tile-links a` in assets/css/base.css applies `display: flex`,
`padding: 1.5rem`, `color: inherit`, `text-decoration: none` and a
full-tile `width/height` to every anchor inside a tile — including
the new `.app-source > a`. Without a reset those source-code links
lose their inline link styling.

Add a targeted `#apps-list li .app-source a` rule that restores
`display: inline`, clears the tile-anchor padding/width/height/flex,
and re-applies the link-blue underline so sighted users can identify
the link. Matching `:focus-visible` outline is preserved.

* Add favicon-based logos to 11 new app tiles

Per @jeswr's review comment on PR #956: use each app's own favicon as
the tile logo where a real one exists. Favicons were fetched from the
live sites and saved under assets/img/logo/.

- PodCal: site's inline data: SVG (shield + calendar + tick).
- PrivateDataPod suite (Synara AI, Pod Drive, HomeVault, VitalStats):
  each site's /icons/icon.svg.
- ANU anusii Flutter apps (InnerPod, MSFatigue, FilePod, KeyPod,
  GeoPod, SecureDialog): each app's /<slug>/icons/Icon-192.png from
  solidcommunity.au (note they share a <base href="/<slug>/"> so the
  canonical icon lives below that base path).
- MSFatigue and SecureDialog currently ship byte-identical template
  favicons upstream — using them anyway keeps every tile with a
  publishable logo and lets upstream authors replace them later.
- Pod Resume and SolidOS Databrowser intentionally left without a tile
  image: Pod Resume's site exposes only the default Vite logo; mashlib
  does not declare a favicon at all. This matches the precedent set by
  Penny, Booklice, 0data Hello, and Solid File Manager, which also
  ship without logos.

* Add TodoPod, RoloPod, KonaPod, BilliPod (Togaware)

Per @gjwgit's review comment on PR #956: include four recent Togaware
apps from the AU Solid Community under Productivity:

- TodoPod — task manager with encrypted Pod storage.
- RoloPod — contacts/address book with selective sharing.
- KonaPod — Hyundai vehicle data collection and analysis.
- BilliPod — bill tracking with reminder generation.

All four are hosted at *.solidcommunity.au and the source is on
GitHub under gjwgit/. Tiles use the a11y-correct source-code-link
pattern introduced earlier in this PR (<a href> with descriptive text
and rel="noopener noreferrer", source-code link outside the tile's
outer anchor to avoid nested interactive content).

No logos supplied: the sites return favicon 404s, matching the
precedent of other Togaware tiles that ship without logos.

* Move Togaware byline out of tile anchor to avoid nested anchors

Follow-up to 37ecd80. roborev/copilot review flagged that the four
Togaware tiles each contained a "Built by <a href=togaware.com>" link
inside the tile's outer <a href=...solidcommunity.au>, creating nested
anchors (invalid HTML — browsers auto-close the outer anchor before
the inner one).

Move the "Built by Togaware" attribution into the same
<p class="app-source"> sibling paragraph as the source-code link, so
no anchor is nested.

* Add Portable LibreChat tile (from PR #954)

Incorporate @jeswr's PR #954 contribution into this PR so that both
apps-list batches land together: a tile for https://chat.solidproject.org/,
a Solid-integrated build of LibreChat that stores chat history in the
user's Pod for portability across compatible clients.

- Re-adds the "Chat" filter option removed in commit f860f46
  (alongside the Liqid Chat removal) now that a working chat app is
  back in the list.
- Uses the a11y-correct markup pattern introduced earlier in this PR:
  native <a href> with descriptive text and rel="noopener noreferrer",
  and both secondary links (LibreChat project site and the solid/LibreChat
  source repo) placed in the sibling <p class="app-source"> outside
  the outer tile anchor so nothing is nested.
- Adds assets/img/logo/librechat.svg (from PR #954).

* Add logos to the remaining tiles without an image

Covers the nine tiles that were still rendering without a logo:

- Penny, Booklice, Solid File Manager — pre-existing tiles that
  always shipped without an image. Favicons pulled from the live
  sites (penny.ico, booklice.png at the site's 152x152 apple-touch
  size, solid-filemanager.ico).
- TodoPod, RoloPod, KonaPod, BilliPod (Togaware) — 192x192 PNGs from
  each app's /<slug>/icons/Icon-192.png, consistent with how the
  other anusii-stack Flutter apps in this PR were handled. BilliPod
  currently ships the generic Flutter template icon upstream
  (byte-identical to MSFatigue/SecureDialog); including it anyway
  keeps every tile with a publishable logo until the authors replace
  it.
- Pod Resume and SolidOS Databrowser — neither site ships a real
  favicon (Pod Resume serves only the default Vite logo and mashlib
  declares no favicon at all), so both use the existing generic
  /assets/img/solid-emblem.svg. The Solid emblem is especially
  appropriate for the SolidOS Databrowser, which is the reference
  Solid data browser. This matches the precedent set by the Pod Pro
  tile, which already uses the same emblem.

* Use Solid emblem for Penny instead of 48x48 favicon

Follow-up to 9aee526. roborev/copilot flagged that `penny.ico` only
contains 16/32/48 frames, so scaling it into the 60x60 tile slot
would leave the image permanently upscaled and blurry vs. the rest
of the grid on high-DPI displays.

Penny's own site already uses `/solid-emblem.svg` as its branding
icon (the "Connect Pod" button in the header), so reusing the
existing `/assets/img/solid-emblem.svg` asset is both visually
consistent with the app itself and vector-sharp at any size. This
matches the precedent of the Pod Pro / Pod Resume / SolidOS
Databrowser tiles, which also use the Solid emblem.

The `solid-filemanager.ico` is kept as-is: its ICO contains a 64x64
frame (above the 60x60 slot) that browsers will pick over the
smaller 16/24/32 frames.

* Replace Flutter-favicons with source-repo app_icon.png

@jeswr pointed out that BilliPod's published favicon is a generic
Flutter template, but its source repo ships a real app icon at
gjwgit/billipod/blob/dev/assets/images/app_icon.png. That convention
applies across the anusii / gjwgit Flutter stack, so apply it to
every tile in that family:

  tile           source                                   new size
  -----------    --------------------------------------   --------
  InnerPod       gjwgit/innerpod@dev   assets/images/app_icon.png   256x249
  MSFatigue      anusii/msfatigue@dev  assets/images/app_icon.png   195x171
  FilePod        anusii/filepod@dev    assets/images/app_icon.png   256x256
  GeoPod         gjwgit/geopod@dev     assets/images/app_icon.png   512x512
  TodoPod        gjwgit/todopod@dev    assets/images/app_icon.png   599x730
  RoloPod        gjwgit/rolopod@dev    assets/images/app_icon.png   880x716
  KonaPod        gjwgit/konapod@dev    assets/images/app_icon.png   724x583
  BilliPod       gjwgit/billipod@dev   assets/images/app_icon.png  1024x1024
  KeyPod         anusii/keypod@dev     android/.../mipmap-xxxhdpi/ic_launcher.png  192x192
                 (no assets/images/app_icon.png in the tree)
  SecureDialog   kimishidairessha/secureDiaLog@main  web/icons/Icon-512.png  512x512
                 (no assets/images/app_icon.png; web icon is the real Flutter web export)

All 10 images are now visually distinct — the previous
BilliPod / MSFatigue / SecureDialog triplet that shared the generic
Flutter template is gone. No markup change; the existing <img> tags
keep working because only the PNG contents change.

* Downscale anusii/gjwgit app icons to 120x120 for the tile slot

Follow-up to ee4ac9c. roborev/copilot flagged that checking in the
raw upstream app_icon.png files (up to 1024x1024) added ~1.2 MB of
page weight for tiles that only render at 60x60 with object-fit:
contain. Running `sips --resampleHeightWidthMax 120` shrinks the ten
updated PNGs from ~1489 KB combined to ~158 KB combined (9.4x
reduction) while still giving 2x retina density for the 60x60 slot.

* Use richer source-repo icons for MSFatigue and SecureDialog

Follow-up visual check showed the previous pulls had picked the
less-recognisable variants:

- SecureDialog's earlier icon was pulled from
  kimishidairessha/secureDiaLog web/icons/Icon-512.png, which turns
  out to be the untouched Flutter-web-template blue "F". Swap it for
  the iOS AppIcon (ios/.../Icon-App-1024x1024@1x.png) — the real
  cute-fried-egg brand icon used on the app's iOS home-screen and
  Android xxxhdpi mipmap.
- MSFatigue's earlier icon was assets/images/app_icon.png (pink star
  mark on transparent) — the compile-time Flutter icon source, but a
  very thin mark at 60x60 against a white tile. The richer
  assets/images/logo.png (brain-with-batteries) is the app's actual
  marketing logo, stays readable at the rendered size, and visually
  communicates what the app does (fatigue monitoring).

Both still downscaled to ~120x120 before committing to stay within
the page-weight budget set by the previous resize commit.

Pod Resume — the third tile the user flagged — is intentionally
unchanged in this commit: the published site only serves /vite.svg
(default Vite placeholder) under every asset path (all probed URLs
return the SPA shell via a 200 fallback), icons.privatedatapod.com
is auth-walled, and no public source repo is discoverable for it.
Keeping /assets/img/solid-emblem.svg is the least-bad honest option
until an upstream icon exists.
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.

4 participants