I’ve now released version 1.0.0-alpha4 with the following change-log;
[1.0.0-alpha4] - 2023-03-06
Added
- Add support for falling back on not using subrequests when it fails with a 403/404
- Improve behaviour of cache query operators to more closely match Drupal’s JSON:API and add some tests
Fixed
- Skip schema properties without definitions
[1.0.0-alpha3] - 2023-03-01
Fixed
- Fix handling of
options.pluginDir
in assetlink-plugin-dev-support
[1.0.0-alpha2] - 2023-03-01
Added
3 Likes
I’ve now released version 1.0.0-alpha5 with the following change-log;
[1.0.0-alpha5] - 2023-03-14
Added
- Add support for AND/OR query groups in both cache and remote queries
- Add user defined asset log plugins with a wizard to create them
- Improve docs and add a rough outline of an Asset Link user guide
Changed
- Make query behavior/operators more closely align with Drupal’s JSON:API and add more tests
Fixed
- Fix a bug when updating logs without specifying any attributes
Screencaptures
4 Likes
I’ve now released version 1.0.0-alpha6 with the following change-log;
[1.0.0-alpha6] - 2023-03-17
Added
- Add menu action slots to manage plugins page
- Add a share menu action for exporting Asset Link plugins
Changed
- Made precaching opt-in and smarter about only caching new asset/log changes
Fixed
- Fix precaching menu item so it isn’t also a link to the manage plugins page
Screenshots
3 Likes
I’ve now released version 1.0.0-alpha8 with the following change-log;
[1.0.0-alpha8] - 2023-04-04
Fixed
- Fix some lint build errors
[1.0.0-alpha7] - 2023-04-04
Added
- Implement nested relationship attribute filtering
- Surface navigation for exact route matches above asset search results
- Surface option to install plugin and plugin list urls above asset search results
- Add support for built Asset Link plugins in assetlink-plugin-dev-support
Changed
- Change to new utf-8 compatible data url encoding format for storing plugins
Fixed
- Fix a bug with nested AND/OR query groups not being added as memberOf eachother
- Fix a bug with the UrlBasedAssetSearcher plugin
Screenshots
Scan/Search Asset Link Page Routes to Navigate to them;
Scan/Search Plugin Urls to Install;
Documented and Added Dev Support for Plugins that Require a build Step:
See https://github.com/symbioquine/farmOS_asset_link/tree/development/alinkjs/packages/assetlink-plugin-dev-support#plugins-that-require-a-webpack-build-step
2 Likes
I’ve now released version 1.0.0-alpha9 with the following change-log;
[1.0.0-alpha9] - 2023-05-29
Added
- Add documentation about how to build .vue plugins via Webpack
Fixed
- Fix bug with sidecar UI breaking certain mobile clicks in farmOS - #42
- Improve compatibility with old versions of Safari avoiding elvis operator in Sidecar bootstrapping code
- Fix edge case bug with computing location relationships
- Fix URL building with ‘IS NULL’ and ‘IS NOT NULL’ operators for remote queries
- Improve responsiveness of searching and opening assets within Asset Link
1 Like
I’ve now released version 1.0.0-alpha10 with the following change-log;
[1.0.0-alpha10] - 2024-02-13
Added
- Add a loading indicator for asset search
- Add an explanation of route prop handling to docs
- Add log owner to the log page
- Add log date decorator to log names
- Add package for a “lite” version of Asset Link which works without a farmOS server
- Add a welcome/explanation page to Asset Link Lite
Changed
- Improved log page date formatting
- Switch to npm workspaces instead of lerna
- Load farmOS models via a special controller to improve performance/flexibility
- Refactor structural data preloading into separate/replaceable class
- Load default plugin list using path relative to Asset Link
- Make reload and “open in farmOS” meta actions appear only when relevant
- Update to work with farmOS 3.x
Fixed
- Improve browser compatibility by avoiding
Blob::arrayBuffer()
fn
- Fix route prop handling for log and asset pages
- Improve asset/log page handling of unresolved state
- Improve handling for assets/logs without certain fields
- Handle resize events that occur before code editor is instantiated
- Cleanup some stale config from using Lerna
- Fix url encoding in handling of
$relateByName
directive
4 Likes
I’ve now released version 1.0.0-alpha11 with the following change-log;
[1.0.0-alpha11] - 2024-02-14
Fixed
- Fix a bug in how urls are generated for Asset Link Sidecar
2 Likes
I’ve now released version 1.0.0-alpha13 with the following change-log;
[1.0.0-alpha13] - 2024-04-14
Added
- Add docs with more examples of advanced queries via Orbit.js and the plugin API
Fixed
- Fix a bug where the EntitySelect component
multiple
option is broken - #47
[1.0.0-alpha12] - 2024-04-09
Changed
- Update Vue to 3.4.15 and vue3-sfc-loader to 0.9.5
3 Likes
I’ve now released version 1.0.0-alpha14 with the following change-log;
[1.0.0-alpha14] - 2024-04-23
Added
- Expose the farmOS instance name, version, and system of measurement
- Add support for simple maps using farmOS-map
Fixed
- Cleanup a few minor issues with the documentation
Meta Info Exposed

