Skip to content

Add 14 Solid apps to the apps list#956

Merged
jeswr merged 14 commits intosolid:mainfrom
jeswr:feat/add-solid-apps-batch
Apr 23, 2026
Merged

Add 14 Solid apps to the apps list#956
jeswr merged 14 commits intosolid:mainfrom
jeswr:feat/add-solid-apps-batch

Conversation

@jeswr
Copy link
Copy Markdown
Member

@jeswr jeswr commented Apr 21, 2026

Summary

Adds 14 verified-live Solid apps that work with any Solid-OIDC provider (including solidcommunity.net) to /apps:

App Category Author
Liqid Chat Chat Jackson Morgan (o-team)
PodCal Scheduling Zero Limit
SolidOS Databrowser Pod Management SolidOS team
Synara AI Productivity PrivateDataPod
Pod Drive Pod Management PrivateDataPod
Pod Resume Productivity PrivateDataPod
HomeVault Productivity PrivateDataPod
VitalStats Health PrivateDataPod
InnerPod Health ANU SII
MSFatigue Health ANU SII
FilePod Pod Management ANU SII
KeyPod Security ANU SII
GeoPod Location ANU SII
SecureDialog Health ANU SII

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

  • Liveness: all 14 URLs return HTTP 200 (verified via curl).
  • Works with solidcommunity.net / standard Solid OIDC:
    • PodCal documentation explicitly states "Works with any Solid OIDC provider".
    • ANU SII apps (InnerPod, MSFatigue, FilePod, KeyPod, GeoPod, SecureDialog) all use the same anusii/solidpod Flutter package as NotePod / HealthPod / MovieStar (already on the apps page), which presents a provider-selection screen at login.
    • PrivateDataPod apps present a standard Solid OIDC login accepting arbitrary providers.
    • SolidOS Databrowser is the reference Solid client — supports every Solid OIDC provider.
    • Liqid Chat uses @ldo/solid, which accepts any Solid OIDC issuer.
  • Excluded (for the record):
    • Pocket Change — Playwright check confirmed it force-redirects to login.stucco.software with no way to specify another provider.
    • Stucco App Directory — same infrastructure pattern as Pocket Change (likely provider-locked).
    • Mastopod, Welcome to my place, Mutual Aid — tied to ActivityPods-hosted infra, not standard Solid OIDC.

Test plan

  • New tiles render under /apps without layout regressions
  • New Chat, Location, Scheduling, Security categories each filter to the expected apps
  • Click-through from a sample of tiles opens the hosted app
  • Embedded "source code" external-link spans open the correct GitHub repos

Logos 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

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.
Copilot AI review requested due to automatic review settings April 21, 2026 22:16
@netlify
Copy link
Copy Markdown

netlify Bot commented Apr 21, 2026

Deploy Preview for musical-sawine-26ffa9 ready!

Name Link
🔨 Latest commit cf8a107
🔍 Latest deploy log https://app.netlify.com/projects/musical-sawine-26ffa9/deploys/69ea63cb82f5ba0009dd295f
😎 Deploy Preview https://deploy-preview-956--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 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.

Comment thread apps.html
Comment on lines 33 to 45
<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>
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 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.

Copilot uses AI. Check for mistakes.
Comment thread apps.html Outdated
Comment on lines +216 to +220
<li data-name="Liqid Chat" data-category="Chat">
<a href="https://liqid.chat/chat">
<div class="tile-header">
<h3>Liqid Chat</h3>
</div>
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.

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 uses AI. Check for mistakes.
@jeswr
Copy link
Copy Markdown
Member Author

jeswr commented Apr 23, 2026

@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

@gjwgit
Copy link
Copy Markdown
Contributor

