<feed xmlns='http://www.w3.org/2005/Atom'>
<title>pathways.git/server.mjs, branch main</title>
<subtitle>Photo viewer that organises a PhotoPrism library into paths.</subtitle>
<id>http://git.dax.ist/dax/pathways.git/atom/server.mjs?h=main</id>
<link rel='self' href='http://git.dax.ist/dax/pathways.git/atom/server.mjs?h=main'/>
<link rel='alternate' type='text/html' href='http://git.dax.ist/dax/pathways.git/'/>
<updated>2026-08-05T19:14:45Z</updated>
<entry>
<title>staging: local drop-folder (watch/) auto-import with startup recovery + failed batches; admin local-files panel; upload 413 pre-check</title>
<updated>2026-08-05T19:14:45Z</updated>
<author>
<name>dax</name>
<email>me@dax.ist</email>
</author>
<published>2026-08-05T19:14:45Z</published>
<link rel='alternate' type='text/html' href='http://git.dax.ist/dax/pathways.git/commit/?id=994cdbec9dd6ae6b965b56f4f6816a1dfef8bcc9'/>
<id>urn:sha1:994cdbec9dd6ae6b965b56f4f6816a1dfef8bcc9</id>
<content type='text'>
</content>
</entry>
<entry>
<title>admin auth: fixed pathways-admin username shown in setup/login so browser saves password; server verifies username</title>
<updated>2026-08-05T16:52:07Z</updated>
<author>
<name>dax</name>
<email>me@dax.ist</email>
</author>
<published>2026-08-05T16:52:07Z</published>
<link rel='alternate' type='text/html' href='http://git.dax.ist/dax/pathways.git/commit/?id=d2a8b2abc908311fc249454086d0d0eacfe861e1'/>
<id>urn:sha1:d2a8b2abc908311fc249454086d0d0eacfe861e1</id>
<content type='text'>
</content>
</entry>
<entry>
<title>admin import panel with upload progress + recent photos; app empty-state links to /admin</title>
<updated>2026-08-05T16:15:39Z</updated>
<author>
<name>dax</name>
<email>me@dax.ist</email>
</author>
<published>2026-08-05T16:15:39Z</published>
<link rel='alternate' type='text/html' href='http://git.dax.ist/dax/pathways.git/commit/?id=70ce625487b5e0b7540b70de2ae59f0086134a9e'/>
<id>urn:sha1:70ce625487b5e0b7540b70de2ae59f0086134a9e</id>
<content type='text'>
</content>
</entry>
<entry>
<title>admin panel for walk-graph management; /api/import gated behind admin login</title>
<updated>2026-08-05T14:24:33Z</updated>
<author>
<name>dax</name>
<email>me@dax.ist</email>
</author>
<published>2026-08-05T14:24:33Z</published>
<link rel='alternate' type='text/html' href='http://git.dax.ist/dax/pathways.git/commit/?id=03dcc91c96ac45ff005a1c3e14a71a5733037447'/>
<id>urn:sha1:03dcc91c96ac45ff005a1c3e14a71a5733037447</id>
<content type='text'>
</content>
</entry>
<entry>
<title>stream import uploads to disk; advertise direct-origin fast uploads; fix /api/paths total</title>
<updated>2026-08-04T18:49:03Z</updated>
<author>
<name>dax</name>
<email>me@dax.ist</email>
</author>
<published>2026-08-04T18:49:03Z</published>
<link rel='alternate' type='text/html' href='http://git.dax.ist/dax/pathways.git/commit/?id=815a0d1b4b71e12512cef5a8f59aa9d454d779d7'/>
<id>urn:sha1:815a0d1b4b71e12512cef5a8f59aa9d454d779d7</id>
<content type='text'>
</content>
</entry>
<entry>
<title>show upload progress and indexing state; raise upload caps and timeouts</title>
<updated>2026-08-04T17:53:03Z</updated>
<author>
<name>dax</name>
<email>me@dax.ist</email>
</author>
<published>2026-08-04T17:53:03Z</published>
<link rel='alternate' type='text/html' href='http://git.dax.ist/dax/pathways.git/commit/?id=247390000a0fdf7eeedb89a2c5500c64f36df1c3'/>
<id>urn:sha1:247390000a0fdf7eeedb89a2c5500c64f36df1c3</id>
<content type='text'>
</content>
</entry>
<entry>
<title>add photo import: upload -&gt; photoprism, fix desktop file dialog</title>
<updated>2026-08-04T15:54:07Z</updated>
<author>
<name>dax</name>
<email>me@dax.ist</email>
</author>
<published>2026-08-04T15:54:07Z</published>
<link rel='alternate' type='text/html' href='http://git.dax.ist/dax/pathways.git/commit/?id=dadf0909dd235a7764a59a63d2b51861fa81e385'/>
<id>urn:sha1:dadf0909dd235a7764a59a63d2b51861fa81e385</id>
<content type='text'>
- POST /api/import with native multipart parser (no new deps); stages files
  then delegates indexing+thumbnailing to PhotoPrism via `photoprism cp`
