Zaid Humaimidi
d445aa03cf
refactor: extract seed provision scripts to dedicated directory
...
Move bootstrap, default, and inform scripts from inline template
strings in lib/init.ts to standalone files under seed/, loaded via
an esbuild text-loader plugin. Add type-checking (provisions.d.ts,
tsconfig.json) and ESLint config for the seed scripts. Set tsconfig
module to Preserve to support import attributes.
2026-03-13 13:48:45 -07:00
Zaid Humaimidi
f39e2ce7cf
feat: add LIKE-Compare DC set relationships
...
Detect contradictions between LIKE patterns and comparison operators
(=, <, >) on the same field. For prefix patterns like 'abc%', use
range bounds to identify impossible combinations such as
(string < 'abc') AND (string LIKE 'abc%').
2026-03-13 13:15:52 -07:00
Zaid Humaimidi
6f3ce6f7c8
refactor: replace array-based expressions with typed class hierarchy
...
Replace the old Lisp-like array expression representation
(["AND", ["PARAM", ...], ...]) with a class hierarchy rooted in
an abstract Expression class (Literal, Parameter, Binary, Unary,
FunctionCall, Conditional). This gives compile-time type safety
to expression construction, evaluation, and pattern matching.
Key changes:
- New lib/common/expression.ts defines the class hierarchy with
map/evaluate/toString methods
- Rewrite parser as hand-rolled recursive descent, removing the
parsimmon dependency
- Extend Path with a colon separator to unify parameter identity
and attributes into a single address space (e.g.
"Device.WiFi.SSID.1.Name:writable"). The colon field tracks
how many trailing segments are attribute qualifiers. PathSet
rewritten with separate param/attr segment indexes
- Flatten device attribute representation in the UI to
colon-delimited keys mirroring the new path syntax
2026-03-12 14:58:20 -07:00
Zaid Humaimidi
75908e624f
build: migrate eslint to v10 flat config and upgrade typescript
...
Replace .eslintrc.json with eslint.config.js using the new flat config
format required by ESLint 10. Swap @typescript-eslint/eslint-plugin and
@typescript-eslint/parser for the unified typescript-eslint package.
Upgrade TypeScript to 5.9 and @types/node to 25. Apply automatic code
fixes: remove unused catch bindings and preserve error cause in auth
header parsing.
2026-03-12 14:58:19 -07:00
Zaid Humaimidi
4a191afdec
feat(ui): redesign UI with Tailwind CSS, CodeMirror 6, and new layout
...
- Replace all hand-written CSS with Tailwind utility classes
- Upgrade CodeMirror 5 to CodeMirror 6 (scoped @codemirror/* packages)
- Redesign layout with responsive sidebar navigation using JSX/Mithril
- Flatten admin routes (e.g. /admin/presets -> /presets)
- Add "remember me" login option with 2-week persistent cookie
- Add delete confirmation dialogs across admin pages
- Upgrade esbuild from 0.21 to 0.27 and update browser targets
- Add Inter and Roboto Mono variable fonts with subset script
2026-03-12 14:55:10 -07:00
Zaid Humaimidi
a7256620e0
chore: bump version to 1.3.0-dev
2026-03-12 14:28:07 -07:00
Zaid Humaimidi
bef840ce0a
docs: add ARCHITECTURE.md and AGENTS.md, expand CONTRIBUTING.md
...
Add ARCHITECTURE.md with comprehensive codebase map covering service
boundaries, expression system, session engine, sandbox, database layer,
and architectural invariants. Add AGENTS.md as a concise guide for AI
coding agents. Expand CONTRIBUTING.md with detailed code style, naming,
import, testing, and git workflow conventions.
2026-03-12 14:26:46 -07:00
Zaid Humaimidi
cc723c0b50
1.2.14
2026-03-12 14:26:22 -07:00
Zaid Humaimidi
a2a6fd82f3
Changelog for v1.2.14
2026-03-12 14:25:25 -07:00
Zaid Humaimidi
729beba0ed
Update dependencies
2026-03-12 12:38:03 -07:00
Zaid Humaimidi
1b14387aa2
Fix covers() for false and contradictions
2026-03-12 10:21:03 -07:00
Zaid Humaimidi
49cdd39617
Fix (de)serialization bug in VersionedMap
2025-02-12 19:05:08 -08:00
Zaid Humaimidi
4be39ed742
Replace deprecated koa middleware
2024-10-04 11:28:04 -07:00
Zaid Humaimidi
8ddb692370
Prevent UI crash when malformed URL is sent
2024-10-04 11:05:07 -07:00
Zaid Humaimidi
fc80a7d487
1.2.13
2024-06-06 12:55:38 -07:00
Zaid Humaimidi
f34f10edc7
Changelog for v1.2.13
2024-06-06 12:55:12 -07:00
Zaid Humaimidi
a416f68b76
Update dependencies
2024-06-06 12:52:53 -07:00
Zaid Humaimidi
2b61c8f7b8
Fix race condition when deleting multiple faults
2024-05-23 13:22:35 -07:00
Zaid Humaimidi
756912eeb1
Fix dynamic evaluation of UI config expressions
2024-04-22 14:14:12 -07:00
Zaid Humaimidi
5c4fc3263b
Increase server timeout to 2 mins
...
To allow enough time for running unindexed queries in large deployments.
2024-04-18 12:16:44 -07:00
Zaid Humaimidi
307b9f57b0
Fix bug in Mongo query construction
2024-04-18 11:51:29 -07:00
Zaid Humaimidi
0f6604ffbd
1.2.12
2024-03-28 12:56:35 -07:00
Zaid Humaimidi
f57a26c95b
Changelog for v1.2.12
2024-03-28 12:04:31 -07:00
Zaid Humaimidi
60e6d8b175
Fix regression in CSV and JSON streaming
2024-03-27 14:08:35 -07:00
Zaid Humaimidi
ab80a62c5c
Fix bug preventing XMPP client from connecting
2024-03-27 13:57:09 -07:00
Zaid Humaimidi
3134b63b68
Add requirements.txt for RTD
2024-03-21 13:06:33 -07:00
Zaid Humaimidi
2b1bca7dde
Add .readthedocs.yaml file
2024-03-21 12:27:40 -07:00
Zaid Humaimidi
fd046ea8e3
1.2.11
2024-03-21 12:03:24 -07:00
Zaid Humaimidi
8091907071
Changelog for v1.2.11
2024-03-21 11:32:43 -07:00
Zaid Humaimidi
872aa1c608
Update dependencies
2024-03-21 11:29:32 -07:00
Zaid Humaimidi
cdbfb172c7
Remove certificate validation check
...
Breaks compatibility with Node 12 and it's not really necessary anyway.
2024-03-20 17:11:14 -07:00
Zaid Humaimidi
c6fe696300
1.2.10
2024-03-18 19:32:26 -07:00
Zaid Humaimidi
8d7d4de386
Changelog for v1.2.10
2024-03-18 19:29:55 -07:00
Zaid Humaimidi
3701c73b00
Update dependencies
2024-03-18 19:17:47 -07:00
Zaid Humaimidi
6e501990e0
Update author in package.json
2024-03-18 18:56:09 -07:00
Zaid Humaimidi
450fc6fe53
Fix lock expired errors
2024-03-11 11:04:49 -07:00
Zaid Humaimidi
227a005400
Fix exception when URL has two trailing slashes
2024-03-07 13:27:06 -08:00
Zaid Humaimidi
867e7e768d
Fix crash with certain validator expressions
2024-03-01 09:47:12 -08:00
Zaid Humaimidi
1c61504a68
Fix regression in f3068c5
2024-03-01 09:43:52 -08:00
Zaid Humaimidi
effd574f4e
XMPP connection request
2024-02-27 11:41:03 -08:00
Zaid Humaimidi
f3068c5355
Improve pagination/sorting
2024-02-24 04:26:40 -08:00
Zaid Humaimidi
f8e6e93602
Better version metadata string
2023-12-19 13:11:59 -08:00
Zaid Humaimidi
e6c8d4f3f2
Build script improvements
2023-12-18 23:57:44 -08:00
Zaid Humaimidi
0dee9a5f00
Remove license headers and update imports
2023-12-18 19:13:59 -08:00
Zaid Humaimidi
bfbbdb12ca
Fix label issue in some components
2023-12-18 11:33:49 -08:00
Zaid Humaimidi
ddb240d542
Migrate from Ava test framework to node:test
2023-12-17 22:26:52 -08:00
Zaid Humaimidi
0c9c027a77
Update linting
2023-12-16 19:08:13 -08:00
Zaid Humaimidi
4f2dfb4f48
Drop Rollup in favor of esbuild
2023-12-12 22:27:58 -08:00
Zaid Humaimidi
342210faf1
Utilize locks to prevent certain edge case issues
2023-12-06 11:10:23 -08:00
Zaid Humaimidi
f4596db9f7
Remove caching of tasks, faults and operations
...
No longer seems to provide significant performance benefit to justify the
drawback of the added code complexity and the additional DB write query.
2023-11-23 10:34:47 -08:00
Zaid Humaimidi
d122b224b0
Resolve issues from DB lock collection migration
2023-11-16 15:58:26 -08:00
Zaid Humaimidi
7a142a4c08
Close log streams on process shutdown
2023-11-14 01:41:25 -08:00
Zaid Humaimidi
4cb143cc0a
Encode event codes containing illegal chars
2023-11-13 15:18:24 -08:00
Zaid Humaimidi
8d11e1cdd9
Support conditional requests in genieacs-fs
2023-11-13 13:25:29 -08:00
Zaid Humaimidi
f7e75caf2c
Support Range header in genieacs-fs
2023-11-10 15:15:24 -08:00
Zaid Humaimidi
c3954c277f
Refactor db and local-cache code
...
Separated cwmp and ui code into distinct files to enhance clarity and
maintainability with varied internal data representations.
2023-09-29 14:55:44 -07:00
Zaid Humaimidi
39bb937f9d
Fix oversight in commit 58488eb
2023-08-29 12:20:53 -07:00
Zaid Humaimidi
35b193f058
Fix bug in handling of 9005 faults
2023-08-28 18:21:19 -07:00
Zaid Humaimidi
4b0d1786dd
Strip extraneous properties from task objects
2023-08-28 18:19:23 -07:00
Zaid Humaimidi
ea956fbc9c
404 when updating tags of non-existing devices
2023-08-28 18:17:22 -07:00
Zaid Humaimidi
a0ad6ec3f1
Fix crash with certain validator expressions
2023-08-28 18:16:40 -07:00
Zaid Humaimidi
32dda9f194
Add indexable smart query types
2023-08-14 23:45:37 -07:00
Zaid Humaimidi
a54b2c8cd6
Handle unhandledRejection events
...
Because in Nodejs 12-14 unhandled rejections don't trigger uncaughtException
event by default so the process doesn't exit in case of errors.
2023-08-09 19:51:40 -07:00
Zaid Humaimidi
7b8a49a7ba
Refactor request listeners to use async functions
2023-08-09 19:51:40 -07:00
Zaid Humaimidi
58488ebc3d
Refactor DB code to use promises
2023-08-09 19:51:38 -07:00
Zaid Humaimidi
3169e829e7
Refactor expression to Mongo query translation
...
The previous approach was simplistic and could result in inefficient queries
in certain edge cases, notably causing MongoDB to not utilize existing indexes
when querying by last inform timestamps given upper and lower bounds. The new
implementation leverages our existing expression minimizer code and can
therefore generate more efficient queries or at least queries that can take
advantage of existing indexes.
2023-08-09 19:48:49 -07:00
Zaid Humaimidi
947f96299d
Prevent premature close error in small files
2023-04-19 12:01:53 -07:00
Zaid Abdulla
d1c01e0848
Fix FS drops connection if download is too slow
...
Only happens in HTTPS because seemingly somewhere in the stack up to
50mb of data is being buffered potentially triggering a timeout at a
higher level if not drained fast enough.
This commit also includes other streams related improvements.
2022-11-01 09:13:36 -07:00
Zaid Abdulla
444183da0a
1.2.9
2022-08-22 09:51:55 -07:00
Zaid Abdulla
c02f667623
Changelog for v1.2.9
2022-08-22 09:51:25 -07:00
Zaid Abdulla
25ea0c8b64
Update dependencies
2022-08-22 09:44:25 -07:00
Zaid Abdulla
2789961596
Skip invalid timestamps in declare()
2022-08-12 16:30:00 -07:00
Zaid Abdulla
d91be02599
Fix exception matching IPv6 against IPv4 CIDR
2022-08-12 11:32:15 -07:00
Zaid Abdulla
5806fe2df6
Better locking in local cache
...
Fixes occassional lock expired errors after updating presets, etc.
2022-08-12 01:11:04 -07:00
Zaid Abdulla
eb5caa6b5a
Skip root GPN workaround
2022-08-01 11:32:05 -07:00
Zaid Abdulla
ffbcf2bbc0
Fix Mongo query bug when using <> operator
2022-07-15 11:36:15 -07:00
Zaid Abdulla
6f29267266
Fix HTML Quirks mode issues
2022-06-29 11:07:42 -07:00
Zaid Abdulla
b0d50b07e7
Fix synthesized expressions being non-minimal
...
Let's try this again. The implementation of canRaise callback was
overly complicated and was causing the minimizer to ocassionally
get stuck in a local optima.
2022-06-14 11:23:33 -07:00
Zaid Abdulla
c06538f9cc
Fix browser quirks mode warning
2022-04-08 13:14:27 -07:00
Zaid Abdulla
344f0ec5e0
Fix DB update calls containing unchanged params
2022-03-11 11:43:49 -08:00
Zaid Abdulla
4b533d0aad
Fix issues caused by invalid xsd:dateTime values
...
Invalid dateTime strings were saved in the DB as NaN causing uncaught
exception in CSV download.
2022-03-11 11:42:10 -08:00
Zaid Abdulla
2b37f11e2e
Clean up MongoDB query projection
...
This prevents potential 'path collision' errors from MongoDB.
2022-02-17 18:14:53 -08:00
Zaid Abdulla
adaf801d6e
Stream query results as they become available
2021-11-29 23:36:27 -08:00
Zaid Abdulla
94756e463f
Pass BROTLI_OPERATION_FLUSH to koa-compress
2021-11-29 23:11:20 -08:00
Zaid Abdulla
3c55306e22
Fix false warning message
2021-11-15 15:42:33 -08:00
Zaid Abdulla
aa12b7c724
Fix query unpacking breaking $regex operator
...
If the regex string can be parsed as a date or a number, the unpacked
query will be rejected by MongoDB because $regex operator only accepts
a string.
2021-11-08 14:21:14 -08:00
Zaid Abdulla
8f827997cd
Fix tags set via script saved in encoded form
2021-11-08 13:55:30 -08:00
Zaid Abdulla
c9a4be0475
Deubg log for HTTP and HTTPS client errors
2021-11-08 12:21:02 -08:00
Zaid Abdulla
fa95d7a310
1.2.8
2021-10-27 13:07:03 -07:00
Zaid Abdulla
d299ef3a59
Changelog for v1.2.8
2021-10-27 13:06:37 -07:00
Zaid Abdulla
2c606b268e
Update dependencies
2021-10-27 13:04:34 -07:00
Zaid Abdulla
1b86f41ad7
Replace later dependency with @breejs/later
2021-10-26 17:40:17 -07:00
Zaid Abdulla
c4754a9b55
Strip dev deps from new lock file format
2021-10-26 10:33:33 -07:00
Zaid Abdulla
f24111ea9f
Support modulo operator in expressions
2021-10-25 16:51:46 -07:00
Zaid Abdulla
8f662fb152
Fix expr parser treating - and / as commutative
2021-10-25 13:40:48 -07:00
Zaid Abdulla
dd722ba6e0
Improve sorting toggle behavior
...
Last sorted column now takes precedence over any previously sorted
columns. This makes for a more intuitive user experience.
2021-10-25 13:36:23 -07:00
Zaid Abdulla
88a84788a5
Evaluate component attrs before use
2021-10-24 18:17:03 -07:00
Zaid Abdulla
73baffc3b9
Improve container component
...
Allow passing custom attribute to the HTML element. Implement function
encodeUriComponent for attribute expressions.
2021-10-24 18:14:36 -07:00
Zaid Abdulla
0188ac860b
Handle unsupported ACS methods gracefully
2021-10-15 16:21:08 -07:00
Zaid Abdulla
7f295beeec
Validate host arg passed to ping
...
Fixes remote code execution vulnerability reported by Alex Hordijk.
2021-10-15 16:21:08 -07:00