gjwgit commented Apr 23, 2026

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

      <li data-name="TodoPod" data-category="Productivity">
        <a href="https://todopod.solidcommunity.au">
          <div class="tile-header">
            <h3>TodoPod</h3>
          </div>
          <p>An app to manage your tasks with all data securely and
            privately stored encrypted on your own personal online
            data store (Pod) hosted on a Solid Server. Built by
            <a href="https://togaware.com">Togaware</a>. Source code is
            available <span class="external-link" role="link"
            tabindex="0" aria-label="Open TodoPod source on GitHub"
            onclick="event.preventDefault(); event.stopPropagation();
            window.location.assign('https://github.com/gjwgit/todopod');
            return false;"
            onkeydown="if(event.key==='Enter'||event.key===' '){
            event.preventDefault(); event.stopPropagation();
            window.location.assign('https://github.com/gjwgit/todopod');
            }">here</span>.</p>
        </a>
      </li>
      <li data-name="RoloPod" data-category="Productivity">
        <a href="https://rolopod.solidcommunity.au">
          <div class="tile-header">
            <h3>RoloPod</h3>
          </div>
          <p>A tool to collect your contacts into an address book in
	    one secure and private place. You can selectively share
	    any parts of your address book with others. Or make phone
	    calls on your mobile device (for the Android and iOS
	    versions). Built by
            <a href="https://togaware.com">Togaware</a>. Source code
	    is available <span class="external-link" role="link"
	    tabindex="0" aria-label="Open RoloPod source on GitHub"
	    onclick="event.preventDefault(); event.stopPropagation();
	    window.location.assign('https://github.com/gjwgit/rolopod');
	    return false;"
	    onkeydown="if(event.key==='Enter'||event.key===' '){
	    event.preventDefault(); event.stopPropagation();
	    window.location.assign('https://github.com/gjwgit/rolopod');
	    }">here</span>.</p>
        </a>
      </li>
      <li data-name="KonaPod" data-category="Productivity">
        <a href="https://konapod.solidcommunity.au">
          <div class="tile-header">
            <h3>KonaPod</h3>
          </div>
          <p>Collect your Hyundai vehicle data in one secure and
	    private place. You can selectively share any parts of your
	    data with others. The app presents the data and analyses
	    of the data. Built by
            <a href="https://togaware.com">Togaware</a>. Source code is
            available <span class="external-link" role="link"
            tabindex="0" aria-label="Open KonaPod source on GitHub"
            onclick="event.preventDefault(); event.stopPropagation();
            window.location.assign('https://github.com/gjwgit/konapod');
            return false;"
            onkeydown="if(event.key==='Enter'||event.key===' '){
            event.preventDefault(); event.stopPropagation();
            window.location.assign('https://github.com/gjwgit/konapod');
            }">here</span>.</p>
        </a>
      </li>
      <li data-name="BilliPod" data-category="Productivity">
        <a href="https://billipod.solidcommunity.au">
          <div class="tile-header">
            <h3>BilliPod</h3>
          </div>
          <p>Manage you bills, upcoming, scheduled, and past. The app
            analyses your bill history to generate reminders to avoid
            missing the all important bill payments. Built by
            <a href="https://togaware.com">Togaware</a>. Source code
            is available <span class="external-link" role="link"
            tabindex="0" aria-label="Open BilliPod source on GitHub"
            onclick="event.preventDefault(); event.stopPropagation();
            window.location.assign('https://github.com/gjwgit/billipod');
            return false;"
            onkeydown="if(event.key==='Enter'||event.key===' '){
            event.preventDefault(); event.stopPropagation();
            window.location.assign('https://github.com/gjwgit/billipod');
            }">here</span>.</p>
        </a>
      </li>

@csarven
Copy link
Copy Markdown
Member

csarven commented Apr 23, 2026

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 <span> is doing the job of an <a>. Throw it out and use the right element. Everything else follows from that mistake.

Issues

Markup

1. <span role="link"> instead of <a href>
This is the root cause of nearly every other problem. A <span> is a generic, non-interactive element. The role="link" partially patches the semantics via ARIA, but it cannot replicate everything a native <a> provides, e.g., browser history integration, right-click context menus ("Open in new tab"), href being readable by assistive technology, and default keyboard handling.

2. window.location.assign(...) in onclick
<a href="..."> is declarative navigation. Replacing it with imperative JavaScript breaks the aforementioned browser affordances and adds unnecessary fragility.