- pathways reflects new photos immediately via refresh()
- upload UI shown only in empty-library state
- nixos: PHOTOPRISM_READONLY=false; pathways service gets STAGING_ROOT and
  photoprism env; PATH includes /run/wrappers/bin so sudo is found
- fix: stage.setPointerCapture was swallowing the import label's click on
  desktop, preventing the native file dialog from opening
</content>
</entry>
<entry>
<title>Code review cleanup: cache placement/adjacency, drop dead code</title>
<updated>2026-08-04T10:26:40Z</updated>
<author>
<name>dax</name>
<email>me@dax.ist</email>
</author>
<published>2026-08-04T10:26:40Z</published>
<link rel='alternate' type='text/html' href='http://git.dax.ist/dax/pathways.git/commit/?id=56b3a602c8e992a2bc197844e1ab3de8743b8012'/>
<id>urn:sha1:56b3a602c8e992a2bc197844e1ab3de8743b8012</id>
<content type='text'>
- Cache choosePlacement and adjacentTile results per (id,dir); invalidate
  on addTile. Avoids O(n^3) placement scoring on every pointermove.
- setCurrent now re-renders only affected navs (prev + new) instead of
  refreshAllNav; remove refreshAllNav entirely.
- Add pointercancel handler so interrupted touch/trackpad gestures don't
  leave a stuck drag.
- Remove dead code: placeRect, photoConnections + /api/photo route and
  THUMBS const on server, dangling info var in pointerup.
- Trim .gitignore, remove .DS_Store, bump cache-bust to ?v=20.
</content>
</entry>
<entry>
<title>pathways: no dead-end directions while photos remain - server extends short walks with library ids to 60 entries, client falls back to any remaining unplaced photo when a direction's walk is exhausted</title>
<updated>2026-08-04T09:22:43Z</updated>
<author>
<name>dax</name>
<email>me@dax.ist</email>
</author>
<published>2026-08-04T09:22:43Z</published>
<link rel='alternate' type='text/html' href='http://git.dax.ist/dax/pathways.git/commit/?id=31377791a19454e76cf3f4f74f1d90e3460f5c2d'/>
<id>urn:sha1:31377791a19454e76cf3f4f74f1d90e3460f5c2d</id>
<content type='text'>
</content>
</entry>
<entry>
<title>pathways: four directions lead to four distinct photos - dedupe per-photo next ids in exit generation (server), exclude other directions' targets from placement candidates (client)</title>
<updated>2026-08-04T08:49:29Z</updated>
<author>
<name>dax</name>
<email>me@dax.ist</email>
</author>
<published>2026-08-04T08:49:29Z</published>
<link rel='alternate' type='text/html' href='http://git.dax.ist/dax/pathways.git/commit/?id=51062d0579eba3c8137298a88963eb6aeb57c2e2'/>
<id>urn:sha1:51062d0579eba3c8137298a88963eb6aeb57c2e2</id>
<content type='text'>
</content>
</entry>
</feed>