https://symbioquine.github.io/farmOS_asset_link/IAssetLinkViewModel.html
Map Integration Tutorial
https://symbioquine.github.io/farmOS_asset_link/tutorial-map-integration.html
TestMap.alink.vue
<script setup>
import { createDrupalUrl } from "assetlink-plugin-api";
const onMapInitialized = (map) => {
map.addBehavior("sidePanel");
map.addBehavior("layerSwitcherInSidePanel");
const layer = map.addLayer('geojson', {
title: 'All Assets',
url: createDrupalUrl('/assets/geojson/full/all')
});
layer.getSource().on('change', function () {
map.zoomToVectors();
});
};
</script>
<template alink-route[com.example.farmos_asset_link.routes.v0.test_map]="/test-map">
<farm-map @map-initialized="onMapInitialized"></farm-map>
</template>
3 Likes
4 posts were split to a new topic: farmOS version showing 3.x vs 3.2.1
I’ve now released version 1.0.0-alpha15 with the following change-log;
[1.0.0-alpha15] - 2024-09-25
Added
Changed
- Update testing docker-compose.yml files to use farmos/farmos:3.3.1
Fixed
- Fix a warning traversing schema refs that have no linked schemas
- Remove deprecated version key from testing docker-compose.yml files
1 Like
I’ve now released version 1.0.0-alpha16 with the following change-log;
[1.0.0-alpha16] - 2024-11-18
Added
- Improve the plugin dev support docs and add a pluginConfigMutator option
- Add a whitelist mechanism to control when the sidebar appears in farmOS
- Add a local sidebar whitelist mechanism in the plugin API
Changed
- Generate the plugin config yml files via plugin dev support
- Change the sidebar/sidecar to use mdi-v6 icons like the PWA part
Fixed
- Fix Quasar styling for “global components” like dialogs appearing in farmOS
Screencap/Demo

2024_11_18_assetlink_sidebar_whitelisting_and_dialogs.webm
<script setup>
import { defineComponent, h, inject} from 'vue';
import {
QCard,
QCardSection,
QDialog,
useDialogPluginComponent,
} from 'quasar';
const assetLink = inject('assetLink');
const TestDialog = defineComponent(() => {
const { dialogRef, onDialogOK, onDialogCancel } = useDialogPluginComponent();
return () => h(QDialog, { ref: dialogRef }, () => [
h(QCard, { style: "width: 700px; max-width: 80vw;" }, () => [
h(QCardSection, { 'class': "text-h6" }, () => [
'Test Dialog! '
])
])
])
});
const showDialog = async () => {
await assetLink.ui.dialog.custom(TestDialog);
};
</script>
<template alink-slot[com.example.farmos_asset_link.sbm_item.v0.rotating_pony]="sidebar-menu-slot(weight: 15)">
<q-fab-action @click="showDialog" color="grey-8" icon="mdi-horse"></q-fab-action>
</template>
<script>
export default {
onLoad(handle) {
handle.whitelistSidebarUrlPattern(/https?:\/\/.*\/plan\/(\d+)/);
}
}
</script>
<style scoped>
.q-btn {
animation-name: spin;
animation-duration: 5000ms;
animation-iteration-count: infinite;
animation-timing-function: linear;
}
@keyframes spin {
from {
transform:rotate(0deg);
}
to {
transform:rotate(360deg);
}
}
</style>
3 Likes