Conversation
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>
✅ Deploy Preview for musical-sawine-26ffa9 ready!
To edit notification comments on pull requests, go to your Netlify project configuration. |
There was a problem hiding this comment.
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.
| <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> |
There was a problem hiding this comment.
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.
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.
|
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. |
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).
|
Superceded by #956 |
* 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.

Summary
Test plan
/appsand links to https://chat.solidproject.org/🤖 Generated with Claude Code