8 Commits

Author SHA1 Message Date
41d61be42e 1.8.10 2026-01-27 08:55:23 +07:00
06b47d96a7 Fix search results scrolling behavior 2026-01-27 08:54:42 +07:00
e8af959be6 Improve search results layout/styling 2026-01-27 08:54:38 +07:00
254e177cbf Update README 2026-01-26 19:55:18 +07:00
47fbc8e7cf Use published places module 2026-01-26 18:12:29 +07:00
4ad0df22e2 1.8.9 2026-01-26 17:53:09 +07:00
0decb4cf1b Optimize animations on iOS 2026-01-26 17:52:41 +07:00
2193f935cc Change default center and zoom to show the world on desktop 2026-01-26 17:52:14 +07:00
14 changed files with 52 additions and 25 deletions

View File

@@ -73,6 +73,7 @@ To run the script, you need `imagemagick` and `librsvg` installed:
- [ember.js](https://emberjs.com/) - [ember.js](https://emberjs.com/)
- [remoteStorage.js](https://remotestorage.io/rs.js/docs/) - [remoteStorage.js](https://remotestorage.io/rs.js/docs/)
- [@remotestorage/module-places](https://gitea.kosmos.org/raucao/remotestorage-module-places)
- [Vite](https://vite.dev) - [Vite](https://vite.dev)
- Development Browser Extensions - Development Browser Extensions
- [ember inspector for chrome](https://chrome.google.com/webstore/detail/ember-inspector/bmdblncegkenkacieihfhpjfppoconhi) - [ember inspector for chrome](https://chrome.google.com/webstore/detail/ember-inspector/bmdblncegkenkacieihfhpjfppoconhi)

View File

@@ -17,6 +17,7 @@ import navigation from 'feather-icons/dist/icons/navigation.svg?raw';
import phone from 'feather-icons/dist/icons/phone.svg?raw'; import phone from 'feather-icons/dist/icons/phone.svg?raw';
import server from 'feather-icons/dist/icons/server.svg?raw'; import server from 'feather-icons/dist/icons/server.svg?raw';
import settings from 'feather-icons/dist/icons/settings.svg?raw'; import settings from 'feather-icons/dist/icons/settings.svg?raw';
import target from 'feather-icons/dist/icons/target.svg?raw';
import user from 'feather-icons/dist/icons/user.svg?raw'; import user from 'feather-icons/dist/icons/user.svg?raw';
import x from 'feather-icons/dist/icons/x.svg?raw'; import x from 'feather-icons/dist/icons/x.svg?raw';
import zap from 'feather-icons/dist/icons/zap.svg?raw'; import zap from 'feather-icons/dist/icons/zap.svg?raw';
@@ -38,6 +39,7 @@ const ICONS = {
phone, phone,
server, server,
settings, settings,
target,
user, user,
x, x,
zap, zap,

View File

@@ -61,8 +61,8 @@ export default class MapComponent extends Component {
}); });
// Default view settings // Default view settings
let center = [99.05738, 7.55087]; let center = [14.21683569, 27.060114248];
let zoom = 13.0; let zoom = 2.661;
// Try to restore from localStorage // Try to restore from localStorage
try { try {

View File

@@ -148,7 +148,7 @@ export default class PlacesSidebar extends Component {
{{on "click" this.clearSelection}} {{on "click" this.clearSelection}}
><Icon @name="arrow-left" @size={{20}} @color="#333" /></button> ><Icon @name="arrow-left" @size={{20}} @color="#333" /></button>
{{else}} {{else}}
<h2>Nearby Places</h2> <h2><Icon @name="target" @size={{20}} @color="#ea4335" /> Nearby</h2>
{{/if}} {{/if}}
<button type="button" class="close-btn" {{on "click" @onClose}}><Icon <button type="button" class="close-btn" {{on "click" @onClose}}><Icon
@name="x" @name="x"

View File

@@ -226,10 +226,15 @@ body {
.sidebar-header h2 { .sidebar-header h2 {
margin: 0; margin: 0;
font-size: 1.2rem; font-size: 1.2rem;
display: flex;
align-items: center;
gap: 0.5rem;
} }
.sidebar-content { .sidebar-content {
padding: 1rem; padding: 1rem;
overflow-y: auto;
flex: 1; /* Take up remaining vertical space */
} }
.edit-form { .edit-form {
@@ -365,29 +370,31 @@ body {
.places-list { .places-list {
list-style: none; list-style: none;
padding: 0; padding: 0;
margin: 0; margin: -1rem -1rem 0 -1rem;
} }
.places-list li { .places-list li {
margin-bottom: 0.5rem;
} }
.place-item { .place-item {
width: 100%; width: 100%;
text-align: left; text-align: left;
background: #f8f9fa; border: none;
border: 1px solid #ddd; border-bottom: 1px solid #eee;
padding: 0.75rem; background: #fff;
border-radius: 4px; color: #333;
padding: 1rem;
cursor: pointer; cursor: pointer;
transition: background 0.2s; transition: background 0.2s;
font-family: inherit;
} }
.place-item:hover { .place-item:hover {
background: #e9ecef; background: #eee;
} }
.place-name { .place-name {
font-size: 1rem;
font-weight: bold; font-weight: bold;
margin-bottom: 0.25rem; margin-bottom: 0.25rem;
} }
@@ -502,11 +509,15 @@ body {
border: 2px solid rgb(255 204 51 / 80%); /* Gold/Yellow to match markers */ border: 2px solid rgb(255 204 51 / 80%); /* Gold/Yellow to match markers */
background: rgb(255 204 51 / 20%); background: rgb(255 204 51 / 20%);
position: absolute; position: absolute;
transform: translate(-50%, -50%); /* Use translate3d for GPU acceleration on iOS */
transform: translate3d(-50%, -50%, 0);
pointer-events: none; pointer-events: none;
animation: pulse 1.5s infinite ease-out; animation: pulse 1.5s infinite ease-out;
box-sizing: border-box; /* Ensure border is included in width/height */ box-sizing: border-box; /* Ensure border is included in width/height */
display: none; /* Hidden by default */ display: none; /* Hidden by default */
will-change: transform, opacity;
-webkit-backface-visibility: hidden;
backface-visibility: hidden;
} }
.search-pulse.active { .search-pulse.active {
@@ -520,12 +531,12 @@ body {
@keyframes pulse { @keyframes pulse {
0% { 0% {
transform: translate(-50%, -50%) scale(0.8); transform: translate3d(-50%, -50%, 0) scale(0.8);
opacity: 0.8; opacity: 0.8;
} }
100% { 100% {
transform: translate(-50%, -50%) scale(1.4); transform: translate3d(-50%, -50%, 0) scale(1.4);
opacity: 0; opacity: 0;
} }
} }

View File

@@ -1,6 +1,6 @@
{ {
"name": "marco", "name": "marco",
"version": "1.8.8", "version": "1.8.10",
"private": true, "private": true,
"description": "Unhosted maps app", "description": "Unhosted maps app",
"repository": { "repository": {
@@ -50,7 +50,7 @@
"@embroider/vite": "^1.5.0", "@embroider/vite": "^1.5.0",
"@eslint/js": "^9.39.2", "@eslint/js": "^9.39.2",
"@glimmer/component": "^2.0.0", "@glimmer/component": "^2.0.0",
"@remotestorage/module-places": "link:vendor/remotestorage-module-places", "@remotestorage/module-places": "1.x",
"@rollup/plugin-babel": "^6.1.0", "@rollup/plugin-babel": "^6.1.0",
"@warp-drive/core": "~5.8.0", "@warp-drive/core": "~5.8.0",
"@warp-drive/ember": "~5.8.0", "@warp-drive/ember": "~5.8.0",

18
pnpm-lock.yaml generated
View File

@@ -52,8 +52,8 @@ importers:
specifier: ^2.0.0 specifier: ^2.0.0
version: 2.0.0 version: 2.0.0
'@remotestorage/module-places': '@remotestorage/module-places':
specifier: link:vendor/remotestorage-module-places specifier: 1.x
version: link:vendor/remotestorage-module-places version: 1.0.0
'@rollup/plugin-babel': '@rollup/plugin-babel':
specifier: ^6.1.0 specifier: ^6.1.0
version: 6.1.0(@babel/core@7.28.6)(rollup@4.55.1) version: 6.1.0(@babel/core@7.28.6)(rollup@4.55.1)
@@ -1377,6 +1377,9 @@ packages:
resolution: {integrity: sha512-4rdu8GPY9TeQwsYp5D2My74dC3dSVS3tghAvisG80ybK4lqa0gvlrglaSTBxogJbxqHRw/NjI/liEtb3+SD+Bw==} resolution: {integrity: sha512-4rdu8GPY9TeQwsYp5D2My74dC3dSVS3tghAvisG80ybK4lqa0gvlrglaSTBxogJbxqHRw/NjI/liEtb3+SD+Bw==}
engines: {node: '>=18.12'} engines: {node: '>=18.12'}
'@remotestorage/module-places@1.0.0':
resolution: {integrity: sha512-vaqJeTw658gjPyLz70Mq2AbGfDZ66O2mpDFME+gtaGFYl2+UvrvRLCrXWHYuyTE21f3TJdegeXM6C5nZMxLv9A==}
'@rollup/plugin-babel@6.1.0': '@rollup/plugin-babel@6.1.0':
resolution: {integrity: sha512-dFZNuFD2YRcoomP4oYf+DvQNSUA9ih+A3vUqopQx5EdtPGo3WBnQcI/S8pwpz91UsGfL0HsMSOlaMld8HrbubA==} resolution: {integrity: sha512-dFZNuFD2YRcoomP4oYf+DvQNSUA9ih+A3vUqopQx5EdtPGo3WBnQcI/S8pwpz91UsGfL0HsMSOlaMld8HrbubA==}
engines: {node: '>=14.0.0'} engines: {node: '>=14.0.0'}
@@ -5180,6 +5183,10 @@ packages:
engines: {node: '>=0.8.0'} engines: {node: '>=0.8.0'}
hasBin: true hasBin: true
ulid@3.0.2:
resolution: {integrity: sha512-yu26mwteFYzBAot7KVMqFGCVpsF6g8wXfJzQUHvu1no3+rRRSFcSV2nKeYvNPLD2J4b08jYBDhHUjeH0ygIl9w==}
hasBin: true
underscore.string@3.3.6: underscore.string@3.3.6:
resolution: {integrity: sha512-VoC83HWXmCrF6rgkyxS9GHv8W9Q5nhMKho+OadDJGzL2oDYbYEppBaCMH6pFlwLeqj2QS+hhkw2kpXkSdD1JxQ==} resolution: {integrity: sha512-VoC83HWXmCrF6rgkyxS9GHv8W9Q5nhMKho+OadDJGzL2oDYbYEppBaCMH6pFlwLeqj2QS+hhkw2kpXkSdD1JxQ==}
@@ -6967,6 +6974,11 @@ snapshots:
'@pnpm/error': 1000.0.5 '@pnpm/error': 1000.0.5
find-up: 5.0.0 find-up: 5.0.0
'@remotestorage/module-places@1.0.0':
dependencies:
latlon-geohash: 2.0.0
ulid: 3.0.2
'@rollup/plugin-babel@6.1.0(@babel/core@7.28.6)(rollup@4.55.1)': '@rollup/plugin-babel@6.1.0(@babel/core@7.28.6)(rollup@4.55.1)':
dependencies: dependencies:
'@babel/core': 7.28.6 '@babel/core': 7.28.6
@@ -11449,6 +11461,8 @@ snapshots:
uglify-js@3.19.3: uglify-js@3.19.3:
optional: true optional: true
ulid@3.0.2: {}
underscore.string@3.3.6: underscore.string@3.3.6:
dependencies: dependencies:
sprintf-js: 1.1.3 sprintf-js: 1.1.3

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -26,8 +26,8 @@
<meta name="msapplication-TileColor" content="#F6E9A6"> <meta name="msapplication-TileColor" content="#F6E9A6">
<meta name="msapplication-TileImage" content="/icons/icon-144.png"> <meta name="msapplication-TileImage" content="/icons/icon-144.png">
<script type="module" crossorigin src="/assets/main-DDLOjoTU.js"></script> <script type="module" crossorigin src="/assets/main-Din37YgL.js"></script>
<link rel="stylesheet" crossorigin href="/assets/main-CNGeKCiD.css"> <link rel="stylesheet" crossorigin href="/assets/main-iBIZAPnF.css">
</head> </head>
<body> <body>
</body> </body>

View File

@@ -1 +0,0 @@
/home/basti/src/remotestorage/modules/remotestorage-module-places