Commit Graph

284 Commits (fce8d8d8afd28218338d6272e4809f663d904743)
 

Author SHA1 Message Date
Romain fce8d8d8af refactor(model): album mappers can also return '/' to mean the root album 7 years ago
Romain 78ae865b75 2.2.0 7 years ago
Romain 7a9c5f4b08 fix(dependencies): upgrade chalk to latest major version v1 -> v2 7 years ago
Romain 74c981fb4c feat(analytics): rename --no-usage-report to --no-usage-stats to be more explicit
This is not a breaking change since the version hadn’t been published since introduced
7 years ago
Romain 21b0e121d5 fix(log): use debug.enable() instead of setting process.env.DEBUG to set the log level dynamically
The `debug` package reads DEBUG on first require to configure itself.
So far `log.js` is the first file to require it so it works, but if `yargs` started using `debug`
then setting `process.env.DEBUG` would do nothing here.

Instead we can use `debug.enable()` method to set the filter dynamically.
7 years ago
Romain a5486687e7 feat(log): print more debug logs about how the number of files and tasks 7 years ago
Romain 81ee517062 feat(index): ignore files in a root #recycle folder (Synology recycle bin) 7 years ago
Romain 0686ce3b37 fix(dependencies): upgrade dependencies to latest 7 years ago
Romain 91528ad076 test(index): cleanup thumbsup.db between test runs, otherwise the test does nothing 7 years ago
Romain d0bbf94b1c fix(index): don’t crash when trying to parse exiftool output for a badly encoded file 7 years ago
Romain a2042f3128 Fix logging option for non-TTY + highlight URL in welcome / error messages 7 years ago
Romain 47a924883e New --log option to print a full text log with different verbosity levels 7 years ago
Romain 06ecd2edad Add usage reporting with Google Analytics + greeting/error messages
This will help understand usage patterns to know what to focus on, e.g.
- are many people using thumbsup on Windows?
- are there many galleries with > 10,000 photos?
7 years ago
Romain 3152361e65 Fix #83: handle IPTC keywords returned as string or array 7 years ago
Romain f66208e052 New options for the {{date}} helper: custom date format + how long ago 7 years ago
Romain 067238c8e4 2.2.0-alpha.3 7 years ago
Romain 515ce3e8c1 Fix bug in #compare and #times Handlebars templates introduced in 3e0982e
When declared with () => instead of function (), the context is missing from child blocks.
7 years ago
Romain 0b8eb5bbd9 2.2.0-alpha.2 7 years ago
Romain 8882b8a2e8 ignore dev-only files from npm 7 years ago
Romain d7d01adc82 Fix #78: ignore invalid photos / videos
The current code doesn't create an output structure for them, so we don't create thumbnails.
This is good since the thumbnail generation would likely fail.

However we still try to render thumbnails in the themes.
The themes could be smart enough to skip invalid files, but it's easier to ignore them from the start.
7 years ago
Romain d19a230a6c Cleanup unused code 7 years ago
Romain e9e5f32970 Add test coverage + clean up build scripts 7 years ago
Romain 3e098e2328 Extract Handlebars helpers to prepare for theme structure + add unit tests 7 years ago
Romain 2a0a8d6631 Upgrade mock-fs to support Node 8 (includes dynamic require workaround) 7 years ago
Romain cbf8a1f3b4 Don’t index media from Synology thumbnail folders (@eaDir) nor folders starting with “.” 7 years ago
Romain ac520d40ad Fix case insensitive glob + add unit tests for globbing 7 years ago
Romain d66b28b12c 2.2.0-alpha.1 7 years ago
Romain 8d6cec3884 TravisCI: run the build inside Docker
- This is the simplest way to ensure all dependencies are there
- Also much faster than installing them on every build
- Especially since Travis runs Ubuntu Trusty, which doesn’t have ffmpeg in its repositories (must be compiled from source)
7 years ago
Romain 870b60de17 Simplify test scripts & document them in CONTRIBUTING.md 7 years ago
Romain 208f0f0212 Run full integration tests inside Docker. Travis runs unit + integration. 7 years ago
Romain 9a2da3e5ea Temporarily remove the recursive nav from the Classic theme
- The recursive call within Handlebars was causing huge memory spikes
- It seems it deep cloned (?) the entire Album objects at every recursive call
- This itself could bloat to several hundred megs of RAM for very large galleries

Replacing it with a simple breadcrumbs navigation for now.
7 years ago
Romain 24b2f9bd7c Major optimisations: SQLite index + faster disk glob + new exiftool streaming
1. Move from a JSON index to a SQLite database.
  - This allows the indexing to be interrupted & resumed
  - Updating the index consumes less RAM than loading / saving an entire JSON object
  - Loading the index consumes less RAM since it can be streamed, only exacting the properties we need every time (instead of loading all EXIF data in memory, only to discard most of it later)
  - These make a big difference when processing 10,000+ photos

2. Switch from <glob> to a manual <readdir>
  - Glob would take several hundred or GB of RAM when asked to find several thousand files
  - Manual approach with <micromatch> library does the same thing in a fraction of the time / memory usage

3. Exiftool optimisations
  - Run 1 exiftool process per CPU, still in batch mode (divide all files to be read into 1 bucket per CPU)
  - Stream the exiftool output instead of buffering it in memory
7 years ago
Romain bfdebe2c0f Smarter fuzzy comparison for the “snapshot” integration test 7 years ago
Romain 19a28a08c0 Basic production Dockerfile (doesn’t run the tests yet) 7 years ago
Romain 29654444cd Move screenshots and banners to subfolder 7 years ago
Romain 30f203af4b Render progress using Listr + split the main process into "steps" which are easier to test 7 years ago
Romain 179cc57644 Update “debug” package to fix insecure vulnerability warning 7 years ago
Romain 56235266bb Stop supporting Node v4 to enable newer ES6 syntax 7 years ago
Romain 97a6e348cc Update all dependencies 7 years ago
Romain 6e2f7e2ffb README - clarify Docker usage 7 years ago
Romain 35f9ee96b6 Update many dependencies to latest 7 years ago
Romain 011902c528 Fix integration test data for #71: set movie metadata to expected date 7 years ago
Romain b92724472e Fix #71: read both Quicktime CreationDate and CreateDate 7 years ago
Romain 0b27d37881 Read metadata from Picasa.ini if present 7 years ago
Romain 3e64d2ab38 Create a Metadata model attached to input files
- for easier unit testing
- to enable input filtering (e.g. only include photos with this keyword)
7 years ago
Romain 5074fb267f 2.1.0 7 years ago
Romain 3a6b2c9da3 Ignore files from the final npm package 7 years ago
Romain d24c5110cc Fix #70: files in the root of the source folder get added to the root gallery (index.html)
Before, they were added to an album called “.” which didn’t look good,
and the corresponding “.html” file (no base name) caused issues on web servers
7 years ago
Romain ac67a08da9 Use new “downsize” package that was split out (to make testing edge cases easier) 7 years ago
Romain afd3915778 Add full integration test: compare galleries to previously generated snapshot 7 years ago