Locations Plugin šŸŒ

So a sneak peak of some prototype work I’m doing.

I’m going to be looking at giving early access to this for current and recent backers for a period (regardless of sponsorship level)

Going forward I have will be offering early access to some new features from $7/month for individual sponsors/small communities and $40/month for business.

5 likes

Initial invites to early access have just gone out for current sponsors. I’ll widen this to past sponsors soon and this access will remain for a period, after which maintaining a minimum level of sponsorship will be required.

Sponsor list is reviewed daily, so please consider sponsoring me if you are keen to use the latest features on Locations and/or generally keen to support my work.

Backers will always get fixes first.

Features will be migrated to the public repo on a case by case basis and after a delay …

3 likes

I’ve just been implementing the awesome Automated User Location Determination, which involves configuring Maxmind properly. This was on a new instance.

The new app.yml is lovely and lean, but doesn’t include the Maxmind ENV variables as a comment any more.

If this is to be more accessible to less confident self-hosting sysadmins, we might need a clear explainer - and to point them to this topic:


Also - a minor UX thing

An unwanted (by me anyway) link to the map pops up on the sidebar, and this isn’t governed by any settings. I’ve hidden it thus:

// hide the users map link
.sidebar-sections li[data-list-item-name="users map"] {
    display: none;
}

Perhaps it is time to deprecate both this and the (setting controlled) topic map link? These can now easily be added via the standard UI if the admin wishes to have them.

1 like

Links the admin adds to the sidebar are currently not translatable. So for a community where users might prefer different interface languages, the plugin adding the link to the sidebar provides the option to translate and display them in multiple languages.

2 likes

I noticed that I cannot enable geolocation for topics in a category.

It doesn’t offer to save the changes :thinking: (I’m on version 2026.5.0-latest)

1 like

This should be fixed now.

The fix should be deployed to Early Access and Public versions of the repo, together with a whole host of compatibility fixes.

As a part of that work I’ve increased the difference between the versions.

The Early Access version exposed to sufficiently privileged Sponsors has the following features which the public version of Locations currently lacks:

Title Description
Users-map globe Adds an interactive 3D globe view for the Users Map, with avatars placed by location, drag/touch rotation, zoom, reset, search focus, user-card clicks, and always-on bump mapping.
Globe screen saver Optional experimental idle screen saver showing a rotating 3D globe with user avatars below the header.
Enhanced users-map filters Adds controls for result limit, search type, search term, and group filtering on the Users Map.
Nearby topic filter Adds a nearby topic-list filter based on distance from the current user’s location.
IP-based user location lookup Automatically estimates and stores user locations from IP data, with configurable trigger mode, granularity, cooldown, GeoNames resolution, skip-if-existing behavior, and debug logging.

This means the maintained public version has been slightly downgraded. I’m afraid that’s necessary to ensure my sponsors get sufficient benefit.

If you would like these extra features, consider sponsoring me and making sure you go for a monthly tier which includes Early Access. Sponsoring me at the right tier will give you access to the Early Access version within 24 hours.

3 likes

Thanks @merefield for your speed :+1:.

1 like

I just stumbled upon a deprecation notice with the newest version of Discourse:

[PLUGIN discourse-locations] DEPRECATION NOTICE: Using api.modifyClass on model:composer is deprecated. Use the addModelField, addModelAccessor/addModelGetter/addModelSetter, addModelMethod, addModelSaveProperty and addModelCallback APIs instead. [deprecated since Discourse 2026.8] [deprecation id: discourse.modify-class-model]

I tried with my imaginary friend but it seems to be above my rudimentary programming skills… :see_no_evil_monkey:

1 like

FYI:

[Admin Notice] Plugin 'discourse-locations' contains code which needs updating. (id:discourse.modify-class-model)

I have the same issue:

This issue has been resolved with a contribution from @cvx :folded_hands: (5 days ago in fact! :sweat_smile: )

Recent PRs

PR Main purpose Author
#168 Update Ruby and JavaScript dependencies to resolve security alerts. angusmcleod
#169 Replace deprecated Composer `modifyClass` usage with modern model extension APIs. cvx
#171 Expand Composer location-default tests and fix location syncing when switching categories. merefield
#172 Synchronize plugin linting and development tooling with the current Discourse plugin skeleton. merefield
#173 Upgrade the Ruby `json` gem from 2.21.1 to 2.21.2 to fix a use-after-free vulnerability. dependabot
#174 Restore location-search error handling, prevent empty geocoding requests, and improve map safeguards and regression coverage. merefield

Thanks to @angus and @cvx for their contributions.

This has been applied to both the free plugin and sponsors only early access plugin.

In addition the code responsible for allowing you to discuss User Locations with Chatbot has been moved to Locations Early Access to further enhance the additional functional capability of the sponsors only repo.

4 likes