- Pages without content no longer show
undefined
inauto
orcontent
modes (#67). - The page counts now update properly when pages are added/removed, without requiring a full re-render of the code block (#60).
- Restored custom image
width
andheight
options. Updated README to separate out the "standard" options from the "dangerous" (i.e. modifing CSS directly) settings, and noting that the latter might go away in the future.
null
values in page metadata were breaking the filter bar for certain filter strings (#58).
- Changed how tile widths/heights are calculated to be more consistent on different devices.
- Tiles are now left-aligned rather than centered in the gallery view (#18).
- You can now specify
pageGallery.imageSrc
in frontmatter to set a specific thumbnail image, rather than looking for the first image in the page. (#21) - Page counts are now displayed on view tab headers and group titles.
- Fixed a bug where image paths with single quotes in them didn't show up properly (#57).
- Added workaround for content rendering issue when Banners plugin is present (#48).
- Re-worked refresh mechanism to avoid fully redrawing the page-gallery view whenever a page is updated ("flashing" issue - #50).
- Using
[[]]
or[[#]]
to refer to the current page in thefrom
clause now works correctly.
- New "square" option for the "orientation" setting.
- "Empty" indicator for tabs with no content, so that it doesn't look like they just failed to load.
- Groups are now collapsible.
- Groups are now sorted case-insensitively.
- If the
groupBy
value for a given page has more than one value, the page will now show up under every matching group, rather than[groupA, groupB]
being treated as a totally separate group on its own. - The filter bar now searches for matches within tags, page paths, and other metadata defined in frontmatter or as obsidian-dataview inline fields.
- The page gallery will load immediately on first load, rather than waiting (indefinitely) for all filesystem updates to settle down. This was causing galleries to not render at all if Obsidian Sync was still running in the background, which can take a while.
- Removed caching. It was crashing Obsidian due to OOM errors on really large galleries, and no longer improves performance that much due to previous changes. Will re-evaluate caching options in the future if I can find a good caching or embedded DB library that doesn't cause the same OOM errors on large galleries, and actually manages to be faster than just re-rendering/re-evaluating expressions when needed.
- Tile images and field values are now lazy-loaded when the tile is visible. This dramatically increases performance on large page galleries.
- Updates to the filter string are now debounced to keep the UI from freezing up repeatedly as you type.
- Miscellaneous additional performance improvements for large galleries.
- Resolved issue with dirnames on mobile devices.
- Links in string field values are now rendered properly.
- New
mode
option to choose whether you want to display images, note content, or images with note content as a fallback if no image is detected (the new default).
- New
radius
option to change the border radius of individual tiles, if you don't want rounded corners (or want them to be bigger/smaller).
- Page gallery title and group headings now us
<h2>
and<h3>
elements to match configured page styles, rather than custom styling.
groupBy
option now behaves correctly when the group by value is a link to a page.groupBy
values are now rendered as markdown in certain cases, including links and tags.- Single tags as field values are now rendered correctly.
- Page galleries weren't displaying right on first load of Obsidian because they were trying to display before obsidian-dataview had initialized its index.
- Fields with zero-values (
0
) are no longer treated as missing/null, and will sort correctly with other numbers.
- Replaced
node-cache
with custom LRU-based cache for mobile compatibility.
- Multiple views (or tabs) can now be defined using the
views
setting in the page gallery config. Theviews
setting is a list of configuration blocks, each accepting largely the same options as the previous root config, plus aname
option for each tab. Any options defined at the root config will be treated as defaults for every view. If no views are defined, a single implicit one will be created using values defined in the root config object, so if you just want a single-view page gallery (as was previously the only option), you don't have to worry about restructuring all of yourpage-gallery
blocks.
- Parameters/expressions used for
groupBy
andsortBy
options no longer show up as fields unless they're also explicitly included in thefields
option.
- Both
file.path
andfile.name
will now be displayed in bold if included in the field list, but only if they're the first field listed.
- Added a
where
option to the gallery config to allow pages to be more easily filtered out. - Added
this
value to all field evaluations (includingwhere
andsortBy
). Previously, it was impossible to usethis
(e.g.this.page.path
) to get details of the containing page.
- Added a "clear" (❌) button to the filter/query bar.
- If the
groupBy
field is a link, it will now be rendered as such.
- Links in the
groupBy
field were causing pages to not be grouped properly.
- When the
sortBy
option was set to an array rather than a single value, the default "file.path" value was being prepended to whatever the user supplied, overriding the user-specified option(s). - Creating a page gallery that included the containing page itself was causing an infinite loop of re-rendering.
- Support for more image file types. Image types now supported:
- JPG
- PNG
- GIF
- BMP
- WEBP
- Corrected the default
limit
(100) in the README and allowed it to be set tonull
to display all matched pages.
- Caching of tile info was causing changes to the page-gallery config (such as modifications to the list of fields) not to be applied.
- Implemented the
groupBy
config field. - Reverse/descending sort order (e.g.
sortBy: -file.name
). - You can now use obsidian-dataview
expressions as fields.
- This also works in
sortBy
andgroupBy
settings.
- This also works in
- Tile info is now cached in-memory and only updated when the associated page has changed, dramatically speeding up updates to the page gallery.
- Can now sort by nested fields (e.g.
file.name
).
- Significant refactoring of pages-to-tiles logic in new
TileWrangler
class.
- Updated the example in the README.
- Removed stray debug code.
- Added an
orientation
option to set the default aspect ratio to "portrait" or "landscape" mode. - Added a
filter
(boolean) option to toggle the filter bar on/off.
- The
from
clause can now use multiline YAML strings (>
or|
) to allow better formatting of long "from" clauses (e.g. listing each source on a separate line).
- Restored the hover opacity toggle.
- Added
sortBy
config option. - Made certain image options (
size
,position
andrepeat
) overridable on individual pages via page metadata/frontmatter.
- BREAKING Using YAML rather than TOML for config language.
- Reimplementing image config/sizing options.
- Added a
columns
config field to set the default (max) column count, as an alternative to explicitly setting the image width.
- Cleaner (IMO) default styles, including calculating default column width from container width, and flexibly breaking columns for smaller screens.
- Block-specific image settings are now controlled by CSS vars on the root
.page-gallery
element. - If the
file.name
is displayed via thefields
setting, it will no longer be rendered as markdown. This avoids issues when pages with names starting with numbers were being treated as numbered lists.
- Using obsidian's built-in
debounce
instead of debounce. - Moved default image sizes to styles.css.
- Moved styles out of svelte components and into styles.css to make them easier to override.
- Mobile support! Tested in iPad (2019) and Android (Pixel 6) so far.
- Reimplementing on top of Quorafind/Obsidian-Svelte-Starter to get it working on mobile devices.
- Removed
path
dependency.
- Filter bar to search for pages by tags or name/path.
- Refactored to use Svelte for views.
- Page galleries now auto-update when obsidian-dataview metadata is updated.
- Refactored gallery rendering into separate view model.
Initial release.