Commit 6658bc8
New version with Z3 support among other changes (#44)
* Feature: Add language level to FM information
* Update flamapy to pre-release
* Feature: Add Attribute Optimization operation
* Fix: attribute optimization
* Update plugins
* fix: Update fixed z3 package
* feat: Add new z3 plugin version
* fix: Serialize attributes
* updating to enable collaboration between multiple users
* enabled collaboration
* feat: updating icon arrangement and viz improvements
* feat: merge views/analytics/horcas/collab into develop
- Toolbar-less layout: controls injected into Navbar via setNavControls
- Plugin config system: public/flamapy/plugins.conf.json drives which wheels
micropip installs and which solver tabs the UI shows; Z3 disabled by default
- Solver tabs (SAT/BDD/Z3) now derived from config loaded by the worker on startup
- New views: Config. Distribution and Feature Prob. charts (from views branch)
using react-chartjs-2; BDD-backed Python functions in flamapy_ide.py
- Z3 support: attribute optimization modal, getNumericalAttributes worker action
- Collaborative editing: yjs + y-websocket, gated on VITE_ENABLE_COLLAB=true
- Analytics: GA4 with cookie consent, Privacy Policy and Cookie Preferences pages
- Makefile: add build-wheels target to download pure-python wheels from PyPI
- Remove leftover EditorPage copy files
* feat: improve UI, fix FIP output, upgrade wheels to 2.5.0
- Toolbar: add Metrics dropdown (Config Distribution, Feature Prob.) inline with View section; remove standalone Configurator section
- DropdownMenu: use minWidth so option text is never clipped
- ModelProperties: remove FM Fact Label link
- flamapy_ide.py: fix BDDFeatureInclusionProbability printing [object Object] by serializing plain dicts to string list
- Makefile: add clean-old-wheels target (reads plugins.conf.json as source of truth); runs automatically after build-wheels
- .gitignore: ignore CLAUDE.md, .claude/, .env, .env.example
- Wheels: upgrade all flamapy packages to 2.5.0, dd to 0.6.0; remove stale 2.1.0.dev0 wheels, flamapy_bdd_colosal, and Linux z3 wheel
* fix: high-priority improvements across CI, tests, and UX
- Tests: fix silent assertions in test_get_model_information (missing
assert keywords and accidental assignments instead of comparisons)
- CI: add ESLint workflow that runs on PRs to main and pushes to develop
- CI: fix Docker workflow — guard both jobs with
'conclusion == success' so a failed release-please does not trigger
a build or deploy
- CI: bump Python to 3.12 to match Pyodide runtime; install vendored
flamapy_configurator wheel; add --cov flag to pytest
- UX: persist editor content to localStorage on every edit and restore
it on startup when no file is being imported; skipped during collab
sessions to avoid cross-session bleed
* fix: set minimum Python version to 3.11
* feat: implement all medium and low priority improvements
Medium priority:
- Graph view: explicitly re-fetch feature tree on every switch to graph,
ensuring the visualization is always in sync with the current model
- Tests: add coverage for get_configuration_distribution,
get_feature_inclusion_probabilities, and BDDFeatureInclusionProbability
dict serialization path
- Error boundaries: add ErrorBoundary component wrapping chart views so
a render crash does not take down the whole editor
- Metrics charts: add Download PNG button to Config Distribution and
Feature Inclusion Probabilities charts via chartjs toBase64Image
Low priority:
- URL model sharing: ?model=<base64> query param loads a model on startup
(priority over localStorage); Share section in toolbar copies the link
- UVL autocomplete: Monaco snippet completions for all UVL keywords
(namespace, features, constraints, mandatory, optional, alternative, or)
- Keyboard navigation in DropdownMenu: ArrowUp/Down to move focus,
Enter to select, Escape to close; ARIA roles updated to listbox/option
- Dark mode: Tailwind darkMode:'class', toggle button in Navbar (persisted
to localStorage), dark variants on Navbar, toolbar, output panel,
model info panel, and dropdown menu
* fix: dark mode toggle and ESLint vendor file exclusion
- Exclude public/ from ESLint to prevent vendor files (pyodide, flamapy)
from causing lint failures in CI
- Wire darkMode prop from App → EditorPage → UVLEditor so Monaco editor
switches between vs/vs-dark themes when the toggle is clicked
* fix: add dark mode classes across all editor UI components
Cover the remaining components that were displaying light-only colors:
FeatureTree panel/nodes, Wizzard container, ModelProperties text/dividers,
Configuration feature lists, toolbar buttons (solver/analysis/export/metrics/collab),
hide/show panel buttons, Z3 optimization modal, and the UVLEditor wrapper div.
* chore: update dependencies, fix wheel install indentation, and ignore start_coding.sh
- Add chart.js, js-cookie, react-chartjs-2, react-cookie-consent, react-ga4 to package-lock.json
- Update esbuild to 0.27.3
- Fix micropip.install indentation in flamapy.js
- Add start_coding.sh to .gitignore
* chore: commit remaining working tree changes for develop sync
- webworker.js: pass msgId in postMessage responses, simplify context destructuring
- requirements.txt: update to flamapy 2.5.0, add z3, fix configurator install note
- FeatureModelVisualization.jsx: replace dom-to-svg with native XMLSerializer for SVG export
- Normalize file modes and binary assets to match working environment
* fix: prevent flamapy-configurator wheel from downgrading flamapy-fm/fw
The vendored flamapy_configurator-2.0.1-py3-none-any.whl requires
flamapy-fw~=2.0.1 and flamapy-fm~=2.0.0, causing pip to downgrade
those packages from 2.5.0. This removed FMLanguageLevel from
flamapy-fm, breaking all test collection with an ImportError.
- Use --no-deps when installing the configurator wheel so 2.5.0
packages stay in place
- Also upgrade setuptools and wheel alongside pip to avoid
astutils/ply build failures on older setuptools versions
- Fix BDDVariantFeatures test to use order-independent comparison
since the BDD operation returns features in non-deterministic order
* fix: resolve all ESLint errors and warnings blocking lint CI
- Add node env override in .eslintrc.cjs for server/ files so
process is recognised without explicit global declarations
- Remove stale eslint-disable comments (no-console in collab-server,
no-unused-vars in EditorPage) that were flagged as unused directives
- Add PropTypes for Configuration, ErrorBoundary,
FeatureInclusionProbabilitiesChart, Information, ProductDistributionChart
- Remove unused React import from FeatureInclusionProbabilitiesChart
and ProductDistributionChart (jsx-runtime transform makes it unneeded)
- Add missing useEffect deps: availableWidth in FeatureModelVisualization,
type in Information; suppress intentional once-on-mount effect in Home
- Fix no-useless-escape in UVLEditor regex character classes
- Remove unused cancelURL variable from Wizzard
- Remove unused importURL state from Home
* fix: Update menu button size
* Feat: New feature flow map visualization for attributes
* Feature: Pareto Front viz for Attr. Opt. with Z3
* chore: Update deps
* chore: Update deps
* feat: Import model to UVLHub
* fix: Add model.uvl so that UVLHub can understand the endpoint
* fix: Correct dark mode styling on some components
* fix: Correct collab button style
* feat: modification to host the ide in github pages automatically. Only client side features will be available by now.
* feat: updating the mechanism to get the wheels. It now self checks fro new flamapy versions and retrieves the wheels
* fix: retrieving flamapy wheels from its releases
* fix: solving linting errors
* fix: regenerate flamapy wheels in the test workflow
---------
Co-authored-by: José Miguel Horcas <horcas@uma.es>
Co-authored-by: sebasruii <fsbrd10@gmail.com>1 parent bfa9682 commit 6658bc8
104 files changed
Lines changed: 5172 additions & 1316 deletions
File tree
- .github/workflows
- nginx
- public
- assets
- models
- flamapy
- pyodide
- scripts
- server
- src
- components
- hooks
- pages
- editor
- utils
- tests
- test_models
Some content is hidden
Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
7 | 7 | | |
8 | 8 | | |
9 | 9 | | |
10 | | - | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
11 | 17 | | |
12 | 18 | | |
13 | 19 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
| 32 | + | |
| 33 | + | |
| 34 | + | |
| 35 | + | |
| 36 | + | |
| 37 | + | |
| 38 | + | |
| 39 | + | |
| 40 | + | |
| 41 | + | |
| 42 | + | |
| 43 | + | |
| 44 | + | |
| 45 | + | |
| 46 | + | |
| 47 | + | |
| 48 | + | |
| 49 | + | |
| 50 | + | |
| 51 | + | |
| 52 | + | |
| 53 | + | |
| 54 | + | |
| 55 | + | |
| 56 | + | |
| 57 | + | |
| 58 | + | |
| 59 | + | |
| 60 | + | |
| 61 | + | |
| 62 | + | |
| 63 | + | |
| 64 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
8 | 8 | | |
9 | 9 | | |
10 | 10 | | |
| 11 | + | |
11 | 12 | | |
12 | 13 | | |
13 | 14 | | |
| |||
33 | 34 | | |
34 | 35 | | |
35 | 36 | | |
| 37 | + | |
36 | 38 | | |
37 | 39 | | |
38 | 40 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
16 | 16 | | |
17 | 17 | | |
18 | 18 | | |
19 | | - | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
20 | 26 | | |
21 | 27 | | |
22 | 28 | | |
23 | | - | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
| 32 | + | |
| 33 | + | |
| 34 | + | |
| 35 | + | |
24 | 36 | | |
25 | 37 | | |
26 | 38 | | |
27 | 39 | | |
28 | | - | |
| 40 | + | |
File mode changed.
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
| 32 | + | |
| 33 | + | |
| 34 | + | |
| 35 | + | |
| 36 | + | |
| 37 | + | |
| 38 | + | |
| 39 | + | |
| 40 | + | |
| 41 | + | |
| 42 | + | |
| 43 | + | |
| 44 | + | |
| 45 | + | |
| 46 | + | |
| 47 | + | |
| 48 | + | |
| 49 | + | |
| 50 | + | |
| 51 | + | |
| 52 | + | |
| 53 | + | |
| 54 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
24 | 24 | | |
25 | 25 | | |
26 | 26 | | |
27 | | - | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
| 32 | + | |
| 33 | + | |
| 34 | + | |
| 35 | + | |
| 36 | + | |
| 37 | + | |
| 38 | + | |
| 39 | + | |
| 40 | + | |
| 41 | + | |
| 42 | + | |
| 43 | + | |
| 44 | + | |
| 45 | + | |
| 46 | + | |
| 47 | + | |
| 48 | + | |
| 49 | + | |
File mode changed.
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
25 | 25 | | |
26 | 26 | | |
27 | 27 | | |
28 | | - | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
| 32 | + | |
| 33 | + | |
| 34 | + | |
| 35 | + | |
| 36 | + | |
| 37 | + | |
| 38 | + | |
| 39 | + | |
29 | 40 | | |
30 | 41 | | |
31 | 42 | | |
32 | 43 | | |
33 | 44 | | |
| 45 | + | |
| 46 | + | |
| 47 | + | |
34 | 48 | | |
35 | 49 | | |
36 | 50 | | |
| |||
43 | 57 | | |
44 | 58 | | |
45 | 59 | | |
46 | | - | |
| 60 | + | |
47 | 61 | | |
48 | 62 | | |
| 63 | + | |
| 64 | + | |
| 65 | + | |
49 | 66 | | |
50 | 67 | | |
51 | 68 | | |
| |||
0 commit comments