Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
39 commits
Select commit Hold shift + click to select a range
c43708b
Feature: Add language level to FM information
jmhorcas Jul 15, 2025
fa897ec
Update flamapy to pre-release
jmhorcas Oct 16, 2025
2993fbb
Merge branch 'main' into horcas
jmhorcas Oct 16, 2025
461dd7a
Feature: Add Attribute Optimization operation
jmhorcas Oct 17, 2025
2f884b2
Fix: attribute optimization
jmhorcas Oct 17, 2025
2fe521c
Update plugins
jmhorcas Oct 17, 2025
85a6b83
fix: Update fixed z3 package
sebasruii Nov 4, 2025
91fed60
feat: Add new z3 plugin version
sebasruii Nov 24, 2025
876aa72
fix: Serialize attributes
sebasruii Nov 24, 2025
2589548
updating to enable collaboration between multiple users
jagalindo Nov 30, 2025
54341b1
enabled collaboration
jagalindo Nov 30, 2025
6a665ab
feat: updating icon arrangement and viz improvements
jagalindo Dec 1, 2025
3609a59
feat: merge views/analytics/horcas/collab into develop
jagalindo Mar 6, 2026
1b095f9
feat: improve UI, fix FIP output, upgrade wheels to 2.5.0
jagalindo Mar 6, 2026
165f4a1
fix: high-priority improvements across CI, tests, and UX
jagalindo Mar 6, 2026
f1be87f
fix: set minimum Python version to 3.11
jagalindo Mar 6, 2026
cc617fa
feat: implement all medium and low priority improvements
jagalindo Mar 6, 2026
a659d49
fix: dark mode toggle and ESLint vendor file exclusion
jagalindo Mar 6, 2026
f9a65ce
fix: add dark mode classes across all editor UI components
jagalindo Mar 6, 2026
10473c4
chore: update dependencies, fix wheel install indentation, and ignore…
jagalindo Mar 9, 2026
a647812
chore: commit remaining working tree changes for develop sync
jagalindo Mar 9, 2026
23324e2
chore: merge origin/main dependabot rollup bump into develop
jagalindo Mar 9, 2026
5d3ca0f
fix: prevent flamapy-configurator wheel from downgrading flamapy-fm/fw
claude Mar 9, 2026
6effedf
fix: resolve all ESLint errors and warnings blocking lint CI
claude Mar 9, 2026
c7b95af
fix: Update menu button size
sebasruii Mar 9, 2026
a5a88a5
Feat: New feature flow map visualization for attributes
jmhorcas Apr 12, 2026
5b9330e
Feature: Pareto Front viz for Attr. Opt. with Z3
jmhorcas Apr 17, 2026
6baf910
chore: Update deps
sebasruii Apr 23, 2026
4db4cc9
chore: Update deps
sebasruii Apr 24, 2026
3f43744
feat: Import model to UVLHub
sebasruii Apr 24, 2026
08b52f0
fix: Add model.uvl so that UVLHub can understand the endpoint
sebasruii Apr 24, 2026
6b749c1
fix: Correct dark mode styling on some components
sebasruii Apr 24, 2026
78843f3
fix: Correct collab button style
sebasruii Apr 24, 2026
afd76b7
feat: modification to host the ide in github pages automatically. Onl…
jagalindo May 29, 2026
56a4068
feat: updating the mechanism to get the wheels. It now self checks fr…
jagalindo Jun 1, 2026
f14a5b4
fix: retrieving flamapy wheels from its releases
jagalindo Jun 2, 2026
df98057
fix: solving linting errors
jagalindo Jun 2, 2026
d482b3e
fix: regenerate flamapy wheels in the test workflow
jagalindo Jun 2, 2026
236e689
fix: solving issue with actions release
jagalindo Jun 2, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 7 additions & 1 deletion .eslintrc.cjs
100644 → 100755
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,13 @@ module.exports = {
'plugin:react/jsx-runtime',
'plugin:react-hooks/recommended',
],
ignorePatterns: ['dist', '.eslintrc.cjs'],
ignorePatterns: ['dist', '.eslintrc.cjs', 'public/', 'nginx/'],
overrides: [
{
files: ['server/**/*.js', 'vite.config.js'],
env: { node: true },
},
],
parserOptions: { ecmaVersion: 'latest', sourceType: 'module' },
settings: { react: { version: '18.2' } },
plugins: ['react-refresh'],
Expand Down
64 changes: 64 additions & 0 deletions .github/workflows/deploy-pages.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,64 @@
name: Deploy to GitHub Pages

