diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index 093f7d073b4..10b20b459a0 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -1,3 +1,3 @@ -* @lordofhyphens @supermerill +* @supermerill @lordofhyphens -.github/CODEOWNERS @lordofhyphens +.github/CODEOWNERS @supermerill diff --git a/.github/CONTRIBUTING.md b/.github/CONTRIBUTING.md index ac45ab97622..33cd093369e 100644 --- a/.github/CONTRIBUTING.md +++ b/.github/CONTRIBUTING.md @@ -1,36 +1,23 @@ # CONTRIBUTING -## Bug Reports +* SuperSlicer and Slic3r are merging so you should be able to use the superslicer repository or the slic3r one. (when the switch will be completed) -Did you encounter an issue with using Slic3r? Fear not! This guide will help you to write a good bug report in just a few, simple steps. +## Bug Reports -There is a good chance that the issue, you have encountered, is already reported. Please check the [list of reported issues](https://github.com/alexrj/Slic3r/issues) before creating a new issue report. If you find an existing issue report, feel free to add further information to that report. +Did you encounter an issue with using SuperSlicer? Fear not! This guide will help you to write a good bug report in just a few, simple steps. -If you are reporting an issue relating to a release version of Slic3r, it would help a lot if you could also confirm that the behavior is still present in the newest build [(windows)](https://bintray.com/lordofhyphens/Slic3r/slic3r_dev/). Otherwise your issue will be closed as soon as someone else isn't able to reproduce it on current master. +There is a good chance that the issue, you have encountered, is already reported. Please check the [list of reported issues](https://github.com/supermerill/SuperSlicer/issues) before creating a new issue report. If you find an existing issue report, feel free to add further information to that report. -When possible, please include the following information when [reporting an issue](https://github.com/Slic3r/Slic3r/issues/new): -* Slic3r version (See the about dialog for the version number. If running from git, please include the git commit ID from `git rev-parse HEAD` also.) -* Operating system type + version -* Steps to reproduce the issue, including: - * Command line parameters used, if any - * Slic3r configuration file (Use ``Export Config...`` from the ``File`` menu - please don't export a bundle) - * Expected result - * Actual result - * Any error messages -* If the issue is related to G-code generation, please include the following: - * STL, OBJ or AMF input file (please make sure the input file is not broken, e.g. non-manifold, before reporting a bug) - * a screenshot of the G-code layer with the issue (e.g. using [Pronterface](https://github.com/kliment/Printrun) or preferably the internal preview tab in Slic3r). -* If the issue is a request for a new feature, be ready to explain why you think it's needed. - * Doing more preparatory work on your end makes it more likely it'll get done. This includes the "how" it can be done in addition to the "what". - * Define the "What" as strictly as you can. Consider what might happen with different infills than simple rectilinear. +If you are reporting an issue relating to a release version of SuperSlicer, it would help a lot if you could also confirm that the behavior is still present in the [newest build](https://github.com/supermerill/SuperSlicer/actions). +Please include the needed information when [reporting an issue](https://github.com/supermerill/SuperSlicer/issues/new) (follow the template and add your project file!) Please make sure only to include one issue per report. If you encounter multiple, unrelated issues, please report them as such. Simon Tatham has written an excellent on article on [How to Report Bugs Effectively](http://www.chiark.greenend.org.uk/~sgtatham/bugs.html) which is well worth reading, although it is not specific to Slic3r. ## Submitting a Patch -Do you want to help fix issues in or add features to Slic3r? That's also very, very welcome :) +Do you want to help fix issues in or add features to SuperSlicer/Slic3r? That's also very, very welcome :) Basically you can follow the [GitHub flow](https://guides.github.com/introduction/flow/) for submitting @@ -57,6 +44,5 @@ contributing to the Slic3r project. ## Communication +* [Superslicer discord invite link](https://discord.gg/ygBBdRRwJY) * #slic3r on [FreeNode](https://webchat.freenode.net): talk to _Sound_, _LoH_ or the other members of the Slic3r community. -* Drop Alessandro a line at aar@cpan.org. -* Drop Joseph a line at lenox.joseph@gmail.com diff --git a/.github/FUNDING.yml b/.github/FUNDING.yml index 78d7851b75c..d7404208b16 100644 --- a/.github/FUNDING.yml +++ b/.github/FUNDING.yml @@ -1,6 +1,7 @@ # These are supported funding model platforms github: [supermerill]# Replace with up to 4 GitHub Sponsors-enabled usernames e.g., [user1, user2] +ko_fi: superslicer #patreon: # Replace with a single Patreon username #open_collective: # Replace with a single Open Collective username #ko_fi: # Replace with a single Ko-fi username diff --git a/.github/ISSUE_TEMPLATE.md b/.github/ISSUE_TEMPLATE.md index c890df33c17..6e04d11a0fb 100644 --- a/.github/ISSUE_TEMPLATE.md +++ b/.github/ISSUE_TEMPLATE.md @@ -1,11 +1,5 @@ ### Version -_Version of Slic3r used goes here_ - -_Use `About->About Slic3r` for release versions._ - -_Do not report Prusa3D Slic3r bugs here without confirming it is a problem on a development release of Slic3r, or your issue will be closed. *Only* use normal Slic3r version IDs._ - -_For -dev versions, use `git describe --tag` or get the hash value for the version you downloaded or `git rev-parse HEAD`_ +_Version of SuperSlicer used goes here (help->about)_ ### Operating system type + version _What OS are you using, and state any version #s_ @@ -13,14 +7,13 @@ _What OS are you using, and state any version #s_ ### Behavior * _Describe the problem_ * _Steps needed to reproduce the problem_ - * _If this is a command-line slicing issue, include the options used_ * _Expected Results_ * _Actual Results_ - * _Screenshots from __*Slic3r*__ preview are preferred_ + * _Screenshots if useful_ _Is this a new feature request?_ Related guides for writing feature requests: http://meta.stackexchange.com/a/259196 http://nickohrn.com/2013/09/write-great-feature-request-bug-report/ - -#### STL/Config (.ZIP) where problem occurs -_Upload a zipped copy of an STL and your config (`File -> Export Config`)_ +#### Project File (.3MF) where problem occurs +_*Upload a Project File* (.3MF) `Plater -> Save Project as...`_ +_You have to zip it (or rename it to .zip) to be able to drag& drop it here_ \ No newline at end of file diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md index f7692d54d6a..ef7b42e9f58 100644 --- a/.github/ISSUE_TEMPLATE/bug_report.md +++ b/.github/ISSUE_TEMPLATE/bug_report.md @@ -1,14 +1,19 @@ --- -name: Bug report -about: Create a report to help us improve +name: Bug report template +about: Old bug report template do modify manually --- -### Do not report Prusa3D Slic3r bugs here without confirming it is a problem on a development release of Slic3r, or your issue will be closed. [Development builds of Slic3r](https://dl.slic3r.org/dev). [Prusa3D Issue Tracker](https://github.com/Prusa3D/Slic3r/issues) - -**Describe the bug** +**Bug description** A clear and concise description of what the bug is. +**Expected behavior** +A clear and concise description of what you expected to happen. + +!!>> Project File <`Save project as...`, then zip it & drop it here. +Please export it just before the problem occur. Even if you did nothing and/or there is no object, export it! (it contains your current configuration). + **To Reproduce** Steps to reproduce the behavior: 1. Go to '...' @@ -16,21 +21,13 @@ Steps to reproduce the behavior: 3. Scroll down to '....' 4. See error -**3D Model and Slic3r Configuration Export** -Please upload a ZIP archive containing a copy of the 3D model you are seeing this bug with and a CTRL-E export of the configuration used. - -**Expected behavior** -A clear and concise description of what you expected to happen. - **Screenshots** If applicable, add screenshots to help explain your problem. **Desktop (please complete the following information):** - OS: [e.g. MacOS, Linux, Windows] - - Version [e.g. 1.3.0] - - _Do not report Prusa3D Slic3r bugs here without confirming it is a problem on a development release of Slic3r, or your issue will be closed. *Only* use normal Slic3r version IDs._ - - _For -dev versions, use `git describe --tag` or get the hash value for the version you downloaded or `git rev-parse HEAD`_ - - _Use `About->About Slic3r` for release versions._ + - Version [e.g. 2.3.55.5], Use `Help->About`_ + - Printer model **Additional context** Add any other context about the problem here. diff --git a/.github/ISSUE_TEMPLATE/bug_report_form.yml b/.github/ISSUE_TEMPLATE/bug_report_form.yml new file mode 100644 index 00000000000..4c3872877e6 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/bug_report_form.yml @@ -0,0 +1,56 @@ +name: Bug Report +description: File a bug report +body: + - type: markdown + attributes: + value: | + Thanks for taking the time to fill out this bug report! + - type: textarea + id: what-happened + attributes: + label: What happened? + description: Also tell us, what did you expect to happen? + placeholder: | + What is the problem? + What did you expect? + You paste or drop screenshots here + validations: + required: true + - type: textarea + id: to_reproduce + attributes: + label: Project file & How to reproduce + description: "*Please* upload a ZIP archive containing the project file used when the problem arise. Please export it just before the problem occur. Even if you did nothing and/or there is no object, export it! (it contains your current configuration)." + placeholder: | + `File`->`Save project as...` then zip it & drop it here + Also, if needed include the steps to reproduce the bug: + 1. Go to '...' + 2. Click on '....' + 3. Scroll down to '....' + 4. See error + validations: + required: true + - type: input + id: version + attributes: + label: Version + description: What version of our software are you running? You can have the full version in `Help` -> `About superslicer`. + placeholder: 2.4.60.2 + validations: + required: false + - type: input + id: os + attributes: + label: Operating system + description: with the version if possible + placeholder: windows 10 / ubuntu 22.04 / macos 15 + validations: + required: false + - type: input + id: printer + attributes: + label: Printer model + description: May be useful to update default profile, or understand why to creates a problem + placeholder: voron 2.4 with afterburner + validations: + required: false diff --git a/.github/ISSUE_TEMPLATE/feature_request.md b/.github/ISSUE_TEMPLATE/feature_request.md index 40d1a461fe6..aed18468720 100644 --- a/.github/ISSUE_TEMPLATE/feature_request.md +++ b/.github/ISSUE_TEMPLATE/feature_request.md @@ -4,16 +4,17 @@ about: Suggest an idea for this project --- -### Do not request features for the Prusa3D fork of Slic3r here without confirming it is applicable to the mainline Slic3r, or your issue will be closed. [Development builds of Slic3r](https://dl.slic3r.org/dev). [Prusa3D Issue Tracker](https://github.com/Prusa3D/Slic3r/issues) - **Is your feature request related to a problem? Please describe.** A clear and concise description of what the problem is. Ex. I'm always frustrated when [...] **Describe the solution you'd like** A clear and concise description of what you want to happen. +**Describe how it would work** +Be as descriptive as your skill level allows you. + **Describe alternatives you've considered** A clear and concise description of any alternative solutions or features you've considered. **Additional context** -Add any other context or screenshots about the feature request here. +Add any other context or paint drawing about the feature request here. diff --git a/.github/workflows/ccpp_mac.yml b/.github/workflows/ccpp_mac.yml index 33e828139cc..a627f698e3e 100644 --- a/.github/workflows/ccpp_mac.yml +++ b/.github/workflows/ccpp_mac.yml @@ -11,19 +11,27 @@ on: jobs: build: - runs-on: macos-11 + runs-on: macos-12 steps: - uses: actions/checkout@v3 - name: build deps & slicer - run: ./BuildMacOS.sh -i + run: ./BuildMacOS.sh + - name: copy zstd + run: cp /usr/local/opt/zstd/lib/libzstd.1.dylib ./build/pack/${{ github.event.repository.name }}/${{ github.event.repository.name }}.app/Contents/MacOS/libzstd.1.dylib + - name: relink zstd + run: install_name_tool -change /usr/local/opt/zstd/lib/libzstd.1.dylib @executable_path/libzstd.1.dylib ./build/pack/${{ github.event.repository.name }}/${{ github.event.repository.name }}.app/Contents/MacOS/${{ github.event.repository.name }} + - name: create the dmg + run: | + hdiutil create -ov -fs HFS+ -volname ${{ github.event.repository.name }} -srcfolder "build/pack/${{ github.event.repository.name }}" temp.dmg + hdiutil convert temp.dmg -format UDZO -o ${{ github.event.repository.name }}.dmg - name: Upload artifact - uses: actions/upload-artifact@v1.0.0 + uses: actions/upload-artifact@v3 with: - name: nightly_macos.tar - path: build/${{ github.event.repository.name }}.tar + name: nightly_macos.app + path: build/pack/${{ github.event.repository.name }}/${{ github.event.repository.name }}.app - name: Upload artifact - uses: actions/upload-artifact@v1.0.0 + uses: actions/upload-artifact@v3 with: name: nightly_macos.dmg - path: build/${{ github.event.repository.name }}.dmg + path: ${{ github.event.repository.name }}.dmg diff --git a/.github/workflows/ccpp_mac_arm.yml b/.github/workflows/ccpp_mac_arm.yml index 710e70a29e1..211f53b42d3 100644 --- a/.github/workflows/ccpp_mac_arm.yml +++ b/.github/workflows/ccpp_mac_arm.yml @@ -18,12 +18,12 @@ jobs: - name: build deps & slicer run: ./BuildMacOS.sh -ia - name: Upload artifact - uses: actions/upload-artifact@v1.0.0 + uses: actions/upload-artifact@v3 with: name: nightly_macos_arm_debug.dmg path: build/${{ github.event.repository.name }}.dmg - name: Upload artifact - uses: actions/upload-artifact@v1.0.0 + uses: actions/upload-artifact@v3 with: name: nightly_arm_macos.tar path: build/${{ github.event.repository.name }}.tar diff --git a/.github/workflows/ccpp_mac_arm_debug.yml b/.github/workflows/ccpp_mac_arm_debug.yml index eabd6ecd364..d6c17e88106 100644 --- a/.github/workflows/ccpp_mac_arm_debug.yml +++ b/.github/workflows/ccpp_mac_arm_debug.yml @@ -11,7 +11,7 @@ jobs: runs-on: macos-11 steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v3 with: ref: 'debug_macos' - name: build deps & slicer @@ -20,12 +20,12 @@ jobs: working-directory: ./build run: ls - name: Upload artifact - uses: actions/upload-artifact@v1.0.0 + uses: actions/upload-artifact@v3 with: name: nightly_macos_arm_debug.dmg path: build/${{ github.event.repository.name }}.dmg - name: Upload artifact - uses: actions/upload-artifact@v1.0.0 + uses: actions/upload-artifact@v3 with: name: nightly_arm_macos.tar path: build/${{ github.event.repository.name }}.tar diff --git a/.github/workflows/ccpp_mac_arm_rc.yml b/.github/workflows/ccpp_mac_arm_rc.yml index 9cc5bd1df7c..9d0be81fb51 100644 --- a/.github/workflows/ccpp_mac_arm_rc.yml +++ b/.github/workflows/ccpp_mac_arm_rc.yml @@ -11,13 +11,13 @@ jobs: runs-on: macos-11 steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v3 with: ref: 'rc' - name: build deps & slicer run: ./BuildMacOS.sh -ia - name: Upload artifact - uses: actions/upload-artifact@v1.0.0 + uses: actions/upload-artifact@v3 with: name: rc_arm_macos.tar path: build/${{ github.event.repository.name }}.tar diff --git a/.github/workflows/ccpp_mac_debug.yml b/.github/workflows/ccpp_mac_debug.yml index ede4c408301..c259b38bc1b 100644 --- a/.github/workflows/ccpp_mac_debug.yml +++ b/.github/workflows/ccpp_mac_debug.yml @@ -8,24 +8,32 @@ on: jobs: build: - runs-on: macos-11 + runs-on: macos-12 steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v3 with: ref: 'debug_macos' - name: build deps & slicer - run: ./BuildMacOS.sh -bi + run: ./BuildMacOS.sh -b + - name: copy zstd + run: cp /usr/local/opt/zstd/lib/libzstd.1.dylib ./build/pack/${{ github.event.repository.name }}/${{ github.event.repository.name }}.app/Contents/MacOS/libzstd.1.dylib + - name: relink zstd + run: install_name_tool -change /usr/local/opt/zstd/lib/libzstd.1.dylib @executable_path/libzstd.1.dylib ./build/pack/${{ github.event.repository.name }}/${{ github.event.repository.name }}.app/Contents/MacOS/${{ github.event.repository.name }} + - name: create the dmg + run: | + hdiutil create -ov -fs HFS+ -volname ${{ github.event.repository.name }} -srcfolder build/pack/${{ github.event.repository.name }} temp.dmg + hdiutil convert temp.dmg -format UDZO -o ${{ github.event.repository.name }}.dmg - name: tar the pack working-directory: ./build run: ls - name: Upload artifact - uses: actions/upload-artifact@v1.0.0 + uses: actions/upload-artifact@v3 with: name: nightly_macos_debug.dmg path: build/${{ github.event.repository.name }}.dmg - name: Upload artifact - uses: actions/upload-artifact@v1.0.0 + uses: actions/upload-artifact@v3 with: name: nightly_macos.tar - path: build/${{ github.event.repository.name }}.tar + path: ${{ github.event.repository.name }}.tar diff --git a/.github/workflows/ccpp_mac_rc.yml b/.github/workflows/ccpp_mac_rc.yml index d8c77fb8582..46c2717df2f 100644 --- a/.github/workflows/ccpp_mac_rc.yml +++ b/.github/workflows/ccpp_mac_rc.yml @@ -4,6 +4,7 @@ on: push: branches: - rc + - debug_macos jobs: build: @@ -11,18 +12,61 @@ jobs: runs-on: macos-11 steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v3 with: ref: 'rc' - name: build deps & slicer - run: ./BuildMacOS.sh -i + run: ./BuildMacOS.sh + - name: copy zstd + run: cp /usr/local/opt/zstd/lib/libzstd.1.dylib ./build/pack/SuperSlicer/SuperSlicer.app/Contents/MacOS/libzstd.1.dylib + - name: relink zstd + run: install_name_tool -change /usr/local/opt/zstd/lib/libzstd.1.dylib @executable_path/libzstd.1.dylib ./build/pack/SuperSlicer/SuperSlicer.app/Contents/MacOS/SuperSlicer + - name: Codesign executable conf + env: + MACOS_CERTIFICATE: ${{ secrets.MACOS_P12 }} + MACOS_CERTIFICATE_PWD: ${{ secrets.MACOS_PASSWD }} + MACOS_APP: ${{ secrets.MAC_APP_PWD }} + run: | + echo $MACOS_CERTIFICATE | base64 --decode > certificate.p12 + security create-keychain -p temp_password build.keychain + security default-keychain -s build.keychain + security unlock-keychain -p temp_password build.keychain + security import certificate.p12 -k build.keychain -P $MACOS_CERTIFICATE_PWD -T /usr/bin/codesign + - name: verify certificate presence + run: security find-identity -v + - name: register codesign + run: | + security set-key-partition-list -S apple-tool:,apple:,codesign: -s -k temp_password build.keychain + - name: run codesign on exe + run: | + /usr/bin/codesign --options=runtime --force -s "Developer ID Application: Remi Durand (LDTLFRHP3G)" ./build/pack/SuperSlicer/SuperSlicer.app/Contents/MacOS/SuperSlicer -v + codesign -vvv --deep --strict ./build/pack/SuperSlicer/SuperSlicer.app/Contents/MacOS/SuperSlicer + codesign -dvv ./build/pack/SuperSlicer/SuperSlicer.app/Contents/MacOS/SuperSlicer + - name: create the dmg + run: | + hdiutil create -ov -fs HFS+ -volname SuperSlicer -srcfolder "build/pack/SuperSlicer" temp.dmg + hdiutil convert temp.dmg -format UDZO -o SuperSlicer.dmg + - name: run codesign on the dmg + run: | + /usr/bin/codesign -s "Developer ID Application: Remi Durand (LDTLFRHP3G)" SuperSlicer.dmg -v + codesign -vvv --deep --strict SuperSlicer.dmg + codesign -dvv SuperSlicer.dmg + - name: notarize the dmg + run: | + xcrun altool --notarize-app -f SuperSlicer.dmg --primary-bundle-id org.slic3r.superslicer -u mail@remidurand.fr -p $MACOS_APP + spctl -a -t open --context context:primary-signature -v SuperSlicer.dmg + - name: run codesign on app + run: | + /usr/bin/codesign --force -s "Developer ID Application: Remi Durand (LDTLFRHP3G)" ./build/pack/SuperSlicer/SuperSlicer.app -v + codesign -vvv --deep --strict ./build/pack/SuperSlicer/SuperSlicer.app + codesign -dvv ./build/pack/SuperSlicer/SuperSlicer.app - name: Upload artifact - uses: actions/upload-artifact@v1.0.0 + uses: actions/upload-artifact@v3 with: - name: rc_macos.tar - path: build/${{ github.event.repository.name }}.tar + name: rc_macos.app + path: build/pack/SuperSlicer/SuperSlicer.app - name: Upload artifact - uses: actions/upload-artifact@v1.0.0 + uses: actions/upload-artifact@v3 with: name: rc_macos.dmg - path: build/${{ github.event.repository.name }}.dmg + path: build/SuperSlicer.dmg diff --git a/.github/workflows/ccpp_ubuntu.yml b/.github/workflows/ccpp_ubuntu.yml index 363cdba227c..6adaac49bbb 100644 --- a/.github/workflows/ccpp_ubuntu.yml +++ b/.github/workflows/ccpp_ubuntu.yml @@ -11,40 +11,43 @@ on: jobs: build: - runs-on: ubuntu-20.04 + runs-on: ubuntu-22.04 steps: - uses: actions/checkout@v3 - - name: Setup cmake - uses: jwlawson/actions-setup-cmake@v1.13 - with: - cmake-version: '3.16.x' + + - name: update apt cache & install packages + run: sudo apt update && sudo apt -y install git cmake libgtk-3-dev libglew-dev libudev-dev libdbus-1-dev gettext + - name: update submodule profiles working-directory: ./resources/profiles run: git submodule update --init - - name: change date in version - run: sed -i "s/+UNKNOWN/_$(date '+%F')/" version.inc + - name: update clock run: sudo hwclock -s - - name: update apt - run: sudo apt update - - name: install gtk2 glew - run: sudo apt install libgtk2.0-dev libglew-dev libudev-dev libdbus-1-dev gettext + + - name: change date in version + run: sed -i "s/+UNKNOWN/_$(date '+%F')/" version.inc + - name: build deps & slicer - run: ./BuildLinux.sh -dgs + run: ./BuildLinux.sh -ds + - name: make .pot working-directory: ./build run: make gettext_make_pot + - name: build tar & appimage working-directory: ./build run: src/BuildLinuxImage.sh -i + - name: Upload artifact - uses: actions/upload-artifact@v1.0.0 + uses: actions/upload-artifact@v3 with: - name: nightly_linux_gtk2.tar + name: nightly_linux.tar path: build/${{ github.event.repository.name }}.tar + - name: Upload appimage - uses: actions/upload-artifact@v1.0.0 + uses: actions/upload-artifact@v3 with: - name: ${{ github.event.repository.name }}-gtk2.AppImage + name: ${{ github.event.repository.name }}.AppImage path: build/${{ github.event.repository.name }}_ubu64.AppImage diff --git a/.github/workflows/ccpp_ubuntu_debug.yml b/.github/workflows/ccpp_ubuntu_debug.yml index 824b34b4af4..260d7bdbfb1 100644 --- a/.github/workflows/ccpp_ubuntu_debug.yml +++ b/.github/workflows/ccpp_ubuntu_debug.yml @@ -8,42 +8,46 @@ on: jobs: build: - runs-on: ubuntu-20.04 + runs-on: ubuntu-22.04 steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v3 with: ref: 'debug_ubuntu' - - name: Setup cmake - uses: jwlawson/actions-setup-cmake@v1.13 - with: - cmake-version: '3.16.x' + + - name: update apt cache & install packages + run: sudo apt update && sudo apt -y install git cmake libgtk-3-dev libglew-dev libudev-dev libdbus-1-dev gettext libssl-dev libcurl4-openssl-dev + - name: update submodule profiles working-directory: ./resources/profiles run: git submodule update --init - - name: change date in version - run: sed -i "s/+UNKNOWN/_$(date '+%F')/" version.inc + - name: update clock run: sudo hwclock -s - - name: update apt - run: sudo apt update - - name: install gtk2 glew - run: sudo apt install libgtk2.0-dev libglew-dev libudev-dev libdbus-1-dev libssl-dev libcurl4-openssl-dev gettext + + - name: change date in version + run: sed -i "s/+UNKNOWN/_$(date '+%F')/" version.inc + - name: build deps & slicer - run: ./BuildLinux.sh -bdgs + run: ./BuildLinux.sh -bds + - name: make .pot working-directory: ./build run: make gettext_make_pot + - name: build tar & appimage working-directory: ./build run: src/BuildLinuxImage.sh -i + - name: Upload artifact - uses: actions/upload-artifact@v1.0.0 + uses: actions/upload-artifact@v3 with: - name: nightly_linux_gtk2.tar + name: nightly_linux.tar path: build/${{ github.event.repository.name }}.tar + - name: Upload appimage - uses: actions/upload-artifact@v1.0.0 + uses: actions/upload-artifact@v3 with: - name: ${{ github.event.repository.name }}-gtk2.AppImage + name: ${{ github.event.repository.name }}.AppImage path: build/${{ github.event.repository.name }}_ubu64.AppImage + diff --git a/.github/workflows/ccpp_ubuntu_gtk3.yml b/.github/workflows/ccpp_ubuntu_gtk3.yml deleted file mode 100644 index 6bcf54eb255..00000000000 --- a/.github/workflows/ccpp_ubuntu_gtk3.yml +++ /dev/null @@ -1,50 +0,0 @@ -name: C/C++ Nightly ubuntu-GTK3 - -on: - push: - branches: - - Nigthly - - nightly_dev - - nightly_master - - debug_ubuntu - -jobs: - build: - - runs-on: ubuntu-20.04 - - steps: - - uses: actions/checkout@v3 - - name: Setup cmake - uses: jwlawson/actions-setup-cmake@v1.13 - with: - cmake-version: '3.16.x' - - name: update submodule profiles - working-directory: ./resources/profiles - run: git submodule update --init - - name: change date in version - run: sed -i "s/+UNKNOWN/_$(date '+%F')/" version.inc - - name: update clock - run: sudo hwclock -s - - name: update apt - run: sudo apt update - - name: install gtk3 glew - run: sudo apt install libgtk-3-dev libglew-dev libudev-dev libdbus-1-dev gettext - - name: build deps & slicer - run: ./BuildLinux.sh -ds - - name: make .pot - working-directory: ./build - run: make gettext_make_pot - - name: build tar & appimage - working-directory: ./build - run: src/BuildLinuxImage.sh -i - - name: Upload artifact - uses: actions/upload-artifact@v1.0.0 - with: - name: nightly_linux_gtk3.tar - path: build/${{ github.event.repository.name }}.tar - - name: Upload appimage - uses: actions/upload-artifact@v1.0.0 - with: - name: ${{ github.event.repository.name }}-gtk3.AppImage - path: build/${{ github.event.repository.name }}_ubu64.AppImage diff --git a/.github/workflows/ccpp_ubuntu_gtk3_debug.yml b/.github/workflows/ccpp_ubuntu_gtk3_debug.yml deleted file mode 100644 index c8c4d69bd55..00000000000 --- a/.github/workflows/ccpp_ubuntu_gtk3_debug.yml +++ /dev/null @@ -1,50 +0,0 @@ -name: C/C++ debug ubuntu-GTK3 - -on: - push: - branches: - - debug_ubuntu - -jobs: - build: - - runs-on: ubuntu-20.04 - - steps: - - uses: actions/checkout@v2 - with: - ref: 'debug_ubuntu' - - name: Setup cmake - uses: jwlawson/actions-setup-cmake@v1.13 - with: - cmake-version: '3.16.x' - - name: update submodule profiles - working-directory: ./resources/profiles - run: git submodule update --init - - name: change date in version - run: sed -i "s/+UNKNOWN/_$(date '+%F')/" version.inc - - name: update clock - run: sudo hwclock -s - - name: update apt - run: sudo apt update - - name: install gtk3 glew - run: sudo apt install libgtk-3-dev libglew-dev libudev-dev libdbus-1-dev libssl-dev libcurl4-openssl-dev gettext - - name: build deps & slicer - run: ./BuildLinux.sh -bds - - name: make .pot - working-directory: ./build - run: make gettext_make_pot - - name: build tar & appimage - working-directory: ./build - run: src/BuildLinuxImage.sh -i - - name: Upload artifact - uses: actions/upload-artifact@v1.0.0 - with: - name: nightly_linux_gtk3.tar - path: build/${{ github.event.repository.name }}.tar - - name: Upload appimage - uses: actions/upload-artifact@v1.0.0 - with: - name: ${{ github.event.repository.name }}-gtk3.AppImage - path: build/${{ github.event.repository.name }}_ubu64.AppImage - diff --git a/.github/workflows/ccpp_ubuntu_gtk3_rc.yml b/.github/workflows/ccpp_ubuntu_gtk3_rc.yml deleted file mode 100644 index 70c07c82277..00000000000 --- a/.github/workflows/ccpp_ubuntu_gtk3_rc.yml +++ /dev/null @@ -1,51 +0,0 @@ -name: C/C++ Release candidate ubuntu-GTK3 - -on: - push: - branches: - - rc - -jobs: - build: - - runs-on: ubuntu-20.04 - - env: - EXEC_NAME: "${{ github.event.repository.name }}" - steps: - - uses: actions/checkout@v2 - with: - ref: 'rc' - - name: Setup cmake - uses: jwlawson/actions-setup-cmake@v1.13 - with: - cmake-version: '3.16.x' - - name: update submodule profiles - working-directory: ./resources/profiles - run: git submodule update --init - - name: change date in version - run: sed -i "s/+UNKNOWN/_$(date '+%F')/" version.inc - - name: update clock - run: sudo hwclock -s - - name: update apt - run: sudo apt update - - name: install gtk3 glew - run: sudo apt install libgtk-3-dev libglew-dev libudev-dev libdbus-1-dev gettext - - name: build deps & slicer - run: ./BuildLinux.sh -ds - - name: make .pot - working-directory: ./build - run: make gettext_make_pot - - name: build tar & appimage - working-directory: ./build - run: src/BuildLinuxImage.sh -i - - name: Upload artifact - uses: actions/upload-artifact@v1.0.0 - with: - name: rc_linux_gtk3.tar - path: build/${{ github.event.repository.name }}.tar - - name: Upload appimage - uses: actions/upload-artifact@v1.0.0 - with: - name: rc-${{ github.event.repository.name }}-gtk3.AppImage - path: build/${{ github.event.repository.name }}_ubu64.AppImage diff --git a/.github/workflows/ccpp_ubuntu_rc.yml b/.github/workflows/ccpp_ubuntu_rc.yml index a8412e7a131..d583a8f1963 100644 --- a/.github/workflows/ccpp_ubuntu_rc.yml +++ b/.github/workflows/ccpp_ubuntu_rc.yml @@ -8,42 +8,48 @@ on: jobs: build: - runs-on: ubuntu-20.04 + runs-on: ubuntu-22.04 + + env: + EXEC_NAME: "${{ github.event.repository.name }}" steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v3 with: ref: 'rc' - - name: Setup cmake - uses: jwlawson/actions-setup-cmake@v1.13 - with: - cmake-version: '3.16.x' + + - name: update apt cache & install packages + run: sudo apt update && sudo apt -y install git cmake libgtk-3-dev libglew-dev libudev-dev libdbus-1-dev gettext libssl-dev libcurl4-openssl-dev + - name: update submodule profiles working-directory: ./resources/profiles run: git submodule update --init - - name: change date in version - run: sed -i "s/+UNKNOWN//" version.inc + - name: update clock run: sudo hwclock -s - - name: update apt - run: sudo apt update - - name: install gtk2 glew - run: sudo apt install libgtk2.0-dev libglew-dev libudev-dev libdbus-1-dev gettext + + - name: change date in version + run: sed -i "s/+UNKNOWN/_$(date '+%F')/" version.inc + - name: build deps & slicer - run: ./BuildLinux.sh -dgs + run: ./BuildLinux.sh -ds + - name: make .pot working-directory: ./build run: make gettext_make_pot + - name: build tar & appimage working-directory: ./build run: src/BuildLinuxImage.sh -i + - name: Upload artifact - uses: actions/upload-artifact@v1.0.0 + uses: actions/upload-artifact@v3 with: - name: rc_linux_gtk2.tar + name: rc_linux.tar path: build/${{ github.event.repository.name }}.tar + - name: Upload appimage - uses: actions/upload-artifact@v1.0.0 + uses: actions/upload-artifact@v3 with: - name: rc-${{ github.event.repository.name }}-gtk2.AppImage + name: rc-${{ github.event.repository.name }}.AppImage path: build/${{ github.event.repository.name }}_ubu64.AppImage diff --git a/.github/workflows/ccpp_win.yml b/.github/workflows/ccpp_win.yml index 1bd841de42c..55435789f40 100644 --- a/.github/workflows/ccpp_win.yml +++ b/.github/workflows/ccpp_win.yml @@ -23,7 +23,7 @@ jobs: cmake .. -G "Visual Studio 16 2019" -A x64 msbuild /m ALL_BUILD.vcxproj - name: Upload artifact - uses: actions/upload-artifact@v1.0.0 + uses: actions/upload-artifact@v3 with: name: deps_win path: ./deps/build/destdir/ @@ -33,7 +33,7 @@ jobs: needs: build_dep steps: - - uses: actions/checkout@v1 + - uses: actions/checkout@v3 - uses: ilammy/msvc-dev-cmd@v1 - name: update submodule profiles working-directory: ./resources/profiles @@ -44,7 +44,7 @@ jobs: - name: mkdir in deps directory run: mkdir deps/destdir - name: download deps - uses: actions/download-artifact@v1 + uses: actions/download-artifact@v3 with: name: deps_win path: deps/destdir @@ -106,7 +106,7 @@ jobs: # shell: cmd # run: '"C:/Program Files/7-Zip/7z.exe" a -tzip nightly.zip *' - name: Upload artifact - uses: actions/upload-artifact@v1.0.0 + uses: actions/upload-artifact@v3 with: name: nightly_win64 path: build/package/ diff --git a/.github/workflows/ccpp_win_debug.yml b/.github/workflows/ccpp_win_debug.yml index 73c10012627..c203bed0430 100644 --- a/.github/workflows/ccpp_win_debug.yml +++ b/.github/workflows/ccpp_win_debug.yml @@ -10,7 +10,7 @@ jobs: runs-on: windows-2019 steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v3 with: ref: 'debug_win' - uses: ilammy/msvc-dev-cmd@v1 @@ -22,7 +22,7 @@ jobs: cmake .. -G "Visual Studio 16 2019" -A x64 msbuild /m ALL_BUILD.vcxproj - name: Upload artifact - uses: actions/upload-artifact@v1.0.0 + uses: actions/upload-artifact@v3 with: name: deps_win path: ./deps/build/destdir/ @@ -32,7 +32,7 @@ jobs: needs: build_dep steps: - - uses: actions/checkout@v1 + - uses: actions/checkout@v3 - uses: ilammy/msvc-dev-cmd@v1 - name: update submodule profiles working-directory: ./resources/profiles @@ -43,7 +43,7 @@ jobs: - name: mkdir in deps directory run: mkdir deps/destdir - name: download deps - uses: actions/download-artifact@v1 + uses: actions/download-artifact@v3 with: name: deps_win path: deps/destdir @@ -103,7 +103,7 @@ jobs: # shell: cmd # run: '"C:/Program Files/7-Zip/7z.exe" a -tzip nightly.zip *' - name: Upload artifact - uses: actions/upload-artifact@v1.0.0 + uses: actions/upload-artifact@v3 with: name: nightly_win64_debug path: build/package/ diff --git a/.github/workflows/ccpp_win_rc.yml b/.github/workflows/ccpp_win_rc.yml index 56a3968754f..12fe1b8c046 100644 --- a/.github/workflows/ccpp_win_rc.yml +++ b/.github/workflows/ccpp_win_rc.yml @@ -10,7 +10,7 @@ jobs: runs-on: windows-2019 steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v3 with: ref: 'rc' - uses: ilammy/msvc-dev-cmd@v1 @@ -22,7 +22,7 @@ jobs: cmake .. -G "Visual Studio 16 2019" -A x64 msbuild /m ALL_BUILD.vcxproj - name: Upload artifact - uses: actions/upload-artifact@v1.0.0 + uses: actions/upload-artifact@v3 with: name: deps_win path: ./deps/build/destdir/ @@ -32,7 +32,7 @@ jobs: needs: build_dep steps: - - uses: actions/checkout@v1 + - uses: actions/checkout@v3 - uses: ilammy/msvc-dev-cmd@v1 - name: update submodule profiles working-directory: ./resources/profiles @@ -43,7 +43,7 @@ jobs: - name: mkdir in deps directory run: mkdir deps/destdir - name: download deps - uses: actions/download-artifact@v1 + uses: actions/download-artifact@v3 with: name: deps_win path: deps/destdir @@ -107,7 +107,7 @@ jobs: # shell: cmd # run: '"C:/Program Files/7-Zip/7z.exe" a -tzip nightly.zip *' - name: Upload artifact - uses: actions/upload-artifact@v1.0.0 + uses: actions/upload-artifact@v3 with: name: rc_win64 path: build/package/ diff --git a/.gitignore b/.gitignore index efb012a077b..d1ee7ca9522 100644 --- a/.gitignore +++ b/.gitignore @@ -18,5 +18,7 @@ local-lib build* deps/build* deps/deps-* -**/.DS_Store + +# MacOS Ignores +.DS_Store diff --git a/README.md b/README.md index f980d0a3fff..9387aaddabe 100644 --- a/README.md +++ b/README.md @@ -1,93 +1,111 @@ -![](var/Slic3r_128px.png) Slic3r [![Build Status](https://travis-ci.org/slic3r/Slic3r.svg?branch=master)](https://travis-ci.org/slic3r/Slic3r) [![Build status](https://ci.appveyor.com/api/projects/status/8iqmeat6cj158vo6?svg=true)](https://ci.appveyor.com/project/lordofhyphens/slic3r) [![Build Status](http://osx-build.slic3r.org:8080/buildStatus/icon?job=Slic3r)](http://osx-build.slic3r.org:8080/job/Slic3r)![Coverity Status](https://scan.coverity.com/projects/17257/badge.svg) -====== -We have automated builds for Windows (64-bit) and OSX (>= 10.7). [Get a fresh build now](http://dl.slic3r.org/dev/) and stay up-to-date with the development! +[![you can get this shield at shields.io](https://img.shields.io/discord/771316156203270154?color=7289da&logo=discord&logoColor=white)](https://github.com/supermerill/SuperSlicer/issues/611#issuecomment-907833287) [![you can get this shield at shields.io](https://img.shields.io/reddit/subreddit-subscribers/slic3r)](https://reddit.com/r/slic3r) [![you can get this shield at shields.io](https://img.shields.io/github/discussions/supermerill/superslicer)](https://github.com/supermerill/SuperSlicer/discussions) -The MacOS X build server is kindly sponsored by: +[![Packaging status](https://repology.org/badge/tiny-repos/superslicer.svg)](https://repology.org/project/superslicer/versions) [![you can get this shield at shields.io](https://img.shields.io/chocolatey/v/superslicer)](https://community.chocolatey.org/packages/superslicer) [![you can get this shield at shields.io](https://img.shields.io/homebrew/cask/v/superslicer)](https://formulae.brew.sh/cask/superslicer) [![you can get this shield at shields.io](https://img.shields.io/archlinux/v/community/x86_64/superslicer)](https://archlinux.org/packages/extra/x86_64/superslicer/) +# SuperSlicer -### So, what's this Slic3r? +**A PrusaSlicer fork (which is a slic3r fork)** (previously Slic3r++) -Slic3r is mainly a **toolpath generator** for 3D printers: it reads 3D models (STL, OBJ, AMF, 3MF) and it converts them into **G-code** instructions for 3D printers. But it does much more than that, see the [features list](#features) below. +Prebuilt Windows, Linux and macOS 64-bit releases are available through the [git releases page](https://github.com/supermerill/SuperSlicer/releases). The Linux & macOS builds aren't tested (by me), just compiled, so please report any bugs that may occur during use. +For **installers**, check the badges above. Windows users can use chocolatey or scoop. +Nightly builds are available through the [git actions page](https://github.com/supermerill/SuperSlicer/actions). Click on the build for your platform and then on the archive name (`nightly_win64` or `SuperSlicer-gtk2.AppImage` or `nightly_macos.dmg`) in the "Artifacts" section in the top right corner. -Slic3r was born in **2011** within the RepRap community and thanks to its high configurability became the swiss-army knife for 3D printing. It served as a platform for implementing several **new (experimental) ideas that later became technology standards**, such as multiple extruders, brim, variable-height layers, per-object settings, modifiers, post-processing scripts, G-code macros and more. Despite being based on volunteer efforts, Slic3r is still pushing the boundaries of 3D printing. +SuperSlicer takes 3D models (STL, OBJ, AMF) and converts them into G-code +instructions for FFF printers or PNG layers for mSLA 3D printers. It's compatible with any modern printer based on the RepRap toolchain which is running a firmware based on Marlin, Prusa, Klipper, etc. -Slic3r has been rebased from the active PrusaSlicer and SuperSlicer forks with an eye towards continuing pushing the boundaries of 3D printing and being an slicer for all printers. +SuperSlicer is based on [PrusaSlicer](https://github.com/prusa3d/PrusaSlicer) by Prusa Research. +PrusaSlicer is based on [Slic3r](https://github.com/Slic3r/Slic3r) by Alessandro Ranellucci and the RepRap community. -Slic3r is: +See the [wiki](https://github.com/supermerill/SuperSlicer/wiki) and +the [documentation directory](doc/) for information about compilation. -* **Open:** it is totally **open source** and it's **independent from any commercial company** or printer manufacturer. We want to keep 3D printing open and free. -* **Compatible:** it supports all the known G-code dialects (Marlin, Repetier, Mach3, LinuxCNC, Machinekit, Smoothie, Makerware, Sailfish). -* **Advanced:** many configuration options allow for fine-tuning and full control. While novice users often need just few options, Slic3r is mostly used by advanced users. -* **Community-driven:** new features or issues are discussed in the [GitHub repository](https://github.com/slic3r/Slic3r/issues). Join our collaborative effort and help improve it! -* **Robust:** the codebase includes more than 1,000 unit and regression tests, collected in 6 years of development. -* **Modular:** the core of Slic3r is libslic3r, a C++ library that provides a granular API and reusable components. -* **Embeddable:** a complete and powerful command line interface allows Slic3r to be used from the shell or integrated with server-side applications. -* **Powerful:** see the list below! +### What are SuperSlicer main features? main new features/differences? -See the [project homepage](http://slic3r.org/) at slic3r.org for more information. +* Custom-made generated calibration tests. +* new settings to fine-tune the top surface quality, like 'only one perimeter on top'. +* A "denser infill" option for supporting the (solid) top layers. +* Better **Thin walls** (anchored inside the print, no more random bits at the ends, embedded in perimeter loops). +* Options to change holes dimensions and/or geometry, to print them at the right size. +* Better overhangs (add perimeters if needed, slice them in opposite direction each layer). +* Brim rework: many more options (inside, outside only, 'ears', per object) +* Some new seam options, to help hide them. +* Built-in calibration prints +* Built-in object generation script +* Can join perimeters into a big one to avoid travel moves. +* Many other little options and corrections (like the filled concentric pattern). +* It has also all the current slic3rPE/PrusaSlicer features. -### Features +### Complete changelog [here](https://github.com/supermerill/SuperSlicer/wiki) -(Most of these are also available in the command line interface.) +See the wiki for examples. -* **G-code generation** for FFF/FDM printers; -* **conversion** between STL, OBJ, AMF, 3MF and POV formats; -* **auto-repair** of non-manifold meshes (and ability to re-export them); -* **SVG export** of slices; -* built-in **USB/serial** host controller, supporting **multiple simultaneous printers** each one with a spool queue; -* **OctoPrint integration** (send to printer); -* built-in **projector and host for DLP printers**; -* tool for **cutting meshes** in multiple solid parts with visual preview (also in batch using a grid); -* tool for **extruding 2.5D TIN meshes**. +### What are SuperSlicer / PrusaSlicer / Slic3r's main features? -### What language is it written in? +Key features are: -The core parts of Slic3r are written in C++11, with multithreading. The graphical interface is in the process of being ported to C++14. +* **Multi-platform** (Linux/Mac/Win) and packaged as standalone-app with no dependencies required +* Complete **command-line interface** to use it without GUI +* Multi-material **(multiple extruders)** object printing +* Multiple G-code flavors supported (RepRap, Makerbot, Mach3, Machinekit, etc.) +* Ability to plate **multiple objects having distinct print settings** +* **Multithread** processing +* **STL auto-repair** (tolerance for broken models) +* Wide automated unit testing -### How to install? +Other major features are: -You can download a precompiled package from [slic3r.org](http://slic3r.org/) (releases) or from [dl.slicr3r.org](http://dl.slic3r.org/dev/) (automated builds). +* Combine infill every 'n' perimeters layer & varying density to speed up printing +* **3D preview** (including multi-material files) +* **Multiple layer heights** in a single print +* **Spiral vase** mode for bumpless vases +* Fine adjustment of speed, acceleration, and extrusion width +* Several infill patterns including honeycomb, spirals, Hilbert curves, gyroid +* Support material, raft, brim, skirt +* **Standby temperature** and automatic wiping for multi-extruder printing +* [Customizable **G-code macros**](https://github.com/prusa3d/PrusaSlicer/wiki/Slic3r-Prusa-Edition-Macro-Language) and output filename with variable placeholders +* Support for **post-processing scripts** +* **Cooling logic** controlling fan speed and dynamic print speed -If you want to compile the source yourself follow the instructions on one of these wiki pages: -* [Linux](https://github.com/slic3r/Slic3r/wiki/Running-Slic3r-from-git-on-GNU-Linux) -* [Windows](https://github.com/slic3r/Slic3r/wiki/Running-Slic3r-from-git-on-Windows) -* [Mac OSX](https://github.com/slic3r/Slic3r/wiki/Running-Slic3r-from-git-on-OS-X) +[Command-Line Interface](https://github.com/prusa3d/PrusaSlicer/wiki/Command-Line-Interface) wiki page. -### Can I help? +## Development -Sure, but please read the -[CONTRIBUTING](https://github.com/slic3r/Slic3r/blob/master/.github/CONTRIBUTING.md) -document first! +### What language is it written in? -### Directory structure +Almost everything is written in C++. -* `package/`: the scripts used for packaging the executables -* `src/`: the C++ source of the `slic3r` executable and the CMake definition file for compiling it -* `src/slic3r/GUI`: The C++ GUI. -* `tests`: Test suite for Slic3r. Implemented with [Catch2](https://github.com/catchorg/Catch2) -* `t/`: the really old test suite (deprecated) -* `utils/`: various useful scripts -* `src/libslic3r/`: C++ sources for libslic3r -* `xs/xsp/`: bindings for calling libslic3r from Perl (XS) (deprecated) +The slicing core is the `libslic3r` library, which can be built and used in a standalone way. +The command-line interface is a thin wrapper over `libslic3r`. +You can download a precompiled package from the release page - it will run without the need for any dependency. -## Licensing and attribution +### How to compile -Slic3r is licensed under the _GNU Affero General Public License, version 3_. +If you want to compile the source yourself, follow the instructions on one of +these documentation pages: +* [Linux](doc/How%20to%20build%20-%20Linux%20et%20al.md) +* [macOS](doc/How%20to%20build%20-%20Mac%20OS.md) +* [Windows](doc/How%20to%20build%20-%20Windows.md) -PrusaSlicer is licensed under the _GNU Affero General Public License, version 3_. -PrusaSlicer is owned by Prusa Research. -PrusaSlicer is originally based on Slic3r by Alessandro Ranellucci. +You can also look at the workflow YAML-files for [git actions](https://github.com/supermerill/Slic3r/tree/master/.github/workflows), as they describe how to build from source from a "virgin" dev computer. -The _GNU Affero General Public License, version 3_ ensures that if you **use** any part of this software in any way (even behind a web server), your software must be released under the same license. +### Can I help? -### Acknowledgements +Sure! You can do the following to find things that are available to help with: +* Add an issue to the GitHub tracker **if it isn't already present**. -The main author of Slic3r is Alessandro Ranellucci (@alranel, *Sound* in IRC, [@alranel](http://twitter.com/alranel) on Twitter), who started the project in 2011. +Before sending patches and pull requests contact me (preferably through opening a GitHub issue or commenting on an existing, related, issue) to discuss your proposed +changes. This way we can ensure that nobody wastes their time and no conflicts arise in development. -Joseph Lenox (@lordofhyphens, *LoH* in IRC, [@LenoxPlay](http://twitter.com/LenoxPlay) on Twitter) is the current co-maintainer. +## License and attribution -Contributions by Henrik Brix Andersen, Vojtech Bubnik, Nicolas Dandrimont, Mark Hindess, Petr Ledvina, Y. Sapir, Mike Sheldrake, Kliment Yanev and numerous others. Original manual by Gary Hodgson. Slic3r logo designed by Corey Daniels, Silk Icon Set designed by Mark James, stl and gcode file icons designed by Akira Yasuda. +SuperSlicer is licensed under the _GNU Affero General Public License, version 3_. +SuperSlicer is based on PrusaSlicer by PrusaResearch. -### How can I invoke Slic3r using the command line? +PrusaSlicer is licensed under the _GNU Affero General Public License, version 3_. +PrusaSlicer is owned by Prusa Research. +PrusaSlicer is originally based on Slic3r by Alessandro Ranellucci. -The command line is documented in the relevant [manual page](https://manual.slic3r.org/advanced/command-line). +Slic3r is licensed under the _GNU Affero General Public License, version 3_. +Slic3r was created by Alessandro Ranellucci with the help of many other contributors. + +The _GNU Affero General Public License, version 3_ ensures that if you **use** any part of this software in any way (even behind a web server), your software must be released under the same license. diff --git a/SECURITY.md b/SECURITY.md new file mode 100644 index 00000000000..48fbcdc0ac0 --- /dev/null +++ b/SECURITY.md @@ -0,0 +1,16 @@ +# Security Policy + +## Supported Versions + +| Version | Supported | +| -------- | ------------------ | +| 2.3.57 | :white_check_mark: | +| 2.3.56 | :white_check_mark: | +| < 2.3.56 | :x: | + +last update 2021/10/7 + +## Reporting a Vulnerability + +If the vulnerability isn't dangerous, open an issue. +If it's dangerous, you can contact me on discord (link should be available [here](https://github.com/supermerill/SuperSlicer/issues/611), at the end) diff --git a/create_release.py b/create_release.py index 9efde9d94bf..77d6120cccf 100644 --- a/create_release.py +++ b/create_release.py @@ -14,8 +14,8 @@ import tarfile import subprocess -repo = "slic3r/slic3r" -program_name = "Slic3r" +repo = "supermerill/SuperSlicer" +program_name = "SuperSlicer" path_7zip = r"C:\Program Files\7-Zip\7z.exe" github_auth_token = "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" @@ -80,7 +80,7 @@ def get_version(): found_linux_appimage_gtk2 = True; print("ask for: "+entry["archive_download_url"]); resp = requests.get(entry["archive_download_url"], headers={'Authorization': 'token ' + github_auth_token,}, allow_redirects=True); - print("appimage: " +str(resp)); + print("gtk2 appimage: " +str(resp)); z = zipfile.ZipFile(io.BytesIO(resp.content)); z.extractall(release_path); os.rename(release_path+"/"+program_name+"_ubu64.AppImage", release_path+"/"+program_name+"-ubuntu_18.04-gtk2-" + version + ".AppImage"); @@ -88,7 +88,7 @@ def get_version(): found_linux_appimage_gtk3 = True; print("ask for: "+entry["archive_download_url"]); resp = requests.get(entry["archive_download_url"], headers={'Authorization': 'token ' + github_auth_token,}, allow_redirects=True); - print("appimage: " +str(resp)); + print("gtk3 appimage: " +str(resp)); z = zipfile.ZipFile(io.BytesIO(resp.content)); z.extractall(release_path); os.rename(release_path+"/"+program_name+"_ubu64.AppImage", release_path+"/"+program_name+"-ubuntu_18.04-" + version + ".AppImage"); @@ -96,7 +96,7 @@ def get_version(): found_linux = True; print("ask for: "+entry["archive_download_url"]); resp = requests.get(entry["archive_download_url"], headers={'Authorization': 'token ' + github_auth_token,}, allow_redirects=True); - print("appimage: " +str(resp)); + print("gtk3 archive: " +str(resp)); z = zipfile.ZipFile(io.BytesIO(resp.content)); z.extractall(release_path); base_path = release_path+"/"+program_name+"_" + version + "_linux64_" + date_str; diff --git a/doc/How to build - Linux et al.md b/doc/How to build - Linux et al.md index 69d1a446fdc..d967edef30a 100644 --- a/doc/How to build - Linux et al.md +++ b/doc/How to build - Linux et al.md @@ -74,7 +74,7 @@ Now when the dependencies are compiled, all that is needed is to tell CMake that And that's it. It is now possible to run the freshly built Slic3r binary: cd src - ./prusa-slicer + ./superslicer diff --git a/doc/How to build - Mac OS.md b/doc/How to build - Mac OS.md index 70ca862ad40..f4c11d819f2 100644 --- a/doc/How to build - Mac OS.md +++ b/doc/How to build - Mac OS.md @@ -15,7 +15,7 @@ XCode is available through Apple's App Store, the other three tools are availabl You have to gitclone the repository ``` -git clone https://github.com/slic3r/Slic3r.git +git clone https://github.com/supermerill/SuperSlicer.git ``` and then you have to clone the profiles submodules @@ -24,6 +24,12 @@ and then you have to clone the profiles submodules cd resources/profiles git submodule update ``` + +## How to build, the easy way + +After cloning, execute `./BuildMacOS.sh -i` +The executable & dmg should be somewhere in the build directory. + ### How to build Just use the `BuildMacOS.sh` script (use the `-h` option to get the options available, and how to use them) @@ -114,8 +120,8 @@ Works on a fresh installation of MacOS Catalina 10.15.6 brew update brew install cmake git gettext brew upgrade -git clone https://github.com/slic3r/Slic3r.git -cd Slic3r/deps +git clone https://github.com/supermerill/SuperSlicer/ +cd SuperSlicer/deps mkdir build cd build cmake .. @@ -125,5 +131,5 @@ mkdir build cd build cmake .. -DCMAKE_PREFIX_PATH="$PWD/../deps/build/destdir/usr/local" make -src/slic3r +src/superslicer ``` diff --git a/doc/How to build - Windows.md b/doc/How to build - Windows.md index bc1115ef0d7..5a2acb140e8 100644 --- a/doc/How to build - Windows.md +++ b/doc/How to build - Windows.md @@ -15,7 +15,7 @@ Clone the respository. To place it in C:\src\REPO_NAME (use Slic3r, SuperSlicer ``` c:> mkdir src c:> cd src -c:\src> git clone https://github.com/prusa3d/REPO_NAME.git +c:\src> git clone https://github.com/supermerill/SuperSlicer.git ``` ### Run the automatic build script @@ -30,7 +30,7 @@ c:\src\REPO_NAME>build_win.bat -d=..\REPO_NAME-deps -r=console The build script will run for a while (over an hour, depending on your machine) and automatically perform the following steps: 1. Configure and build [deps](#compile-the-dependencies) as RelWithDebInfo with `c:\src\REPO_NAME-deps` as the destination directory 2. Configure and build all [application targets](#compile-slic3r) as RelWithDebInfo -3. Launch the resulting `prusa-slicer-console.exe` binary +3. Launch the resulting `superslicer-console.exe` binary You can change the above command line options to do things like: * Change the destination for the dependencies by pointing `-d` to a different directory such as: `build_win.bat -d=s:\REPO_NAMEDeps` diff --git a/resources/ui_layout/default/colors.ini b/resources/ui_layout/default/colors.ini index a50237be6b8..156b61f4d71 100644 --- a/resources/ui_layout/default/colors.ini +++ b/resources/ui_layout/default/colors.ini @@ -18,9 +18,9 @@ Mill = B3B3B3 Custom = 28CC94 Mixed = 000000 Travel = -Gui_color_dark = ada227 -Gui_color = ccbe29 -Gui_color_light = edde3d +Gui_color_dark = 275cad +Gui_color = 296acc +Gui_color_light = 3d83ed splash_screen_editor = da_fish.jpg splash_screen_gcodeviewer = prusa-gcodepreview.jpg Gui_plater = 3C3C3C diff --git a/resources/ui_layout/example/colors.ini b/resources/ui_layout/example/colors.ini index 3c713b49904..bf3fc5f9482 100644 --- a/resources/ui_layout/example/colors.ini +++ b/resources/ui_layout/example/colors.ini @@ -18,9 +18,9 @@ Mill = B3B3B3 Custom = 28CC94 Mixed = 000000 Travel = -Gui_color_dark = ada227 -Gui_color = ccbe29 -Gui_color_light = edde3d +Gui_color_dark = 275cad +Gui_color = 296acc +Gui_color_light = 3d83ed splash_screen_editor = da_fish.jpg splash_screen_gcodeviewer = prusa-gcodepreview.jpg Gui_plater = 3C3C3C diff --git a/src/slic3r/GUI/AboutDialog.cpp b/src/slic3r/GUI/AboutDialog.cpp index 16b58927325..72c0238a129 100644 --- a/src/slic3r/GUI/AboutDialog.cpp +++ b/src/slic3r/GUI/AboutDialog.cpp @@ -275,7 +275,7 @@ AboutDialog::AboutDialog() // TRN "Slic3r _is licensed under the_ License" const std::string is_lecensed_str = _utf8(L("is licensed under the")); const std::string license_str = _utf8(L("GNU Affero General Public License, version 3")); - const std::string based_on_str = _utf8(L("Slic3r contains sizable contributions from Prusa Research. Original work by Alessandro Ranellucci and the RepRap community.")); + const std::string based_on_str = _utf8(L("SuperSlicer is a skinned version of Slic3r, based on PrusaSlicer by Prusa and the original Slic3r by Alessandro Ranellucci & the RepRap community.")); const std::string contributors_str = _utf8(L("Contributions by Henrik Brix Andersen, Nicolas Dandrimont, Mark Hindess, Petr Ledvina, Joseph Lenox, Y. Sapir, Mike Sheldrake, Vojtech Bubnik, Durand RĂ©mi and numerous others.")); const std::string manual_str = _utf8(L("Manual by Gary Hodgson. Inspired by the RepRap community.")); const std::string icon_str = _utf8(L("Slic3r logo designed by Corey Daniels.")); diff --git a/src/slic3r/GUI/GUI_App.cpp b/src/slic3r/GUI/GUI_App.cpp index ff85929221f..5dc1d0281cf 100644 --- a/src/slic3r/GUI/GUI_App.cpp +++ b/src/slic3r/GUI/GUI_App.cpp @@ -160,7 +160,7 @@ class SplashScreen : public wxSplashScreen memDC.SelectObject(bitmap); memDC.SetFont(m_action_font); - /// memDC.SetTextForeground(wxColour(237, 107, 33)); // ed6b21 +/// memDC.SetTextForeground(wxColour(237, 107, 33)); // ed6b21 uint32_t color = Slic3r::GUI::wxGetApp().app_config->create_color(0.86f, 0.93f); memDC.SetTextForeground(wxColour(color & 0xFF, (color & 0xFF00) >> 8, (color & 0xFF0000) >> 16)); memDC.DrawText(text, int(m_scale * 60), m_action_line_y_position); @@ -280,7 +280,7 @@ class SplashScreen : public wxSplashScreen version = _L("Version") + " " + std::string(SLIC3R_VERSION_FULL); // credits infornation - credits = _L("Slic3r contains sizable contributions from Prusa Research. Original work by Alessandro Ranellucci and the RepRap community.") + "\n\n" + + credits = _L("SuperSlicer is a skinned version of Slic3r, based on PrusaSlicer by Prusa and the original Slic3r by Alessandro Ranellucci & the RepRap community.") + "\n\n" + title + " " + _L("is licensed under the") + " " + _L("GNU Affero General Public License, version 3") + ".\n\n" + _L("Contributions by Vojtech Bubnik, Enrico Turri, Durand Remi, Oleksandra Iushchenko, Tamas Meszaros, Lukas Matena, Vojtech Kral, David Kocik and numerous others."); @@ -1184,24 +1184,24 @@ bool GUI_App::on_init_inner() boost::filesystem::path splash_screen_path = (boost::filesystem::path(Slic3r::resources_dir()) / "splashscreen" / file_name); if (boost::filesystem::exists(splash_screen_path)) { wxString path_str = wxString::FromUTF8((splash_screen_path).string().c_str()); - // make a bitmap with dark grey banner on the left side + // make a bitmap with dark grey banner on the left side bmp = SplashScreen::MakeBitmap(wxBitmap(path_str, wxBITMAP_TYPE_JPEG)); //get the artist name from metadata - int result; - void** ifdArray = nullptr; - ExifTagNodeInfo* tag; + int result; + void** ifdArray = nullptr; + ExifTagNodeInfo* tag; ifdArray = exif_createIfdTableArray(path_str.c_str(), &result); - if (result > 0 && ifdArray) { - tag = exif_getTagInfo(ifdArray, IFD_0TH, TAG_Artist); - if (tag) { - if (!tag->error) { - artist = (_L("Artwork model by") + " " + wxString::FromUTF8((char*)tag->byteData)); - } + if (result > 0 && ifdArray) { + tag = exif_getTagInfo(ifdArray, IFD_0TH, TAG_Artist); + if (tag) { + if (!tag->error) { + artist = (_L("Artwork model by") + " " + wxString::FromUTF8((char*)tag->byteData)); } } } } + } // Detect position (display) to show the splash screen // Now this position is equal to the mainframe position @@ -1222,16 +1222,16 @@ bool GUI_App::on_init_inner() // make a bitmap with dark grey banner on the left side scrn = new SplashScreen(bmp.IsOk() ? bmp : SplashScreen::MakeBitmap(create_scaled_bitmap(SLIC3R_APP_KEY, nullptr, 600)), - wxSPLASH_CENTRE_ON_SCREEN | wxSPLASH_TIMEOUT, 4000, splashscreen_pos, artist); + wxSPLASH_CENTRE_ON_SCREEN | wxSPLASH_TIMEOUT, 4000, splashscreen_pos, artist); - if (!default_splashscreen_pos) - // revert "restore_win_position" value if application wasn't crashed - get_app_config()->set("restore_win_position", "1"); + if (!default_splashscreen_pos) + // revert "restore_win_position" value if application wasn't crashed + get_app_config()->set("restore_win_position", "1"); #ifndef __linux__ - wxYield(); + wxYield(); #endif - scrn->SetText(_L("Loading configuration") + dots); - } + scrn->SetText(_L("Loading configuration")+ dots); + } preset_bundle = new PresetBundle(); diff --git a/src/slic3r/GUI/ScriptExecutor.cpp b/src/slic3r/GUI/ScriptExecutor.cpp index 923d1a50dad..17070466a06 100644 --- a/src/slic3r/GUI/ScriptExecutor.cpp +++ b/src/slic3r/GUI/ScriptExecutor.cpp @@ -668,14 +668,14 @@ void ScriptContainer::init(const std::string& tab_key, Tab* tab) m_script_engine.get()->RegisterGlobalFunction("void set_string(string &in, string &in new_val)", WRAP_FN(as_set_string), AngelScript::asCALL_GENERIC); - m_script_engine.get()->RegisterGlobalFunction("bool as_get_custom_bool(int, string &in, bool &out)", WRAP_FN(as_get_custom_bool), AngelScript::asCALL_GENERIC); - m_script_engine.get()->RegisterGlobalFunction("void as_set_custom_bool(int, string &in, bool)", WRAP_FN(as_set_custom_bool), AngelScript::asCALL_GENERIC); - m_script_engine.get()->RegisterGlobalFunction("bool as_get_custom_int(int, string &in, int &out)", WRAP_FN(as_get_custom_int), AngelScript::asCALL_GENERIC); - m_script_engine.get()->RegisterGlobalFunction("void as_set_custom_int(int, string &in, int)", WRAP_FN(as_set_custom_int), AngelScript::asCALL_GENERIC); - m_script_engine.get()->RegisterGlobalFunction("bool as_get_custom_float(int, string &in, float &out)", WRAP_FN(as_get_custom_float), AngelScript::asCALL_GENERIC); - m_script_engine.get()->RegisterGlobalFunction("void as_set_custom_float(int, string &in, float)", WRAP_FN(as_set_custom_float), AngelScript::asCALL_GENERIC); - m_script_engine.get()->RegisterGlobalFunction("bool as_get_custom_string(int, string &in, string &out)", WRAP_FN(as_get_custom_string), AngelScript::asCALL_GENERIC); - m_script_engine.get()->RegisterGlobalFunction("void as_set_custom_string(int, string &in, string &in)", WRAP_FN(as_set_custom_string), AngelScript::asCALL_GENERIC); + m_script_engine.get()->RegisterGlobalFunction("bool get_custom_bool(int, string &in, bool &out)", WRAP_FN(as_get_custom_bool), AngelScript::asCALL_GENERIC); + m_script_engine.get()->RegisterGlobalFunction("void set_custom_bool(int, string &in, bool)", WRAP_FN(as_set_custom_bool), AngelScript::asCALL_GENERIC); + m_script_engine.get()->RegisterGlobalFunction("bool get_custom_int(int, string &in, int &out)", WRAP_FN(as_get_custom_int), AngelScript::asCALL_GENERIC); + m_script_engine.get()->RegisterGlobalFunction("void set_custom_int(int, string &in, int)", WRAP_FN(as_set_custom_int), AngelScript::asCALL_GENERIC); + m_script_engine.get()->RegisterGlobalFunction("bool get_custom_float(int, string &in, float &out)", WRAP_FN(as_get_custom_float), AngelScript::asCALL_GENERIC); + m_script_engine.get()->RegisterGlobalFunction("void set_custom_float(int, string &in, float)", WRAP_FN(as_set_custom_float), AngelScript::asCALL_GENERIC); + m_script_engine.get()->RegisterGlobalFunction("bool get_custom_string(int, string &in, string &out)", WRAP_FN(as_get_custom_string), AngelScript::asCALL_GENERIC); + m_script_engine.get()->RegisterGlobalFunction("void set_custom_string(int, string &in, string &in)", WRAP_FN(as_set_custom_string), AngelScript::asCALL_GENERIC); m_script_engine.get()->RegisterGlobalFunction("float get_computed_float(string &in)", WRAP_FN(as_get_computed_float), AngelScript::asCALL_GENERIC); m_script_engine.get()->RegisterGlobalFunction("void back_initial_value(string &in)", WRAP_FN(as_back_initial_value), AngelScript::asCALL_GENERIC); diff --git a/version.inc b/version.inc index 538f5486dac..ff8bf3f5017 100644 --- a/version.inc +++ b/version.inc @@ -2,13 +2,13 @@ # (the version numbers are generated by the build script from the git current label) # name of the slicer -set(SLIC3R_APP_NAME "Slic3r") +set(SLIC3R_APP_NAME "SuperSlicer") # Key fo the slicer, must only contains ascii chars and no spaces (be valid in all filesystems) -set(SLIC3R_APP_KEY "Slic3r") +set(SLIC3R_APP_KEY "SuperSlicer") # exe name of the slicer, should be lowercase and valid in all os -set(SLIC3R_APP_CMD "Slic3r") +set(SLIC3R_APP_CMD "superslicer") # versions -set(SLIC3R_VERSION "2.5") +set(SLIC3R_VERSION "2.5.59") set(SLIC3R_VERSION_FULL "2.5.59.5") set(SLIC3R_BUILD_ID "${SLIC3R_APP_KEY}_${SLIC3R_VERSION_FULL}+UNKNOWN") set(SLIC3R_RC_VERSION "2,5,59,5") @@ -20,9 +20,9 @@ set(GCODEVIEWER_APP_KEY "${SLIC3R_APP_KEY}-gcodeviewer") set(GCODEVIEWER_APP_CMD "${SLIC3R_APP_CMD}-gcodeviewer") # string to be added after the SLIC3R_APP_NAME on some places -set(SLIC3R_BASED_ON "") +set(SLIC3R_BASED_ON " based on PrusaSlicer") # to get he github repo -set(SLIC3R_GITHUB "slic3r/Slic3r") +set(SLIC3R_GITHUB "supermerill/SuperSlicer") # download url -set(SLIC3R_DOWNLOAD "https://slic3r.org/download") +set(SLIC3R_DOWNLOAD "https://github.com/supermerill/SuperSlicer/releases") set(SLIC3R_DOC_URL "https://manual.slic3r.org/")