Conversation
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.
✅ 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 14 additional Solid-OIDC-compatible applications to the /apps launcher page and expands the category filter to include new app categories.
Changes:
- Added 14 new app tiles (with categories and several source-code “external-link” entries).
- Added new category filter options: Chat, Location, Scheduling, Security.
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
| <select id="category-filter"> | ||
| <option value="all">All Categories</option> | ||
| <option value="Chat">Chat</option> | ||
| <option value="Cooking">Cooking</option> | ||
| <option value="Health">Health</option> | ||
| <option value="Location">Location</option> | ||
| <option value="Movies">Movies</option> | ||
| <option value="Content, Notes, Blogging and Publishing">Content, Notes, Blogging and Publishing</option> | ||
| <option value="Productivity">Productivity</option> | ||
| <option value="Pod Management">Pod Management</option> | ||
| <option value="Scheduling">Scheduling</option> | ||
| <option value="Security">Security</option> | ||
| <option value="TODO List">TODO List</option> |
There was a problem hiding this comment.
The category filter dropdown is now updated, but it still doesn't include all categories that exist in the tiles (e.g., there are tiles with data-category="Browser" and data-category="Travel"). This makes it impossible to filter to those apps. Consider either adding missing categories to the dropdown or aligning the affected tiles to one of the available categories so the filter reflects the full set.
| <li data-name="Liqid Chat" data-category="Chat"> | ||
| <a href="https://liqid.chat/chat"> | ||
| <div class="tile-header"> | ||
| <h3>Liqid Chat</h3> | ||
| </div> |
There was a problem hiding this comment.
These newly added apps aren't included in the JavaScript "defaultOrder" list that's used when the user selects "Default Order" sorting. Because indexOf() returns -1 for unlisted apps, choosing Default Order can produce unpredictable ordering. Consider capturing the original DOM order on page load (or keeping the defaultOrder list complete) so Default Order restores reliably.
|
@copilot none of the apps have icons. Please add icons based on the favicon of the website if it has one. Please remove liquidchat for now. It does not seem to be working correctly |
|
Hi @jeswr This is not the best way to add to the PR, but would you consider adding the following recent productivity apps from AU Solid Community to the apps list. Thanks |
|
Dear @copilot , taking the following existing markup and content as an example in the apps.html document: <p>This application provides a user-friendly interface for managing files and folders in Solid Pods. Source code is available <span class="external-link" role="link" tabindex="0" aria-label="Open The ODI Solid File Manager desktop build on GitHub" onclick="event.preventDefault(); event.stopPropagation(); window.location.assign('https://github.com/solid/solid-file-manager'); return false;" onkeydown="if(event.key==='Enter'||event.key===' '){ event.preventDefault(); event.stopPropagation(); window.location.assign('https://github.com/solid/solid-file-manager'); }">here</span>.</p>please take the following feedback, that is generated by another LLM, into account, and consider updating all markup following that pattern in the document as well as new markup and content that is being introduced in this PR, if and only if, your overlords approve. tl;dr: A IssuesMarkup1. 2. 3. 4. Accessibility5. Violation of the First Rule of ARIA 6. Space key activation on a link role 7. Vague link text ("here") UX8. Loss of standard browser affordances 9. Vague visible link text Corrected Markup<p>This application provides a user-friendly interface for managing files and folders in Solid Pods. Source code is available on <a href="https://github.com/solid/solid-file-manager" class="external-link" rel="noopener noreferrer">GitHub (ODI Solid File Manager)</a>.</p>Notes on the correction:
Specification References
|
Apply @csarven's review feedback from PR solid#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.
Per @jeswr's review comment on PR solid#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.
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.
Per @jeswr's review comment on PR solid#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.
Per @gjwgit's review comment on PR solid#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.
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.
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).
|
Thanks all for the feedback. This PR now folds in @csarven's a11y review, @jeswr's own icon/Liqid-Chat notes, @gjwgit's four Togaware apps, and (newly) the contents of #954 so both apps-list batches land together. Each discussion is addressed in a dedicated commit on this branch:
Every commit was independently reviewed locally with GitHub Copilot (model The branch intentionally keeps each concern on its own commit so reviewers can land / reject pieces independently if needed. Happy to squash on merge. |
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.
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.
|
Follow-up to the resolution-mapping comment above: caught during post-push review that 9 tiles were still rendering without any logo (3 pre-existing — Penny, Booklice, Solid File Manager — plus SolidOS Databrowser and Pod Resume from my earlier commits, and the four new Togaware tiles).
Every tile in the grid now has an image. Sources:
Both follow-up commits were reviewed locally by Copilot / GPT-5.4 (roborev) with no findings. Branch pushed. |
@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.
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.
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.
|
Icon quality follow-up. The earlier favicon pulls for three of the Flutter-stack tiles turned out to be generic Flutter templates, not real brand icons, so I went to the source repos as suggested.
Each of the three follow-up commits was independently reviewed locally by Copilot / GPT-5.4 (roborev); all clean. Branch pushed. |
|
Just to be transparent, my comment was (obviously) generated by an LLM. When I noticed that Graham was only following the strange markup pattern from the website (with some of the example apps), I gave the following as input and it seemed to be aligned with my thinking about the concerns, so I shared. I didn't feel like manually typing out an explanation and the robot's answer seemed adequate for another robot.
|
Summary
Adds 14 verified-live Solid apps that work with any Solid-OIDC provider (including solidcommunity.net) to
/apps:Adds new filter categories to the dropdown: Chat, Location, Scheduling, Security.
How candidates were found
Researched across: the Solid Forum,
github.com/anusii(ANU SII ecosystem), Noel de Martin, Vincent Tunru, PodOS, SolidOS, ActivityPods, PrivateDataPod, and Stucco directories. Initial list was 19 candidates.Verification
curl).anusii/solidpodFlutter package as NotePod / HealthPod / MovieStar (already on the apps page), which presents a provider-selection screen at login.@ldo/solid, which accepts any Solid OIDC issuer.login.stucco.softwarewith no way to specify another provider.Test plan
/appswithout layout regressionsexternal-linkspans open the correct GitHub reposLogos were intentionally omitted — several existing tiles (Penny, Booklice, 0data Hello, Solid File Manager) ship without logos, and any maintainer/author can easily add one in a follow-up.
🤖 Generated with Claude Code