on:
push:
branches: [main]
workflow_dispatch:

permissions:
contents: read
pages: write
id-token: write

concurrency:
group: pages
cancel-in-progress: false

jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4

- uses: actions/setup-node@v4
with:
node-version: 20
cache: npm

- uses: actions/setup-python@v5
with:
python-version: "3.11"

- name: Configure Pages
id: pages
uses: actions/configure-pages@v5

- run: npm ci

# The flamapy wheels served to the browser are not tracked in git (see
# .gitignore); regenerate them from flamapy.version before the build so
# Vite copies them into dist/.
- name: Build flamapy wheels
run: make build-wheels

- name: Build
env:
VITE_BASE_PATH: ${{ steps.pages.outputs.base_path }}/
run: npm run build

- name: SPA fallback
run: cp dist/index.html dist/404.html

- uses: actions/upload-pages-artifact@v3
with:
path: dist

deploy:
needs: build
runs-on: ubuntu-latest
environment:
name: github-pages
url: ${{ steps.deployment.outputs.page_url }}
steps:
- id: deployment
uses: actions/deploy-pages@v4
2 changes: 2 additions & 0 deletions .github/workflows/docker-image.yml
100644 → 100755
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ on:
jobs:
build-and-publish:
runs-on: ubuntu-latest
if: github.event.workflow_run.conclusion == 'success'

steps:
- name: Checkout the code
Expand All @@ -33,6 +34,7 @@ jobs:

deploy:
runs-on: ubuntu-latest
if: github.event.workflow_run.conclusion == 'success'

steps:
- name: Deploy
Expand Down
29 changes: 29 additions & 0 deletions .github/workflows/lint.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
name: Lint

on:
pull_request:
branches:
- main
push:
branches:
- develop

jobs:
lint:
runs-on: ubuntu-latest

steps:
- name: Checkout code
uses: actions/checkout@v4

- name: Set up Node.js
uses: actions/setup-node@v4
with:
node-version: 20
cache: npm

- name: Install dependencies
run: npm ci

- name: Run ESLint
run: npm run lint
18 changes: 15 additions & 3 deletions .github/workflows/pytest.yaml
100644 → 100755
Original file line number Diff line number Diff line change
Expand Up @@ -16,13 +16,25 @@ jobs:
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: "3.10"
python-version: "3.11"

# The flamapy wheels served to the browser are not tracked in git (see
# .gitignore); regenerate them from flamapy.version so the tests run
# against the same artifacts the browser loads.
- name: Build flamapy wheels
run: make build-wheels

