Skip to content

palm/palmgoogle-mac: new port - #33895

Draft
HodsonTech wants to merge 2 commits into
macports:masterfrom
HodsonTech:add-palmgoogle-mac
Draft

palm/palmgoogle-mac: new port#33895
HodsonTech wants to merge 2 commits into
macports:masterfrom
HodsonTech:add-palmgoogle-mac

Conversation

@HodsonTech

Copy link
Copy Markdown

Summary

Bidirectional sync between a Palm OS PDA and Google Calendar/Tasks/Contacts, running automatically as a jpilot plugin. As far as I'm aware, this is the first bridge of its kind for Google — nobody else has connected Palm OS to Google Calendar/Tasks/Contacts this way before.

This is the Google-side sibling of palm365-mac (Microsoft 365), sharing the same provider-agnostic reconciliation engine, palm-sync-core. This package supplies only the Google-specific pieces: OAuth (desktop-app loopback redirect + PKCE — Google's device-code flow is restricted to a scope allowlist that excludes Calendar/Tasks/Contacts), the Calendar/Tasks/People API client, and field mapping.

  • conflicts palm365-mac: both are full-rebuild engines against the same Palm databases, and running two independent ones at once is a real hazard, not a supported configuration. One cloud provider per Palm, by design.
  • One-time setup (Google Cloud OAuth client creation) is walked through by ${prefix}/share/palmgoogle-mac/setup.py, same pattern as palm365-mac's Azure app registration walkthrough.
  • Live-tested end-to-end against a real Palm Vx and a real Google account: bidirectional sync for calendar (both timed and all-day events), contacts, and tasks, including deletion propagation in both directions (device → cloud and cloud → device).

Test plan

  • port lint palm/palmgoogle-mac (local)
  • port -d install palmgoogle-mac from a local port source
  • Live HotSync round-trips against a real Palm Vx + real Google account: push-up of device-created contact/event/task, down-sync of cloud items (including all-day events), and deletion propagation in both directions
  • CI (destroot/livecheck lint) on this PR

🤖 Generated with Claude Code

Sync a Palm OS PDA with Google Calendar/Tasks/Contacts via a jpilot
plugin, bidirectionally. Sibling of palm365-mac (Microsoft 365), sharing
palm-sync-core's reconciliation engine (see macports#33864) -- this package
supplies only the Google-specific pieces: OAuth (desktop-app loopback
redirect + PKCE, since Google's device-code flow can't reach Calendar/
Tasks/Contacts scopes), the Calendar/Tasks/People API client, and field
mapping.

conflicts palm365-mac: both are full-rebuild engines against the same
Palm databases, and running two independent ones at once is a real
hazard, not a supported configuration. One cloud provider per Palm.

Live-tested end-to-end against a real Palm Vx and a real Google account:
bidirectional sync for calendar (timed and all-day events), contacts, and
tasks, including deletion propagation in both directions.
Comment thread palm/palmgoogle-mac/Portfile Outdated
sha256 5ff0e91adc2e781016a99200afb05e24ebe8def67b9f5e26365810ca56ad26c5 \
size 29079

depends_build port:gtk3

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

There are gtk3 and gtk3-devel, please use path-style dependency for it.

Comment thread palm/palmgoogle-mac/Portfile Outdated
depends_build port:gtk3
depends_lib port:jpilot \
port:pilot-link \
port:python314 \

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

It will be handy to set python version in one place and propagate it wherever something uses it.

Comment thread palm/palmgoogle-mac/Portfile Outdated

name palmgoogle-mac
categories palm python
platforms darwin

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

This is default, so can be dropped.

@reneeotten reneeotten left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

this looks like all AI coded stuff from a GitHub repo that exists for just a week. I'm personally not sure we're interested yet in incorporating any of this...

@reneeotten
reneeotten marked this pull request as draft August 8, 2026 01:49
Path-style dependency for gtk3 (gtk3-devel also exists), drop the
redundant platforms darwin (already the default), and consolidate the
Python version into one place instead of repeating 314/3.14 across
depends_lib, the build-time PYTHON_BIN define, and notes.
@HodsonTech

Copy link
Copy Markdown
Author

this looks like all AI coded stuff from a GitHub repo that exists for just a week. I'm personally not sure we're interested yet in incorporating any of this...

I used AI to help write this, I'll be upfront about that, since I don't have programming skill myself. But I want to push back gently on "looks like AI slop" as the standard for judgment here, because the actual bar should be: does it work, and is it useful?

To that: there was no existing solution, on any platform, for syncing Palm OS PDAs to Microsoft 365 or Google. Palm Inc. died around 2008-2009, and with it Outlook/Exchange sync support ended. Nothing filled that gap since. I built this because I wanted it for my own multi-Mac setup and figured other Palm/PDA users in the retrocomputing space would want it too. Since JPilot is already a MacPorts package, and one that I've updated to work on apple silicon and modern GTK, adding these conduits here made the most sense rather than shipping it as some standalone thing.

This package for google support was actually requested by a discord member on the PalmDB Discord, and I thought it made sense because so many people use google. I would love to also have an iCloud sync version but due to apple's security it will likely not happen.

This isn't untested code thrown at a wall. I've been building this over about two months, and I've run it through real hotsync cycles against an actual Palm Vx, including a fresh hard-reset device setup and full sync, and it worked correctly, over and over, in fact. I'm happy to walk through specific parts of the implementation, answer questions about how any piece of it works, or address any concerns you have about code quality directly. I genuinely want this to meet whatever bar you need it to clear, not just get merged as-is.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Development

Successfully merging this pull request may close these issues.

4 participants