DFSG NEW Queue

DFSG, Licensing & New Packages Team

Review: node-lucide 1.55.0-1

Package Information

DescriptionFlexible icon set with open source icons (Node.js library)

Lucide is a community-based fork of Feather Icons, providing a large collection of simple and clean vector icons as reusable components and modules for JavaScript applications.

MaintainerDebian Javascript Maintainers <pkg-javascript-devel@lists.alioth.debian.org>
Changed ByJérémy Lal <kapouer@melix.org>
Sponsorkapouer@melix.org
Distributionunstable
Architectureall
VCSgit: https://salsa.debian.org/js-team/node-lucide.git (browse)
Closes#1150297
Blocked Bugs#1093255 (wishlist)
Trackerhttps://tracker.debian.org/pkg/node-lucide
Uploaded2 days ago

New Package Report

.changes◂
Changed-ByJérémy Lal <kapouer@melix.org>
Architecturesource all
Distributionunstable
DateFri, 06 Nov 2026 00:47:33 +0100
Sourcenode-lucide
Version1.55.0-1
Changelog◂
node-lucide (1.55.0-1) unstable; urgency=medium
 .
   * Initial release. (Closes: #1150297)
     In collaboration with Andrew Lee (李健秋).
.dsc◂
Sectionjavascript
Priorityoptional
Componentmain
Package-Listnode-lucide deb javascript optional arch=all
debian/copyright◂
Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
Upstream-Name: lucide
Upstream-Contact: https://github.com/lucide-icons/lucide/issues
Source: https://github.com/lucide-icons/lucide

Files: *
Copyright: 2026      Lucide Icons and Contributor
           2013-2016 Cole Bemis
License: ISC and Expat
Comment: derived from Feather project with Expat license

Files: debian/build_modules/rename-keys/*
 debian/build_modules/deep-rename-keys/*
Copyright: 2014-2017, Jon Schlinkert
License: Expat

Files: debian/build_modules/xml-reader/*
 debian/build_modules/xml-lexer/*
Copyright: 2016 Pedro Ladaria
License: Expat

Files: svgson/*
Copyright: 2018 Lionel Tzatzkin
License: Expat

License: ISC
 Permission to use, copy, modify, and/or distribute this software for any
 purpose with or without fee is hereby granted, provided that the above
 copyright notice and this permission notice appear in all copies.
 .
 THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
 WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
 MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
 ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
 WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
 ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
 OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.

License: Expat
 Permission is hereby granted, free of charge, to any person obtaining a copy
 of this software and associated documentation files (the "Software"), to deal
 in the Software without restriction, including without limitation the rights
 to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 copies of the Software, and to permit persons to whom the Software is
 furnished to do so, subject to the following conditions:
 .
 The above copyright notice and this permission notice shall be included in all
 copies or substantial portions of the Software.
 .
 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
 AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
 SOFTWARE.

DFSG Assistant LLM REVIEW 1 blocker, 0 important, 6 minor

This is an LLM based review using a Debian Inference based workflow. It was not written by a member of the DFSG team and has not been checked by one. It is not a decision on the package: it may be wrong, and it may have missed things.

Reviewed 1 day ago.

Report◂

DFSG NEW review for node-lucide version 1.55.0-1

Summary

  • Licensing is DFSG-compliant and debian/copyright is accurate: No
  • Packaging is of good quality: Yes
  • Issues: 1 blocker, 0 important, 6 minor
  • debian/watch: version 5
  • debian/copyright: machine-readable
  • Scan before the review: 2 found

Licensing

The code and icon licensing is fine and mostly well documented: Lucide itself is ISC, the Feather-derived icons carry the Expat/MIT notice that debian/copyright reproduces, and the vendored svgson and debian/build_modules MIT code (Lionel Tzatzkin, Jon Schlinkert, Pedro Ladaria) has correct stanzas. But debian/copyright does not describe all of the source: docs/public ships about fifty third-party brand logos (Vercel, DigitalOcean, Obsidian, Supabase, Nuxt, MDN, framework and sponsor marks) for which upstream grants nothing and for which several owners do not license the artwork at all, and CODE_OF_CONDUCT.md is licensed CC-BY-SA-4.0 by the Contributor Covenant, not ISC. The packaging's own copyright is also attributed to Lucide Icons.

Packaging

The packaging is sound: debhelper compat 13 with dh-sequence-nodejs, a trivial debian/rules, a sane component layout in debian/nodejs/ (main, additional_components, build_order, extlinks, submodules), two well-described DEP-3 patches for plugins and dependencies Debian does not ship, and Build-Depends that all resolve in the archive. Standards-Version 4.7.4 is current (Policy here is 4.7.4.1). What is left is minor: no autopkgtest at all, an incomplete debian/clean, a placeholder version in the generated Provides, and a typo in debian/upstream/metadata.

Issues

blocker licensing 1. docs/public ships third-party brand logos under no licence, while debian/copyright calls every file ISC/Expat ◂
  • Files: docs/public/company-logos/ (12 files: mdn, nuxt, obsidian, open-collective, supabase, vercel, dark and light), docs/public/framework-logos/ (27 files incl. lustre.webp), docs/public/library-logos/ (reflex, shadcn-ui, tamagui), docs/public/sponsors/ (fina-money.png, paxhistoria.svg, pdfme.svg, scipress.svg, zephyr-cloud.svg), docs/public/vercel.svg, docs/public/digitalocean.svg, debian/copyright:6-10
  • Basis: checked, in the package or with a reference tool
  • Evidence: Obsidian logo: docs/public/company-logos/obsidian-dark.svg:1 <svg alt="Obsidian" height="22" viewBox="0 0 143 25" ...>; docs/public/vercel.svg carries the Vercel wordmark plus <path d="M23.3248 13L32.6497 29H14L23.3248 13Z"/>; docs/public/digitalocean.svg the DigitalOcean wordmark. debian/copyright says only Files: * / Copyright: 2026 Lucide Icons and Contributor / License: ISC and Expat. Upstream's own BRAND_LOGOS_STATEMENT.md:26 explains that brand logos are protected by trademark or copyright, and docs/guide/version-1.md:50 that all brand icons were removed from the icon set for legal reasons.
  • Problem: These files are artwork owned by MDN/Mozilla, Vercel, DigitalOcean, Obsidian, Supabase, Nuxt, Open Collective, the listed frameworks and the sponsors. No licence grant for them exists anywhere in the package, several of the owners (Obsidian, Hyva, the sponsors) do not license their marks freely, and they are certainly not under Lucide's ISC. debian/copyright therefore misdescribes the licensing of these files, and unlicensed third-party works cannot be distributed from main (DFSG 1-2, Policy 12.5). Upstream's trademark disclaimer does not cure the copyright position.
  • Fix: Either repack the tarball without them and say so with Files-Excluded in debian/copyright (they are only website assets, referenced from docs/*.md; nothing in the build or the installed package needs them), or add one Files stanza per owner with its holder and actual licence and include that licence text where it is not in /usr/share/common-licenses.
minor licensing 2. CODE_OF_CONDUCT.md is CC-BY-SA-4.0, but debian/copyright lists it as ISC/Expat by Lucide ◂
  • Files: CODE_OF_CONDUCT.md:86-88, docs/code-of-conduct.md
  • Basis: checked, in the package or with a reference tool
  • Evidence: This Code of Conduct is adapted from the Contributor Covenant, version 3.0 / Contributor Covenant is stewarded by the Organization for Ethical Source and licensed under CC BY-SA 4.0.; debian/copyright: Files: * ... License: ISC and Expat.
  • Problem: The document says which licence it is under; Lucide's ISC grant cannot relicense the Contributor Covenant text, so the Files: * stanza is wrong for this file (Policy 12.5, DEP-5 6.7). The licence itself is free, so nothing non-DFSG is shipped.
  • Fix: Add Files: CODE_OF_CONDUCT.md docs/code-of-conduct.md with Copyright: Contributor Covenant contributors and License: CC-BY-SA-4.0, referring to /usr/share/common-licenses/CC-BY-SA-4.0 (present on the reviewing system) in the stand-alone paragraph.
minor licensing 3. debian/* has no Files stanza; the packaging is attributed to Lucide Icons and Contributor ◂
  • Files: debian/copyright:6-9, debian/changelog:1-6
  • Basis: checked, in the package or with a reference tool
  • Evidence: Files: * / Copyright: 2026 Lucide Icons and Contributor / 2013-2016 Cole Bemis matches debian/ too, while the changelog is signed Jérémy Lal <kapouer@melix.org> with Uploaders: Andrew Lee (李健秋) <ajqlee@debian.org>.
  • Problem: DEP-5's Files: * covers debian/ unless overridden, so the Debian packaging (rules, control, patches, generate-vue-icons.mjs, the debian/nodejs/ tree, tests) is credited to the upstream project rather than to its authors. The copyright file is inaccurate about who holds the copyright in Debian's own files.
  • Fix: Add a stanza after the upstream ones, e.g. Files: debian/* with Copyright: 2026 Jérémy Lal <kapouer@melix.org> and 2026 Andrew Lee (李健秋) <ajqlee@debian.org>, License: ISC.
minor packaging 4. Nothing tests the built modules: no debian/tests/control, and the pkg-js test script is commented out ◂
  • Files: debian/tests/pkg-js/test:1-5, debian/tests/pkg-js/files, debian/tests/
  • Basis: checked, in the package or with a reference tool
  • Evidence: debian/tests/pkg-js/test is only # Test local require from packages/vue directory / #node -e "require('@lucide/vue')"; debian/tests/ holds just pkg-js/files and pkg-js/test, with no control file, so the pkg-js autopkgtest never runs.
  • Problem: dh_auto_test runs debian/tests/pkg-js/test at build time (Buildsystem/nodejs.pm, sub test) and it exits successfully without loading anything, and with no debian/tests/control autopkgtest runs no test either (Policy 12.2 recommends an autopkgtest suite; the pkg-js-tools layout here is half-finished). Nothing checks that /usr/share/nodejs/lucide or @lucide/vue load, so a broken install would only be found in the archive.
  • Fix: Add a debian/tests/control (e.g. Tests: pkg-js with Depends: @, pkg-js-autopkgtest, matching the pkg-js-tools layout) and a real test in debian/tests/pkg-js/test, for example uncommenting the node -e "require('@lucide/vue')" line and adding one for lucide.
minor packaging 5. debian/clean does not remove the sources and licence the build generates inside packages/ ◂
  • Files: debian/clean:1-7, debian/nodejs/packages/vue/build:1-7, debian/nodejs/packages/lucide/build:1
  • Basis: checked, in the package or with a reference tool
  • Evidence: debian/nodejs/packages/vue/build runs rm -rf dist ./src/icons/*.ts, cp ../../LICENSE ./LICENSE and tsx ../../tools/build-icons/cli.ts --output=./src ...; the lucide component likewise runs pkgjs-run build:icons writing into src. debian/clean lists only dist/, node_modules/, packages/*/dist/, the caches and svgson/dist/.
  • Problem: After the build the tree keeps packages/lucide/src/icons/.ts, packages/vue/src/icons/.ts, packages/vue/src/aliases/*.ts and packages/vue/LICENSE. debian/rules clean therefore does not restore the unpacked state (Policy 4.9), and a later dpkg-buildpackage -S would sweep those generated files into the .debian.tar.xz.
  • Fix: Add the generated paths to debian/clean: packages/lucide/src/icons/, packages/vue/src/icons/, packages/vue/src/aliases/ and packages/vue/LICENSE.
minor packaging 6. Provides advertises node-lucide-vue (= 0.0.1), a placeholder from the workspace package.json files ◂
  • Files: packages/vue/package.json:3, packages/lucide/package.json:4, debian/nodejs/root_modules:1
  • Basis: checked, in the package or with a reference tool
  • Evidence: @lucide/vue and lucide both declare "version": "0.0.1" while the source package is 1.55.0; Buildsystem/nodejs.pm, sub install, builds the substvar as 'node-' . normalize_name(name) plus " (= $v)" from package.json's version for every root component.
  • Problem: The binary will provide node-lucide-vue (= 0.0.1), and the installed package.json files also claim 0.0.1. A future package depending on node-lucide-vue (>= 0.5) would be unsatisfiable, and the installed metadata misstates the module version.
  • Fix: Patch the two package.json versions to 1.55.0 in a DEP-3 patch (or set the version the build publishes), so the module metadata and the generated Provides agree with the source version.
minor packaging 7. debian/upstream/metadata has a broken Repository-Browse URL ('hhttps') ◂
  • Files: debian/upstream/metadata:5
  • Basis: checked, in the package or with a reference tool
  • Evidence: Repository-Browse: hhttps://github.com/lucide-icons/lucide
  • Problem: The value is not a valid URL, so tools consuming DEP-12 metadata cannot use it.
  • Fix: Change it to https://github.com/lucide-icons/lucide.
Verified ◂
  • Read debian/ in full (control, rules, changelog, copyright, clean, gbp.conf, salsa-ci.yml, source/format, patches/series and both patches, tests/, upstream/metadata, the debian/nodejs/ tree, build_modules/, generate-vue-icons.mjs, babel.config.json). debian/watch was left alone as instructed.
  • Licence inventory: the tree holds exactly six licence-bearing files - LICENSE, svgson/LICENSE and the four debian/build_modules/*/LICENSE. Grep of the whole tree for Copyright/(c)/©/SPDX/Licensed under/permission clauses/GNU/Apache/MPL/CC/public domain found no other licence or holder.
  • LICENSE is ISC (Copyright (c) 2026 Lucide Icons and Contributors) plus an Expat/MIT section for the Feather-derived icons (Copyright (c) 2013-present Cole Bemis); debian/copyright reproduces both texts and names both holders. The scan's near-match 'Lucide Icons and Contributors' is in the file as 'Lucide Icons and Contributor' (singular) and Cole Bemis is listed as 2013-2016, i.e. year drift only.
  • svgson/ (its own orig tarball, gbp component) is MIT, Copyright (c) 2018 Lionel Tzatzkin; Files: svgson/* gives Expat with the same holder, and the Expat text is in the file.
  • debian/build_modules/{rename-keys,deep-rename-keys,xml-reader,xml-lexer}: MIT, © Jon Schlinkert (2014-2017 / 2015-2017) and © 2016 Pedro Ladaria, matching the two stanzas. None of the four is packaged in Debian (apt-cache finds no node-rename-keys, node-deep-rename-keys, node-xml-reader, node-xml-lexer), so vendoring them in debian/build_modules is right rather than an embedded library.
  • All packages/*/package.json declare "license": "ISC"; every shipped module is therefore under the documented licence.
  • Icons: the icons/ tree (thousands of SVG/JSON pairs) carries no per-file notices; upstream removed the brand icons in v1 (docs/guide/version-1.md:50), and the two brand-adjacent names left, icons/apple.* and icons/bitcoin.*, are generic stroke glyphs, not the companies' marks.
  • Binary assets in docs (favicons, mstile/apple-touch PNGs, 12 documentation screenshots under docs/images/, the two OG PNGs, framework-logos/lustre.webp) are upstream documentation assets of its own making, except the third-party logos reported above; og.png is produced by the present docs/.vitepress/createOGImage.ts.
  • docs/public/templates/illustrator_template.ai (the scan's PDF) is an Adobe Illustrator template, which is its editable source form, not a built file: docs/contribute/icons/illustrator-guide.md:15 links it for download. docs/public/templates/affinity_designer.aftemplate (the scan's unrecognised binary) is the same for Affinity Designer, linked from docs/contribute/icons/affinity-designer-guide.md:13. Neither is generated by the Debian build.
  • packages/angular/.angular/cache/21.2.19/ng-packagr/10874da3... (35.6 MB, the text file longer than 4 MiB the scan could only partly read) and tsbuildinfo/lucide-angular.tsbuildinfo are Angular/ng-packagr build caches generated from packages/angular/src, which is present; the Debian build neither uses nor installs packages/angular, so no source is missing and nothing is shipped from them.
  • packages/lucide-react-native/lucide-react-native.d.ts is a checked-in bundled declaration file whose TypeScript sources are in packages/lucide-react-native/src; no dist/, node_modules/ or minified bundle exists anywhere in the tree.
  • Every Build-Depends entry I queried resolves in the archive: esbuild (Provides node-esbuild), node-tsx (Provides node-tsx), node-babel7, node-vue, node-rollup-plugin-babel/-commonjs/-node-resolve/-replace/-license/-dts, node-minimist, node-eventemitter3, node-isobject, node-svgtofont, node-typescript, rollup, dh-sequence-nodejs (Provides it); @types/node in debian/nodejs/extlinks is the virtual node-types-node provided by nodejs.
  • Patches carry DEP-3 headers (Description, Author/From, Forwarded) and address things Debian lacks (rollup-plugin-esbuild, rollup-plugin-summary, rollup-plugin-visualizer, prettier in the icon generator, @vercel/blob, oslllo-svg-fixer types); rollup-plugins-esbuild.patch explains its esbuild transform plugin.
  • Standards-Version 4.7.4 against Policy 4.7.4.1: same first two components, no issue. debhelper compat 13 with dh $@ and dh-sequence-nodejs; ${misc:Depends} present; no maintainer scripts needed; source format 3.0 (quilt).
  • uscan found upstream releases with debian/watch; a newer upstream version is available (upstream 1.69.0, packaged 1.55.0), which is not a fault of the package.
Not confirmed ◂
  • docs/public/templates/illustrator_template.ai is a binary PDF/Illustrator file; I did not open it, so any embedded fonts or placed third-party artwork inside it are unchecked. Upstream's own document, so only that embedding matters.
  • packages/vue/rollup.config.mjs passes includeExternal: ['@lucide/shared/types'] to rollup-plugin-dts, and @lucide/shared is not installed by node-lucide (debian/nodejs/submodules lists packages/vue only). If the produced dist/lucide-vue.d.ts imports that path, TypeScript consumers of @lucide/vue get an unresolved import; only a build can show whether the plugin inlines it.
  • debian/watch looks at github.com/elrumordelaluz/svgson, but the Source field of debian/copyright names github.com/lucide-icons/lucide. Whether these are the same upstream was not checked.
  • debian/watch looks at github.com/elrumordelaluz/svgson, but Repository in debian/upstream/metadata names github.com/lucide-icons/lucide. Whether these are the same upstream was not checked.
Proposed changes ◂

None.

Uploader's response to the LLM review

The uploader rejected this upload in response to the review.

Review Information

rejected — allocated to dfsg-uploader 1 day ago, started 1 day ago, completed 1 day ago.

Final Comment

The uploader rejected this upload in response to the automated (LLM) review of it, so that they can fix the problems it found and upload again.

Other Reviews of this Package

VersionHashAllocatedCompletedReviewerStatusDetails
1.70.0+dfsg-1 fb4d5de9… 2026-11-06 11:55 2026-11-06 11:55 dfsg-uploader rejected VIEW
1.52.0-1 5b7ba9b2… 2026-10-19 09:51 2026-10-19 09:51 dfsg-uploader rejected VIEW

Back to Dashboard | View all reviews for this package