- name: Install dependencies
run: |
python -m pip install --upgrade pip
python -m pip install --upgrade pip setuptools wheel
# Install the exact flamapy wheels served to the browser (not a PyPI
# pin), so the tests run against the shipped artifacts. The z3_solver
# wheel is WASM-only and cannot install natively, so it is excluded;
# the native z3-solver comes from requirements.txt instead.
pip install --no-deps $(ls public/flamapy/*.whl | grep -v 'wasm')
# Native solver backends + test tooling (python-sat, z3-solver, pytest).
pip install -r requirements.txt

- name: Run tests
run: |
pytest
pytest --cov=public tests/
6 changes: 5 additions & 1 deletion .github/workflows/release-please.yml
100644 → 100755
Original file line number Diff line number Diff line change
Expand Up @@ -18,4 +18,8 @@ jobs:
# this is a built-in strategy in release-please, see "Action Inputs"
# for more options
release-type: node
token: ${{ secrets.RELEASE_TOKEN }}
# Built-in token (auto-provisioned, never expires). The job's
# permissions block below grants the contents/PR write access
# release-please needs. The Docker workflow still triggers because it
# listens on `workflow_run`, which fires regardless of the token used.
token: ${{ secrets.GITHUB_TOKEN }}
54 changes: 54 additions & 0 deletions .github/workflows/update-flamapy-wheels.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
name: Update flamapy wheels

# Keeps the flamapy-authored wheels in public/flamapy/ in sync with the flamapy
# release pinned in ./flamapy.version. Runs whenever that file changes and on
# demand; opens a pull request whenever the bundle changes. Third-party deps and
# the z3_solver wasm wheel are not touched (use `make build-wheels` for those).
on:
push:
paths:
- "flamapy.version"
workflow_dispatch:

permissions:
contents: write
pull-requests: write

jobs:
update:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4

- uses: actions/setup-python@v5
with:
python-version: "3.11"

- name: Update flamapy wheels from the latest release
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: python scripts/update_flamapy_wheels.py

- name: Open a pull request with the refreshed wheels
uses: peter-evans/create-pull-request@v6
with:
token: ${{ secrets.GITHUB_TOKEN }}
branch: chore/update-flamapy-wheels
delete-branch: true
title: "chore: update flamapy wheels to the pinned release"
commit-message: "chore: sync flamapy wheels with the pinned flamapy release"
body: |
Automated update of the flamapy-authored wheels in `public/flamapy/`
from the [flamapy release](https://github.com/flamapy/flamapy/releases)
pinned in `flamapy.version`.

Refreshed `flamapy`, `flamapy-fw`, `flamapy-fm`, `flamapy-sat`,
`flamapy-bdd` and `flamapy-z3`, and rewrote the matching filenames in
`plugins.conf.json`. Third-party dependencies and the `z3_solver`
wasm wheel are unchanged.

> Note: PRs opened with the default `GITHUB_TOKEN` do not trigger
> other workflows. Push an empty commit or re-open the PR to run CI.
add-paths: |
public/flamapy/*.whl
public/flamapy/plugins.conf.json
24 changes: 23 additions & 1 deletion .gitignore
100644 → 100755
Original file line number Diff line number Diff line change
Expand Up @@ -24,4 +24,26 @@ dist-ssr
*.sw?
.venv
*/__pycache__
*/*/__pycache__
*/*/__pycache__

env/

# Claude Code
CLAUDE.md
.claude/

# Local environment variables
.env
.env.example

# start_coding.sh local environments
start_coding.sh

# Flamapy wheels served to the browser are build artifacts: they are
# regenerated by `make build-wheels` (versions from flamapy.version + the
# Makefile dep list) and the deploy pipelines rebuild them before bundling, so
# they are not tracked. The two wheels below are manually vendored and have no
# PyPI/release-bundle source, so they MUST stay tracked.
public/flamapy/*.whl
!public/flamapy/flamapy_configurator-*.whl
!public/flamapy/z3_solver-*.whl
Empty file modified CHANGELOG.md
100644 → 100755
Empty file.
21 changes: 19 additions & 2 deletions Dockerfile
100644 → 100755
Original file line number Diff line number Diff line change
Expand Up @@ -25,12 +25,26 @@ EXPOSE 5173
# Start the Vite development server
CMD ["npm", "run", "dev", "--", "--host"]

# Stage 3: Production Build
# Stage 3: Regenerate the flamapy wheels served to the browser.
# These wheels are not tracked in git (see .gitignore); `make build-wheels`
# rebuilds them from flamapy.version + the Makefile dep list. The two manually
# vendored wheels (flamapy-configurator, z3_solver wasm) are copied in from the
# build context, which `make build-wheels` leaves untouched.
FROM python:3.11 AS wheels
WORKDIR /app
COPY Makefile flamapy.version ./
COPY public/flamapy ./public/flamapy
RUN make build-wheels

# Stage 4: Production Build
FROM base AS build

# Set environment to production
ENV NODE_ENV=production

# Pull in the regenerated wheels so Vite copies them into dist/
COPY --from=wheels /app/public/flamapy ./public/flamapy

# Build the app
RUN npm run build

Expand All @@ -43,9 +57,12 @@ ENV NODE_ENV=production
# Copy built files from the build stage
COPY --from=build /app/dist /usr/share/nginx/html

# Copy custom Nginx configuration, if needed (optional)
# Copy custom Nginx configuration
COPY nginx.conf /etc/nginx/nginx.conf

# Copy njs script for the /raw endpoint (UVLHub integration)
COPY nginx/raw.js /etc/nginx/njs/raw.js

# Expose port 80 for the Nginx server
EXPOSE 80

Expand Down
Empty file modified LICENSE.md
100644 → 100755
Empty file.
Loading
Loading