3. return false in the onclick handler
In an inline onclick attribute, return false only suppresses the element's default action. A <span> has no default action, so this line does nothing meaningful here. It is not equivalent to event.preventDefault() plus event.stopPropagation() in all contexts.

4. tabindex="0"
This is a manual workaround to make the <span> focusable, which <a href> provides automatically. It is redundant once you use the correct element.


Accessibility

5. Violation of the First Rule of ARIA
The WAI-ARIA specification states: "If you can use a native HTML element or attribute with the semantics and behaviour you require already built in, instead of re-purposing an element and adding an ARIA role, state or property to make it accessible, then do so." Using <span role="link"> when <a> exists violates this directly.

6. Space key activation on a link role
The onkeydown handler activates navigation on both Enter and Space. Per the WAI-ARIA Authoring Practices Guide, the link role should only be activated by Enter. Space activation is the pattern for button. Applying it to a link role creates inconsistent keyboard interaction that can confuse users of assistive technology.

7. Vague link text ("here")
WCAG 2.1 Success Criterion 2.4.4 (Link Purpose, In Context) requires that the purpose of a link can be determined from the link text alone, or from the link text together with its programmatic context. "Here" fails the stricter SC 2.4.9 (Link Purpose, Link Only). The aria-label patches this for screen reader users but leaves sighted users without a descriptive label. The better fix is descriptive visible text, removing the need for an aria-label override.


UX

8. Loss of standard browser affordances
Because navigation is handled via onclick with window.location.assign, users cannot right-click to open the link in a new tab or window, middle-click to open in a background tab, or use browser link prefetching. These are fundamental affordances of the <a> element.

9. Vague visible link text
"Here" provides no context to sighted users scanning the page. Descriptive link text benefits all users, not just those using assistive technology.


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:

  • <a href> replaces the <span role="link"> construct entirely, restoring all native browser and assistive technology behaviour.
  • Descriptive visible text replaces "here", satisfying WCAG 2.4.4 and 2.4.9 without an aria-label override.
  • rel="noopener noreferrer" is included as a best practice for external links, mitigating the window.opener security concern even when not using target="_blank".
  • All JavaScript event handlers are removed, as they are no longer needed.
  • aria-label is removed because the visible text is now self-describing.

Specification References

jeswr added 7 commits April 23, 2026 17:44
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).
@jeswr
Copy link
Copy Markdown
Member Author

jeswr commented Apr 23, 2026

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:

Discussion Resolved in
@csarven — replace <span role="link"> + inline JS with native <a href>, descriptive link text (WCAG 2.4.4 / 2.4.9), rel="noopener noreferrer", First Rule of ARIA 9244da4 (initial refactor) + b69f370 (follow-up: reset .tiles.tile-links a styles leaking onto the new .app-source > a)
@jeswr — remove Liqid Chat (not working correctly) f860f46 — tile removed; "Chat" filter option removed alongside it (later re-added in eb66491 when LibreChat joined)
@jeswr — add favicons for the new apps 4ad3bf2 — 11 tiles get favicon-based logos (SVGs for PodCal / the PrivateDataPod suite, 192×192 PNGs for the anusii Flutter apps). Pod Resume and SolidOS Databrowser are intentionally left without a tile image: Pod Resume ships only the default Vite favicon, and mashlib declares no favicon at all. That matches the precedent of existing tiles (Penny, Booklice, 0data Hello, Solid File Manager) that also ship without logos.
@gjwgit — add TodoPod, RoloPod, KonaPod, BilliPod 37ecd80 (initial add) + 4e78711 (follow-up: move the Built by <a href="https://togaware.com">Togaware</a> byline out of the outer tile anchor so nothing is nested). Rewritten into the corrected <a href> markup pattern from 9244da4.
#954 — add Portable LibreChat eb66491 — tile and librechat.svg asset from #954, rewritten into the corrected <a href> pattern; "Chat" filter option re-added.

Every commit was independently reviewed locally with GitHub Copilot (model gpt-5.4) before push; the two medium-severity findings raised (CSS regression on the new inline links, and the Togaware nested-anchor) are the reason there are two follow-up commits above.

The branch intentionally keeps each concern on its own commit so reviewers can land / reject pieces independently if needed. Happy to squash on merge.

@jeswr jeswr mentioned this pull request Apr 23, 2026
3 tasks
jeswr added 2 commits April 23, 2026 18:14
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.
@jeswr
Copy link
Copy Markdown
Member Author

jeswr commented Apr 23, 2026

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).

Discussion Resolved in
@jeswr — "Some apps still appear to be missing logos" 9aee526 (add logos to all 9 remaining tiles) + 77cb025 (follow-up: swap Penny's low-res 48×48 .ico for the existing /assets/img/solid-emblem.svg, which is what Penny itself uses on its own site — vector-sharp at any DPI, matches Pod Pro / SolidOS Databrowser / Pod Resume precedent)

Every tile in the grid now has an image. Sources:

  • Bookliceapple-touch-icon-152x152.png from the live site.
  • Solid File Manager — site's favicon.ico (contains a 64×64 frame, larger than the 60×60 tile slot so no upscaling).
  • TodoPod / RoloPod / KonaPod / BilliPod — each app's /<slug>/icons/Icon-192.png, same pattern as the other anusii Flutter apps in this PR. BilliPod currently ships the generic Flutter-template favicon upstream (byte-identical to MSFatigue / SecureDialog); using it keeps the grid complete until the authors ship a custom one.
  • Penny / Pod Resume / SolidOS Databrowser/assets/img/solid-emblem.svg. Penny already uses it on its own site, and the other two have no real favicon of their own.

Both follow-up commits were reviewed locally by Copilot / GPT-5.4 (roborev) with no findings. Branch pushed.

jeswr added 3 commits April 23, 2026 18:46
@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.
@jeswr
Copy link
Copy Markdown
Member Author

jeswr commented Apr 23, 2026

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.

Discussion Resolved in
@jeswr — "for apps like billipod, please look at the source code" ee4ac9c — swap all 10 anusii/gjwgit/kimishidairessha tile logos for each repo's authoritative icon (mostly dev/assets/images/app_icon.png; KeyPod has no app_icon.png so it uses the largest Android mipmap; SecureDialog uses the iOS AppIcon.appiconset). The previous BilliPod/MSFatigue/SecureDialog triplet that all shared the generic Flutter template are now 3 distinct images.
(roborev follow-up) Page-weight regression from upstream 1024×1024 PNGs fb2684asips --resampleHeightWidthMax 120 shrinks the 10 updated assets from ~1.49 MB combined to ~158 KB (9.4× smaller) while still giving 2× retina density for the 60×60 tile slot.
@jeswr — "update the icons for Pod Resume, MsFatigue, SecureDialog" e15181e — re-pick the better source-repo variants: SecureDialog → ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png (the real egg-smiley brand, not the Flutter-web template); MSFatigue → assets/images/logo.png (brain-with-batteries marketing logo, more readable at tile size than the thin pink-star app_icon.png). Pod Resume is intentionally not updated in this commit — its live site only serves /vite.svg under every asset path (all other /icons/… requests fall through to the 621-byte SPA shell), icons.privatedatapod.com is auth-walled, and no public source repo for the app is discoverable. It stays on /assets/img/solid-emblem.svg until an upstream icon exists.

Each of the three follow-up commits was independently reviewed locally by Copilot / GPT-5.4 (roborev); all clean. Branch pushed.

@jeswr jeswr merged commit dc80768 into solid:main Apr 23, 2026
6 of 7 checks passed
@jeswr jeswr deleted the feat/add-solid-apps-batch branch April 23, 2026 18:24
@csarven
Copy link
Copy Markdown
Member

csarven commented Apr 23, 2026

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.

What's wrong with this markup, accessibility, and UX concerns? Provide corrected markup. Provide references to specifications related to the corrections.

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