From 22dd0e803ca8fc53202d99f76e383810bba5edd8 Mon Sep 17 00:00:00 2001 From: Rathmox Date: Sun, 17 Sep 2023 00:42:23 +0200 Subject: [PATCH 01/51] Add first custom page --- docs/get-started.md | 44 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) create mode 100644 docs/get-started.md diff --git a/docs/get-started.md b/docs/get-started.md new file mode 100644 index 00000000..d0350507 --- /dev/null +++ b/docs/get-started.md @@ -0,0 +1,44 @@ +--- +sidebar_position: 1 +title: Get Started +--- + +**Before starting this guide, you need to understand some words you will see in this guide.** + +### Definitions + +This guide will refer to some names, before starting you have to know what these names refer to: + +1. Epsilon: This is the firmware originally sold with the calculator, made by Numworks. After version 16, they started to lock the calculator to prevent any CFW installation ([see why here](https://tiplanet.org/forum/viewtopic.php?f=97&t=24968)). +2. CFW: Custom firmware, a firmware that is made to replace Epsilon. Common ones are Omega and Upsilon +3. Phi: This is an app that is made to unlock locked calculators. +4. Recovery mode ("STM32 DFU bootloader" or "hwloader"): This is a mode on the calculator that allows to change anything, and the one that Numworks locked. It's usually accessed when pressing "reset" on the back of the calculator while holding the "6" key and it can be recognized when you get a black screen with the led turned on red. This is what you need to get at the end to be able to install anything you want. +5. Bootloader ("softloader"): This is a menu you can get in different ways, it depends on the CFW you choose. It allows you to reinstall the firmware and can prevent you from locking your calculator if you update it. Phi allows you to install one if you want. + +:::info + +If you don't want to deeply modify your calculator, [there are still a few things you can do](what-to-do-locked). + +::: + +### Prerequisites + +Numworks Calculator +Driver if you have Windows or Linux: open the [Rescue page](https://numworks.com/rescue) on Numworks’ website and it will give it and tell you how to install it. **Don’t plug in your calculator to make sure you don’t lock it**. If you have macOS, you don't need it. + +### Model check + +1. Turn your calculator around +2. On its back, there should be a little writing, either N0120, N0110 or N0100. This is your model number. +3. If you can't read that: + 1. Turn the calculator on + 2. Go in the settings app + 3. Go in "about" + 4. Look at the FCC ID. It should end with one of the model names below. + +| Calculator Model | What to do | +|------------------|-------------------------------------------------------------------------------------------------| +| N0100 | [Your calculator is already unlocked](n0100-now-what) | +| N0110 | [Check if your calculator is locked](n0110-is-locked) | +| N0115 | OMEGA NEEDS YOU | +| N0120 | [You can't install a CFW on it. But there are still a few things you can do](what-to-do-locked) | From 59845a979bc92fd2015e156dd408741128b6c025 Mon Sep 17 00:00:00 2001 From: Rathmox Date: Sun, 17 Sep 2023 00:54:01 +0200 Subject: [PATCH 02/51] add first category --- docs/n0110-unlock/_category_.json | 8 +++ .../check-version-change-eligibility.md | 40 +++++++++++ .../n0110-unlock/images/screenshots/e16bl.png | Bin 0 -> 3237 bytes .../images/screenshots/phi-erase.png | Bin 0 -> 1619 bytes .../images/screenshots/phi-launch.png | Bin 0 -> 3012 bytes .../images/screenshots/phi-unlock.png | Bin 0 -> 1749 bytes .../images/screenshots/phi-write.png | Bin 0 -> 1630 bytes docs/n0110-unlock/install-epsilon-18-2-0.md | 53 ++++++++++++++ docs/n0110-unlock/n0110-hardware-unlock.md | 24 +++++++ docs/n0110-unlock/n0110-is-locked.md | 52 ++++++++++++++ docs/n0110-unlock/n0110-now-what.md | 33 +++++++++ docs/n0110-unlock/phi-now-what.md | 32 +++++++++ docs/n0110-unlock/phi.md | 65 ++++++++++++++++++ 13 files changed, 307 insertions(+) create mode 100644 docs/n0110-unlock/_category_.json create mode 100644 docs/n0110-unlock/check-version-change-eligibility.md create mode 100644 docs/n0110-unlock/images/screenshots/e16bl.png create mode 100644 docs/n0110-unlock/images/screenshots/phi-erase.png create mode 100644 docs/n0110-unlock/images/screenshots/phi-launch.png create mode 100644 docs/n0110-unlock/images/screenshots/phi-unlock.png create mode 100644 docs/n0110-unlock/images/screenshots/phi-write.png create mode 100644 docs/n0110-unlock/install-epsilon-18-2-0.md create mode 100644 docs/n0110-unlock/n0110-hardware-unlock.md create mode 100644 docs/n0110-unlock/n0110-is-locked.md create mode 100644 docs/n0110-unlock/n0110-now-what.md create mode 100644 docs/n0110-unlock/phi-now-what.md create mode 100644 docs/n0110-unlock/phi.md diff --git a/docs/n0110-unlock/_category_.json b/docs/n0110-unlock/_category_.json new file mode 100644 index 00000000..fa207943 --- /dev/null +++ b/docs/n0110-unlock/_category_.json @@ -0,0 +1,8 @@ +{ + "label": "Unlock N0110", + "position": 2, + "link": { + "type": "generated-index", + "description": "bek" + } +} diff --git a/docs/n0110-unlock/check-version-change-eligibility.md b/docs/n0110-unlock/check-version-change-eligibility.md new file mode 100644 index 00000000..2acb87bd --- /dev/null +++ b/docs/n0110-unlock/check-version-change-eligibility.md @@ -0,0 +1,40 @@ +--- +title: "Check version change eligibility" +--- + +### Introduction + +You may need to change Epsilon's version to unlock your calculator, we usually install Epsilon 18.2.0. There are some cases where you can install Epsilon 18.2.0 and some you can't, this page explains how to know if you are eligible or not. + +### If you have Epsilon 15 or lower + +You don't need to change your version, just go to [Now What ?](n0110-now-what) + +### If you have Epsilon 16 to 18.2.0 (but not 16.4.3) + +You don't need to change your version, just go to [Phi](phi) + +### If you have Epsilon 16.4.3 or 18.2.3 + +You are eligible, you can continue normally + +### If you have Epsilon 19 or higher + +It depends on the version you had before updating to Epsilon 19 and over. + +- If you had 15 or lower, Omega, or Upsilon: You can't change your version +- If you had 16 to 18.2.3 (but not 16.4.3): You can change your version +- If you had 16.4.3, 19 or higher: You can't change your version + +### And If you don't know + +Don't worry, trying to change your version won't break your calculator. +If you were not eligible, after the process, the calculator will be stuck on Numworks recovery screen and you will be able to update from Numworks website and your calculator will work normally. + +___ + +If you are eligible, continue to [Install Epsilon 18.2.0](install-epsilon-18-2-0) +{: .notice--primary} + +If you are not eligible, you need to use an [Alternate Method](n0110-is-locked#alternate-methods) +{: .notice--info} diff --git a/docs/n0110-unlock/images/screenshots/e16bl.png b/docs/n0110-unlock/images/screenshots/e16bl.png new file mode 100644 index 0000000000000000000000000000000000000000..35ddb3f11b268148e2117d0edf89ba9b261626a9 GIT binary patch literal 3237 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 literal 0 HcmV?d00001 diff --git a/docs/n0110-unlock/images/screenshots/phi-launch.png b/docs/n0110-unlock/images/screenshots/phi-launch.png new file mode 100644 index 0000000000000000000000000000000000000000..8060c33670500b8c3d9ea7e35db7db8f2eb4fdbb GIT binary patch literal 3012 zcmbW3c{tSDAIHBlQDf$+$qkWZT&1FseXGpWh+!;~q9TPX*_RQDVT9&JF5NO&CK4fQ zgfX^}ow1ZP+n}t;9%Gr|&b|NM-#@?m$2re=Ue9^n=RD_}&w0O};7tt#q2f>g00a%O zdgcHCLi5JUko~;g2U+dL0}(D54BilfL3sOmIk~ty0>G(f#Ag?<^=OI4J69Wjvp5j_ zyOu+?sfgZXiBjn0Y`ANrrKGVU_mP~SVN`VbxRv+v-J3Wq;&PP7|pIM&dUT=wxns#aZ8u~D$;d8cmvC(`tSKu!~Vytr0X z)=5X*OhQHk=8;#TtdJzWa>VCapI@7(ic~I@rsXyz@5Xx0P@?u+r_fCaM+MH<3kd0* z%6=1};@)tt&#)-&4Yxctv}GMPY2IQ1mTd;he?nA-ETc9@^W#&g%YWASyk2Yc(bXpv z*u1_%pf25QcA)|voyU#5wiNE$PCx%?g^QK~5r=CV@8hm+keHIT%dK%HgYl2lB7>y@ zQR!Z7U@i^KP8zT#NM{{FCsi1+fCJ>(dtt=`M3$uM(!!W($8HD!;Cvr|mst+HYuRs) zGtdL(fgb?Nxi>kJM+CgFHwgfsDEoH<1-?c3^WXtLLzBw~rojhAE%I z0EVFd6a2Tvr}7UbwP`jO$jUH-7y%C%QsYR9hj-N4)h$k495)eL4BM=q{+0A|USrj( zlnwEci5O`AbPQG}(k}{X`L)jL3|d!SFcQViL5hToP3*E5f-q3a3Nd01XEy*HuBSUH zu8ZYd1Yw&eG$Se&e=T>HFrvZhT9poyB+QHw8lorx(K%)i|7IeoItj*byUctz?2}P* ztqh3=nIrJ_vKCz<#hwo`UV}4y1`@*`z(dlRkAMuHEPZ`FlL_`sP>q-_IIhfk?6h>9 zS9h+=aloY~=+eA(J<&@#jkTq*Mgqs_zdCkQ;H5BgWy_*0bn)W)Y}XEVFOU9%?RiS_ zNp9_hgvyyhN^VVk-9Xiu5xFdW3mXqjvMi9OteGWp>_(F_|CL3-elQ+pjG3O^buF*{ z_NQ3Lz$01qkyTGWjYHXBy>%LHo!$OjVJ4{Q5}qH6$tq9EW%TCObnWVl#Ev^TgIdzs zM+X929r!%&Ka*Qm4c5E?bO)|quWx8ZuIy3et>uvKfec@QC~Bj?o+b3iA$FK>emkd9 z{Nv>~*&OcI=8@Hf2bG2$%*W8Uc#k30b1tE8jwO555COPUar5aNxm>%vg8eYGxPL); zMPl+!Wh6ILpl4(z7tW7}DPsf$y%G=+m4TDacd!;5JFaJzw%GJTq1&>FJHC4aCUwtc^Uj~yd4UL3@ zuuk!%S#FrVR45*J!(Axbc3VFl4rJ5;)QS~)lfSRx_$|a?lG+W>;{Djs-k7e?YoC8G zDi`{ta;k0&s`PE@#j_Kkg_N-rGBj>~iQha9vUbP?9s-6(l{}wmqFhfs4!ryFHVyqw z*?3ys9CQjOI(cYtHM8IXZV+x6Z1;a%B-247XStEItl;T9yja1kxVyn{3-<7LCb zYz+#8y{ik|V|1r7X3{e}#nQR1r`CIq&>`K{!kc22Z@sW7$=1WU7it`X%TCs019J$# zERBPdQr9&`oaB_$fa98`j9IC$vLM33Qa>n=9_r+$X8V%;jVh**g?BRbR=ihMl~a*X zt+{j(n0pW9NbuLU!4qJ$NJY}EORUB}3d80Ch!C_+KA2${PFrSwUPfA&d9kN-$s8Dx zhM%dwIT(>!YoL)A?BVLD7LYcPc;_^e-m)@Vs`xM)(9TvT1g+c_8x@kTda=~2o8H$^ z-6F$*lU|k9xt-N*2*UruW^b<{o|@M=<+IPG(K7mkL+*v0E6p^a=6u&xc%PuuMzMTf zv|J2B@!66$MwkOix-U1k@ZC2MN>{;s{D*jybqT`IxxM!et`BsF;mE>q79h}kuUSNQLFn<g|0*f!0n8?`)?i9#frcK{;kVPFDDEtrLF2rZatMT^NF{kVHyrhMei%5@Ri+AM)Y85Y4gx;%RjIr<;n+SweRQJx@veg0Ba#HzV` zV&27)s->r81!-zvEQxjdOjS%3bPWxp^H1B_X+Px*6H z7$j`7aF_fS=3RCM#x;Ek-HMxDj5>ww$78AKECG9-F*SLkm1o5aSN!du2S z=3c~0<|>lCP^m*73AC_0?dZk`$)sY=-C;S$PsYd{rByLZ-DVTgwUj;oly~s^HMcWNay#P7>e|cO@qKla z(a^3c2kj$Y%#>GD?JqRX&|AZlM7;?}mzd{sKH&?R>MizPUrUPovf8~l6Pey!_AX^Y29S|3{_3**hER=zZSc*Q>lR2N+&9)hoDU`{*x|ZC1ko literal 0 HcmV?d00001 diff --git a/docs/n0110-unlock/images/screenshots/phi-unlock.png b/docs/n0110-unlock/images/screenshots/phi-unlock.png new file mode 100644 index 0000000000000000000000000000000000000000..ab8e6a74a745c458d5142034c988f14757a10a8c GIT binary patch literal 1749 zcmeAS@N?(olHy`uVBq!ia0y~yU~~YoKX9-C$wJ+|*+7AoOlRi+PiJR^f};Gi%$!sP z291fe6Ky>XJ4m$MU)B|*CHqF<(S(IoTNSh(tq9d{Y7Nld@+zU|rMyX|M^KCm>-DB) z`|eP7@$^{P7*@v*>_;x1^t|Zm^+!*0OUK8)$8z_6-+&?bBKxEer1~;TEzliv9SbxAvf9fUgHRgI3lFd5fI?c8hXRy!n(;xiq6kH<^OMZJ^jSe z39Fgh`dF_la4h@#p#H<|?O}yQhrGGe8}Er9|0%)xtE@5XaN)jw+2y57Eb|++_dZ^4 z+BnnylC-RD8H>xd#_rdB%ib_fw?1%Tvf}Jb+N_zJN0mO*x!s?_&X(VJVb=BS-z@#) z8+5*E)iTS-FeR&=iu+z!USEFy-`dRY@7XOAiYEBSbgcwN3tN)6y9>i>hBplN(yz>3 z1{C2e@Q5sCVBi)8VMc~ob0mO*>?NMQuI$g4___EsCSFi@#lXOF$-KHxb(uj1m)iYTZ27S(yT5+bpLutF z74P>5a+OF_j6dwZ@5}e>z(S+73T!SbO`LLN4{noLeC=`k=JhK#=(?5PDPpMz%L%h- z?CXnLw4ugiUHvn|uI}~nda@4F-G83`dGn*k;TRHIqwO72}UQRev5tK<458tbuEqV zzfScz_4Q2(o5gOC_5a`6<==PS&vnjxb>U)Vox@Yr53C1P_rs!#V z_s?F$#LRR5SALWhN z*Y8)W&%BkJQ7K+=7xjNA|t?%aH9hW9{NKcRr=x`MC6HU4ue{di%3r^|Z53f7r<_&DGQWUq7Yl z``+>t+t1hj75wymaMP~#=Txr36+4B!O!VrnecQfgib9=%Mnm{+`Gj}tZSS!r{r{?Q zB=woiq0s+V1oY}TYrZ`3jQ;!gU6uY{H~rahJ@>qB&zG83|Ft&r!MEvg@ptU?dOp0~ z!cy^q z#kF_W3oy>fT6%i*JbT~IJNGFx=r1m7Jg^9$7%1gd@)jKVcU5kG z`Rg}7=LO#8pU$h$;GMw0$RglCAwjtbASY14Az+_S$2BYh6bH*7bd7)mwzz&!w2!fM Xktu&B$DT#N0*}Gd)z4*}Q$iB}fFo?H literal 0 HcmV?d00001 diff --git a/docs/n0110-unlock/images/screenshots/phi-write.png b/docs/n0110-unlock/images/screenshots/phi-write.png new file mode 100644 index 0000000000000000000000000000000000000000..5bd2dc14d6950b574215db529459a810e8c61434 GIT binary patch literal 1630 zcmeAS@N?(olHy`uVBq!ia0y~yU~~YoKX9-C$wJ+|*+7AoOlRi+PiJR^f};Gi%$!sP z291fe6Ky>XJ4m$MU)B|*CHqF<(S(IoTNSh(tq9d{Y7Nld@+zU|rMyX|M^KCm>-DB) z`|eP7@$^{P7*@v*>_;x1^t|Zm^+!*0OUK8)$8z_6-+&?bBKxEer1~;TEzliv9SbxAvf9fUgHRgI3lFd5fI?c8hXRy!n(;xiq6kH<^OMZJ^jSe z39Fgh`dF_la4h@#p#H<|?O}yQhrGGe8}Er9|0%)xtE@5XaN)jw+2y57Eb|++_dZ^4 z+BnnylC-RD8H>xd#_rdB%ib_fw?1%Tvf}Jb+N_zJN0mO*x!s?_&X(VJVb=BS-z@#) z8+5*E)iTS-FeR&=iu+z!USEFy-`dRY@7XOAiYEBSbgcwN3tN)6y9>i>hBplN(yz>3 z1{C2e@Q5sCVBi)8VMc~ob0mO*>?NMQuI$g4__+jmDkuGZ!oa{1?djqeQgQ3;-Me9r z6+{{WXFUDA-{{_%*059l98*-P1eDx$+T`ZeNamj>3`G#M-^Y_`6SHH43cjoKc zMO*gG%)bA(w6XKwU(VAWF^`r^*5b4C&#bjRsy|QS&%Enma<5*0nQZ=VzwTbkotGX7 zuiv)sOHp-h*V?=0zw)K$=4A_~ytP=p-+secmK|1Z);}yukDd{kW)z&U%4g-v1KCDK zGmjnm82rp|>5sQos)wI4S3I4p?Hg5YlUU@_`t@kr@f|X54E|kFxu>FK56=6#^w3{j z;Va7z$!NXqViwl2QEPBtKIhWz-7l9+u6a@!b-(r;>$>zNDb9$OTeWPTmDcWju-xg+ z(FyF`{r0S3`yO-UNF1N9H^ZmDxj)^B{ji{C&e;_w;ETXv2!9{u~x zP<`#b@zH(V@u$z zCTW|ETAH44wfdUH$G7>PGvGPoyi*?s5BR4cvb+41*<*Dv0m^HcP;*T31L*#!=$8ZbP0l+XkKVJlB2 literal 0 HcmV?d00001 diff --git a/docs/n0110-unlock/install-epsilon-18-2-0.md b/docs/n0110-unlock/install-epsilon-18-2-0.md new file mode 100644 index 00000000..2acef8ea --- /dev/null +++ b/docs/n0110-unlock/install-epsilon-18-2-0.md @@ -0,0 +1,53 @@ +--- +title: "Install Epsilon 18.2.0" +--- + +{% include toc title="Table of Contents" %} + +### Required Reading + +We will now install Epsilon 18.2.0 + +If you are not sure if you can install Epsilon 18.2.0, go check [this page](check-version-change-eligibility) +{: .notice--info} + + +### What You Need + +- A chromium-based browser (we recommend using [chromium](https://www.chromium.org/chromium-projects/) directly) +- Epsilon 18.2.0 `18-2-0.dfu` (since Numworks deleted this file from their website because of Phi, we cannot give you a link here) +- Python ([Link for Windows and macOS](https://www.python.org/)) +- This Python script: [Linux and macOS version](images/unpack.py), [Windows version](images/unpack-win.py) + +### Section I - Extracting the external binary + +Since Epsilon is now proprietary, we can't distribute the external flash image directly. +We thus have to make you extract it. + +1. Install Python on your platform +2. Download Epsilon 18.2.0 +3. Create a new folder +4. Put the Python script in that folder +5. Put 18-2-0.dfu in that folder +6. Run the script + +You should now have an internal.bin and an external.bin file + +### Section II - Install + +1. Open [WebDFU](https://ti-planet.github.io/webdfu_numworks/n0110/) in a chromium-based browser +2. Hold the 6 key on your numworks and press the reset button +3. You should now see the Epsilon bootloader interface +4. Select `external.bin` in WebDFU +5. Click "flash external" +6. Once flashing is done, press the reset button on your Numworks + +You should now see version 18.2.0 in Settings > About. + +If it is not the case or your Numworks doesn't boot, you can only use an [alternate method](n0110-is-locked#alternate-methods). +{: .notice--warning} + +___ + +### Continue to [Phi](phi) +{: .notice--primary} diff --git a/docs/n0110-unlock/n0110-hardware-unlock.md b/docs/n0110-unlock/n0110-hardware-unlock.md new file mode 100644 index 00000000..57e9a746 --- /dev/null +++ b/docs/n0110-unlock/n0110-hardware-unlock.md @@ -0,0 +1,24 @@ +--- +title: "Hardware unlock (N0110)" +--- + +{% include toc title="Sommaire" %} + +### Requiered reading + +The hardware unlock way requieres special tools. + +The goal is to force recovery mode to allow installation, your calculator should show a black screen and a red LED. + +### Select a method + +There are multiple methods. + +We recommend [this post](https://tiplanet.org/forum/viewtopic.php?f=113&t=25191&p=263495), it is very complete and will guide you very well. + +If you have another way to get Recovery mode, you can follow it instead. **We are not responsible for anything that goes wrong with your device** + +___ + +When your calculator is in Recovery mode, continue to [Now What ? ](n0110-now-what) +{: .notice--primary} diff --git a/docs/n0110-unlock/n0110-is-locked.md b/docs/n0110-unlock/n0110-is-locked.md new file mode 100644 index 00000000..0bf7eb35 --- /dev/null +++ b/docs/n0110-unlock/n0110-is-locked.md @@ -0,0 +1,52 @@ +--- +title: "Is your calculator locked ? (N0110)" +--- + +{% include toc title="Table of Contents" %} + +This page will tell you if you need to unlock your calculator and how. + +#### Section I - Epsilon Version check + +1. Power on your device +2. Go in the settings app +3. Go in "about" +4. Look at the "Software version" or "Epsilon version" field. +5. This is your Epsilon version. + +#### Section II - Flash lock check + +1. Press the "6" key +2. While pressing the "6" key, press the reset button at the back of the device. + +If you see a screen like this one, you can proceed : +![Epsilon 16 bootloader](images/screenshots/e16bl.png) + +If the screen stays black and the LED turns red, STOP - your calculator is already unlocked! Continue from [here](n0110-now-what). +{: .notice--warning} + +Press the reset button at the back of the calculator to return to the firmware. + +#### Section III - Select a Method + +Use the version table below to select a method. A few things to note: + + The version table below is *inclusive*. For example, "from 16.3.0 to 18.0.0" includes 16.3.0, 18.0.0, and all versions in between. + + Version 16.4.3 does not follow this rule. + +| System Version | What to do | +|----------------|----------------------------------------------------------------------| +| 11.2.0-16.2.0 | [Now what ?](n0110-now-what) | +| 16.3.0-16.4.2 | [Phi](phi) | +| 16.4.3 | [Install Epsilon 18.2.0](install-epsilon-18-2-0) | +| 17.0.0-18.2.0 | [Phi](phi) | +| 18.2.3 | [Install Epsilon 18.2.0](install-epsilon-18-2-0) | +| 19.0.0-21.2.0 | [Check version change eligibility](check-version-change-eligibility) | + +--- +#### Alternate Methods + +If possible, you should follow one of the software methods listed above. + +Otherwise, methods that work on all versions are available, but require additional hardware: + +1. [Hardware Unlock](n0110-hardware-unlock) - requires special tools diff --git a/docs/n0110-unlock/n0110-now-what.md b/docs/n0110-unlock/n0110-now-what.md new file mode 100644 index 00000000..0d8f8d73 --- /dev/null +++ b/docs/n0110-unlock/n0110-now-what.md @@ -0,0 +1,33 @@ +--- +title: "Now What (N0110) ?" +--- + +{% include toc title="Table of Contents" %} + +Your Numworks doesn't need to be unlocked, yay! + +You now have multiple choices. You can: +- Install a patched bootloader and then install Epsilon >= 16 +- Install a custom firmware + +### Choice I - Install a patched bootloader + +If you wish to use Epsilon >= 16 while still being able to install a custom firmware, +you can install a patched bootloader : +1. Download [this file](https://phi.getomega.dev/install/bootloader.bin) +2. Open [this page](https://ti-planet.github.io/webdfu_numworks/n0110/) in a chromium-based browser +3. While holding the 6 key, press the reset button on the back of your device +4. Plug your calculator to your computer +5. Click "Connect to the Numworks calculator" and select the STM32 bootloader. +6. Click "Chose file" and pick the bootloader.bin that you just downloaded +7. Click Flash internal + +You can now hold 4 and reset. You'll boot into the soft bootloader. From there, you can install Epsilon from [Numworks' website](https://my.numworks.com/devices/upgrade). + +Continue to [Final checks](final-checks) +{: .notice--primary} + +### Choice II - Install a CFW + +Go to [choose a CFW](choose-a-cfw) +{: .notice--primary} diff --git a/docs/n0110-unlock/phi-now-what.md b/docs/n0110-unlock/phi-now-what.md new file mode 100644 index 00000000..6ff2b980 --- /dev/null +++ b/docs/n0110-unlock/phi-now-what.md @@ -0,0 +1,32 @@ +--- +title: "Now What (Phi) ?" +--- + +{% include toc title="Table of Contents" %} + +You now have multiple choices. You can: +- Install a custom bootloader and continue using Epsilon >= 16 +- Install a custom firmware + +# Choice I - Install a custom bootloader + +If you wish to continue using Epsilon >= 16 while still being able to install a custom firmware, you can install a custom bootloader : +1. Press 3 +2. Press OK to confirm +3. You should see something like this : +![Phi launch screen](images/screenshots/phi-write.png) + +The "Write flash" stage can take a bit of time. You'll be put back on the main menu after a second, when the flashing is done. + +Press 4, then OK. You should now boot back into Epsilon. + +If you don't boot back into Epsilon, please join the [Omega Discord](https://discord.gg/X2TWhh9) and ask for help. +{: .notice--warning} + +### Continue to [Final checks](final-checks) +{: .notice--primary} + +## Choice II - Install a CFW + +Go to [choose a CFW](choose-a-cfw) +{: .notice--primary} diff --git a/docs/n0110-unlock/phi.md b/docs/n0110-unlock/phi.md new file mode 100644 index 00000000..94fbe595 --- /dev/null +++ b/docs/n0110-unlock/phi.md @@ -0,0 +1,65 @@ +--- +title: "Installing Phi" +--- + +{% include toc title="Table of Contents" %} + +### Required Reading + +Phi has multiple entrypoints (method of launching). +The exploit used at the moment is compatible with Epsilon 16.3.0 trough 18.2.0. + +### What You Need + +- A chromium-based browser (we recommend using [chromium](https://www.chromium.org/chromium-projects/) directly) +- The [Phi Installer](https://phi.getomega.dev/) + +### Section I - Installing Phi + +1. Power on your device +2. Plug your device to a computer +3. Open Chromium +4. Go to the [Phi Installer](https://phi.getomega.dev/) +5. Click "Connect to Numworks calculator" and select your calculator +6. The calculator will show a message reading "Third party applications" +7. Press Back + +### Section II - Running Phi + +1. Scroll down in the apps list and select "Phi Installer" +2. Press OK +3. The screen should blink and you should see a screen similar to this one: + +![Phi launch screen](images/screenshots/phi-launch.png) + +If the screen turns Yellow, the version or Epsilon you're using isn't yet supported. You may need to [change your version](check-version-change-eligibility). +{: .notice--info} +If the screen turns Red, the exploit failed. Reset the calculator and try again. If it doesn't work the second time, please join the [Omega Discord](https://discord.gg/X2TWhh9). +{: .notice--warning} + +### Section III - Unlocking the calculator + +We are now going to unlock the internal flash and remove the write protection: + +1. Press 1 to unlock the internal flash. +2. Press OK to confirm +3. You should see something like this : +![Phi unlock screen](images/screenshots/phi-unlock.png) + +The "Reset RDP" stage can take a bit of time. You'll be put back on the main menu after a second, when the unlocking is done. + +### Section IV - Erasing the internal flash + +Removing the write protection should have erased the internal flash, but we are going to do it again, just to be sure: + +1. Press 2 to reset the internal flash +2. Press OK to confirm +3. You should see something like this : +![Phi erase screen](images/screenshots/phi-erase.png) + +The "Erase flash" stage can take a bit of time. You'll be put back on the main menu after a second, when the erasing is done. + +___ + +### Continue to [Now What (Phi) ?](phi-now-what) +{: .notice--primary} From a1e2d12d9605013b69486aa0393196b2551277dc Mon Sep 17 00:00:00 2001 From: Rathmox Date: Sun, 17 Sep 2023 15:12:16 +0200 Subject: [PATCH 03/51] Add multiple pages --- docs/cfw/choose-a-cfw.md | 13 +++ docs/cfw/install-epsilon-from-softloader.md | 44 ++++++++++ docs/cfw/omega.md | 72 ++++++++++++++++ docs/cfw/upsilon.md | 78 ++++++++++++++++++ docs/n0110-custom/n0110-now-what.md | 31 +++++++ docs/n0110-hardware/n0110-hardware-unlock.md | 24 ++++++ docs/n0110-phi/_category_.json | 8 ++ .../check-version-change-eligibility.md | 41 +++++++++ docs/n0110-phi/images/screenshots/e16bl.png | Bin 0 -> 3237 bytes .../images/screenshots/phi-erase.png | Bin 0 -> 1619 bytes .../images/screenshots/phi-launch.png | Bin 0 -> 3012 bytes .../images/screenshots/phi-unlock.png | Bin 0 -> 1749 bytes .../images/screenshots/phi-write.png | Bin 0 -> 1630 bytes docs/n0110-phi/install-epsilon-18-2-0.md | 53 ++++++++++++ docs/n0110-phi/n0110-is-locked.md | 51 ++++++++++++ docs/n0110-phi/phi-now-what.md | 34 ++++++++ docs/n0110-phi/phi.md | 67 +++++++++++++++ docs/no-custom/restore-stock-firmware.md | 16 ++++ docs/no-custom/what-to-do-locked.md | 24 ++++++ 19 files changed, 556 insertions(+) create mode 100644 docs/cfw/choose-a-cfw.md create mode 100644 docs/cfw/install-epsilon-from-softloader.md create mode 100644 docs/cfw/omega.md create mode 100644 docs/cfw/upsilon.md create mode 100644 docs/n0110-custom/n0110-now-what.md create mode 100644 docs/n0110-hardware/n0110-hardware-unlock.md create mode 100644 docs/n0110-phi/_category_.json create mode 100644 docs/n0110-phi/check-version-change-eligibility.md create mode 100644 docs/n0110-phi/images/screenshots/e16bl.png create mode 100644 docs/n0110-phi/images/screenshots/phi-erase.png create mode 100644 docs/n0110-phi/images/screenshots/phi-launch.png create mode 100644 docs/n0110-phi/images/screenshots/phi-unlock.png create mode 100644 docs/n0110-phi/images/screenshots/phi-write.png create mode 100644 docs/n0110-phi/install-epsilon-18-2-0.md create mode 100644 docs/n0110-phi/n0110-is-locked.md create mode 100644 docs/n0110-phi/phi-now-what.md create mode 100644 docs/n0110-phi/phi.md create mode 100644 docs/no-custom/restore-stock-firmware.md create mode 100644 docs/no-custom/what-to-do-locked.md diff --git a/docs/cfw/choose-a-cfw.md b/docs/cfw/choose-a-cfw.md new file mode 100644 index 00000000..d359be31 --- /dev/null +++ b/docs/cfw/choose-a-cfw.md @@ -0,0 +1,13 @@ +--- +title: "Choose a CFW" +--- + +You need an unlocked calculator. [To unlock it go here](get-started) +{: .notice--info} + +There are multiple CFWs you can install on your calculator, most of them install in the same way. Here are a few of them + +| CFW | Advantages | +|--------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------| +| [Omega](omega) | The most popular CFW for Numworks, forked from Epsilon 15.5.0. It bings back symbolic calculation, allows installing external apps, and adds Python libraries | +| [Upsilon(upsilon)] | Forked from Omega, Upsilon brings more features and conveience compared to Omega, like a LaTeX reader, more storage for Python scripts, and a better bootloader | diff --git a/docs/cfw/install-epsilon-from-softloader.md b/docs/cfw/install-epsilon-from-softloader.md new file mode 100644 index 00000000..08de8a9c --- /dev/null +++ b/docs/cfw/install-epsilon-from-softloader.md @@ -0,0 +1,44 @@ +--- +title: "Install Epsilon from softloader" +--- + +{% include toc title="Table of Contents" %} + +Following this guide may put your calculator at risk. Installing Epsilon on your calculator the wrong way may lock it. **STRICTLY** follow what's said on this page to make sure your calculator is safe +{: .notice--warning} + +The latest Epsilon version may not be safe, check the latest version [for n0110](https://my.numworks.com/firmwares/n0110/stable.json) (Logged in Numworks account requiered). Latest known safe version: **21.2.0** +{: .notice--warning} + +This page is irrelevant if you have an n0100, because you can switch between any CFW and Epsilon without locking your calculator. And the n0100 can't have any custom bootloader. +{: .notice--info} + +### Required Reading + +We will now install Epsilon on one slot of your calculator, assuming you have a bootloader that allows it + +### What You Need + +- A PC with a chromium-based browser (we recommend using [chromium](https://www.chromium.org/chromium-projects/) directly) +- A compatible custom bootloader installed (if you don't know, see [this page](choose-a-cfw)) + +### Section I - Open the bootloader + +If your CFW includes a custom bootloader that allows installing a firmware from it, you should now open the bootloader and make it ready to install anything. Some help can be found on [this page](choose-a-cfw) + +### Section II - Install + +1. Make sure your calculator is in the bootloader, ready to install anything. It **MUST NOT** be in recovery mode (black screen + red led) as this would allow Numworks to lock your calculator. +2. Open [Numworks' Update page](https://numworks.com/update) +3. Follow instructions but if it asks you to do anything on your calculator, don't do it unless it's connecting it to your PC. The website should see version 0.0.0 +4. At the end the installer will get stuck and may even fail, it's because it can't reboot the calculator. Don't worry Epsilon is installed, just press reset and you are good + +Now you have Epsilon with a custom bootloader so your calculator isn't locked. + +Epsilon has normally been installed on both slots. So if you had a CFW, it has been erased, only the bootloader is remaining. To reinstall it you can do it normally from the bootloader or in recovery mode, just make sure you are not installing Epsilon again. + +It's recommended to keep your CFW in Slot A. + +### GG + +You now have Epsilon and your CFW at the same time, Epsilon on one slot, your CFW on the other. You can now switch between them whenever you want, it works differently depending on your CFW but the goal is just to switch between slots. diff --git a/docs/cfw/omega.md b/docs/cfw/omega.md new file mode 100644 index 00000000..915ec25c --- /dev/null +++ b/docs/cfw/omega.md @@ -0,0 +1,72 @@ +--- +title: "Omega" +--- + +{% include toc title="Table of Contents" %} + +You need an unlocked calculator. [To unlock it go here](get-started) +{: .notice--info} + +This page will explain how to install Omega, assuming you have an unlocked calculator + +### What you need + +- A PC with a chromium based browser (we recommend using [chromium](https://www.chromium.org/chromium-projects/) directly) +- An unlocked Numworks calculator + +### Section I - Prepare recovery mode + +if your model is n0110, enter recovery mode by holding "6" and pressing "reset" +if your model is n0100, enter recovery mode by plugging your calculator and pressing reset + +### Section II - Install Omega + +1. Open [Omega website](https://getomega.dev/install) +2. Click "Recovery" and select "STM32 BOOTLOADER" +3. Wait a bit until the calculator shows "Recovery Mode" on the screen +4. If the calculator doesn't get automatically connected, click "Detect Calculator" and select "Numworks Calculator" +5. Now you can click "Install Omega" and in a few seconds Omega should be installed on your calculator. + +### Section III - How to use your new calculator (not for n0100) + +There are new features to your calculator now, you need to know them +There is a new "Slot" system. Your calculator has 2 slots and can store 2 firmwares, they can't run at the same time but by using reset you can switch between them: +- Hold 1 and press reset to start Slot A (containing Omega by default) +- Hold 2 and press reset to start Slot B (may be empty or contains Epsilon) +- Hold 4 and press reset to open the bootloader, you will be able to see which slot contain which firmware and also be able to install any firmware without locking the calculator. +- You can’t start another firmware if you enable exam mode, you have to disable it to do so + +#### Section IV - How to update ? + +To update Omega, open the bootloader by holding 4 and pressing reset, plug your calculator in your PC, go to the Omega website, and install it normally. + +To update the bootloader, access recovery mode by pressing reset while holding 6, plug the calculator in your PC, go to the Omega website, connect your calculator in Recovery mode and install Omega this way. + +### Optional features + +Now that Omega is installed, there are a few steps you can take: + +#### External apps (not for n0100) + +Omega support external apps, there are a few but they are useful. Here is how to install them: +1. Open [External apps page](https://external.getomega.dev/) +2. Select the apps you want to install +3. Add any file you may need to use with your apps +4. Add a wallpaper if you want +5. Enable icons support to have good looking icons on your apps +6. Click install + +#### Installing Epsilon (not for n0100) + +You can install Epsilon on the bootloader without locking the calculator. + +See [Install Epsilon from softloader](install-epsilon-from-softloader) +{: .notice--primary} + +#### Create your own version + +Omega is open-source, you can get the code and use it however you want. You will find everything on [Omega's github repo](https://github.com/Omega-Numworks/Omega) + +### Finished + +You now have Omega installed on your calculator. You can add python scripts in the same way as before from [Numworks' workshop](https://my.numworks.com/python/) diff --git a/docs/cfw/upsilon.md b/docs/cfw/upsilon.md new file mode 100644 index 00000000..bc200a56 --- /dev/null +++ b/docs/cfw/upsilon.md @@ -0,0 +1,78 @@ +--- +title: "Upsilon" +--- + +{% include toc title="Table of Contents" %} + +You need an unlocked calculator. [To unlock it go here](get-started) +{: .notice--info} + +This page will explain how to install Upsilon, assuming you have an unlocked calculator + +### What you need + +- A PC with a chromium based browser (we recommend using [chromium](https://www.chromium.org/chromium-projects/) directly) +- An unlocked Numworks calculator + +### Section I - Prepare recovery mode + +if your model is n0110, enter recovery mode by holding "6" and pressing "reset" +if your model is n0100, enter recovery mode by plugging your calculator and pressing reset + +### Section II - Install Upsilon + +1. Open [Upsilon website](https://getupsilon.web.app/install) +2. Click "Recovery" and select "STM32 BOOTLOADER" +3. Wait a bit until the calculator shows "Recovery Mode" on the screen +4. If the calculator doesn't get automatically connected, click "Connect" and select "Numworks Calculator" +5. Select your settings like the theme. For the slot, if you don't know which one to choose, select "A" +6. Now you can click "Install Upsilon" and in a few seconds Upsilon should be installed on your calculator. + +Upsilon tends to crash when you start it and the calculator is connected to a PC. Disconnect it before starting +{: .notice--info} + +### Section III - How to use your new calculator (not for n0100) + +There are new features to your calculator now, you need to know them +There is a new "Slot" system. Your calculator has 2 slots and can store 2 firmwares, they can't run at the same time but by using reset you can switch between them. +You now have a menu on boot, it allows you do to a lot. You can acces it just by pressing "reset". + +In this menu you can: +- Choose your slot. There are 3, 2 of them can recieve a standard firmware, you can select them by pressing 1 for Slot A or 3 for Slot B. The 3rd, selected by pressing 2, is meant for very specific use cases, most people don't need it. +- Open Install mode. There are 2 modes: Flash Slots, that allows you to safely install any other firmware on your calculator, and Flash Bootloader, that allows you to update the bootloader by getting you to recovery mode (it may not work, to access recovery mode you can still use 6 + reset) + +Also note that once plugged into the PC, (unless in recovery mode) your calculator will be named "Upsilon Calculator" or "Upsilon Bootloader" instead of "NumWorks Calculator". + +#### Section IV - How to update ? + +To update Upsilon, open Install Mode and Flash Slots (see above how to), plug your calculator in your PC, go to the Upsilon website, and install it normally. + +To update the bootloader, access recovery mode by pressing reset while holding 6, plug the calculator in your PC, go to the Upsilon website, connect your calculator in Recovery mode and install Upsilon this way. + +### Optional features + +Now that Upsilon is installed, there are a few steps you can take: + +#### External apps (not for n0100) + +Upsilon support external apps, there are a few but they are useful. Here is how to install them: +1. Open [External apps page](https://upsilonnumworks.github.io/Upsilon-External/) +2. Select the apps you want to install +3. Add any file you may need to use with your apps +4. Add a wallpaper if you want +5. Click install + +#### Installing Epsilon (not for n0100) + +You can install Epsilon on the bootloader without locking the calculator. + +See [Install Epsilon from softloader](install-epsilon-from-softloader) +{: .notice--primary} + +#### Create your own version + +Upsilon is open-source, you can get the code and use it however you want. You will find everything on [Upsilon's github repo](https://github.com/UpsilonNumworks/Upsilon) + +### Finished + +You now have Upsilon installed on your calculator. You can add python scripts in the same way as before from [Numworks' workshop](https://my.numworks.com/python/) diff --git a/docs/n0110-custom/n0110-now-what.md b/docs/n0110-custom/n0110-now-what.md new file mode 100644 index 00000000..3239250f --- /dev/null +++ b/docs/n0110-custom/n0110-now-what.md @@ -0,0 +1,31 @@ +--- +title: "Now What (N0110) ?" +--- + +Your Numworks doesn't need to be unlocked, yay! + +You now have multiple choices. You can: +- Install a patched bootloader and then install Epsilon >= 16 +- Install a custom firmware + +### Choice I - Install a patched bootloader + +If you wish to use Epsilon >= 16 while still being able to install a custom firmware, +you can install a patched bootloader : +1. Download [this file](https://phi.getomega.dev/install/bootloader.bin) +2. Open [this page](https://ti-planet.github.io/webdfu_numworks/n0110/) in a chromium-based browser +3. While holding the 6 key, press the reset button on the back of your device +4. Plug your calculator to your computer +5. Click "Connect to the Numworks calculator" and select the STM32 bootloader. +6. Click "Chose file" and pick the bootloader.bin that you just downloaded +7. Click Flash internal + +You can now hold 4 and reset. You'll boot into the soft bootloader. From there, you can install Epsilon from [Numworks' website](https://my.numworks.com/devices/upgrade). + +Continue to [Final checks](final-checks) +{: .notice--primary} + +### Choice II - Install a CFW + +Go to [choose a CFW](choose-a-cfw) +{: .notice--primary} diff --git a/docs/n0110-hardware/n0110-hardware-unlock.md b/docs/n0110-hardware/n0110-hardware-unlock.md new file mode 100644 index 00000000..57e9a746 --- /dev/null +++ b/docs/n0110-hardware/n0110-hardware-unlock.md @@ -0,0 +1,24 @@ +--- +title: "Hardware unlock (N0110)" +--- + +{% include toc title="Sommaire" %} + +### Requiered reading + +The hardware unlock way requieres special tools. + +The goal is to force recovery mode to allow installation, your calculator should show a black screen and a red LED. + +### Select a method + +There are multiple methods. + +We recommend [this post](https://tiplanet.org/forum/viewtopic.php?f=113&t=25191&p=263495), it is very complete and will guide you very well. + +If you have another way to get Recovery mode, you can follow it instead. **We are not responsible for anything that goes wrong with your device** + +___ + +When your calculator is in Recovery mode, continue to [Now What ? ](n0110-now-what) +{: .notice--primary} diff --git a/docs/n0110-phi/_category_.json b/docs/n0110-phi/_category_.json new file mode 100644 index 00000000..fa207943 --- /dev/null +++ b/docs/n0110-phi/_category_.json @@ -0,0 +1,8 @@ +{ + "label": "Unlock N0110", + "position": 2, + "link": { + "type": "generated-index", + "description": "bek" + } +} diff --git a/docs/n0110-phi/check-version-change-eligibility.md b/docs/n0110-phi/check-version-change-eligibility.md new file mode 100644 index 00000000..5a901be0 --- /dev/null +++ b/docs/n0110-phi/check-version-change-eligibility.md @@ -0,0 +1,41 @@ +--- +title: "Check version change eligibility" +sidebar_position: 2 +--- + +### Introduction + +You may need to change Epsilon's version to unlock your calculator, we usually install Epsilon 18.2.0. There are some cases where you can install Epsilon 18.2.0 and some you can't, this page explains how to know if you are eligible or not. + +### If you have Epsilon 15 or lower + +You don't need to change your version, just go to [Now What ?](n0110-now-what) + +### If you have Epsilon 16 to 18.2.0 (but not 16.4.3) + +You don't need to change your version, just go to [Phi](phi) + +### If you have Epsilon 16.4.3 or 18.2.3 + +You are eligible, you can continue normally + +### If you have Epsilon 19 or higher + +It depends on the version you had before updating to Epsilon 19 and over. + +- If you had 15 or lower, Omega, or Upsilon: You can't change your version +- If you had 16 to 18.2.3 (but not 16.4.3): You can change your version +- If you had 16.4.3, 19 or higher: You can't change your version + +### And If you don't know + +Don't worry, trying to change your version won't break your calculator. +If you were not eligible, after the process, the calculator will be stuck on Numworks recovery screen and you will be able to update from Numworks website and your calculator will work normally. + +___ + +:::info + +If you are not eligible, you need to use an [Alternate Method](n0110-is-locked#alternate-methods) + +::: diff --git a/docs/n0110-phi/images/screenshots/e16bl.png b/docs/n0110-phi/images/screenshots/e16bl.png new file mode 100644 index 0000000000000000000000000000000000000000..35ddb3f11b268148e2117d0edf89ba9b261626a9 GIT binary patch literal 3237 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 literal 0 HcmV?d00001 diff --git a/docs/n0110-phi/images/screenshots/phi-launch.png b/docs/n0110-phi/images/screenshots/phi-launch.png new file mode 100644 index 0000000000000000000000000000000000000000..8060c33670500b8c3d9ea7e35db7db8f2eb4fdbb GIT binary patch literal 3012 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 literal 0 HcmV?d00001 diff --git a/docs/n0110-phi/images/screenshots/phi-unlock.png b/docs/n0110-phi/images/screenshots/phi-unlock.png new file mode 100644 index 0000000000000000000000000000000000000000..ab8e6a74a745c458d5142034c988f14757a10a8c GIT binary patch literal 1749 zcmeAS@N?(olHy`uVBq!ia0y~yU~~YoKX9-C$wJ+|*+7AoOlRi+PiJR^f};Gi%$!sP z291fe6Ky>XJ4m$MU)B|*CHqF<(S(IoTNSh(tq9d{Y7Nld@+zU|rMyX|M^KCm>-DB) z`|eP7@$^{P7*@v*>_;x1^t|Zm^+!*0OUK8)$8z_6-+&?bBKxEer1~;TEzliv9SbxAvf9fUgHRgI3lFd5fI?c8hXRy!n(;xiq6kH<^OMZJ^jSe z39Fgh`dF_la4h@#p#H<|?O}yQhrGGe8}Er9|0%)xtE@5XaN)jw+2y57Eb|++_dZ^4 z+BnnylC-RD8H>xd#_rdB%ib_fw?1%Tvf}Jb+N_zJN0mO*x!s?_&X(VJVb=BS-z@#) z8+5*E)iTS-FeR&=iu+z!USEFy-`dRY@7XOAiYEBSbgcwN3tN)6y9>i>hBplN(yz>3 z1{C2e@Q5sCVBi)8VMc~ob0mO*>?NMQuI$g4___EsCSFi@#lXOF$-KHxb(uj1m)iYTZ27S(yT5+bpLutF z74P>5a+OF_j6dwZ@5}e>z(S+73T!SbO`LLN4{noLeC=`k=JhK#=(?5PDPpMz%L%h- z?CXnLw4ugiUHvn|uI}~nda@4F-G83`dGn*k;TRHIqwO72}UQRev5tK<458tbuEqV zzfScz_4Q2(o5gOC_5a`6<==PS&vnjxb>U)Vox@Yr53C1P_rs!#V z_s?F$#LRR5SALWhN z*Y8)W&%BkJQ7K+=7xjNA|t?%aH9hW9{NKcRr=x`MC6HU4ue{di%3r^|Z53f7r<_&DGQWUq7Yl z``+>t+t1hj75wymaMP~#=Txr36+4B!O!VrnecQfgib9=%Mnm{+`Gj}tZSS!r{r{?Q zB=woiq0s+V1oY}TYrZ`3jQ;!gU6uY{H~rahJ@>qB&zG83|Ft&r!MEvg@ptU?dOp0~ z!cy^q z#kF_W3oy>fT6%i*JbT~IJNGFx=r1m7Jg^9$7%1gd@)jKVcU5kG z`Rg}7=LO#8pU$h$;GMw0$RglCAwjtbASY14Az+_S$2BYh6bH*7bd7)mwzz&!w2!fM Xktu&B$DT#N0*}Gd)z4*}Q$iB}fFo?H literal 0 HcmV?d00001 diff --git a/docs/n0110-phi/images/screenshots/phi-write.png b/docs/n0110-phi/images/screenshots/phi-write.png new file mode 100644 index 0000000000000000000000000000000000000000..5bd2dc14d6950b574215db529459a810e8c61434 GIT binary patch literal 1630 zcmeAS@N?(olHy`uVBq!ia0y~yU~~YoKX9-C$wJ+|*+7AoOlRi+PiJR^f};Gi%$!sP z291fe6Ky>XJ4m$MU)B|*CHqF<(S(IoTNSh(tq9d{Y7Nld@+zU|rMyX|M^KCm>-DB) z`|eP7@$^{P7*@v*>_;x1^t|Zm^+!*0OUK8)$8z_6-+&?bBKxEer1~;TEzliv9SbxAvf9fUgHRgI3lFd5fI?c8hXRy!n(;xiq6kH<^OMZJ^jSe z39Fgh`dF_la4h@#p#H<|?O}yQhrGGe8}Er9|0%)xtE@5XaN)jw+2y57Eb|++_dZ^4 z+BnnylC-RD8H>xd#_rdB%ib_fw?1%Tvf}Jb+N_zJN0mO*x!s?_&X(VJVb=BS-z@#) z8+5*E)iTS-FeR&=iu+z!USEFy-`dRY@7XOAiYEBSbgcwN3tN)6y9>i>hBplN(yz>3 z1{C2e@Q5sCVBi)8VMc~ob0mO*>?NMQuI$g4__+jmDkuGZ!oa{1?djqeQgQ3;-Me9r z6+{{WXFUDA-{{_%*059l98*-P1eDx$+T`ZeNamj>3`G#M-^Y_`6SHH43cjoKc zMO*gG%)bA(w6XKwU(VAWF^`r^*5b4C&#bjRsy|QS&%Enma<5*0nQZ=VzwTbkotGX7 zuiv)sOHp-h*V?=0zw)K$=4A_~ytP=p-+secmK|1Z);}yukDd{kW)z&U%4g-v1KCDK zGmjnm82rp|>5sQos)wI4S3I4p?Hg5YlUU@_`t@kr@f|X54E|kFxu>FK56=6#^w3{j z;Va7z$!NXqViwl2QEPBtKIhWz-7l9+u6a@!b-(r;>$>zNDb9$OTeWPTmDcWju-xg+ z(FyF`{r0S3`yO-UNF1N9H^ZmDxj)^B{ji{C&e;_w;ETXv2!9{u~x zP<`#b@zH(V@u$z zCTW|ETAH44wfdUH$G7>PGvGPoyi*?s5BR4cvb+41*<*Dv0m^HcP;*T31L*#!=$8ZbP0l+XkKVJlB2 literal 0 HcmV?d00001 diff --git a/docs/n0110-phi/install-epsilon-18-2-0.md b/docs/n0110-phi/install-epsilon-18-2-0.md new file mode 100644 index 00000000..7a8517e4 --- /dev/null +++ b/docs/n0110-phi/install-epsilon-18-2-0.md @@ -0,0 +1,53 @@ +--- +title: "Install Epsilon 18.2.0" +sidebar_position: 3 +--- + +### Required Reading + +We will now install Epsilon 18.2.0 + +:::info + +If you are not sure if you can install Epsilon 18.2.0, go check [this page](check-version-change-eligibility) + +::: + + +### What You Need + +- A chromium-based browser (we recommend using [chromium](https://www.chromium.org/chromium-projects/) directly) +- Epsilon 18.2.0 `18-2-0.dfu` (since Numworks deleted this file from their website because of Phi, we cannot give you a link here) +- Python ([Link for Windows and macOS](https://www.python.org/)) +- This Python script: [Linux and macOS version](images/unpack.py), [Windows version](images/unpack-win.py) + +### Section I - Extracting the external binary + +Since Epsilon is now proprietary, we can't distribute the external flash image directly. +We thus have to make you extract it. + +1. Install Python on your platform +2. Download Epsilon 18.2.0 +3. Create a new folder +4. Put the Python script in that folder +5. Put 18-2-0.dfu in that folder +6. Run the script + +You should now have an internal.bin and an external.bin file + +### Section II - Install + +1. Open [WebDFU](https://ti-planet.github.io/webdfu_numworks/n0110/) in a chromium-based browser +2. Hold the 6 key on your numworks and press the reset button +3. You should now see the Epsilon bootloader interface +4. Select `external.bin` in WebDFU +5. Click "flash external" +6. Once flashing is done, press the reset button on your Numworks + +You should now see version 18.2.0 in Settings > About. + +:::warning + +If it is not the case or your Numworks doesn't boot, you can only use an [alternate method](n0110-is-locked#alternate-methods). + +::: diff --git a/docs/n0110-phi/n0110-is-locked.md b/docs/n0110-phi/n0110-is-locked.md new file mode 100644 index 00000000..84ab36fb --- /dev/null +++ b/docs/n0110-phi/n0110-is-locked.md @@ -0,0 +1,51 @@ +--- +title: "Is your calculator locked ? (N0110)" +sidebar_position: 1 +--- + +This page will tell you if you need to unlock your calculator and how. + +#### Section I - Epsilon Version check + +1. Power on your device +2. Go in the settings app +3. Go in "about" +4. Look at the "Software version" or "Epsilon version" field. +5. This is your Epsilon version. + +#### Section II - Flash lock check + +1. Press the "6" key +2. While pressing the "6" key, press the reset button at the back of the device. + +If you see a screen like this one, you can proceed : +![Epsilon 16 bootloader](images/screenshots/e16bl.png) + +If the screen stays black and the LED turns red, STOP - your calculator is already unlocked! Continue from [here](n0110-now-what). +{: .notice--warning} + +Press the reset button at the back of the calculator to return to the firmware. + +#### Section III - Select a Method + +Use the version table below to select a method. A few things to note: + + The version table below is *inclusive*. For example, "from 16.3.0 to 18.0.0" includes 16.3.0, 18.0.0, and all versions in between. + + Version 16.4.3 does not follow this rule. + +| System Version | What to do | +|----------------|----------------------------------------------------------------------| +| 11.2.0-16.2.0 | [Now what ?](n0110-now-what) | +| 16.3.0-16.4.2 | [Phi](phi) | +| 16.4.3 | [Install Epsilon 18.2.0](install-epsilon-18-2-0) | +| 17.0.0-18.2.0 | [Phi](phi) | +| 18.2.3 | [Install Epsilon 18.2.0](install-epsilon-18-2-0) | +| 19.0.0-21.2.0 | [Check version change eligibility](check-version-change-eligibility) | + +--- +#### Alternate Methods + +If possible, you should follow one of the software methods listed above. + +Otherwise, methods that work on all versions are available, but require additional hardware: + +1. [Hardware Unlock](n0110-hardware-unlock) - requires special tools diff --git a/docs/n0110-phi/phi-now-what.md b/docs/n0110-phi/phi-now-what.md new file mode 100644 index 00000000..65bc18ac --- /dev/null +++ b/docs/n0110-phi/phi-now-what.md @@ -0,0 +1,34 @@ +--- +title: "Now What (Phi) ?" +sidebar_position: 5 +--- + +You now have multiple choices. You can: +- Install a custom bootloader and continue using Epsilon >= 16 +- Install a custom firmware + +# Choice I - Install a custom bootloader + +If you wish to continue using Epsilon >= 16 while still being able to install a custom firmware, you can install a custom bootloader : +1. Press 3 +2. Press OK to confirm +3. You should see something like this : +![Phi launch screen](images/screenshots/phi-write.png) + +The "Write flash" stage can take a bit of time. You'll be put back on the main menu after a second, when the flashing is done. + +Press 4, then OK. You should now boot back into Epsilon. + +:::warning + +If you don't boot back into Epsilon, please join the [Omega Discord](https://discord.gg/X2TWhh9) and ask for help. + +::: + +### Continue to [Final checks](final-checks) +{: .notice--primary} + +## Choice II - Install a CFW + +Go to [choose a CFW](choose-a-cfw) +{: .notice--primary} diff --git a/docs/n0110-phi/phi.md b/docs/n0110-phi/phi.md new file mode 100644 index 00000000..94cdc56d --- /dev/null +++ b/docs/n0110-phi/phi.md @@ -0,0 +1,67 @@ +--- +title: "Installing Phi" +sidebar_position: 4 +--- + +### Required Reading + +Phi has multiple entrypoints (method of launching). +The exploit used at the moment is compatible with Epsilon 16.3.0 trough 18.2.0. + +### What You Need + +- A chromium-based browser (we recommend using [chromium](https://www.chromium.org/chromium-projects/) directly) +- The [Phi Installer](https://phi.getomega.dev/) + +### Section I - Installing Phi + +1. Power on your device +2. Plug your device to a computer +3. Open Chromium +4. Go to the [Phi Installer](https://phi.getomega.dev/) +5. Click "Connect to Numworks calculator" and select your calculator +6. The calculator will show a message reading "Third party applications" +7. Press Back + +### Section II - Running Phi + +1. Scroll down in the apps list and select "Phi Installer" +2. Press OK +3. The screen should blink and you should see a screen similar to this one: + +![Phi launch screen](images/screenshots/phi-launch.png) + +:::info + +If the screen turns Yellow, the version or Epsilon you're using isn't yet supported. You may need to [change your version](check-version-change-eligibility). + +::: + +:::warning + +If the screen turns Red, the exploit failed. Reset the calculator and try again. If it doesn't work the second time, please join the [Omega Discord](https://discord.gg/X2TWhh9). + +::: + +### Section III - Unlocking the calculator + +We are now going to unlock the internal flash and remove the write protection: + +1. Press 1 to unlock the internal flash. +2. Press OK to confirm +3. You should see something like this : +![Phi unlock screen](images/screenshots/phi-unlock.png) + +The "Reset RDP" stage can take a bit of time. You'll be put back on the main menu after a second, when the unlocking is done. + +### Section IV - Erasing the internal flash + +Removing the write protection should have erased the internal flash, but we are going to do it again, just to be sure: + +1. Press 2 to reset the internal flash +2. Press OK to confirm +3. You should see something like this : +![Phi erase screen](images/screenshots/phi-erase.png) + +The "Erase flash" stage can take a bit of time. You'll be put back on the main menu after a second, when the erasing is done. + diff --git a/docs/no-custom/restore-stock-firmware.md b/docs/no-custom/restore-stock-firmware.md new file mode 100644 index 00000000..b9ad1000 --- /dev/null +++ b/docs/no-custom/restore-stock-firmware.md @@ -0,0 +1,16 @@ +--- +title: "Restore Stock Firmware" +--- + +Restoring your calculator to stock firmware **WILL LOCK IT** and you won't be able to install any CFW on it ever again, unless you use a hardware method to unlock it again. We highly advise using the bootloader from any compatible CFW and [install Epsilon from softloader](install-epsilon-from-softloader) to still use the latest versions without locking your calculator. +{: .notice--warning} + + +This page will tell you how to go back to a fully stock firmware and therefore locking your calculator. + +1. Open [Numworks' restore page](https://numworks.com/rescue) +2. Put your calculator in Recovery Mode holding 6 and pressing "reset" at the same time +3. Plug your calculator in your computer +4. follow the instructions to restore stock firmware. + +You now have a fully stock Numworks calculator. diff --git a/docs/no-custom/what-to-do-locked.md b/docs/no-custom/what-to-do-locked.md new file mode 100644 index 00000000..de3f4bfa --- /dev/null +++ b/docs/no-custom/what-to-do-locked.md @@ -0,0 +1,24 @@ +--- +title: "What to do on a locked calculator ?" +--- + +### Introduction + +If you are here it's probably because your calculator can't be unlocked or you don't wont to deeply modify it. There is no shame about that. +There are still some things that Epsilon allows you to do. + +### Python scripts + +Still good to mention, you can get python games on your calculator, you can find them on [Numworks' Workshop](https://my.numworks.com/python/). To install them just follow the instructions + +### External apps + +Since Epsilon 16 for n0110, or Epsilon 20 for n0120, you can install custom apps, they aren't as powerful as Omega ones but they are good. Find them on [Nwagyu](https://www.nwagyu.com/). +There is [a page explaining how to install the apps](https://www.nwagyu.com/pages/how-to/) with also a way to have more space for apps. +Also when you enable exam mode or press "reset" they will be disabled + +### Userland + +Epsilon is still partially open-source, you can modify the code to create your own version and install it, however it's userland only and if you reset it will be removed and you are back to stock. You will also have a popup telling you that you are running a modified software. +Note that since Epsilon 16, sharing a modified version is illegal. You should never share the version you created yourself. +[Numworks' instructions](https://www.numworks.com/resources/engineering/software/build/) From c1efd9edb97a684291c288be55f0d8184c0e3ba2 Mon Sep 17 00:00:00 2001 From: Rathmox Date: Sun, 17 Sep 2023 15:18:14 +0200 Subject: [PATCH 04/51] Some pages fixes (looks like git messed up the files changed) --- docs/cfw/install-epsilon-from-softloader.md | 15 +- docs/intro.md | 47 ------ docs/n0110-hardware/n0110-hardware-unlock.md | 6 - docs/n0110-phi/install-epsilon-18-2-0.md | 2 +- docs/n0110-phi/n0110-is-locked.md | 5 +- docs/n0110-phi/phi-now-what.md | 2 +- docs/n0110-phi/phi.md | 2 +- docs/n0110-unlock/_category_.json | 8 - .../check-version-change-eligibility.md | 40 ----- .../n0110-unlock/images/screenshots/e16bl.png | Bin 3237 -> 0 bytes .../images/screenshots/phi-erase.png | Bin 1619 -> 0 bytes .../images/screenshots/phi-launch.png | Bin 3012 -> 0 bytes .../images/screenshots/phi-unlock.png | Bin 1749 -> 0 bytes .../images/screenshots/phi-write.png | Bin 1630 -> 0 bytes docs/n0110-unlock/install-epsilon-18-2-0.md | 53 ------- docs/n0110-unlock/n0110-hardware-unlock.md | 24 --- docs/n0110-unlock/n0110-is-locked.md | 52 ------ docs/n0110-unlock/n0110-now-what.md | 33 ---- docs/n0110-unlock/phi-now-what.md | 32 ---- docs/n0110-unlock/phi.md | 65 -------- docs/tutorial-basics/_category_.json | 8 - docs/tutorial-basics/congratulations.md | 23 --- docs/tutorial-basics/create-a-blog-post.md | 34 ---- docs/tutorial-basics/create-a-document.md | 57 ------- docs/tutorial-basics/create-a-page.md | 43 ----- docs/tutorial-basics/deploy-your-site.md | 31 ---- docs/tutorial-basics/markdown-features.mdx | 150 ------------------ docs/tutorial-extras/_category_.json | 7 - .../img/docsVersionDropdown.png | Bin 25427 -> 0 bytes docs/tutorial-extras/img/localeDropdown.png | Bin 27841 -> 0 bytes docs/tutorial-extras/manage-docs-versions.md | 55 ------- docs/tutorial-extras/translate-your-site.md | 88 ---------- 32 files changed, 19 insertions(+), 863 deletions(-) delete mode 100644 docs/intro.md delete mode 100644 docs/n0110-unlock/_category_.json delete mode 100644 docs/n0110-unlock/check-version-change-eligibility.md delete mode 100644 docs/n0110-unlock/images/screenshots/e16bl.png delete mode 100644 docs/n0110-unlock/images/screenshots/phi-erase.png delete mode 100644 docs/n0110-unlock/images/screenshots/phi-launch.png delete mode 100644 docs/n0110-unlock/images/screenshots/phi-unlock.png delete mode 100644 docs/n0110-unlock/images/screenshots/phi-write.png delete mode 100644 docs/n0110-unlock/install-epsilon-18-2-0.md delete mode 100644 docs/n0110-unlock/n0110-hardware-unlock.md delete mode 100644 docs/n0110-unlock/n0110-is-locked.md delete mode 100644 docs/n0110-unlock/n0110-now-what.md delete mode 100644 docs/n0110-unlock/phi-now-what.md delete mode 100644 docs/n0110-unlock/phi.md delete mode 100644 docs/tutorial-basics/_category_.json delete mode 100644 docs/tutorial-basics/congratulations.md delete mode 100644 docs/tutorial-basics/create-a-blog-post.md delete mode 100644 docs/tutorial-basics/create-a-document.md delete mode 100644 docs/tutorial-basics/create-a-page.md delete mode 100644 docs/tutorial-basics/deploy-your-site.md delete mode 100644 docs/tutorial-basics/markdown-features.mdx delete mode 100644 docs/tutorial-extras/_category_.json delete mode 100644 docs/tutorial-extras/img/docsVersionDropdown.png delete mode 100644 docs/tutorial-extras/img/localeDropdown.png delete mode 100644 docs/tutorial-extras/manage-docs-versions.md delete mode 100644 docs/tutorial-extras/translate-your-site.md diff --git a/docs/cfw/install-epsilon-from-softloader.md b/docs/cfw/install-epsilon-from-softloader.md index 08de8a9c..8b136cb6 100644 --- a/docs/cfw/install-epsilon-from-softloader.md +++ b/docs/cfw/install-epsilon-from-softloader.md @@ -4,14 +4,23 @@ title: "Install Epsilon from softloader" {% include toc title="Table of Contents" %} +:::danger + Following this guide may put your calculator at risk. Installing Epsilon on your calculator the wrong way may lock it. **STRICTLY** follow what's said on this page to make sure your calculator is safe -{: .notice--warning} + +::: + +:::caution The latest Epsilon version may not be safe, check the latest version [for n0110](https://my.numworks.com/firmwares/n0110/stable.json) (Logged in Numworks account requiered). Latest known safe version: **21.2.0** -{: .notice--warning} + +::: + +:::info This page is irrelevant if you have an n0100, because you can switch between any CFW and Epsilon without locking your calculator. And the n0100 can't have any custom bootloader. -{: .notice--info} + +::: ### Required Reading diff --git a/docs/intro.md b/docs/intro.md deleted file mode 100644 index 8a2e69d9..00000000 --- a/docs/intro.md +++ /dev/null @@ -1,47 +0,0 @@ ---- -sidebar_position: 1 ---- - -# Tutorial Intro - -Let's discover **Docusaurus in less than 5 minutes**. - -## Getting Started - -Get started by **creating a new site**. - -Or **try Docusaurus immediately** with **[docusaurus.new](https://docusaurus.new)**. - -### What you'll need - -- [Node.js](https://nodejs.org/en/download/) version 16.14 or above: - - When installing Node.js, you are recommended to check all checkboxes related to dependencies. - -## Generate a new site - -Generate a new Docusaurus site using the **classic template**. - -The classic template will automatically be added to your project after you run the command: - -```bash -npm init docusaurus@latest my-website classic -``` - -You can type this command into Command Prompt, Powershell, Terminal, or any other integrated terminal of your code editor. - -The command also installs all necessary dependencies you need to run Docusaurus. - -## Start your site - -Run the development server: - -```bash -cd my-website -npm run start -``` - -The `cd` command changes the directory you're working with. In order to work with your newly created Docusaurus site, you'll need to navigate the terminal there. - -The `npm run start` command builds your website locally and serves it through a development server, ready for you to view at http://localhost:3000/. - -Open `docs/intro.md` (this page) and edit some lines: the site **reloads automatically** and displays your changes. diff --git a/docs/n0110-hardware/n0110-hardware-unlock.md b/docs/n0110-hardware/n0110-hardware-unlock.md index 57e9a746..493d8d8f 100644 --- a/docs/n0110-hardware/n0110-hardware-unlock.md +++ b/docs/n0110-hardware/n0110-hardware-unlock.md @@ -2,8 +2,6 @@ title: "Hardware unlock (N0110)" --- -{% include toc title="Sommaire" %} - ### Requiered reading The hardware unlock way requieres special tools. @@ -18,7 +16,3 @@ We recommend [this post](https://tiplanet.org/forum/viewtopic.php?f=113&t=25191& If you have another way to get Recovery mode, you can follow it instead. **We are not responsible for anything that goes wrong with your device** -___ - -When your calculator is in Recovery mode, continue to [Now What ? ](n0110-now-what) -{: .notice--primary} diff --git a/docs/n0110-phi/install-epsilon-18-2-0.md b/docs/n0110-phi/install-epsilon-18-2-0.md index 7a8517e4..3fac42b7 100644 --- a/docs/n0110-phi/install-epsilon-18-2-0.md +++ b/docs/n0110-phi/install-epsilon-18-2-0.md @@ -46,7 +46,7 @@ You should now have an internal.bin and an external.bin file You should now see version 18.2.0 in Settings > About. -:::warning +:::caution If it is not the case or your Numworks doesn't boot, you can only use an [alternate method](n0110-is-locked#alternate-methods). diff --git a/docs/n0110-phi/n0110-is-locked.md b/docs/n0110-phi/n0110-is-locked.md index 84ab36fb..f1856acb 100644 --- a/docs/n0110-phi/n0110-is-locked.md +++ b/docs/n0110-phi/n0110-is-locked.md @@ -21,8 +21,11 @@ This page will tell you if you need to unlock your calculator and how. If you see a screen like this one, you can proceed : ![Epsilon 16 bootloader](images/screenshots/e16bl.png) +:::caution + If the screen stays black and the LED turns red, STOP - your calculator is already unlocked! Continue from [here](n0110-now-what). -{: .notice--warning} + +::: Press the reset button at the back of the calculator to return to the firmware. diff --git a/docs/n0110-phi/phi-now-what.md b/docs/n0110-phi/phi-now-what.md index 65bc18ac..cde23843 100644 --- a/docs/n0110-phi/phi-now-what.md +++ b/docs/n0110-phi/phi-now-what.md @@ -19,7 +19,7 @@ The "Write flash" stage can take a bit of time. You'll be put back on the main m Press 4, then OK. You should now boot back into Epsilon. -:::warning +:::caution If you don't boot back into Epsilon, please join the [Omega Discord](https://discord.gg/X2TWhh9) and ask for help. diff --git a/docs/n0110-phi/phi.md b/docs/n0110-phi/phi.md index 94cdc56d..116caef5 100644 --- a/docs/n0110-phi/phi.md +++ b/docs/n0110-phi/phi.md @@ -37,7 +37,7 @@ If the screen turns Yellow, the version or Epsilon you're using isn't yet suppor ::: -:::warning +:::caution If the screen turns Red, the exploit failed. Reset the calculator and try again. If it doesn't work the second time, please join the [Omega Discord](https://discord.gg/X2TWhh9). diff --git a/docs/n0110-unlock/_category_.json b/docs/n0110-unlock/_category_.json deleted file mode 100644 index fa207943..00000000 --- a/docs/n0110-unlock/_category_.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "label": "Unlock N0110", - "position": 2, - "link": { - "type": "generated-index", - "description": "bek" - } -} diff --git a/docs/n0110-unlock/check-version-change-eligibility.md b/docs/n0110-unlock/check-version-change-eligibility.md deleted file mode 100644 index 2acb87bd..00000000 --- a/docs/n0110-unlock/check-version-change-eligibility.md +++ /dev/null @@ -1,40 +0,0 @@ ---- -title: "Check version change eligibility" ---- - -### Introduction - -You may need to change Epsilon's version to unlock your calculator, we usually install Epsilon 18.2.0. There are some cases where you can install Epsilon 18.2.0 and some you can't, this page explains how to know if you are eligible or not. - -### If you have Epsilon 15 or lower - -You don't need to change your version, just go to [Now What ?](n0110-now-what) - -### If you have Epsilon 16 to 18.2.0 (but not 16.4.3) - -You don't need to change your version, just go to [Phi](phi) - -### If you have Epsilon 16.4.3 or 18.2.3 - -You are eligible, you can continue normally - -### If you have Epsilon 19 or higher - -It depends on the version you had before updating to Epsilon 19 and over. - -- If you had 15 or lower, Omega, or Upsilon: You can't change your version -- If you had 16 to 18.2.3 (but not 16.4.3): You can change your version -- If you had 16.4.3, 19 or higher: You can't change your version - -### And If you don't know - -Don't worry, trying to change your version won't break your calculator. -If you were not eligible, after the process, the calculator will be stuck on Numworks recovery screen and you will be able to update from Numworks website and your calculator will work normally. - -___ - -If you are eligible, continue to [Install Epsilon 18.2.0](install-epsilon-18-2-0) -{: .notice--primary} - -If you are not eligible, you need to use an [Alternate Method](n0110-is-locked#alternate-methods) -{: .notice--info} diff --git a/docs/n0110-unlock/images/screenshots/e16bl.png b/docs/n0110-unlock/images/screenshots/e16bl.png deleted file mode 100644 index 35ddb3f11b268148e2117d0edf89ba9b261626a9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3237 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 diff --git a/docs/n0110-unlock/images/screenshots/phi-launch.png b/docs/n0110-unlock/images/screenshots/phi-launch.png deleted file mode 100644 index 8060c33670500b8c3d9ea7e35db7db8f2eb4fdbb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3012 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 diff --git a/docs/n0110-unlock/images/screenshots/phi-unlock.png b/docs/n0110-unlock/images/screenshots/phi-unlock.png deleted file mode 100644 index ab8e6a74a745c458d5142034c988f14757a10a8c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1749 zcmeAS@N?(olHy`uVBq!ia0y~yU~~YoKX9-C$wJ+|*+7AoOlRi+PiJR^f};Gi%$!sP z291fe6Ky>XJ4m$MU)B|*CHqF<(S(IoTNSh(tq9d{Y7Nld@+zU|rMyX|M^KCm>-DB) z`|eP7@$^{P7*@v*>_;x1^t|Zm^+!*0OUK8)$8z_6-+&?bBKxEer1~;TEzliv9SbxAvf9fUgHRgI3lFd5fI?c8hXRy!n(;xiq6kH<^OMZJ^jSe z39Fgh`dF_la4h@#p#H<|?O}yQhrGGe8}Er9|0%)xtE@5XaN)jw+2y57Eb|++_dZ^4 z+BnnylC-RD8H>xd#_rdB%ib_fw?1%Tvf}Jb+N_zJN0mO*x!s?_&X(VJVb=BS-z@#) z8+5*E)iTS-FeR&=iu+z!USEFy-`dRY@7XOAiYEBSbgcwN3tN)6y9>i>hBplN(yz>3 z1{C2e@Q5sCVBi)8VMc~ob0mO*>?NMQuI$g4___EsCSFi@#lXOF$-KHxb(uj1m)iYTZ27S(yT5+bpLutF z74P>5a+OF_j6dwZ@5}e>z(S+73T!SbO`LLN4{noLeC=`k=JhK#=(?5PDPpMz%L%h- z?CXnLw4ugiUHvn|uI}~nda@4F-G83`dGn*k;TRHIqwO72}UQRev5tK<458tbuEqV zzfScz_4Q2(o5gOC_5a`6<==PS&vnjxb>U)Vox@Yr53C1P_rs!#V z_s?F$#LRR5SALWhN z*Y8)W&%BkJQ7K+=7xjNA|t?%aH9hW9{NKcRr=x`MC6HU4ue{di%3r^|Z53f7r<_&DGQWUq7Yl z``+>t+t1hj75wymaMP~#=Txr36+4B!O!VrnecQfgib9=%Mnm{+`Gj}tZSS!r{r{?Q zB=woiq0s+V1oY}TYrZ`3jQ;!gU6uY{H~rahJ@>qB&zG83|Ft&r!MEvg@ptU?dOp0~ z!cy^q z#kF_W3oy>fT6%i*JbT~IJNGFx=r1m7Jg^9$7%1gd@)jKVcU5kG z`Rg}7=LO#8pU$h$;GMw0$RglCAwjtbASY14Az+_S$2BYh6bH*7bd7)mwzz&!w2!fM Xktu&B$DT#N0*}Gd)z4*}Q$iB}fFo?H diff --git a/docs/n0110-unlock/images/screenshots/phi-write.png b/docs/n0110-unlock/images/screenshots/phi-write.png deleted file mode 100644 index 5bd2dc14d6950b574215db529459a810e8c61434..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1630 zcmeAS@N?(olHy`uVBq!ia0y~yU~~YoKX9-C$wJ+|*+7AoOlRi+PiJR^f};Gi%$!sP z291fe6Ky>XJ4m$MU)B|*CHqF<(S(IoTNSh(tq9d{Y7Nld@+zU|rMyX|M^KCm>-DB) z`|eP7@$^{P7*@v*>_;x1^t|Zm^+!*0OUK8)$8z_6-+&?bBKxEer1~;TEzliv9SbxAvf9fUgHRgI3lFd5fI?c8hXRy!n(;xiq6kH<^OMZJ^jSe z39Fgh`dF_la4h@#p#H<|?O}yQhrGGe8}Er9|0%)xtE@5XaN)jw+2y57Eb|++_dZ^4 z+BnnylC-RD8H>xd#_rdB%ib_fw?1%Tvf}Jb+N_zJN0mO*x!s?_&X(VJVb=BS-z@#) z8+5*E)iTS-FeR&=iu+z!USEFy-`dRY@7XOAiYEBSbgcwN3tN)6y9>i>hBplN(yz>3 z1{C2e@Q5sCVBi)8VMc~ob0mO*>?NMQuI$g4__+jmDkuGZ!oa{1?djqeQgQ3;-Me9r z6+{{WXFUDA-{{_%*059l98*-P1eDx$+T`ZeNamj>3`G#M-^Y_`6SHH43cjoKc zMO*gG%)bA(w6XKwU(VAWF^`r^*5b4C&#bjRsy|QS&%Enma<5*0nQZ=VzwTbkotGX7 zuiv)sOHp-h*V?=0zw)K$=4A_~ytP=p-+secmK|1Z);}yukDd{kW)z&U%4g-v1KCDK zGmjnm82rp|>5sQos)wI4S3I4p?Hg5YlUU@_`t@kr@f|X54E|kFxu>FK56=6#^w3{j z;Va7z$!NXqViwl2QEPBtKIhWz-7l9+u6a@!b-(r;>$>zNDb9$OTeWPTmDcWju-xg+ z(FyF`{r0S3`yO-UNF1N9H^ZmDxj)^B{ji{C&e;_w;ETXv2!9{u~x zP<`#b@zH(V@u$z zCTW|ETAH44wfdUH$G7>PGvGPoyi*?s5BR4cvb+41*<*Dv0m^HcP;*T31L*#!=$8ZbP0l+XkKVJlB2 diff --git a/docs/n0110-unlock/install-epsilon-18-2-0.md b/docs/n0110-unlock/install-epsilon-18-2-0.md deleted file mode 100644 index 2acef8ea..00000000 --- a/docs/n0110-unlock/install-epsilon-18-2-0.md +++ /dev/null @@ -1,53 +0,0 @@ ---- -title: "Install Epsilon 18.2.0" ---- - -{% include toc title="Table of Contents" %} - -### Required Reading - -We will now install Epsilon 18.2.0 - -If you are not sure if you can install Epsilon 18.2.0, go check [this page](check-version-change-eligibility) -{: .notice--info} - - -### What You Need - -- A chromium-based browser (we recommend using [chromium](https://www.chromium.org/chromium-projects/) directly) -- Epsilon 18.2.0 `18-2-0.dfu` (since Numworks deleted this file from their website because of Phi, we cannot give you a link here) -- Python ([Link for Windows and macOS](https://www.python.org/)) -- This Python script: [Linux and macOS version](images/unpack.py), [Windows version](images/unpack-win.py) - -### Section I - Extracting the external binary - -Since Epsilon is now proprietary, we can't distribute the external flash image directly. -We thus have to make you extract it. - -1. Install Python on your platform -2. Download Epsilon 18.2.0 -3. Create a new folder -4. Put the Python script in that folder -5. Put 18-2-0.dfu in that folder -6. Run the script - -You should now have an internal.bin and an external.bin file - -### Section II - Install - -1. Open [WebDFU](https://ti-planet.github.io/webdfu_numworks/n0110/) in a chromium-based browser -2. Hold the 6 key on your numworks and press the reset button -3. You should now see the Epsilon bootloader interface -4. Select `external.bin` in WebDFU -5. Click "flash external" -6. Once flashing is done, press the reset button on your Numworks - -You should now see version 18.2.0 in Settings > About. - -If it is not the case or your Numworks doesn't boot, you can only use an [alternate method](n0110-is-locked#alternate-methods). -{: .notice--warning} - -___ - -### Continue to [Phi](phi) -{: .notice--primary} diff --git a/docs/n0110-unlock/n0110-hardware-unlock.md b/docs/n0110-unlock/n0110-hardware-unlock.md deleted file mode 100644 index 57e9a746..00000000 --- a/docs/n0110-unlock/n0110-hardware-unlock.md +++ /dev/null @@ -1,24 +0,0 @@ ---- -title: "Hardware unlock (N0110)" ---- - -{% include toc title="Sommaire" %} - -### Requiered reading - -The hardware unlock way requieres special tools. - -The goal is to force recovery mode to allow installation, your calculator should show a black screen and a red LED. - -### Select a method - -There are multiple methods. - -We recommend [this post](https://tiplanet.org/forum/viewtopic.php?f=113&t=25191&p=263495), it is very complete and will guide you very well. - -If you have another way to get Recovery mode, you can follow it instead. **We are not responsible for anything that goes wrong with your device** - -___ - -When your calculator is in Recovery mode, continue to [Now What ? ](n0110-now-what) -{: .notice--primary} diff --git a/docs/n0110-unlock/n0110-is-locked.md b/docs/n0110-unlock/n0110-is-locked.md deleted file mode 100644 index 0bf7eb35..00000000 --- a/docs/n0110-unlock/n0110-is-locked.md +++ /dev/null @@ -1,52 +0,0 @@ ---- -title: "Is your calculator locked ? (N0110)" ---- - -{% include toc title="Table of Contents" %} - -This page will tell you if you need to unlock your calculator and how. - -#### Section I - Epsilon Version check - -1. Power on your device -2. Go in the settings app -3. Go in "about" -4. Look at the "Software version" or "Epsilon version" field. -5. This is your Epsilon version. - -#### Section II - Flash lock check - -1. Press the "6" key -2. While pressing the "6" key, press the reset button at the back of the device. - -If you see a screen like this one, you can proceed : -![Epsilon 16 bootloader](images/screenshots/e16bl.png) - -If the screen stays black and the LED turns red, STOP - your calculator is already unlocked! Continue from [here](n0110-now-what). -{: .notice--warning} - -Press the reset button at the back of the calculator to return to the firmware. - -#### Section III - Select a Method - -Use the version table below to select a method. A few things to note: - + The version table below is *inclusive*. For example, "from 16.3.0 to 18.0.0" includes 16.3.0, 18.0.0, and all versions in between. - + Version 16.4.3 does not follow this rule. - -| System Version | What to do | -|----------------|----------------------------------------------------------------------| -| 11.2.0-16.2.0 | [Now what ?](n0110-now-what) | -| 16.3.0-16.4.2 | [Phi](phi) | -| 16.4.3 | [Install Epsilon 18.2.0](install-epsilon-18-2-0) | -| 17.0.0-18.2.0 | [Phi](phi) | -| 18.2.3 | [Install Epsilon 18.2.0](install-epsilon-18-2-0) | -| 19.0.0-21.2.0 | [Check version change eligibility](check-version-change-eligibility) | - ---- -#### Alternate Methods - -If possible, you should follow one of the software methods listed above. - -Otherwise, methods that work on all versions are available, but require additional hardware: - -1. [Hardware Unlock](n0110-hardware-unlock) - requires special tools diff --git a/docs/n0110-unlock/n0110-now-what.md b/docs/n0110-unlock/n0110-now-what.md deleted file mode 100644 index 0d8f8d73..00000000 --- a/docs/n0110-unlock/n0110-now-what.md +++ /dev/null @@ -1,33 +0,0 @@ ---- -title: "Now What (N0110) ?" ---- - -{% include toc title="Table of Contents" %} - -Your Numworks doesn't need to be unlocked, yay! - -You now have multiple choices. You can: -- Install a patched bootloader and then install Epsilon >= 16 -- Install a custom firmware - -### Choice I - Install a patched bootloader - -If you wish to use Epsilon >= 16 while still being able to install a custom firmware, -you can install a patched bootloader : -1. Download [this file](https://phi.getomega.dev/install/bootloader.bin) -2. Open [this page](https://ti-planet.github.io/webdfu_numworks/n0110/) in a chromium-based browser -3. While holding the 6 key, press the reset button on the back of your device -4. Plug your calculator to your computer -5. Click "Connect to the Numworks calculator" and select the STM32 bootloader. -6. Click "Chose file" and pick the bootloader.bin that you just downloaded -7. Click Flash internal - -You can now hold 4 and reset. You'll boot into the soft bootloader. From there, you can install Epsilon from [Numworks' website](https://my.numworks.com/devices/upgrade). - -Continue to [Final checks](final-checks) -{: .notice--primary} - -### Choice II - Install a CFW - -Go to [choose a CFW](choose-a-cfw) -{: .notice--primary} diff --git a/docs/n0110-unlock/phi-now-what.md b/docs/n0110-unlock/phi-now-what.md deleted file mode 100644 index 6ff2b980..00000000 --- a/docs/n0110-unlock/phi-now-what.md +++ /dev/null @@ -1,32 +0,0 @@ ---- -title: "Now What (Phi) ?" ---- - -{% include toc title="Table of Contents" %} - -You now have multiple choices. You can: -- Install a custom bootloader and continue using Epsilon >= 16 -- Install a custom firmware - -# Choice I - Install a custom bootloader - -If you wish to continue using Epsilon >= 16 while still being able to install a custom firmware, you can install a custom bootloader : -1. Press 3 -2. Press OK to confirm -3. You should see something like this : -![Phi launch screen](images/screenshots/phi-write.png) - -The "Write flash" stage can take a bit of time. You'll be put back on the main menu after a second, when the flashing is done. - -Press 4, then OK. You should now boot back into Epsilon. - -If you don't boot back into Epsilon, please join the [Omega Discord](https://discord.gg/X2TWhh9) and ask for help. -{: .notice--warning} - -### Continue to [Final checks](final-checks) -{: .notice--primary} - -## Choice II - Install a CFW - -Go to [choose a CFW](choose-a-cfw) -{: .notice--primary} diff --git a/docs/n0110-unlock/phi.md b/docs/n0110-unlock/phi.md deleted file mode 100644 index 94fbe595..00000000 --- a/docs/n0110-unlock/phi.md +++ /dev/null @@ -1,65 +0,0 @@ ---- -title: "Installing Phi" ---- - -{% include toc title="Table of Contents" %} - -### Required Reading - -Phi has multiple entrypoints (method of launching). -The exploit used at the moment is compatible with Epsilon 16.3.0 trough 18.2.0. - -### What You Need - -- A chromium-based browser (we recommend using [chromium](https://www.chromium.org/chromium-projects/) directly) -- The [Phi Installer](https://phi.getomega.dev/) - -### Section I - Installing Phi - -1. Power on your device -2. Plug your device to a computer -3. Open Chromium -4. Go to the [Phi Installer](https://phi.getomega.dev/) -5. Click "Connect to Numworks calculator" and select your calculator -6. The calculator will show a message reading "Third party applications" -7. Press Back - -### Section II - Running Phi - -1. Scroll down in the apps list and select "Phi Installer" -2. Press OK -3. The screen should blink and you should see a screen similar to this one: - -![Phi launch screen](images/screenshots/phi-launch.png) - -If the screen turns Yellow, the version or Epsilon you're using isn't yet supported. You may need to [change your version](check-version-change-eligibility). -{: .notice--info} -If the screen turns Red, the exploit failed. Reset the calculator and try again. If it doesn't work the second time, please join the [Omega Discord](https://discord.gg/X2TWhh9). -{: .notice--warning} - -### Section III - Unlocking the calculator - -We are now going to unlock the internal flash and remove the write protection: - -1. Press 1 to unlock the internal flash. -2. Press OK to confirm -3. You should see something like this : -![Phi unlock screen](images/screenshots/phi-unlock.png) - -The "Reset RDP" stage can take a bit of time. You'll be put back on the main menu after a second, when the unlocking is done. - -### Section IV - Erasing the internal flash - -Removing the write protection should have erased the internal flash, but we are going to do it again, just to be sure: - -1. Press 2 to reset the internal flash -2. Press OK to confirm -3. You should see something like this : -![Phi erase screen](images/screenshots/phi-erase.png) - -The "Erase flash" stage can take a bit of time. You'll be put back on the main menu after a second, when the erasing is done. - -___ - -### Continue to [Now What (Phi) ?](phi-now-what) -{: .notice--primary} diff --git a/docs/tutorial-basics/_category_.json b/docs/tutorial-basics/_category_.json deleted file mode 100644 index 2e6db55b..00000000 --- a/docs/tutorial-basics/_category_.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "label": "Tutorial - Basics", - "position": 2, - "link": { - "type": "generated-index", - "description": "5 minutes to learn the most important Docusaurus concepts." - } -} diff --git a/docs/tutorial-basics/congratulations.md b/docs/tutorial-basics/congratulations.md deleted file mode 100644 index 04771a00..00000000 --- a/docs/tutorial-basics/congratulations.md +++ /dev/null @@ -1,23 +0,0 @@ ---- -sidebar_position: 6 ---- - -# Congratulations! - -You have just learned the **basics of Docusaurus** and made some changes to the **initial template**. - -Docusaurus has **much more to offer**! - -Have **5 more minutes**? Take a look at **[versioning](../tutorial-extras/manage-docs-versions.md)** and **[i18n](../tutorial-extras/translate-your-site.md)**. - -Anything **unclear** or **buggy** in this tutorial? [Please report it!](https://github.com/facebook/docusaurus/discussions/4610) - -## What's next? - -- Read the [official documentation](https://docusaurus.io/) -- Modify your site configuration with [`docusaurus.config.js`](https://docusaurus.io/docs/api/docusaurus-config) -- Add navbar and footer items with [`themeConfig`](https://docusaurus.io/docs/api/themes/configuration) -- Add a custom [Design and Layout](https://docusaurus.io/docs/styling-layout) -- Add a [search bar](https://docusaurus.io/docs/search) -- Find inspirations in the [Docusaurus showcase](https://docusaurus.io/showcase) -- Get involved in the [Docusaurus Community](https://docusaurus.io/community/support) diff --git a/docs/tutorial-basics/create-a-blog-post.md b/docs/tutorial-basics/create-a-blog-post.md deleted file mode 100644 index ea472bba..00000000 --- a/docs/tutorial-basics/create-a-blog-post.md +++ /dev/null @@ -1,34 +0,0 @@ ---- -sidebar_position: 3 ---- - -# Create a Blog Post - -Docusaurus creates a **page for each blog post**, but also a **blog index page**, a **tag system**, an **RSS** feed... - -## Create your first Post - -Create a file at `blog/2021-02-28-greetings.md`: - -```md title="blog/2021-02-28-greetings.md" ---- -slug: greetings -title: Greetings! -authors: - - name: Joel Marcey - title: Co-creator of Docusaurus 1 - url: https://github.com/JoelMarcey - image_url: https://github.com/JoelMarcey.png - - name: Sébastien Lorber - title: Docusaurus maintainer - url: https://sebastienlorber.com - image_url: https://github.com/slorber.png -tags: [greetings] ---- - -Congratulations, you have made your first post! - -Feel free to play around and edit this post as much you like. -``` - -A new blog post is now available at [http://localhost:3000/blog/greetings](http://localhost:3000/blog/greetings). diff --git a/docs/tutorial-basics/create-a-document.md b/docs/tutorial-basics/create-a-document.md deleted file mode 100644 index ffddfa8e..00000000 --- a/docs/tutorial-basics/create-a-document.md +++ /dev/null @@ -1,57 +0,0 @@ ---- -sidebar_position: 2 ---- - -# Create a Document - -Documents are **groups of pages** connected through: - -- a **sidebar** -- **previous/next navigation** -- **versioning** - -## Create your first Doc - -Create a Markdown file at `docs/hello.md`: - -```md title="docs/hello.md" -# Hello - -This is my **first Docusaurus document**! -``` - -A new document is now available at [http://localhost:3000/docs/hello](http://localhost:3000/docs/hello). - -## Configure the Sidebar - -Docusaurus automatically **creates a sidebar** from the `docs` folder. - -Add metadata to customize the sidebar label and position: - -```md title="docs/hello.md" {1-4} ---- -sidebar_label: 'Hi!' -sidebar_position: 3 ---- - -# Hello - -This is my **first Docusaurus document**! -``` - -It is also possible to create your sidebar explicitly in `sidebars.js`: - -```js title="sidebars.js" -module.exports = { - tutorialSidebar: [ - 'intro', - // highlight-next-line - 'hello', - { - type: 'category', - label: 'Tutorial', - items: ['tutorial-basics/create-a-document'], - }, - ], -}; -``` diff --git a/docs/tutorial-basics/create-a-page.md b/docs/tutorial-basics/create-a-page.md deleted file mode 100644 index 20e2ac30..00000000 --- a/docs/tutorial-basics/create-a-page.md +++ /dev/null @@ -1,43 +0,0 @@ ---- -sidebar_position: 1 ---- - -# Create a Page - -Add **Markdown or React** files to `src/pages` to create a **standalone page**: - -- `src/pages/index.js` → `localhost:3000/` -- `src/pages/foo.md` → `localhost:3000/foo` -- `src/pages/foo/bar.js` → `localhost:3000/foo/bar` - -## Create your first React Page - -Create a file at `src/pages/my-react-page.js`: - -```jsx title="src/pages/my-react-page.js" -import React from 'react'; -import Layout from '@theme/Layout'; - -export default function MyReactPage() { - return ( - -

My React page

-

This is a React page

-
- ); -} -``` - -A new page is now available at [http://localhost:3000/my-react-page](http://localhost:3000/my-react-page). - -## Create your first Markdown Page - -Create a file at `src/pages/my-markdown-page.md`: - -```mdx title="src/pages/my-markdown-page.md" -# My Markdown page - -This is a Markdown page -``` - -A new page is now available at [http://localhost:3000/my-markdown-page](http://localhost:3000/my-markdown-page). diff --git a/docs/tutorial-basics/deploy-your-site.md b/docs/tutorial-basics/deploy-your-site.md deleted file mode 100644 index 1c50ee06..00000000 --- a/docs/tutorial-basics/deploy-your-site.md +++ /dev/null @@ -1,31 +0,0 @@ ---- -sidebar_position: 5 ---- - -# Deploy your site - -Docusaurus is a **static-site-generator** (also called **[Jamstack](https://jamstack.org/)**). - -It builds your site as simple **static HTML, JavaScript and CSS files**. - -## Build your site - -Build your site **for production**: - -```bash -npm run build -``` - -The static files are generated in the `build` folder. - -## Deploy your site - -Test your production build locally: - -```bash -npm run serve -``` - -The `build` folder is now served at [http://localhost:3000/](http://localhost:3000/). - -You can now deploy the `build` folder **almost anywhere** easily, **for free** or very small cost (read the **[Deployment Guide](https://docusaurus.io/docs/deployment)**). diff --git a/docs/tutorial-basics/markdown-features.mdx b/docs/tutorial-basics/markdown-features.mdx deleted file mode 100644 index 0337f34d..00000000 --- a/docs/tutorial-basics/markdown-features.mdx +++ /dev/null @@ -1,150 +0,0 @@ ---- -sidebar_position: 4 ---- - -# Markdown Features - -Docusaurus supports **[Markdown](https://daringfireball.net/projects/markdown/syntax)** and a few **additional features**. - -## Front Matter - -Markdown documents have metadata at the top called [Front Matter](https://jekyllrb.com/docs/front-matter/): - -```text title="my-doc.md" -// highlight-start ---- -id: my-doc-id -title: My document title -description: My document description -slug: /my-custom-url ---- -// highlight-end - -## Markdown heading - -Markdown text with [links](./hello.md) -``` - -## Links - -Regular Markdown links are supported, using url paths or relative file paths. - -```md -Let's see how to [Create a page](/create-a-page). -``` - -```md -Let's see how to [Create a page](./create-a-page.md). -``` - -**Result:** Let's see how to [Create a page](./create-a-page.md). - -## Images - -Regular Markdown images are supported. - -You can use absolute paths to reference images in the static directory (`static/img/docusaurus.png`): - -```md -![Docusaurus logo](/img/docusaurus.png) -``` - -![Docusaurus logo](/img/docusaurus.png) - -You can reference images relative to the current file as well. This is particularly useful to colocate images close to the Markdown files using them: - -```md -![Docusaurus logo](./img/docusaurus.png) -``` - -## Code Blocks - -Markdown code blocks are supported with Syntax highlighting. - - ```jsx title="src/components/HelloDocusaurus.js" - function HelloDocusaurus() { - return ( -

Hello, Docusaurus!

- ) - } - ``` - -```jsx title="src/components/HelloDocusaurus.js" -function HelloDocusaurus() { - return

Hello, Docusaurus!

; -} -``` - -## Admonitions - -Docusaurus has a special syntax to create admonitions and callouts: - - :::tip My tip - - Use this awesome feature option - - ::: - - :::danger Take care - - This action is dangerous - - ::: - -:::tip My tip - -Use this awesome feature option - -::: - -:::danger Take care - -This action is dangerous - -::: - -## MDX and React Components - -[MDX](https://mdxjs.com/) can make your documentation more **interactive** and allows using any **React components inside Markdown**: - -```jsx -export const Highlight = ({children, color}) => ( - { - alert(`You clicked the color ${color} with label ${children}`) - }}> - {children} - -); - -This is Docusaurus green ! - -This is Facebook blue ! -``` - -export const Highlight = ({children, color}) => ( - { - alert(`You clicked the color ${color} with label ${children}`); - }}> - {children} - -); - -This is Docusaurus green ! - -This is Facebook blue ! diff --git a/docs/tutorial-extras/_category_.json b/docs/tutorial-extras/_category_.json deleted file mode 100644 index a8ffcc19..00000000 --- a/docs/tutorial-extras/_category_.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "label": "Tutorial - Extras", - "position": 3, - "link": { - "type": "generated-index" - } -} diff --git a/docs/tutorial-extras/img/docsVersionDropdown.png b/docs/tutorial-extras/img/docsVersionDropdown.png deleted file mode 100644 index 97e4164618b5f8beda34cfa699720aba0ad2e342..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 25427 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 diff --git a/docs/tutorial-extras/img/localeDropdown.png b/docs/tutorial-extras/img/localeDropdown.png deleted file mode 100644 index e257edc1f932985396bf59584c7ccfaddf955779..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 27841 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 JrC|B>e*nH7H{}2T diff --git a/docs/tutorial-extras/manage-docs-versions.md b/docs/tutorial-extras/manage-docs-versions.md deleted file mode 100644 index e12c3f34..00000000 --- a/docs/tutorial-extras/manage-docs-versions.md +++ /dev/null @@ -1,55 +0,0 @@ ---- -sidebar_position: 1 ---- - -# Manage Docs Versions - -Docusaurus can manage multiple versions of your docs. - -## Create a docs version - -Release a version 1.0 of your project: - -```bash -npm run docusaurus docs:version 1.0 -``` - -The `docs` folder is copied into `versioned_docs/version-1.0` and `versions.json` is created. - -Your docs now have 2 versions: - -- `1.0` at `http://localhost:3000/docs/` for the version 1.0 docs -- `current` at `http://localhost:3000/docs/next/` for the **upcoming, unreleased docs** - -## Add a Version Dropdown - -To navigate seamlessly across versions, add a version dropdown. - -Modify the `docusaurus.config.js` file: - -```js title="docusaurus.config.js" -module.exports = { - themeConfig: { - navbar: { - items: [ - // highlight-start - { - type: 'docsVersionDropdown', - }, - // highlight-end - ], - }, - }, -}; -``` - -The docs version dropdown appears in your navbar: - -![Docs Version Dropdown](./img/docsVersionDropdown.png) - -## Update an existing version - -It is possible to edit versioned docs in their respective folder: - -- `versioned_docs/version-1.0/hello.md` updates `http://localhost:3000/docs/hello` -- `docs/hello.md` updates `http://localhost:3000/docs/next/hello` diff --git a/docs/tutorial-extras/translate-your-site.md b/docs/tutorial-extras/translate-your-site.md deleted file mode 100644 index caeaffb0..00000000 --- a/docs/tutorial-extras/translate-your-site.md +++ /dev/null @@ -1,88 +0,0 @@ ---- -sidebar_position: 2 ---- - -# Translate your site - -Let's translate `docs/intro.md` to French. - -## Configure i18n - -Modify `docusaurus.config.js` to add support for the `fr` locale: - -```js title="docusaurus.config.js" -module.exports = { - i18n: { - defaultLocale: 'en', - locales: ['en', 'fr'], - }, -}; -``` - -## Translate a doc - -Copy the `docs/intro.md` file to the `i18n/fr` folder: - -```bash -mkdir -p i18n/fr/docusaurus-plugin-content-docs/current/ - -cp docs/intro.md i18n/fr/docusaurus-plugin-content-docs/current/intro.md -``` - -Translate `i18n/fr/docusaurus-plugin-content-docs/current/intro.md` in French. - -## Start your localized site - -Start your site on the French locale: - -```bash -npm run start -- --locale fr -``` - -Your localized site is accessible at [http://localhost:3000/fr/](http://localhost:3000/fr/) and the `Getting Started` page is translated. - -:::caution - -In development, you can only use one locale at a same time. - -::: - -## Add a Locale Dropdown - -To navigate seamlessly across languages, add a locale dropdown. - -Modify the `docusaurus.config.js` file: - -```js title="docusaurus.config.js" -module.exports = { - themeConfig: { - navbar: { - items: [ - // highlight-start - { - type: 'localeDropdown', - }, - // highlight-end - ], - }, - }, -}; -``` - -The locale dropdown now appears in your navbar: - -![Locale Dropdown](./img/localeDropdown.png) - -## Build your localized site - -Build your site for a specific locale: - -```bash -npm run build -- --locale fr -``` - -Or build your site to include all the locales at once: - -```bash -npm run build -``` From 16f2eff7ceab3a4e7d20e8f0d50aa5aabe41c01e Mon Sep 17 00:00:00 2001 From: Rathmox Date: Sun, 17 Sep 2023 15:39:32 +0200 Subject: [PATCH 05/51] Update branding --- docs/intro.md | 44 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) create mode 100644 docs/intro.md diff --git a/docs/intro.md b/docs/intro.md new file mode 100644 index 00000000..d0350507 --- /dev/null +++ b/docs/intro.md @@ -0,0 +1,44 @@ +--- +sidebar_position: 1 +title: Get Started +--- + +**Before starting this guide, you need to understand some words you will see in this guide.** + +### Definitions + +This guide will refer to some names, before starting you have to know what these names refer to: + +1. Epsilon: This is the firmware originally sold with the calculator, made by Numworks. After version 16, they started to lock the calculator to prevent any CFW installation ([see why here](https://tiplanet.org/forum/viewtopic.php?f=97&t=24968)). +2. CFW: Custom firmware, a firmware that is made to replace Epsilon. Common ones are Omega and Upsilon +3. Phi: This is an app that is made to unlock locked calculators. +4. Recovery mode ("STM32 DFU bootloader" or "hwloader"): This is a mode on the calculator that allows to change anything, and the one that Numworks locked. It's usually accessed when pressing "reset" on the back of the calculator while holding the "6" key and it can be recognized when you get a black screen with the led turned on red. This is what you need to get at the end to be able to install anything you want. +5. Bootloader ("softloader"): This is a menu you can get in different ways, it depends on the CFW you choose. It allows you to reinstall the firmware and can prevent you from locking your calculator if you update it. Phi allows you to install one if you want. + +:::info + +If you don't want to deeply modify your calculator, [there are still a few things you can do](what-to-do-locked). + +::: + +### Prerequisites + +Numworks Calculator +Driver if you have Windows or Linux: open the [Rescue page](https://numworks.com/rescue) on Numworks’ website and it will give it and tell you how to install it. **Don’t plug in your calculator to make sure you don’t lock it**. If you have macOS, you don't need it. + +### Model check + +1. Turn your calculator around +2. On its back, there should be a little writing, either N0120, N0110 or N0100. This is your model number. +3. If you can't read that: + 1. Turn the calculator on + 2. Go in the settings app + 3. Go in "about" + 4. Look at the FCC ID. It should end with one of the model names below. + +| Calculator Model | What to do | +|------------------|-------------------------------------------------------------------------------------------------| +| N0100 | [Your calculator is already unlocked](n0100-now-what) | +| N0110 | [Check if your calculator is locked](n0110-is-locked) | +| N0115 | OMEGA NEEDS YOU | +| N0120 | [You can't install a CFW on it. But there are still a few things you can do](what-to-do-locked) | From 8d79e44f55f73fb4955ebfbed8925eab945fdeb2 Mon Sep 17 00:00:00 2001 From: Rathmox Date: Sun, 17 Sep 2023 20:28:17 +0200 Subject: [PATCH 06/51] disable blog --- docs/get-started.md | 44 -------------------------------------------- 1 file changed, 44 deletions(-) delete mode 100644 docs/get-started.md diff --git a/docs/get-started.md b/docs/get-started.md deleted file mode 100644 index d0350507..00000000 --- a/docs/get-started.md +++ /dev/null @@ -1,44 +0,0 @@ ---- -sidebar_position: 1 -title: Get Started ---- - -**Before starting this guide, you need to understand some words you will see in this guide.** - -### Definitions - -This guide will refer to some names, before starting you have to know what these names refer to: - -1. Epsilon: This is the firmware originally sold with the calculator, made by Numworks. After version 16, they started to lock the calculator to prevent any CFW installation ([see why here](https://tiplanet.org/forum/viewtopic.php?f=97&t=24968)). -2. CFW: Custom firmware, a firmware that is made to replace Epsilon. Common ones are Omega and Upsilon -3. Phi: This is an app that is made to unlock locked calculators. -4. Recovery mode ("STM32 DFU bootloader" or "hwloader"): This is a mode on the calculator that allows to change anything, and the one that Numworks locked. It's usually accessed when pressing "reset" on the back of the calculator while holding the "6" key and it can be recognized when you get a black screen with the led turned on red. This is what you need to get at the end to be able to install anything you want. -5. Bootloader ("softloader"): This is a menu you can get in different ways, it depends on the CFW you choose. It allows you to reinstall the firmware and can prevent you from locking your calculator if you update it. Phi allows you to install one if you want. - -:::info - -If you don't want to deeply modify your calculator, [there are still a few things you can do](what-to-do-locked). - -::: - -### Prerequisites - -Numworks Calculator -Driver if you have Windows or Linux: open the [Rescue page](https://numworks.com/rescue) on Numworks’ website and it will give it and tell you how to install it. **Don’t plug in your calculator to make sure you don’t lock it**. If you have macOS, you don't need it. - -### Model check - -1. Turn your calculator around -2. On its back, there should be a little writing, either N0120, N0110 or N0100. This is your model number. -3. If you can't read that: - 1. Turn the calculator on - 2. Go in the settings app - 3. Go in "about" - 4. Look at the FCC ID. It should end with one of the model names below. - -| Calculator Model | What to do | -|------------------|-------------------------------------------------------------------------------------------------| -| N0100 | [Your calculator is already unlocked](n0100-now-what) | -| N0110 | [Check if your calculator is locked](n0110-is-locked) | -| N0115 | OMEGA NEEDS YOU | -| N0120 | [You can't install a CFW on it. But there are still a few things you can do](what-to-do-locked) | From 9f2a9666d6ec6c5cc3201441e35e9de60d69cf25 Mon Sep 17 00:00:00 2001 From: Rathmox Date: Sun, 17 Sep 2023 20:42:22 +0200 Subject: [PATCH 07/51] fix previous commit --- docusaurus.config.js | 49 +++++++++++++++----------------------------- 1 file changed, 17 insertions(+), 32 deletions(-) diff --git a/docusaurus.config.js b/docusaurus.config.js index a8561d1a..9e37e3c5 100644 --- a/docusaurus.config.js +++ b/docusaurus.config.js @@ -6,8 +6,8 @@ const darkCodeTheme = require('prism-react-renderer/themes/dracula'); /** @type {import('@docusaurus/types').Config} */ const config = { - title: 'My Site', - tagline: 'Dinosaurs are cool', + title: 'Numworks Guide', + tagline: 'Everything to take control of your calculator', favicon: 'img/favicon.ico', // Set the production url of your site here @@ -18,8 +18,8 @@ const config = { // GitHub pages deployment config. // If you aren't using GitHub pages, you don't need these. - organizationName: 'facebook', // Usually your GitHub org/user name. - projectName: 'docusaurus', // Usually your repo name. + organizationName: 'Omega-Numworks', // Usually your GitHub org/user name. + projectName: 'Omega-Guide', // Usually your repo name. onBrokenLinks: 'throw', onBrokenMarkdownLinks: 'warn', @@ -41,9 +41,8 @@ const config = { sidebarPath: require.resolve('./sidebars.js'), // Please change this to your repo. // Remove this to remove the "edit this page" links. - editUrl: - 'https://github.com/facebook/docusaurus/tree/main/packages/create-docusaurus/templates/shared/', }, + /* blog: { showReadingTime: true, // Please change this to your repo. @@ -51,6 +50,7 @@ const config = { editUrl: 'https://github.com/facebook/docusaurus/tree/main/packages/create-docusaurus/templates/shared/', }, + */ theme: { customCss: require.resolve('./src/css/custom.css'), }, @@ -64,7 +64,7 @@ const config = { // Replace with your project's social card image: 'img/docusaurus-social-card.jpg', navbar: { - title: 'My Site', + title: 'Numworks Guide', logo: { alt: 'My Site Logo', src: 'img/logo.svg', @@ -74,11 +74,11 @@ const config = { type: 'docSidebar', sidebarId: 'tutorialSidebar', position: 'left', - label: 'Tutorial', + label: 'Guide', }, - {to: '/blog', label: 'Blog', position: 'left'}, +// {to: '/blog', label: 'Blog', position: 'left'}, { - href: 'https://github.com/facebook/docusaurus', + href: 'https://github.com/Omega-Numworks/Omega-Guide', label: 'GitHub', position: 'right', }, @@ -87,47 +87,32 @@ const config = { footer: { style: 'dark', links: [ - { - title: 'Docs', - items: [ - { - label: 'Tutorial', - to: '/docs/intro', - }, - ], - }, { title: 'Community', items: [ + /* { - label: 'Stack Overflow', - href: 'https://stackoverflow.com/questions/tagged/docusaurus', + label: 'Blog', + href: '/blog', }, + */ { label: 'Discord', - href: 'https://discordapp.com/invite/docusaurus', - }, - { - label: 'Twitter', - href: 'https://twitter.com/docusaurus', + href: 'https://discord.gg/X2TWhh9', }, ], }, { title: 'More', items: [ - { - label: 'Blog', - to: '/blog', - }, { label: 'GitHub', - href: 'https://github.com/facebook/docusaurus', + href: 'https://github.com/Omega-Numworks/Omega-Guide', }, ], }, ], - copyright: `Copyright © ${new Date().getFullYear()} My Project, Inc. Built with Docusaurus.`, + copyright: `Copyright © ${new Date().getFullYear()} Omega Community, Built with Docusaurus.`, }, prism: { theme: lightCodeTheme, From baa3e333a38cfea076af0ef955a6abcba52dac93 Mon Sep 17 00:00:00 2001 From: Bloomy <90511192+BloomyInDev@users.noreply.github.com> Date: Sun, 17 Sep 2023 21:31:18 +0200 Subject: [PATCH 08/51] Convert Jekyll markdown to Docusaurus markdown - Convert some Jekyll markdown to Docusaurus markdown - Update the full home page --- docs/cfw/_category_.json | 8 +++++ docs/cfw/install-epsilon-from-softloader.md | 4 +-- docs/cfw/omega.md | 7 ++-- docs/cfw/upsilon.md | 7 ++-- docs/no-custom/restore-stock-firmware.md | 3 +- src/css/custom.css | 10 ++++++ src/pages/index.module.css | 7 ++++ src/pages/index.tsx | 40 +++++++++++++++++---- 8 files changed, 68 insertions(+), 18 deletions(-) create mode 100644 docs/cfw/_category_.json diff --git a/docs/cfw/_category_.json b/docs/cfw/_category_.json new file mode 100644 index 00000000..57d66468 --- /dev/null +++ b/docs/cfw/_category_.json @@ -0,0 +1,8 @@ +{ + "label": "CFW", + "position": 5, + "link": { + "type": "generated-index", + "description": "bek" + } +} diff --git a/docs/cfw/install-epsilon-from-softloader.md b/docs/cfw/install-epsilon-from-softloader.md index 8b136cb6..b9d0354b 100644 --- a/docs/cfw/install-epsilon-from-softloader.md +++ b/docs/cfw/install-epsilon-from-softloader.md @@ -2,8 +2,6 @@ title: "Install Epsilon from softloader" --- -{% include toc title="Table of Contents" %} - :::danger Following this guide may put your calculator at risk. Installing Epsilon on your calculator the wrong way may lock it. **STRICTLY** follow what's said on this page to make sure your calculator is safe @@ -12,7 +10,7 @@ Following this guide may put your calculator at risk. Installing Epsilon on your :::caution -The latest Epsilon version may not be safe, check the latest version [for n0110](https://my.numworks.com/firmwares/n0110/stable.json) (Logged in Numworks account requiered). Latest known safe version: **21.2.0** +The latest Epsilon version may not be safe, check the latest version. Latest known safe version: **21.2.0** ::: diff --git a/docs/cfw/omega.md b/docs/cfw/omega.md index 915ec25c..8b8ce2cb 100644 --- a/docs/cfw/omega.md +++ b/docs/cfw/omega.md @@ -2,10 +2,9 @@ title: "Omega" --- -{% include toc title="Table of Contents" %} - +:::info You need an unlocked calculator. [To unlock it go here](get-started) -{: .notice--info} +::: This page will explain how to install Omega, assuming you have an unlocked calculator @@ -36,7 +35,7 @@ There is a new "Slot" system. Your calculator has 2 slots and can store 2 firmwa - Hold 4 and press reset to open the bootloader, you will be able to see which slot contain which firmware and also be able to install any firmware without locking the calculator. - You can’t start another firmware if you enable exam mode, you have to disable it to do so -#### Section IV - How to update ? +### Section IV - How to update ? To update Omega, open the bootloader by holding 4 and pressing reset, plug your calculator in your PC, go to the Omega website, and install it normally. diff --git a/docs/cfw/upsilon.md b/docs/cfw/upsilon.md index bc200a56..05c5ab41 100644 --- a/docs/cfw/upsilon.md +++ b/docs/cfw/upsilon.md @@ -2,10 +2,9 @@ title: "Upsilon" --- -{% include toc title="Table of Contents" %} - +:::info You need an unlocked calculator. [To unlock it go here](get-started) -{: .notice--info} +::: This page will explain how to install Upsilon, assuming you have an unlocked calculator @@ -43,7 +42,7 @@ In this menu you can: Also note that once plugged into the PC, (unless in recovery mode) your calculator will be named "Upsilon Calculator" or "Upsilon Bootloader" instead of "NumWorks Calculator". -#### Section IV - How to update ? +### Section IV - How to update ? To update Upsilon, open Install Mode and Flash Slots (see above how to), plug your calculator in your PC, go to the Upsilon website, and install it normally. diff --git a/docs/no-custom/restore-stock-firmware.md b/docs/no-custom/restore-stock-firmware.md index b9ad1000..e984a975 100644 --- a/docs/no-custom/restore-stock-firmware.md +++ b/docs/no-custom/restore-stock-firmware.md @@ -2,8 +2,9 @@ title: "Restore Stock Firmware" --- +:::danger Restoring your calculator to stock firmware **WILL LOCK IT** and you won't be able to install any CFW on it ever again, unless you use a hardware method to unlock it again. We highly advise using the bootloader from any compatible CFW and [install Epsilon from softloader](install-epsilon-from-softloader) to still use the latest versions without locking your calculator. -{: .notice--warning} +::: This page will tell you how to go back to a fully stock firmware and therefore locking your calculator. diff --git a/src/css/custom.css b/src/css/custom.css index 2bc6a4cf..39ce5a4b 100644 --- a/src/css/custom.css +++ b/src/css/custom.css @@ -28,3 +28,13 @@ --ifm-color-primary-lightest: #4fddbf; --docusaurus-highlighted-code-line-bg: rgba(0, 0, 0, 0.3); } +.center { + display: flex; + flex-direction: row; + justify-content: center; + align-items: center; +} +.content-home { + max-width: 1280px; + margin: 1rem; +} \ No newline at end of file diff --git a/src/pages/index.module.css b/src/pages/index.module.css index 9f71a5da..5b17b313 100644 --- a/src/pages/index.module.css +++ b/src/pages/index.module.css @@ -21,3 +21,10 @@ align-items: center; justify-content: center; } + +main { + display: flex; + flex-direction: row; + justify-content: center; +} + diff --git a/src/pages/index.tsx b/src/pages/index.tsx index 305139fb..c882a000 100644 --- a/src/pages/index.tsx +++ b/src/pages/index.tsx @@ -3,12 +3,11 @@ import clsx from 'clsx'; import Link from '@docusaurus/Link'; import useDocusaurusContext from '@docusaurus/useDocusaurusContext'; import Layout from '@theme/Layout'; -import HomepageFeatures from '@site/src/components/HomepageFeatures'; import styles from './index.module.css'; function HomepageHeader() { - const {siteConfig} = useDocusaurusContext(); + const { siteConfig } = useDocusaurusContext(); return (
@@ -18,7 +17,7 @@ function HomepageHeader() { - Docusaurus Tutorial - 5min ⏱️ + Get Started
@@ -27,14 +26,43 @@ function HomepageHeader() { } export default function Home(): JSX.Element { - const {siteConfig} = useDocusaurusContext(); + const { siteConfig } = useDocusaurusContext(); return (
- +
+

CFW ?

+

Custom firmwares (CFW) are software modifications for the numworks. They allow you to do anything that the Numworks is physically capable of doing, rather than being limited by whatever Numworks allows you to do.

+

Popular uses for CFW include:

+
    +
  • Running homebrew software and games made for or ported to the Numworks
  • +
  • Installing apps like emulators
  • +
  • Installing KhiCAS, a verry powerfull Computer Algebra Software
  • +
  • Installing others CFW, like Omega or Upsilon
  • +
+

What does this guide contain ?

+

This guide will explain how to:

+
    +
  • Unlock your calculator if you need to
  • +
  • Install a CFW on your calculator
  • +
  • Install a custom bootloader
  • +
+

What do I need to know before starting?

+ +
+ + Get Started + +
+
); From 23d857fda00d2a2901286401c3d1a8c081ce6ed7 Mon Sep 17 00:00:00 2001 From: Rathmox Date: Sun, 17 Sep 2023 21:31:50 +0200 Subject: [PATCH 09/51] Update n0110 organisation --- docs/n0110/_category_.json | 8 +++ docs/n0110/hardware/_category_.json | 8 +++ docs/n0110/hardware/n0110-hardware-unlock.md | 18 +++++ docs/n0110/n0110-is-locked.md | 54 ++++++++++++++ docs/n0110/n0110-now-what.md | 31 ++++++++ docs/n0110/phi/_category_.json | 8 +++ .../phi/check-version-change-eligibility.md | 41 +++++++++++ docs/n0110/phi/images/screenshots/e16bl.png | Bin 0 -> 3237 bytes .../phi/images/screenshots/phi-erase.png | Bin 0 -> 1619 bytes .../phi/images/screenshots/phi-launch.png | Bin 0 -> 3012 bytes .../phi/images/screenshots/phi-unlock.png | Bin 0 -> 1749 bytes .../phi/images/screenshots/phi-write.png | Bin 0 -> 1630 bytes docs/n0110/phi/install-epsilon-18-2-0.md | 53 ++++++++++++++ docs/n0110/phi/phi-now-what.md | 34 +++++++++ docs/n0110/phi/phi.md | 67 ++++++++++++++++++ 15 files changed, 322 insertions(+) create mode 100644 docs/n0110/_category_.json create mode 100644 docs/n0110/hardware/_category_.json create mode 100644 docs/n0110/hardware/n0110-hardware-unlock.md create mode 100644 docs/n0110/n0110-is-locked.md create mode 100644 docs/n0110/n0110-now-what.md create mode 100644 docs/n0110/phi/_category_.json create mode 100644 docs/n0110/phi/check-version-change-eligibility.md create mode 100644 docs/n0110/phi/images/screenshots/e16bl.png create mode 100644 docs/n0110/phi/images/screenshots/phi-erase.png create mode 100644 docs/n0110/phi/images/screenshots/phi-launch.png create mode 100644 docs/n0110/phi/images/screenshots/phi-unlock.png create mode 100644 docs/n0110/phi/images/screenshots/phi-write.png create mode 100644 docs/n0110/phi/install-epsilon-18-2-0.md create mode 100644 docs/n0110/phi/phi-now-what.md create mode 100644 docs/n0110/phi/phi.md diff --git a/docs/n0110/_category_.json b/docs/n0110/_category_.json new file mode 100644 index 00000000..445e94f2 --- /dev/null +++ b/docs/n0110/_category_.json @@ -0,0 +1,8 @@ +{ + "label": "N0110", + "position": 2, + "link": { + "type": "generated-index", + "description": "How to custom your Numworks N0110" + } +} diff --git a/docs/n0110/hardware/_category_.json b/docs/n0110/hardware/_category_.json new file mode 100644 index 00000000..5c48c8cd --- /dev/null +++ b/docs/n0110/hardware/_category_.json @@ -0,0 +1,8 @@ +{ + "label": "Hardware method", + "position": 2, + "link": { + "type": "generated-index", + "description": "Unlock your calculator with an hardware method" + } +} diff --git a/docs/n0110/hardware/n0110-hardware-unlock.md b/docs/n0110/hardware/n0110-hardware-unlock.md new file mode 100644 index 00000000..493d8d8f --- /dev/null +++ b/docs/n0110/hardware/n0110-hardware-unlock.md @@ -0,0 +1,18 @@ +--- +title: "Hardware unlock (N0110)" +--- + +### Requiered reading + +The hardware unlock way requieres special tools. + +The goal is to force recovery mode to allow installation, your calculator should show a black screen and a red LED. + +### Select a method + +There are multiple methods. + +We recommend [this post](https://tiplanet.org/forum/viewtopic.php?f=113&t=25191&p=263495), it is very complete and will guide you very well. + +If you have another way to get Recovery mode, you can follow it instead. **We are not responsible for anything that goes wrong with your device** + diff --git a/docs/n0110/n0110-is-locked.md b/docs/n0110/n0110-is-locked.md new file mode 100644 index 00000000..f1856acb --- /dev/null +++ b/docs/n0110/n0110-is-locked.md @@ -0,0 +1,54 @@ +--- +title: "Is your calculator locked ? (N0110)" +sidebar_position: 1 +--- + +This page will tell you if you need to unlock your calculator and how. + +#### Section I - Epsilon Version check + +1. Power on your device +2. Go in the settings app +3. Go in "about" +4. Look at the "Software version" or "Epsilon version" field. +5. This is your Epsilon version. + +#### Section II - Flash lock check + +1. Press the "6" key +2. While pressing the "6" key, press the reset button at the back of the device. + +If you see a screen like this one, you can proceed : +![Epsilon 16 bootloader](images/screenshots/e16bl.png) + +:::caution + +If the screen stays black and the LED turns red, STOP - your calculator is already unlocked! Continue from [here](n0110-now-what). + +::: + +Press the reset button at the back of the calculator to return to the firmware. + +#### Section III - Select a Method + +Use the version table below to select a method. A few things to note: + + The version table below is *inclusive*. For example, "from 16.3.0 to 18.0.0" includes 16.3.0, 18.0.0, and all versions in between. + + Version 16.4.3 does not follow this rule. + +| System Version | What to do | +|----------------|----------------------------------------------------------------------| +| 11.2.0-16.2.0 | [Now what ?](n0110-now-what) | +| 16.3.0-16.4.2 | [Phi](phi) | +| 16.4.3 | [Install Epsilon 18.2.0](install-epsilon-18-2-0) | +| 17.0.0-18.2.0 | [Phi](phi) | +| 18.2.3 | [Install Epsilon 18.2.0](install-epsilon-18-2-0) | +| 19.0.0-21.2.0 | [Check version change eligibility](check-version-change-eligibility) | + +--- +#### Alternate Methods + +If possible, you should follow one of the software methods listed above. + +Otherwise, methods that work on all versions are available, but require additional hardware: + +1. [Hardware Unlock](n0110-hardware-unlock) - requires special tools diff --git a/docs/n0110/n0110-now-what.md b/docs/n0110/n0110-now-what.md new file mode 100644 index 00000000..3239250f --- /dev/null +++ b/docs/n0110/n0110-now-what.md @@ -0,0 +1,31 @@ +--- +title: "Now What (N0110) ?" +--- + +Your Numworks doesn't need to be unlocked, yay! + +You now have multiple choices. You can: +- Install a patched bootloader and then install Epsilon >= 16 +- Install a custom firmware + +### Choice I - Install a patched bootloader + +If you wish to use Epsilon >= 16 while still being able to install a custom firmware, +you can install a patched bootloader : +1. Download [this file](https://phi.getomega.dev/install/bootloader.bin) +2. Open [this page](https://ti-planet.github.io/webdfu_numworks/n0110/) in a chromium-based browser +3. While holding the 6 key, press the reset button on the back of your device +4. Plug your calculator to your computer +5. Click "Connect to the Numworks calculator" and select the STM32 bootloader. +6. Click "Chose file" and pick the bootloader.bin that you just downloaded +7. Click Flash internal + +You can now hold 4 and reset. You'll boot into the soft bootloader. From there, you can install Epsilon from [Numworks' website](https://my.numworks.com/devices/upgrade). + +Continue to [Final checks](final-checks) +{: .notice--primary} + +### Choice II - Install a CFW + +Go to [choose a CFW](choose-a-cfw) +{: .notice--primary} diff --git a/docs/n0110/phi/_category_.json b/docs/n0110/phi/_category_.json new file mode 100644 index 00000000..f6a29872 --- /dev/null +++ b/docs/n0110/phi/_category_.json @@ -0,0 +1,8 @@ +{ + "label": "Phi", + "position": 2, + "link": { + "type": "generated-index", + "description": "Unlock your calculator easily with Phi" + } +} diff --git a/docs/n0110/phi/check-version-change-eligibility.md b/docs/n0110/phi/check-version-change-eligibility.md new file mode 100644 index 00000000..5a901be0 --- /dev/null +++ b/docs/n0110/phi/check-version-change-eligibility.md @@ -0,0 +1,41 @@ +--- +title: "Check version change eligibility" +sidebar_position: 2 +--- + +### Introduction + +You may need to change Epsilon's version to unlock your calculator, we usually install Epsilon 18.2.0. There are some cases where you can install Epsilon 18.2.0 and some you can't, this page explains how to know if you are eligible or not. + +### If you have Epsilon 15 or lower + +You don't need to change your version, just go to [Now What ?](n0110-now-what) + +### If you have Epsilon 16 to 18.2.0 (but not 16.4.3) + +You don't need to change your version, just go to [Phi](phi) + +### If you have Epsilon 16.4.3 or 18.2.3 + +You are eligible, you can continue normally + +### If you have Epsilon 19 or higher + +It depends on the version you had before updating to Epsilon 19 and over. + +- If you had 15 or lower, Omega, or Upsilon: You can't change your version +- If you had 16 to 18.2.3 (but not 16.4.3): You can change your version +- If you had 16.4.3, 19 or higher: You can't change your version + +### And If you don't know + +Don't worry, trying to change your version won't break your calculator. +If you were not eligible, after the process, the calculator will be stuck on Numworks recovery screen and you will be able to update from Numworks website and your calculator will work normally. + +___ + +:::info + +If you are not eligible, you need to use an [Alternate Method](n0110-is-locked#alternate-methods) + +::: diff --git a/docs/n0110/phi/images/screenshots/e16bl.png b/docs/n0110/phi/images/screenshots/e16bl.png new file mode 100644 index 0000000000000000000000000000000000000000..35ddb3f11b268148e2117d0edf89ba9b261626a9 GIT binary patch literal 3237 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 literal 0 HcmV?d00001 diff --git a/docs/n0110/phi/images/screenshots/phi-launch.png b/docs/n0110/phi/images/screenshots/phi-launch.png new file mode 100644 index 0000000000000000000000000000000000000000..8060c33670500b8c3d9ea7e35db7db8f2eb4fdbb GIT binary patch literal 3012 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 literal 0 HcmV?d00001 diff --git a/docs/n0110/phi/images/screenshots/phi-unlock.png b/docs/n0110/phi/images/screenshots/phi-unlock.png new file mode 100644 index 0000000000000000000000000000000000000000..ab8e6a74a745c458d5142034c988f14757a10a8c GIT binary patch literal 1749 zcmeAS@N?(olHy`uVBq!ia0y~yU~~YoKX9-C$wJ+|*+7AoOlRi+PiJR^f};Gi%$!sP z291fe6Ky>XJ4m$MU)B|*CHqF<(S(IoTNSh(tq9d{Y7Nld@+zU|rMyX|M^KCm>-DB) z`|eP7@$^{P7*@v*>_;x1^t|Zm^+!*0OUK8)$8z_6-+&?bBKxEer1~;TEzliv9SbxAvf9fUgHRgI3lFd5fI?c8hXRy!n(;xiq6kH<^OMZJ^jSe z39Fgh`dF_la4h@#p#H<|?O}yQhrGGe8}Er9|0%)xtE@5XaN)jw+2y57Eb|++_dZ^4 z+BnnylC-RD8H>xd#_rdB%ib_fw?1%Tvf}Jb+N_zJN0mO*x!s?_&X(VJVb=BS-z@#) z8+5*E)iTS-FeR&=iu+z!USEFy-`dRY@7XOAiYEBSbgcwN3tN)6y9>i>hBplN(yz>3 z1{C2e@Q5sCVBi)8VMc~ob0mO*>?NMQuI$g4___EsCSFi@#lXOF$-KHxb(uj1m)iYTZ27S(yT5+bpLutF z74P>5a+OF_j6dwZ@5}e>z(S+73T!SbO`LLN4{noLeC=`k=JhK#=(?5PDPpMz%L%h- z?CXnLw4ugiUHvn|uI}~nda@4F-G83`dGn*k;TRHIqwO72}UQRev5tK<458tbuEqV zzfScz_4Q2(o5gOC_5a`6<==PS&vnjxb>U)Vox@Yr53C1P_rs!#V z_s?F$#LRR5SALWhN z*Y8)W&%BkJQ7K+=7xjNA|t?%aH9hW9{NKcRr=x`MC6HU4ue{di%3r^|Z53f7r<_&DGQWUq7Yl z``+>t+t1hj75wymaMP~#=Txr36+4B!O!VrnecQfgib9=%Mnm{+`Gj}tZSS!r{r{?Q zB=woiq0s+V1oY}TYrZ`3jQ;!gU6uY{H~rahJ@>qB&zG83|Ft&r!MEvg@ptU?dOp0~ z!cy^q z#kF_W3oy>fT6%i*JbT~IJNGFx=r1m7Jg^9$7%1gd@)jKVcU5kG z`Rg}7=LO#8pU$h$;GMw0$RglCAwjtbASY14Az+_S$2BYh6bH*7bd7)mwzz&!w2!fM Xktu&B$DT#N0*}Gd)z4*}Q$iB}fFo?H literal 0 HcmV?d00001 diff --git a/docs/n0110/phi/images/screenshots/phi-write.png b/docs/n0110/phi/images/screenshots/phi-write.png new file mode 100644 index 0000000000000000000000000000000000000000..5bd2dc14d6950b574215db529459a810e8c61434 GIT binary patch literal 1630 zcmeAS@N?(olHy`uVBq!ia0y~yU~~YoKX9-C$wJ+|*+7AoOlRi+PiJR^f};Gi%$!sP z291fe6Ky>XJ4m$MU)B|*CHqF<(S(IoTNSh(tq9d{Y7Nld@+zU|rMyX|M^KCm>-DB) z`|eP7@$^{P7*@v*>_;x1^t|Zm^+!*0OUK8)$8z_6-+&?bBKxEer1~;TEzliv9SbxAvf9fUgHRgI3lFd5fI?c8hXRy!n(;xiq6kH<^OMZJ^jSe z39Fgh`dF_la4h@#p#H<|?O}yQhrGGe8}Er9|0%)xtE@5XaN)jw+2y57Eb|++_dZ^4 z+BnnylC-RD8H>xd#_rdB%ib_fw?1%Tvf}Jb+N_zJN0mO*x!s?_&X(VJVb=BS-z@#) z8+5*E)iTS-FeR&=iu+z!USEFy-`dRY@7XOAiYEBSbgcwN3tN)6y9>i>hBplN(yz>3 z1{C2e@Q5sCVBi)8VMc~ob0mO*>?NMQuI$g4__+jmDkuGZ!oa{1?djqeQgQ3;-Me9r z6+{{WXFUDA-{{_%*059l98*-P1eDx$+T`ZeNamj>3`G#M-^Y_`6SHH43cjoKc zMO*gG%)bA(w6XKwU(VAWF^`r^*5b4C&#bjRsy|QS&%Enma<5*0nQZ=VzwTbkotGX7 zuiv)sOHp-h*V?=0zw)K$=4A_~ytP=p-+secmK|1Z);}yukDd{kW)z&U%4g-v1KCDK zGmjnm82rp|>5sQos)wI4S3I4p?Hg5YlUU@_`t@kr@f|X54E|kFxu>FK56=6#^w3{j z;Va7z$!NXqViwl2QEPBtKIhWz-7l9+u6a@!b-(r;>$>zNDb9$OTeWPTmDcWju-xg+ z(FyF`{r0S3`yO-UNF1N9H^ZmDxj)^B{ji{C&e;_w;ETXv2!9{u~x zP<`#b@zH(V@u$z zCTW|ETAH44wfdUH$G7>PGvGPoyi*?s5BR4cvb+41*<*Dv0m^HcP;*T31L*#!=$8ZbP0l+XkKVJlB2 literal 0 HcmV?d00001 diff --git a/docs/n0110/phi/install-epsilon-18-2-0.md b/docs/n0110/phi/install-epsilon-18-2-0.md new file mode 100644 index 00000000..3fac42b7 --- /dev/null +++ b/docs/n0110/phi/install-epsilon-18-2-0.md @@ -0,0 +1,53 @@ +--- +title: "Install Epsilon 18.2.0" +sidebar_position: 3 +--- + +### Required Reading + +We will now install Epsilon 18.2.0 + +:::info + +If you are not sure if you can install Epsilon 18.2.0, go check [this page](check-version-change-eligibility) + +::: + + +### What You Need + +- A chromium-based browser (we recommend using [chromium](https://www.chromium.org/chromium-projects/) directly) +- Epsilon 18.2.0 `18-2-0.dfu` (since Numworks deleted this file from their website because of Phi, we cannot give you a link here) +- Python ([Link for Windows and macOS](https://www.python.org/)) +- This Python script: [Linux and macOS version](images/unpack.py), [Windows version](images/unpack-win.py) + +### Section I - Extracting the external binary + +Since Epsilon is now proprietary, we can't distribute the external flash image directly. +We thus have to make you extract it. + +1. Install Python on your platform +2. Download Epsilon 18.2.0 +3. Create a new folder +4. Put the Python script in that folder +5. Put 18-2-0.dfu in that folder +6. Run the script + +You should now have an internal.bin and an external.bin file + +### Section II - Install + +1. Open [WebDFU](https://ti-planet.github.io/webdfu_numworks/n0110/) in a chromium-based browser +2. Hold the 6 key on your numworks and press the reset button +3. You should now see the Epsilon bootloader interface +4. Select `external.bin` in WebDFU +5. Click "flash external" +6. Once flashing is done, press the reset button on your Numworks + +You should now see version 18.2.0 in Settings > About. + +:::caution + +If it is not the case or your Numworks doesn't boot, you can only use an [alternate method](n0110-is-locked#alternate-methods). + +::: diff --git a/docs/n0110/phi/phi-now-what.md b/docs/n0110/phi/phi-now-what.md new file mode 100644 index 00000000..cde23843 --- /dev/null +++ b/docs/n0110/phi/phi-now-what.md @@ -0,0 +1,34 @@ +--- +title: "Now What (Phi) ?" +sidebar_position: 5 +--- + +You now have multiple choices. You can: +- Install a custom bootloader and continue using Epsilon >= 16 +- Install a custom firmware + +# Choice I - Install a custom bootloader + +If you wish to continue using Epsilon >= 16 while still being able to install a custom firmware, you can install a custom bootloader : +1. Press 3 +2. Press OK to confirm +3. You should see something like this : +![Phi launch screen](images/screenshots/phi-write.png) + +The "Write flash" stage can take a bit of time. You'll be put back on the main menu after a second, when the flashing is done. + +Press 4, then OK. You should now boot back into Epsilon. + +:::caution + +If you don't boot back into Epsilon, please join the [Omega Discord](https://discord.gg/X2TWhh9) and ask for help. + +::: + +### Continue to [Final checks](final-checks) +{: .notice--primary} + +## Choice II - Install a CFW + +Go to [choose a CFW](choose-a-cfw) +{: .notice--primary} diff --git a/docs/n0110/phi/phi.md b/docs/n0110/phi/phi.md new file mode 100644 index 00000000..116caef5 --- /dev/null +++ b/docs/n0110/phi/phi.md @@ -0,0 +1,67 @@ +--- +title: "Installing Phi" +sidebar_position: 4 +--- + +### Required Reading + +Phi has multiple entrypoints (method of launching). +The exploit used at the moment is compatible with Epsilon 16.3.0 trough 18.2.0. + +### What You Need + +- A chromium-based browser (we recommend using [chromium](https://www.chromium.org/chromium-projects/) directly) +- The [Phi Installer](https://phi.getomega.dev/) + +### Section I - Installing Phi + +1. Power on your device +2. Plug your device to a computer +3. Open Chromium +4. Go to the [Phi Installer](https://phi.getomega.dev/) +5. Click "Connect to Numworks calculator" and select your calculator +6. The calculator will show a message reading "Third party applications" +7. Press Back + +### Section II - Running Phi + +1. Scroll down in the apps list and select "Phi Installer" +2. Press OK +3. The screen should blink and you should see a screen similar to this one: + +![Phi launch screen](images/screenshots/phi-launch.png) + +:::info + +If the screen turns Yellow, the version or Epsilon you're using isn't yet supported. You may need to [change your version](check-version-change-eligibility). + +::: + +:::caution + +If the screen turns Red, the exploit failed. Reset the calculator and try again. If it doesn't work the second time, please join the [Omega Discord](https://discord.gg/X2TWhh9). + +::: + +### Section III - Unlocking the calculator + +We are now going to unlock the internal flash and remove the write protection: + +1. Press 1 to unlock the internal flash. +2. Press OK to confirm +3. You should see something like this : +![Phi unlock screen](images/screenshots/phi-unlock.png) + +The "Reset RDP" stage can take a bit of time. You'll be put back on the main menu after a second, when the unlocking is done. + +### Section IV - Erasing the internal flash + +Removing the write protection should have erased the internal flash, but we are going to do it again, just to be sure: + +1. Press 2 to reset the internal flash +2. Press OK to confirm +3. You should see something like this : +![Phi erase screen](images/screenshots/phi-erase.png) + +The "Erase flash" stage can take a bit of time. You'll be put back on the main menu after a second, when the erasing is done. + From 1b8ca1f2a031020d5afe76ff3334793b913b20b4 Mon Sep 17 00:00:00 2001 From: Rathmox Date: Sun, 17 Sep 2023 21:41:37 +0200 Subject: [PATCH 10/51] update notices --- docs/cfw/choose-a-cfw.md | 6 +- docs/cfw/install-epsilon-from-softloader.md | 3 +- docs/cfw/omega.md | 8 ++- docs/cfw/upsilon.md | 13 ++-- docs/n0110-custom/n0110-now-what.md | 31 -------- docs/n0110-hardware/n0110-hardware-unlock.md | 18 ----- docs/n0110-phi/_category_.json | 8 --- .../check-version-change-eligibility.md | 41 ----------- docs/n0110-phi/images/screenshots/e16bl.png | Bin 3237 -> 0 bytes .../images/screenshots/phi-erase.png | Bin 1619 -> 0 bytes .../images/screenshots/phi-launch.png | Bin 3012 -> 0 bytes .../images/screenshots/phi-unlock.png | Bin 1749 -> 0 bytes .../images/screenshots/phi-write.png | Bin 1630 -> 0 bytes docs/n0110-phi/install-epsilon-18-2-0.md | 53 -------------- docs/n0110-phi/n0110-is-locked.md | 54 -------------- docs/n0110-phi/phi-now-what.md | 34 --------- docs/n0110-phi/phi.md | 67 ------------------ docs/n0110/hardware/n0110-hardware-unlock.md | 1 + docs/n0110/n0110-now-what.md | 2 - .../phi/check-version-change-eligibility.md | 2 +- docs/n0110/phi/install-epsilon-18-2-0.md | 2 +- docs/n0110/phi/phi-now-what.md | 2 +- docs/n0110/phi/phi.md | 2 +- docs/no-custom/restore-stock-firmware.md | 5 +- 24 files changed, 29 insertions(+), 323 deletions(-) delete mode 100644 docs/n0110-custom/n0110-now-what.md delete mode 100644 docs/n0110-hardware/n0110-hardware-unlock.md delete mode 100644 docs/n0110-phi/_category_.json delete mode 100644 docs/n0110-phi/check-version-change-eligibility.md delete mode 100644 docs/n0110-phi/images/screenshots/e16bl.png delete mode 100644 docs/n0110-phi/images/screenshots/phi-erase.png delete mode 100644 docs/n0110-phi/images/screenshots/phi-launch.png delete mode 100644 docs/n0110-phi/images/screenshots/phi-unlock.png delete mode 100644 docs/n0110-phi/images/screenshots/phi-write.png delete mode 100644 docs/n0110-phi/install-epsilon-18-2-0.md delete mode 100644 docs/n0110-phi/n0110-is-locked.md delete mode 100644 docs/n0110-phi/phi-now-what.md delete mode 100644 docs/n0110-phi/phi.md diff --git a/docs/cfw/choose-a-cfw.md b/docs/cfw/choose-a-cfw.md index d359be31..28a7a01c 100644 --- a/docs/cfw/choose-a-cfw.md +++ b/docs/cfw/choose-a-cfw.md @@ -1,9 +1,13 @@ --- title: "Choose a CFW" +sidebar_position: 1 --- +:::info + You need an unlocked calculator. [To unlock it go here](get-started) -{: .notice--info} + +::: There are multiple CFWs you can install on your calculator, most of them install in the same way. Here are a few of them diff --git a/docs/cfw/install-epsilon-from-softloader.md b/docs/cfw/install-epsilon-from-softloader.md index 8b136cb6..7dcd42d9 100644 --- a/docs/cfw/install-epsilon-from-softloader.md +++ b/docs/cfw/install-epsilon-from-softloader.md @@ -1,9 +1,8 @@ --- title: "Install Epsilon from softloader" +sidebar_position: 4 --- -{% include toc title="Table of Contents" %} - :::danger Following this guide may put your calculator at risk. Installing Epsilon on your calculator the wrong way may lock it. **STRICTLY** follow what's said on this page to make sure your calculator is safe diff --git a/docs/cfw/omega.md b/docs/cfw/omega.md index 915ec25c..31654d4b 100644 --- a/docs/cfw/omega.md +++ b/docs/cfw/omega.md @@ -1,11 +1,13 @@ --- title: "Omega" +sidebar_position: 2 --- -{% include toc title="Table of Contents" %} +:::info You need an unlocked calculator. [To unlock it go here](get-started) -{: .notice--info} + +::: This page will explain how to install Omega, assuming you have an unlocked calculator @@ -61,7 +63,7 @@ Omega support external apps, there are a few but they are useful. Here is how to You can install Epsilon on the bootloader without locking the calculator. See [Install Epsilon from softloader](install-epsilon-from-softloader) -{: .notice--primary} + #### Create your own version diff --git a/docs/cfw/upsilon.md b/docs/cfw/upsilon.md index bc200a56..9cfca1f2 100644 --- a/docs/cfw/upsilon.md +++ b/docs/cfw/upsilon.md @@ -1,11 +1,13 @@ --- title: "Upsilon" +sidebar_position: 3 --- -{% include toc title="Table of Contents" %} +:::info You need an unlocked calculator. [To unlock it go here](get-started) -{: .notice--info} + +::: This page will explain how to install Upsilon, assuming you have an unlocked calculator @@ -28,8 +30,11 @@ if your model is n0100, enter recovery mode by plugging your calculator and pres 5. Select your settings like the theme. For the slot, if you don't know which one to choose, select "A" 6. Now you can click "Install Upsilon" and in a few seconds Upsilon should be installed on your calculator. +:::tip + Upsilon tends to crash when you start it and the calculator is connected to a PC. Disconnect it before starting -{: .notice--info} + +::: ### Section III - How to use your new calculator (not for n0100) @@ -67,7 +72,7 @@ Upsilon support external apps, there are a few but they are useful. Here is how You can install Epsilon on the bootloader without locking the calculator. See [Install Epsilon from softloader](install-epsilon-from-softloader) -{: .notice--primary} + #### Create your own version diff --git a/docs/n0110-custom/n0110-now-what.md b/docs/n0110-custom/n0110-now-what.md deleted file mode 100644 index 3239250f..00000000 --- a/docs/n0110-custom/n0110-now-what.md +++ /dev/null @@ -1,31 +0,0 @@ ---- -title: "Now What (N0110) ?" ---- - -Your Numworks doesn't need to be unlocked, yay! - -You now have multiple choices. You can: -- Install a patched bootloader and then install Epsilon >= 16 -- Install a custom firmware - -### Choice I - Install a patched bootloader - -If you wish to use Epsilon >= 16 while still being able to install a custom firmware, -you can install a patched bootloader : -1. Download [this file](https://phi.getomega.dev/install/bootloader.bin) -2. Open [this page](https://ti-planet.github.io/webdfu_numworks/n0110/) in a chromium-based browser -3. While holding the 6 key, press the reset button on the back of your device -4. Plug your calculator to your computer -5. Click "Connect to the Numworks calculator" and select the STM32 bootloader. -6. Click "Chose file" and pick the bootloader.bin that you just downloaded -7. Click Flash internal - -You can now hold 4 and reset. You'll boot into the soft bootloader. From there, you can install Epsilon from [Numworks' website](https://my.numworks.com/devices/upgrade). - -Continue to [Final checks](final-checks) -{: .notice--primary} - -### Choice II - Install a CFW - -Go to [choose a CFW](choose-a-cfw) -{: .notice--primary} diff --git a/docs/n0110-hardware/n0110-hardware-unlock.md b/docs/n0110-hardware/n0110-hardware-unlock.md deleted file mode 100644 index 493d8d8f..00000000 --- a/docs/n0110-hardware/n0110-hardware-unlock.md +++ /dev/null @@ -1,18 +0,0 @@ ---- -title: "Hardware unlock (N0110)" ---- - -### Requiered reading - -The hardware unlock way requieres special tools. - -The goal is to force recovery mode to allow installation, your calculator should show a black screen and a red LED. - -### Select a method - -There are multiple methods. - -We recommend [this post](https://tiplanet.org/forum/viewtopic.php?f=113&t=25191&p=263495), it is very complete and will guide you very well. - -If you have another way to get Recovery mode, you can follow it instead. **We are not responsible for anything that goes wrong with your device** - diff --git a/docs/n0110-phi/_category_.json b/docs/n0110-phi/_category_.json deleted file mode 100644 index fa207943..00000000 --- a/docs/n0110-phi/_category_.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "label": "Unlock N0110", - "position": 2, - "link": { - "type": "generated-index", - "description": "bek" - } -} diff --git a/docs/n0110-phi/check-version-change-eligibility.md b/docs/n0110-phi/check-version-change-eligibility.md deleted file mode 100644 index 5a901be0..00000000 --- a/docs/n0110-phi/check-version-change-eligibility.md +++ /dev/null @@ -1,41 +0,0 @@ ---- -title: "Check version change eligibility" -sidebar_position: 2 ---- - -### Introduction - -You may need to change Epsilon's version to unlock your calculator, we usually install Epsilon 18.2.0. There are some cases where you can install Epsilon 18.2.0 and some you can't, this page explains how to know if you are eligible or not. - -### If you have Epsilon 15 or lower - -You don't need to change your version, just go to [Now What ?](n0110-now-what) - -### If you have Epsilon 16 to 18.2.0 (but not 16.4.3) - -You don't need to change your version, just go to [Phi](phi) - -### If you have Epsilon 16.4.3 or 18.2.3 - -You are eligible, you can continue normally - -### If you have Epsilon 19 or higher - -It depends on the version you had before updating to Epsilon 19 and over. - -- If you had 15 or lower, Omega, or Upsilon: You can't change your version -- If you had 16 to 18.2.3 (but not 16.4.3): You can change your version -- If you had 16.4.3, 19 or higher: You can't change your version - -### And If you don't know - -Don't worry, trying to change your version won't break your calculator. -If you were not eligible, after the process, the calculator will be stuck on Numworks recovery screen and you will be able to update from Numworks website and your calculator will work normally. - -___ - -:::info - -If you are not eligible, you need to use an [Alternate Method](n0110-is-locked#alternate-methods) - -::: diff --git a/docs/n0110-phi/images/screenshots/e16bl.png b/docs/n0110-phi/images/screenshots/e16bl.png deleted file mode 100644 index 35ddb3f11b268148e2117d0edf89ba9b261626a9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3237 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 diff --git a/docs/n0110-phi/images/screenshots/phi-launch.png b/docs/n0110-phi/images/screenshots/phi-launch.png deleted file mode 100644 index 8060c33670500b8c3d9ea7e35db7db8f2eb4fdbb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3012 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 diff --git a/docs/n0110-phi/images/screenshots/phi-unlock.png b/docs/n0110-phi/images/screenshots/phi-unlock.png deleted file mode 100644 index ab8e6a74a745c458d5142034c988f14757a10a8c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1749 zcmeAS@N?(olHy`uVBq!ia0y~yU~~YoKX9-C$wJ+|*+7AoOlRi+PiJR^f};Gi%$!sP z291fe6Ky>XJ4m$MU)B|*CHqF<(S(IoTNSh(tq9d{Y7Nld@+zU|rMyX|M^KCm>-DB) z`|eP7@$^{P7*@v*>_;x1^t|Zm^+!*0OUK8)$8z_6-+&?bBKxEer1~;TEzliv9SbxAvf9fUgHRgI3lFd5fI?c8hXRy!n(;xiq6kH<^OMZJ^jSe z39Fgh`dF_la4h@#p#H<|?O}yQhrGGe8}Er9|0%)xtE@5XaN)jw+2y57Eb|++_dZ^4 z+BnnylC-RD8H>xd#_rdB%ib_fw?1%Tvf}Jb+N_zJN0mO*x!s?_&X(VJVb=BS-z@#) z8+5*E)iTS-FeR&=iu+z!USEFy-`dRY@7XOAiYEBSbgcwN3tN)6y9>i>hBplN(yz>3 z1{C2e@Q5sCVBi)8VMc~ob0mO*>?NMQuI$g4___EsCSFi@#lXOF$-KHxb(uj1m)iYTZ27S(yT5+bpLutF z74P>5a+OF_j6dwZ@5}e>z(S+73T!SbO`LLN4{noLeC=`k=JhK#=(?5PDPpMz%L%h- z?CXnLw4ugiUHvn|uI}~nda@4F-G83`dGn*k;TRHIqwO72}UQRev5tK<458tbuEqV zzfScz_4Q2(o5gOC_5a`6<==PS&vnjxb>U)Vox@Yr53C1P_rs!#V z_s?F$#LRR5SALWhN z*Y8)W&%BkJQ7K+=7xjNA|t?%aH9hW9{NKcRr=x`MC6HU4ue{di%3r^|Z53f7r<_&DGQWUq7Yl z``+>t+t1hj75wymaMP~#=Txr36+4B!O!VrnecQfgib9=%Mnm{+`Gj}tZSS!r{r{?Q zB=woiq0s+V1oY}TYrZ`3jQ;!gU6uY{H~rahJ@>qB&zG83|Ft&r!MEvg@ptU?dOp0~ z!cy^q z#kF_W3oy>fT6%i*JbT~IJNGFx=r1m7Jg^9$7%1gd@)jKVcU5kG z`Rg}7=LO#8pU$h$;GMw0$RglCAwjtbASY14Az+_S$2BYh6bH*7bd7)mwzz&!w2!fM Xktu&B$DT#N0*}Gd)z4*}Q$iB}fFo?H diff --git a/docs/n0110-phi/images/screenshots/phi-write.png b/docs/n0110-phi/images/screenshots/phi-write.png deleted file mode 100644 index 5bd2dc14d6950b574215db529459a810e8c61434..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1630 zcmeAS@N?(olHy`uVBq!ia0y~yU~~YoKX9-C$wJ+|*+7AoOlRi+PiJR^f};Gi%$!sP z291fe6Ky>XJ4m$MU)B|*CHqF<(S(IoTNSh(tq9d{Y7Nld@+zU|rMyX|M^KCm>-DB) z`|eP7@$^{P7*@v*>_;x1^t|Zm^+!*0OUK8)$8z_6-+&?bBKxEer1~;TEzliv9SbxAvf9fUgHRgI3lFd5fI?c8hXRy!n(;xiq6kH<^OMZJ^jSe z39Fgh`dF_la4h@#p#H<|?O}yQhrGGe8}Er9|0%)xtE@5XaN)jw+2y57Eb|++_dZ^4 z+BnnylC-RD8H>xd#_rdB%ib_fw?1%Tvf}Jb+N_zJN0mO*x!s?_&X(VJVb=BS-z@#) z8+5*E)iTS-FeR&=iu+z!USEFy-`dRY@7XOAiYEBSbgcwN3tN)6y9>i>hBplN(yz>3 z1{C2e@Q5sCVBi)8VMc~ob0mO*>?NMQuI$g4__+jmDkuGZ!oa{1?djqeQgQ3;-Me9r z6+{{WXFUDA-{{_%*059l98*-P1eDx$+T`ZeNamj>3`G#M-^Y_`6SHH43cjoKc zMO*gG%)bA(w6XKwU(VAWF^`r^*5b4C&#bjRsy|QS&%Enma<5*0nQZ=VzwTbkotGX7 zuiv)sOHp-h*V?=0zw)K$=4A_~ytP=p-+secmK|1Z);}yukDd{kW)z&U%4g-v1KCDK zGmjnm82rp|>5sQos)wI4S3I4p?Hg5YlUU@_`t@kr@f|X54E|kFxu>FK56=6#^w3{j z;Va7z$!NXqViwl2QEPBtKIhWz-7l9+u6a@!b-(r;>$>zNDb9$OTeWPTmDcWju-xg+ z(FyF`{r0S3`yO-UNF1N9H^ZmDxj)^B{ji{C&e;_w;ETXv2!9{u~x zP<`#b@zH(V@u$z zCTW|ETAH44wfdUH$G7>PGvGPoyi*?s5BR4cvb+41*<*Dv0m^HcP;*T31L*#!=$8ZbP0l+XkKVJlB2 diff --git a/docs/n0110-phi/install-epsilon-18-2-0.md b/docs/n0110-phi/install-epsilon-18-2-0.md deleted file mode 100644 index 3fac42b7..00000000 --- a/docs/n0110-phi/install-epsilon-18-2-0.md +++ /dev/null @@ -1,53 +0,0 @@ ---- -title: "Install Epsilon 18.2.0" -sidebar_position: 3 ---- - -### Required Reading - -We will now install Epsilon 18.2.0 - -:::info - -If you are not sure if you can install Epsilon 18.2.0, go check [this page](check-version-change-eligibility) - -::: - - -### What You Need - -- A chromium-based browser (we recommend using [chromium](https://www.chromium.org/chromium-projects/) directly) -- Epsilon 18.2.0 `18-2-0.dfu` (since Numworks deleted this file from their website because of Phi, we cannot give you a link here) -- Python ([Link for Windows and macOS](https://www.python.org/)) -- This Python script: [Linux and macOS version](images/unpack.py), [Windows version](images/unpack-win.py) - -### Section I - Extracting the external binary - -Since Epsilon is now proprietary, we can't distribute the external flash image directly. -We thus have to make you extract it. - -1. Install Python on your platform -2. Download Epsilon 18.2.0 -3. Create a new folder -4. Put the Python script in that folder -5. Put 18-2-0.dfu in that folder -6. Run the script - -You should now have an internal.bin and an external.bin file - -### Section II - Install - -1. Open [WebDFU](https://ti-planet.github.io/webdfu_numworks/n0110/) in a chromium-based browser -2. Hold the 6 key on your numworks and press the reset button -3. You should now see the Epsilon bootloader interface -4. Select `external.bin` in WebDFU -5. Click "flash external" -6. Once flashing is done, press the reset button on your Numworks - -You should now see version 18.2.0 in Settings > About. - -:::caution - -If it is not the case or your Numworks doesn't boot, you can only use an [alternate method](n0110-is-locked#alternate-methods). - -::: diff --git a/docs/n0110-phi/n0110-is-locked.md b/docs/n0110-phi/n0110-is-locked.md deleted file mode 100644 index f1856acb..00000000 --- a/docs/n0110-phi/n0110-is-locked.md +++ /dev/null @@ -1,54 +0,0 @@ ---- -title: "Is your calculator locked ? (N0110)" -sidebar_position: 1 ---- - -This page will tell you if you need to unlock your calculator and how. - -#### Section I - Epsilon Version check - -1. Power on your device -2. Go in the settings app -3. Go in "about" -4. Look at the "Software version" or "Epsilon version" field. -5. This is your Epsilon version. - -#### Section II - Flash lock check - -1. Press the "6" key -2. While pressing the "6" key, press the reset button at the back of the device. - -If you see a screen like this one, you can proceed : -![Epsilon 16 bootloader](images/screenshots/e16bl.png) - -:::caution - -If the screen stays black and the LED turns red, STOP - your calculator is already unlocked! Continue from [here](n0110-now-what). - -::: - -Press the reset button at the back of the calculator to return to the firmware. - -#### Section III - Select a Method - -Use the version table below to select a method. A few things to note: - + The version table below is *inclusive*. For example, "from 16.3.0 to 18.0.0" includes 16.3.0, 18.0.0, and all versions in between. - + Version 16.4.3 does not follow this rule. - -| System Version | What to do | -|----------------|----------------------------------------------------------------------| -| 11.2.0-16.2.0 | [Now what ?](n0110-now-what) | -| 16.3.0-16.4.2 | [Phi](phi) | -| 16.4.3 | [Install Epsilon 18.2.0](install-epsilon-18-2-0) | -| 17.0.0-18.2.0 | [Phi](phi) | -| 18.2.3 | [Install Epsilon 18.2.0](install-epsilon-18-2-0) | -| 19.0.0-21.2.0 | [Check version change eligibility](check-version-change-eligibility) | - ---- -#### Alternate Methods - -If possible, you should follow one of the software methods listed above. - -Otherwise, methods that work on all versions are available, but require additional hardware: - -1. [Hardware Unlock](n0110-hardware-unlock) - requires special tools diff --git a/docs/n0110-phi/phi-now-what.md b/docs/n0110-phi/phi-now-what.md deleted file mode 100644 index cde23843..00000000 --- a/docs/n0110-phi/phi-now-what.md +++ /dev/null @@ -1,34 +0,0 @@ ---- -title: "Now What (Phi) ?" -sidebar_position: 5 ---- - -You now have multiple choices. You can: -- Install a custom bootloader and continue using Epsilon >= 16 -- Install a custom firmware - -# Choice I - Install a custom bootloader - -If you wish to continue using Epsilon >= 16 while still being able to install a custom firmware, you can install a custom bootloader : -1. Press 3 -2. Press OK to confirm -3. You should see something like this : -![Phi launch screen](images/screenshots/phi-write.png) - -The "Write flash" stage can take a bit of time. You'll be put back on the main menu after a second, when the flashing is done. - -Press 4, then OK. You should now boot back into Epsilon. - -:::caution - -If you don't boot back into Epsilon, please join the [Omega Discord](https://discord.gg/X2TWhh9) and ask for help. - -::: - -### Continue to [Final checks](final-checks) -{: .notice--primary} - -## Choice II - Install a CFW - -Go to [choose a CFW](choose-a-cfw) -{: .notice--primary} diff --git a/docs/n0110-phi/phi.md b/docs/n0110-phi/phi.md deleted file mode 100644 index 116caef5..00000000 --- a/docs/n0110-phi/phi.md +++ /dev/null @@ -1,67 +0,0 @@ ---- -title: "Installing Phi" -sidebar_position: 4 ---- - -### Required Reading - -Phi has multiple entrypoints (method of launching). -The exploit used at the moment is compatible with Epsilon 16.3.0 trough 18.2.0. - -### What You Need - -- A chromium-based browser (we recommend using [chromium](https://www.chromium.org/chromium-projects/) directly) -- The [Phi Installer](https://phi.getomega.dev/) - -### Section I - Installing Phi - -1. Power on your device -2. Plug your device to a computer -3. Open Chromium -4. Go to the [Phi Installer](https://phi.getomega.dev/) -5. Click "Connect to Numworks calculator" and select your calculator -6. The calculator will show a message reading "Third party applications" -7. Press Back - -### Section II - Running Phi - -1. Scroll down in the apps list and select "Phi Installer" -2. Press OK -3. The screen should blink and you should see a screen similar to this one: - -![Phi launch screen](images/screenshots/phi-launch.png) - -:::info - -If the screen turns Yellow, the version or Epsilon you're using isn't yet supported. You may need to [change your version](check-version-change-eligibility). - -::: - -:::caution - -If the screen turns Red, the exploit failed. Reset the calculator and try again. If it doesn't work the second time, please join the [Omega Discord](https://discord.gg/X2TWhh9). - -::: - -### Section III - Unlocking the calculator - -We are now going to unlock the internal flash and remove the write protection: - -1. Press 1 to unlock the internal flash. -2. Press OK to confirm -3. You should see something like this : -![Phi unlock screen](images/screenshots/phi-unlock.png) - -The "Reset RDP" stage can take a bit of time. You'll be put back on the main menu after a second, when the unlocking is done. - -### Section IV - Erasing the internal flash - -Removing the write protection should have erased the internal flash, but we are going to do it again, just to be sure: - -1. Press 2 to reset the internal flash -2. Press OK to confirm -3. You should see something like this : -![Phi erase screen](images/screenshots/phi-erase.png) - -The "Erase flash" stage can take a bit of time. You'll be put back on the main menu after a second, when the erasing is done. - diff --git a/docs/n0110/hardware/n0110-hardware-unlock.md b/docs/n0110/hardware/n0110-hardware-unlock.md index 493d8d8f..87a2b854 100644 --- a/docs/n0110/hardware/n0110-hardware-unlock.md +++ b/docs/n0110/hardware/n0110-hardware-unlock.md @@ -1,5 +1,6 @@ --- title: "Hardware unlock (N0110)" +sidebar_position: 1 --- ### Requiered reading diff --git a/docs/n0110/n0110-now-what.md b/docs/n0110/n0110-now-what.md index 3239250f..62e5d3b8 100644 --- a/docs/n0110/n0110-now-what.md +++ b/docs/n0110/n0110-now-what.md @@ -23,9 +23,7 @@ you can install a patched bootloader : You can now hold 4 and reset. You'll boot into the soft bootloader. From there, you can install Epsilon from [Numworks' website](https://my.numworks.com/devices/upgrade). Continue to [Final checks](final-checks) -{: .notice--primary} ### Choice II - Install a CFW Go to [choose a CFW](choose-a-cfw) -{: .notice--primary} diff --git a/docs/n0110/phi/check-version-change-eligibility.md b/docs/n0110/phi/check-version-change-eligibility.md index 5a901be0..e5b55cc8 100644 --- a/docs/n0110/phi/check-version-change-eligibility.md +++ b/docs/n0110/phi/check-version-change-eligibility.md @@ -1,6 +1,6 @@ --- title: "Check version change eligibility" -sidebar_position: 2 +sidebar_position: 1 --- ### Introduction diff --git a/docs/n0110/phi/install-epsilon-18-2-0.md b/docs/n0110/phi/install-epsilon-18-2-0.md index 3fac42b7..e6b24504 100644 --- a/docs/n0110/phi/install-epsilon-18-2-0.md +++ b/docs/n0110/phi/install-epsilon-18-2-0.md @@ -1,6 +1,6 @@ --- title: "Install Epsilon 18.2.0" -sidebar_position: 3 +sidebar_position: 2 --- ### Required Reading diff --git a/docs/n0110/phi/phi-now-what.md b/docs/n0110/phi/phi-now-what.md index cde23843..5cce96a7 100644 --- a/docs/n0110/phi/phi-now-what.md +++ b/docs/n0110/phi/phi-now-what.md @@ -1,6 +1,6 @@ --- title: "Now What (Phi) ?" -sidebar_position: 5 +sidebar_position: 4 --- You now have multiple choices. You can: diff --git a/docs/n0110/phi/phi.md b/docs/n0110/phi/phi.md index 116caef5..76fd1a66 100644 --- a/docs/n0110/phi/phi.md +++ b/docs/n0110/phi/phi.md @@ -1,6 +1,6 @@ --- title: "Installing Phi" -sidebar_position: 4 +sidebar_position: 3 --- ### Required Reading diff --git a/docs/no-custom/restore-stock-firmware.md b/docs/no-custom/restore-stock-firmware.md index b9ad1000..37aac3a7 100644 --- a/docs/no-custom/restore-stock-firmware.md +++ b/docs/no-custom/restore-stock-firmware.md @@ -2,8 +2,11 @@ title: "Restore Stock Firmware" --- +:::danger + Restoring your calculator to stock firmware **WILL LOCK IT** and you won't be able to install any CFW on it ever again, unless you use a hardware method to unlock it again. We highly advise using the bootloader from any compatible CFW and [install Epsilon from softloader](install-epsilon-from-softloader) to still use the latest versions without locking your calculator. -{: .notice--warning} + +::: This page will tell you how to go back to a fully stock firmware and therefore locking your calculator. From 2a3d6136a0de82904f3b46784ed0514024c0b8f3 Mon Sep 17 00:00:00 2001 From: Rathmox Date: Sun, 17 Sep 2023 21:48:02 +0200 Subject: [PATCH 11/51] add the last pages --- docs/faq.md | 24 ++++++ docs/how-does-it-work.md | 102 +++++++++++++++++++++++++ docs/n0100/n0100-now-what.md | 12 +++ docs/troubleshooting.md | 140 +++++++++++++++++++++++++++++++++++ 4 files changed, 278 insertions(+) create mode 100644 docs/faq.md create mode 100644 docs/how-does-it-work.md create mode 100644 docs/n0100/n0100-now-what.md create mode 100644 docs/troubleshooting.md diff --git a/docs/faq.md b/docs/faq.md new file mode 100644 index 00000000..a25d1879 --- /dev/null +++ b/docs/faq.md @@ -0,0 +1,24 @@ +--- +title: "FAQ" +--- + +# Pre-Installation FAQ + +**Q:** *Will this guide void my warranty ?* +**A:** No, at least not in europe. This is a software modification, if Numworks +refuses you a legitimate warranty claim after that, sue the fuck out of them. + +**Q:** *How risky is jailbreaking my Numworks?* +**A:** Full on hardware bricks are quasi-impossible. The worst you can get is a +calculator with write protection enabled with an empty flash, which can always be solved +with a hardware mod, but the chance of having that kind of issue is very very unlikely. + +**Q:** *Can I do this without a computer (e.g. an Android phone)?* +**A:** All you need is a device capable of running a web browser supporting WebUSB. Android +phones can be used with an USB OTG cable. + +# Post-Installation FAQ + +**Q:** *Is it safe to update Epsilon while having a CFW installed ?* +**A:** At the moment, Numworks' installer doesn't check for modded bootloaders, neither does +Epsilon, so yes (unless you don't have a bootloader which is probably not the case). diff --git a/docs/how-does-it-work.md b/docs/how-does-it-work.md new file mode 100644 index 00000000..36ff6883 --- /dev/null +++ b/docs/how-does-it-work.md @@ -0,0 +1,102 @@ +--- +title: "How does it work ?" +--- + +This page is made to explain how does the calculator work and what happens when we unlock it +You will also learn a bit from the history of the calculator + +### 1 - How is the calculator made ? + +First, understand that the power button of the calculator only put the it in sleep mode, instead of powering it down completely. The calculator powers on automatically when the battery is connected. The reset button on the back only cuts the power while it's held. When you release it, the calculator powers on. + +There are currently 3 models of Numworks calculators: n0100, n0110, n0120. + +The calculator uses a MCU (Microcontroller Unit) made by ST Microelectronics to do all the work. +- The MCU used in n0100 is the [STM32F412](https://www.st.com/en/microcontrollers-microprocessors/stm32f412.html). This one has one storage partition, named "flash" because it's flash memory. +- The MCU used in n0110 is the [STM32F730](https://www.st.com/en/microcontrollers-microprocessors/stm32f730r8.html). This one has 2 flashs. Named "internal" and "external" +- The MCU used in n0120 is the [STM32H725](https://www.st.com/en/microcontrollers-microprocessors/stm32h725-735.html). This one also has 2 flashs, but is also more powerful than n0110's one + +So we can make 2 categories: +- n0100: With internal flash only +- n0110 and n0120: With internal and external flash + +:::note + +Every calculator, thanks to the MCU, has a recovery mode. It can usually be accessed by holding 6 while the calculator is starting (on n0100 it has to be plugged into a PC when it starts, you don't need to hold 6). It's represented by a black screen with the LED turned on red. But if you try it may not behave like this, we will understand why later. + +::: + +### 2 - How is the hardware used ? + +With 1 flash, it's easy to understand, everything is in the flash, this is the case on n0100. But with 2 flashs, it's more complicated: + +- The External flash: It contains the firmware, what you usually know about, the interface, the calculation program, and everything you use from this calculator. +- The Internal flash: It contains a small program made to start what is installed in the External flash. It's the first thing run by the calculator, if the internal flash is empty, the calculator can't start, and the LED turns red. + +### 3 - What is installed in the flashs ? + +The internal flash used to store a simple program that just starts the firmware installed in the external flash. But nowdays, since Epsilon 16, it's more complicated: + +Since Epsilon 16, the internal flash now contains a bootloader that is used to lock the calculator. +- **How does it do that ?** It check is the firmware installed is signed by Numworks, if it isn't, the bootloader doesn't start the firmware. +- **Can't the recovery mode help ?** Numworks thought about that, they configured the MCU to prevent writing in the internal flash and they put a message to tell that it's in recovery mode while it acually isn't. +- **Why isn't the n0100 locked ?** The n0100 has only one flash, and may need to be updated. So locking it was stupid as it would prevent updating it without special debugging tools. + +:::note + +Now that we know how Numworks uses the calculator, let's know how custom firmwares use it. + +::: + +### 4 - What changes with a CFW ? + +Originally, a CFW was just replacing the external flash. To bypass some limitations, some CFWs like Omega and Delta started changing the internal flash, but it was not far from what Numworks originally did. + +Delta introduced external apps, which were then reused in Omega. They are installed in the external flash alongside the firmware. A similar system has been added to Epsilon later. + +But everything changed when custom bootloaders were released alongside with Phi. + +Most custom bootloaders contains more features like being able to have 2 firmwares stored on the external flash and starting one or another. And preventing writing over the internal flash from the firmware + +:::note + +Now that you understand how the internal flash works, let's understand how Phi works + +::: + +### 5 - How does Phi work ? + +:::info + +Phi is **NOT** a program or exploit that directly allows CFW to run and doesn't do anything once the calculator is unlocked + +::: + +Phi is an app that can unlock calculators running Epsilon between 16.3.0 and 18.2.0 (but not 16.4.3) + +It can be installed on Epsilon and exploits a bug named [Screenhax](https://blog.mfriess.xyz/screenhax/) to erase the internal flash and write over it from Epsilon, and also re-enabling recovery mode. + +It can also install a simple bootloader. + +Numworks patched it by releasing Epsilon 18.2.3. + +### 6 - So, what happens when you follow the guide ? + +The process in the guide is now easy to understand: +- on n0100 we just start in recovery mode then erase the internal flash +- on n0110 we erase the internal flash, unlock and re-enable the recovery mode to install whatever we want on both flashs + +### 7 - Why n0120 can't be unlocked ? + +The n0120 is in a particular case: +It can be unlocked with a hardware modification, but the reason why we don't advertize it in this guide is because there is no CFW you can install on it. + +The n0120 was released first with Epsilon 16, but a patched version that can't be unlocked with Phi. So there is no n0120 that can currently be unlocked without hardware. + +Also, since Epsilon 16, Numworls stopped giving the drivers for the MCU, these drivers are requiered to create a bootloader. Developers can get them from Epsilon 15 for n0100 and n0110, but for n0120, they just never got released publically (and they can't get extracted from Epsilon), so they need to be developed from scratch which is really hard and long. This is why there is no CFW for n0120, and we can't tell you how to unlock it. + +:::note + +Now you understand everything about how unlocking the calculator works. + +::: diff --git a/docs/n0100/n0100-now-what.md b/docs/n0100/n0100-now-what.md new file mode 100644 index 00000000..e6ff5bd0 --- /dev/null +++ b/docs/n0100/n0100-now-what.md @@ -0,0 +1,12 @@ +--- +title: "Now What (N0100) ?" +--- + +### GG! + +You are already the proud owner of an unlocked Numworks. More specifically, the N0100 model, which came out in 2017. +Due to technical limitations on the hardware of this model, Numworks decided not to lock it. + +___ + +You can now [choose a CFW](choose-a-cfw) diff --git a/docs/troubleshooting.md b/docs/troubleshooting.md new file mode 100644 index 00000000..72468faf --- /dev/null +++ b/docs/troubleshooting.md @@ -0,0 +1,140 @@ +--- +title: "Troubleshooting" +--- + +### Black screen and red LED + +Your calculator is in Recovery mode, it's waiting to receive a firmware, so it's unlocked. **If you update from Numworks' website, your calculator will be locked** + +[Choose a CFW](choose-a-cfw) to install on your calculator. (If you want to install Epsilon without locking your calculator, install first a compatible CFW while in recovery mode, then install Epsilon while NOT in recovery mode) + +### Black screen, yellow cable, and `numworks.com/rescue` + +This is Numworks' bootloader. It shows up when the calculator is locked and you started the Recovery mode by holding 6 and pressing reset, or when the calculator couldn't start. + +If you want to unlock your calculator, don't go to the `numworks.com/rescue` website, but follow the guide from [Installing Epsilon 18.2.0](install-epsilon-18-2-0). + +### Black screen, nothing else + +There are 4 possible reasons: +- Your calculator is in sleep mode, press the power button to turn it back on. +- Your calculator may have any wierd bug, try pressign the reset button on the back. +- Your calculator may be discharged, try letting it charge a few minutes. +- The battery is disconnected, you may need to open your calculator to plug it back in. + +If this doesn't solve the problem, contact Numworks. + +### Huge battery consumption + +There are 2 possible reasons: +- You have enabled the clock in the settings, some custom firmwares include it. The clock consumes a lot of battery and it's highly recommended to disable it. +- Your calculator keeps the led green. This is a hardware issue that tricks the calculator into thinking it's constantly charging and so fully charged while it's not the case. You should contact Numworks to replace your calculator + +### Calculator not detected + +it means the driver or config file isn't installed on Windows or Linux. + +Open the [Update page](https://numworks.com/update/) on Numworks' website and it will give it and tell you how to install it. **Don't plug in your calculator to make sure you don't lock it** + +If you are using Linux, it may still not be detected. It can happen if your web browser is installed as a flatpak. + +In this case, you will need to install [Flatseal](https://flathub.org/apps/com.github.tchx84.Flatseal), select your web browser, and add `/run/udev` in the "Other files" into the "Filesystem" category. + +You can also run this command: `flatpak override --user --filesystem=/run/udev [Application ID]` (Replace `[Application ID]` with your web browser's ID, try to run `flatpak list` to find it) + +Don't forget that you may need to restart your web browser if you unplug and replug the calculator. + +### "CommandName is not defined" + +You are trying to do something with the calculator but the calculator isn't in the right mode, like trying to install apps with the calculator in Recovery Mode or on n0100. + +Try to use the right mode, for external apps just run it in normal mode. + +### "Unable to claim interface" + +This error is displayed when you try to connect your calculator but it's already used by another tab or software. It usually happens when you try to install external apps but the tab you used to install your custom firmware is still open. + +This can easily be fixed if you close the tab or software already connected to it. Only one tab (or software) at a time can establish the connection to the calculator. + +### "Could not detect the calculator model" / "N????" + +This means your calculator is protected against CFM installation. If you want to install CFW, you need to unlock it. + +Follow [this guide](get-started) to unlock it. + +### Recovery mode (Black Screen + Red Led), calculator not recognized + +Your calculator looks like it's in recovery mode but it isn't. + +Hold 6 and click reset to start it in recovery mode, it will look the same but this time, it will be recognized. + +### "Memory is corrupted" when adding python scripts + +It can happen when the custom bootloader is too old. To update it : go to your custom firmware's website, put the calculator in recovery mode (holding 6 and clicking reset on the calculator's back), connect the calculator to the computer, then select "recovery" on custom firmware's website. + +### Screen and led blinking + +You are trying to run Epsilon 19 with an old custom bootloader. + +Update the bootloader : go to your custom firmware's website, put the calculator in recovery mode (holding 6 and clicking reset on the calculator's back), connect the calculator to the computer, then select "recovery" on custom firmware's website. + +### Installation takes infinite amout of time + +This can happen on Omega's website and on Numworks' website. Unless your calculator is locked, the firmware is already installed but the website is trying to boot the calculator and it can't. + +Just click reset on the calculator and it should be fixed + +### "Address 0x90000000 outside of memory map" + +You are trying to flash the external partition but the calculator is not in the right mode. This can't work. + +You need to flash while in Numworks' bootloader, the custom bootloader or recovery mode flasher (the screen saying "Recovery mode" when installing Omega in Recovery mode) + +### Calculator restarts when trying to install custom firmware + +Your calculator is running Epsilon 19 or higher, it can happen when the calculator is locked or when you are running it from custom bootloader. + +Just restart the calculator in bootloader or any other firmware that isn't Epsilon 19 or higher + +### "ControlTransferIn" / "ControlTransferOut" + +Something interrupted the connection with the calculator. + +Make sure you are in the right mode and no other app or tab is using the calculator. + +### "DFU DOWNLOAD FAILED" + +You may not be using the right WebDFU, make sure you are using [TI-Planet's WebDFU](https://ti-planet.github.io/webdfu_numworks/n0110/) + +### "Access Denied" when trying to connect the calculator in Recovery mode + +This can happen on Windows and Linux: +- On Linux it means you haven't installed the config file, [Numworks' update page](https://numworks.com/update/) will give it to you. +- On Windows it means you are in recovery mode and the wrong driver is selected, there are a few steps you can follow to fix this + 1. If it's not installed, install the driver from [Numworks' update page](https://numworks.com/update/) + 2. Open Device manager, press Win+R, type `devmgmt.msc`, and press enter + 3. Search for a device with STM in the name + 4. Right click on it, and press "Update Driver" + 5. Dont search automatically for drivers, Search for it manually. Then decide to choose in a list. + 6. Select the Numworks driver, then press next + 7. The driver should be correctly installed, you can now connect in recovery mode and it should work. + +### Crash when starting Upsilon + +Upsilon tends to crash when you start it and the calculator is connected to a PC. Disconnect it before starting. + +### In Dualboot, KhiCAS makes the calculator crash + +KhiCAS is a heavy app and dual-booting with this app installed is not possible. + +You may have installed KhiCAS, then Epsilon, which erased a part of KhiCAS, preventing it from starting. + +If you want to use KhiCAS, you will need to reinstall it. + +___ + +:::info + +### Is you error not listed ? The provided solution didn't fix your problem ? Don't hesitate to ask on the [Omega Discord](https://discord.gg/X2TWhh9) + +::: From f8eaabcd323a743f4c320925acfede894a744af7 Mon Sep 17 00:00:00 2001 From: Rathmox Date: Sun, 17 Sep 2023 21:54:47 +0200 Subject: [PATCH 12/51] move images and fix notices --- .../n0110/{phi/images/screenshots => img}/e16bl.png | Bin docs/n0110/n0110-is-locked.md | 2 +- .../phi/{images/screenshots => img}/phi-erase.png | Bin .../phi/{images/screenshots => img}/phi-launch.png | Bin .../phi/{images/screenshots => img}/phi-unlock.png | Bin .../phi/{images/screenshots => img}/phi-write.png | Bin docs/n0110/phi/phi-now-what.md | 4 +--- docs/n0110/phi/phi.md | 6 +++--- 8 files changed, 5 insertions(+), 7 deletions(-) rename docs/n0110/{phi/images/screenshots => img}/e16bl.png (100%) rename docs/n0110/phi/{images/screenshots => img}/phi-erase.png (100%) rename docs/n0110/phi/{images/screenshots => img}/phi-launch.png (100%) rename docs/n0110/phi/{images/screenshots => img}/phi-unlock.png (100%) rename docs/n0110/phi/{images/screenshots => img}/phi-write.png (100%) diff --git a/docs/n0110/phi/images/screenshots/e16bl.png b/docs/n0110/img/e16bl.png similarity index 100% rename from docs/n0110/phi/images/screenshots/e16bl.png rename to docs/n0110/img/e16bl.png diff --git a/docs/n0110/n0110-is-locked.md b/docs/n0110/n0110-is-locked.md index f1856acb..0ec3ca16 100644 --- a/docs/n0110/n0110-is-locked.md +++ b/docs/n0110/n0110-is-locked.md @@ -19,7 +19,7 @@ This page will tell you if you need to unlock your calculator and how. 2. While pressing the "6" key, press the reset button at the back of the device. If you see a screen like this one, you can proceed : -![Epsilon 16 bootloader](images/screenshots/e16bl.png) +![Epsilon 16 bootloader](img/e16bl.png) :::caution diff --git a/docs/n0110/phi/images/screenshots/phi-erase.png b/docs/n0110/phi/img/phi-erase.png similarity index 100% rename from docs/n0110/phi/images/screenshots/phi-erase.png rename to docs/n0110/phi/img/phi-erase.png diff --git a/docs/n0110/phi/images/screenshots/phi-launch.png b/docs/n0110/phi/img/phi-launch.png similarity index 100% rename from docs/n0110/phi/images/screenshots/phi-launch.png rename to docs/n0110/phi/img/phi-launch.png diff --git a/docs/n0110/phi/images/screenshots/phi-unlock.png b/docs/n0110/phi/img/phi-unlock.png similarity index 100% rename from docs/n0110/phi/images/screenshots/phi-unlock.png rename to docs/n0110/phi/img/phi-unlock.png diff --git a/docs/n0110/phi/images/screenshots/phi-write.png b/docs/n0110/phi/img/phi-write.png similarity index 100% rename from docs/n0110/phi/images/screenshots/phi-write.png rename to docs/n0110/phi/img/phi-write.png diff --git a/docs/n0110/phi/phi-now-what.md b/docs/n0110/phi/phi-now-what.md index 5cce96a7..51b0c7f9 100644 --- a/docs/n0110/phi/phi-now-what.md +++ b/docs/n0110/phi/phi-now-what.md @@ -13,7 +13,7 @@ If you wish to continue using Epsilon >= 16 while still being able to install a 1. Press 3 2. Press OK to confirm 3. You should see something like this : -![Phi launch screen](images/screenshots/phi-write.png) +![Phi launch screen](img/phi-write.png) The "Write flash" stage can take a bit of time. You'll be put back on the main menu after a second, when the flashing is done. @@ -26,9 +26,7 @@ If you don't boot back into Epsilon, please join the [Omega Discord](https://dis ::: ### Continue to [Final checks](final-checks) -{: .notice--primary} ## Choice II - Install a CFW Go to [choose a CFW](choose-a-cfw) -{: .notice--primary} diff --git a/docs/n0110/phi/phi.md b/docs/n0110/phi/phi.md index 76fd1a66..209239aa 100644 --- a/docs/n0110/phi/phi.md +++ b/docs/n0110/phi/phi.md @@ -29,7 +29,7 @@ The exploit used at the moment is compatible with Epsilon 16.3.0 trough 18.2.0. 2. Press OK 3. The screen should blink and you should see a screen similar to this one: -![Phi launch screen](images/screenshots/phi-launch.png) +![Phi launch screen](img/phi-launch.png) :::info @@ -50,7 +50,7 @@ We are now going to unlock the internal flash and remove the write protection: 1. Press 1 to unlock the internal flash. 2. Press OK to confirm 3. You should see something like this : -![Phi unlock screen](images/screenshots/phi-unlock.png) +![Phi unlock screen](img/phi-unlock.png) The "Reset RDP" stage can take a bit of time. You'll be put back on the main menu after a second, when the unlocking is done. @@ -61,7 +61,7 @@ Removing the write protection should have erased the internal flash, but we are 1. Press 2 to reset the internal flash 2. Press OK to confirm 3. You should see something like this : -![Phi erase screen](images/screenshots/phi-erase.png) +![Phi erase screen](img/phi-erase.png) The "Erase flash" stage can take a bit of time. You'll be put back on the main menu after a second, when the erasing is done. From 9ee6683b7bc51aaa481b797a566aa72167be7cdb Mon Sep 17 00:00:00 2001 From: Bloomy <90511192+BloomyInDev@users.noreply.github.com> Date: Mon, 18 Sep 2023 10:29:11 +0200 Subject: [PATCH 13/51] Refactoring time - Refactor Jekyll markdown links to Docusaurus markdown links - Move all static files in static folder - Adding some things (favicon, image) from the original guide - Starting to accept translated files --- docs/cfw/_category_.json | 2 +- docs/cfw/choose-a-cfw.md | 4 +- docs/cfw/install-epsilon-from-softloader.md | 4 +- docs/cfw/omega.md | 4 +- docs/cfw/upsilon.md | 4 +- docs/faq.md | 12 +- docs/intro.md | 8 +- docs/n0100/_category_.json | 8 ++ docs/n0100/n0100-now-what.md | 2 +- docs/n0110/hardware/n0110-hardware-unlock.md | 2 +- docs/n0110/n0110-is-locked.md | 5 +- docs/n0110/n0110-now-what.md | 2 +- .../phi/check-version-change-eligibility.md | 6 +- docs/n0110/phi/install-epsilon-18-2-0.md | 4 +- docs/n0110/phi/phi-now-what.md | 3 +- docs/n0110/phi/phi.md | 10 +- docs/no-custom/_category_.json | 8 ++ docs/troubleshooting.md | 6 +- docusaurus.config.js | 11 +- src/css/custom.css | 8 +- src/pages/index.module.css | 1 + {docs/n0110 => static}/img/e16bl.png | Bin static/img/favicon.ico | Bin 3626 -> 17134 bytes static/img/home-page-feature.jpg | Bin 0 -> 413322 bytes {docs/n0110/phi => static}/img/phi-erase.png | Bin {docs/n0110/phi => static}/img/phi-launch.png | Bin {docs/n0110/phi => static}/img/phi-unlock.png | Bin {docs/n0110/phi => static}/img/phi-write.png | Bin static/resources/unpack-win.py | 103 ++++++++++++++++++ static/resources/unpack.py | 98 +++++++++++++++++ 30 files changed, 275 insertions(+), 40 deletions(-) create mode 100644 docs/n0100/_category_.json create mode 100644 docs/no-custom/_category_.json rename {docs/n0110 => static}/img/e16bl.png (100%) create mode 100644 static/img/home-page-feature.jpg rename {docs/n0110/phi => static}/img/phi-erase.png (100%) rename {docs/n0110/phi => static}/img/phi-launch.png (100%) rename {docs/n0110/phi => static}/img/phi-unlock.png (100%) rename {docs/n0110/phi => static}/img/phi-write.png (100%) create mode 100644 static/resources/unpack-win.py create mode 100644 static/resources/unpack.py diff --git a/docs/cfw/_category_.json b/docs/cfw/_category_.json index 57d66468..af6f0a6f 100644 --- a/docs/cfw/_category_.json +++ b/docs/cfw/_category_.json @@ -3,6 +3,6 @@ "position": 5, "link": { "type": "generated-index", - "description": "bek" + "description": "What is possible with a CFW" } } diff --git a/docs/cfw/choose-a-cfw.md b/docs/cfw/choose-a-cfw.md index 28a7a01c..37048c6f 100644 --- a/docs/cfw/choose-a-cfw.md +++ b/docs/cfw/choose-a-cfw.md @@ -13,5 +13,5 @@ There are multiple CFWs you can install on your calculator, most of them install | CFW | Advantages | |--------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------| -| [Omega](omega) | The most popular CFW for Numworks, forked from Epsilon 15.5.0. It bings back symbolic calculation, allows installing external apps, and adds Python libraries | -| [Upsilon(upsilon)] | Forked from Omega, Upsilon brings more features and conveience compared to Omega, like a LaTeX reader, more storage for Python scripts, and a better bootloader | +| [Omega](/docs/cfw/omega) | The most popular CFW for Numworks, forked from Epsilon 15.5.0. It bings back symbolic calculation, allows installing external apps, and adds Python libraries | +| [Upsilon](/docs/cfw/upsilon) | Forked from Omega, Upsilon brings more features and conveience compared to Omega, like a LaTeX reader, more storage for Python scripts, and a better bootloader | diff --git a/docs/cfw/install-epsilon-from-softloader.md b/docs/cfw/install-epsilon-from-softloader.md index d0db6502..72edbcc3 100644 --- a/docs/cfw/install-epsilon-from-softloader.md +++ b/docs/cfw/install-epsilon-from-softloader.md @@ -28,11 +28,11 @@ We will now install Epsilon on one slot of your calculator, assuming you have a ### What You Need - A PC with a chromium-based browser (we recommend using [chromium](https://www.chromium.org/chromium-projects/) directly) -- A compatible custom bootloader installed (if you don't know, see [this page](choose-a-cfw)) +- A compatible custom bootloader installed (if you don't know, see [this page](/docs/cfw/choose-a-cfw)) ### Section I - Open the bootloader -If your CFW includes a custom bootloader that allows installing a firmware from it, you should now open the bootloader and make it ready to install anything. Some help can be found on [this page](choose-a-cfw) +If your CFW includes a custom bootloader that allows installing a firmware from it, you should now open the bootloader and make it ready to install anything. Some help can be found on [this page](/docs/cfw/choose-a-cfw) ### Section II - Install diff --git a/docs/cfw/omega.md b/docs/cfw/omega.md index fcced284..2f2d085d 100644 --- a/docs/cfw/omega.md +++ b/docs/cfw/omega.md @@ -5,7 +5,7 @@ sidebar_position: 2 :::info -You need an unlocked calculator. [To unlock it go here](get-started) +You need an unlocked calculator. [To unlock it go here](/docs/intro) ::: @@ -62,7 +62,7 @@ Omega support external apps, there are a few but they are useful. Here is how to You can install Epsilon on the bootloader without locking the calculator. -See [Install Epsilon from softloader](install-epsilon-from-softloader) +See [Install Epsilon from softloader](/docs/cfw/install-epsilon-from-softloader) #### Create your own version diff --git a/docs/cfw/upsilon.md b/docs/cfw/upsilon.md index 5435064c..29d496ee 100644 --- a/docs/cfw/upsilon.md +++ b/docs/cfw/upsilon.md @@ -5,7 +5,7 @@ sidebar_position: 3 :::info -You need an unlocked calculator. [To unlock it go here](get-started) +You need an unlocked calculator. [To unlock it go here](/docs/intro) ::: @@ -71,7 +71,7 @@ Upsilon support external apps, there are a few but they are useful. Here is how You can install Epsilon on the bootloader without locking the calculator. -See [Install Epsilon from softloader](install-epsilon-from-softloader) +See [Install Epsilon from softloader](/docs/cfw/install-epsilon-from-softloader) #### Create your own version diff --git a/docs/faq.md b/docs/faq.md index a25d1879..e3b492fe 100644 --- a/docs/faq.md +++ b/docs/faq.md @@ -4,21 +4,25 @@ title: "FAQ" # Pre-Installation FAQ -**Q:** *Will this guide void my warranty ?* +**Q:** *Will this guide void my warranty ?* + **A:** No, at least not in europe. This is a software modification, if Numworks refuses you a legitimate warranty claim after that, sue the fuck out of them. -**Q:** *How risky is jailbreaking my Numworks?* +**Q:** *How risky is jailbreaking my Numworks?* + **A:** Full on hardware bricks are quasi-impossible. The worst you can get is a calculator with write protection enabled with an empty flash, which can always be solved with a hardware mod, but the chance of having that kind of issue is very very unlikely. -**Q:** *Can I do this without a computer (e.g. an Android phone)?* +**Q:** *Can I do this without a computer (e.g. an Android phone)?* + **A:** All you need is a device capable of running a web browser supporting WebUSB. Android phones can be used with an USB OTG cable. # Post-Installation FAQ -**Q:** *Is it safe to update Epsilon while having a CFW installed ?* +**Q:** *Is it safe to update Epsilon while having a CFW installed ?* + **A:** At the moment, Numworks' installer doesn't check for modded bootloaders, neither does Epsilon, so yes (unless you don't have a bootloader which is probably not the case). diff --git a/docs/intro.md b/docs/intro.md index d0350507..5ca6d7de 100644 --- a/docs/intro.md +++ b/docs/intro.md @@ -17,7 +17,7 @@ This guide will refer to some names, before starting you have to know what these :::info -If you don't want to deeply modify your calculator, [there are still a few things you can do](what-to-do-locked). +If you don't want to deeply modify your calculator, [there are still a few things you can do](no-custom/what-to-do-locked). ::: @@ -38,7 +38,7 @@ Driver if you have Windows or Linux: open the [Rescue page](https://numworks.com | Calculator Model | What to do | |------------------|-------------------------------------------------------------------------------------------------| -| N0100 | [Your calculator is already unlocked](n0100-now-what) | -| N0110 | [Check if your calculator is locked](n0110-is-locked) | +| N0100 | [Your calculator is already unlocked](/docs/n0100/n0100-now-what) | +| N0110 | [Check if your calculator is locked](/docs/n0110/n0110-is-locked) | | N0115 | OMEGA NEEDS YOU | -| N0120 | [You can't install a CFW on it. But there are still a few things you can do](what-to-do-locked) | +| N0120 | [You can't install a CFW on it. But there are still a few things you can do](/docs/no-custom/what-to-do-locked) | diff --git a/docs/n0100/_category_.json b/docs/n0100/_category_.json new file mode 100644 index 00000000..0850cae3 --- /dev/null +++ b/docs/n0100/_category_.json @@ -0,0 +1,8 @@ +{ + "label": "N0100", + "position": 1, + "link": { + "type": "generated-index", + "description": "How to custom your Numworks N0100" + } +} diff --git a/docs/n0100/n0100-now-what.md b/docs/n0100/n0100-now-what.md index e6ff5bd0..1777c0ab 100644 --- a/docs/n0100/n0100-now-what.md +++ b/docs/n0100/n0100-now-what.md @@ -9,4 +9,4 @@ Due to technical limitations on the hardware of this model, Numworks decided not ___ -You can now [choose a CFW](choose-a-cfw) +You can now [choose a CFW](/docs/cfw/choose-a-cfw) diff --git a/docs/n0110/hardware/n0110-hardware-unlock.md b/docs/n0110/hardware/n0110-hardware-unlock.md index 87a2b854..a21ebe43 100644 --- a/docs/n0110/hardware/n0110-hardware-unlock.md +++ b/docs/n0110/hardware/n0110-hardware-unlock.md @@ -5,7 +5,7 @@ sidebar_position: 1 ### Requiered reading -The hardware unlock way requieres special tools. +The hardware unlock way require special tools. The goal is to force recovery mode to allow installation, your calculator should show a black screen and a red LED. diff --git a/docs/n0110/n0110-is-locked.md b/docs/n0110/n0110-is-locked.md index 0ec3ca16..d4571a8a 100644 --- a/docs/n0110/n0110-is-locked.md +++ b/docs/n0110/n0110-is-locked.md @@ -19,11 +19,12 @@ This page will tell you if you need to unlock your calculator and how. 2. While pressing the "6" key, press the reset button at the back of the device. If you see a screen like this one, you can proceed : -![Epsilon 16 bootloader](img/e16bl.png) + +![Epsilon 16 bootloader](/img/e16bl.png) :::caution -If the screen stays black and the LED turns red, STOP - your calculator is already unlocked! Continue from [here](n0110-now-what). +If the screen stays black and the LED turns red, STOP - your calculator is already unlocked! Continue from [here](/docs/n0110/n0110-now-what). ::: diff --git a/docs/n0110/n0110-now-what.md b/docs/n0110/n0110-now-what.md index 62e5d3b8..55181f49 100644 --- a/docs/n0110/n0110-now-what.md +++ b/docs/n0110/n0110-now-what.md @@ -26,4 +26,4 @@ Continue to [Final checks](final-checks) ### Choice II - Install a CFW -Go to [choose a CFW](choose-a-cfw) +Go to [choose a CFW](/docs/cfw/choose-a-cfw) diff --git a/docs/n0110/phi/check-version-change-eligibility.md b/docs/n0110/phi/check-version-change-eligibility.md index e5b55cc8..e5d5abbb 100644 --- a/docs/n0110/phi/check-version-change-eligibility.md +++ b/docs/n0110/phi/check-version-change-eligibility.md @@ -9,11 +9,11 @@ You may need to change Epsilon's version to unlock your calculator, we usually i ### If you have Epsilon 15 or lower -You don't need to change your version, just go to [Now What ?](n0110-now-what) +You don't need to change your version, just go to [Now What ?](/docs/n0110/n0110-now-what) ### If you have Epsilon 16 to 18.2.0 (but not 16.4.3) -You don't need to change your version, just go to [Phi](phi) +You don't need to change your version, just go to [Phi](/docs/n0110/phi) ### If you have Epsilon 16.4.3 or 18.2.3 @@ -36,6 +36,6 @@ ___ :::info -If you are not eligible, you need to use an [Alternate Method](n0110-is-locked#alternate-methods) +If you are not eligible, you need to use an [Alternate Method](/docs/n0110/n0110-is-locked#alternate-methods) ::: diff --git a/docs/n0110/phi/install-epsilon-18-2-0.md b/docs/n0110/phi/install-epsilon-18-2-0.md index e6b24504..36decc51 100644 --- a/docs/n0110/phi/install-epsilon-18-2-0.md +++ b/docs/n0110/phi/install-epsilon-18-2-0.md @@ -9,7 +9,7 @@ We will now install Epsilon 18.2.0 :::info -If you are not sure if you can install Epsilon 18.2.0, go check [this page](check-version-change-eligibility) +If you are not sure if you can install Epsilon 18.2.0, go check [this page](/docs/n0110/phi/check-version-change-eligibility) ::: @@ -19,7 +19,7 @@ If you are not sure if you can install Epsilon 18.2.0, go check [this page](chec - A chromium-based browser (we recommend using [chromium](https://www.chromium.org/chromium-projects/) directly) - Epsilon 18.2.0 `18-2-0.dfu` (since Numworks deleted this file from their website because of Phi, we cannot give you a link here) - Python ([Link for Windows and macOS](https://www.python.org/)) -- This Python script: [Linux and macOS version](images/unpack.py), [Windows version](images/unpack-win.py) +- This Python script: [Linux and macOS version](/resources/unpack.py), [Windows version](/resources/unpack-win.py) ### Section I - Extracting the external binary diff --git a/docs/n0110/phi/phi-now-what.md b/docs/n0110/phi/phi-now-what.md index 51b0c7f9..368c9e6e 100644 --- a/docs/n0110/phi/phi-now-what.md +++ b/docs/n0110/phi/phi-now-what.md @@ -13,7 +13,8 @@ If you wish to continue using Epsilon >= 16 while still being able to install a 1. Press 3 2. Press OK to confirm 3. You should see something like this : -![Phi launch screen](img/phi-write.png) + +![Phi launch screen](/img/phi-write.png) The "Write flash" stage can take a bit of time. You'll be put back on the main menu after a second, when the flashing is done. diff --git a/docs/n0110/phi/phi.md b/docs/n0110/phi/phi.md index 209239aa..9def1619 100644 --- a/docs/n0110/phi/phi.md +++ b/docs/n0110/phi/phi.md @@ -29,11 +29,11 @@ The exploit used at the moment is compatible with Epsilon 16.3.0 trough 18.2.0. 2. Press OK 3. The screen should blink and you should see a screen similar to this one: -![Phi launch screen](img/phi-launch.png) +![Phi launch screen](/img/phi-launch.png) :::info -If the screen turns Yellow, the version or Epsilon you're using isn't yet supported. You may need to [change your version](check-version-change-eligibility). +If the screen turns Yellow, the version or Epsilon you're using isn't yet supported. You may need to [change your version](/docs/n0110/phi/check-version-change-eligibility). ::: @@ -50,7 +50,8 @@ We are now going to unlock the internal flash and remove the write protection: 1. Press 1 to unlock the internal flash. 2. Press OK to confirm 3. You should see something like this : -![Phi unlock screen](img/phi-unlock.png) + +![Phi unlock screen](/img/phi-unlock.png) The "Reset RDP" stage can take a bit of time. You'll be put back on the main menu after a second, when the unlocking is done. @@ -61,7 +62,8 @@ Removing the write protection should have erased the internal flash, but we are 1. Press 2 to reset the internal flash 2. Press OK to confirm 3. You should see something like this : -![Phi erase screen](img/phi-erase.png) + +![Phi erase screen](/img/phi-erase.png) The "Erase flash" stage can take a bit of time. You'll be put back on the main menu after a second, when the erasing is done. diff --git a/docs/no-custom/_category_.json b/docs/no-custom/_category_.json new file mode 100644 index 00000000..db4682b4 --- /dev/null +++ b/docs/no-custom/_category_.json @@ -0,0 +1,8 @@ +{ + "label": "No CFW", + "position": 4, + "link": { + "type": "generated-index", + "description": "What you can do with a locked calculator" + } +} diff --git a/docs/troubleshooting.md b/docs/troubleshooting.md index 72468faf..74e9bffe 100644 --- a/docs/troubleshooting.md +++ b/docs/troubleshooting.md @@ -12,7 +12,7 @@ Your calculator is in Recovery mode, it's waiting to receive a firmware, so it's This is Numworks' bootloader. It shows up when the calculator is locked and you started the Recovery mode by holding 6 and pressing reset, or when the calculator couldn't start. -If you want to unlock your calculator, don't go to the `numworks.com/rescue` website, but follow the guide from [Installing Epsilon 18.2.0](install-epsilon-18-2-0). +If you want to unlock your calculator, don't go to the `numworks.com/rescue` website, but follow the guide from [Installing Epsilon 18.2.0](/docs/n0110/phi/install-epsilon-18-2-0). ### Black screen, nothing else @@ -134,7 +134,5 @@ If you want to use KhiCAS, you will need to reinstall it. ___ :::info - -### Is you error not listed ? The provided solution didn't fix your problem ? Don't hesitate to ask on the [Omega Discord](https://discord.gg/X2TWhh9) - +Is you error not listed ? The provided solution didn't fix your problem ? Don't hesitate to ask on the [Omega Discord](https://discord.gg/X2TWhh9) ::: diff --git a/docusaurus.config.js b/docusaurus.config.js index 9e37e3c5..ab2a1b5a 100644 --- a/docusaurus.config.js +++ b/docusaurus.config.js @@ -11,7 +11,7 @@ const config = { favicon: 'img/favicon.ico', // Set the production url of your site here - url: 'https://your-docusaurus-test-site.com', + url: 'https://guide.getomega.dev', // Set the // pathname under which your site is served // For GitHub pages deployment, it is often '//' baseUrl: '/', @@ -29,7 +29,7 @@ const config = { // to replace "en" with "zh-Hans". i18n: { defaultLocale: 'en', - locales: ['en'], + locales: ['en', 'fr'], }, presets: [ @@ -67,7 +67,7 @@ const config = { title: 'Numworks Guide', logo: { alt: 'My Site Logo', - src: 'img/logo.svg', + src: 'img/favicon.ico', }, items: [ { @@ -82,6 +82,11 @@ const config = { label: 'GitHub', position: 'right', }, + { + type: 'localeDropdown', + position: 'right', + }, + ], }, footer: { diff --git a/src/css/custom.css b/src/css/custom.css index 39ce5a4b..f6ae0708 100644 --- a/src/css/custom.css +++ b/src/css/custom.css @@ -28,6 +28,12 @@ --ifm-color-primary-lightest: #4fddbf; --docusaurus-highlighted-code-line-bg: rgba(0, 0, 0, 0.3); } +.hero { + background-image: linear-gradient(rgba(0, 0, 0, 0.25), rgba(0, 0, 0, 0.25)), url('/img/home-page-feature.jpg'); +} +.hero--primary { + --ifm-hero-text-color:rgb(255, 255, 255) +} .center { display: flex; flex-direction: row; @@ -37,4 +43,4 @@ .content-home { max-width: 1280px; margin: 1rem; -} \ No newline at end of file +} diff --git a/src/pages/index.module.css b/src/pages/index.module.css index 5b17b313..8f2185cc 100644 --- a/src/pages/index.module.css +++ b/src/pages/index.module.css @@ -16,6 +16,7 @@ } } + .buttons { display: flex; align-items: center; diff --git a/docs/n0110/img/e16bl.png b/static/img/e16bl.png similarity index 100% rename from docs/n0110/img/e16bl.png rename to static/img/e16bl.png diff --git a/static/img/favicon.ico b/static/img/favicon.ico index c01d54bcd39a5f853428f3cd5aa0f383d963c484..f0873669c6bf8f94dd98a32cbc328f146c5dacdd 100644 GIT binary patch literal 17134 zcmeHOIgcGh5bk9SL>8NnTd;sbVz8M8GPjNwP{yWj`F7J3{?UxKYZc3ST;VtXP3 zgc!bGVhqX|=gG+g7S5$FCV)X$E+N)%j;*5Z%?V);mUj>{_ahOv=kJ(Zl7Ega1mY7pI&kVLdcgL|cw>zaG zwbl0@o9;Mb5fU3?(vgZ!?Y>Ou+UmRE@cpwK`cnJhNSm)KJxRZdoBzC)TaWD=Y_LyWb zkFDK)|KjM9V`aEKr%nD#^)(tL>%0#R#%ICO9Y@*w68W*lsxk**@p zxkcV%#A4}drt`HxKz9Fb&;<+qw;gs2%>4%*ju%n3U(?I{&kzji2*y97FkA zaNg%~>G0d~2@l6@D8Dg59Q>^UztQ@%j+4*8QyCL}BfsAV;FTXkc?$E3^NGJ%Xd`0z z9K5XK!rzSKFbLnhC~&>-oBHnUV@)m@1IOSkFn@PZLWiKteT;iDuP^+j%kQE5mdNjL zyeDJ-Lo@s3ebROCHSqi3v)~88jA>8Pc1=~CTz6MhC&JxX)yZ(HRsG{Jw^F&P&O+rj zYWe7aH0GhI^_o0#k}tpIEvGCFgJjG{yRowU~uA|^a}V>F!z?e-}iYR z#^)6F#XesJr>>!Bx<$Otc?!(Ep8MHY*CNJ8A5VknGewN$C-7Ktg#G>uUyLb69HZU1 zKBw+~UP3%$j!~E!opbCsS3~+371Bvd|9Q!xZ`0u%56L!f#)*gPE+qRq55;7|p3Ze+ z&;2AM``l4Hlue&~%X=pt=0wLb8Ovm4?dfP#AlCqJgnEzrepa| z6u18+3pyc#qC!(A2a1 zlW4O&_vCR~azHO+N& z5zJ?E`Z%D%4Dfv;-$hE|p?QVpo8T8bS)qIkyjSEVu=x0dTX~S=d)PJb5pd=`>>W@! z4d(x8IX83bnL1yA&wypi_ZT_5u>H52eenHW*k(QFe@z$PmsqZWGoM_~yyh?Zvs|-g zcH`L#M|&*u{$=B1iq$pki}q>@{f6gl_}LcM4|6^5U%pdvvCnz?uswGk&Yw_UI9RWv liH-B8@BHQ3>#}}mqc!*(%3KSY&&)}Rsl&BSzg)k)=zkW}N+AFM literal 3626 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

%-z7CPnjn4ImE@H2_>DAv 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%0A|=m@lR;JQCMAEmQ7mq@~Y0!alB3cj6gEL24%~ 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 literal 0 HcmV?d00001 diff --git a/docs/n0110/phi/img/phi-erase.png b/static/img/phi-erase.png similarity index 100% rename from docs/n0110/phi/img/phi-erase.png rename to static/img/phi-erase.png diff --git a/docs/n0110/phi/img/phi-launch.png b/static/img/phi-launch.png similarity index 100% rename from docs/n0110/phi/img/phi-launch.png rename to static/img/phi-launch.png diff --git a/docs/n0110/phi/img/phi-unlock.png b/static/img/phi-unlock.png similarity index 100% rename from docs/n0110/phi/img/phi-unlock.png rename to static/img/phi-unlock.png diff --git a/docs/n0110/phi/img/phi-write.png b/static/img/phi-write.png similarity index 100% rename from docs/n0110/phi/img/phi-write.png rename to static/img/phi-write.png diff --git a/static/resources/unpack-win.py b/static/resources/unpack-win.py new file mode 100644 index 00000000..69c5eaae --- /dev/null +++ b/static/resources/unpack-win.py @@ -0,0 +1,103 @@ +import struct +import sys + + +def read(fo, fw): + l = struct.calcsize(fo) + return struct.unpack(fo, fw.read(l)) + + +def read_header(fw): + magik, = read("5s", fw) + + if (magik != b"DfuSe"): + return False, "Invalid magik number!", 0, 0 + + version, = read("B", fw) + + if (version != 1): + return False, "Unsupported file version!", 0, 0 + + imagesize, = read("= internal_addr and addr + size <= internal_addr + internal_size): + print(" Element", j, ": Address:", hex( + addr), "Size:", hex(size), "") + for k in range(size): + internal[k + addr - internal_addr] = data[k] + elif (addr >= external_addr and addr + size <= external_addr + external_size): + print(" Element", j, ": Address:", hex( + addr), "Size:", hex(size), "") + for k in range(size): + external[k + addr - external_addr] = data[k] + else: + print(" Element", j, ": Address:", hex( + addr), "Size:", hex(size), "") + return internal, external + + +# Get current script directory +script_dir = sys.path[0] +print("Script directory:", script_dir) +with open(script_dir + "\\18-2-0.dfu", "rb") as f: + internal, external = unpack(f) + + with open(script_dir+"\\internal.bin", "wb") as fi: + fi.write(internal) + with open(script_dir+"\\external.bin", "wb") as fe: + fe.write(external) diff --git a/static/resources/unpack.py b/static/resources/unpack.py new file mode 100644 index 00000000..881a8738 --- /dev/null +++ b/static/resources/unpack.py @@ -0,0 +1,98 @@ +#!/bin/env python3 + +import struct +import sys + + +def read(fo, fw): + l = struct.calcsize(fo) + return struct.unpack(fo, fw.read(l)) + + +def read_header(fw): + magik, = read("5s", fw) + + if (magik != b"DfuSe"): + return False, "Invalid magik number!", 0, 0 + + version, = read("B", fw) + + if (version != 1): + return False, "Unsupported file version!", 0, 0 + + imagesize, = read("= internal_addr and addr + size <= internal_addr + internal_size): + print(" Element", j, ": Address:", hex(addr), "Size:", hex(size), "") + for k in range(size): + internal[k + addr - internal_addr] = data[k] + elif (addr >= external_addr and addr + size <= external_addr + external_size): + print(" Element", j, ": Address:", hex(addr), "Size:", hex(size), "") + for k in range(size): + external[k + addr - external_addr] = data[k] + else: + print(" Element", j, ": Address:", hex(addr), "Size:", hex(size), "") + return internal, external + +with open("18-2-0.dfu", "rb") as f: + internal, external = unpack(f) + + with open("internal.bin", "wb") as fi: + fi.write(internal) + with open("external.bin", "wb") as fe: + fe.write(external) From 157856b368b612aca4b3a9230eb7ac8e4e00fe90 Mon Sep 17 00:00:00 2001 From: Bloomy <90511192+BloomyInDev@users.noreply.github.com> Date: Mon, 18 Sep 2023 10:44:26 +0200 Subject: [PATCH 14/51] Reordering time ! - Reorder all the root elements in docs - Adding credits --- docs/credits.md | 21 +++++++++++++++++++++ docs/faq.md | 1 + docs/how-does-it-work.md | 1 + docs/intro.md | 2 +- docs/troubleshooting.md | 1 + docusaurus.config.js | 4 ++++ src/css/custom.css | 1 + 7 files changed, 30 insertions(+), 1 deletion(-) create mode 100644 docs/credits.md diff --git a/docs/credits.md b/docs/credits.md new file mode 100644 index 00000000..b6780564 --- /dev/null +++ b/docs/credits.md @@ -0,0 +1,21 @@ +--- +sidebar_position: 99 +title: "Credits" +--- + +:::note +Special thanks to M4x1m3, the original creator and maintainer of the guide! +::: + +If I forgot you here, [contact us](https://github.com/Omega-Numworks/Omega-Guide) and we will add your name. + ++ AngeDieu ++ BloomyInDev ++ darthnithin ++ hdboye ++ M4x1m3 ++ Rathmox ++ siim0n ++ Syycorax ++ TomVdt ++ WonderHunter diff --git a/docs/faq.md b/docs/faq.md index e3b492fe..7c929611 100644 --- a/docs/faq.md +++ b/docs/faq.md @@ -1,4 +1,5 @@ --- +sidebar_position: 7 title: "FAQ" --- diff --git a/docs/how-does-it-work.md b/docs/how-does-it-work.md index 36ff6883..f8bcf71e 100644 --- a/docs/how-does-it-work.md +++ b/docs/how-does-it-work.md @@ -1,4 +1,5 @@ --- +sidebar_position: 8 title: "How does it work ?" --- diff --git a/docs/intro.md b/docs/intro.md index 5ca6d7de..e4755c46 100644 --- a/docs/intro.md +++ b/docs/intro.md @@ -40,5 +40,5 @@ Driver if you have Windows or Linux: open the [Rescue page](https://numworks.com |------------------|-------------------------------------------------------------------------------------------------| | N0100 | [Your calculator is already unlocked](/docs/n0100/n0100-now-what) | | N0110 | [Check if your calculator is locked](/docs/n0110/n0110-is-locked) | -| N0115 | OMEGA NEEDS YOU | +| N0115 | Go to the [Omega Community Discord](https://discord.gg/X2TWhh9), we need you | | N0120 | [You can't install a CFW on it. But there are still a few things you can do](/docs/no-custom/what-to-do-locked) | diff --git a/docs/troubleshooting.md b/docs/troubleshooting.md index 74e9bffe..9973bb97 100644 --- a/docs/troubleshooting.md +++ b/docs/troubleshooting.md @@ -1,4 +1,5 @@ --- +sidebar_position: 6 title: "Troubleshooting" --- diff --git a/docusaurus.config.js b/docusaurus.config.js index ab2a1b5a..ad9cdf70 100644 --- a/docusaurus.config.js +++ b/docusaurus.config.js @@ -114,6 +114,10 @@ const config = { label: 'GitHub', href: 'https://github.com/Omega-Numworks/Omega-Guide', }, + { + label: 'Credits', + href: '/docs/credits', + }, ], }, ], diff --git a/src/css/custom.css b/src/css/custom.css index f6ae0708..6b4d654a 100644 --- a/src/css/custom.css +++ b/src/css/custom.css @@ -29,6 +29,7 @@ --docusaurus-highlighted-code-line-bg: rgba(0, 0, 0, 0.3); } .hero { + background-color: transparent; background-image: linear-gradient(rgba(0, 0, 0, 0.25), rgba(0, 0, 0, 0.25)), url('/img/home-page-feature.jpg'); } .hero--primary { From 78642f560ca06277b0c93378bc71b70a00d3a231 Mon Sep 17 00:00:00 2001 From: Bloomy <90511192+BloomyInDev@users.noreply.github.com> Date: Mon, 18 Sep 2023 10:47:12 +0200 Subject: [PATCH 15/51] Smol warning - Adding smol warning --- docs/intro.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/docs/intro.md b/docs/intro.md index e4755c46..248698f0 100644 --- a/docs/intro.md +++ b/docs/intro.md @@ -3,6 +3,10 @@ sidebar_position: 1 title: Get Started --- +:::caution +Thoroughly read all of the introductory pages (including this one!) before proceeding. +::: + **Before starting this guide, you need to understand some words you will see in this guide.** ### Definitions From b49e1de5ac9fa024918656d6643d19a85b8f4bdf Mon Sep 17 00:00:00 2001 From: Rathmox Date: Wed, 18 Oct 2023 21:40:08 +0200 Subject: [PATCH 16/51] Reorganize navigation, remove "Now What ?" --- docs/cfw/choose-a-cfw.md | 2 ++ docs/cfw/install-epsilon-from-softloader.md | 2 ++ docs/cfw/omega.md | 2 ++ docs/cfw/upsilon.md | 2 ++ docs/credits.md | 8 +++++- docs/faq.md | 2 ++ docs/how-does-it-work.md | 2 ++ docs/intro.md | 9 +++--- docs/n0100/_category_.json | 8 ------ docs/n0100/n0100-now-what.md | 12 -------- docs/n0110/hardware/n0110-hardware-unlock.md | 2 ++ docs/n0110/n0110-is-locked.md | 16 ++++++----- docs/n0110/n0110-now-what.md | 29 -------------------- docs/n0110/n0110-unlocked.md | 9 ++++++ docs/n0110/phi/phi-now-what.md | 2 +- docs/n0110/phi/phi.md | 18 ++++++++++++ docs/no-custom/restore-stock-firmware.md | 2 ++ docs/no-custom/what-to-do-locked.md | 2 ++ docs/troubleshooting.md | 2 ++ 19 files changed, 69 insertions(+), 62 deletions(-) delete mode 100644 docs/n0100/_category_.json delete mode 100644 docs/n0100/n0100-now-what.md delete mode 100644 docs/n0110/n0110-now-what.md create mode 100644 docs/n0110/n0110-unlocked.md diff --git a/docs/cfw/choose-a-cfw.md b/docs/cfw/choose-a-cfw.md index 37048c6f..2152140d 100644 --- a/docs/cfw/choose-a-cfw.md +++ b/docs/cfw/choose-a-cfw.md @@ -1,6 +1,8 @@ --- title: "Choose a CFW" sidebar_position: 1 +pagination_next: null +pagination_prev: null --- :::info diff --git a/docs/cfw/install-epsilon-from-softloader.md b/docs/cfw/install-epsilon-from-softloader.md index 72edbcc3..de8fc9da 100644 --- a/docs/cfw/install-epsilon-from-softloader.md +++ b/docs/cfw/install-epsilon-from-softloader.md @@ -1,6 +1,8 @@ --- title: "Install Epsilon from softloader" sidebar_position: 4 +pagination_next: null +pagination_prev: cfw/choose-a-cfw --- :::danger diff --git a/docs/cfw/omega.md b/docs/cfw/omega.md index 2f2d085d..46dbd9e4 100644 --- a/docs/cfw/omega.md +++ b/docs/cfw/omega.md @@ -1,6 +1,8 @@ --- title: "Omega" sidebar_position: 2 +pagination_next: null +pagination_prev: cfw/choose-a-cfw --- :::info diff --git a/docs/cfw/upsilon.md b/docs/cfw/upsilon.md index 29d496ee..229fdf40 100644 --- a/docs/cfw/upsilon.md +++ b/docs/cfw/upsilon.md @@ -1,6 +1,8 @@ --- title: "Upsilon" sidebar_position: 3 +pagination_next: null +pagination_prev: cfw/choose-a-cfw --- :::info diff --git a/docs/credits.md b/docs/credits.md index b6780564..26f22674 100644 --- a/docs/credits.md +++ b/docs/credits.md @@ -1,10 +1,16 @@ --- sidebar_position: 99 title: "Credits" +pagination_next: null +pagination_prev: null --- :::note -Special thanks to M4x1m3, the original creator and maintainer of the guide! +Special thanks to: +- M4x1m3, the original creator the guide +- Rathmox for completing the guide. +- WonderHunter for the french translation +- Rathmox and BloomyInDev for porting the guide to docusaurus ::: If I forgot you here, [contact us](https://github.com/Omega-Numworks/Omega-Guide) and we will add your name. diff --git a/docs/faq.md b/docs/faq.md index 7c929611..4d27e200 100644 --- a/docs/faq.md +++ b/docs/faq.md @@ -1,6 +1,8 @@ --- sidebar_position: 7 title: "FAQ" +pagination_next: null +pagination_prev: null --- # Pre-Installation FAQ diff --git a/docs/how-does-it-work.md b/docs/how-does-it-work.md index f8bcf71e..0f46c396 100644 --- a/docs/how-does-it-work.md +++ b/docs/how-does-it-work.md @@ -1,6 +1,8 @@ --- sidebar_position: 8 title: "How does it work ?" +pagination_next: null +pagination_prev: null --- This page is made to explain how does the calculator work and what happens when we unlock it diff --git a/docs/intro.md b/docs/intro.md index 248698f0..a746bc91 100644 --- a/docs/intro.md +++ b/docs/intro.md @@ -1,6 +1,8 @@ --- sidebar_position: 1 title: Get Started +pagination_next: null +pagination_prev: null --- :::caution @@ -42,7 +44,6 @@ Driver if you have Windows or Linux: open the [Rescue page](https://numworks.com | Calculator Model | What to do | |------------------|-------------------------------------------------------------------------------------------------| -| N0100 | [Your calculator is already unlocked](/docs/n0100/n0100-now-what) | -| N0110 | [Check if your calculator is locked](/docs/n0110/n0110-is-locked) | -| N0115 | Go to the [Omega Community Discord](https://discord.gg/X2TWhh9), we need you | -| N0120 | [You can't install a CFW on it. But there are still a few things you can do](/docs/no-custom/what-to-do-locked) | +| N0100 | [Your calculator is already unlocked. Choose a CFW](/docs/cfw/choose-a-cfw) | +| N0110 | [Check if your calculator is locked](/docs/n0110/n0110-is-locked) | +| N0115 - N0120 | [You can't install a CFW on it. But there are still a few things you can do](/docs/no-custom/what-to-do-locked) | diff --git a/docs/n0100/_category_.json b/docs/n0100/_category_.json deleted file mode 100644 index 0850cae3..00000000 --- a/docs/n0100/_category_.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "label": "N0100", - "position": 1, - "link": { - "type": "generated-index", - "description": "How to custom your Numworks N0100" - } -} diff --git a/docs/n0100/n0100-now-what.md b/docs/n0100/n0100-now-what.md deleted file mode 100644 index 1777c0ab..00000000 --- a/docs/n0100/n0100-now-what.md +++ /dev/null @@ -1,12 +0,0 @@ ---- -title: "Now What (N0100) ?" ---- - -### GG! - -You are already the proud owner of an unlocked Numworks. More specifically, the N0100 model, which came out in 2017. -Due to technical limitations on the hardware of this model, Numworks decided not to lock it. - -___ - -You can now [choose a CFW](/docs/cfw/choose-a-cfw) diff --git a/docs/n0110/hardware/n0110-hardware-unlock.md b/docs/n0110/hardware/n0110-hardware-unlock.md index a21ebe43..c9616ef9 100644 --- a/docs/n0110/hardware/n0110-hardware-unlock.md +++ b/docs/n0110/hardware/n0110-hardware-unlock.md @@ -1,6 +1,8 @@ --- title: "Hardware unlock (N0110)" sidebar_position: 1 +pagination_next: n0110/n0110-unlocked +pagination_prev: n0110/n0110-is-locked --- ### Requiered reading diff --git a/docs/n0110/n0110-is-locked.md b/docs/n0110/n0110-is-locked.md index d4571a8a..1208d965 100644 --- a/docs/n0110/n0110-is-locked.md +++ b/docs/n0110/n0110-is-locked.md @@ -1,6 +1,8 @@ --- title: "Is your calculator locked ? (N0110)" sidebar_position: 1 +pagination_next: null +pagination_prev: intro --- This page will tell you if you need to unlock your calculator and how. @@ -38,12 +40,12 @@ Use the version table below to select a method. A few things to note: | System Version | What to do | |----------------|----------------------------------------------------------------------| -| 11.2.0-16.2.0 | [Now what ?](n0110-now-what) | -| 16.3.0-16.4.2 | [Phi](phi) | -| 16.4.3 | [Install Epsilon 18.2.0](install-epsilon-18-2-0) | -| 17.0.0-18.2.0 | [Phi](phi) | -| 18.2.3 | [Install Epsilon 18.2.0](install-epsilon-18-2-0) | -| 19.0.0-21.2.0 | [Check version change eligibility](check-version-change-eligibility) | +| 11.2.0-16.2.0 | [Now what ?](n0110-unlocked) | +| 16.3.0-16.4.2 | [Phi](phi/phi) | +| 16.4.3 | [Install Epsilon 18.2.0](phi/install-epsilon-18-2-0) | +| 17.0.0-18.2.0 | [Phi](phi/phi) | +| 18.2.3 | [Install Epsilon 18.2.0](phi/install-epsilon-18-2-0) | +| 19.0.0-21.2.0 | [Check version change eligibility](phi/check-version-change-eligibility) | --- #### Alternate Methods @@ -52,4 +54,4 @@ If possible, you should follow one of the software methods listed above. Otherwise, methods that work on all versions are available, but require additional hardware: -1. [Hardware Unlock](n0110-hardware-unlock) - requires special tools +1. [Hardware Unlock](hardware/n0110-hardware-unlock) - requires special tools diff --git a/docs/n0110/n0110-now-what.md b/docs/n0110/n0110-now-what.md deleted file mode 100644 index 55181f49..00000000 --- a/docs/n0110/n0110-now-what.md +++ /dev/null @@ -1,29 +0,0 @@ ---- -title: "Now What (N0110) ?" ---- - -Your Numworks doesn't need to be unlocked, yay! - -You now have multiple choices. You can: -- Install a patched bootloader and then install Epsilon >= 16 -- Install a custom firmware - -### Choice I - Install a patched bootloader - -If you wish to use Epsilon >= 16 while still being able to install a custom firmware, -you can install a patched bootloader : -1. Download [this file](https://phi.getomega.dev/install/bootloader.bin) -2. Open [this page](https://ti-planet.github.io/webdfu_numworks/n0110/) in a chromium-based browser -3. While holding the 6 key, press the reset button on the back of your device -4. Plug your calculator to your computer -5. Click "Connect to the Numworks calculator" and select the STM32 bootloader. -6. Click "Chose file" and pick the bootloader.bin that you just downloaded -7. Click Flash internal - -You can now hold 4 and reset. You'll boot into the soft bootloader. From there, you can install Epsilon from [Numworks' website](https://my.numworks.com/devices/upgrade). - -Continue to [Final checks](final-checks) - -### Choice II - Install a CFW - -Go to [choose a CFW](/docs/cfw/choose-a-cfw) diff --git a/docs/n0110/n0110-unlocked.md b/docs/n0110/n0110-unlocked.md new file mode 100644 index 00000000..2300c8d4 --- /dev/null +++ b/docs/n0110/n0110-unlocked.md @@ -0,0 +1,9 @@ +--- +title: "Unlocked (N0110)" +pagination_next: cfw/choose-a-cfw +pagination_prev: n0110/n0110-is-locked +--- + +Your Numworks is unlocked, yay! + +You can now install a CFW to extend your calculator abilities diff --git a/docs/n0110/phi/phi-now-what.md b/docs/n0110/phi/phi-now-what.md index 368c9e6e..b01f224e 100644 --- a/docs/n0110/phi/phi-now-what.md +++ b/docs/n0110/phi/phi-now-what.md @@ -22,7 +22,7 @@ Press 4, then OK. You should now boot back into Epsilon. :::caution -If you don't boot back into Epsilon, please join the [Omega Discord](https://discord.gg/X2TWhh9) and ask for help. +If you don't boot back into Epsilon, don't worry, we will fix that later. ::: diff --git a/docs/n0110/phi/phi.md b/docs/n0110/phi/phi.md index 9def1619..557909c0 100644 --- a/docs/n0110/phi/phi.md +++ b/docs/n0110/phi/phi.md @@ -1,6 +1,7 @@ --- title: "Installing Phi" sidebar_position: 3 +pagination_next: n0110/n0110-unlocked --- ### Required Reading @@ -67,3 +68,20 @@ Removing the write protection should have erased the internal flash, but we are The "Erase flash" stage can take a bit of time. You'll be put back on the main menu after a second, when the erasing is done. +### Section V - Installing a custom bootloader + +1. Press 3 +2. Press OK to confirm +3. You should see something like this : + +![Phi launch screen](/img/phi-write.png) + +The "Write flash" stage can take a bit of time. You'll be put back on the main menu after a second, when the flashing is done. + +Press 4, then OK. You should now boot back into Epsilon. + +:::info + +If you don't boot back into Epsilon, don't worry, installing a CFW will fix it later. + +::: diff --git a/docs/no-custom/restore-stock-firmware.md b/docs/no-custom/restore-stock-firmware.md index 37aac3a7..a92e11e1 100644 --- a/docs/no-custom/restore-stock-firmware.md +++ b/docs/no-custom/restore-stock-firmware.md @@ -1,5 +1,7 @@ --- title: "Restore Stock Firmware" +pagination_next: null +pagination_prev: null --- :::danger diff --git a/docs/no-custom/what-to-do-locked.md b/docs/no-custom/what-to-do-locked.md index de3f4bfa..9b00c374 100644 --- a/docs/no-custom/what-to-do-locked.md +++ b/docs/no-custom/what-to-do-locked.md @@ -1,5 +1,7 @@ --- title: "What to do on a locked calculator ?" +pagination_next: null +pagination_prev: intro --- ### Introduction diff --git a/docs/troubleshooting.md b/docs/troubleshooting.md index 9973bb97..cca88230 100644 --- a/docs/troubleshooting.md +++ b/docs/troubleshooting.md @@ -1,6 +1,8 @@ --- sidebar_position: 6 title: "Troubleshooting" +pagination_next: null +pagination_prev: null --- ### Black screen and red LED From 357a32aec1cb5c2b3478cf85a901f1d0c7afcdd1 Mon Sep 17 00:00:00 2001 From: Rathmox Date: Wed, 18 Oct 2023 23:56:14 +0200 Subject: [PATCH 17/51] add deploy script --- .github/workflows/deploy.yml | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) create mode 100644 .github/workflows/deploy.yml diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml new file mode 100644 index 00000000..2158e594 --- /dev/null +++ b/.github/workflows/deploy.yml @@ -0,0 +1,29 @@ +name: Deploy + +on: + push: + branches: + - main + +permissions: + contents: write + +jobs: + deploy: + name: Deploy to GitHub Pages + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + - uses: actions/setup-node@v3 + with: + node-version: 18 + cache: npm + - name: Install dependencies + run: npm ci + - name: Build website + run: npm run build + - name: Deploy to GitHub Pages + uses: peaceiris/actions-gh-pages@v3 + with: + github_token: ${{ secrets.GITHUB_TOKEN }} + publish_dir: ./build From 4860c7958a0daf76e87d4d5b90b9a3c150664b21 Mon Sep 17 00:00:00 2001 From: Rathmox <55508107+Rathmox@users.noreply.github.com> Date: Wed, 18 Oct 2023 22:00:00 +0000 Subject: [PATCH 18/51] Update deploy.yml --- .github/workflows/deploy.yml | 22 ++++++++++++++++++---- 1 file changed, 18 insertions(+), 4 deletions(-) diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index 2158e594..c4f52d94 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -1,9 +1,11 @@ -name: Deploy +name: Deploy to GitHub Pages on: push: branches: - main + # Review gh actions docs if you want to further define triggers, paths, etc + # https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#on permissions: contents: write @@ -17,13 +19,25 @@ jobs: - uses: actions/setup-node@v3 with: node-version: 18 - cache: npm + cache: yarn + - name: Install dependencies - run: npm ci + run: yarn install --frozen-lockfile - name: Build website - run: npm run build + run: yarn build + + # Popular action to deploy to GitHub Pages: + # Docs: https://github.com/peaceiris/actions-gh-pages#%EF%B8%8F-docusaurus - name: Deploy to GitHub Pages uses: peaceiris/actions-gh-pages@v3 with: github_token: ${{ secrets.GITHUB_TOKEN }} + # Build output to publish to the `gh-pages` branch: publish_dir: ./build + # The following lines assign commit authorship to the official + # GH-Actions bot for deploys to `gh-pages` branch: + # https://github.com/actions/checkout/issues/13#issuecomment-724415212 + # The GH actions bot is used by default if you didn't specify the two fields. + # You can swap them out with your own user credentials. + user_name: github-actions[bot] + user_email: 41898282+github-actions[bot]@users.noreply.github.com From 207ead5627955fceb0c139a39802d35a53e3b945 Mon Sep 17 00:00:00 2001 From: Rathmox <55508107+Rathmox@users.noreply.github.com> Date: Wed, 18 Oct 2023 22:00:48 +0000 Subject: [PATCH 19/51] Delete .github/workflows directory --- .github/workflows/deploy.yml | 43 ------------------------------------ 1 file changed, 43 deletions(-) delete mode 100644 .github/workflows/deploy.yml diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml deleted file mode 100644 index c4f52d94..00000000 --- a/.github/workflows/deploy.yml +++ /dev/null @@ -1,43 +0,0 @@ -name: Deploy to GitHub Pages - -on: - push: - branches: - - main - # Review gh actions docs if you want to further define triggers, paths, etc - # https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#on - -permissions: - contents: write - -jobs: - deploy: - name: Deploy to GitHub Pages - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v3 - - uses: actions/setup-node@v3 - with: - node-version: 18 - cache: yarn - - - name: Install dependencies - run: yarn install --frozen-lockfile - - name: Build website - run: yarn build - - # Popular action to deploy to GitHub Pages: - # Docs: https://github.com/peaceiris/actions-gh-pages#%EF%B8%8F-docusaurus - - name: Deploy to GitHub Pages - uses: peaceiris/actions-gh-pages@v3 - with: - github_token: ${{ secrets.GITHUB_TOKEN }} - # Build output to publish to the `gh-pages` branch: - publish_dir: ./build - # The following lines assign commit authorship to the official - # GH-Actions bot for deploys to `gh-pages` branch: - # https://github.com/actions/checkout/issues/13#issuecomment-724415212 - # The GH actions bot is used by default if you didn't specify the two fields. - # You can swap them out with your own user credentials. - user_name: github-actions[bot] - user_email: 41898282+github-actions[bot]@users.noreply.github.com From a09830974eae98753ebb8e67b3ca2aa263d4685f Mon Sep 17 00:00:00 2001 From: Bloomy <90511192+BloomyInDev@users.noreply.github.com> Date: Tue, 14 Nov 2023 23:26:35 +0100 Subject: [PATCH 20/51] Smol fix & beautiful chart - Fix some bad links - Fix some "too many space" - Add beautiful chart --- docs/cfw/choose-a-cfw.md | 2 +- docs/faq.md | 2 +- docs/flowchart.md | 29 + docs/intro.md | 4 +- docs/n0110/n0110-is-locked.md | 2 +- docs/n0110/phi/phi.md | 6 - docs/troubleshooting.md | 2 +- docusaurus.config.js | 9 +- package-lock.json | 1063 +++++++++++++++++++++++++++++++++ package.json | 1 + 10 files changed, 1107 insertions(+), 13 deletions(-) create mode 100644 docs/flowchart.md diff --git a/docs/cfw/choose-a-cfw.md b/docs/cfw/choose-a-cfw.md index 2152140d..2059752c 100644 --- a/docs/cfw/choose-a-cfw.md +++ b/docs/cfw/choose-a-cfw.md @@ -7,7 +7,7 @@ pagination_prev: null :::info -You need an unlocked calculator. [To unlock it go here](get-started) +You need an unlocked calculator. [To unlock it go here](../intro) ::: diff --git a/docs/faq.md b/docs/faq.md index 4d27e200..0f30f8eb 100644 --- a/docs/faq.md +++ b/docs/faq.md @@ -1,5 +1,5 @@ --- -sidebar_position: 7 +sidebar_position: 8 title: "FAQ" pagination_next: null pagination_prev: null diff --git a/docs/flowchart.md b/docs/flowchart.md new file mode 100644 index 00000000..cf2f2cfa --- /dev/null +++ b/docs/flowchart.md @@ -0,0 +1,29 @@ +--- +sidebar_position: 7 +title: "Chart of decision" +pagination_next: null +pagination_prev: null +--- + + +```mermaid +flowchart TD + start([Start]) --> model_number[Read model number] + calc_unlocked([Your calculator is unlocked, yay!]) + calc_locked([Your calculator is locked, but you can do other things with it]) + model_number --N0100--> calc_unlocked + model_number --N0110--> check_version[What version ?] + model_number --N0115--> calc_locked + model_number --N0120--> calc_locked + check_version --11.2.0 to 16.2.0--> calc_unlocked + check_version --16.3.0 to 16.4.2--> phi[Use Phi] + check_version --16.4.3 or 18.2.3--> install_18_2_0[Install Epsilon 18.2.0] + check_version --17.0.0 to 18.2.0--> phi + check_version --19.0.0 to 21.3.0--> try_downgrade[Try to install Epsilon 18.2.0] + try_downgrade --Works--> phi + try_downgrade --Fail--> downgrade_fail(( )) --Open the calculator--> hardware_method[Follow the hardware method] + downgrade_fail --Don't open the calculator--> calc_locked + install_18_2_0 --> phi + + phi & hardware_method --> calc_unlocked +``` \ No newline at end of file diff --git a/docs/intro.md b/docs/intro.md index a746bc91..ec6cc683 100644 --- a/docs/intro.md +++ b/docs/intro.md @@ -29,8 +29,8 @@ If you don't want to deeply modify your calculator, [there are still a few thing ### Prerequisites -Numworks Calculator -Driver if you have Windows or Linux: open the [Rescue page](https://numworks.com/rescue) on Numworks’ website and it will give it and tell you how to install it. **Don’t plug in your calculator to make sure you don’t lock it**. If you have macOS, you don't need it. +- Numworks Calculator +- Driver if you have Windows or Linux: open the [Rescue page](https://numworks.com/rescue) on Numworks’ website and it will give it and tell you how to install it. **Don’t plug in your calculator to make sure you don’t lock it**. If you have macOS, you don't need it. ### Model check diff --git a/docs/n0110/n0110-is-locked.md b/docs/n0110/n0110-is-locked.md index 1208d965..59217e47 100644 --- a/docs/n0110/n0110-is-locked.md +++ b/docs/n0110/n0110-is-locked.md @@ -26,7 +26,7 @@ If you see a screen like this one, you can proceed : :::caution -If the screen stays black and the LED turns red, STOP - your calculator is already unlocked! Continue from [here](/docs/n0110/n0110-now-what). +If the screen stays black and the LED turns red, STOP - your calculator is already unlocked! Continue from [here](/docs/n0110/n0110-unlocked). ::: diff --git a/docs/n0110/phi/phi.md b/docs/n0110/phi/phi.md index 557909c0..7930fa44 100644 --- a/docs/n0110/phi/phi.md +++ b/docs/n0110/phi/phi.md @@ -33,15 +33,11 @@ The exploit used at the moment is compatible with Epsilon 16.3.0 trough 18.2.0. ![Phi launch screen](/img/phi-launch.png) :::info - If the screen turns Yellow, the version or Epsilon you're using isn't yet supported. You may need to [change your version](/docs/n0110/phi/check-version-change-eligibility). - ::: :::caution - If the screen turns Red, the exploit failed. Reset the calculator and try again. If it doesn't work the second time, please join the [Omega Discord](https://discord.gg/X2TWhh9). - ::: ### Section III - Unlocking the calculator @@ -81,7 +77,5 @@ The "Write flash" stage can take a bit of time. You'll be put back on the main m Press 4, then OK. You should now boot back into Epsilon. :::info - If you don't boot back into Epsilon, don't worry, installing a CFW will fix it later. - ::: diff --git a/docs/troubleshooting.md b/docs/troubleshooting.md index cca88230..461f3904 100644 --- a/docs/troubleshooting.md +++ b/docs/troubleshooting.md @@ -1,5 +1,5 @@ --- -sidebar_position: 6 +sidebar_position: 7 title: "Troubleshooting" pagination_next: null pagination_prev: null diff --git a/docusaurus.config.js b/docusaurus.config.js index ad9cdf70..7fb91f72 100644 --- a/docusaurus.config.js +++ b/docusaurus.config.js @@ -21,7 +21,7 @@ const config = { organizationName: 'Omega-Numworks', // Usually your GitHub org/user name. projectName: 'Omega-Guide', // Usually your repo name. - onBrokenLinks: 'throw', + onBrokenLinks: 'warn', onBrokenMarkdownLinks: 'warn', // Even if you don't use internalization, you can use this field to set useful @@ -32,6 +32,13 @@ const config = { locales: ['en', 'fr'], }, + // Activate Mermaid Graphs in Markdown + markdown: { + mermaid: true, + }, + themes: ['@docusaurus/theme-mermaid'], + + presets: [ [ 'classic', diff --git a/package-lock.json b/package-lock.json index 2e643fa0..2b264f0f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -10,6 +10,7 @@ "dependencies": { "@docusaurus/core": "2.4.1", "@docusaurus/preset-classic": "2.4.1", + "@docusaurus/theme-mermaid": "2.4.1", "@mdx-js/react": "^1.6.22", "clsx": "^1.2.1", "prism-react-renderer": "^1.3.5", @@ -2108,6 +2109,11 @@ "node": ">=6.9.0" } }, + "node_modules/@braintree/sanitize-url": { + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/@braintree/sanitize-url/-/sanitize-url-6.0.4.tgz", + "integrity": "sha512-s3jaWicZd0pkP0jf5ysyHUI/RE7MHos6qlToFcGWXVp+ykHOy77OUMrfbgJ9it2C5bow7OIQwYYaHjk9XlBQ2A==" + }, "node_modules/@colors/colors": { "version": "1.5.0", "resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.5.0.tgz", @@ -2612,6 +2618,28 @@ "react-dom": "^16.8.4 || ^17.0.0" } }, + "node_modules/@docusaurus/theme-mermaid": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/@docusaurus/theme-mermaid/-/theme-mermaid-2.4.1.tgz", + "integrity": "sha512-cM0ImKIqZfjmlaC+uAjep39kNBvb1bjz429QBHGs32maob4+UnRzVPPpCUCltyPVb4xjG5h1Tyq4pHzhtIikqA==", + "dependencies": { + "@docusaurus/core": "2.4.1", + "@docusaurus/module-type-aliases": "2.4.1", + "@docusaurus/theme-common": "2.4.1", + "@docusaurus/types": "2.4.1", + "@docusaurus/utils-validation": "2.4.1", + "@mdx-js/react": "^1.6.22", + "mermaid": "^9.2.2", + "tslib": "^2.4.0" + }, + "engines": { + "node": ">=16.14" + }, + "peerDependencies": { + "react": "^16.8.4 || ^17.0.0", + "react-dom": "^16.8.4 || ^17.0.0" + } + }, "node_modules/@docusaurus/theme-search-algolia": { "version": "2.4.1", "resolved": "https://registry.npmjs.org/@docusaurus/theme-search-algolia/-/theme-search-algolia-2.4.1.tgz", @@ -5075,6 +5103,14 @@ "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==" }, + "node_modules/cose-base": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/cose-base/-/cose-base-1.0.3.tgz", + "integrity": "sha512-s9whTXInMSgAp/NVXVNuVxVKzGH2qck3aQlVHxDCdAEPgtMKwc4Wq6/QKhgdEdgbLSi9rBTAcPoRa6JpiG4ksg==", + "dependencies": { + "layout-base": "^1.0.0" + } + }, "node_modules/cosmiconfig": { "version": "7.1.0", "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.1.0.tgz", @@ -5404,6 +5440,456 @@ "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.2.tgz", "integrity": "sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==" }, + "node_modules/cytoscape": { + "version": "3.27.0", + "resolved": "https://registry.npmjs.org/cytoscape/-/cytoscape-3.27.0.tgz", + "integrity": "sha512-pPZJilfX9BxESwujODz5pydeGi+FBrXq1rcaB1mfhFXXFJ9GjE6CNndAk+8jPzoXGD+16LtSS4xlYEIUiW4Abg==", + "dependencies": { + "heap": "^0.2.6", + "lodash": "^4.17.21" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/cytoscape-cose-bilkent": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/cytoscape-cose-bilkent/-/cytoscape-cose-bilkent-4.1.0.tgz", + "integrity": "sha512-wgQlVIUJF13Quxiv5e1gstZ08rnZj2XaLHGoFMYXz7SkNfCDOOteKBE6SYRfA9WxxI/iBc3ajfDoc6hb/MRAHQ==", + "dependencies": { + "cose-base": "^1.0.0" + }, + "peerDependencies": { + "cytoscape": "^3.2.0" + } + }, + "node_modules/cytoscape-fcose": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/cytoscape-fcose/-/cytoscape-fcose-2.2.0.tgz", + "integrity": "sha512-ki1/VuRIHFCzxWNrsshHYPs6L7TvLu3DL+TyIGEsRcvVERmxokbf5Gdk7mFxZnTdiGtnA4cfSmjZJMviqSuZrQ==", + "dependencies": { + "cose-base": "^2.2.0" + }, + "peerDependencies": { + "cytoscape": "^3.2.0" + } + }, + "node_modules/cytoscape-fcose/node_modules/cose-base": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/cose-base/-/cose-base-2.2.0.tgz", + "integrity": "sha512-AzlgcsCbUMymkADOJtQm3wO9S3ltPfYOFD5033keQn9NJzIbtnZj+UdBJe7DYml/8TdbtHJW3j58SOnKhWY/5g==", + "dependencies": { + "layout-base": "^2.0.0" + } + }, + "node_modules/cytoscape-fcose/node_modules/layout-base": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/layout-base/-/layout-base-2.0.1.tgz", + "integrity": "sha512-dp3s92+uNI1hWIpPGH3jK2kxE2lMjdXdr+DH8ynZHpd6PUlH6x6cbuXnoMmiNumznqaNO31xu9e79F0uuZ0JFg==" + }, + "node_modules/d3": { + "version": "7.8.5", + "resolved": "https://registry.npmjs.org/d3/-/d3-7.8.5.tgz", + "integrity": "sha512-JgoahDG51ncUfJu6wX/1vWQEqOflgXyl4MaHqlcSruTez7yhaRKR9i8VjjcQGeS2en/jnFivXuaIMnseMMt0XA==", + "dependencies": { + "d3-array": "3", + "d3-axis": "3", + "d3-brush": "3", + "d3-chord": "3", + "d3-color": "3", + "d3-contour": "4", + "d3-delaunay": "6", + "d3-dispatch": "3", + "d3-drag": "3", + "d3-dsv": "3", + "d3-ease": "3", + "d3-fetch": "3", + "d3-force": "3", + "d3-format": "3", + "d3-geo": "3", + "d3-hierarchy": "3", + "d3-interpolate": "3", + "d3-path": "3", + "d3-polygon": "3", + "d3-quadtree": "3", + "d3-random": "3", + "d3-scale": "4", + "d3-scale-chromatic": "3", + "d3-selection": "3", + "d3-shape": "3", + "d3-time": "3", + "d3-time-format": "4", + "d3-timer": "3", + "d3-transition": "3", + "d3-zoom": "3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-array": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-3.2.4.tgz", + "integrity": "sha512-tdQAmyA18i4J7wprpYq8ClcxZy3SC31QMeByyCFyRt7BVHdREQZ5lpzoe5mFEYZUWe+oq8HBvk9JjpibyEV4Jg==", + "dependencies": { + "internmap": "1 - 2" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-axis": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-axis/-/d3-axis-3.0.0.tgz", + "integrity": "sha512-IH5tgjV4jE/GhHkRV0HiVYPDtvfjHQlQfJHs0usq7M30XcSBvOotpmH1IgkcXsO/5gEQZD43B//fc7SRT5S+xw==", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-brush": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-brush/-/d3-brush-3.0.0.tgz", + "integrity": "sha512-ALnjWlVYkXsVIGlOsuWH1+3udkYFI48Ljihfnh8FZPF2QS9o+PzGLBslO0PjzVoHLZ2KCVgAM8NVkXPJB2aNnQ==", + "dependencies": { + "d3-dispatch": "1 - 3", + "d3-drag": "2 - 3", + "d3-interpolate": "1 - 3", + "d3-selection": "3", + "d3-transition": "3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-chord": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-chord/-/d3-chord-3.0.1.tgz", + "integrity": "sha512-VE5S6TNa+j8msksl7HwjxMHDM2yNK3XCkusIlpX5kwauBfXuyLAtNg9jCp/iHH61tgI4sb6R/EIMWCqEIdjT/g==", + "dependencies": { + "d3-path": "1 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-color": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-3.1.0.tgz", + "integrity": "sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA==", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-contour": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/d3-contour/-/d3-contour-4.0.2.tgz", + "integrity": "sha512-4EzFTRIikzs47RGmdxbeUvLWtGedDUNkTcmzoeyg4sP/dvCexO47AaQL7VKy/gul85TOxw+IBgA8US2xwbToNA==", + "dependencies": { + "d3-array": "^3.2.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-delaunay": { + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/d3-delaunay/-/d3-delaunay-6.0.4.tgz", + "integrity": "sha512-mdjtIZ1XLAM8bm/hx3WwjfHt6Sggek7qH043O8KEjDXN40xi3vx/6pYSVTwLjEgiXQTbvaouWKynLBiUZ6SK6A==", + "dependencies": { + "delaunator": "5" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-dispatch": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-dispatch/-/d3-dispatch-3.0.1.tgz", + "integrity": "sha512-rzUyPU/S7rwUflMyLc1ETDeBj0NRuHKKAcvukozwhshr6g6c5d8zh4c2gQjY2bZ0dXeGLWc1PF174P2tVvKhfg==", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-drag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-drag/-/d3-drag-3.0.0.tgz", + "integrity": "sha512-pWbUJLdETVA8lQNJecMxoXfH6x+mO2UQo8rSmZ+QqxcbyA3hfeprFgIT//HW2nlHChWeIIMwS2Fq+gEARkhTkg==", + "dependencies": { + "d3-dispatch": "1 - 3", + "d3-selection": "3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-dsv": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-dsv/-/d3-dsv-3.0.1.tgz", + "integrity": "sha512-UG6OvdI5afDIFP9w4G0mNq50dSOsXHJaRE8arAS5o9ApWnIElp8GZw1Dun8vP8OyHOZ/QJUKUJwxiiCCnUwm+Q==", + "dependencies": { + "commander": "7", + "iconv-lite": "0.6", + "rw": "1" + }, + "bin": { + "csv2json": "bin/dsv2json.js", + "csv2tsv": "bin/dsv2dsv.js", + "dsv2dsv": "bin/dsv2dsv.js", + "dsv2json": "bin/dsv2json.js", + "json2csv": "bin/json2dsv.js", + "json2dsv": "bin/json2dsv.js", + "json2tsv": "bin/json2dsv.js", + "tsv2csv": "bin/dsv2dsv.js", + "tsv2json": "bin/dsv2json.js" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-dsv/node_modules/commander": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", + "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", + "engines": { + "node": ">= 10" + } + }, + "node_modules/d3-dsv/node_modules/iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/d3-ease": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-ease/-/d3-ease-3.0.1.tgz", + "integrity": "sha512-wR/XK3D3XcLIZwpbvQwQ5fK+8Ykds1ip7A2Txe0yxncXSdq1L9skcG7blcedkOX+ZcgxGAmLX1FrRGbADwzi0w==", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-fetch": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-fetch/-/d3-fetch-3.0.1.tgz", + "integrity": "sha512-kpkQIM20n3oLVBKGg6oHrUchHM3xODkTzjMoj7aWQFq5QEM+R6E4WkzT5+tojDY7yjez8KgCBRoj4aEr99Fdqw==", + "dependencies": { + "d3-dsv": "1 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-force": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-force/-/d3-force-3.0.0.tgz", + "integrity": "sha512-zxV/SsA+U4yte8051P4ECydjD/S+qeYtnaIyAs9tgHCqfguma/aAQDjo85A9Z6EKhBirHRJHXIgJUlffT4wdLg==", + "dependencies": { + "d3-dispatch": "1 - 3", + "d3-quadtree": "1 - 3", + "d3-timer": "1 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-format": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-format/-/d3-format-3.1.0.tgz", + "integrity": "sha512-YyUI6AEuY/Wpt8KWLgZHsIU86atmikuoOmCfommt0LYHiQSPjvX2AcFc38PX0CBpr2RCyZhjex+NS/LPOv6YqA==", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-geo": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-geo/-/d3-geo-3.1.0.tgz", + "integrity": "sha512-JEo5HxXDdDYXCaWdwLRt79y7giK8SbhZJbFWXqbRTolCHFI5jRqteLzCsq51NKbUoX0PjBVSohxrx+NoOUujYA==", + "dependencies": { + "d3-array": "2.5.0 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-hierarchy": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/d3-hierarchy/-/d3-hierarchy-3.1.2.tgz", + "integrity": "sha512-FX/9frcub54beBdugHjDCdikxThEqjnR93Qt7PvQTOHxyiNCAlvMrHhclk3cD5VeAaq9fxmfRp+CnWw9rEMBuA==", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-interpolate": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-3.0.1.tgz", + "integrity": "sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g==", + "dependencies": { + "d3-color": "1 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-path": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-path/-/d3-path-3.1.0.tgz", + "integrity": "sha512-p3KP5HCf/bvjBSSKuXid6Zqijx7wIfNW+J/maPs+iwR35at5JCbLUT0LzF1cnjbCHWhqzQTIN2Jpe8pRebIEFQ==", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-polygon": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-polygon/-/d3-polygon-3.0.1.tgz", + "integrity": "sha512-3vbA7vXYwfe1SYhED++fPUQlWSYTTGmFmQiany/gdbiWgU/iEyQzyymwL9SkJjFFuCS4902BSzewVGsHHmHtXg==", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-quadtree": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-quadtree/-/d3-quadtree-3.0.1.tgz", + "integrity": "sha512-04xDrxQTDTCFwP5H6hRhsRcb9xxv2RzkcsygFzmkSIOJy3PeRJP7sNk3VRIbKXcog561P9oU0/rVH6vDROAgUw==", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-random": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-random/-/d3-random-3.0.1.tgz", + "integrity": "sha512-FXMe9GfxTxqd5D6jFsQ+DJ8BJS4E/fT5mqqdjovykEB2oFbTMDVdg1MGFxfQW+FBOGoB++k8swBrgwSHT1cUXQ==", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-scale": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/d3-scale/-/d3-scale-4.0.2.tgz", + "integrity": "sha512-GZW464g1SH7ag3Y7hXjf8RoUuAFIqklOAq3MRl4OaWabTFJY9PN/E1YklhXLh+OQ3fM9yS2nOkCoS+WLZ6kvxQ==", + "dependencies": { + "d3-array": "2.10.0 - 3", + "d3-format": "1 - 3", + "d3-interpolate": "1.2.0 - 3", + "d3-time": "2.1.1 - 3", + "d3-time-format": "2 - 4" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-scale-chromatic": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-scale-chromatic/-/d3-scale-chromatic-3.0.0.tgz", + "integrity": "sha512-Lx9thtxAKrO2Pq6OO2Ua474opeziKr279P/TKZsMAhYyNDD3EnCffdbgeSYN5O7m2ByQsxtuP2CSDczNUIZ22g==", + "dependencies": { + "d3-color": "1 - 3", + "d3-interpolate": "1 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-selection": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-selection/-/d3-selection-3.0.0.tgz", + "integrity": "sha512-fmTRWbNMmsmWq6xJV8D19U/gw/bwrHfNXxrIN+HfZgnzqTHp9jOmKMhsTUjXOJnZOdZY9Q28y4yebKzqDKlxlQ==", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-shape": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/d3-shape/-/d3-shape-3.2.0.tgz", + "integrity": "sha512-SaLBuwGm3MOViRq2ABk3eLoxwZELpH6zhl3FbAoJ7Vm1gofKx6El1Ib5z23NUEhF9AsGl7y+dzLe5Cw2AArGTA==", + "dependencies": { + "d3-path": "^3.1.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-time": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-time/-/d3-time-3.1.0.tgz", + "integrity": "sha512-VqKjzBLejbSMT4IgbmVgDjpkYrNWUYJnbCGo874u7MMKIWsILRX+OpX/gTk8MqjpT1A/c6HY2dCA77ZN0lkQ2Q==", + "dependencies": { + "d3-array": "2 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-time-format": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/d3-time-format/-/d3-time-format-4.1.0.tgz", + "integrity": "sha512-dJxPBlzC7NugB2PDLwo9Q8JiTR3M3e4/XANkreKSUxF8vvXKqm1Yfq4Q5dl8budlunRVlUUaDUgFt7eA8D6NLg==", + "dependencies": { + "d3-time": "1 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-timer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-timer/-/d3-timer-3.0.1.tgz", + "integrity": "sha512-ndfJ/JxxMd3nw31uyKoY2naivF+r29V+Lc0svZxe1JvvIRmi8hUsrMvdOwgS1o6uBHmiz91geQ0ylPP0aj1VUA==", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-transition": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-transition/-/d3-transition-3.0.1.tgz", + "integrity": "sha512-ApKvfjsSR6tg06xrL434C0WydLr7JewBB3V+/39RMHsaXTOG0zmt/OAXeng5M5LBm0ojmxJrpomQVZ1aPvBL4w==", + "dependencies": { + "d3-color": "1 - 3", + "d3-dispatch": "1 - 3", + "d3-ease": "1 - 3", + "d3-interpolate": "1 - 3", + "d3-timer": "1 - 3" + }, + "engines": { + "node": ">=12" + }, + "peerDependencies": { + "d3-selection": "2 - 3" + } + }, + "node_modules/d3-zoom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-zoom/-/d3-zoom-3.0.0.tgz", + "integrity": "sha512-b8AmV3kfQaqWAuacbPuNbL6vahnOJflOhexLzMMNLga62+/nh0JzvJ0aO/5a5MVgUFGS7Hu1P9P03o3fJkDCyw==", + "dependencies": { + "d3-dispatch": "1 - 3", + "d3-drag": "2 - 3", + "d3-interpolate": "1 - 3", + "d3-selection": "2 - 3", + "d3-transition": "2 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/dagre-d3-es": { + "version": "7.0.9", + "resolved": "https://registry.npmjs.org/dagre-d3-es/-/dagre-d3-es-7.0.9.tgz", + "integrity": "sha512-rYR4QfVmy+sR44IBDvVtcAmOReGBvRCWDpO2QjYwqgh9yijw6eSHBqaPG/LIOEy7aBsniLvtMW6pg19qJhq60w==", + "dependencies": { + "d3": "^7.8.2", + "lodash-es": "^4.17.21" + } + }, + "node_modules/dayjs": { + "version": "1.11.10", + "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.10.tgz", + "integrity": "sha512-vjAczensTgRcqDERK0SR2XMwsF/tSvnvlv6VcF2GIhg6Sx4yOIt/irsr1RDJsKiIyBzJDpCoXiWWq28MqH2cnQ==" + }, "node_modules/debug": { "version": "4.3.4", "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", @@ -5521,6 +6007,14 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/delaunator": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/delaunator/-/delaunator-5.0.0.tgz", + "integrity": "sha512-AyLvtyJdbv/U1GkiS6gUUzclRoAY4Gs75qkMygJJhU75LW4DNuSF2RMzpxs9jw9Oz1BobHjTdkG3zdP55VxAqw==", + "dependencies": { + "robust-predicates": "^3.0.0" + } + }, "node_modules/depd": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", @@ -5670,6 +6164,11 @@ "url": "https://github.com/fb55/domhandler?sponsor=1" } }, + "node_modules/dompurify": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-2.4.3.tgz", + "integrity": "sha512-q6QaLcakcRjebxjg8/+NP+h0rPfatOgOzc46Fst9VAA3jF2ApfKBNKMzdP4DYTqtUMXSCd5pRS/8Po/OmoCHZQ==" + }, "node_modules/domutils": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.1.0.tgz", @@ -5736,6 +6235,11 @@ "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.523.tgz", "integrity": "sha512-9AreocSUWnzNtvLcbpng6N+GkXnCcBR80IQkxRC9Dfdyg4gaWNUPBujAHUpKkiUkoSoR9UlhA4zD/IgBklmhzg==" }, + "node_modules/elkjs": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/elkjs/-/elkjs-0.8.2.tgz", + "integrity": "sha512-L6uRgvZTH+4OF5NE/MBbzQx/WYpru1xCBE9respNj6qznEewGUIfhzmm7horWWxbNO2M0WckQypGctR8lH79xQ==" + }, "node_modules/emoji-regex": { "version": "9.2.2", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", @@ -6894,6 +7398,11 @@ "he": "bin/he" } }, + "node_modules/heap": { + "version": "0.2.7", + "resolved": "https://registry.npmjs.org/heap/-/heap-0.2.7.tgz", + "integrity": "sha512-2bsegYkkHO+h/9MGbn6KWcE45cHZgPANo5LXF7EvWdT0yT2EguSVO1nDgU5c8+ZOPwp2vMNa7YFsJhVcDR9Sdg==" + }, "node_modules/history": { "version": "4.10.1", "resolved": "https://registry.npmjs.org/history/-/history-4.10.1.tgz", @@ -7270,6 +7779,14 @@ "resolved": "https://registry.npmjs.org/inline-style-parser/-/inline-style-parser-0.1.1.tgz", "integrity": "sha512-7NXolsK4CAS5+xvdj5OMMbI962hU/wvwoxk+LWR9Ek9bVtyuuYScDN6eS0rUm6TxApFpw7CX1o4uJzcd4AyD3Q==" }, + "node_modules/internmap": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/internmap/-/internmap-2.0.3.tgz", + "integrity": "sha512-5Hh7Y1wQbvY5ooGgPbDaL5iYLAPzMTUrjMulskHLH6wnv/A+1q5rgEaiuqEjB+oxGXIVZs1FF+R/KPN3ZSQYYg==", + "engines": { + "node": ">=12" + } + }, "node_modules/interpret": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz", @@ -7742,6 +8259,11 @@ "json-buffer": "3.0.0" } }, + "node_modules/khroma": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/khroma/-/khroma-2.1.0.tgz", + "integrity": "sha512-Ls993zuzfayK269Svk9hzpeGUKob/sIgZzyHYdjQoAdQetRKpOLj+k/QQQ/6Qi0Yz65mlROrfd+Ev+1+7dz9Kw==" + }, "node_modules/kind-of": { "version": "6.0.3", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", @@ -7778,6 +8300,11 @@ "shell-quote": "^1.7.3" } }, + "node_modules/layout-base": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/layout-base/-/layout-base-1.0.2.tgz", + "integrity": "sha512-8h2oVEZNktL4BH2JCOI90iD1yXwL6iNW7KcCKT2QZgQJR2vbqDsldCTPRU9NifTCqHZci57XvQQ15YTu+sTYPg==" + }, "node_modules/leven": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", @@ -7836,6 +8363,11 @@ "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" }, + "node_modules/lodash-es": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.21.tgz", + "integrity": "sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==" + }, "node_modules/lodash.curry": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/lodash.curry/-/lodash.curry-4.1.1.tgz", @@ -8051,6 +8583,41 @@ "node": ">= 8" } }, + "node_modules/mermaid": { + "version": "9.4.3", + "resolved": "https://registry.npmjs.org/mermaid/-/mermaid-9.4.3.tgz", + "integrity": "sha512-TLkQEtqhRSuEHSE34lh5bCa94KATCyluAXmFnNI2PRZwOpXFeqiJWwZl+d2CcemE1RS6QbbueSSq9QIg8Uxcyw==", + "dependencies": { + "@braintree/sanitize-url": "^6.0.0", + "cytoscape": "^3.23.0", + "cytoscape-cose-bilkent": "^4.1.0", + "cytoscape-fcose": "^2.1.0", + "d3": "^7.4.0", + "dagre-d3-es": "7.0.9", + "dayjs": "^1.11.7", + "dompurify": "2.4.3", + "elkjs": "^0.8.2", + "khroma": "^2.0.0", + "lodash-es": "^4.17.21", + "non-layered-tidy-tree-layout": "^2.0.2", + "stylis": "^4.1.2", + "ts-dedent": "^2.2.0", + "uuid": "^9.0.0", + "web-worker": "^1.2.0" + } + }, + "node_modules/mermaid/node_modules/uuid": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz", + "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==", + "funding": [ + "https://github.com/sponsors/broofa", + "https://github.com/sponsors/ctavan" + ], + "bin": { + "uuid": "dist/bin/uuid" + } + }, "node_modules/methods": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", @@ -8312,6 +8879,11 @@ "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.13.tgz", "integrity": "sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ==" }, + "node_modules/non-layered-tidy-tree-layout": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/non-layered-tidy-tree-layout/-/non-layered-tidy-tree-layout-2.0.2.tgz", + "integrity": "sha512-gkXMxRzUH+PB0ax9dUN0yYF0S25BqeAYqhgMaLUFmpXLEk7Fcu8f4emJuOAY0V8kjDICxROIKsTAKsV/v355xw==" + }, "node_modules/normalize-path": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", @@ -10394,6 +10966,11 @@ "url": "https://github.com/sponsors/isaacs" } }, + "node_modules/robust-predicates": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/robust-predicates/-/robust-predicates-3.0.2.tgz", + "integrity": "sha512-IXgzBWvWQwE6PrDI05OvmXUIruQTcoMDzRsOd5CDvHCVLcLHMTSYvOK5Cm46kWqlV3yAbuSpBZdJ5oP5OUoStg==" + }, "node_modules/rtl-detect": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/rtl-detect/-/rtl-detect-1.0.4.tgz", @@ -10492,6 +11069,11 @@ "queue-microtask": "^1.2.2" } }, + "node_modules/rw": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/rw/-/rw-1.3.3.tgz", + "integrity": "sha512-PdhdWy89SiZogBLaw42zdeqtRJ//zFd2PgQavcICDUgJT5oW10QCRKbJ6bg4r0/UY2M6BWd5tkxuGFRvCkgfHQ==" + }, "node_modules/rxjs": { "version": "7.8.1", "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz", @@ -11171,6 +11753,11 @@ "postcss": "^8.2.15" } }, + "node_modules/stylis": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/stylis/-/stylis-4.3.0.tgz", + "integrity": "sha512-E87pIogpwUsUwXw7dNyU4QDjdgVMy52m+XEOPEKUn161cCzWjjhPSQhByfd1CcNvrOLnXQ6OnnZDwnJrz/Z4YQ==" + }, "node_modules/supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -11488,6 +12075,14 @@ "url": "https://github.com/sponsors/wooorm" } }, + "node_modules/ts-dedent": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/ts-dedent/-/ts-dedent-2.2.0.tgz", + "integrity": "sha512-q5W7tVM71e2xjHZTlgfTDoPF/SmqKG5hddq9SzR49CH2hayqRKJtQ4mtRlSxKaJlR/+9rEM+mnBHf7I2/BQcpQ==", + "engines": { + "node": ">=6.10" + } + }, "node_modules/tslib": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", @@ -12178,6 +12773,11 @@ "url": "https://github.com/sponsors/wooorm" } }, + "node_modules/web-worker": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/web-worker/-/web-worker-1.2.0.tgz", + "integrity": "sha512-PgF341avzqyx60neE9DD+XS26MMNMoUQRz9NOZwW32nPQrF6p77f1htcnjBSEV8BGMKZ16choqUG4hyI0Hx7mA==" + }, "node_modules/webidl-conversions": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", @@ -14233,6 +14833,11 @@ "to-fast-properties": "^2.0.0" } }, + "@braintree/sanitize-url": { + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/@braintree/sanitize-url/-/sanitize-url-6.0.4.tgz", + "integrity": "sha512-s3jaWicZd0pkP0jf5ysyHUI/RE7MHos6qlToFcGWXVp+ykHOy77OUMrfbgJ9it2C5bow7OIQwYYaHjk9XlBQ2A==" + }, "@colors/colors": { "version": "1.5.0", "resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.5.0.tgz", @@ -14604,6 +15209,21 @@ "utility-types": "^3.10.0" } }, + "@docusaurus/theme-mermaid": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/@docusaurus/theme-mermaid/-/theme-mermaid-2.4.1.tgz", + "integrity": "sha512-cM0ImKIqZfjmlaC+uAjep39kNBvb1bjz429QBHGs32maob4+UnRzVPPpCUCltyPVb4xjG5h1Tyq4pHzhtIikqA==", + "requires": { + "@docusaurus/core": "2.4.1", + "@docusaurus/module-type-aliases": "2.4.1", + "@docusaurus/theme-common": "2.4.1", + "@docusaurus/types": "2.4.1", + "@docusaurus/utils-validation": "2.4.1", + "@mdx-js/react": "^1.6.22", + "mermaid": "^9.2.2", + "tslib": "^2.4.0" + } + }, "@docusaurus/theme-search-algolia": { "version": "2.4.1", "resolved": "https://registry.npmjs.org/@docusaurus/theme-search-algolia/-/theme-search-algolia-2.4.1.tgz", @@ -16457,6 +17077,14 @@ "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==" }, + "cose-base": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/cose-base/-/cose-base-1.0.3.tgz", + "integrity": "sha512-s9whTXInMSgAp/NVXVNuVxVKzGH2qck3aQlVHxDCdAEPgtMKwc4Wq6/QKhgdEdgbLSi9rBTAcPoRa6JpiG4ksg==", + "requires": { + "layout-base": "^1.0.0" + } + }, "cosmiconfig": { "version": "7.1.0", "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.1.0.tgz", @@ -16672,6 +17300,338 @@ "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.2.tgz", "integrity": "sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==" }, + "cytoscape": { + "version": "3.27.0", + "resolved": "https://registry.npmjs.org/cytoscape/-/cytoscape-3.27.0.tgz", + "integrity": "sha512-pPZJilfX9BxESwujODz5pydeGi+FBrXq1rcaB1mfhFXXFJ9GjE6CNndAk+8jPzoXGD+16LtSS4xlYEIUiW4Abg==", + "requires": { + "heap": "^0.2.6", + "lodash": "^4.17.21" + } + }, + "cytoscape-cose-bilkent": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/cytoscape-cose-bilkent/-/cytoscape-cose-bilkent-4.1.0.tgz", + "integrity": "sha512-wgQlVIUJF13Quxiv5e1gstZ08rnZj2XaLHGoFMYXz7SkNfCDOOteKBE6SYRfA9WxxI/iBc3ajfDoc6hb/MRAHQ==", + "requires": { + "cose-base": "^1.0.0" + } + }, + "cytoscape-fcose": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/cytoscape-fcose/-/cytoscape-fcose-2.2.0.tgz", + "integrity": "sha512-ki1/VuRIHFCzxWNrsshHYPs6L7TvLu3DL+TyIGEsRcvVERmxokbf5Gdk7mFxZnTdiGtnA4cfSmjZJMviqSuZrQ==", + "requires": { + "cose-base": "^2.2.0" + }, + "dependencies": { + "cose-base": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/cose-base/-/cose-base-2.2.0.tgz", + "integrity": "sha512-AzlgcsCbUMymkADOJtQm3wO9S3ltPfYOFD5033keQn9NJzIbtnZj+UdBJe7DYml/8TdbtHJW3j58SOnKhWY/5g==", + "requires": { + "layout-base": "^2.0.0" + } + }, + "layout-base": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/layout-base/-/layout-base-2.0.1.tgz", + "integrity": "sha512-dp3s92+uNI1hWIpPGH3jK2kxE2lMjdXdr+DH8ynZHpd6PUlH6x6cbuXnoMmiNumznqaNO31xu9e79F0uuZ0JFg==" + } + } + }, + "d3": { + "version": "7.8.5", + "resolved": "https://registry.npmjs.org/d3/-/d3-7.8.5.tgz", + "integrity": "sha512-JgoahDG51ncUfJu6wX/1vWQEqOflgXyl4MaHqlcSruTez7yhaRKR9i8VjjcQGeS2en/jnFivXuaIMnseMMt0XA==", + "requires": { + "d3-array": "3", + "d3-axis": "3", + "d3-brush": "3", + "d3-chord": "3", + "d3-color": "3", + "d3-contour": "4", + "d3-delaunay": "6", + "d3-dispatch": "3", + "d3-drag": "3", + "d3-dsv": "3", + "d3-ease": "3", + "d3-fetch": "3", + "d3-force": "3", + "d3-format": "3", + "d3-geo": "3", + "d3-hierarchy": "3", + "d3-interpolate": "3", + "d3-path": "3", + "d3-polygon": "3", + "d3-quadtree": "3", + "d3-random": "3", + "d3-scale": "4", + "d3-scale-chromatic": "3", + "d3-selection": "3", + "d3-shape": "3", + "d3-time": "3", + "d3-time-format": "4", + "d3-timer": "3", + "d3-transition": "3", + "d3-zoom": "3" + } + }, + "d3-array": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-3.2.4.tgz", + "integrity": "sha512-tdQAmyA18i4J7wprpYq8ClcxZy3SC31QMeByyCFyRt7BVHdREQZ5lpzoe5mFEYZUWe+oq8HBvk9JjpibyEV4Jg==", + "requires": { + "internmap": "1 - 2" + } + }, + "d3-axis": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-axis/-/d3-axis-3.0.0.tgz", + "integrity": "sha512-IH5tgjV4jE/GhHkRV0HiVYPDtvfjHQlQfJHs0usq7M30XcSBvOotpmH1IgkcXsO/5gEQZD43B//fc7SRT5S+xw==" + }, + "d3-brush": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-brush/-/d3-brush-3.0.0.tgz", + "integrity": "sha512-ALnjWlVYkXsVIGlOsuWH1+3udkYFI48Ljihfnh8FZPF2QS9o+PzGLBslO0PjzVoHLZ2KCVgAM8NVkXPJB2aNnQ==", + "requires": { + "d3-dispatch": "1 - 3", + "d3-drag": "2 - 3", + "d3-interpolate": "1 - 3", + "d3-selection": "3", + "d3-transition": "3" + } + }, + "d3-chord": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-chord/-/d3-chord-3.0.1.tgz", + "integrity": "sha512-VE5S6TNa+j8msksl7HwjxMHDM2yNK3XCkusIlpX5kwauBfXuyLAtNg9jCp/iHH61tgI4sb6R/EIMWCqEIdjT/g==", + "requires": { + "d3-path": "1 - 3" + } + }, + "d3-color": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-3.1.0.tgz", + "integrity": "sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA==" + }, + "d3-contour": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/d3-contour/-/d3-contour-4.0.2.tgz", + "integrity": "sha512-4EzFTRIikzs47RGmdxbeUvLWtGedDUNkTcmzoeyg4sP/dvCexO47AaQL7VKy/gul85TOxw+IBgA8US2xwbToNA==", + "requires": { + "d3-array": "^3.2.0" + } + }, + "d3-delaunay": { + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/d3-delaunay/-/d3-delaunay-6.0.4.tgz", + "integrity": "sha512-mdjtIZ1XLAM8bm/hx3WwjfHt6Sggek7qH043O8KEjDXN40xi3vx/6pYSVTwLjEgiXQTbvaouWKynLBiUZ6SK6A==", + "requires": { + "delaunator": "5" + } + }, + "d3-dispatch": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-dispatch/-/d3-dispatch-3.0.1.tgz", + "integrity": "sha512-rzUyPU/S7rwUflMyLc1ETDeBj0NRuHKKAcvukozwhshr6g6c5d8zh4c2gQjY2bZ0dXeGLWc1PF174P2tVvKhfg==" + }, + "d3-drag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-drag/-/d3-drag-3.0.0.tgz", + "integrity": "sha512-pWbUJLdETVA8lQNJecMxoXfH6x+mO2UQo8rSmZ+QqxcbyA3hfeprFgIT//HW2nlHChWeIIMwS2Fq+gEARkhTkg==", + "requires": { + "d3-dispatch": "1 - 3", + "d3-selection": "3" + } + }, + "d3-dsv": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-dsv/-/d3-dsv-3.0.1.tgz", + "integrity": "sha512-UG6OvdI5afDIFP9w4G0mNq50dSOsXHJaRE8arAS5o9ApWnIElp8GZw1Dun8vP8OyHOZ/QJUKUJwxiiCCnUwm+Q==", + "requires": { + "commander": "7", + "iconv-lite": "0.6", + "rw": "1" + }, + "dependencies": { + "commander": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", + "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==" + }, + "iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "requires": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + } + } + } + }, + "d3-ease": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-ease/-/d3-ease-3.0.1.tgz", + "integrity": "sha512-wR/XK3D3XcLIZwpbvQwQ5fK+8Ykds1ip7A2Txe0yxncXSdq1L9skcG7blcedkOX+ZcgxGAmLX1FrRGbADwzi0w==" + }, + "d3-fetch": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-fetch/-/d3-fetch-3.0.1.tgz", + "integrity": "sha512-kpkQIM20n3oLVBKGg6oHrUchHM3xODkTzjMoj7aWQFq5QEM+R6E4WkzT5+tojDY7yjez8KgCBRoj4aEr99Fdqw==", + "requires": { + "d3-dsv": "1 - 3" + } + }, + "d3-force": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-force/-/d3-force-3.0.0.tgz", + "integrity": "sha512-zxV/SsA+U4yte8051P4ECydjD/S+qeYtnaIyAs9tgHCqfguma/aAQDjo85A9Z6EKhBirHRJHXIgJUlffT4wdLg==", + "requires": { + "d3-dispatch": "1 - 3", + "d3-quadtree": "1 - 3", + "d3-timer": "1 - 3" + } + }, + "d3-format": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-format/-/d3-format-3.1.0.tgz", + "integrity": "sha512-YyUI6AEuY/Wpt8KWLgZHsIU86atmikuoOmCfommt0LYHiQSPjvX2AcFc38PX0CBpr2RCyZhjex+NS/LPOv6YqA==" + }, + "d3-geo": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-geo/-/d3-geo-3.1.0.tgz", + "integrity": "sha512-JEo5HxXDdDYXCaWdwLRt79y7giK8SbhZJbFWXqbRTolCHFI5jRqteLzCsq51NKbUoX0PjBVSohxrx+NoOUujYA==", + "requires": { + "d3-array": "2.5.0 - 3" + } + }, + "d3-hierarchy": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/d3-hierarchy/-/d3-hierarchy-3.1.2.tgz", + "integrity": "sha512-FX/9frcub54beBdugHjDCdikxThEqjnR93Qt7PvQTOHxyiNCAlvMrHhclk3cD5VeAaq9fxmfRp+CnWw9rEMBuA==" + }, + "d3-interpolate": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-3.0.1.tgz", + "integrity": "sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g==", + "requires": { + "d3-color": "1 - 3" + } + }, + "d3-path": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-path/-/d3-path-3.1.0.tgz", + "integrity": "sha512-p3KP5HCf/bvjBSSKuXid6Zqijx7wIfNW+J/maPs+iwR35at5JCbLUT0LzF1cnjbCHWhqzQTIN2Jpe8pRebIEFQ==" + }, + "d3-polygon": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-polygon/-/d3-polygon-3.0.1.tgz", + "integrity": "sha512-3vbA7vXYwfe1SYhED++fPUQlWSYTTGmFmQiany/gdbiWgU/iEyQzyymwL9SkJjFFuCS4902BSzewVGsHHmHtXg==" + }, + "d3-quadtree": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-quadtree/-/d3-quadtree-3.0.1.tgz", + "integrity": "sha512-04xDrxQTDTCFwP5H6hRhsRcb9xxv2RzkcsygFzmkSIOJy3PeRJP7sNk3VRIbKXcog561P9oU0/rVH6vDROAgUw==" + }, + "d3-random": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-random/-/d3-random-3.0.1.tgz", + "integrity": "sha512-FXMe9GfxTxqd5D6jFsQ+DJ8BJS4E/fT5mqqdjovykEB2oFbTMDVdg1MGFxfQW+FBOGoB++k8swBrgwSHT1cUXQ==" + }, + "d3-scale": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/d3-scale/-/d3-scale-4.0.2.tgz", + "integrity": "sha512-GZW464g1SH7ag3Y7hXjf8RoUuAFIqklOAq3MRl4OaWabTFJY9PN/E1YklhXLh+OQ3fM9yS2nOkCoS+WLZ6kvxQ==", + "requires": { + "d3-array": "2.10.0 - 3", + "d3-format": "1 - 3", + "d3-interpolate": "1.2.0 - 3", + "d3-time": "2.1.1 - 3", + "d3-time-format": "2 - 4" + } + }, + "d3-scale-chromatic": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-scale-chromatic/-/d3-scale-chromatic-3.0.0.tgz", + "integrity": "sha512-Lx9thtxAKrO2Pq6OO2Ua474opeziKr279P/TKZsMAhYyNDD3EnCffdbgeSYN5O7m2ByQsxtuP2CSDczNUIZ22g==", + "requires": { + "d3-color": "1 - 3", + "d3-interpolate": "1 - 3" + } + }, + "d3-selection": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-selection/-/d3-selection-3.0.0.tgz", + "integrity": "sha512-fmTRWbNMmsmWq6xJV8D19U/gw/bwrHfNXxrIN+HfZgnzqTHp9jOmKMhsTUjXOJnZOdZY9Q28y4yebKzqDKlxlQ==" + }, + "d3-shape": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/d3-shape/-/d3-shape-3.2.0.tgz", + "integrity": "sha512-SaLBuwGm3MOViRq2ABk3eLoxwZELpH6zhl3FbAoJ7Vm1gofKx6El1Ib5z23NUEhF9AsGl7y+dzLe5Cw2AArGTA==", + "requires": { + "d3-path": "^3.1.0" + } + }, + "d3-time": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-time/-/d3-time-3.1.0.tgz", + "integrity": "sha512-VqKjzBLejbSMT4IgbmVgDjpkYrNWUYJnbCGo874u7MMKIWsILRX+OpX/gTk8MqjpT1A/c6HY2dCA77ZN0lkQ2Q==", + "requires": { + "d3-array": "2 - 3" + } + }, + "d3-time-format": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/d3-time-format/-/d3-time-format-4.1.0.tgz", + "integrity": "sha512-dJxPBlzC7NugB2PDLwo9Q8JiTR3M3e4/XANkreKSUxF8vvXKqm1Yfq4Q5dl8budlunRVlUUaDUgFt7eA8D6NLg==", + "requires": { + "d3-time": "1 - 3" + } + }, + "d3-timer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-timer/-/d3-timer-3.0.1.tgz", + "integrity": "sha512-ndfJ/JxxMd3nw31uyKoY2naivF+r29V+Lc0svZxe1JvvIRmi8hUsrMvdOwgS1o6uBHmiz91geQ0ylPP0aj1VUA==" + }, + "d3-transition": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-transition/-/d3-transition-3.0.1.tgz", + "integrity": "sha512-ApKvfjsSR6tg06xrL434C0WydLr7JewBB3V+/39RMHsaXTOG0zmt/OAXeng5M5LBm0ojmxJrpomQVZ1aPvBL4w==", + "requires": { + "d3-color": "1 - 3", + "d3-dispatch": "1 - 3", + "d3-ease": "1 - 3", + "d3-interpolate": "1 - 3", + "d3-timer": "1 - 3" + } + }, + "d3-zoom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-zoom/-/d3-zoom-3.0.0.tgz", + "integrity": "sha512-b8AmV3kfQaqWAuacbPuNbL6vahnOJflOhexLzMMNLga62+/nh0JzvJ0aO/5a5MVgUFGS7Hu1P9P03o3fJkDCyw==", + "requires": { + "d3-dispatch": "1 - 3", + "d3-drag": "2 - 3", + "d3-interpolate": "1 - 3", + "d3-selection": "2 - 3", + "d3-transition": "2 - 3" + } + }, + "dagre-d3-es": { + "version": "7.0.9", + "resolved": "https://registry.npmjs.org/dagre-d3-es/-/dagre-d3-es-7.0.9.tgz", + "integrity": "sha512-rYR4QfVmy+sR44IBDvVtcAmOReGBvRCWDpO2QjYwqgh9yijw6eSHBqaPG/LIOEy7aBsniLvtMW6pg19qJhq60w==", + "requires": { + "d3": "^7.8.2", + "lodash-es": "^4.17.21" + } + }, + "dayjs": { + "version": "1.11.10", + "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.10.tgz", + "integrity": "sha512-vjAczensTgRcqDERK0SR2XMwsF/tSvnvlv6VcF2GIhg6Sx4yOIt/irsr1RDJsKiIyBzJDpCoXiWWq28MqH2cnQ==" + }, "debug": { "version": "4.3.4", "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", @@ -16751,6 +17711,14 @@ "slash": "^3.0.0" } }, + "delaunator": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/delaunator/-/delaunator-5.0.0.tgz", + "integrity": "sha512-AyLvtyJdbv/U1GkiS6gUUzclRoAY4Gs75qkMygJJhU75LW4DNuSF2RMzpxs9jw9Oz1BobHjTdkG3zdP55VxAqw==", + "requires": { + "robust-predicates": "^3.0.0" + } + }, "depd": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", @@ -16859,6 +17827,11 @@ "domelementtype": "^2.3.0" } }, + "dompurify": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-2.4.3.tgz", + "integrity": "sha512-q6QaLcakcRjebxjg8/+NP+h0rPfatOgOzc46Fst9VAA3jF2ApfKBNKMzdP4DYTqtUMXSCd5pRS/8Po/OmoCHZQ==" + }, "domutils": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.1.0.tgz", @@ -16918,6 +17891,11 @@ "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.523.tgz", "integrity": "sha512-9AreocSUWnzNtvLcbpng6N+GkXnCcBR80IQkxRC9Dfdyg4gaWNUPBujAHUpKkiUkoSoR9UlhA4zD/IgBklmhzg==" }, + "elkjs": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/elkjs/-/elkjs-0.8.2.tgz", + "integrity": "sha512-L6uRgvZTH+4OF5NE/MBbzQx/WYpru1xCBE9respNj6qznEewGUIfhzmm7horWWxbNO2M0WckQypGctR8lH79xQ==" + }, "emoji-regex": { "version": "9.2.2", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", @@ -17772,6 +18750,11 @@ "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==" }, + "heap": { + "version": "0.2.7", + "resolved": "https://registry.npmjs.org/heap/-/heap-0.2.7.tgz", + "integrity": "sha512-2bsegYkkHO+h/9MGbn6KWcE45cHZgPANo5LXF7EvWdT0yT2EguSVO1nDgU5c8+ZOPwp2vMNa7YFsJhVcDR9Sdg==" + }, "history": { "version": "4.10.1", "resolved": "https://registry.npmjs.org/history/-/history-4.10.1.tgz", @@ -18043,6 +19026,11 @@ "resolved": "https://registry.npmjs.org/inline-style-parser/-/inline-style-parser-0.1.1.tgz", "integrity": "sha512-7NXolsK4CAS5+xvdj5OMMbI962hU/wvwoxk+LWR9Ek9bVtyuuYScDN6eS0rUm6TxApFpw7CX1o4uJzcd4AyD3Q==" }, + "internmap": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/internmap/-/internmap-2.0.3.tgz", + "integrity": "sha512-5Hh7Y1wQbvY5ooGgPbDaL5iYLAPzMTUrjMulskHLH6wnv/A+1q5rgEaiuqEjB+oxGXIVZs1FF+R/KPN3ZSQYYg==" + }, "interpret": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz", @@ -18362,6 +19350,11 @@ "json-buffer": "3.0.0" } }, + "khroma": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/khroma/-/khroma-2.1.0.tgz", + "integrity": "sha512-Ls993zuzfayK269Svk9hzpeGUKob/sIgZzyHYdjQoAdQetRKpOLj+k/QQQ/6Qi0Yz65mlROrfd+Ev+1+7dz9Kw==" + }, "kind-of": { "version": "6.0.3", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", @@ -18389,6 +19382,11 @@ "shell-quote": "^1.7.3" } }, + "layout-base": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/layout-base/-/layout-base-1.0.2.tgz", + "integrity": "sha512-8h2oVEZNktL4BH2JCOI90iD1yXwL6iNW7KcCKT2QZgQJR2vbqDsldCTPRU9NifTCqHZci57XvQQ15YTu+sTYPg==" + }, "leven": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", @@ -18432,6 +19430,11 @@ "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" }, + "lodash-es": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.21.tgz", + "integrity": "sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==" + }, "lodash.curry": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/lodash.curry/-/lodash.curry-4.1.1.tgz", @@ -18605,6 +19608,36 @@ "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==" }, + "mermaid": { + "version": "9.4.3", + "resolved": "https://registry.npmjs.org/mermaid/-/mermaid-9.4.3.tgz", + "integrity": "sha512-TLkQEtqhRSuEHSE34lh5bCa94KATCyluAXmFnNI2PRZwOpXFeqiJWwZl+d2CcemE1RS6QbbueSSq9QIg8Uxcyw==", + "requires": { + "@braintree/sanitize-url": "^6.0.0", + "cytoscape": "^3.23.0", + "cytoscape-cose-bilkent": "^4.1.0", + "cytoscape-fcose": "^2.1.0", + "d3": "^7.4.0", + "dagre-d3-es": "7.0.9", + "dayjs": "^1.11.7", + "dompurify": "2.4.3", + "elkjs": "^0.8.2", + "khroma": "^2.0.0", + "lodash-es": "^4.17.21", + "non-layered-tidy-tree-layout": "^2.0.2", + "stylis": "^4.1.2", + "ts-dedent": "^2.2.0", + "uuid": "^9.0.0", + "web-worker": "^1.2.0" + }, + "dependencies": { + "uuid": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz", + "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==" + } + } + }, "methods": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", @@ -18779,6 +19812,11 @@ "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.13.tgz", "integrity": "sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ==" }, + "non-layered-tidy-tree-layout": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/non-layered-tidy-tree-layout/-/non-layered-tidy-tree-layout-2.0.2.tgz", + "integrity": "sha512-gkXMxRzUH+PB0ax9dUN0yYF0S25BqeAYqhgMaLUFmpXLEk7Fcu8f4emJuOAY0V8kjDICxROIKsTAKsV/v355xw==" + }, "normalize-path": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", @@ -20230,6 +21268,11 @@ "glob": "^7.1.3" } }, + "robust-predicates": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/robust-predicates/-/robust-predicates-3.0.2.tgz", + "integrity": "sha512-IXgzBWvWQwE6PrDI05OvmXUIruQTcoMDzRsOd5CDvHCVLcLHMTSYvOK5Cm46kWqlV3yAbuSpBZdJ5oP5OUoStg==" + }, "rtl-detect": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/rtl-detect/-/rtl-detect-1.0.4.tgz", @@ -20289,6 +21332,11 @@ "queue-microtask": "^1.2.2" } }, + "rw": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/rw/-/rw-1.3.3.tgz", + "integrity": "sha512-PdhdWy89SiZogBLaw42zdeqtRJ//zFd2PgQavcICDUgJT5oW10QCRKbJ6bg4r0/UY2M6BWd5tkxuGFRvCkgfHQ==" + }, "rxjs": { "version": "7.8.1", "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz", @@ -20821,6 +21869,11 @@ "postcss-selector-parser": "^6.0.4" } }, + "stylis": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/stylis/-/stylis-4.3.0.tgz", + "integrity": "sha512-E87pIogpwUsUwXw7dNyU4QDjdgVMy52m+XEOPEKUn161cCzWjjhPSQhByfd1CcNvrOLnXQ6OnnZDwnJrz/Z4YQ==" + }, "supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -21038,6 +22091,11 @@ "resolved": "https://registry.npmjs.org/trough/-/trough-1.0.5.tgz", "integrity": "sha512-rvuRbTarPXmMb79SmzEp8aqXNKcK+y0XaB298IXueQ8I2PsrATcPBCSPyK/dDNa2iWOhKlfNnOjdAOTBU/nkFA==" }, + "ts-dedent": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/ts-dedent/-/ts-dedent-2.2.0.tgz", + "integrity": "sha512-q5W7tVM71e2xjHZTlgfTDoPF/SmqKG5hddq9SzR49CH2hayqRKJtQ4mtRlSxKaJlR/+9rEM+mnBHf7I2/BQcpQ==" + }, "tslib": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", @@ -21485,6 +22543,11 @@ "resolved": "https://registry.npmjs.org/web-namespaces/-/web-namespaces-1.1.4.tgz", "integrity": "sha512-wYxSGajtmoP4WxfejAPIr4l0fVh+jeMXZb08wNc0tMg6xsfZXj3cECqIK0G7ZAqUq0PP8WlMDtaOGVBTAWztNw==" }, + "web-worker": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/web-worker/-/web-worker-1.2.0.tgz", + "integrity": "sha512-PgF341avzqyx60neE9DD+XS26MMNMoUQRz9NOZwW32nPQrF6p77f1htcnjBSEV8BGMKZ16choqUG4hyI0Hx7mA==" + }, "webidl-conversions": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", diff --git a/package.json b/package.json index e59d464b..29a8db12 100644 --- a/package.json +++ b/package.json @@ -17,6 +17,7 @@ "dependencies": { "@docusaurus/core": "2.4.1", "@docusaurus/preset-classic": "2.4.1", + "@docusaurus/theme-mermaid": "2.4.1", "@mdx-js/react": "^1.6.22", "clsx": "^1.2.1", "prism-react-renderer": "^1.3.5", From c37b19976a573e539b8a4762b5e54be39e970ec5 Mon Sep 17 00:00:00 2001 From: Bloomy <90511192+BloomyInDev@users.noreply.github.com> Date: Wed, 15 Nov 2023 00:38:05 +0100 Subject: [PATCH 21/51] Fix broken links - I fixed all the brokens links (normaly) - Fix smol error in positioning --- docs/flowchart.md | 15 ++++++++++----- docs/how-does-it-work.md | 2 +- docs/n0110/n0110-is-locked.md | 8 ++++---- .../n0110/phi/check-version-change-eligibility.md | 2 +- docs/n0110/phi/install-epsilon-18-2-0.md | 2 +- docs/n0110/phi/phi-now-what.md | 5 +---- docs/no-custom/restore-stock-firmware.md | 2 +- docs/troubleshooting.md | 4 ++-- 8 files changed, 21 insertions(+), 19 deletions(-) diff --git a/docs/flowchart.md b/docs/flowchart.md index cf2f2cfa..6d27292c 100644 --- a/docs/flowchart.md +++ b/docs/flowchart.md @@ -1,16 +1,21 @@ --- -sidebar_position: 7 +sidebar_position: 6 title: "Chart of decision" pagination_next: null pagination_prev: null --- +:::info +This is not translated in other languages than English (yet !) +::: ```mermaid flowchart TD - start([Start]) --> model_number[Read model number] calc_unlocked([Your calculator is unlocked, yay!]) calc_locked([Your calculator is locked, but you can do other things with it]) + start([Start]) --> want_cfw[Want CFW ?] + want_cfw --Yes--> model_number[Read model number] + want_cfw --No--> calc_locked model_number --N0100--> calc_unlocked model_number --N0110--> check_version[What version ?] model_number --N0115--> calc_locked @@ -19,9 +24,9 @@ flowchart TD check_version --16.3.0 to 16.4.2--> phi[Use Phi] check_version --16.4.3 or 18.2.3--> install_18_2_0[Install Epsilon 18.2.0] check_version --17.0.0 to 18.2.0--> phi - check_version --19.0.0 to 21.3.0--> try_downgrade[Try to install Epsilon 18.2.0] - try_downgrade --Works--> phi - try_downgrade --Fail--> downgrade_fail(( )) --Open the calculator--> hardware_method[Follow the hardware method] + check_version --19.0.0 to 21.3.0--> downgrade_check[Check eligibility] + downgrade_check --Eligible--> install_18_2_0 + downgrade_check --Non eligible--> downgrade_fail(( )) --Open the calculator--> hardware_method[Follow the hardware method] downgrade_fail --Don't open the calculator--> calc_locked install_18_2_0 --> phi diff --git a/docs/how-does-it-work.md b/docs/how-does-it-work.md index 0f46c396..cbfb8311 100644 --- a/docs/how-does-it-work.md +++ b/docs/how-does-it-work.md @@ -1,5 +1,5 @@ --- -sidebar_position: 8 +sidebar_position: 9 title: "How does it work ?" pagination_next: null pagination_prev: null diff --git a/docs/n0110/n0110-is-locked.md b/docs/n0110/n0110-is-locked.md index 59217e47..a44f47f6 100644 --- a/docs/n0110/n0110-is-locked.md +++ b/docs/n0110/n0110-is-locked.md @@ -32,7 +32,7 @@ If the screen stays black and the LED turns red, STOP - your calculator is alrea Press the reset button at the back of the calculator to return to the firmware. -#### Section III - Select a Method +#### Section III - Select a Method {#principal-methods} Use the version table below to select a method. A few things to note: + The version table below is *inclusive*. For example, "from 16.3.0 to 18.0.0" includes 16.3.0, 18.0.0, and all versions in between. @@ -41,14 +41,14 @@ Use the version table below to select a method. A few things to note: | System Version | What to do | |----------------|----------------------------------------------------------------------| | 11.2.0-16.2.0 | [Now what ?](n0110-unlocked) | -| 16.3.0-16.4.2 | [Phi](phi/phi) | +| 16.3.0-16.4.2 | [Phi](phi) | | 16.4.3 | [Install Epsilon 18.2.0](phi/install-epsilon-18-2-0) | -| 17.0.0-18.2.0 | [Phi](phi/phi) | +| 17.0.0-18.2.0 | [Phi](phi) | | 18.2.3 | [Install Epsilon 18.2.0](phi/install-epsilon-18-2-0) | | 19.0.0-21.2.0 | [Check version change eligibility](phi/check-version-change-eligibility) | --- -#### Alternate Methods +#### Alternate Methods {#alt-methods} If possible, you should follow one of the software methods listed above. diff --git a/docs/n0110/phi/check-version-change-eligibility.md b/docs/n0110/phi/check-version-change-eligibility.md index e5d5abbb..ebd36964 100644 --- a/docs/n0110/phi/check-version-change-eligibility.md +++ b/docs/n0110/phi/check-version-change-eligibility.md @@ -9,7 +9,7 @@ You may need to change Epsilon's version to unlock your calculator, we usually i ### If you have Epsilon 15 or lower -You don't need to change your version, just go to [Now What ?](/docs/n0110/n0110-now-what) +You don't need to change your version, just go to [Now What ?](/docs/n0110/n0110-unlocked) ### If you have Epsilon 16 to 18.2.0 (but not 16.4.3) diff --git a/docs/n0110/phi/install-epsilon-18-2-0.md b/docs/n0110/phi/install-epsilon-18-2-0.md index 36decc51..25c69beb 100644 --- a/docs/n0110/phi/install-epsilon-18-2-0.md +++ b/docs/n0110/phi/install-epsilon-18-2-0.md @@ -48,6 +48,6 @@ You should now see version 18.2.0 in Settings > About. :::caution -If it is not the case or your Numworks doesn't boot, you can only use an [alternate method](n0110-is-locked#alternate-methods). +If it is not the case or your Numworks doesn't boot, you can only use an [alternate method](n0110-is-locked#alt-methods). ::: diff --git a/docs/n0110/phi/phi-now-what.md b/docs/n0110/phi/phi-now-what.md index b01f224e..64703854 100644 --- a/docs/n0110/phi/phi-now-what.md +++ b/docs/n0110/phi/phi-now-what.md @@ -26,8 +26,5 @@ If you don't boot back into Epsilon, don't worry, we will fix that later. ::: -### Continue to [Final checks](final-checks) -## Choice II - Install a CFW - -Go to [choose a CFW](choose-a-cfw) +Go to [choose a CFW](/docs/cfw/choose-a-cfw) diff --git a/docs/no-custom/restore-stock-firmware.md b/docs/no-custom/restore-stock-firmware.md index a92e11e1..62f944f0 100644 --- a/docs/no-custom/restore-stock-firmware.md +++ b/docs/no-custom/restore-stock-firmware.md @@ -6,7 +6,7 @@ pagination_prev: null :::danger -Restoring your calculator to stock firmware **WILL LOCK IT** and you won't be able to install any CFW on it ever again, unless you use a hardware method to unlock it again. We highly advise using the bootloader from any compatible CFW and [install Epsilon from softloader](install-epsilon-from-softloader) to still use the latest versions without locking your calculator. +Restoring your calculator to stock firmware **WILL LOCK IT** and you won't be able to install any CFW on it ever again, unless you use a hardware method to unlock it again. We highly advise using the bootloader from any compatible CFW and [install Epsilon from softloader](/docs/cfw/install-epsilon-from-softloader) to still use the latest versions without locking your calculator. ::: diff --git a/docs/troubleshooting.md b/docs/troubleshooting.md index 461f3904..f2fd7643 100644 --- a/docs/troubleshooting.md +++ b/docs/troubleshooting.md @@ -9,7 +9,7 @@ pagination_prev: null Your calculator is in Recovery mode, it's waiting to receive a firmware, so it's unlocked. **If you update from Numworks' website, your calculator will be locked** -[Choose a CFW](choose-a-cfw) to install on your calculator. (If you want to install Epsilon without locking your calculator, install first a compatible CFW while in recovery mode, then install Epsilon while NOT in recovery mode) +[Choose a CFW](./cfw/choose-a-cfw) to install on your calculator. (If you want to install Epsilon without locking your calculator, install first a compatible CFW while in recovery mode, then install Epsilon while NOT in recovery mode) ### Black screen, yellow cable, and `numworks.com/rescue` @@ -63,7 +63,7 @@ This can easily be fixed if you close the tab or software already connected to i This means your calculator is protected against CFM installation. If you want to install CFW, you need to unlock it. -Follow [this guide](get-started) to unlock it. +Follow [this guide](intro) to unlock it. ### Recovery mode (Black Screen + Red Led), calculator not recognized From 336799d900cf28fa86a91787a148345958f256c4 Mon Sep 17 00:00:00 2001 From: Bloomy <90511192+BloomyInDev@users.noreply.github.com> Date: Wed, 15 Nov 2023 00:38:54 +0100 Subject: [PATCH 22/51] Translate everything - Translate every page (normaly) This commit took over 15 days --- i18n/fr/code.json | 330 ++++++++++++++++++ .../current.json | 46 +++ .../current/cfw/choose-a-cfw.md | 19 + .../cfw/install-epsilon-from-softloader.md | 48 +++ .../current/cfw/omega.md | 73 ++++ .../current/cfw/upsilon.md | 80 +++++ .../current/credits.md | 27 ++ .../current/faq.md | 27 ++ .../current/how-does-it-work.md | 95 +++++ .../current/intro.md | 47 +++ .../n0110/hardware/n0110-hardware-unlock.md | 21 ++ .../current/n0110/n0110-is-locked.md | 58 +++ .../current/n0110/n0110-unlocked.md | 9 + .../phi/check-version-change-eligibility.md | 39 +++ .../n0110/phi/install-epsilon-18-2-0.md | 49 +++ .../current/n0110/phi/phi-now-what.md | 29 ++ .../current/n0110/phi/phi.md | 80 +++++ .../no-custom/restore-stock-firmware.md | 18 + .../current/no-custom/what-to-do-locked.md | 27 ++ .../current/troubleshooting.md | 149 ++++++++ i18n/fr/docusaurus-theme-classic/footer.json | 26 ++ i18n/fr/docusaurus-theme-classic/navbar.json | 18 + src/pages/index.tsx | 37 +- 23 files changed, 1334 insertions(+), 18 deletions(-) create mode 100644 i18n/fr/code.json create mode 100644 i18n/fr/docusaurus-plugin-content-docs/current.json create mode 100644 i18n/fr/docusaurus-plugin-content-docs/current/cfw/choose-a-cfw.md create mode 100644 i18n/fr/docusaurus-plugin-content-docs/current/cfw/install-epsilon-from-softloader.md create mode 100644 i18n/fr/docusaurus-plugin-content-docs/current/cfw/omega.md create mode 100644 i18n/fr/docusaurus-plugin-content-docs/current/cfw/upsilon.md create mode 100644 i18n/fr/docusaurus-plugin-content-docs/current/credits.md create mode 100644 i18n/fr/docusaurus-plugin-content-docs/current/faq.md create mode 100644 i18n/fr/docusaurus-plugin-content-docs/current/how-does-it-work.md create mode 100644 i18n/fr/docusaurus-plugin-content-docs/current/intro.md create mode 100644 i18n/fr/docusaurus-plugin-content-docs/current/n0110/hardware/n0110-hardware-unlock.md create mode 100644 i18n/fr/docusaurus-plugin-content-docs/current/n0110/n0110-is-locked.md create mode 100644 i18n/fr/docusaurus-plugin-content-docs/current/n0110/n0110-unlocked.md create mode 100644 i18n/fr/docusaurus-plugin-content-docs/current/n0110/phi/check-version-change-eligibility.md create mode 100644 i18n/fr/docusaurus-plugin-content-docs/current/n0110/phi/install-epsilon-18-2-0.md create mode 100644 i18n/fr/docusaurus-plugin-content-docs/current/n0110/phi/phi-now-what.md create mode 100644 i18n/fr/docusaurus-plugin-content-docs/current/n0110/phi/phi.md create mode 100644 i18n/fr/docusaurus-plugin-content-docs/current/no-custom/restore-stock-firmware.md create mode 100644 i18n/fr/docusaurus-plugin-content-docs/current/no-custom/what-to-do-locked.md create mode 100644 i18n/fr/docusaurus-plugin-content-docs/current/troubleshooting.md create mode 100644 i18n/fr/docusaurus-theme-classic/footer.json create mode 100644 i18n/fr/docusaurus-theme-classic/navbar.json diff --git a/i18n/fr/code.json b/i18n/fr/code.json new file mode 100644 index 00000000..e7f37db7 --- /dev/null +++ b/i18n/fr/code.json @@ -0,0 +1,330 @@ +{ + "theme.ErrorPageContent.title": { + "message": "Cette page a planté.", + "description": "The title of the fallback page when the page crashed" + }, + "theme.NotFound.title": { + "message": "Page introuvable", + "description": "The title of the 404 page" + }, + "theme.NotFound.p1": { + "message": "Nous n'avons pas trouvé ce que vous recherchez.", + "description": "The first paragraph of the 404 page" + }, + "theme.NotFound.p2": { + "message": "Veuillez contacter le propriétaire du site qui vous a lié à l'URL d'origine et leur faire savoir que leur lien est cassé.", + "description": "The 2nd paragraph of the 404 page" + }, + "theme.admonition.note": { + "message": "remarque", + "description": "The default label used for the Note admonition (:::note)" + }, + "theme.admonition.tip": { + "message": "astuce", + "description": "The default label used for the Tip admonition (:::tip)" + }, + "theme.admonition.danger": { + "message": "danger", + "description": "The default label used for the Danger admonition (:::danger)" + }, + "theme.admonition.info": { + "message": "info", + "description": "The default label used for the Info admonition (:::info)" + }, + "theme.admonition.caution": { + "message": "attention", + "description": "The default label used for the Caution admonition (:::caution)" + }, + "theme.BackToTopButton.buttonAriaLabel": { + "message": "Retour au début de la page", + "description": "The ARIA label for the back to top button" + }, + "theme.blog.archive.title": { + "message": "Archive", + "description": "The page & hero title of the blog archive page" + }, + "theme.blog.archive.description": { + "message": "Archive", + "description": "The page & hero description of the blog archive page" + }, + "theme.blog.paginator.navAriaLabel": { + "message": "Pagination de la liste des articles du blog", + "description": "The ARIA label for the blog pagination" + }, + "theme.blog.paginator.newerEntries": { + "message": "Nouvelles entrées", + "description": "The label used to navigate to the newer blog posts page (previous page)" + }, + "theme.blog.paginator.olderEntries": { + "message": "Anciennes entrées", + "description": "The label used to navigate to the older blog posts page (next page)" + }, + "theme.blog.post.paginator.navAriaLabel": { + "message": "Pagination des articles du blog", + "description": "The ARIA label for the blog posts pagination" + }, + "theme.blog.post.paginator.newerPost": { + "message": "Article plus récent", + "description": "The blog post button label to navigate to the newer/previous post" + }, + "theme.blog.post.paginator.olderPost": { + "message": "Article plus ancien", + "description": "The blog post button label to navigate to the older/next post" + }, + "theme.blog.post.plurals": { + "message": "Un article|{count} articles", + "description": "Pluralized label for \"{count} posts\". Use as much plural forms (separated by \"|\") as your language support (see https://www.unicode.org/cldr/cldr-aux/charts/34/supplemental/language_plural_rules.html)" + }, + "theme.blog.tagTitle": { + "message": "{nPosts} tagués avec « {tagName} »", + "description": "The title of the page for a blog tag" + }, + "theme.tags.tagsPageLink": { + "message": "Voir tous les tags", + "description": "The label of the link targeting the tag list page" + }, + "theme.colorToggle.ariaLabel": { + "message": "Basculer entre le mode sombre et clair (actuellement {mode})", + "description": "The ARIA label for the navbar color mode toggle" + }, + "theme.colorToggle.ariaLabel.mode.dark": { + "message": "mode sombre", + "description": "The name for the dark color mode" + }, + "theme.colorToggle.ariaLabel.mode.light": { + "message": "mode clair", + "description": "The name for the light color mode" + }, + "theme.docs.breadcrumbs.navAriaLabel": { + "message": "Fil d'Ariane", + "description": "The ARIA label for the breadcrumbs" + }, + "theme.docs.DocCard.categoryDescription": { + "message": "{count} éléments", + "description": "The default description for a category card in the generated index about how many items this category includes" + }, + "theme.docs.paginator.navAriaLabel": { + "message": "Pages de documentation", + "description": "The ARIA label for the docs pagination" + }, + "theme.docs.paginator.previous": { + "message": "Précédent", + "description": "The label used to navigate to the previous doc" + }, + "theme.docs.paginator.next": { + "message": "Suivant", + "description": "The label used to navigate to the next doc" + }, + "theme.docs.tagDocListPageTitle.nDocsTagged": { + "message": "Un document tagué|{count} documents tagués", + "description": "Pluralized label for \"{count} docs tagged\". Use as much plural forms (separated by \"|\") as your language support (see https://www.unicode.org/cldr/cldr-aux/charts/34/supplemental/language_plural_rules.html)" + }, + "theme.docs.tagDocListPageTitle": { + "message": "{nDocsTagged} avec \"{tagName}\"", + "description": "The title of the page for a docs tag" + }, + "theme.docs.versionBadge.label": { + "message": "Version: {versionLabel}" + }, + "theme.docs.versions.unreleasedVersionLabel": { + "message": "Ceci est la documentation de la prochaine version {versionLabel} de {siteTitle}.", + "description": "The label used to tell the user that he's browsing an unreleased doc version" + }, + "theme.docs.versions.unmaintainedVersionLabel": { + "message": "Ceci est la documentation de {siteTitle} {versionLabel}, qui n'est plus activement maintenue.", + "description": "The label used to tell the user that he's browsing an unmaintained doc version" + }, + "theme.docs.versions.latestVersionSuggestionLabel": { + "message": "Pour une documentation à jour, consultez la {latestVersionLink} ({versionLabel}).", + "description": "The label used to tell the user to check the latest version" + }, + "theme.docs.versions.latestVersionLinkLabel": { + "message": "dernière version", + "description": "The label used for the latest version suggestion link label" + }, + "theme.common.editThisPage": { + "message": "Éditer cette page", + "description": "The link label to edit the current page" + }, + "theme.common.headingLinkTitle": { + "message": "Lien direct vers {heading}", + "description": "Title for link to heading" + }, + "theme.lastUpdated.atDate": { + "message": " le {date}", + "description": "The words used to describe on which date a page has been last updated" + }, + "theme.lastUpdated.byUser": { + "message": " par {user}", + "description": "The words used to describe by who the page has been last updated" + }, + "theme.lastUpdated.lastUpdatedAtBy": { + "message": "Dernière mise à jour{atDate}{byUser}", + "description": "The sentence used to display when a page has been last updated, and by who" + }, + "theme.navbar.mobileVersionsDropdown.label": { + "message": "Versions", + "description": "The label for the navbar versions dropdown on mobile view" + }, + "theme.tags.tagsListLabel": { + "message": "Tags :", + "description": "The label alongside a tag list" + }, + "theme.AnnouncementBar.closeButtonAriaLabel": { + "message": "Fermer", + "description": "The ARIA label for close button of announcement bar" + }, + "theme.blog.sidebar.navAriaLabel": { + "message": "Navigation article de blog récent", + "description": "The ARIA label for recent posts in the blog sidebar" + }, + "theme.CodeBlock.copied": { + "message": "Copié", + "description": "The copied button label on code blocks" + }, + "theme.CodeBlock.copyButtonAriaLabel": { + "message": "Copier le code", + "description": "The ARIA label for copy code blocks button" + }, + "theme.CodeBlock.copy": { + "message": "Copier", + "description": "The copy button label on code blocks" + }, + "theme.CodeBlock.wordWrapToggle": { + "message": "Activer/désactiver le retour à la ligne", + "description": "The title attribute for toggle word wrapping button of code block lines" + }, + "theme.DocSidebarItem.toggleCollapsedCategoryAriaLabel": { + "message": "Plier/Déplier la catégorie '{label}' de la barre latérale", + "description": "The ARIA label to toggle the collapsible sidebar category" + }, + "theme.NavBar.navAriaLabel": { + "message": "Main", + "description": "The ARIA label for the main navigation" + }, + "theme.navbar.mobileLanguageDropdown.label": { + "message": "Langues", + "description": "The label for the mobile language switcher dropdown" + }, + "theme.TOCCollapsible.toggleButtonLabel": { + "message": "Sur cette page", + "description": "The label used by the button on the collapsible TOC component" + }, + "theme.blog.post.readMore": { + "message": "Lire plus", + "description": "The label used in blog post item excerpts to link to full blog posts" + }, + "theme.blog.post.readMoreLabel": { + "message": "En savoir plus sur {title}", + "description": "The ARIA label for the link to full blog posts from excerpts" + }, + "theme.docs.breadcrumbs.home": { + "message": "Page d'accueil", + "description": "The ARIA label for the home page in the breadcrumbs" + }, + "theme.blog.post.readingTime.plurals": { + "message": "Une minute de lecture|{readingTime} minutes de lecture", + "description": "Pluralized label for \"{readingTime} min read\". Use as much plural forms (separated by \"|\") as your language support (see https://www.unicode.org/cldr/cldr-aux/charts/34/supplemental/language_plural_rules.html)" + }, + "theme.docs.sidebar.navAriaLabel": { + "message": "Docs sidebar", + "description": "The ARIA label for the sidebar navigation" + }, + "theme.docs.sidebar.collapseButtonTitle": { + "message": "Réduire le menu latéral", + "description": "The title attribute for collapse button of doc sidebar" + }, + "theme.docs.sidebar.collapseButtonAriaLabel": { + "message": "Réduire le menu latéral", + "description": "The title attribute for collapse button of doc sidebar" + }, + "theme.docs.sidebar.closeSidebarButtonAriaLabel": { + "message": "Fermer la barre de navigation", + "description": "The ARIA label for close button of mobile sidebar" + }, + "theme.navbar.mobileSidebarSecondaryMenu.backButtonLabel": { + "message": "← Retour au menu principal", + "description": "The label of the back button to return to main menu, inside the mobile navbar sidebar secondary menu (notably used to display the docs sidebar)" + }, + "theme.docs.sidebar.toggleSidebarButtonAriaLabel": { + "message": "Ouvrir/fermer la barre de navigation", + "description": "The ARIA label for hamburger menu button of mobile navigation" + }, + "theme.docs.sidebar.expandButtonTitle": { + "message": "Déplier le menu latéral", + "description": "The ARIA label and title attribute for expand button of doc sidebar" + }, + "theme.docs.sidebar.expandButtonAriaLabel": { + "message": "Déplier le menu latéral", + "description": "The ARIA label and title attribute for expand button of doc sidebar" + }, + "theme.ErrorPageContent.tryAgain": { + "message": "Réessayer", + "description": "The label of the button to try again rendering when the React error boundary captures an error" + }, + "theme.common.skipToMainContent": { + "message": "Aller au contenu principal", + "description": "The skip to content label used for accessibility, allowing to rapidly navigate to main content with keyboard tab/enter navigation" + }, + "theme.tags.tagsPageTitle": { + "message": "Tags", + "description": "The title of the tag list page" + }, + "home.page.cfw.title": { + "message": "CFW" + }, + "home.page.cfw.text1": { + "message": "Les CFW (Custom Firmware) sont des modifications logicielles pour la Numworks. Ces modifications vous permettent de faire tout ce qu'il est possible physiquement avec la Numworks, et pas seulement ce que Numworks décide ce qu'il est possible de faire avec son matériel" + }, + "home.page.cfw.text2": { + "message": "Les utilisation communes des CFW sont:" + }, + "home.page.cfw.possibilities.1": { + "message": "Executer des logiciels et jeux fait-maison (Homebrew) fait ou portés sur la Numworks" + }, + "home.page.cfw.possibilities.2": { + "message": "Installer des applications comme des émulateurs" + }, + "home.page.cfw.possibilities.3.part1": { + "message": "Installer " + }, + "home.page.cfw.possibilities.3.part2": { + "message": ", un logiciel de calcul formel (CAS) très avancé" + }, + "home.page.cfw.possibilities.4.part1": { + "message": "Installer " + }, + "home.page.cfw.possibilities.4.part2": { + "message": "d'autres CFW" + }, + "home.page.cfw.possibilities.4.part3": { + "message": ", comme " + }, + "home.page.cfw.possibilities.4.part4": { + "message": " ou " + }, + "home.page.whatContent.title": { + "message": "Que contient ce guide" + }, + "home.page.whatContent.text": { + "message": "Ce guide va expliquer comment:" + }, + "home.page.whatContent.list.1": { + "message": "Débloquer votre calculatrice si besoin" + }, + "home.page.whatContent.list.2": { + "message": "Installer un CFW sur votre calculatrice" + }, + "home.page.whatContent.list.3": { + "message": "Installer un bootloader customisé" + }, + "home.page.whatKnow.title": { + "message": "Qu'est ce que j'ai besoin de savoir avant de commencer ?" + }, + "home.page.whatKnow.text1": { + "message": "Les méthodes utilisées ici sont à leur débuts. Il y a une petite chance que ces méthodes briquent votre calculatrice. Nous ne sommes dans aucun cas responsable de tout problème lié à votre calculatrice." + }, + "home.page.whatKnow.text2": { + "message": "Ce guide est compatible avec tout les modèles de calculatrices Numworks vendus" + } +} diff --git a/i18n/fr/docusaurus-plugin-content-docs/current.json b/i18n/fr/docusaurus-plugin-content-docs/current.json new file mode 100644 index 00000000..b546fcd0 --- /dev/null +++ b/i18n/fr/docusaurus-plugin-content-docs/current.json @@ -0,0 +1,46 @@ +{ + "version.label": { + "message": "Next", + "description": "The label for version current" + }, + "sidebar.tutorialSidebar.category.N0110": { + "message": "N0110", + "description": "The label for category N0110 in sidebar tutorialSidebar" + }, + "sidebar.tutorialSidebar.category.N0110.link.generated-index.description": { + "message": "Comment customiser sa Numworks N0110", + "description": "The generated-index page description for category N0110 in sidebar tutorialSidebar" + }, + "sidebar.tutorialSidebar.category.Hardware method": { + "message": "Méthode Hardware", + "description": "The label for category Hardware method in sidebar tutorialSidebar" + }, + "sidebar.tutorialSidebar.category.Hardware method.link.generated-index.description": { + "message": "Débloquer votre calculatrice via une méthode Hardware", + "description": "The generated-index page description for category Hardware method in sidebar tutorialSidebar" + }, + "sidebar.tutorialSidebar.category.Phi": { + "message": "Phi", + "description": "The label for category Phi in sidebar tutorialSidebar" + }, + "sidebar.tutorialSidebar.category.Phi.link.generated-index.description": { + "message": "Débloquez votre calculatrice facilement avec Phi", + "description": "The generated-index page description for category Phi in sidebar tutorialSidebar" + }, + "sidebar.tutorialSidebar.category.No CFW": { + "message": "Pas de CFW", + "description": "The label for category No CFW in sidebar tutorialSidebar" + }, + "sidebar.tutorialSidebar.category.No CFW.link.generated-index.description": { + "message": "Qu'est ce que vous pouvez faire avec une calculatrice bloquée", + "description": "The generated-index page description for category No CFW in sidebar tutorialSidebar" + }, + "sidebar.tutorialSidebar.category.CFW": { + "message": "CFW", + "description": "The label for category CFW in sidebar tutorialSidebar" + }, + "sidebar.tutorialSidebar.category.CFW.link.generated-index.description": { + "message": "Qu'est-il possible avec un CFW ?", + "description": "The generated-index page description for category CFW in sidebar tutorialSidebar" + } +} diff --git a/i18n/fr/docusaurus-plugin-content-docs/current/cfw/choose-a-cfw.md b/i18n/fr/docusaurus-plugin-content-docs/current/cfw/choose-a-cfw.md new file mode 100644 index 00000000..187f1687 --- /dev/null +++ b/i18n/fr/docusaurus-plugin-content-docs/current/cfw/choose-a-cfw.md @@ -0,0 +1,19 @@ +--- +title: "Choisir un CFW" +sidebar_position: 1 +pagination_next: null +pagination_prev: null +--- + +:::info + +Vous avez besoin d’une calculatrice débloquée. [Pour la débloquer continuez ici](../intro) + +::: + +Il y a plusieurs CFWs que vous pouvez installer sur votre calculatrice, la plupart s’installent de la même manière. En voici certains + +| CFW | Avantages | +|-----|-----------| +| [Omega](/docs/cfw/omega) | Le CFW le plus populaire pour Numworks, basé sur Epsilon 15.5.0. Il restaure le calcul symbolique, permet l'installation d'applications externes, et ajoute des libraries Python | +| [Upsilon](/docs/cfw/upsilon) | Basé sur Omega, Upsilon apporte plus de fonctions et de confort comparé à Omega, comme une liseuse LaTeX, plus de stockage pour les scripts Python, et un meilleur bootloader | diff --git a/i18n/fr/docusaurus-plugin-content-docs/current/cfw/install-epsilon-from-softloader.md b/i18n/fr/docusaurus-plugin-content-docs/current/cfw/install-epsilon-from-softloader.md new file mode 100644 index 00000000..9fe84fe9 --- /dev/null +++ b/i18n/fr/docusaurus-plugin-content-docs/current/cfw/install-epsilon-from-softloader.md @@ -0,0 +1,48 @@ +--- +title: "Installer Epsilon depuis le softloader" +sidebar_position: 4 +pagination_next: null +pagination_prev: cfw/choose-a-cfw +--- + +:::danger +Suivre ce guide peut mettre en danger votre calculatrice. Installer Epsilon de la mauvaise manière sur votre calculatrice pourrait la bloquer.. Suivez **STRICTEMENT** ce qui est dir sur cette page pour être sur que votre calculatrice n'est pas en danger +::: + +:::caution +La dernière version d'Epsilon pourrait ne pas être sûre, vérifiez la dernière version [pour n0110](https://my.numworks.com/firmwares/n0110/stable.json) (connexion au compte Numworks nécessaire). Dernière version sûre connue: **21.3.0** +::: + +:::info +Cette page est inutile si vous avez une n0100, étant donné que vous pouvez changer entre un CFW et Epsilon sans bloquer votre calculatrice. La n0100 n'est pas compatible avec les bootloader custom. +::: + +### Lecture obligatoire + +Nous allons maintenant installer Epsilon sur un slot de la calculatrice, en considérant que vous avez un bootloader qui le permet + +### Ce dont vous avez besoin + +- Un PC avec un navigateur basé Chromium (on recommande d'utiliser directement [chromium](https://www.chromium.org/chromium-projects/)) +- Un bootloader custom compatible installé (si vous ne savez pas, regardez [cette page](/docs/cfw/choose-a-cfw)) + +### Section I - Ouvrir le bootloader + +Si votre CFW inclut un bootloader qui permet d'installer un firmware depuis celui-ci, vous devriez donc ouvrir le bootloader et le rendre prêt à installer quoi que ce soit. De l'aide eut être trouvée sur [cette page](/docs/cfw/choose-a-cfw) + +### Section II - Installation + +1. Vérifiez que votre calculatrice est dans le bootloader, prête à installer quoi que ce soit. Elle **NE DOIT PAS** être en mode Recovery (écran noir + LED rouge) étant donné que ça permettrait à Numworks de bloquer votre calculatrice +2. Ouvrez la [page de mise à jour Numworks](https://numworks.com/update) +3. Suivez les instructions mais si il vous demande de faire quoi que ce soit sur votre calculatrice, ne le faites pas à moins que ce soit la connecter à votre PC. Le site devrait voir la version 0.0.0 +4. À la fin l'installer sera bloqué et pourrait donner une erreur, c'est car il ne peut pas redémarrer la calculatrice. Ne vous inquiétez pas Epsilon est installé, appuyez juste sur reset et tout est bon + +Maintenant vous avez Epsilon avec un bootloader custom donc votre calculatrice n'est pas bloquée + +Epsilon a normalement été installé sur les deux slots. Donc si vous aviez un CFW, il a été effacé, seul le bootloader reste. Pour le réinstaller vous pouvez le faire normalement depuis le bootloader ou en mode Recovery, faites juste attention de ne pas installer Epsilon à la place. + +Il est recommandé de garder votre CFW en Slot A. + +### GG + +Vous avez maintenant Epsion et un CFW en même temps, Epsilon sur un slot, votre CFW sur l'autre. Vous pouvez maintenant changer quand vous voulez, cela fonctionne différemment en fonction de votre CFW mais l'objectif est juste de changer entre les deux slots. \ No newline at end of file diff --git a/i18n/fr/docusaurus-plugin-content-docs/current/cfw/omega.md b/i18n/fr/docusaurus-plugin-content-docs/current/cfw/omega.md new file mode 100644 index 00000000..ec36aecf --- /dev/null +++ b/i18n/fr/docusaurus-plugin-content-docs/current/cfw/omega.md @@ -0,0 +1,73 @@ +--- +title: "Omega" +sidebar_position: 2 +pagination_next: null +pagination_prev: cfw/choose-a-cfw +--- + +:::info +Vous avez besoin d'une calculatrice débloquée. [Pour la débloquer continuez ici](/docs/intro) +::: + +Cette page expliquera comment installer Omega, en considérant que vous avez une calculatrice débloquée + +### Ce dont vous avez besoin + +- Un PC avec un navigateur basé Chromium (on recommande d'utiliser directement [chromium](https://www.chromium.org/chromium-projects/)) +- Une calculatrice Numworks débloquée + +### Section I - Préparer le mode Recovery + +si votre modèle est n0110, entrez le mode Recovery en mainteant "6" et en appuyant sur "reset" +si votre modèle est n0110, entrez le mode Recovery en branchant votre calculatrice et en appuyant sur "reset" + +### Section II - Installation d'Omega + +1. Ouvrez [le site web d'Omega](https://getomega.dev/install) +2. Cloquez sur "Récupération" et sélectionnez "STM32 BOOTLOADER" +3. Attendez un peu jusqu'a ce que la calculatrice affiche "Recovery Mode" sur l'écran +4. Si la calculatrice n'est pas connectée automatiquement, cliquez sur "Détecter la calculatrice" et sélectionnez "Numworks Calculator" +5. Maintenant vous pouvez cliquer sur "Installer Omega" et au bout de quelques secondes, Omega devrait être installé sur votre calculatrice. + +### Section III - Comment utiliser votre nouvelle calculatrice (pas pour n0100) + +Il y a de nouvelles fonctions sur votre calculatrice, vous devez les connaitre +Il y a un nouveau système de "Slot". Votre calculatrice a 2 slots et peut stocker 2 firmwares. ils ne peuvent pas fonctionner en même temps mais en utilisant reset vous pouvez passer de l'un à l'autre: +- Maintenez 1 et appuyez sur reset pour lancer le Slot A (contient Omega par défaut) +- Maintenez 2 et appuyez sur reset pour lancer le Slot B (peut être vite ou contenir Epsilon) +- Maintenez 4 et appuyez sur reset pour ouvrir le bootloader, vous serez en mesure de voir quel slot contient quel firmware et vous pourrez installer n'importe quel firmware sans bloquer la calculatrice. +- Vous ne pouvez pas lancer un autre firmware si vous activez le mode examen, vous devez le désactiver pour le faire + +#### Section IV - Comment mettre à jour ? + +Pour mettre à jour Omega, ouvrez le bootloader en maintenant 4 et en appuyant sur reset, branchez votre calculatrice au PC, ouvrez le site web d'Omega, et installez-le normalement. + +Pour mettre à jour le bootloader, démarrez en mode recovery en cliquant sur reset en maintenant la touche 6, branchez votre calculatrice au PC, ouvrez le site web d'Omega, connectez la calculatrice en mode recovery, et installez Omega de cette manière. + +### Fonctions facultatives + +Maintenant qu'Omega est installé, il y a certaines choses que vous pouvez faire: + +#### Applis externes (pas pour n0100) + +Omega supporte les applis externes, il y en a quelques unes mais elles sont utiles. Voici comment les installer: +1. Ouvrez la [page des applis externes](https://external.getomega.dev/) +2. Sélectionnez les applis que vous voulez installer +3. Ajoutez n'importe quel fichier que vous voulez utiliser avec vos applis +4. Ajoutez un fond d'écran si vous le souhaitez +5. Activez le support des icones si vous voulez de jolies icones sur vos applis +6. Cliquez sur installer + +#### Installer Epsilon (Non compatible avec la n0100) + +Vous pouvez installer Epsilon sur bootloader sans bloquer le calculatrice. + +Allez voir [Installer Epsilon depuis le Softloader](/docs/cfw/install-epsilon-from-softloader) + +#### Créer votre propre version + +Omega est open-source, vous pouvez récupérer le code et l'utiliser comme vous le souhaitez. Vous trouverez tout sur le [repo github d'Omega](https://github.com/Omega-Numworks/Omega) + +### Fini + +Vous avez maintenant Omega installé sur votre calculatrice. Vous pouvez ajouter des scripts Python de la même manière qu'avant depuis le [workshop de Numworks](https://my.numworks.com/python/) \ No newline at end of file diff --git a/i18n/fr/docusaurus-plugin-content-docs/current/cfw/upsilon.md b/i18n/fr/docusaurus-plugin-content-docs/current/cfw/upsilon.md new file mode 100644 index 00000000..1f1c18b5 --- /dev/null +++ b/i18n/fr/docusaurus-plugin-content-docs/current/cfw/upsilon.md @@ -0,0 +1,80 @@ +--- +title: "Upsilon" +sidebar_position: 3 +pagination_next: null +pagination_prev: cfw/choose-a-cfw +--- + +:::info +Vous avez besoin d'une calculatrice débloquée. [Pour la débloquer continuez ici](/docs/intro) +::: + +tte page expliquera comment installer Upsilon, en considérant que vous avez une calculatrice débloquée + +### Ce dont vous avez besoin + +- Un PC avec un navigateur basé Chromium (on recommande d'utiliser directement [chromium](https://www.chromium.org/chromium-projects/)) +- Une calculatrice Numworks débloquée + +### Section I - Préparer le mode Recovery + +Si votre modèle est n0110, entrez le mode Recovery en mainteant "6" et en appuyant sur "reset" +Si votre modèle est n0110, entrez le mode Recovery en branchant votre calculatrice et en appuyant sur "reset" + +### Section II - Installation d'Upsilon + +1. Ouvrez [le site web d'Upsilon](https://getupsilon.web.app/install) +2. Cliquez sur "Mode de récupération" et sélectionnez "STM32 BOOTLOADER" +3. Attendez un peu jusqu'a ce que la calculatrice affiche "Recovery Mode" sur l'écran +4. Si la calculatrice n'est pas connectée automatiquement, cliquez sur "Connecter" et sélectionnez "Numworks Calculator" +5. Sélectionnez vos paramètres comme le thème. Pour le slot, si vous ne savez pas lequel choisir, sélectionnez "A" +6. Maintenant vous pouvez cliquer sur "Installer Upsilon" et au bout de quelques secondes, Upsilon devrait être installé sur votre calculatrice. + +:::tip +Upsilon a tendance à planter quand vous le démarrez alors que la calculatrice est connectée à un PC. Déconnectez la avant de démarrer. +::: + +### Section III - Comment utiliser votre nouvelle calculatrice (pas pour n0100) + +Il y a de nouvelles fonctions sur votre calculatrice, vous devez les connaitre +Il y a un nouveau système de "Slot". Votre calculatrice a 2 slots et peut stocker 2 firmwares. ils ne peuvent pas fonctionner en même temps mais en utilisant reset vous pouvez passer de l'un à l'autre: +Vous avez maintenant un menu au démarrage, il vous permet de faire beaucoup de choses. Vous pouvez y accéder simplement en appuyant sur "reset". + +Dans ce menu vous pouvez: +- Chosir votre slot. Il y en a 3, 2 d'entre eux peuvent accepter un firmware classique, vous pouvez les sélectionner en appuyant sur 1 pour le Slot A ou 3 pour Slot B. Le 3ème, sélectionné en appuyant sur 2, est conçu pour des cas très spécifiques, la plupart des gens n'en ont pas besoin. +- Ouvrir "Install mode". Il y a 2 modes: Flash Slots, qui permet d'installer n'importe quel autre firmware en toute sécurité, et Flash Bootloader, qui permer de mettre à jour le bootloader en lançant le mode Recovery (il pourrait ne pas marcher, pour accéder au mide Recovery vous pouvez toujours utiliser 6 + reset) + +Notez aussi qu'une fois votre calculatrice branchée à un PC, (a moins qu'elle soit en mode Recovery) votre calculatrice sera nommée "Upsilon Calculator" ou "Upsilon Bootloader" au lieu de "NumWorks Calculator". + +#### Section IV - Comment mettre à jour ? + +Pour mettre à jour Upsilon, ouvrez le "Install Mode" puis "Flash Slots" (voir ci-dessus comment faire), branchez votre calculatrice au PC, ouvrez le site web d'Upsilon, et installez-le normalement. + +Pour mettre à jour le bootloader, démarrez en mode recovery en cliquant sur reset en maintenant la touche 6, branchez votre calculatrice au PC, ouvrez le site web d'Upsilon, connectez la calculatrice en mode de récupération, et installez Upsilon de cette manière. + +### Fonctions facultatives + +Maintenant qu'Upsilon est installé, il y a certaines choses que vous pouvez faire: + +#### Applis externes (uniquement pour N0110) + +Upsilon supporte les applis externes, il y en a quelques unes mais elles sont utiles. Voici comment les installer: +1. Ouvrez la [page des applis externes](https://upsilonnumworks.github.io/Upsilon-External/) +2. Sélectionnez les applis que vous voulez installer +3. Ajoutez n'importe quel fichier que vous voulez utiliser avec vos applis +4. Ajoutez un fond d'écran si vous le souhaitez +5. Cliquez sur installer + +#### Installer Epsilon (uniquement pour N0110) + +Vous pouvez installer Epsilon sur bootloader sans bloquer le calculatrice. + +Allez voir [Installer Epsilon depuis le Softloader](/docs/cfw/install-epsilon-from-softloader) + +#### Créer votre propre version + +Upsilon est open-source, vous pouvez récupérer le code et l'utiliser comme vous le souhaitez. Vous trouverez tout sur le [repo github d'Upsilon](https://github.com/UpsilonNumworks/Upsilon) + +### Fini + +Vous avez maintenant Upsilon installé sur votre calculatrice. Vous pouvez ajouter des scripts Python de la même manière qu'avant depuis le [workshop de Numworks](https://my.numworks.com/python/) \ No newline at end of file diff --git a/i18n/fr/docusaurus-plugin-content-docs/current/credits.md b/i18n/fr/docusaurus-plugin-content-docs/current/credits.md new file mode 100644 index 00000000..9d501088 --- /dev/null +++ b/i18n/fr/docusaurus-plugin-content-docs/current/credits.md @@ -0,0 +1,27 @@ +--- +sidebar_position: 99 +title: "Crédits" +pagination_next: null +pagination_prev: null +--- + +:::note +Un grand merci à: +- M4x1m3, le créateur original du guide +- Rathmox d'avoir complété le guide. +- WonderHunter pour la traduction en Français. +- Rathmox and BloomyInDev d'avoir porté le guide à [Docusaurus](https://docusaurus.io/) +::: + +Si je vous ai oublié ici, [contactez-nous](https://github.com/Omega-Numworks/Omega-Guide) et nous vous ajouterons dans la liste des contributeurs + ++ AngeDieu ++ BloomyInDev ++ darthnithin ++ hdboye ++ M4x1m3 ++ Rathmox ++ siim0n ++ Syycorax ++ TomVdt ++ WonderHunter diff --git a/i18n/fr/docusaurus-plugin-content-docs/current/faq.md b/i18n/fr/docusaurus-plugin-content-docs/current/faq.md new file mode 100644 index 00000000..5df5ac61 --- /dev/null +++ b/i18n/fr/docusaurus-plugin-content-docs/current/faq.md @@ -0,0 +1,27 @@ +--- +sidebar_position: 7 +title: "FAQ" +pagination_next: null +pagination_prev: null +--- + +# Pre-Installation FAQ + +**Q:** *Ce guide annulera-t-il ma garantie ?* + +**A:** Non, du moins pas en Europe. Il s'agit d'une modification logicielle, si Numworks vous refuse une demande de garantie légitime après cela, poursuivez-les en justice. + +**Q:** *Quel est le risque de jailbreaker ma Numworks ?* + +**A:** Les bricks matériels complets sont quasi-impossibles. Le pire que vous puissiez obtenir est une calculatrice avec protection en écriture activée avec une mémoire flash vide, qui peut toujours être résolu avec un mod matériel, mais la possibilité d'avoir ce genre de problème est très très peu probable. + +**Q:** *Puis-je le faire sans ordinateur (par exemple, un téléphone Android) ?* + +**A:** Tout ce dont vous avez besoin est un appareil capable d'exécuter un navigateur Web prenant en charge WebUSB. +Les téléphones Android peuvent être utilisés avec un câble USB OTG. + +# Post-Installation FAQ + +**Q:** *Est-il sûr de mettre à jour Epsilon tout en ayant un bootloader custom installé ?* + +**A:** Pour le moment, le programme d'installation de Numworks ne vérifie pas les bootloaders modifiés, ni Epsilon, donc oui. (À moins que vous n'ayez pas un bootloader ce qui n'est probablement pas le cas) \ No newline at end of file diff --git a/i18n/fr/docusaurus-plugin-content-docs/current/how-does-it-work.md b/i18n/fr/docusaurus-plugin-content-docs/current/how-does-it-work.md new file mode 100644 index 00000000..8085a329 --- /dev/null +++ b/i18n/fr/docusaurus-plugin-content-docs/current/how-does-it-work.md @@ -0,0 +1,95 @@ +--- +sidebar_position: 8 +title: "Comment ça marche ?" +pagination_next: null +pagination_prev: null +--- + +Cette page est faite pour expliquer comment fonctionne la calculatrice et ce qu'il se passe quand on la débloque +Vous allez également en apprendre un peu sur l'histoire de la calculatrice + +### 1 - Comment la calculatrice est-elle conçue ? + +D'abord, sachez que le bouton Power de la calculatrice ne la met qu'en mode veille, au lieu de l'éteindre complètement. La calculatrice s'allume automatiquement quand la batterie est connectée. Le bouton reset au dos coupe simplement l'alimentation tant qu'il est maintenu. Quand vous le relachez, la calculatrice s'allume. + +Il y a actuellement 4 modèles de calculatrice Numworks: n0100, n0110, n0115, n0120. + +La calculatrice utilise un MCU (Microcontroller Unit) fait par STMicroelectronics pour tout faire. +- Le MCU utilisé dans la n0100 est le [STM32F412](https://www.st.com/en/microcontrollers-microprocessors/stm32f412.html). Il a une partition de stockage, nommée "flash" car c'est de la mémoire flash. +- Le MCU utilisé dans les n0110 et n0115 est le [STM32F730](https://www.st.com/en/microcontrollers-microprocessors/stm32f730r8.html). Il a 2 flashs. Nommées "interne" et "externe" +- Le MCU utilisé dans la n0120 est le [STM32H725](https://www.st.com/en/microcontrollers-microprocessors/stm32h725-735.html). Il a également 2 flashs, mais est aussi plus puissant que celui de la n0110 + +On peut donc faire 2 catégories: +- n0100: Avec flash interne uniquement +- n0110, n0115 et n0120: Avec flash interne et externe + +:::info +Toutes les calculatrices, grâce au MCU, ont un mode Recovery. il est habituellement accédé en maintenant 6 pendant que la calculatrice démarre (sur la n0100 il doit être branché à un PC quand il démarre, vous n'avez pas besoin de maintenir 6). il est représenté par un écran noir avec la LED allumée en rouge. Mais si vous essayez, il se peut que cela ne fasse pas ça, nous comprendrons pourquoi après. +Sur n0115, le mode Recovery n'est pas accessible comme ça. +::: + +### 2 - Comment le matériel est-il utilisé ? + +Avec 1 flash, c'est facile de comprendre, tout est dans la flash, c'est le cas sur n0100. Mais avec 2 flashs, c'est plus compliqué: + +- La flash externe: Elle contient le firmware, ce que vous connaissez, l'interface, le programme de calcul, et tout ce que vous utilisez sur cette calculatrice. +- La flash interne: Elle contient un petit programme fait pour démarrer ce qui est installé sur la flash externe. C'est la première chose exécutée par la calculatrice, si la flash interne est vide, la calculatrice ne peut pas démarrer, et la LED devient rouge. + +### 3 - Qu'est-ce qui est installé sur les flashs ? + +La flash interne est utilisée pour stocker un programme simple qui lance simplement le firmware installé sur la flash externe. Mais aujourd'hui, depuis Epsilon 16, c'est plus compliqué: + +Depuis Epsilon 16, la flash interne contient un bootloader utilisé pour bloquer la calculatrice. +- **Comment c'est possible ?** Il vérifie que le firmware est signé par Numworks, s'il ne l'est pas, le bootloader ne lance pas le firmware. +- **Le mode Recovery ne peut pas aider ?** Numworks y a pensé, ils ont configuré le MCU pour empêcher d'écrire dans la flash interne et ils ont mit un message pour dire qu'elle est en mode Recovery alors qu'en réalité, elle ne l'est pas. +- **Pourquoi la n0100 n'est-elle pas bloquée ?** La n0100 n'a qu'une seule flash, et elle pourrait avoir besoin d'être mise à jour. Donc bloquer serait une mauvaise idée car ça empêcherait de mettre à jour sans des outils de déboguage spécifiques. + +:::info +Maintenant que l'on sait comment Numworks utilise la calcuatrice, découvrons comment les firmwares custom l'utilisent. +::: + +### 4 - Qu'est-ce qui change avec un CFW ? + +À l'origine, un CFW remplaçait seulement la flash externe. Pour contourner certaines limitations, certains CFWs comme Omega et Delta ont comencé à changer la flash interne, mais ce n'était pas loin de ce que Numworks faisait à l'origine + +Delta a introduit les applis externes, qui ont été réutilisées dans Omega. Elles sont installées dans la flash externe avec le firmware. Un système similaire a été ajouté à Epsilon plus tard. + +Mais tout a changé quand les bootloaders custom ont été publiés en même temps que Phi. + +Beaucoup de bootloaders custom contiennent plus de fonctions comment permettre d'avoir 2 firmwares stockés sur la flash externe et démarrer l'un ou l'autre. Ainsi qu'empêcher d'écrire sur la flash interne depuis le firmware + +:::info +Maintenant que vous comprenez comment fonctionne la flash interne, voyons comment Phi fonctionne +::: + +### 5 - Comment Phi fontionne-t-il ? + +:::note +Phi n'est **PAS** un programme ou un exploit qui permet directement de lancer un CFW et ne fait rien une fois que la calculatrice est débloquée. +::: + +Phi est une appli qui peut débloquer les calculatrices fonctionnant sous Epsilon entre 16.3.0 et 18.2.0 (hors 16.4.3) + +Il peut être installé sur Epsilon et exploite un bug nommé [Screenhax (en anglais)](https://blog.mfriess.xyz/screenhax/) pour effacer la flash interne et écrire par dessus depuis Epsilon, ainsi que réactiver le mode Recovery. + +Il peut également installer un bootloader simple. + +Numworks a réglé ce bug en publiant Epsilon 18.2.3. + +### 6 - Donc, que se passe-t-il quand vous suivez le guide ? + +Le processus dans le guide est maintenant facile à comprendre: +- sur n0100, on lance simplement le mode Recovery et on écrase la flash interne +- sur n0110, on écrase la flash interne, débloque et réactive le mode Recovery pour installer ce que l'on veut sur les 2 flashs + +### 7 - Pourquoi la n0120 ne peut pas être débloquée ? + +La n0120 est dans un cas particulier: +Elle peut être débloquée avec des modifications matérielles, mais la raison pour laquelle on ne dit pas comment le faire dans ce guide c'est car il n'y a aucun CFW que vous pouvez installer dessus. +La n0120 a été publiée en premier avec Epsilon 16, mais une version patchés qui ne peut pas être débloquée avec Phi. Donc il n'y a aucune n0120 qui peut être débloquée sans matériel. + +Aussi, depuis Epsilon 16, Numworks a arrêté de donner les drivers pour le MCU, ces drivers sont nécessaires pour créer le bootloader. Les Développeurs peuvent les récupérer depuis Epsilon 15 pour n0100 et n0110, mais pour n0120, ils n'ont jamais été publiés (et ne peuvent pas être extraits d'Epsilon), donc ils doivent être développés depuis zéro ce qui est difficile et long. C'est pourquoi il n'y a pas de CFW pour n0120, et qu'on ne peut pas vous dire comment la débloquer + +:::info +Maintenant vous comprenez tout sur comment le débloquage de calculatrice fonctionne. +::: \ No newline at end of file diff --git a/i18n/fr/docusaurus-plugin-content-docs/current/intro.md b/i18n/fr/docusaurus-plugin-content-docs/current/intro.md new file mode 100644 index 00000000..7782b2f8 --- /dev/null +++ b/i18n/fr/docusaurus-plugin-content-docs/current/intro.md @@ -0,0 +1,47 @@ +--- +sidebar_position: 1 +title: Commencer +pagination_next: null +pagination_prev: null +--- + +:::caution +Lisez tout les pages (en incluant celle-ci!) avant de procéder +::: + +**Avant de démarer ce guide, vous devez comprendre quelques termes utilisés tout au long de ce guide** + +#### Définitions + +Ce guide va utiliser certains noms, avant de commencer vous devez savoir à qui ces noms font référence: + +1. Epsilon: C'est le firmware vendu à l'origine avec la calculatrice, fait par Numworks. Après la version 16, ils ont commencé à verrouiller la calculatrice pour empêcher toute installation de CFW ([comprenez pourquoi ici](https://tiplanet.org/forum/viewtopic.php?f=97&t=24968)). +2. CFW: Custom firmware, un firmware conçu pour remplacer Epsilon. Les plus courants sont Omega et Upsilon. +3. Phi: C'est une appli conçue pour débloquer certaines calculatrices bloquées. +4. Recovery mode ("STM32 DFU bootloader" ou "hwloader"): C'est un mode sur la calculatrice qui permet de changer n'importe quoi, et le mode que Numworks a bloqué. On y accède couramment en appuyant sur "reset" au dos de la calculatrice pendant que l'on maintient la touche "6" et il est reconnu lorsque vous obtenez un écran noir et que la LED devient rouge. C'est ce que vous devez obtenir à la fin de ce guide pour installer tout ce que vous voulez. +5. Bootloader ("softloader"): C'est un menu auquel vous pouvez accéder de différentes manières, cela dépend du CFW que vous choisissez. Il vous permet de réinstaller le firmware et peut vous empêcher de bloquer votre calculatrice si vous la mettez à jour. Phi vous permet d'en installer un si vous le souhaitez + +:::info +Si vous ne voulez pas profondément modifier votre calculatrice, [il y a toujours certaines choses que vous pouvez faire](no-custom/what-to-do-locked) +::: + +#### Préréquis + +- Calculatrice Numworks +- Driver si vous avez Windows ou Linux: ouvrez la [page de récupération](https://numworks.com/rescue) sur le site de Numworks et elle va vous le donner et vous dire comment l'installer. **Ne branchez pas votre calculatrice pour être sur que vous ne la bloquiez pas**. Si vous avez macOS, vous n'en avez pas besoin. + +#### Vérification du modèle + +1. Retournez votre calculatrice. +2. Sur son dos, il devrait y avoir une petite écriture, commençant par un `N`. Ceci est votre numéro de modèle. +3. Si vous n'arrivez pas à lire cela : + 1. Allumez la calculatrice + 2. Allez dans l'application des paramètres + 3. Allez dans "à propos" + 4. Regardez l'ID FCC. Il doit se terminer par un des noms de modèle ci-dessous. + +| Modèle de calculatrice | Que faut-il faire ? | +|------------------|----------------------------------------------------------------| +| N0100 | [Votre calculatrice est déja dévérouillée, choisisez un CFW](/docs/cfw/choose-a-cfw) | +| N0110 | [Vérifiez si votre calculatrice est verrouillée](/docs/n0110/n0110-is-locked) | +| N0115 - N0120 | [Vous ne pouvez pas installer de CFW dessus. Mais il y a toujours certaines choses que vous pouvez faire](/docs/no-custom/what-to-do-locked) | diff --git a/i18n/fr/docusaurus-plugin-content-docs/current/n0110/hardware/n0110-hardware-unlock.md b/i18n/fr/docusaurus-plugin-content-docs/current/n0110/hardware/n0110-hardware-unlock.md new file mode 100644 index 00000000..5958bfb8 --- /dev/null +++ b/i18n/fr/docusaurus-plugin-content-docs/current/n0110/hardware/n0110-hardware-unlock.md @@ -0,0 +1,21 @@ +--- +title: "Débloquage Hardware (N0110)" +sidebar_position: 1 +pagination_next: n0110/n0110-unlocked +pagination_prev: n0110/n0110-is-locked +--- + +### Lecture obligatoire + +Le débloquage matériel demande des outils spécifiques. + +L'objectif est de forcer le mode Recovery pour permettre l'installation. +À la fin de ce tutoriel, votre calculatrice devra montrer un écran noir et une LED rouge. + +### Sélectionnez une méthode + +Il y a plusieurs méthodes. + +Nous recommendons [ce post](https://tiplanet.org/forum/viewtopic.php?f=113&t=25191&p=263495), il est très complet et vous guidera très bien. + +Si vous avez une autre manière d'obtenir le mode Recovery, vous pouvez la suivre. **Nous ne sommes pas responsables de ce qu’il se passe sur votre appareil** diff --git a/i18n/fr/docusaurus-plugin-content-docs/current/n0110/n0110-is-locked.md b/i18n/fr/docusaurus-plugin-content-docs/current/n0110/n0110-is-locked.md new file mode 100644 index 00000000..231bbee0 --- /dev/null +++ b/i18n/fr/docusaurus-plugin-content-docs/current/n0110/n0110-is-locked.md @@ -0,0 +1,58 @@ +--- +title: "Votre calculatrice est-elle bloquée ? (N0110)" +sidebar_position: 1 +pagination_next: null +pagination_prev: intro +--- + +Cette page vous dire si vous devez déverrouiller votre calculatrice et comment. + +#### Section I - Vérification de la version Epsilon + +1. Allumez votre calculatrice +2. Allez dans "Paramètres" +3. Allez dans "À propos" +4. Regardez le champ "Version du logiciel" ou "Version d'Epsilon". +5. Ceci est votre version Epsilon. + +#### Section II - Vérification du verrouillage du flash + +1. Éteignez votre calculatrice +2. Appuyez sur la touche "6" +3. Tout en appuyant sur la touche "6", appuyez sur le bouton reset à l'arrière de l'appareil. + +Si vous voyez un écran comme celui-ci, vous pouvez procéder : + +![Epsilon 16 bootloader](/img/e16bl.png) + +:::caution + +Si l'écran reste noir et que la LED devient rouge, **STOP** - votre calculatrice est déjà déverrouillée ! Continuez à partir d'[ici](/docs/n0110/n0110-unlocked). + +::: + +Appuyez sur le bouton reset à l'arrière de la calculatrice pour revenir au micrologiciel. + +#### Section III - Sélectionnez une méthode + +Utilisez le tableau des versions ci-dessous pour sélectionner une méthode. Quelques points à noter : + + Le tableau des versions ci-dessous est *inclusif*. Par exemple, "de 16.3.0 à 18.0.0" inclus 16.3.0, 18.0.0, et toutes les versions entre celles-ci. + + La version 16.4.3 ne suit pas cette règle. + +| Version du système | Que faire | +|--------------------|------------------------------------------------------------------| +| 11.2.0-16.2.0 | [Et maintenant ?](n0110-unlocked) | +| 16.3.0-16.4.2 | [Phi](phi) | +| 16.4.3 | [Installer Epsilon 18.2.0](phi/install-epsilon-18-2-0) | +| 17.0.0-18.2.0 | [Phi](phi) | +| 18.2.3 | [Installer Epsilon 18.2.0](phi/install-epsilon-18-2-0) | +| 19.0.0-21.2.0 | [Vérifier l'éligibilité au changement de version](phi/check-version-change-eligibility) | + +--- +#### Méthodes alternatives + +Si possible, vous devriez suivre l'une des méthodes logicielles répertoriées ci-dessus. + +Sinon, des méthodes qui fonctionnent sur toutes les versions sont disponibles, mais nécessitent du matériel supplémentaire : + +1. [Débloquage matériel](hardware/n0110-hardware-unlock) - nécessite des outils spécifiques \ No newline at end of file diff --git a/i18n/fr/docusaurus-plugin-content-docs/current/n0110/n0110-unlocked.md b/i18n/fr/docusaurus-plugin-content-docs/current/n0110/n0110-unlocked.md new file mode 100644 index 00000000..10abf802 --- /dev/null +++ b/i18n/fr/docusaurus-plugin-content-docs/current/n0110/n0110-unlocked.md @@ -0,0 +1,9 @@ +--- +title: "Débloqué (N0110)" +pagination_next: cfw/choose-a-cfw +pagination_prev: n0110/n0110-is-locked +--- + +Votre Numworks est débloquée, yay! + +Vous pouvez maintenant installer un CFW pour accéder à plus de fonctionnalitées diff --git a/i18n/fr/docusaurus-plugin-content-docs/current/n0110/phi/check-version-change-eligibility.md b/i18n/fr/docusaurus-plugin-content-docs/current/n0110/phi/check-version-change-eligibility.md new file mode 100644 index 00000000..578bcb60 --- /dev/null +++ b/i18n/fr/docusaurus-plugin-content-docs/current/n0110/phi/check-version-change-eligibility.md @@ -0,0 +1,39 @@ +--- +title: "Vérifier l'éligibilité au changement de version" +sidebar_position: 1 +--- + +### Introduction + +Vous pourriez avoir besoin de changer la version de votre calculatrice, nous installons couramment Epsilon 18.2.0. Il y a certains cas où vous pouvez installer Epsilon 18.2.0 et d'autre où vous ne pouvez pas. Cette page explique comment savoir si vous êtes éligible ou non à ce changement. + +### Si vous avez Epsilon 15 et avant + +Vous n'avez pas besoin de changer de version, continuez vers [Et maintenant ?](/docs/n0110/n0110-unlocked) + +### Si vous avez Epsilon 16 à 18.2.0 (mais pas 16.4.3) + +Vous n'avez pas besoin de changer de version, continuez vers [Phi](/docs/n0110/phi) + +### Si vous avez Epsilon 16.4.3 ou 18.2.3 + +Vous êtes éligible, vous pouvez continuer normalement + +### Si vous avez Epsilon 19 ou au dessus + +Cela dépend de la version que vous aviez avant de mettre à jour vers Epsilon 19 et plus. + +- Si vous aviez 15 ou avant, Omega, ou Upsilon: Vous ne pouvez pas changer de version +- Si vous aviez 16 à 18.2.3 (sauf 16.4.3): Vous pouvez changer de version +- Si vous aviez 16.4.3, 19 ou plus: Vous ne pouvez pas changer de version + +### Et si vous ne savez pas ? + +Ne vous inquitez pas, essayer de changer de version de ne cassera pas votre calculatrice +Si vous n'étiez pas éligible, après la manipulation, la calculatrice sera bloquée sur l'écran Recovery de Numworks et vous serez en mesure de mettre à jour depuis le site de Numworks et votre calculatrice fonctionnera normalement + +--- + +:::info +Si vous n'êtes pas éligible, vous pouvez utiliser la [Methode Alternative](/docs/n0110/n0110-is-locked#alternate-methods) +::: diff --git a/i18n/fr/docusaurus-plugin-content-docs/current/n0110/phi/install-epsilon-18-2-0.md b/i18n/fr/docusaurus-plugin-content-docs/current/n0110/phi/install-epsilon-18-2-0.md new file mode 100644 index 00000000..3ce9ed65 --- /dev/null +++ b/i18n/fr/docusaurus-plugin-content-docs/current/n0110/phi/install-epsilon-18-2-0.md @@ -0,0 +1,49 @@ +--- +title: "Installer Epsilon 18.2.0" +sidebar_position: 2 +--- + +### Lecture requise + +Nous allons maintenant installer Epsilon 18.2.0 + +:::info +Si vous n'êtes pas sur que vous puissiez installer Epsilon 18.2.0, allez voir [cette page](/docs/n0110/phi/check-version-change-eligibility) +::: + +### Ce dont vous avez besoin + +- Un navigateur à base chromium (nous vous recommandons d'utiliser [chromium](https://www.chromium.org/chromium-projects/) directement) +- Epsilon 18.2.0 `18-2-0.dfu` (Etant donné que Numworks a supprimé ce fichier de leur site web à cause de Phi, nous ne pouvons pas vous donner de lien ici) +- Ce script Python: [version Linux et macOS](/resources/unpack.py), [version Windows](/resources/unpack-win.py) + +### Section I - Extraction du binaire externe + +Étant donné qu'Epsilon est désormais sous code source fermé, nous ne pouvons pas distribuer directement l'image du flash externe. +Nous devons donc vous le faire extraire. + +1. Installez Python sur votre plateforme. +2. Téléchargez Epsilon 18.2.0 quelque part. +3. Créez un nouveau dossier +4. Mettez le script Python dans ce dossier +5. Mettez 18-2-0.dfu dans ce dossier +6. Exécutez le script + +Vous devriez maintenant avoir un fichier internal.bin et un fichier external.bin + +### Section II - Installation + +1. Ouvrez le [WebDFU](https://ti-planet.github.io/webdfu_numworks/n0110/) dans un navigateur web basé chromium +2. Maintenez la touche 6 sur votre Numworks et pressez le bouton reset +3. Vous devriez maintenant voir l'interface du bootloader Epsilon +4. Sélectionnez `external.bin` dans WebDFU +5. Cliquez sur "flash external" +6. Une fois le clignotement effectué, appuyez sur le bouton reset de votre Numworks + +Vous devriez maintenant voir la version 18.2.0 dans Paramètres > À propos. + +:::caution + +Si ce n'est pas le cas ou que votre Numworks ne démarre pas, vous pouvez toujours utiliser une [méthode alternative](/docs/n0110/n0110-is-locked#alternate-methods). + +::: diff --git a/i18n/fr/docusaurus-plugin-content-docs/current/n0110/phi/phi-now-what.md b/i18n/fr/docusaurus-plugin-content-docs/current/n0110/phi/phi-now-what.md new file mode 100644 index 00000000..1460056f --- /dev/null +++ b/i18n/fr/docusaurus-plugin-content-docs/current/n0110/phi/phi-now-what.md @@ -0,0 +1,29 @@ +--- +title: "Now What (Phi) ?" +sidebar_position: 4 +--- + +ous avez maintenant plusieurs choix. Vous pouvez: +- Installer un bootloader personnalisé et continuer à utiliser Epsilon >= 16 +- Installer un firmware personnalisé +# Choix I - Installer un bootloader patché + +Si vous souhaitez continuer à utiliser Epsilon >= 16 tout en pouvant installer un custom firmware, vous pouvez installer un bootloader patché : +1. Appuyez sur 3 +2. Appuyez sur OK pour confirmer +3. Vous devriez voir quelque chose comme ça : + +![Phi launch screen](/img/phi-write.png) + +L'étape "Write flash" peut prendre un peu de temps. Vous reviendrez au menu principal après une seconde, lorsque le clignotement sera terminé. + +Appuyez sur 4, puis OK. Vous devriez maintenant redémarrer dans Epsilon. + +:::caution + +Si vous ne redémarrez pas dans Epsilon, veuillez rejoindre le [Discord Omega](https://discord.gg/X2TWhh9) et demandez de l'aide. + +::: + + +Continuez vers [Choisir un CFW](/docs/cfw/choose-a-cfw) diff --git a/i18n/fr/docusaurus-plugin-content-docs/current/n0110/phi/phi.md b/i18n/fr/docusaurus-plugin-content-docs/current/n0110/phi/phi.md new file mode 100644 index 00000000..0627cb04 --- /dev/null +++ b/i18n/fr/docusaurus-plugin-content-docs/current/n0110/phi/phi.md @@ -0,0 +1,80 @@ +--- +title: "Installer Phi" +sidebar_position: 3 +pagination_next: n0110/n0110-unlocked +--- + +### Lecture obligatoire + +Phi a plusieurs points d'entrée (méthode de lancement). +L'exploit utilisé pour le moment est compatible avec Epsilon 16.3.0 à 18.2.0. + +### Ce dont vous avez besoin + +- Un navigateur web basé sur chromium (nous recommandons l'utilisation de [chromium](https://www.chromium.org/chromium-projects/) directement) +- L'[Installateur Phi](https://phi.getomega.dev/) + +### Section I - Installer Phi + +1. Allumez votre appareil +2. Branchez votre appareil à un ordinateur +3. Ouvrez Chromium +4. Allez sur l'[Installateur Phi](https://phi.getomega.dev/) +5. Cliquez sur "Se connecter à la calculatrice Numworks" et sélectionnez votre calculatrice +6. La calculatrice affichera un message indiquant "Applications tierces" +7. Appuyez sur la touche Retour + +### Section II - Exécuter Phi + +1. Faites défiler la liste des applications et sélectionnez "Phi Installer" +2. Appuyez sur la touche OK +3. L'écran devrait clignoter et vous devriez voir un écran similaire à celui-ci : + +![Phi launch screen](/img/phi-launch.png) + +:::info +Si l'écran devient jaune, la version d'Epsilon que vous utilisez n'est pas encore prise en charge. Vous pourriez avoir besoin de [changer de version](/docs/n0110/phi/check-version-change-eligibility). +::: + +:::caution +Si l'écran devient rouge, l'exploit a échoué. Réinitialisez la calculatrice et réessayez. Si cela ne fonctionne pas la deuxième fois, veuillez rejoindre le [Discord Omega](https://discord.gg/X2TWhh9). +::: + +### Section III - Déverrouiller la calculatrice + +Nous allons maintenant déverrouiller le flash interne et supprimer la protection en écriture : + +1. Appuyez sur 1 pour déverrouiller le flash interne. +2. Appuyez sur OK pour confirmer +3. Vous devriez voir quelque chose comme ça : + +![Phi unlock screen](/img/phi-unlock.png) + +L'étape "Reset RDP" peut prendre un peu de temps. Vous serez remis sur le menu principal après une seconde, lorsque le déverrouillage sera terminé. + +### Section IV - Effacement du flash interne + +La suppression de la protection en écriture aurait dû effacer le flash interne, mais nous allons le refaire, juste pour être sûr : + +1. Appuyez sur 2 pour réinitialiser le flash interne +2. Appuyez sur OK pour confirmer +3. YVous devriez voir quelque chose comme ça : + +![Phi erase screen](/img/phi-erase.png) + +L'étape "Erase flash" peut prendre un peu de temps, Vous serez remis sur le menu principal après une seconde, quand l'effaçage sera terminé. + +### Section V - Installing a custom bootloader + +1. Appuyez sur 3 +2. Appuyez sur OK pour confirmer +3. Vous devriez voir quelque chose comme sa : + +![Phi launch screen](/img/phi-write.png) + +L'étape "Write Flash" peut prendre un peu de temps. Vous serez remis sur le menu principal après une seconde, quand la flash sera écrite. + + +:::info +Si vous ne démarrez pas dans Epsilon, ne vous inquiétez pas, installer un CFW le réparera plus tard. +::: diff --git a/i18n/fr/docusaurus-plugin-content-docs/current/no-custom/restore-stock-firmware.md b/i18n/fr/docusaurus-plugin-content-docs/current/no-custom/restore-stock-firmware.md new file mode 100644 index 00000000..3d8bdfaa --- /dev/null +++ b/i18n/fr/docusaurus-plugin-content-docs/current/no-custom/restore-stock-firmware.md @@ -0,0 +1,18 @@ +--- +title: "Restaurer le firmware officiel" +pagination_next: null +pagination_prev: null +--- + +:::danger +Restaurer votre calculatrice vers le firmware d'origine **VA LA BLOQUER** et vous ne pourrez plus jamais installer de CFW dessus, à moins que vous utilisiez une méthode matérielle pour le redébloquer. Nous vous conseillons vivement d'utiliser le bootloader de n'importe quel CFW compatible et d'[Installer Epsilon depuis le Softloader](/docs/n0110/phi/install-epsilon-from-softloader) pour toujours utiliser les dernières versions sans bloquer votre calculatrice. +::: + +Cette page vous expliquera comment revenir au firmware d'origine, et donc bloquer votre calculatrice. + +1. Ouvrez [la page de restauration de Numworks](https://numworks.com/rescue) +2. Mettez votre calculatrice en mode Recovery en maintenant 6 et en appuyant sur "reset" en même temps +3. Branchez votre calculatrice a votre ordinateur +4. Suivez les instructions pour restaurer le firmware d'origine. + +Vous avez maintenant une calculatrice avec le firmware d'origine. \ No newline at end of file diff --git a/i18n/fr/docusaurus-plugin-content-docs/current/no-custom/what-to-do-locked.md b/i18n/fr/docusaurus-plugin-content-docs/current/no-custom/what-to-do-locked.md new file mode 100644 index 00000000..eeab1440 --- /dev/null +++ b/i18n/fr/docusaurus-plugin-content-docs/current/no-custom/what-to-do-locked.md @@ -0,0 +1,27 @@ +--- +title: "Que faire d'une calculatrice bloquée ?" +pagination_next: null +pagination_prev: intro +--- + +### Introduction + +Si vous êtes ici, c'est probablement parce que votre calculatrice ne peut pas être débloquée ou que vous ne voulez pas trop la modifier. Il n'y a pas de honte à avoir pour ça. +Il y a toujours certaines choses que vous pouvez faire. + +### Scripts Python + +Toujours bon à mentionner, vous pouvez obtenir des jeux python sur votre calculatrice, vous pouvez les trouver sur le [Workshop de Numworks](https://my.numworks.com/python/). Pour les installer, suivez juste les instructions + +### Applis externes + +Depuis Epsilon 16 pour n0110, ou Epsilon 20 pour n0120, vous pouvez installer des applis personnalisées, elles ne sont pas aussi puissantes que celles d'Omega mais elles sont bien. Vous pouvez les trouver sur [Nwagyu](https://yaya-cout.github.io/Nwagyu/). +Il y a [une page qui explique comment installer les applis](https://yaya-cout.github.io/Nwagyu/guide/help/how-to-install.html) avec également un moyen d'avoir plus d'espace pour les applis. +Aussi, quand vous activez le mode examen ou appuyez sur "reset", elles seront désactivées. + +### Userland + +Epsilon est toujours partiellement open-source, vous pouvez modifier le code et créer votre propre version et l'installer. +Cependant, c'est en userland uniquement et si vous appuyez sur "reset" vous retournerez au firmware d'origine. Vous aurez aussi un popup disant que vous exécutez un logiciel modifié. +Notez que depuis Epsilon 16, partager une version modifiée est illégal. Vous ne devez jamais partager la version que vous avez créé. +[Les instructions de Numworks](https://www.numworks.com/resources/engineering/software/build/) diff --git a/i18n/fr/docusaurus-plugin-content-docs/current/troubleshooting.md b/i18n/fr/docusaurus-plugin-content-docs/current/troubleshooting.md new file mode 100644 index 00000000..cf708358 --- /dev/null +++ b/i18n/fr/docusaurus-plugin-content-docs/current/troubleshooting.md @@ -0,0 +1,149 @@ +--- +sidebar_position: 6 +title: "Dépannage" +pagination_next: null +pagination_prev: null +--- + +### Écran noir et LED rouge + +Tout va bien : un écran noir et une led rouge signifient que votre calculatrice est en mode Recovery, elle attend de recevoir un firmware, elle est donc débloquée. +**ATTENTION : Dans ce mode, Si vous faites une mise à jour depuis le site de Numworks, vous allez faire une re-installation complète de la calculatrice avec la dernière version du système de gestion de Numworks. Vous allez alors verrouiller la calculatrice : les installations de Custom Firmwares tels que Omega ou Opsilon seront bloquées.** + +[Choisissez un CFW](/docs/cfw/choose-a-cfw) à installer sur votre calculatrice. (Si vous voulez installer Epsilon sans bloquer la calculatrice, installez d'abord à ce stade un CFW compatible, puis installer Epsilon en veillant à ne pas être en mode recovery) + +### Écran noir, cable jaune, et `numworks.com/rescue` + +C'est l'écran du bootloader de Numworks. Il s'affiche quand la calculatrice est verrouillée (blocage de l'installation des CFW) et que vous avez lancé le mode recovery en maintenant 6 et en appuyant sur reset. Il s'affiche également quand la calculatrice n'a pas pu démarrer. + +Si vous souhaitez débloquer votre calculatrice, n'allez pas sur le site `numworks.com/rescue`, mais suivez le guide à partir de [l'installation d'Epsilon 18.2.0](/docs/n0110/phi/install-epsilon-18-2-0). + +### Écran noir, rien d'autre + +Il y a 4 raisons possibles: +- Votre calculatrice est en mode veille, appuyez sur le bouton power pour la rallumer. +- Votre calculatrice est peut-être victime d'un bug, appuyez sur reset au dos. +- Votre calculatrice est peut-être déchargée, essayez de la laisser charger quelques minutes. +- La batterie est déconnectée, vous pourriez avoir besoin d'ouvrir votre calculatrice pour la rebrancher. + +Si cela ne résout pas le problème, contactez Numworks. + +### Consommation de batterie élevée + +Il y a 2 raisons possibles: +- Vous avez activé l'horloge dans les paramètres, certains firmwares en contiennent une. L'horloge consome beaucoup de batterie et il est fartement recommandé de la désactiver. +- Votre calculatrice garde la LED verte. C'est un problème matériel qui fait penser à la calulatrice qu'elle est constemment en train de charger et donc batterie pleine alors que ce n'est pas le cas. Vous devriez contacter Numworks pour remplacer votre calculatrice. + +### Calculatrice non détectée + +Il ya plusieurs raisons possibles: Soit vous ne cliquez pas sur le bon bouton, soit le driver ou le fichier de configuration n'est pas installé sur Windows ou Linux + +Soyez sur d'utiliser le bon bouton, si votre calculatrice est en mode Recovery, appuyez sur le bouton "Récupération" et pas "Détecter la calculatrice". + +Pour récupérer le driver ouvrez la [page de récupération](https://numworks.com/rescue/) sur le site de Numworks et il va vous le donner et vous dire comment l'installer. **Ne branchez pas votre calculatrice pour être sûr de ne pas la bloquer.** + +Si vous êtes sur Linux, il se peut qu'elle ne soit toujours pas détectée. Cela arrive si votre navigateur web est installé au format flatpak ou snap. + +Dans le cas du Flatpak, il vous faudra installer l'application [Flatseal](https://flathub.org/apps/com.github.tchx84.Flatseal), sélectionner votre navigateur, et ajouter `/run/udev` dans les "Autres fichiers" dans la catégorie "Filesystem". + +Vous pouvez également exécuter la commande: `flatpak override --user --filesystem=/run/udev [Application ID]` (Remplacez `[Application ID]` par l'ID de votre navigateur, n'hésitez pas à faire `flatpak list` pour le trouver) + +Dans le cas du Snap, exécutez la commande: `snap connect [Application ID]:raw-usb` (Remplacez `[Application ID]` par l'ID de votre navigateur, n'hésitez pas à faire `snap list` pour le trouver) + +Notez bien que redémarrer le navigateur risque d'être nécessaire si vous débranchez et rebranchez la calculatrice. + +### Mode Recovery (écran noir + LED rouge), mais calculatrice non reconnue sur l'ordinateur. + +Votre calculatrice a l'air d'être en mode Recovery mais elle ne l'est pas + +Maintenez 6 et cliquez sur reset pour la démarrer en mode Recovery, ça aura l'air d'être pareil mais cette fois, elle sera reconnue. + +### "CommandName is not defined" + +Vous essayer de faire quelque chose avec la calculatrice alors qu'elle n'est pas dans le bon mode, comme essayer d'installer des applications avec la calculatrice en mode Recovery ou sur n0100. + +Essayez d'utiliser le bon mode, pour des applications externes lancez juste en mode normal. + +### "Unable to claim interface" + +Cette erreur arrive quand vous essayez de connecter votre calculatrice mais elle est déjà utilisée par un autre onglet ou logiciel. Cela arrive habituellement quand vous essayez d'installer des applications externes mais que l'onglet que vous avec utilisé pour unstaller votre CFW est toujours ouvert. + +Ça peut facilement être réglé si vous fermez l'onglet ou le logiciel déjà connecté à la calculatrice. +Il ne peut y avoir qu'un seul onglet (ou logiciel) établissant une connexion à la calculatrice. + +### "Could not detect the calculator model" / "N????" + +Cela veut dire que votre calculatrice est verrouillée contre l'installation de CFW. Si vous voulez installer un CFW, vous avec besoin de la débloquer. + +Suivez [ce guide](intro) pour la débloquer. + +### "Mémoire corrompue" en essayant d'ajouter des scripts Python + +Cela peut arriver quand le bootloader custom est trop ancien. + +Pour le mettre à jour : allez sur le site de votre CFW, mettez la calculatrice en mode Recovery (en maintenant 6 et en appuyant sur reset au dos de la calculatrice), connectez-la à l'ordinateur, puis choisissez "Restauration" (recovery) sur le site de votre CFW. + +### Écran et LED clignottants + +Vous essayez de démarrer Epsilon 19 sur un ancian bootloader custom. + +Mettez à jour le bootloader : allez sur le site de votre CFW, mettez la calculatrice en mode Recovery (en maintenant 6 et en appuyant sur reset au dos de la calculatrice), connectez-la à l'ordinateur, puis choisissez "Restauration" (recovery) sur le site de votre CFW. + +### L'installation n'a pas de fin (installation infinie) + +Cela peut arriver sur le site d'Omega et le site de Numworks. A moins que votre calculatrice soit bloquée, le firmware est déjà installé mais le site essaie de démarrer la calculatrice et il n'y arrive pas. + +Appuyez juste sur reset sur la calculatrice et ça devrait être réglé. + +### "Address 0x90000000 outside of memory map" + +Vous essayez de flasher la partition externe mais la calculatrice n'est pas dans le bon mode. Ça ne peut pas marcher. + +Vous devez flasher avec l'écran de bootloader Numworks, le bootloader custom ou le flasher du mode recovery (l'écran indiquant "Recovery mode" en installant Omega en mode Recovery) + +### La calculatrice redémarre en essayant d'installer un CFW + +Votre calculatrice est sous Epsilon 19 ou plus, cela peut arriver quand la calculatrice est bloquée ou que vous l'exécutez depuis un bootloader custom. + +Redémarrez juste la calculatrice dans le bootloader ou n'importe quel autre firmware qui n'est pas Epsilon 19 ou plus. + +### "ControlTransferIn" / "ControlTransferOut" + +Quelque chose a interrompu la connextion avec la calculatrice. + +Vérifiez que vous êtes dans le bon mode et qu'aucune autre appli ou onglet utilise la calculatrice. + +### "DFU DOWNLOAD FAILED" + +Vous n'utilisez peut-être pas le bon WebDFU, vérifiez que vous utiliser le [WebDFU de TI-Planet](https://ti-planet.github.io/webdfu_numworks/n0110/) + +### "Acces refusé" en essayant de se connecter à la calculatrice en mode Recovery + +Cela peut arriver sur Windows et Linux +- Sur Linux ça veut dire que vous n'avez pas installé le fichier de configuration, [La page de mise à jour Numworks](https://numworks.com/update/) vous le donnera +- Sur Windows cela veut dire que vous êtes en mode Recovery et que le mauvais driver est sélectionné, il y a quelques étapes que vous pouvez suivre pour régler ça. + 1. S'il n'est pas installé, installez le driver depuis [La page de mise à jour Numworks](https://numworks.com/update/) + 2. Ouvrez le Gestionnaire de Périphériques, appuyez sur Win+R, tappez `devmgmt.msc`, et appuyez sur Entrée + 3. Recherchez un appareil avec "STM" dans le nom + 4. Faites clic droit dessus, et cliquez sur "Mettre à jour le driver" + 5. Ne recherchez pas automatiquement un driver, cherchez-le manuellement, puis décidez de choisir dans une liste. + 6. Sélectionnez le driver Numworks, puis cliquer sur "Suivant" + 7. Le driver devrait être correctement installé, vous pouvez maintenant connecter en mode Recovery et cela devrait marcher. + +### Plantage en lançant Upsilon + +Upsilon a tendance à planter quand vous le lancez et que la calculatrice est connectée à un PC. Déconnectez la avant de le lancer. + +### Plantage au lancement de KhiCAS + +KhiCAS est une appli lourde, et le dual-boot avec cette appli installée est impossible. + +Il se peut que vous ayez installé KhiCAS, puis Epsilon, ce qui a écrasé une parte de KhiCAS, l'empêchant de démarrer. + +Dans ce cas, si vous voulez utiliser KhiCAS, vous devrez le réinstaller. + +___ + +:::info +### Votre erreur n'est pas listée ? La solution proposée n'a pas réglé votre problème ? N'hésitez pas à demander sur le [Discord d'Omega](https://discord.gg/X2TWhh9) +::: \ No newline at end of file diff --git a/i18n/fr/docusaurus-theme-classic/footer.json b/i18n/fr/docusaurus-theme-classic/footer.json new file mode 100644 index 00000000..89ddde4f --- /dev/null +++ b/i18n/fr/docusaurus-theme-classic/footer.json @@ -0,0 +1,26 @@ +{ + "link.title.Community": { + "message": "Community", + "description": "The title of the footer links column with title=Community in the footer" + }, + "link.title.More": { + "message": "More", + "description": "The title of the footer links column with title=More in the footer" + }, + "link.item.label.Discord": { + "message": "Discord", + "description": "The label of footer link with label=Discord linking to https://discord.gg/X2TWhh9" + }, + "link.item.label.GitHub": { + "message": "GitHub", + "description": "The label of footer link with label=GitHub linking to https://github.com/Omega-Numworks/Omega-Guide" + }, + "link.item.label.Credits": { + "message": "Credits", + "description": "The label of footer link with label=Credits linking to /docs/credits" + }, + "copyright": { + "message": "Copyright © 2023 Omega Community, Built with Docusaurus.", + "description": "The footer copyright" + } +} diff --git a/i18n/fr/docusaurus-theme-classic/navbar.json b/i18n/fr/docusaurus-theme-classic/navbar.json new file mode 100644 index 00000000..6dab7ffc --- /dev/null +++ b/i18n/fr/docusaurus-theme-classic/navbar.json @@ -0,0 +1,18 @@ +{ + "title": { + "message": "Numworks Guide", + "description": "The title in the navbar" + }, + "logo.alt": { + "message": "My Site Logo", + "description": "The alt text of navbar logo" + }, + "item.label.Guide": { + "message": "Guide", + "description": "Navbar item with label Guide" + }, + "item.label.GitHub": { + "message": "GitHub", + "description": "Navbar item with label GitHub" + } +} diff --git a/src/pages/index.tsx b/src/pages/index.tsx index c882a000..73ef25f2 100644 --- a/src/pages/index.tsx +++ b/src/pages/index.tsx @@ -3,7 +3,7 @@ import clsx from 'clsx'; import Link from '@docusaurus/Link'; import useDocusaurusContext from '@docusaurus/useDocusaurusContext'; import Layout from '@theme/Layout'; - +import Translate, {translate} from '@docusaurus/Translate'; import styles from './index.module.css'; function HomepageHeader() { @@ -30,36 +30,37 @@ export default function Home(): JSX.Element { return ( + description="Description will go into a meta tag in " + >

-

CFW ?

-

Custom firmwares (CFW) are software modifications for the numworks. They allow you to do anything that the Numworks is physically capable of doing, rather than being limited by whatever Numworks allows you to do.

-

Popular uses for CFW include:

+

CFW ?

+

Custom firmwares (CFW) are software modifications for the numworks. They allow you to do anything that the Numworks is physically capable of doing, rather than being limited by whatever Numworks allows you to do.

+

Popular uses for CFW include:

-

What does this guide contain ?

-

This guide will explain how to:

+

What does this guide contain ?

+

This guide will explain how to:

    -
  • Unlock your calculator if you need to
  • -
  • Install a CFW on your calculator
  • -
  • Install a custom bootloader
  • +
  • Unlock your calculator if you need to
  • +
  • Install a CFW on your calculator
  • +
  • Install a custom bootloader
-

What do I need to know before starting?

+

What do I need to know before starting?

    -
  • The techniques described in this guide are pretty much in their infancy. We are not responsible for anything that goes wrong with your device. There is a slight chance that you might brick your device
  • -
  • This guide is compatible with every retail device in the Numworks family of calculators
  • +
  • The techniques described in this guide are pretty much in their infancy. We are not responsible for anything that goes wrong with your device. There is a slight chance that you might brick your device
  • +
  • This guide is compatible with every retail device in the Numworks family of calculators
- Get Started + Get Started
From d46aaf3aa2d6f3bf6dd9a2a6ae911e07469e5a2f Mon Sep 17 00:00:00 2001 From: Bloomy <90511192+BloomyInDev@users.noreply.github.com> Date: Wed, 15 Nov 2023 08:58:57 +0100 Subject: [PATCH 23/51] Update the flowchart - Update the flowchart --- docs/flowchart.md | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/docs/flowchart.md b/docs/flowchart.md index 6d27292c..0bdbfcdf 100644 --- a/docs/flowchart.md +++ b/docs/flowchart.md @@ -1,6 +1,6 @@ --- sidebar_position: 6 -title: "Chart of decision" +title: "Decision Tree" pagination_next: null pagination_prev: null --- @@ -21,14 +21,21 @@ flowchart TD model_number --N0115--> calc_locked model_number --N0120--> calc_locked check_version --11.2.0 to 16.2.0--> calc_unlocked - check_version --16.3.0 to 16.4.2--> phi[Use Phi] + check_version ==16.3.0 to 16.4.2\n17.0.0 to 18.2.0==> phi[Use Phi] check_version --16.4.3 or 18.2.3--> install_18_2_0[Install Epsilon 18.2.0] - check_version --17.0.0 to 18.2.0--> phi check_version --19.0.0 to 21.3.0--> downgrade_check[Check eligibility] downgrade_check --Eligible--> install_18_2_0 downgrade_check --Non eligible--> downgrade_fail(( )) --Open the calculator--> hardware_method[Follow the hardware method] downgrade_fail --Don't open the calculator--> calc_locked install_18_2_0 --> phi - phi & hardware_method --> calc_unlocked + + click model_number "./intro" + click check_version "./n0110/n0110-is-locked" + click downgrade_check "./n0110/phi/check-version-change-eligibility" + click install_18_2_0 "./n0110/phi/install-epsilon-18-2-0" + click phi "./n0110/phi" + click hardware_method "./n0110/hardware/n0110-hardware-unlock" + click calc_locked "./no-custom/what-to-do-locked" + click calc_unlocked "./cfw/choose-a-cfw" ``` \ No newline at end of file From 726725a148b6de2e4a275fcd92ce8ad8baae6054 Mon Sep 17 00:00:00 2001 From: Bloomy <90511192+BloomyInDev@users.noreply.github.com> Date: Wed, 15 Nov 2023 08:59:40 +0100 Subject: [PATCH 24/51] Fix more links - Fix broken links - Remove unused elements --- .../phi/check-version-change-eligibility.md | 2 +- .../current/n0110/n0110-is-locked.md | 4 +- .../phi/check-version-change-eligibility.md | 2 +- static/img/logo.svg | 1 - static/img/undraw_docusaurus_mountain.svg | 171 ------------------ static/img/undraw_docusaurus_react.svg | 170 ----------------- static/img/undraw_docusaurus_tree.svg | 40 ---- 7 files changed, 4 insertions(+), 386 deletions(-) delete mode 100644 static/img/logo.svg delete mode 100644 static/img/undraw_docusaurus_mountain.svg delete mode 100644 static/img/undraw_docusaurus_react.svg delete mode 100644 static/img/undraw_docusaurus_tree.svg diff --git a/docs/n0110/phi/check-version-change-eligibility.md b/docs/n0110/phi/check-version-change-eligibility.md index ebd36964..08c5e09f 100644 --- a/docs/n0110/phi/check-version-change-eligibility.md +++ b/docs/n0110/phi/check-version-change-eligibility.md @@ -36,6 +36,6 @@ ___ :::info -If you are not eligible, you need to use an [Alternate Method](/docs/n0110/n0110-is-locked#alternate-methods) +If you are not eligible, you need to use an [Alternate Method](/docs/n0110/n0110-is-locked#alt-methods) ::: diff --git a/i18n/fr/docusaurus-plugin-content-docs/current/n0110/n0110-is-locked.md b/i18n/fr/docusaurus-plugin-content-docs/current/n0110/n0110-is-locked.md index 231bbee0..0e947742 100644 --- a/i18n/fr/docusaurus-plugin-content-docs/current/n0110/n0110-is-locked.md +++ b/i18n/fr/docusaurus-plugin-content-docs/current/n0110/n0110-is-locked.md @@ -33,7 +33,7 @@ Si l'écran reste noir et que la LED devient rouge, **STOP** - votre calculatric Appuyez sur le bouton reset à l'arrière de la calculatrice pour revenir au micrologiciel. -#### Section III - Sélectionnez une méthode +#### Section III - Sélectionnez une méthode {#principal-methods} Utilisez le tableau des versions ci-dessous pour sélectionner une méthode. Quelques points à noter : + Le tableau des versions ci-dessous est *inclusif*. Par exemple, "de 16.3.0 à 18.0.0" inclus 16.3.0, 18.0.0, et toutes les versions entre celles-ci. @@ -49,7 +49,7 @@ Utilisez le tableau des versions ci-dessous pour sélectionner une méthode. Que | 19.0.0-21.2.0 | [Vérifier l'éligibilité au changement de version](phi/check-version-change-eligibility) | --- -#### Méthodes alternatives +#### Méthodes alternatives {#alt-methods} Si possible, vous devriez suivre l'une des méthodes logicielles répertoriées ci-dessus. diff --git a/i18n/fr/docusaurus-plugin-content-docs/current/n0110/phi/check-version-change-eligibility.md b/i18n/fr/docusaurus-plugin-content-docs/current/n0110/phi/check-version-change-eligibility.md index 578bcb60..c4ce8c56 100644 --- a/i18n/fr/docusaurus-plugin-content-docs/current/n0110/phi/check-version-change-eligibility.md +++ b/i18n/fr/docusaurus-plugin-content-docs/current/n0110/phi/check-version-change-eligibility.md @@ -35,5 +35,5 @@ Si vous n'étiez pas éligible, après la manipulation, la calculatrice sera blo --- :::info -Si vous n'êtes pas éligible, vous pouvez utiliser la [Methode Alternative](/docs/n0110/n0110-is-locked#alternate-methods) +Si vous n'êtes pas éligible, vous pouvez utiliser la [Methode Alternative](/docs/n0110/n0110-is-locked#alt-methods) ::: diff --git a/static/img/logo.svg b/static/img/logo.svg deleted file mode 100644 index 9db6d0d0..00000000 --- a/static/img/logo.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/static/img/undraw_docusaurus_mountain.svg b/static/img/undraw_docusaurus_mountain.svg deleted file mode 100644 index af961c49..00000000 --- a/static/img/undraw_docusaurus_mountain.svg +++ /dev/null @@ -1,171 +0,0 @@ - - Easy to Use - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/static/img/undraw_docusaurus_react.svg b/static/img/undraw_docusaurus_react.svg deleted file mode 100644 index 94b5cf08..00000000 --- a/static/img/undraw_docusaurus_react.svg +++ /dev/null @@ -1,170 +0,0 @@ - - Powered by React - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/static/img/undraw_docusaurus_tree.svg b/static/img/undraw_docusaurus_tree.svg deleted file mode 100644 index d9161d33..00000000 --- a/static/img/undraw_docusaurus_tree.svg +++ /dev/null @@ -1,40 +0,0 @@ - - Focus on What Matters - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - From 7fc6a2a1960adb02a1725f8a70108cd629041ae7 Mon Sep 17 00:00:00 2001 From: Bloomy <90511192+BloomyInDev@users.noreply.github.com> Date: Wed, 15 Nov 2023 09:09:21 +0100 Subject: [PATCH 25/51] Fix the last broken link - Fix the last broken link (as said by Docusaurus) --- .../current/no-custom/restore-stock-firmware.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/i18n/fr/docusaurus-plugin-content-docs/current/no-custom/restore-stock-firmware.md b/i18n/fr/docusaurus-plugin-content-docs/current/no-custom/restore-stock-firmware.md index 3d8bdfaa..11ec511d 100644 --- a/i18n/fr/docusaurus-plugin-content-docs/current/no-custom/restore-stock-firmware.md +++ b/i18n/fr/docusaurus-plugin-content-docs/current/no-custom/restore-stock-firmware.md @@ -5,7 +5,7 @@ pagination_prev: null --- :::danger -Restaurer votre calculatrice vers le firmware d'origine **VA LA BLOQUER** et vous ne pourrez plus jamais installer de CFW dessus, à moins que vous utilisiez une méthode matérielle pour le redébloquer. Nous vous conseillons vivement d'utiliser le bootloader de n'importe quel CFW compatible et d'[Installer Epsilon depuis le Softloader](/docs/n0110/phi/install-epsilon-from-softloader) pour toujours utiliser les dernières versions sans bloquer votre calculatrice. +Restaurer votre calculatrice vers le firmware d'origine **VA LA BLOQUER** et vous ne pourrez plus jamais installer de CFW dessus, à moins que vous utilisiez une méthode matérielle pour le redébloquer. Nous vous conseillons vivement d'utiliser le bootloader de n'importe quel CFW compatible et d'[Installer Epsilon depuis le Softloader](/docs/cfw/install-epsilon-from-softloader) pour toujours utiliser les dernières versions sans bloquer votre calculatrice. ::: Cette page vous expliquera comment revenir au firmware d'origine, et donc bloquer votre calculatrice. From f904015f00e96a81b261dc2220d1f5a64c845a9f Mon Sep 17 00:00:00 2001 From: Bloomy <90511192+BloomyInDev@users.noreply.github.com> Date: Wed, 15 Nov 2023 11:56:22 +0100 Subject: [PATCH 26/51] Try to setup auto-deploy - Try to setup auto-deploy --- .github/workflow/deploy.yml | 50 +++++++++++++++++++++++++++++++++++++ 1 file changed, 50 insertions(+) create mode 100644 .github/workflow/deploy.yml diff --git a/.github/workflow/deploy.yml b/.github/workflow/deploy.yml new file mode 100644 index 00000000..1c32a5a6 --- /dev/null +++ b/.github/workflow/deploy.yml @@ -0,0 +1,50 @@ +name: Deploy static content to Pages + +on: + # Runs on pushes targeting the default branch + push: + branches: ['master'] + + # Allows you to run this workflow manually from the Actions tab + workflow_dispatch: + +# Sets the GITHUB_TOKEN permissions to allow deployment to GitHub Pages +permissions: + contents: read + pages: write + id-token: write + +# Allow one concurrent deployment +concurrency: + group: 'pages' + cancel-in-progress: true + +jobs: + # Single deploy job since we're just deploying + deploy: + environment: + name: github-pages + url: ${{ steps.deployment.outputs.page_url }} + runs-on: ubuntu-latest + steps: + - name: Get the repo (checkout) + uses: actions/checkout@v3 + - name: Set up Node + uses: actions/setup-node@v3 + with: + node-version: 18 + cache: 'npm' + - name: Install dependencies + run: npm install + - name: Build + run: npm run build + - name: Setup Pages + uses: actions/configure-pages@v3 + - name: Upload artifact + uses: actions/upload-pages-artifact@v1 + with: + # Upload dist repository + path: './build' + - name: Deploy to GitHub Pages + id: deployment + uses: actions/deploy-pages@v1 From 8d4d634a3cfa5eecec522cf05db062fe4c88cfe0 Mon Sep 17 00:00:00 2001 From: Bloomy <90511192+BloomyInDev@users.noreply.github.com> Date: Wed, 15 Nov 2023 11:57:22 +0100 Subject: [PATCH 27/51] Fail, retry auto-deploy --- .github/workflow/deploy.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflow/deploy.yml b/.github/workflow/deploy.yml index 1c32a5a6..2c81f7a8 100644 --- a/.github/workflow/deploy.yml +++ b/.github/workflow/deploy.yml @@ -3,7 +3,7 @@ name: Deploy static content to Pages on: # Runs on pushes targeting the default branch push: - branches: ['master'] + branches: ['docusaurus'] # Allows you to run this workflow manually from the Actions tab workflow_dispatch: From a7372192f1449bd9658dd11811bcb9dd9c5a5ec0 Mon Sep 17 00:00:00 2001 From: Bloomy <90511192+BloomyInDev@users.noreply.github.com> Date: Fri, 17 Nov 2023 13:28:28 +0100 Subject: [PATCH 28/51] Same as 'main', move to right folder --- .../{workflow/deploy.yml => workflows/docusaurus_deploy.yml} | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) rename .github/{workflow/deploy.yml => workflows/docusaurus_deploy.yml} (96%) diff --git a/.github/workflow/deploy.yml b/.github/workflows/docusaurus_deploy.yml similarity index 96% rename from .github/workflow/deploy.yml rename to .github/workflows/docusaurus_deploy.yml index 2c81f7a8..9b34ca9c 100644 --- a/.github/workflow/deploy.yml +++ b/.github/workflows/docusaurus_deploy.yml @@ -47,4 +47,4 @@ jobs: path: './build' - name: Deploy to GitHub Pages id: deployment - uses: actions/deploy-pages@v1 + uses: actions/deploy-pages@v1 \ No newline at end of file From f3d70fe42c49d58b0a72101d5c2ccd119a4e5497 Mon Sep 17 00:00:00 2001 From: Bloomy <90511192+BloomyInDev@users.noreply.github.com> Date: Mon, 20 Nov 2023 09:56:48 +0100 Subject: [PATCH 29/51] Better flowchart - Make a better flowchart (imo) --- docs/flowchart.md | 43 ++++++++++++++++++++++++++++++++++++------- 1 file changed, 36 insertions(+), 7 deletions(-) diff --git a/docs/flowchart.md b/docs/flowchart.md index 0bdbfcdf..cd119673 100644 --- a/docs/flowchart.md +++ b/docs/flowchart.md @@ -9,28 +9,47 @@ pagination_prev: null This is not translated in other languages than English (yet !) ::: +# Main branch + ```mermaid flowchart TD calc_unlocked([Your calculator is unlocked, yay!]) - calc_locked([Your calculator is locked, but you can do other things with it]) + calc_locked([You can do things without CFW]) start([Start]) --> want_cfw[Want CFW ?] - want_cfw --Yes--> model_number[Read model number] want_cfw --No--> calc_locked + want_cfw --Yes--> model_number[Read model number] + + model_number --N0100--> calc_unlocked - model_number --N0110--> check_version[What version ?] - model_number --N0115--> calc_locked - model_number --N0120--> calc_locked + model_number --N0110--> branch_N0110{{Go to branch N0110}} + model_number --N0115 or N0120--> branch_new_calcs{{Go to branch N0115 & N0120}} + model_number --Other--> goto_discord([Go to Omega discord]) + + click model_number "./intro" + click calc_locked "./no-custom/what-to-do-locked" + click calc_unlocked "./cfw/choose-a-cfw" + click goto_discord "https://discord.gg/X2TWhh9" + click branch_N0110 "#n0110" + click branch_new_calcs "#new-calcs" +``` + +# Branch N0110 {#n0110} + +```mermaid +flowchart TD + calc_unlocked([Your calculator is unlocked, yay!]) + calc_locked([Your calculator is locked, but you can do other things with it]) + start{{Branch N0110}} --> check_version[What version ?] check_version --11.2.0 to 16.2.0--> calc_unlocked check_version ==16.3.0 to 16.4.2\n17.0.0 to 18.2.0==> phi[Use Phi] check_version --16.4.3 or 18.2.3--> install_18_2_0[Install Epsilon 18.2.0] check_version --19.0.0 to 21.3.0--> downgrade_check[Check eligibility] downgrade_check --Eligible--> install_18_2_0 downgrade_check --Non eligible--> downgrade_fail(( )) --Open the calculator--> hardware_method[Follow the hardware method] - downgrade_fail --Don't open the calculator--> calc_locked + downgrade_fail --Don't want to open the calculator--> calc_locked install_18_2_0 --> phi phi & hardware_method --> calc_unlocked - click model_number "./intro" click check_version "./n0110/n0110-is-locked" click downgrade_check "./n0110/phi/check-version-change-eligibility" click install_18_2_0 "./n0110/phi/install-epsilon-18-2-0" @@ -38,4 +57,14 @@ flowchart TD click hardware_method "./n0110/hardware/n0110-hardware-unlock" click calc_locked "./no-custom/what-to-do-locked" click calc_unlocked "./cfw/choose-a-cfw" +``` + +# Branch N0115 & N0120 {#new-calcs} + +```mermaid +flowchart TD + calc_locked([Your calculator is locked, but you can do other things with it]) + start{{Branch N0115 & N0120}} --> calc_locked + + click calc_locked "./no-custom/what-to-do-locked" ``` \ No newline at end of file From caec3103c7c7a2647571d8e4a5c8b51f17fa7375 Mon Sep 17 00:00:00 2001 From: Bastien <90511192+BloomyInDev@users.noreply.github.com> Date: Tue, 21 Nov 2023 11:34:51 +0100 Subject: [PATCH 30/51] Change CFW --> Custom OS --- docs/flowchart.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/flowchart.md b/docs/flowchart.md index cd119673..44f3aafa 100644 --- a/docs/flowchart.md +++ b/docs/flowchart.md @@ -14,8 +14,8 @@ This is not translated in other languages than English (yet !) ```mermaid flowchart TD calc_unlocked([Your calculator is unlocked, yay!]) - calc_locked([You can do things without CFW]) - start([Start]) --> want_cfw[Want CFW ?] + calc_locked([You can do things without a Custom OS]) + start([Start]) --> want_cfw[Want Custom OS ?] want_cfw --No--> calc_locked want_cfw --Yes--> model_number[Read model number] @@ -67,4 +67,4 @@ flowchart TD start{{Branch N0115 & N0120}} --> calc_locked click calc_locked "./no-custom/what-to-do-locked" -``` \ No newline at end of file +``` From 39f631c56e7716ba5351b833a0a521b014ec9239 Mon Sep 17 00:00:00 2001 From: Bloomy <90511192+BloomyInDev@users.noreply.github.com> Date: Mon, 27 Nov 2023 19:52:28 +0100 Subject: [PATCH 31/51] Thanks Tib's - Tib's (Moderator from the Discord) helped me to fix some French errors --- i18n/fr/code.json | 6 ++++++ i18n/fr/docusaurus-plugin-content-docs/current.json | 2 +- .../current/n0110/phi/check-version-change-eligibility.md | 4 ++-- src/pages/index.tsx | 8 ++++---- 4 files changed, 13 insertions(+), 7 deletions(-) diff --git a/i18n/fr/code.json b/i18n/fr/code.json index e7f37db7..3848a282 100644 --- a/i18n/fr/code.json +++ b/i18n/fr/code.json @@ -270,6 +270,9 @@ "message": "Tags", "description": "The title of the tag list page" }, + "home.page.tagline": { + "message":"Tout pour prendre le contrôle de votre calculatrice" + }, "home.page.cfw.title": { "message": "CFW" }, @@ -326,5 +329,8 @@ }, "home.page.whatKnow.text2": { "message": "Ce guide est compatible avec tout les modèles de calculatrices Numworks vendus" + }, + "home.page.goto.guide": { + "message": "Démarrer" } } diff --git a/i18n/fr/docusaurus-plugin-content-docs/current.json b/i18n/fr/docusaurus-plugin-content-docs/current.json index b546fcd0..c9136fe4 100644 --- a/i18n/fr/docusaurus-plugin-content-docs/current.json +++ b/i18n/fr/docusaurus-plugin-content-docs/current.json @@ -8,7 +8,7 @@ "description": "The label for category N0110 in sidebar tutorialSidebar" }, "sidebar.tutorialSidebar.category.N0110.link.generated-index.description": { - "message": "Comment customiser sa Numworks N0110", + "message": "Comment personnaliser sa Numworks N0110", "description": "The generated-index page description for category N0110 in sidebar tutorialSidebar" }, "sidebar.tutorialSidebar.category.Hardware method": { diff --git a/i18n/fr/docusaurus-plugin-content-docs/current/n0110/phi/check-version-change-eligibility.md b/i18n/fr/docusaurus-plugin-content-docs/current/n0110/phi/check-version-change-eligibility.md index c4ce8c56..3f5de718 100644 --- a/i18n/fr/docusaurus-plugin-content-docs/current/n0110/phi/check-version-change-eligibility.md +++ b/i18n/fr/docusaurus-plugin-content-docs/current/n0110/phi/check-version-change-eligibility.md @@ -30,10 +30,10 @@ Cela dépend de la version que vous aviez avant de mettre à jour vers Epsilon 1 ### Et si vous ne savez pas ? Ne vous inquitez pas, essayer de changer de version de ne cassera pas votre calculatrice -Si vous n'étiez pas éligible, après la manipulation, la calculatrice sera bloquée sur l'écran Recovery de Numworks et vous serez en mesure de mettre à jour depuis le site de Numworks et votre calculatrice fonctionnera normalement +Si vous n'étiez pas éligible, après la manipulation, la calculatrice sera bloquée sur l'écran de mode de récupération de Numworks et vous serez en mesure de mettre à jour depuis le site de Numworks et votre calculatrice fonctionnera normalement --- :::info -Si vous n'êtes pas éligible, vous pouvez utiliser la [Methode Alternative](/docs/n0110/n0110-is-locked#alt-methods) +Si vous n'êtes pas éligible, vous pouvez utiliser la [methode alternative](/docs/n0110/n0110-is-locked#alt-methods) ::: diff --git a/src/pages/index.tsx b/src/pages/index.tsx index 73ef25f2..29bb0071 100644 --- a/src/pages/index.tsx +++ b/src/pages/index.tsx @@ -3,7 +3,7 @@ import clsx from 'clsx'; import Link from '@docusaurus/Link'; import useDocusaurusContext from '@docusaurus/useDocusaurusContext'; import Layout from '@theme/Layout'; -import Translate, {translate} from '@docusaurus/Translate'; +import Translate, { translate } from '@docusaurus/Translate'; import styles from './index.module.css'; function HomepageHeader() { @@ -12,12 +12,12 @@ function HomepageHeader() {

{siteConfig.title}

-

{siteConfig.tagline}

+

{translate({ message: 'Everything to take control of your calculator', id: 'home.page.tagline' })}

- Get Started + Get Started
@@ -30,7 +30,7 @@ export default function Home(): JSX.Element { return (
From 7b39f8ccc1f5e96a38de93ee7aba189addcdb4fd Mon Sep 17 00:00:00 2001 From: Bloomy <90511192+BloomyInDev@users.noreply.github.com> Date: Mon, 27 Nov 2023 20:00:12 +0100 Subject: [PATCH 32/51] Fix the embed - Embed display in the right language --- src/pages/index.tsx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/pages/index.tsx b/src/pages/index.tsx index 29bb0071..f13d0b4b 100644 --- a/src/pages/index.tsx +++ b/src/pages/index.tsx @@ -12,7 +12,7 @@ function HomepageHeader() {

{siteConfig.title}

-

{translate({ message: 'Everything to take control of your calculator', id: 'home.page.tagline' })}

+

{translate({ message: siteConfig.tagline, id: 'home.page.tagline' })}

From da59153a63d8f79828f3181563e6210fe6afdd0f Mon Sep 17 00:00:00 2001 From: Bloomy <90511192+BloomyInDev@users.noreply.github.com> Date: Mon, 27 Nov 2023 20:37:43 +0100 Subject: [PATCH 33/51] Translate more things - Translate the footer - Fix a bad translation in phi-now-what --- .../current/n0110/phi/phi-now-what.md | 4 ++-- i18n/fr/docusaurus-theme-classic/footer.json | 6 +++--- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/i18n/fr/docusaurus-plugin-content-docs/current/n0110/phi/phi-now-what.md b/i18n/fr/docusaurus-plugin-content-docs/current/n0110/phi/phi-now-what.md index 1460056f..5e418f48 100644 --- a/i18n/fr/docusaurus-plugin-content-docs/current/n0110/phi/phi-now-what.md +++ b/i18n/fr/docusaurus-plugin-content-docs/current/n0110/phi/phi-now-what.md @@ -1,9 +1,9 @@ --- -title: "Now What (Phi) ?" +title: "Et maintenant (Phi) ?" sidebar_position: 4 --- -ous avez maintenant plusieurs choix. Vous pouvez: +Vous avez maintenant plusieurs choix. Vous pouvez: - Installer un bootloader personnalisé et continuer à utiliser Epsilon >= 16 - Installer un firmware personnalisé # Choix I - Installer un bootloader patché diff --git a/i18n/fr/docusaurus-theme-classic/footer.json b/i18n/fr/docusaurus-theme-classic/footer.json index 89ddde4f..e6043737 100644 --- a/i18n/fr/docusaurus-theme-classic/footer.json +++ b/i18n/fr/docusaurus-theme-classic/footer.json @@ -1,10 +1,10 @@ { "link.title.Community": { - "message": "Community", + "message": "Communauté", "description": "The title of the footer links column with title=Community in the footer" }, "link.title.More": { - "message": "More", + "message": "Autres liens", "description": "The title of the footer links column with title=More in the footer" }, "link.item.label.Discord": { @@ -20,7 +20,7 @@ "description": "The label of footer link with label=Credits linking to /docs/credits" }, "copyright": { - "message": "Copyright © 2023 Omega Community, Built with Docusaurus.", + "message": "Copyright © 2023 Omega Community, Réalisé avec Docusaurus.", "description": "The footer copyright" } } From 9026ff3c1dbca7a7e116e14cddecec60794ed072 Mon Sep 17 00:00:00 2001 From: Rathmox Date: Tue, 12 Dec 2023 19:18:24 +0100 Subject: [PATCH 34/51] remove now-what phi --- docs/n0110/phi/phi-now-what.md | 30 ------------------- .../current/n0110/phi/phi-now-what.md | 29 ------------------ 2 files changed, 59 deletions(-) delete mode 100644 docs/n0110/phi/phi-now-what.md delete mode 100644 i18n/fr/docusaurus-plugin-content-docs/current/n0110/phi/phi-now-what.md diff --git a/docs/n0110/phi/phi-now-what.md b/docs/n0110/phi/phi-now-what.md deleted file mode 100644 index 64703854..00000000 --- a/docs/n0110/phi/phi-now-what.md +++ /dev/null @@ -1,30 +0,0 @@ ---- -title: "Now What (Phi) ?" -sidebar_position: 4 ---- - -You now have multiple choices. You can: -- Install a custom bootloader and continue using Epsilon >= 16 -- Install a custom firmware - -# Choice I - Install a custom bootloader - -If you wish to continue using Epsilon >= 16 while still being able to install a custom firmware, you can install a custom bootloader : -1. Press 3 -2. Press OK to confirm -3. You should see something like this : - -![Phi launch screen](/img/phi-write.png) - -The "Write flash" stage can take a bit of time. You'll be put back on the main menu after a second, when the flashing is done. - -Press 4, then OK. You should now boot back into Epsilon. - -:::caution - -If you don't boot back into Epsilon, don't worry, we will fix that later. - -::: - - -Go to [choose a CFW](/docs/cfw/choose-a-cfw) diff --git a/i18n/fr/docusaurus-plugin-content-docs/current/n0110/phi/phi-now-what.md b/i18n/fr/docusaurus-plugin-content-docs/current/n0110/phi/phi-now-what.md deleted file mode 100644 index 5e418f48..00000000 --- a/i18n/fr/docusaurus-plugin-content-docs/current/n0110/phi/phi-now-what.md +++ /dev/null @@ -1,29 +0,0 @@ ---- -title: "Et maintenant (Phi) ?" -sidebar_position: 4 ---- - -Vous avez maintenant plusieurs choix. Vous pouvez: -- Installer un bootloader personnalisé et continuer à utiliser Epsilon >= 16 -- Installer un firmware personnalisé -# Choix I - Installer un bootloader patché - -Si vous souhaitez continuer à utiliser Epsilon >= 16 tout en pouvant installer un custom firmware, vous pouvez installer un bootloader patché : -1. Appuyez sur 3 -2. Appuyez sur OK pour confirmer -3. Vous devriez voir quelque chose comme ça : - -![Phi launch screen](/img/phi-write.png) - -L'étape "Write flash" peut prendre un peu de temps. Vous reviendrez au menu principal après une seconde, lorsque le clignotement sera terminé. - -Appuyez sur 4, puis OK. Vous devriez maintenant redémarrer dans Epsilon. - -:::caution - -Si vous ne redémarrez pas dans Epsilon, veuillez rejoindre le [Discord Omega](https://discord.gg/X2TWhh9) et demandez de l'aide. - -::: - - -Continuez vers [Choisir un CFW](/docs/cfw/choose-a-cfw) From 3972fb43f755d16273b1940e70af82ed6d263faa Mon Sep 17 00:00:00 2001 From: Rathmox Date: Tue, 12 Dec 2023 20:02:37 +0100 Subject: [PATCH 35/51] Consistency and language fixes --- docs/cfw/choose-a-cfw.md | 8 +-- docs/cfw/install-epsilon-from-softloader.md | 10 +-- docs/credits.md | 2 +- docs/faq.md | 2 +- docs/flowchart.md | 20 +++--- docs/how-does-it-work.md | 10 +-- docs/intro.md | 10 +-- docs/n0110/n0110-unlocked.md | 2 +- docs/n0110/phi/phi.md | 2 +- docs/no-custom/restore-stock-firmware.md | 2 +- docs/no-custom/what-to-do-locked.md | 1 + docs/troubleshooting.md | 4 +- .../current/cfw/choose-a-cfw.md | 8 +-- .../current/credits.md | 2 +- .../current/flowchart.md | 66 +++++++++++++++++++ .../current/how-does-it-work.md | 12 ++-- .../current/intro.md | 10 +-- .../current/n0110/n0110-unlocked.md | 4 +- .../current/n0110/phi/phi.md | 6 +- .../no-custom/restore-stock-firmware.md | 4 +- .../current/no-custom/what-to-do-locked.md | 1 + .../current/troubleshooting.md | 16 ++--- 22 files changed, 133 insertions(+), 69 deletions(-) create mode 100644 i18n/fr/docusaurus-plugin-content-docs/current/flowchart.md diff --git a/docs/cfw/choose-a-cfw.md b/docs/cfw/choose-a-cfw.md index 2059752c..dc48a7d4 100644 --- a/docs/cfw/choose-a-cfw.md +++ b/docs/cfw/choose-a-cfw.md @@ -1,5 +1,5 @@ --- -title: "Choose a CFW" +title: "Choose a Custom OS" sidebar_position: 1 pagination_next: null pagination_prev: null @@ -11,9 +11,9 @@ You need an unlocked calculator. [To unlock it go here](../intro) ::: -There are multiple CFWs you can install on your calculator, most of them install in the same way. Here are a few of them +There are multiple Custom OSs you can install on your calculator, most of them install in the same way. Here are a few of them -| CFW | Advantages | +| OS | Advantages | |--------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------| -| [Omega](/docs/cfw/omega) | The most popular CFW for Numworks, forked from Epsilon 15.5.0. It bings back symbolic calculation, allows installing external apps, and adds Python libraries | +| [Omega](/docs/cfw/omega) | The most popular Custom OS for Numworks, forked from Epsilon 15.5.0. It bings back symbolic calculation, allows installing external apps, and adds Python libraries | | [Upsilon](/docs/cfw/upsilon) | Forked from Omega, Upsilon brings more features and conveience compared to Omega, like a LaTeX reader, more storage for Python scripts, and a better bootloader | diff --git a/docs/cfw/install-epsilon-from-softloader.md b/docs/cfw/install-epsilon-from-softloader.md index de8fc9da..ddb8f546 100644 --- a/docs/cfw/install-epsilon-from-softloader.md +++ b/docs/cfw/install-epsilon-from-softloader.md @@ -19,7 +19,7 @@ The latest Epsilon version may not be safe, check the latest version. Latest kno :::info -This page is irrelevant if you have an n0100, because you can switch between any CFW and Epsilon without locking your calculator. And the n0100 can't have any custom bootloader. +This page is irrelevant if you have an n0100, because you can switch between any Custom OS and Epsilon without locking your calculator. And the n0100 can't have any custom bootloader. ::: @@ -34,7 +34,7 @@ We will now install Epsilon on one slot of your calculator, assuming you have a ### Section I - Open the bootloader -If your CFW includes a custom bootloader that allows installing a firmware from it, you should now open the bootloader and make it ready to install anything. Some help can be found on [this page](/docs/cfw/choose-a-cfw) +If your Custom OS includes a custom bootloader that allows installing a firmware from it, you should now open the bootloader and make it ready to install anything. Some help can be found on [this page](/docs/cfw/choose-a-cfw) ### Section II - Install @@ -45,10 +45,10 @@ If your CFW includes a custom bootloader that allows installing a firmware from Now you have Epsilon with a custom bootloader so your calculator isn't locked. -Epsilon has normally been installed on both slots. So if you had a CFW, it has been erased, only the bootloader is remaining. To reinstall it you can do it normally from the bootloader or in recovery mode, just make sure you are not installing Epsilon again. +Epsilon has normally been installed on both slots. So if you had a Custom OS, it has been erased, only the bootloader is remaining. To reinstall it you can do it normally from the bootloader or in recovery mode, just make sure you are not installing Epsilon again. -It's recommended to keep your CFW in Slot A. +It's recommended to keep your Custom OS in Slot A. ### GG -You now have Epsilon and your CFW at the same time, Epsilon on one slot, your CFW on the other. You can now switch between them whenever you want, it works differently depending on your CFW but the goal is just to switch between slots. +You now have Epsilon and your Custom OS at the same time, Epsilon on one slot, your Custom OS on the other. You can now switch between them whenever you want, it works differently depending on your Custom OS but the goal is just to switch between slots. diff --git a/docs/credits.md b/docs/credits.md index 26f22674..3f124987 100644 --- a/docs/credits.md +++ b/docs/credits.md @@ -13,7 +13,7 @@ Special thanks to: - Rathmox and BloomyInDev for porting the guide to docusaurus ::: -If I forgot you here, [contact us](https://github.com/Omega-Numworks/Omega-Guide) and we will add your name. +If we forgot you here, [contact us](https://github.com/Omega-Numworks/Omega-Guide) and we will add your name. + AngeDieu + BloomyInDev diff --git a/docs/faq.md b/docs/faq.md index 0f30f8eb..f33c2e12 100644 --- a/docs/faq.md +++ b/docs/faq.md @@ -25,7 +25,7 @@ phones can be used with an USB OTG cable. # Post-Installation FAQ -**Q:** *Is it safe to update Epsilon while having a CFW installed ?* +**Q:** *Is it safe to update Epsilon while having a Custom OS installed ?* **A:** At the moment, Numworks' installer doesn't check for modded bootloaders, neither does Epsilon, so yes (unless you don't have a bootloader which is probably not the case). diff --git a/docs/flowchart.md b/docs/flowchart.md index 44f3aafa..ef4da6a0 100644 --- a/docs/flowchart.md +++ b/docs/flowchart.md @@ -1,20 +1,16 @@ --- sidebar_position: 6 -title: "Decision Tree" +title: "Site map" pagination_next: null pagination_prev: null --- -:::info -This is not translated in other languages than English (yet !) -::: - -# Main branch +## Main branch ```mermaid flowchart TD calc_unlocked([Your calculator is unlocked, yay!]) - calc_locked([You can do things without a Custom OS]) + calc_locked([What you can do without a Custom OS]) start([Start]) --> want_cfw[Want Custom OS ?] want_cfw --No--> calc_locked want_cfw --Yes--> model_number[Read model number] @@ -23,7 +19,7 @@ flowchart TD model_number --N0100--> calc_unlocked model_number --N0110--> branch_N0110{{Go to branch N0110}} model_number --N0115 or N0120--> branch_new_calcs{{Go to branch N0115 & N0120}} - model_number --Other--> goto_discord([Go to Omega discord]) + model_number --Other--> goto_discord([Go to Omega Discord server]) click model_number "./intro" click calc_locked "./no-custom/what-to-do-locked" @@ -33,19 +29,19 @@ flowchart TD click branch_new_calcs "#new-calcs" ``` -# Branch N0110 {#n0110} +## Branch N0110 {#n0110} ```mermaid flowchart TD calc_unlocked([Your calculator is unlocked, yay!]) calc_locked([Your calculator is locked, but you can do other things with it]) - start{{Branch N0110}} --> check_version[What version ?] + start{{Branch N0110}} --> check_version[Which version ?] check_version --11.2.0 to 16.2.0--> calc_unlocked check_version ==16.3.0 to 16.4.2\n17.0.0 to 18.2.0==> phi[Use Phi] check_version --16.4.3 or 18.2.3--> install_18_2_0[Install Epsilon 18.2.0] check_version --19.0.0 to 21.3.0--> downgrade_check[Check eligibility] downgrade_check --Eligible--> install_18_2_0 - downgrade_check --Non eligible--> downgrade_fail(( )) --Open the calculator--> hardware_method[Follow the hardware method] + downgrade_check --Not eligible--> downgrade_fail(( )) --Open the calculator--> hardware_method[Follow the hardware method] downgrade_fail --Don't want to open the calculator--> calc_locked install_18_2_0 --> phi phi & hardware_method --> calc_unlocked @@ -59,7 +55,7 @@ flowchart TD click calc_unlocked "./cfw/choose-a-cfw" ``` -# Branch N0115 & N0120 {#new-calcs} +## Branch N0115 & N0120 {#new-calcs} ```mermaid flowchart TD diff --git a/docs/how-does-it-work.md b/docs/how-does-it-work.md index cbfb8311..cf6cec0e 100644 --- a/docs/how-does-it-work.md +++ b/docs/how-does-it-work.md @@ -51,9 +51,9 @@ Now that we know how Numworks uses the calculator, let's know how custom firmwar ::: -### 4 - What changes with a CFW ? +### 4 - What changes with a Custom OS ? -Originally, a CFW was just replacing the external flash. To bypass some limitations, some CFWs like Omega and Delta started changing the internal flash, but it was not far from what Numworks originally did. +Originally, a Custom OS was just replacing the external flash. To bypass some limitations, some Custom OSs like Omega and Delta started changing the internal flash, but it was not far from what Numworks originally did. Delta introduced external apps, which were then reused in Omega. They are installed in the external flash alongside the firmware. A similar system has been added to Epsilon later. @@ -71,7 +71,7 @@ Now that you understand how the internal flash works, let's understand how Phi w :::info -Phi is **NOT** a program or exploit that directly allows CFW to run and doesn't do anything once the calculator is unlocked +Phi is **NOT** a program or exploit that directly allows a Custom OS to run and doesn't do anything once the calculator is unlocked ::: @@ -92,11 +92,11 @@ The process in the guide is now easy to understand: ### 7 - Why n0120 can't be unlocked ? The n0120 is in a particular case: -It can be unlocked with a hardware modification, but the reason why we don't advertize it in this guide is because there is no CFW you can install on it. +It can be unlocked with a hardware modification, but the reason why we don't advertize it in this guide is because there is no Custom OS you can install on it. The n0120 was released first with Epsilon 16, but a patched version that can't be unlocked with Phi. So there is no n0120 that can currently be unlocked without hardware. -Also, since Epsilon 16, Numworls stopped giving the drivers for the MCU, these drivers are requiered to create a bootloader. Developers can get them from Epsilon 15 for n0100 and n0110, but for n0120, they just never got released publically (and they can't get extracted from Epsilon), so they need to be developed from scratch which is really hard and long. This is why there is no CFW for n0120, and we can't tell you how to unlock it. +Also, since Epsilon 16, Numworls stopped giving the drivers for the MCU, these drivers are requiered to create a bootloader. Developers can get them from Epsilon 15 for n0100 and n0110, but for n0120, they just never got released publically (and they can't get extracted from Epsilon), so they need to be developed from scratch which is really hard and long. This is why there is no Custom OS for n0120, and we can't tell you how to unlock it. :::note diff --git a/docs/intro.md b/docs/intro.md index ec6cc683..724a33ae 100644 --- a/docs/intro.md +++ b/docs/intro.md @@ -15,11 +15,11 @@ Thoroughly read all of the introductory pages (including this one!) before proce This guide will refer to some names, before starting you have to know what these names refer to: -1. Epsilon: This is the firmware originally sold with the calculator, made by Numworks. After version 16, they started to lock the calculator to prevent any CFW installation ([see why here](https://tiplanet.org/forum/viewtopic.php?f=97&t=24968)). -2. CFW: Custom firmware, a firmware that is made to replace Epsilon. Common ones are Omega and Upsilon +1. Epsilon: This is the firmware originally sold with the calculator, made by Numworks. After version 16, they started to lock the calculator to prevent any Custom OS installation ([see why here](https://tiplanet.org/forum/viewtopic.php?f=97&t=24968)). +2. Custom OS: Custom operating system, a firmware that is made to replace Epsilon. Common ones are Omega and Upsilon 3. Phi: This is an app that is made to unlock locked calculators. 4. Recovery mode ("STM32 DFU bootloader" or "hwloader"): This is a mode on the calculator that allows to change anything, and the one that Numworks locked. It's usually accessed when pressing "reset" on the back of the calculator while holding the "6" key and it can be recognized when you get a black screen with the led turned on red. This is what you need to get at the end to be able to install anything you want. -5. Bootloader ("softloader"): This is a menu you can get in different ways, it depends on the CFW you choose. It allows you to reinstall the firmware and can prevent you from locking your calculator if you update it. Phi allows you to install one if you want. +5. Bootloader ("softloader"): This is a menu you can get in different ways, it depends on the Custom OS you choose. It allows you to reinstall the firmware and can prevent you from locking your calculator if you update it. Phi allows you to install one if you want. :::info @@ -44,6 +44,6 @@ If you don't want to deeply modify your calculator, [there are still a few thing | Calculator Model | What to do | |------------------|-------------------------------------------------------------------------------------------------| -| N0100 | [Your calculator is already unlocked. Choose a CFW](/docs/cfw/choose-a-cfw) | +| N0100 | [Your calculator is already unlocked. Choose a Custom OS](/docs/cfw/choose-a-cfw) | | N0110 | [Check if your calculator is locked](/docs/n0110/n0110-is-locked) | -| N0115 - N0120 | [You can't install a CFW on it. But there are still a few things you can do](/docs/no-custom/what-to-do-locked) | +| N0115 - N0120 | [You can't install a Custom OS on it. But there are still a few things you can do](/docs/no-custom/what-to-do-locked) | diff --git a/docs/n0110/n0110-unlocked.md b/docs/n0110/n0110-unlocked.md index 2300c8d4..ba9abcf5 100644 --- a/docs/n0110/n0110-unlocked.md +++ b/docs/n0110/n0110-unlocked.md @@ -6,4 +6,4 @@ pagination_prev: n0110/n0110-is-locked Your Numworks is unlocked, yay! -You can now install a CFW to extend your calculator abilities +You can now install a Custom OS to extend your calculator abilities diff --git a/docs/n0110/phi/phi.md b/docs/n0110/phi/phi.md index 7930fa44..ceacf19a 100644 --- a/docs/n0110/phi/phi.md +++ b/docs/n0110/phi/phi.md @@ -77,5 +77,5 @@ The "Write flash" stage can take a bit of time. You'll be put back on the main m Press 4, then OK. You should now boot back into Epsilon. :::info -If you don't boot back into Epsilon, don't worry, installing a CFW will fix it later. +If you don't boot back into Epsilon, don't worry, installing a Custom OS will fix it later. ::: diff --git a/docs/no-custom/restore-stock-firmware.md b/docs/no-custom/restore-stock-firmware.md index 62f944f0..122e0e0e 100644 --- a/docs/no-custom/restore-stock-firmware.md +++ b/docs/no-custom/restore-stock-firmware.md @@ -6,7 +6,7 @@ pagination_prev: null :::danger -Restoring your calculator to stock firmware **WILL LOCK IT** and you won't be able to install any CFW on it ever again, unless you use a hardware method to unlock it again. We highly advise using the bootloader from any compatible CFW and [install Epsilon from softloader](/docs/cfw/install-epsilon-from-softloader) to still use the latest versions without locking your calculator. +Restoring your calculator to stock firmware **WILL LOCK IT** and you won't be able to install any Custom OS on it ever again, unless you use a hardware method to unlock it again. We highly advise using the bootloader from any compatible Custom OS and [install Epsilon from softloader](/docs/cfw/install-epsilon-from-softloader) to still use the latest versions without locking your calculator. ::: diff --git a/docs/no-custom/what-to-do-locked.md b/docs/no-custom/what-to-do-locked.md index 9b00c374..4086933b 100644 --- a/docs/no-custom/what-to-do-locked.md +++ b/docs/no-custom/what-to-do-locked.md @@ -23,4 +23,5 @@ Also when you enable exam mode or press "reset" they will be disabled Epsilon is still partially open-source, you can modify the code to create your own version and install it, however it's userland only and if you reset it will be removed and you are back to stock. You will also have a popup telling you that you are running a modified software. Note that since Epsilon 16, sharing a modified version is illegal. You should never share the version you created yourself. + [Numworks' instructions](https://www.numworks.com/resources/engineering/software/build/) diff --git a/docs/troubleshooting.md b/docs/troubleshooting.md index f2fd7643..7e07cdc6 100644 --- a/docs/troubleshooting.md +++ b/docs/troubleshooting.md @@ -9,7 +9,7 @@ pagination_prev: null Your calculator is in Recovery mode, it's waiting to receive a firmware, so it's unlocked. **If you update from Numworks' website, your calculator will be locked** -[Choose a CFW](./cfw/choose-a-cfw) to install on your calculator. (If you want to install Epsilon without locking your calculator, install first a compatible CFW while in recovery mode, then install Epsilon while NOT in recovery mode) +[Choose a Custom OS](./cfw/choose-a-cfw) to install on your calculator. (If you want to install Epsilon without locking your calculator, install first a compatible Custom OS while in recovery mode, then install Epsilon while **NOT** in recovery mode) ### Black screen, yellow cable, and `numworks.com/rescue` @@ -61,7 +61,7 @@ This can easily be fixed if you close the tab or software already connected to i ### "Could not detect the calculator model" / "N????" -This means your calculator is protected against CFM installation. If you want to install CFW, you need to unlock it. +This means your calculator is protected against CFM installation. If you want to install a Custom OS, you need to unlock it. Follow [this guide](intro) to unlock it. diff --git a/i18n/fr/docusaurus-plugin-content-docs/current/cfw/choose-a-cfw.md b/i18n/fr/docusaurus-plugin-content-docs/current/cfw/choose-a-cfw.md index 187f1687..8cd3156a 100644 --- a/i18n/fr/docusaurus-plugin-content-docs/current/cfw/choose-a-cfw.md +++ b/i18n/fr/docusaurus-plugin-content-docs/current/cfw/choose-a-cfw.md @@ -1,5 +1,5 @@ --- -title: "Choisir un CFW" +title: "Choisir un OS Custom" sidebar_position: 1 pagination_next: null pagination_prev: null @@ -11,9 +11,9 @@ Vous avez besoin d’une calculatrice débloquée. [Pour la débloquer continuez ::: -Il y a plusieurs CFWs que vous pouvez installer sur votre calculatrice, la plupart s’installent de la même manière. En voici certains +Il y a plusieurs OS Custom que vous pouvez installer sur votre calculatrice, la plupart s’installent de la même manière. En voici certains -| CFW | Avantages | +| OS | Avantages | |-----|-----------| -| [Omega](/docs/cfw/omega) | Le CFW le plus populaire pour Numworks, basé sur Epsilon 15.5.0. Il restaure le calcul symbolique, permet l'installation d'applications externes, et ajoute des libraries Python | +| [Omega](/docs/cfw/omega) | L'OS Custom le plus populaire pour Numworks, basé sur Epsilon 15.5.0. Il restaure le calcul symbolique, permet l'installation d'applications externes, et ajoute des libraries Python | | [Upsilon](/docs/cfw/upsilon) | Basé sur Omega, Upsilon apporte plus de fonctions et de confort comparé à Omega, comme une liseuse LaTeX, plus de stockage pour les scripts Python, et un meilleur bootloader | diff --git a/i18n/fr/docusaurus-plugin-content-docs/current/credits.md b/i18n/fr/docusaurus-plugin-content-docs/current/credits.md index 9d501088..b75a6e33 100644 --- a/i18n/fr/docusaurus-plugin-content-docs/current/credits.md +++ b/i18n/fr/docusaurus-plugin-content-docs/current/credits.md @@ -13,7 +13,7 @@ Un grand merci à: - Rathmox and BloomyInDev d'avoir porté le guide à [Docusaurus](https://docusaurus.io/) ::: -Si je vous ai oublié ici, [contactez-nous](https://github.com/Omega-Numworks/Omega-Guide) et nous vous ajouterons dans la liste des contributeurs +Si nous vous avons oublié ici, [contactez-nous](https://github.com/Omega-Numworks/Omega-Guide) et nous vous ajouterons dans la liste des contributeurs + AngeDieu + BloomyInDev diff --git a/i18n/fr/docusaurus-plugin-content-docs/current/flowchart.md b/i18n/fr/docusaurus-plugin-content-docs/current/flowchart.md new file mode 100644 index 00000000..a2f74c74 --- /dev/null +++ b/i18n/fr/docusaurus-plugin-content-docs/current/flowchart.md @@ -0,0 +1,66 @@ +--- +sidebar_position: 6 +title: "Plan du site" +pagination_next: null +pagination_prev: null +--- + +## Branche principale + +```mermaid +flowchart TD + calc_unlocked([Votre calculatrice est débloquée, yay!]) + calc_locked([Ce que vous pouvez faire sans OS custom]) + start([Début]) --> want_cfw[Vous voulez un OS custom ?] + want_cfw --Non--> calc_locked + want_cfw --Oui--> model_number[Regardez le numéro de modèle] + + + model_number --N0100--> calc_unlocked + model_number --N0110--> branch_N0110{{Allez à la branche N0110}} + model_number --N0115 ou N0120--> branch_new_calcs{{Allez à la branche N0115 & N0120}} + model_number --Autre--> goto_discord([Rejoignez le serveur Discord d'Omega]) + + click model_number "./intro" + click calc_locked "./no-custom/what-to-do-locked" + click calc_unlocked "./cfw/choose-a-cfw" + click goto_discord "https://discord.gg/X2TWhh9" + click branch_N0110 "#n0110" + click branch_new_calcs "#new-calcs" +``` + +## Branche N0110 {#n0110} + +```mermaid +flowchart TD + calc_unlocked([Votre calculatrice est débloquée, yay!]) + calc_locked([Votre calculatrice est bloquée, mais vous pouvez faire d'autre choses avec]) + start{{Branche N0110}} --> check_version[Quelle version ?] + check_version --11.2.0 à 16.2.0--> calc_unlocked + check_version ==16.3.0 à 16.4.2\n17.0.0 to 18.2.0==> phi[Utilisez Phi] + check_version --16.4.3 ou 18.2.3--> install_18_2_0[Installez Epsilon 18.2.0] + check_version --19.0.0 à 21.3.0--> downgrade_check[Vérifiez l'éligibilité] + downgrade_check --Eligible--> install_18_2_0 + downgrade_check --Non eligible--> downgrade_fail(( )) --Ouvrir la calculatrice--> hardware_method[Suivez la méthode matérielle] + downgrade_fail --Vous ne voulez pas ouvrir votre calculatrice--> calc_locked + install_18_2_0 --> phi + phi & hardware_method --> calc_unlocked + + click check_version "./n0110/n0110-is-locked" + click downgrade_check "./n0110/phi/check-version-change-eligibility" + click install_18_2_0 "./n0110/phi/install-epsilon-18-2-0" + click phi "./n0110/phi" + click hardware_method "./n0110/hardware/n0110-hardware-unlock" + click calc_locked "./no-custom/what-to-do-locked" + click calc_unlocked "./cfw/choose-a-cfw" +``` + +## Branche N0115 & N0120 {#new-calcs} + +```mermaid +flowchart TD + calc_locked([Votre calculatrice est bloquée, mais vous pouvez faire d'autre choses avec]) + start{{Branche N0115 & N0120}} --> calc_locked + + click calc_locked "./no-custom/what-to-do-locked" +``` diff --git a/i18n/fr/docusaurus-plugin-content-docs/current/how-does-it-work.md b/i18n/fr/docusaurus-plugin-content-docs/current/how-does-it-work.md index 8085a329..801e4b8f 100644 --- a/i18n/fr/docusaurus-plugin-content-docs/current/how-does-it-work.md +++ b/i18n/fr/docusaurus-plugin-content-docs/current/how-does-it-work.md @@ -48,9 +48,9 @@ Depuis Epsilon 16, la flash interne contient un bootloader utilisé pour bloquer Maintenant que l'on sait comment Numworks utilise la calcuatrice, découvrons comment les firmwares custom l'utilisent. ::: -### 4 - Qu'est-ce qui change avec un CFW ? +### 4 - Qu'est-ce qui change avec un OS Custom ? -À l'origine, un CFW remplaçait seulement la flash externe. Pour contourner certaines limitations, certains CFWs comme Omega et Delta ont comencé à changer la flash interne, mais ce n'était pas loin de ce que Numworks faisait à l'origine +À l'origine, un OS Custom remplaçait seulement la flash externe. Pour contourner certaines limitations, certains OS Custom comme Omega et Delta ont comencé à changer la flash interne, mais ce n'était pas loin de ce que Numworks faisait à l'origine Delta a introduit les applis externes, qui ont été réutilisées dans Omega. Elles sont installées dans la flash externe avec le firmware. Un système similaire a été ajouté à Epsilon plus tard. @@ -65,7 +65,7 @@ Maintenant que vous comprenez comment fonctionne la flash interne, voyons commen ### 5 - Comment Phi fontionne-t-il ? :::note -Phi n'est **PAS** un programme ou un exploit qui permet directement de lancer un CFW et ne fait rien une fois que la calculatrice est débloquée. +Phi n'est **PAS** un programme ou un exploit qui permet directement de lancer un OS Custom et ne fait rien une fois que la calculatrice est débloquée. ::: Phi est une appli qui peut débloquer les calculatrices fonctionnant sous Epsilon entre 16.3.0 et 18.2.0 (hors 16.4.3) @@ -85,11 +85,11 @@ Le processus dans le guide est maintenant facile à comprendre: ### 7 - Pourquoi la n0120 ne peut pas être débloquée ? La n0120 est dans un cas particulier: -Elle peut être débloquée avec des modifications matérielles, mais la raison pour laquelle on ne dit pas comment le faire dans ce guide c'est car il n'y a aucun CFW que vous pouvez installer dessus. +Elle peut être débloquée avec des modifications matérielles, mais la raison pour laquelle on ne dit pas comment le faire dans ce guide c'est car il n'y a aucun OS Custom que vous pouvez installer dessus. La n0120 a été publiée en premier avec Epsilon 16, mais une version patchés qui ne peut pas être débloquée avec Phi. Donc il n'y a aucune n0120 qui peut être débloquée sans matériel. -Aussi, depuis Epsilon 16, Numworks a arrêté de donner les drivers pour le MCU, ces drivers sont nécessaires pour créer le bootloader. Les Développeurs peuvent les récupérer depuis Epsilon 15 pour n0100 et n0110, mais pour n0120, ils n'ont jamais été publiés (et ne peuvent pas être extraits d'Epsilon), donc ils doivent être développés depuis zéro ce qui est difficile et long. C'est pourquoi il n'y a pas de CFW pour n0120, et qu'on ne peut pas vous dire comment la débloquer +Aussi, depuis Epsilon 16, Numworks a arrêté de donner les drivers pour le MCU, ces drivers sont nécessaires pour créer le bootloader. Les Développeurs peuvent les récupérer depuis Epsilon 15 pour n0100 et n0110, mais pour n0120, ils n'ont jamais été publiés (et ne peuvent pas être extraits d'Epsilon), donc ils doivent être développés depuis zéro ce qui est difficile et long. C'est pourquoi il n'y a pas de OS Custom pour n0120, et qu'on ne peut pas vous dire comment la débloquer :::info Maintenant vous comprenez tout sur comment le débloquage de calculatrice fonctionne. -::: \ No newline at end of file +::: diff --git a/i18n/fr/docusaurus-plugin-content-docs/current/intro.md b/i18n/fr/docusaurus-plugin-content-docs/current/intro.md index 7782b2f8..491f14fb 100644 --- a/i18n/fr/docusaurus-plugin-content-docs/current/intro.md +++ b/i18n/fr/docusaurus-plugin-content-docs/current/intro.md @@ -15,11 +15,11 @@ Lisez tout les pages (en incluant celle-ci!) avant de procéder Ce guide va utiliser certains noms, avant de commencer vous devez savoir à qui ces noms font référence: -1. Epsilon: C'est le firmware vendu à l'origine avec la calculatrice, fait par Numworks. Après la version 16, ils ont commencé à verrouiller la calculatrice pour empêcher toute installation de CFW ([comprenez pourquoi ici](https://tiplanet.org/forum/viewtopic.php?f=97&t=24968)). -2. CFW: Custom firmware, un firmware conçu pour remplacer Epsilon. Les plus courants sont Omega et Upsilon. +1. Epsilon: C'est le firmware vendu à l'origine avec la calculatrice, fait par Numworks. Après la version 16, ils ont commencé à verrouiller la calculatrice pour empêcher toute installation d'un OS Custom ([comprenez pourquoi ici](https://tiplanet.org/forum/viewtopic.php?f=97&t=24968)). +2. OS Custom: Custom firmware, un firmware conçu pour remplacer Epsilon. Les plus courants sont Omega et Upsilon. 3. Phi: C'est une appli conçue pour débloquer certaines calculatrices bloquées. 4. Recovery mode ("STM32 DFU bootloader" ou "hwloader"): C'est un mode sur la calculatrice qui permet de changer n'importe quoi, et le mode que Numworks a bloqué. On y accède couramment en appuyant sur "reset" au dos de la calculatrice pendant que l'on maintient la touche "6" et il est reconnu lorsque vous obtenez un écran noir et que la LED devient rouge. C'est ce que vous devez obtenir à la fin de ce guide pour installer tout ce que vous voulez. -5. Bootloader ("softloader"): C'est un menu auquel vous pouvez accéder de différentes manières, cela dépend du CFW que vous choisissez. Il vous permet de réinstaller le firmware et peut vous empêcher de bloquer votre calculatrice si vous la mettez à jour. Phi vous permet d'en installer un si vous le souhaitez +5. Bootloader ("softloader"): C'est un menu auquel vous pouvez accéder de différentes manières, cela dépend de l'OS Custom que vous choisissez. Il vous permet de réinstaller le firmware et peut vous empêcher de bloquer votre calculatrice si vous la mettez à jour. Phi vous permet d'en installer un si vous le souhaitez :::info Si vous ne voulez pas profondément modifier votre calculatrice, [il y a toujours certaines choses que vous pouvez faire](no-custom/what-to-do-locked) @@ -42,6 +42,6 @@ Si vous ne voulez pas profondément modifier votre calculatrice, [il y a toujour | Modèle de calculatrice | Que faut-il faire ? | |------------------|----------------------------------------------------------------| -| N0100 | [Votre calculatrice est déja dévérouillée, choisisez un CFW](/docs/cfw/choose-a-cfw) | +| N0100 | [Votre calculatrice est déja dévérouillée, choisisez un OS Custom](/docs/cfw/choose-a-cfw) | | N0110 | [Vérifiez si votre calculatrice est verrouillée](/docs/n0110/n0110-is-locked) | -| N0115 - N0120 | [Vous ne pouvez pas installer de CFW dessus. Mais il y a toujours certaines choses que vous pouvez faire](/docs/no-custom/what-to-do-locked) | +| N0115 - N0120 | [Vous ne pouvez pas installer d'OS Custom dessus. Mais il y a toujours certaines choses que vous pouvez faire](/docs/no-custom/what-to-do-locked) | diff --git a/i18n/fr/docusaurus-plugin-content-docs/current/n0110/n0110-unlocked.md b/i18n/fr/docusaurus-plugin-content-docs/current/n0110/n0110-unlocked.md index 10abf802..8870a098 100644 --- a/i18n/fr/docusaurus-plugin-content-docs/current/n0110/n0110-unlocked.md +++ b/i18n/fr/docusaurus-plugin-content-docs/current/n0110/n0110-unlocked.md @@ -4,6 +4,6 @@ pagination_next: cfw/choose-a-cfw pagination_prev: n0110/n0110-is-locked --- -Votre Numworks est débloquée, yay! +Votre calculatrice est débloquée, yay! -Vous pouvez maintenant installer un CFW pour accéder à plus de fonctionnalitées +Vous pouvez maintenant installer un OS Custom pour accéder à plus de fonctionnalitées diff --git a/i18n/fr/docusaurus-plugin-content-docs/current/n0110/phi/phi.md b/i18n/fr/docusaurus-plugin-content-docs/current/n0110/phi/phi.md index 0627cb04..79e36699 100644 --- a/i18n/fr/docusaurus-plugin-content-docs/current/n0110/phi/phi.md +++ b/i18n/fr/docusaurus-plugin-content-docs/current/n0110/phi/phi.md @@ -52,7 +52,7 @@ Nous allons maintenant déverrouiller le flash interne et supprimer la protectio L'étape "Reset RDP" peut prendre un peu de temps. Vous serez remis sur le menu principal après une seconde, lorsque le déverrouillage sera terminé. -### Section IV - Effacement du flash interne +### Section IV - Effacement de la flash interne La suppression de la protection en écriture aurait dû effacer le flash interne, mais nous allons le refaire, juste pour être sûr : @@ -64,7 +64,7 @@ La suppression de la protection en écriture aurait dû effacer le flash interne L'étape "Erase flash" peut prendre un peu de temps, Vous serez remis sur le menu principal après une seconde, quand l'effaçage sera terminé. -### Section V - Installing a custom bootloader +### Section V - Installation d'un bootloader custom 1. Appuyez sur 3 2. Appuyez sur OK pour confirmer @@ -76,5 +76,5 @@ L'étape "Write Flash" peut prendre un peu de temps. Vous serez remis sur le men :::info -Si vous ne démarrez pas dans Epsilon, ne vous inquiétez pas, installer un CFW le réparera plus tard. +Si vous ne démarrez pas dans Epsilon, ne vous inquiétez pas, installer un OS Custom réparera cela plus tard. ::: diff --git a/i18n/fr/docusaurus-plugin-content-docs/current/no-custom/restore-stock-firmware.md b/i18n/fr/docusaurus-plugin-content-docs/current/no-custom/restore-stock-firmware.md index 11ec511d..f6cbd985 100644 --- a/i18n/fr/docusaurus-plugin-content-docs/current/no-custom/restore-stock-firmware.md +++ b/i18n/fr/docusaurus-plugin-content-docs/current/no-custom/restore-stock-firmware.md @@ -5,7 +5,7 @@ pagination_prev: null --- :::danger -Restaurer votre calculatrice vers le firmware d'origine **VA LA BLOQUER** et vous ne pourrez plus jamais installer de CFW dessus, à moins que vous utilisiez une méthode matérielle pour le redébloquer. Nous vous conseillons vivement d'utiliser le bootloader de n'importe quel CFW compatible et d'[Installer Epsilon depuis le Softloader](/docs/cfw/install-epsilon-from-softloader) pour toujours utiliser les dernières versions sans bloquer votre calculatrice. +Restaurer votre calculatrice vers le firmware d'origine **VA LA BLOQUER** et vous ne pourrez plus jamais installer d'OS Custom dessus, à moins que vous utilisiez une méthode matérielle pour le redébloquer. Nous vous conseillons vivement d'utiliser le bootloader de n'importe quel OS Custom compatible et d'[Installer Epsilon depuis le Softloader](/docs/cfw/install-epsilon-from-softloader) pour toujours utiliser les dernières versions sans bloquer votre calculatrice. ::: Cette page vous expliquera comment revenir au firmware d'origine, et donc bloquer votre calculatrice. @@ -15,4 +15,4 @@ Cette page vous expliquera comment revenir au firmware d'origine, et donc bloque 3. Branchez votre calculatrice a votre ordinateur 4. Suivez les instructions pour restaurer le firmware d'origine. -Vous avez maintenant une calculatrice avec le firmware d'origine. \ No newline at end of file +Vous avez maintenant une calculatrice avec le firmware d'origine. diff --git a/i18n/fr/docusaurus-plugin-content-docs/current/no-custom/what-to-do-locked.md b/i18n/fr/docusaurus-plugin-content-docs/current/no-custom/what-to-do-locked.md index eeab1440..f2e7bf87 100644 --- a/i18n/fr/docusaurus-plugin-content-docs/current/no-custom/what-to-do-locked.md +++ b/i18n/fr/docusaurus-plugin-content-docs/current/no-custom/what-to-do-locked.md @@ -24,4 +24,5 @@ Aussi, quand vous activez le mode examen ou appuyez sur "reset", elles seront d Epsilon est toujours partiellement open-source, vous pouvez modifier le code et créer votre propre version et l'installer. Cependant, c'est en userland uniquement et si vous appuyez sur "reset" vous retournerez au firmware d'origine. Vous aurez aussi un popup disant que vous exécutez un logiciel modifié. Notez que depuis Epsilon 16, partager une version modifiée est illégal. Vous ne devez jamais partager la version que vous avez créé. + [Les instructions de Numworks](https://www.numworks.com/resources/engineering/software/build/) diff --git a/i18n/fr/docusaurus-plugin-content-docs/current/troubleshooting.md b/i18n/fr/docusaurus-plugin-content-docs/current/troubleshooting.md index cf708358..e1110bb3 100644 --- a/i18n/fr/docusaurus-plugin-content-docs/current/troubleshooting.md +++ b/i18n/fr/docusaurus-plugin-content-docs/current/troubleshooting.md @@ -10,11 +10,11 @@ pagination_prev: null Tout va bien : un écran noir et une led rouge signifient que votre calculatrice est en mode Recovery, elle attend de recevoir un firmware, elle est donc débloquée. **ATTENTION : Dans ce mode, Si vous faites une mise à jour depuis le site de Numworks, vous allez faire une re-installation complète de la calculatrice avec la dernière version du système de gestion de Numworks. Vous allez alors verrouiller la calculatrice : les installations de Custom Firmwares tels que Omega ou Opsilon seront bloquées.** -[Choisissez un CFW](/docs/cfw/choose-a-cfw) à installer sur votre calculatrice. (Si vous voulez installer Epsilon sans bloquer la calculatrice, installez d'abord à ce stade un CFW compatible, puis installer Epsilon en veillant à ne pas être en mode recovery) +[Choisissez un OS Custom](/docs/cfw/choose-a-cfw) à installer sur votre calculatrice. (Si vous voulez installer Epsilon sans bloquer la calculatrice, installez d'abord à ce stade un OS Custom compatible, puis installer Epsilon en veillant à ne pas être en mode recovery) ### Écran noir, cable jaune, et `numworks.com/rescue` -C'est l'écran du bootloader de Numworks. Il s'affiche quand la calculatrice est verrouillée (blocage de l'installation des CFW) et que vous avez lancé le mode recovery en maintenant 6 et en appuyant sur reset. Il s'affiche également quand la calculatrice n'a pas pu démarrer. +C'est l'écran du bootloader de Numworks. Il s'affiche quand la calculatrice est verrouillée (blocage de l'installation des OS Custom) et que vous avez lancé le mode recovery en maintenant 6 et en appuyant sur reset. Il s'affiche également quand la calculatrice n'a pas pu démarrer. Si vous souhaitez débloquer votre calculatrice, n'allez pas sur le site `numworks.com/rescue`, mais suivez le guide à partir de [l'installation d'Epsilon 18.2.0](/docs/n0110/phi/install-epsilon-18-2-0). @@ -66,14 +66,14 @@ Essayez d'utiliser le bon mode, pour des applications externes lancez juste en m ### "Unable to claim interface" -Cette erreur arrive quand vous essayez de connecter votre calculatrice mais elle est déjà utilisée par un autre onglet ou logiciel. Cela arrive habituellement quand vous essayez d'installer des applications externes mais que l'onglet que vous avec utilisé pour unstaller votre CFW est toujours ouvert. +Cette erreur arrive quand vous essayez de connecter votre calculatrice mais elle est déjà utilisée par un autre onglet ou logiciel. Cela arrive habituellement quand vous essayez d'installer des applications externes mais que l'onglet que vous avec utilisé pour installer votre OS Custom est toujours ouvert. Ça peut facilement être réglé si vous fermez l'onglet ou le logiciel déjà connecté à la calculatrice. Il ne peut y avoir qu'un seul onglet (ou logiciel) établissant une connexion à la calculatrice. ### "Could not detect the calculator model" / "N????" -Cela veut dire que votre calculatrice est verrouillée contre l'installation de CFW. Si vous voulez installer un CFW, vous avec besoin de la débloquer. +Cela veut dire que votre calculatrice est verrouillée contre l'installation de OS Custom. Si vous voulez installer un OS Custom, vous avez besoin de la débloquer. Suivez [ce guide](intro) pour la débloquer. @@ -81,13 +81,13 @@ Suivez [ce guide](intro) pour la débloquer. Cela peut arriver quand le bootloader custom est trop ancien. -Pour le mettre à jour : allez sur le site de votre CFW, mettez la calculatrice en mode Recovery (en maintenant 6 et en appuyant sur reset au dos de la calculatrice), connectez-la à l'ordinateur, puis choisissez "Restauration" (recovery) sur le site de votre CFW. +Pour le mettre à jour : allez sur le site de votre OS Custom, mettez la calculatrice en mode Recovery (en maintenant 6 et en appuyant sur reset au dos de la calculatrice), connectez-la à l'ordinateur, puis choisissez "Restauration" (recovery) sur le site de votre OS Custom. ### Écran et LED clignottants Vous essayez de démarrer Epsilon 19 sur un ancian bootloader custom. -Mettez à jour le bootloader : allez sur le site de votre CFW, mettez la calculatrice en mode Recovery (en maintenant 6 et en appuyant sur reset au dos de la calculatrice), connectez-la à l'ordinateur, puis choisissez "Restauration" (recovery) sur le site de votre CFW. +Mettez à jour le bootloader : allez sur le site de votre OS Custom, mettez la calculatrice en mode Recovery (en maintenant 6 et en appuyant sur reset au dos de la calculatrice), connectez-la à l'ordinateur, puis choisissez "Restauration" (recovery) sur le site de votre OS Custom. ### L'installation n'a pas de fin (installation infinie) @@ -101,7 +101,7 @@ Vous essayez de flasher la partition externe mais la calculatrice n'est pas dans Vous devez flasher avec l'écran de bootloader Numworks, le bootloader custom ou le flasher du mode recovery (l'écran indiquant "Recovery mode" en installant Omega en mode Recovery) -### La calculatrice redémarre en essayant d'installer un CFW +### La calculatrice redémarre en essayant d'installer un OS Custom Votre calculatrice est sous Epsilon 19 ou plus, cela peut arriver quand la calculatrice est bloquée ou que vous l'exécutez depuis un bootloader custom. @@ -146,4 +146,4 @@ ___ :::info ### Votre erreur n'est pas listée ? La solution proposée n'a pas réglé votre problème ? N'hésitez pas à demander sur le [Discord d'Omega](https://discord.gg/X2TWhh9) -::: \ No newline at end of file +::: From 807aa236a5886213ec3c132b67bd7afb51cba439 Mon Sep 17 00:00:00 2001 From: Rathmox Date: Tue, 12 Dec 2023 21:09:51 +0100 Subject: [PATCH 36/51] =?UTF-8?q?"bas=C3=A9=20chromium"=20->=20"bas=C3=A9?= =?UTF-8?q?=20sur=20chromium"?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../current/n0110/phi/install-epsilon-18-2-0.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/i18n/fr/docusaurus-plugin-content-docs/current/n0110/phi/install-epsilon-18-2-0.md b/i18n/fr/docusaurus-plugin-content-docs/current/n0110/phi/install-epsilon-18-2-0.md index 3ce9ed65..3bb63a2f 100644 --- a/i18n/fr/docusaurus-plugin-content-docs/current/n0110/phi/install-epsilon-18-2-0.md +++ b/i18n/fr/docusaurus-plugin-content-docs/current/n0110/phi/install-epsilon-18-2-0.md @@ -33,7 +33,7 @@ Vous devriez maintenant avoir un fichier internal.bin et un fichier external.bin ### Section II - Installation -1. Ouvrez le [WebDFU](https://ti-planet.github.io/webdfu_numworks/n0110/) dans un navigateur web basé chromium +1. Ouvrez le [WebDFU](https://ti-planet.github.io/webdfu_numworks/n0110/) dans un navigateur web basé sur chromium 2. Maintenez la touche 6 sur votre Numworks et pressez le bouton reset 3. Vous devriez maintenant voir l'interface du bootloader Epsilon 4. Sélectionnez `external.bin` dans WebDFU From 089f821649b4bcb5bb88ad1928fadafe2f93ef3d Mon Sep 17 00:00:00 2001 From: Rathmox Date: Wed, 13 Dec 2023 19:15:25 +0100 Subject: [PATCH 37/51] update credits --- docs/credits.md | 1 + i18n/fr/docusaurus-plugin-content-docs/current/credits.md | 1 + 2 files changed, 2 insertions(+) diff --git a/docs/credits.md b/docs/credits.md index 3f124987..d72bdc7a 100644 --- a/docs/credits.md +++ b/docs/credits.md @@ -20,6 +20,7 @@ If we forgot you here, [contact us](https://github.com/Omega-Numworks/Omega-Guid + darthnithin + hdboye + M4x1m3 ++ orkeilius + Rathmox + siim0n + Syycorax diff --git a/i18n/fr/docusaurus-plugin-content-docs/current/credits.md b/i18n/fr/docusaurus-plugin-content-docs/current/credits.md index b75a6e33..58680fbc 100644 --- a/i18n/fr/docusaurus-plugin-content-docs/current/credits.md +++ b/i18n/fr/docusaurus-plugin-content-docs/current/credits.md @@ -20,6 +20,7 @@ Si nous vous avons oublié ici, [contactez-nous](https://github.com/Omega-Numwor + darthnithin + hdboye + M4x1m3 ++ orkeilius + Rathmox + siim0n + Syycorax From 6904e4e30d64544a1d25b8736c881c67ee1734d7 Mon Sep 17 00:00:00 2001 From: Bloomy <90511192+BloomyInDev@users.noreply.github.com> Date: Wed, 13 Dec 2023 19:46:52 +0100 Subject: [PATCH 38/51] Flowchart, last edition (maybe) - Flowchart updated and upgraded --- .vscode/settings.json | 3 +++ docs/flowchart.md | 56 ++++++++++++++++++------------------------- 2 files changed, 26 insertions(+), 33 deletions(-) create mode 100644 .vscode/settings.json diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 00000000..00ad71fb --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,3 @@ +{ + "typescript.tsdk": "node_modules\\typescript\\lib" +} \ No newline at end of file diff --git a/docs/flowchart.md b/docs/flowchart.md index ef4da6a0..443a80c9 100644 --- a/docs/flowchart.md +++ b/docs/flowchart.md @@ -5,62 +5,52 @@ pagination_next: null pagination_prev: null --- -## Main branch ```mermaid flowchart TD calc_unlocked([Your calculator is unlocked, yay!]) - calc_locked([What you can do without a Custom OS]) + calc_locked_no_modif([What you can do without a Custom OS]) start([Start]) --> want_cfw[Want Custom OS ?] - want_cfw --No--> calc_locked - want_cfw --Yes--> model_number[Read model number] + style start stroke:#00f500,stroke-width:4px + want_cfw --No--> calc_locked_no_modif + want_cfw --->|Yes| model_number[Read model number] model_number --N0100--> calc_unlocked - model_number --N0110--> branch_N0110{{Go to branch N0110}} - model_number --N0115 or N0120--> branch_new_calcs{{Go to branch N0115 & N0120}} + model_number ---->|N0110| check_version_n0110 + model_number ---->|N0115 or N0120| calc_locked_new_calcs model_number --Other--> goto_discord([Go to Omega Discord server]) click model_number "./intro" - click calc_locked "./no-custom/what-to-do-locked" + click calc_locked_no_modif "./no-custom/what-to-do-locked" click calc_unlocked "./cfw/choose-a-cfw" click goto_discord "https://discord.gg/X2TWhh9" - click branch_N0110 "#n0110" - click branch_new_calcs "#new-calcs" -``` - -## Branch N0110 {#n0110} -```mermaid -flowchart TD - calc_unlocked([Your calculator is unlocked, yay!]) - calc_locked([Your calculator is locked, but you can do other things with it]) - start{{Branch N0110}} --> check_version[Which version ?] - check_version --11.2.0 to 16.2.0--> calc_unlocked - check_version ==16.3.0 to 16.4.2\n17.0.0 to 18.2.0==> phi[Use Phi] - check_version --16.4.3 or 18.2.3--> install_18_2_0[Install Epsilon 18.2.0] - check_version --19.0.0 to 21.3.0--> downgrade_check[Check eligibility] + subgraph n0110 [Branch N0110] + calc_locked_n0110([Your calculator is locked, but you can do other things with it]) + calc_unlocked_n0110([Your calculator is unlocked, yay!]) + check_version_n0110[Which version ?] + check_version_n0110 --11.2.0 to 16.2.0--> calc_unlocked_n0110 + check_version_n0110 ==16.3.0 to 16.4.2\n17.0.0 to 18.2.0==> phi[Use Phi] + check_version_n0110 --16.4.3 or 18.2.3--> install_18_2_0[Install Epsilon 18.2.0] + check_version_n0110 --19.0.0 to 21.3.0--> downgrade_check[Check eligibility] downgrade_check --Eligible--> install_18_2_0 downgrade_check --Not eligible--> downgrade_fail(( )) --Open the calculator--> hardware_method[Follow the hardware method] - downgrade_fail --Don't want to open the calculator--> calc_locked + downgrade_fail --Don't want to open the calculator--> calc_locked_n0110 install_18_2_0 --> phi - phi & hardware_method --> calc_unlocked + phi & hardware_method --> calc_unlocked_n0110 - click check_version "./n0110/n0110-is-locked" + click check_version_n0110 "./n0110/n0110-is-locked" click downgrade_check "./n0110/phi/check-version-change-eligibility" click install_18_2_0 "./n0110/phi/install-epsilon-18-2-0" click phi "./n0110/phi" click hardware_method "./n0110/hardware/n0110-hardware-unlock" - click calc_locked "./no-custom/what-to-do-locked" - click calc_unlocked "./cfw/choose-a-cfw" -``` + click calc_locked_n0110 "./no-custom/what-to-do-locked" + click calc_unlocked_n0110 "./cfw/choose-a-cfw" -## Branch N0115 & N0120 {#new-calcs} + end -```mermaid -flowchart TD - calc_locked([Your calculator is locked, but you can do other things with it]) - start{{Branch N0115 & N0120}} --> calc_locked + calc_locked_new_calcs([Your calculator is locked, but you can do other things with it]) - click calc_locked "./no-custom/what-to-do-locked" + click calc_locked_new_calcs "./no-custom/what-to-do-locked" ``` From 32f6b5792eb10d9769064873e9a10d69db25b220 Mon Sep 17 00:00:00 2001 From: Bloomy <90511192+BloomyInDev@users.noreply.github.com> Date: Wed, 13 Dec 2023 19:55:51 +0100 Subject: [PATCH 39/51] Smol update - Remove background in Branch N0110 --- docs/flowchart.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/flowchart.md b/docs/flowchart.md index 443a80c9..9f991964 100644 --- a/docs/flowchart.md +++ b/docs/flowchart.md @@ -27,6 +27,7 @@ flowchart TD click goto_discord "https://discord.gg/X2TWhh9" subgraph n0110 [Branch N0110] + style n0110 fill:transparent,stroke-width:4px calc_locked_n0110([Your calculator is locked, but you can do other things with it]) calc_unlocked_n0110([Your calculator is unlocked, yay!]) check_version_n0110[Which version ?] From a9090dabdb8a266609666461415e62aea06e6e85 Mon Sep 17 00:00:00 2001 From: Rathmox Date: Wed, 13 Dec 2023 20:55:58 +0100 Subject: [PATCH 40/51] fix categories and Custom OS --- docs/cfw/_category_.json | 4 ++-- docs/no-custom/_category_.json | 2 +- .../current/cfw/_category_.json | 8 ++++++++ .../current/no-custom/_category_.json | 8 ++++++++ 4 files changed, 19 insertions(+), 3 deletions(-) create mode 100644 i18n/fr/docusaurus-plugin-content-docs/current/cfw/_category_.json create mode 100644 i18n/fr/docusaurus-plugin-content-docs/current/no-custom/_category_.json diff --git a/docs/cfw/_category_.json b/docs/cfw/_category_.json index af6f0a6f..6102d6a8 100644 --- a/docs/cfw/_category_.json +++ b/docs/cfw/_category_.json @@ -1,8 +1,8 @@ { - "label": "CFW", + "label": "Custom OS", "position": 5, "link": { "type": "generated-index", - "description": "What is possible with a CFW" + "description": "What is possible with a Custom OS" } } diff --git a/docs/no-custom/_category_.json b/docs/no-custom/_category_.json index db4682b4..c5fae718 100644 --- a/docs/no-custom/_category_.json +++ b/docs/no-custom/_category_.json @@ -1,5 +1,5 @@ { - "label": "No CFW", + "label": "No Custom OS", "position": 4, "link": { "type": "generated-index", diff --git a/i18n/fr/docusaurus-plugin-content-docs/current/cfw/_category_.json b/i18n/fr/docusaurus-plugin-content-docs/current/cfw/_category_.json new file mode 100644 index 00000000..8f815743 --- /dev/null +++ b/i18n/fr/docusaurus-plugin-content-docs/current/cfw/_category_.json @@ -0,0 +1,8 @@ +{ + "label": "OS Custom", + "position": 5, + "link": { + "type": "generated-index", + "description": "Ce qui est possible avec un OS Custom" + } +} diff --git a/i18n/fr/docusaurus-plugin-content-docs/current/no-custom/_category_.json b/i18n/fr/docusaurus-plugin-content-docs/current/no-custom/_category_.json new file mode 100644 index 00000000..09e28d6a --- /dev/null +++ b/i18n/fr/docusaurus-plugin-content-docs/current/no-custom/_category_.json @@ -0,0 +1,8 @@ +{ + "label": "Pas d'OS Custom", + "position": 4, + "link": { + "type": "generated-index", + "description": "Ce que vous pouvez faire avec une calculatrice bloquée" + } +} From aed6bf0357385d4ead589326ea8e8e6a3c4ad565 Mon Sep 17 00:00:00 2001 From: Rathmox Date: Wed, 13 Dec 2023 21:09:15 +0100 Subject: [PATCH 41/51] fix CFW -> Custom OS --- i18n/fr/docusaurus-plugin-content-docs/current.json | 6 +++--- .../current/cfw/_category_.json | 8 -------- .../current/no-custom/_category_.json | 8 -------- 3 files changed, 3 insertions(+), 19 deletions(-) delete mode 100644 i18n/fr/docusaurus-plugin-content-docs/current/cfw/_category_.json delete mode 100644 i18n/fr/docusaurus-plugin-content-docs/current/no-custom/_category_.json diff --git a/i18n/fr/docusaurus-plugin-content-docs/current.json b/i18n/fr/docusaurus-plugin-content-docs/current.json index c9136fe4..954ea576 100644 --- a/i18n/fr/docusaurus-plugin-content-docs/current.json +++ b/i18n/fr/docusaurus-plugin-content-docs/current.json @@ -28,7 +28,7 @@ "description": "The generated-index page description for category Phi in sidebar tutorialSidebar" }, "sidebar.tutorialSidebar.category.No CFW": { - "message": "Pas de CFW", + "message": "Pas d'OS Custom", "description": "The label for category No CFW in sidebar tutorialSidebar" }, "sidebar.tutorialSidebar.category.No CFW.link.generated-index.description": { @@ -36,11 +36,11 @@ "description": "The generated-index page description for category No CFW in sidebar tutorialSidebar" }, "sidebar.tutorialSidebar.category.CFW": { - "message": "CFW", + "message": "OS Custom", "description": "The label for category CFW in sidebar tutorialSidebar" }, "sidebar.tutorialSidebar.category.CFW.link.generated-index.description": { - "message": "Qu'est-il possible avec un CFW ?", + "message": "Qu'est-il possible avec un OS Custom ?", "description": "The generated-index page description for category CFW in sidebar tutorialSidebar" } } diff --git a/i18n/fr/docusaurus-plugin-content-docs/current/cfw/_category_.json b/i18n/fr/docusaurus-plugin-content-docs/current/cfw/_category_.json deleted file mode 100644 index 8f815743..00000000 --- a/i18n/fr/docusaurus-plugin-content-docs/current/cfw/_category_.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "label": "OS Custom", - "position": 5, - "link": { - "type": "generated-index", - "description": "Ce qui est possible avec un OS Custom" - } -} diff --git a/i18n/fr/docusaurus-plugin-content-docs/current/no-custom/_category_.json b/i18n/fr/docusaurus-plugin-content-docs/current/no-custom/_category_.json deleted file mode 100644 index 09e28d6a..00000000 --- a/i18n/fr/docusaurus-plugin-content-docs/current/no-custom/_category_.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "label": "Pas d'OS Custom", - "position": 4, - "link": { - "type": "generated-index", - "description": "Ce que vous pouvez faire avec une calculatrice bloquée" - } -} From 7f9cf09f59336846f2cd72dc8d81550d2bce9298 Mon Sep 17 00:00:00 2001 From: Rathmox Date: Wed, 13 Dec 2023 21:12:24 +0100 Subject: [PATCH 42/51] fix sidebar UX --- docs/n0110/_category_.json | 8 -------- docs/unlock/_category_.json | 8 ++++++++ docs/{n0110 => unlock}/hardware/_category_.json | 0 .../hardware/n0110-hardware-unlock.md | 0 docs/{n0110 => unlock}/n0110-is-locked.md | 0 docs/{n0110 => unlock}/n0110-unlocked.md | 0 docs/{n0110 => unlock}/phi/_category_.json | 0 .../phi/check-version-change-eligibility.md | 0 docs/{n0110 => unlock}/phi/install-epsilon-18-2-0.md | 0 docs/{n0110 => unlock}/phi/phi.md | 0 i18n/fr/docusaurus-plugin-content-docs/current.json | 10 +++++----- 11 files changed, 13 insertions(+), 13 deletions(-) delete mode 100644 docs/n0110/_category_.json create mode 100644 docs/unlock/_category_.json rename docs/{n0110 => unlock}/hardware/_category_.json (100%) rename docs/{n0110 => unlock}/hardware/n0110-hardware-unlock.md (100%) rename docs/{n0110 => unlock}/n0110-is-locked.md (100%) rename docs/{n0110 => unlock}/n0110-unlocked.md (100%) rename docs/{n0110 => unlock}/phi/_category_.json (100%) rename docs/{n0110 => unlock}/phi/check-version-change-eligibility.md (100%) rename docs/{n0110 => unlock}/phi/install-epsilon-18-2-0.md (100%) rename docs/{n0110 => unlock}/phi/phi.md (100%) diff --git a/docs/n0110/_category_.json b/docs/n0110/_category_.json deleted file mode 100644 index 445e94f2..00000000 --- a/docs/n0110/_category_.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "label": "N0110", - "position": 2, - "link": { - "type": "generated-index", - "description": "How to custom your Numworks N0110" - } -} diff --git a/docs/unlock/_category_.json b/docs/unlock/_category_.json new file mode 100644 index 00000000..5a61549b --- /dev/null +++ b/docs/unlock/_category_.json @@ -0,0 +1,8 @@ +{ + "label": "Unlock before installation", + "position": 2, + "link": { + "type": "generated-index", + "description": "How to Unlock your Numworks to allow Custom OS installation" + } +} diff --git a/docs/n0110/hardware/_category_.json b/docs/unlock/hardware/_category_.json similarity index 100% rename from docs/n0110/hardware/_category_.json rename to docs/unlock/hardware/_category_.json diff --git a/docs/n0110/hardware/n0110-hardware-unlock.md b/docs/unlock/hardware/n0110-hardware-unlock.md similarity index 100% rename from docs/n0110/hardware/n0110-hardware-unlock.md rename to docs/unlock/hardware/n0110-hardware-unlock.md diff --git a/docs/n0110/n0110-is-locked.md b/docs/unlock/n0110-is-locked.md similarity index 100% rename from docs/n0110/n0110-is-locked.md rename to docs/unlock/n0110-is-locked.md diff --git a/docs/n0110/n0110-unlocked.md b/docs/unlock/n0110-unlocked.md similarity index 100% rename from docs/n0110/n0110-unlocked.md rename to docs/unlock/n0110-unlocked.md diff --git a/docs/n0110/phi/_category_.json b/docs/unlock/phi/_category_.json similarity index 100% rename from docs/n0110/phi/_category_.json rename to docs/unlock/phi/_category_.json diff --git a/docs/n0110/phi/check-version-change-eligibility.md b/docs/unlock/phi/check-version-change-eligibility.md similarity index 100% rename from docs/n0110/phi/check-version-change-eligibility.md rename to docs/unlock/phi/check-version-change-eligibility.md diff --git a/docs/n0110/phi/install-epsilon-18-2-0.md b/docs/unlock/phi/install-epsilon-18-2-0.md similarity index 100% rename from docs/n0110/phi/install-epsilon-18-2-0.md rename to docs/unlock/phi/install-epsilon-18-2-0.md diff --git a/docs/n0110/phi/phi.md b/docs/unlock/phi/phi.md similarity index 100% rename from docs/n0110/phi/phi.md rename to docs/unlock/phi/phi.md diff --git a/i18n/fr/docusaurus-plugin-content-docs/current.json b/i18n/fr/docusaurus-plugin-content-docs/current.json index 954ea576..9be8ecde 100644 --- a/i18n/fr/docusaurus-plugin-content-docs/current.json +++ b/i18n/fr/docusaurus-plugin-content-docs/current.json @@ -3,13 +3,13 @@ "message": "Next", "description": "The label for version current" }, - "sidebar.tutorialSidebar.category.N0110": { - "message": "N0110", + "sidebar.tutorialSidebar.category.unlock": { + "message": "Débloquage avant installation", "description": "The label for category N0110 in sidebar tutorialSidebar" }, - "sidebar.tutorialSidebar.category.N0110.link.generated-index.description": { - "message": "Comment personnaliser sa Numworks N0110", - "description": "The generated-index page description for category N0110 in sidebar tutorialSidebar" + "sidebar.tutorialSidebar.category.unlock.link.generated-index.description": { + "message": "Comment débloquer sa Numworks pour installer un OS Custom", + "description": "The generated-index page description for category unlock in sidebar tutorialSidebar" }, "sidebar.tutorialSidebar.category.Hardware method": { "message": "Méthode Hardware", From e41ae9051a45cedbca663cf2142ee4c1ff1f0ef6 Mon Sep 17 00:00:00 2001 From: Bloomy <90511192+BloomyInDev@users.noreply.github.com> Date: Wed, 13 Dec 2023 21:30:11 +0100 Subject: [PATCH 43/51] Fix flowchart and translation - Update flowchart to be translated - Fix translation problems --- i18n/fr/code.json | 2 +- .../current.json | 34 +++++----- .../current/flowchart.md | 68 ++++++++----------- .../hardware/n0110-hardware-unlock.md | 4 +- .../{n0110 => unlock}/n0110-is-locked.md | 0 .../{n0110 => unlock}/n0110-unlocked.md | 2 +- .../phi/check-version-change-eligibility.md | 0 .../phi/install-epsilon-18-2-0.md | 0 .../current/{n0110 => unlock}/phi/phi.md | 2 +- 9 files changed, 51 insertions(+), 61 deletions(-) rename i18n/fr/docusaurus-plugin-content-docs/current/{n0110 => unlock}/hardware/n0110-hardware-unlock.md (89%) rename i18n/fr/docusaurus-plugin-content-docs/current/{n0110 => unlock}/n0110-is-locked.md (100%) rename i18n/fr/docusaurus-plugin-content-docs/current/{n0110 => unlock}/n0110-unlocked.md (83%) rename i18n/fr/docusaurus-plugin-content-docs/current/{n0110 => unlock}/phi/check-version-change-eligibility.md (100%) rename i18n/fr/docusaurus-plugin-content-docs/current/{n0110 => unlock}/phi/install-epsilon-18-2-0.md (100%) rename i18n/fr/docusaurus-plugin-content-docs/current/{n0110 => unlock}/phi/phi.md (98%) diff --git a/i18n/fr/code.json b/i18n/fr/code.json index 3848a282..c31acd94 100644 --- a/i18n/fr/code.json +++ b/i18n/fr/code.json @@ -271,7 +271,7 @@ "description": "The title of the tag list page" }, "home.page.tagline": { - "message":"Tout pour prendre le contrôle de votre calculatrice" + "message": "Tout pour prendre le contrôle de votre calculatrice" }, "home.page.cfw.title": { "message": "CFW" diff --git a/i18n/fr/docusaurus-plugin-content-docs/current.json b/i18n/fr/docusaurus-plugin-content-docs/current.json index 9be8ecde..d61b24ca 100644 --- a/i18n/fr/docusaurus-plugin-content-docs/current.json +++ b/i18n/fr/docusaurus-plugin-content-docs/current.json @@ -3,14 +3,6 @@ "message": "Next", "description": "The label for version current" }, - "sidebar.tutorialSidebar.category.unlock": { - "message": "Débloquage avant installation", - "description": "The label for category N0110 in sidebar tutorialSidebar" - }, - "sidebar.tutorialSidebar.category.unlock.link.generated-index.description": { - "message": "Comment débloquer sa Numworks pour installer un OS Custom", - "description": "The generated-index page description for category unlock in sidebar tutorialSidebar" - }, "sidebar.tutorialSidebar.category.Hardware method": { "message": "Méthode Hardware", "description": "The label for category Hardware method in sidebar tutorialSidebar" @@ -27,20 +19,28 @@ "message": "Débloquez votre calculatrice facilement avec Phi", "description": "The generated-index page description for category Phi in sidebar tutorialSidebar" }, - "sidebar.tutorialSidebar.category.No CFW": { + "sidebar.tutorialSidebar.category.Unlock before installation": { + "message": "Débloquer avant installation", + "description": "The label for category Unlock before installation in sidebar tutorialSidebar" + }, + "sidebar.tutorialSidebar.category.Unlock before installation.link.generated-index.description": { + "message": "Comment débloquer sa Numworks pour installer un OS Custom", + "description": "The generated-index page description for category Unlock before installation in sidebar tutorialSidebar" + }, + "sidebar.tutorialSidebar.category.No Custom OS": { "message": "Pas d'OS Custom", - "description": "The label for category No CFW in sidebar tutorialSidebar" + "description": "The label for category No Custom OS in sidebar tutorialSidebar" }, - "sidebar.tutorialSidebar.category.No CFW.link.generated-index.description": { - "message": "Qu'est ce que vous pouvez faire avec une calculatrice bloquée", - "description": "The generated-index page description for category No CFW in sidebar tutorialSidebar" + "sidebar.tutorialSidebar.category.No Custom OS.link.generated-index.description": { + "message": "What you can do with a locked calculator", + "description": "The generated-index page description for category No Custom OS in sidebar tutorialSidebar" }, - "sidebar.tutorialSidebar.category.CFW": { + "sidebar.tutorialSidebar.category.Custom OS": { "message": "OS Custom", - "description": "The label for category CFW in sidebar tutorialSidebar" + "description": "The label for category Custom OS in sidebar tutorialSidebar" }, - "sidebar.tutorialSidebar.category.CFW.link.generated-index.description": { + "sidebar.tutorialSidebar.category.Custom OS.link.generated-index.description": { "message": "Qu'est-il possible avec un OS Custom ?", - "description": "The generated-index page description for category CFW in sidebar tutorialSidebar" + "description": "The generated-index page description for category Custom OS in sidebar tutorialSidebar" } } diff --git a/i18n/fr/docusaurus-plugin-content-docs/current/flowchart.md b/i18n/fr/docusaurus-plugin-content-docs/current/flowchart.md index a2f74c74..1cb5f513 100644 --- a/i18n/fr/docusaurus-plugin-content-docs/current/flowchart.md +++ b/i18n/fr/docusaurus-plugin-content-docs/current/flowchart.md @@ -5,62 +5,52 @@ pagination_next: null pagination_prev: null --- -## Branche principale - ```mermaid flowchart TD - calc_unlocked([Votre calculatrice est débloquée, yay!]) - calc_locked([Ce que vous pouvez faire sans OS custom]) - start([Début]) --> want_cfw[Vous voulez un OS custom ?] - want_cfw --Non--> calc_locked - want_cfw --Oui--> model_number[Regardez le numéro de modèle] + calc_unlocked([Votre calculatrice est débloquée, youpi!]) + calc_locked_no_modif([Ce que vous pouvez faire sans un Custom OS]) + start([Start]) --> want_cfw[Vous voulez un Custom OS ?] + style start stroke:#00f500,stroke-width:4px + want_cfw --Non--> calc_locked_no_modif + want_cfw --->|Oui| model_number[Quel modèle de Numworks ?] model_number --N0100--> calc_unlocked - model_number --N0110--> branch_N0110{{Allez à la branche N0110}} - model_number --N0115 ou N0120--> branch_new_calcs{{Allez à la branche N0115 & N0120}} - model_number --Autre--> goto_discord([Rejoignez le serveur Discord d'Omega]) + model_number ---->|N0110| check_version_n0110 + model_number ---->|N0115 or N0120| calc_locked_new_calcs + model_number --Other--> goto_discord([Aller sur le Discord Omega]) click model_number "./intro" - click calc_locked "./no-custom/what-to-do-locked" + click calc_locked_no_modif "./no-custom/what-to-do-locked" click calc_unlocked "./cfw/choose-a-cfw" click goto_discord "https://discord.gg/X2TWhh9" - click branch_N0110 "#n0110" - click branch_new_calcs "#new-calcs" -``` - -## Branche N0110 {#n0110} -```mermaid -flowchart TD - calc_unlocked([Votre calculatrice est débloquée, yay!]) - calc_locked([Votre calculatrice est bloquée, mais vous pouvez faire d'autre choses avec]) - start{{Branche N0110}} --> check_version[Quelle version ?] - check_version --11.2.0 à 16.2.0--> calc_unlocked - check_version ==16.3.0 à 16.4.2\n17.0.0 to 18.2.0==> phi[Utilisez Phi] - check_version --16.4.3 ou 18.2.3--> install_18_2_0[Installez Epsilon 18.2.0] - check_version --19.0.0 à 21.3.0--> downgrade_check[Vérifiez l'éligibilité] + subgraph n0110 [Branche N0110] + style n0110 fill:transparent,stroke-width:4px + calc_locked_n0110([Votre calculatrice est bloquée, mais vous pouvez faire d'autres choses avec]) + calc_unlocked_n0110([Votre calculatrice est débloquée, youpi!]) + check_version_n0110[Quelle version ?] + check_version_n0110 --11.2.0 à 16.2.0--> calc_unlocked_n0110 + check_version_n0110 ==16.3.0 à 16.4.2\n17.0.0 à 18.2.0==> phi[Utilisez Phi] + check_version_n0110 --16.4.3 ou 18.2.3--> install_18_2_0[Installez Epsilon 18.2.0] + check_version_n0110 --19.0.0 à 21.3.0--> downgrade_check[Verifiez l'éligibilité au downgrade] downgrade_check --Eligible--> install_18_2_0 - downgrade_check --Non eligible--> downgrade_fail(( )) --Ouvrir la calculatrice--> hardware_method[Suivez la méthode matérielle] - downgrade_fail --Vous ne voulez pas ouvrir votre calculatrice--> calc_locked + downgrade_check --No éligible--> downgrade_fail(( )) --Ouvrir la calculatruce--> hardware_method[Suivez la méthode hardware] + downgrade_fail --Ne veut pas ouvrir la calculatrice--> calc_locked_n0110 install_18_2_0 --> phi - phi & hardware_method --> calc_unlocked + phi & hardware_method --> calc_unlocked_n0110 - click check_version "./n0110/n0110-is-locked" + click check_version_n0110 "./n0110/n0110-is-locked" click downgrade_check "./n0110/phi/check-version-change-eligibility" click install_18_2_0 "./n0110/phi/install-epsilon-18-2-0" click phi "./n0110/phi" click hardware_method "./n0110/hardware/n0110-hardware-unlock" - click calc_locked "./no-custom/what-to-do-locked" - click calc_unlocked "./cfw/choose-a-cfw" -``` + click calc_locked_n0110 "./no-custom/what-to-do-locked" + click calc_unlocked_n0110 "./cfw/choose-a-cfw" -## Branche N0115 & N0120 {#new-calcs} + end -```mermaid -flowchart TD - calc_locked([Votre calculatrice est bloquée, mais vous pouvez faire d'autre choses avec]) - start{{Branche N0115 & N0120}} --> calc_locked + calc_locked_new_calcs([Votre calculatrice est bloquée, mais vous pouvez faire d'autres choses avec]) - click calc_locked "./no-custom/what-to-do-locked" -``` + click calc_locked_new_calcs "./no-custom/what-to-do-locked" +``` \ No newline at end of file diff --git a/i18n/fr/docusaurus-plugin-content-docs/current/n0110/hardware/n0110-hardware-unlock.md b/i18n/fr/docusaurus-plugin-content-docs/current/unlock/hardware/n0110-hardware-unlock.md similarity index 89% rename from i18n/fr/docusaurus-plugin-content-docs/current/n0110/hardware/n0110-hardware-unlock.md rename to i18n/fr/docusaurus-plugin-content-docs/current/unlock/hardware/n0110-hardware-unlock.md index 5958bfb8..9d5e7b33 100644 --- a/i18n/fr/docusaurus-plugin-content-docs/current/n0110/hardware/n0110-hardware-unlock.md +++ b/i18n/fr/docusaurus-plugin-content-docs/current/unlock/hardware/n0110-hardware-unlock.md @@ -1,8 +1,8 @@ --- title: "Débloquage Hardware (N0110)" sidebar_position: 1 -pagination_next: n0110/n0110-unlocked -pagination_prev: n0110/n0110-is-locked +pagination_next: unlock/n0110-unlocked +pagination_prev: unlock/n0110-is-locked --- ### Lecture obligatoire diff --git a/i18n/fr/docusaurus-plugin-content-docs/current/n0110/n0110-is-locked.md b/i18n/fr/docusaurus-plugin-content-docs/current/unlock/n0110-is-locked.md similarity index 100% rename from i18n/fr/docusaurus-plugin-content-docs/current/n0110/n0110-is-locked.md rename to i18n/fr/docusaurus-plugin-content-docs/current/unlock/n0110-is-locked.md diff --git a/i18n/fr/docusaurus-plugin-content-docs/current/n0110/n0110-unlocked.md b/i18n/fr/docusaurus-plugin-content-docs/current/unlock/n0110-unlocked.md similarity index 83% rename from i18n/fr/docusaurus-plugin-content-docs/current/n0110/n0110-unlocked.md rename to i18n/fr/docusaurus-plugin-content-docs/current/unlock/n0110-unlocked.md index 8870a098..f7f5c2b0 100644 --- a/i18n/fr/docusaurus-plugin-content-docs/current/n0110/n0110-unlocked.md +++ b/i18n/fr/docusaurus-plugin-content-docs/current/unlock/n0110-unlocked.md @@ -1,7 +1,7 @@ --- title: "Débloqué (N0110)" pagination_next: cfw/choose-a-cfw -pagination_prev: n0110/n0110-is-locked +pagination_prev: unlock/n0110-is-locked --- Votre calculatrice est débloquée, yay! diff --git a/i18n/fr/docusaurus-plugin-content-docs/current/n0110/phi/check-version-change-eligibility.md b/i18n/fr/docusaurus-plugin-content-docs/current/unlock/phi/check-version-change-eligibility.md similarity index 100% rename from i18n/fr/docusaurus-plugin-content-docs/current/n0110/phi/check-version-change-eligibility.md rename to i18n/fr/docusaurus-plugin-content-docs/current/unlock/phi/check-version-change-eligibility.md diff --git a/i18n/fr/docusaurus-plugin-content-docs/current/n0110/phi/install-epsilon-18-2-0.md b/i18n/fr/docusaurus-plugin-content-docs/current/unlock/phi/install-epsilon-18-2-0.md similarity index 100% rename from i18n/fr/docusaurus-plugin-content-docs/current/n0110/phi/install-epsilon-18-2-0.md rename to i18n/fr/docusaurus-plugin-content-docs/current/unlock/phi/install-epsilon-18-2-0.md diff --git a/i18n/fr/docusaurus-plugin-content-docs/current/n0110/phi/phi.md b/i18n/fr/docusaurus-plugin-content-docs/current/unlock/phi/phi.md similarity index 98% rename from i18n/fr/docusaurus-plugin-content-docs/current/n0110/phi/phi.md rename to i18n/fr/docusaurus-plugin-content-docs/current/unlock/phi/phi.md index 79e36699..661a05eb 100644 --- a/i18n/fr/docusaurus-plugin-content-docs/current/n0110/phi/phi.md +++ b/i18n/fr/docusaurus-plugin-content-docs/current/unlock/phi/phi.md @@ -1,7 +1,7 @@ --- title: "Installer Phi" sidebar_position: 3 -pagination_next: n0110/n0110-unlocked +pagination_next: unlock/n0110-unlocked --- ### Lecture obligatoire From 11bed024f0045f25d8463fc1d99ef6171ce2fc6b Mon Sep 17 00:00:00 2001 From: Bloomy <90511192+BloomyInDev@users.noreply.github.com> Date: Wed, 13 Dec 2023 21:41:11 +0100 Subject: [PATCH 44/51] Fix some error due to file moving - Fix error and broken links --- docs/flowchart.md | 10 +++++----- docs/intro.md | 2 +- docs/troubleshooting.md | 2 +- docs/unlock/hardware/n0110-hardware-unlock.md | 4 ++-- docs/unlock/n0110-is-locked.md | 2 +- docs/unlock/n0110-unlocked.md | 2 +- docs/unlock/phi/check-version-change-eligibility.md | 6 +++--- docs/unlock/phi/install-epsilon-18-2-0.md | 2 +- docs/unlock/phi/phi.md | 4 ++-- .../current/flowchart.md | 12 ++++++------ .../docusaurus-plugin-content-docs/current/intro.md | 2 +- .../current/troubleshooting.md | 2 +- .../current/unlock/n0110-is-locked.md | 2 +- .../unlock/phi/check-version-change-eligibility.md | 6 +++--- .../current/unlock/phi/install-epsilon-18-2-0.md | 4 ++-- .../current/unlock/phi/phi.md | 2 +- 16 files changed, 32 insertions(+), 32 deletions(-) diff --git a/docs/flowchart.md b/docs/flowchart.md index 9f991964..7f954b1f 100644 --- a/docs/flowchart.md +++ b/docs/flowchart.md @@ -41,11 +41,11 @@ flowchart TD install_18_2_0 --> phi phi & hardware_method --> calc_unlocked_n0110 - click check_version_n0110 "./n0110/n0110-is-locked" - click downgrade_check "./n0110/phi/check-version-change-eligibility" - click install_18_2_0 "./n0110/phi/install-epsilon-18-2-0" - click phi "./n0110/phi" - click hardware_method "./n0110/hardware/n0110-hardware-unlock" + click check_version_n0110 "./unlock/n0110-is-locked" + click downgrade_check "./unlock/phi/check-version-change-eligibility" + click install_18_2_0 "./unlock/phi/install-epsilon-18-2-0" + click phi "./unlock/phi" + click hardware_method "./unlock/hardware/n0110-hardware-unlock" click calc_locked_n0110 "./no-custom/what-to-do-locked" click calc_unlocked_n0110 "./cfw/choose-a-cfw" diff --git a/docs/intro.md b/docs/intro.md index 724a33ae..081733b4 100644 --- a/docs/intro.md +++ b/docs/intro.md @@ -45,5 +45,5 @@ If you don't want to deeply modify your calculator, [there are still a few thing | Calculator Model | What to do | |------------------|-------------------------------------------------------------------------------------------------| | N0100 | [Your calculator is already unlocked. Choose a Custom OS](/docs/cfw/choose-a-cfw) | -| N0110 | [Check if your calculator is locked](/docs/n0110/n0110-is-locked) | +| N0110 | [Check if your calculator is locked](/docs/unlock/n0110-is-locked) | | N0115 - N0120 | [You can't install a Custom OS on it. But there are still a few things you can do](/docs/no-custom/what-to-do-locked) | diff --git a/docs/troubleshooting.md b/docs/troubleshooting.md index 7e07cdc6..9cfaa3f9 100644 --- a/docs/troubleshooting.md +++ b/docs/troubleshooting.md @@ -15,7 +15,7 @@ Your calculator is in Recovery mode, it's waiting to receive a firmware, so it's This is Numworks' bootloader. It shows up when the calculator is locked and you started the Recovery mode by holding 6 and pressing reset, or when the calculator couldn't start. -If you want to unlock your calculator, don't go to the `numworks.com/rescue` website, but follow the guide from [Installing Epsilon 18.2.0](/docs/n0110/phi/install-epsilon-18-2-0). +If you want to unlock your calculator, don't go to the `numworks.com/rescue` website, but follow the guide from [Installing Epsilon 18.2.0](/docs/unlock/phi/install-epsilon-18-2-0). ### Black screen, nothing else diff --git a/docs/unlock/hardware/n0110-hardware-unlock.md b/docs/unlock/hardware/n0110-hardware-unlock.md index c9616ef9..6b265b01 100644 --- a/docs/unlock/hardware/n0110-hardware-unlock.md +++ b/docs/unlock/hardware/n0110-hardware-unlock.md @@ -1,8 +1,8 @@ --- title: "Hardware unlock (N0110)" sidebar_position: 1 -pagination_next: n0110/n0110-unlocked -pagination_prev: n0110/n0110-is-locked +pagination_next: unlock/n0110-unlocked +pagination_prev: unlock/n0110-is-locked --- ### Requiered reading diff --git a/docs/unlock/n0110-is-locked.md b/docs/unlock/n0110-is-locked.md index a44f47f6..7687b52c 100644 --- a/docs/unlock/n0110-is-locked.md +++ b/docs/unlock/n0110-is-locked.md @@ -26,7 +26,7 @@ If you see a screen like this one, you can proceed : :::caution -If the screen stays black and the LED turns red, STOP - your calculator is already unlocked! Continue from [here](/docs/n0110/n0110-unlocked). +If the screen stays black and the LED turns red, STOP - your calculator is already unlocked! Continue from [here](/docs/unlock/n0110-unlocked). ::: diff --git a/docs/unlock/n0110-unlocked.md b/docs/unlock/n0110-unlocked.md index ba9abcf5..00e057cb 100644 --- a/docs/unlock/n0110-unlocked.md +++ b/docs/unlock/n0110-unlocked.md @@ -1,7 +1,7 @@ --- title: "Unlocked (N0110)" pagination_next: cfw/choose-a-cfw -pagination_prev: n0110/n0110-is-locked +pagination_prev: unlock/n0110-is-locked --- Your Numworks is unlocked, yay! diff --git a/docs/unlock/phi/check-version-change-eligibility.md b/docs/unlock/phi/check-version-change-eligibility.md index 08c5e09f..4c406412 100644 --- a/docs/unlock/phi/check-version-change-eligibility.md +++ b/docs/unlock/phi/check-version-change-eligibility.md @@ -9,11 +9,11 @@ You may need to change Epsilon's version to unlock your calculator, we usually i ### If you have Epsilon 15 or lower -You don't need to change your version, just go to [Now What ?](/docs/n0110/n0110-unlocked) +You don't need to change your version, just go to [Now What ?](/docs/unlock/n0110-unlocked) ### If you have Epsilon 16 to 18.2.0 (but not 16.4.3) -You don't need to change your version, just go to [Phi](/docs/n0110/phi) +You don't need to change your version, just go to [Phi](/docs/unlock/phi) ### If you have Epsilon 16.4.3 or 18.2.3 @@ -36,6 +36,6 @@ ___ :::info -If you are not eligible, you need to use an [Alternate Method](/docs/n0110/n0110-is-locked#alt-methods) +If you are not eligible, you need to use an [Alternate Method](/docs/unlock/n0110-is-locked#alt-methods) ::: diff --git a/docs/unlock/phi/install-epsilon-18-2-0.md b/docs/unlock/phi/install-epsilon-18-2-0.md index 25c69beb..b4a5222f 100644 --- a/docs/unlock/phi/install-epsilon-18-2-0.md +++ b/docs/unlock/phi/install-epsilon-18-2-0.md @@ -9,7 +9,7 @@ We will now install Epsilon 18.2.0 :::info -If you are not sure if you can install Epsilon 18.2.0, go check [this page](/docs/n0110/phi/check-version-change-eligibility) +If you are not sure if you can install Epsilon 18.2.0, go check [this page](/docs/unlock/phi/check-version-change-eligibility) ::: diff --git a/docs/unlock/phi/phi.md b/docs/unlock/phi/phi.md index ceacf19a..7d6ef513 100644 --- a/docs/unlock/phi/phi.md +++ b/docs/unlock/phi/phi.md @@ -1,7 +1,7 @@ --- title: "Installing Phi" sidebar_position: 3 -pagination_next: n0110/n0110-unlocked +pagination_next: unlock/n0110-unlocked --- ### Required Reading @@ -33,7 +33,7 @@ The exploit used at the moment is compatible with Epsilon 16.3.0 trough 18.2.0. ![Phi launch screen](/img/phi-launch.png) :::info -If the screen turns Yellow, the version or Epsilon you're using isn't yet supported. You may need to [change your version](/docs/n0110/phi/check-version-change-eligibility). +If the screen turns Yellow, the version or Epsilon you're using isn't yet supported. You may need to [change your version](/docs/unlock/phi/check-version-change-eligibility). ::: :::caution diff --git a/i18n/fr/docusaurus-plugin-content-docs/current/flowchart.md b/i18n/fr/docusaurus-plugin-content-docs/current/flowchart.md index 1cb5f513..5587d9d3 100644 --- a/i18n/fr/docusaurus-plugin-content-docs/current/flowchart.md +++ b/i18n/fr/docusaurus-plugin-content-docs/current/flowchart.md @@ -17,7 +17,7 @@ flowchart TD model_number --N0100--> calc_unlocked model_number ---->|N0110| check_version_n0110 - model_number ---->|N0115 or N0120| calc_locked_new_calcs + model_number ---->|N0115 ou N0120| calc_locked_new_calcs model_number --Other--> goto_discord([Aller sur le Discord Omega]) click model_number "./intro" @@ -40,11 +40,11 @@ flowchart TD install_18_2_0 --> phi phi & hardware_method --> calc_unlocked_n0110 - click check_version_n0110 "./n0110/n0110-is-locked" - click downgrade_check "./n0110/phi/check-version-change-eligibility" - click install_18_2_0 "./n0110/phi/install-epsilon-18-2-0" - click phi "./n0110/phi" - click hardware_method "./n0110/hardware/n0110-hardware-unlock" + click check_version_n0110 "./unlock/n0110-is-locked" + click downgrade_check "./unlock/phi/check-version-change-eligibility" + click install_18_2_0 "./unlock/phi/install-epsilon-18-2-0" + click phi "./unlock/phi" + click hardware_method "./unlock/hardware/n0110-hardware-unlock" click calc_locked_n0110 "./no-custom/what-to-do-locked" click calc_unlocked_n0110 "./cfw/choose-a-cfw" diff --git a/i18n/fr/docusaurus-plugin-content-docs/current/intro.md b/i18n/fr/docusaurus-plugin-content-docs/current/intro.md index 491f14fb..f566b7c7 100644 --- a/i18n/fr/docusaurus-plugin-content-docs/current/intro.md +++ b/i18n/fr/docusaurus-plugin-content-docs/current/intro.md @@ -43,5 +43,5 @@ Si vous ne voulez pas profondément modifier votre calculatrice, [il y a toujour | Modèle de calculatrice | Que faut-il faire ? | |------------------|----------------------------------------------------------------| | N0100 | [Votre calculatrice est déja dévérouillée, choisisez un OS Custom](/docs/cfw/choose-a-cfw) | -| N0110 | [Vérifiez si votre calculatrice est verrouillée](/docs/n0110/n0110-is-locked) | +| N0110 | [Vérifiez si votre calculatrice est verrouillée](/docs/unlock/n0110-is-locked) | | N0115 - N0120 | [Vous ne pouvez pas installer d'OS Custom dessus. Mais il y a toujours certaines choses que vous pouvez faire](/docs/no-custom/what-to-do-locked) | diff --git a/i18n/fr/docusaurus-plugin-content-docs/current/troubleshooting.md b/i18n/fr/docusaurus-plugin-content-docs/current/troubleshooting.md index e1110bb3..7e13f076 100644 --- a/i18n/fr/docusaurus-plugin-content-docs/current/troubleshooting.md +++ b/i18n/fr/docusaurus-plugin-content-docs/current/troubleshooting.md @@ -16,7 +16,7 @@ Tout va bien : un écran noir et une led rouge signifient que votre calculatrice C'est l'écran du bootloader de Numworks. Il s'affiche quand la calculatrice est verrouillée (blocage de l'installation des OS Custom) et que vous avez lancé le mode recovery en maintenant 6 et en appuyant sur reset. Il s'affiche également quand la calculatrice n'a pas pu démarrer. -Si vous souhaitez débloquer votre calculatrice, n'allez pas sur le site `numworks.com/rescue`, mais suivez le guide à partir de [l'installation d'Epsilon 18.2.0](/docs/n0110/phi/install-epsilon-18-2-0). +Si vous souhaitez débloquer votre calculatrice, n'allez pas sur le site `numworks.com/rescue`, mais suivez le guide à partir de [l'installation d'Epsilon 18.2.0](/docs/unlock/phi/install-epsilon-18-2-0). ### Écran noir, rien d'autre diff --git a/i18n/fr/docusaurus-plugin-content-docs/current/unlock/n0110-is-locked.md b/i18n/fr/docusaurus-plugin-content-docs/current/unlock/n0110-is-locked.md index 0e947742..68c67333 100644 --- a/i18n/fr/docusaurus-plugin-content-docs/current/unlock/n0110-is-locked.md +++ b/i18n/fr/docusaurus-plugin-content-docs/current/unlock/n0110-is-locked.md @@ -27,7 +27,7 @@ Si vous voyez un écran comme celui-ci, vous pouvez procéder : :::caution -Si l'écran reste noir et que la LED devient rouge, **STOP** - votre calculatrice est déjà déverrouillée ! Continuez à partir d'[ici](/docs/n0110/n0110-unlocked). +Si l'écran reste noir et que la LED devient rouge, **STOP** - votre calculatrice est déjà déverrouillée ! Continuez à partir d'[ici](/docs/unlock/n0110-unlocked). ::: diff --git a/i18n/fr/docusaurus-plugin-content-docs/current/unlock/phi/check-version-change-eligibility.md b/i18n/fr/docusaurus-plugin-content-docs/current/unlock/phi/check-version-change-eligibility.md index 3f5de718..5bc27139 100644 --- a/i18n/fr/docusaurus-plugin-content-docs/current/unlock/phi/check-version-change-eligibility.md +++ b/i18n/fr/docusaurus-plugin-content-docs/current/unlock/phi/check-version-change-eligibility.md @@ -9,11 +9,11 @@ Vous pourriez avoir besoin de changer la version de votre calculatrice, nous ins ### Si vous avez Epsilon 15 et avant -Vous n'avez pas besoin de changer de version, continuez vers [Et maintenant ?](/docs/n0110/n0110-unlocked) +Vous n'avez pas besoin de changer de version, continuez vers [Et maintenant ?](/docs/unlock/n0110-unlocked) ### Si vous avez Epsilon 16 à 18.2.0 (mais pas 16.4.3) -Vous n'avez pas besoin de changer de version, continuez vers [Phi](/docs/n0110/phi) +Vous n'avez pas besoin de changer de version, continuez vers [Phi](/docs/unlock/phi) ### Si vous avez Epsilon 16.4.3 ou 18.2.3 @@ -35,5 +35,5 @@ Si vous n'étiez pas éligible, après la manipulation, la calculatrice sera blo --- :::info -Si vous n'êtes pas éligible, vous pouvez utiliser la [methode alternative](/docs/n0110/n0110-is-locked#alt-methods) +Si vous n'êtes pas éligible, vous pouvez utiliser la [methode alternative](/docs/unlock/n0110-is-locked#alt-methods) ::: diff --git a/i18n/fr/docusaurus-plugin-content-docs/current/unlock/phi/install-epsilon-18-2-0.md b/i18n/fr/docusaurus-plugin-content-docs/current/unlock/phi/install-epsilon-18-2-0.md index 3bb63a2f..aacfa8dd 100644 --- a/i18n/fr/docusaurus-plugin-content-docs/current/unlock/phi/install-epsilon-18-2-0.md +++ b/i18n/fr/docusaurus-plugin-content-docs/current/unlock/phi/install-epsilon-18-2-0.md @@ -8,7 +8,7 @@ sidebar_position: 2 Nous allons maintenant installer Epsilon 18.2.0 :::info -Si vous n'êtes pas sur que vous puissiez installer Epsilon 18.2.0, allez voir [cette page](/docs/n0110/phi/check-version-change-eligibility) +Si vous n'êtes pas sur que vous puissiez installer Epsilon 18.2.0, allez voir [cette page](/docs/unlock/phi/check-version-change-eligibility) ::: ### Ce dont vous avez besoin @@ -44,6 +44,6 @@ Vous devriez maintenant voir la version 18.2.0 dans Paramètres > À propos. :::caution -Si ce n'est pas le cas ou que votre Numworks ne démarre pas, vous pouvez toujours utiliser une [méthode alternative](/docs/n0110/n0110-is-locked#alternate-methods). +Si ce n'est pas le cas ou que votre Numworks ne démarre pas, vous pouvez toujours utiliser une [méthode alternative](/docs/unlock/n0110-is-locked#alternate-methods). ::: diff --git a/i18n/fr/docusaurus-plugin-content-docs/current/unlock/phi/phi.md b/i18n/fr/docusaurus-plugin-content-docs/current/unlock/phi/phi.md index 661a05eb..d884e728 100644 --- a/i18n/fr/docusaurus-plugin-content-docs/current/unlock/phi/phi.md +++ b/i18n/fr/docusaurus-plugin-content-docs/current/unlock/phi/phi.md @@ -33,7 +33,7 @@ L'exploit utilisé pour le moment est compatible avec Epsilon 16.3.0 à 18.2.0. ![Phi launch screen](/img/phi-launch.png) :::info -Si l'écran devient jaune, la version d'Epsilon que vous utilisez n'est pas encore prise en charge. Vous pourriez avoir besoin de [changer de version](/docs/n0110/phi/check-version-change-eligibility). +Si l'écran devient jaune, la version d'Epsilon que vous utilisez n'est pas encore prise en charge. Vous pourriez avoir besoin de [changer de version](/docs/unlock/phi/check-version-change-eligibility). ::: :::caution From 1ab458692b667a6546888233bd36d6f609d73471 Mon Sep 17 00:00:00 2001 From: Rathmox Date: Wed, 13 Dec 2023 22:00:23 +0100 Subject: [PATCH 45/51] fix driver link --- docs/troubleshooting.md | 4 ++-- .../docusaurus-plugin-content-docs/current/troubleshooting.md | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/troubleshooting.md b/docs/troubleshooting.md index 9cfaa3f9..fe6d8717 100644 --- a/docs/troubleshooting.md +++ b/docs/troubleshooting.md @@ -37,7 +37,7 @@ There are 2 possible reasons: it means the driver or config file isn't installed on Windows or Linux. -Open the [Update page](https://numworks.com/update/) on Numworks' website and it will give it and tell you how to install it. **Don't plug in your calculator to make sure you don't lock it** +Open the [Rescue page](https://numworks.com/rescue/) on Numworks' website and it will give it and tell you how to install it. **Don't plug in your calculator to make sure you don't lock it** If you are using Linux, it may still not be detected. It can happen if your web browser is installed as a flatpak. @@ -114,7 +114,7 @@ You may not be using the right WebDFU, make sure you are using [TI-Planet's WebD This can happen on Windows and Linux: - On Linux it means you haven't installed the config file, [Numworks' update page](https://numworks.com/update/) will give it to you. - On Windows it means you are in recovery mode and the wrong driver is selected, there are a few steps you can follow to fix this - 1. If it's not installed, install the driver from [Numworks' update page](https://numworks.com/update/) + 1. If it's not installed, install the driver from [Numworks' rescue page](https://numworks.com/rescue/) 2. Open Device manager, press Win+R, type `devmgmt.msc`, and press enter 3. Search for a device with STM in the name 4. Right click on it, and press "Update Driver" diff --git a/i18n/fr/docusaurus-plugin-content-docs/current/troubleshooting.md b/i18n/fr/docusaurus-plugin-content-docs/current/troubleshooting.md index 7e13f076..3f669ccc 100644 --- a/i18n/fr/docusaurus-plugin-content-docs/current/troubleshooting.md +++ b/i18n/fr/docusaurus-plugin-content-docs/current/troubleshooting.md @@ -122,7 +122,7 @@ Vous n'utilisez peut-être pas le bon WebDFU, vérifiez que vous utiliser le [We Cela peut arriver sur Windows et Linux - Sur Linux ça veut dire que vous n'avez pas installé le fichier de configuration, [La page de mise à jour Numworks](https://numworks.com/update/) vous le donnera - Sur Windows cela veut dire que vous êtes en mode Recovery et que le mauvais driver est sélectionné, il y a quelques étapes que vous pouvez suivre pour régler ça. - 1. S'il n'est pas installé, installez le driver depuis [La page de mise à jour Numworks](https://numworks.com/update/) + 1. S'il n'est pas installé, installez le driver depuis [La page de récupération Numworks](https://numworks.com/rescue/) 2. Ouvrez le Gestionnaire de Périphériques, appuyez sur Win+R, tappez `devmgmt.msc`, et appuyez sur Entrée 3. Recherchez un appareil avec "STM" dans le nom 4. Faites clic droit dessus, et cliquez sur "Mettre à jour le driver" From 692469def69eafe4ebd7a21799cb02c7a71c5f43 Mon Sep 17 00:00:00 2001 From: Rathmox Date: Wed, 13 Dec 2023 22:09:24 +0100 Subject: [PATCH 46/51] fix links --- docs/unlock/phi/install-epsilon-18-2-0.md | 2 +- .../current/unlock/phi/install-epsilon-18-2-0.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/unlock/phi/install-epsilon-18-2-0.md b/docs/unlock/phi/install-epsilon-18-2-0.md index b4a5222f..6f5b8993 100644 --- a/docs/unlock/phi/install-epsilon-18-2-0.md +++ b/docs/unlock/phi/install-epsilon-18-2-0.md @@ -48,6 +48,6 @@ You should now see version 18.2.0 in Settings > About. :::caution -If it is not the case or your Numworks doesn't boot, you can only use an [alternate method](n0110-is-locked#alt-methods). +If it is not the case or your Numworks doesn't boot, you can only use an [alternate method](../n0110-is-locked#alt-methods). ::: diff --git a/i18n/fr/docusaurus-plugin-content-docs/current/unlock/phi/install-epsilon-18-2-0.md b/i18n/fr/docusaurus-plugin-content-docs/current/unlock/phi/install-epsilon-18-2-0.md index aacfa8dd..04d138dc 100644 --- a/i18n/fr/docusaurus-plugin-content-docs/current/unlock/phi/install-epsilon-18-2-0.md +++ b/i18n/fr/docusaurus-plugin-content-docs/current/unlock/phi/install-epsilon-18-2-0.md @@ -44,6 +44,6 @@ Vous devriez maintenant voir la version 18.2.0 dans Paramètres > À propos. :::caution -Si ce n'est pas le cas ou que votre Numworks ne démarre pas, vous pouvez toujours utiliser une [méthode alternative](/docs/unlock/n0110-is-locked#alternate-methods). +Si ce n'est pas le cas ou que votre Numworks ne démarre pas, vous pouvez toujours utiliser une [méthode alternative](../n0110-is-locked#alternate-methods). ::: From 64c68404bfd9cdd7b4cae378b9d635524b0043a8 Mon Sep 17 00:00:00 2001 From: Rathmox Date: Wed, 13 Dec 2023 22:40:22 +0100 Subject: [PATCH 47/51] fix CFW -> Custom OS --- i18n/fr/code.json | 10 +++++----- src/pages/index.tsx | 10 +++++----- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/i18n/fr/code.json b/i18n/fr/code.json index c31acd94..cbfac4b2 100644 --- a/i18n/fr/code.json +++ b/i18n/fr/code.json @@ -274,13 +274,13 @@ "message": "Tout pour prendre le contrôle de votre calculatrice" }, "home.page.cfw.title": { - "message": "CFW" + "message": "OS Custom" }, "home.page.cfw.text1": { - "message": "Les CFW (Custom Firmware) sont des modifications logicielles pour la Numworks. Ces modifications vous permettent de faire tout ce qu'il est possible physiquement avec la Numworks, et pas seulement ce que Numworks décide ce qu'il est possible de faire avec son matériel" + "message": "Les OS Custom sont des modifications logicielles pour la Numworks. Ces modifications vous permettent de faire tout ce qu'il est possible physiquement avec la Numworks, et pas seulement ce que Numworks décide ce qu'il est possible de faire avec son matériel" }, "home.page.cfw.text2": { - "message": "Les utilisation communes des CFW sont:" + "message": "Les utilisation communes des OS Custom sont:" }, "home.page.cfw.possibilities.1": { "message": "Executer des logiciels et jeux fait-maison (Homebrew) fait ou portés sur la Numworks" @@ -298,7 +298,7 @@ "message": "Installer " }, "home.page.cfw.possibilities.4.part2": { - "message": "d'autres CFW" + "message": "d'autres OS Custom" }, "home.page.cfw.possibilities.4.part3": { "message": ", comme " @@ -316,7 +316,7 @@ "message": "Débloquer votre calculatrice si besoin" }, "home.page.whatContent.list.2": { - "message": "Installer un CFW sur votre calculatrice" + "message": "Installer un OS Custom sur votre calculatrice" }, "home.page.whatContent.list.3": { "message": "Installer un bootloader customisé" diff --git a/src/pages/index.tsx b/src/pages/index.tsx index f13d0b4b..445ed38e 100644 --- a/src/pages/index.tsx +++ b/src/pages/index.tsx @@ -35,20 +35,20 @@ export default function Home(): JSX.Element {
-

CFW ?

-

Custom firmwares (CFW) are software modifications for the numworks. They allow you to do anything that the Numworks is physically capable of doing, rather than being limited by whatever Numworks allows you to do.

-

Popular uses for CFW include:

+

Custom OS ?

+

Custom OSs are software modifications for the numworks. They allow you to do anything that the Numworks is physically capable of doing, rather than being limited by whatever Numworks allows you to do.

+

Popular uses for custom OS include:

What does this guide contain ?

This guide will explain how to:

  • Unlock your calculator if you need to
  • -
  • Install a CFW on your calculator
  • +
  • Install a custom OS on your calculator
  • Install a custom bootloader

What do I need to know before starting?

From b370a0d2c0e912113400d44051e26d6f37dca133 Mon Sep 17 00:00:00 2001 From: Rathmox Date: Sun, 17 Dec 2023 20:44:51 +0100 Subject: [PATCH 48/51] add one error --- docs/troubleshooting.md | 5 +++-- .../current/troubleshooting.md | 3 ++- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/docs/troubleshooting.md b/docs/troubleshooting.md index fe6d8717..ffe957c6 100644 --- a/docs/troubleshooting.md +++ b/docs/troubleshooting.md @@ -19,11 +19,12 @@ If you want to unlock your calculator, don't go to the `numworks.com/rescue` web ### Black screen, nothing else -There are 4 possible reasons: +There are 5 possible reasons: - Your calculator is in sleep mode, press the power button to turn it back on. -- Your calculator may have any wierd bug, try pressign the reset button on the back. +- Your calculator may have any wierd bug, try pressing the reset button on the back. - Your calculator may be discharged, try letting it charge a few minutes. - The battery is disconnected, you may need to open your calculator to plug it back in. +- If you have an n0100, you may be in Recovery Mode, unplug the cable, and press the reset button on the back. If this doesn't solve the problem, contact Numworks. diff --git a/i18n/fr/docusaurus-plugin-content-docs/current/troubleshooting.md b/i18n/fr/docusaurus-plugin-content-docs/current/troubleshooting.md index 3f669ccc..3affdf70 100644 --- a/i18n/fr/docusaurus-plugin-content-docs/current/troubleshooting.md +++ b/i18n/fr/docusaurus-plugin-content-docs/current/troubleshooting.md @@ -20,11 +20,12 @@ Si vous souhaitez débloquer votre calculatrice, n'allez pas sur le site `numwor ### Écran noir, rien d'autre -Il y a 4 raisons possibles: +Il y a 5 raisons possibles: - Votre calculatrice est en mode veille, appuyez sur le bouton power pour la rallumer. - Votre calculatrice est peut-être victime d'un bug, appuyez sur reset au dos. - Votre calculatrice est peut-être déchargée, essayez de la laisser charger quelques minutes. - La batterie est déconnectée, vous pourriez avoir besoin d'ouvrir votre calculatrice pour la rebrancher. +- Si vous avec une n0100, vous êtes peut-être en mode Recovery, débranchez le cable, et appuyez sur reset au dos?. Si cela ne résout pas le problème, contactez Numworks. From a6c6730f1630e583bdc5de01de04ed293f96daa2 Mon Sep 17 00:00:00 2001 From: Rathmox Date: Sun, 17 Dec 2023 21:29:02 +0100 Subject: [PATCH 49/51] Fix navbar --- docs/cannot-unlock/_category_.json | 8 ++++++++ .../what-to-do-locked.md | 1 + docs/cfw/_category_.json | 2 +- docs/faq.md | 2 +- docs/flowchart.md | 8 ++++---- docs/how-does-it-work.md | 2 +- docs/intro.md | 4 ++-- docs/no-custom/_category_.json | 8 -------- docs/{no-custom => }/restore-stock-firmware.md | 1 + docs/troubleshooting.md | 2 +- .../current.json | 18 +++++++++--------- .../what-to-do-locked.md | 0 .../current/faq.md | 4 ++-- .../current/flowchart.md | 10 +++++----- .../current/how-does-it-work.md | 2 +- .../current/intro.md | 4 ++-- .../{no-custom => }/restore-stock-firmware.md | 1 + .../current/troubleshooting.md | 2 +- 18 files changed, 41 insertions(+), 38 deletions(-) create mode 100644 docs/cannot-unlock/_category_.json rename docs/{no-custom => cannot-unlock}/what-to-do-locked.md (98%) delete mode 100644 docs/no-custom/_category_.json rename docs/{no-custom => }/restore-stock-firmware.md (97%) rename i18n/fr/docusaurus-plugin-content-docs/current/{no-custom => cannot-unlock}/what-to-do-locked.md (100%) rename i18n/fr/docusaurus-plugin-content-docs/current/{no-custom => }/restore-stock-firmware.md (98%) diff --git a/docs/cannot-unlock/_category_.json b/docs/cannot-unlock/_category_.json new file mode 100644 index 00000000..40c1961a --- /dev/null +++ b/docs/cannot-unlock/_category_.json @@ -0,0 +1,8 @@ +{ + "label": "Cannot unlock your calculator", + "position": 10, + "link": { + "type": "generated-index", + "description": "What if you cannot unlock your calculator ?" + } +} diff --git a/docs/no-custom/what-to-do-locked.md b/docs/cannot-unlock/what-to-do-locked.md similarity index 98% rename from docs/no-custom/what-to-do-locked.md rename to docs/cannot-unlock/what-to-do-locked.md index 4086933b..4356fd42 100644 --- a/docs/no-custom/what-to-do-locked.md +++ b/docs/cannot-unlock/what-to-do-locked.md @@ -1,4 +1,5 @@ --- +sidebar_position: 11 title: "What to do on a locked calculator ?" pagination_next: null pagination_prev: intro diff --git a/docs/cfw/_category_.json b/docs/cfw/_category_.json index 6102d6a8..7e1705e3 100644 --- a/docs/cfw/_category_.json +++ b/docs/cfw/_category_.json @@ -1,5 +1,5 @@ { - "label": "Custom OS", + "label": "Installing an OS", "position": 5, "link": { "type": "generated-index", diff --git a/docs/faq.md b/docs/faq.md index f33c2e12..f0950b94 100644 --- a/docs/faq.md +++ b/docs/faq.md @@ -1,5 +1,5 @@ --- -sidebar_position: 8 +sidebar_position: 98 title: "FAQ" pagination_next: null pagination_prev: null diff --git a/docs/flowchart.md b/docs/flowchart.md index 7f954b1f..fce25dbe 100644 --- a/docs/flowchart.md +++ b/docs/flowchart.md @@ -1,5 +1,5 @@ --- -sidebar_position: 6 +sidebar_position: 50 title: "Site map" pagination_next: null pagination_prev: null @@ -22,7 +22,7 @@ flowchart TD model_number --Other--> goto_discord([Go to Omega Discord server]) click model_number "./intro" - click calc_locked_no_modif "./no-custom/what-to-do-locked" + click calc_locked_no_modif "./cannot-unlock/what-to-do-locked" click calc_unlocked "./cfw/choose-a-cfw" click goto_discord "https://discord.gg/X2TWhh9" @@ -46,12 +46,12 @@ flowchart TD click install_18_2_0 "./unlock/phi/install-epsilon-18-2-0" click phi "./unlock/phi" click hardware_method "./unlock/hardware/n0110-hardware-unlock" - click calc_locked_n0110 "./no-custom/what-to-do-locked" + click calc_locked_n0110 "./cannot-unlock/what-to-do-locked" click calc_unlocked_n0110 "./cfw/choose-a-cfw" end calc_locked_new_calcs([Your calculator is locked, but you can do other things with it]) - click calc_locked_new_calcs "./no-custom/what-to-do-locked" + click calc_locked_new_calcs "./cannot-unlock/what-to-do-locked" ``` diff --git a/docs/how-does-it-work.md b/docs/how-does-it-work.md index cf6cec0e..8eefc3eb 100644 --- a/docs/how-does-it-work.md +++ b/docs/how-does-it-work.md @@ -1,5 +1,5 @@ --- -sidebar_position: 9 +sidebar_position: 80 title: "How does it work ?" pagination_next: null pagination_prev: null diff --git a/docs/intro.md b/docs/intro.md index 081733b4..51c3eaa9 100644 --- a/docs/intro.md +++ b/docs/intro.md @@ -23,7 +23,7 @@ This guide will refer to some names, before starting you have to know what these :::info -If you don't want to deeply modify your calculator, [there are still a few things you can do](no-custom/what-to-do-locked). +If you don't want to deeply modify your calculator, [there are still a few things you can do](cannot-unlock/what-to-do-locked). ::: @@ -46,4 +46,4 @@ If you don't want to deeply modify your calculator, [there are still a few thing |------------------|-------------------------------------------------------------------------------------------------| | N0100 | [Your calculator is already unlocked. Choose a Custom OS](/docs/cfw/choose-a-cfw) | | N0110 | [Check if your calculator is locked](/docs/unlock/n0110-is-locked) | -| N0115 - N0120 | [You can't install a Custom OS on it. But there are still a few things you can do](/docs/no-custom/what-to-do-locked) | +| N0115 - N0120 | [You can't install a Custom OS on it. But there are still a few things you can do](/docs/cannot-unlock/what-to-do-locked) | diff --git a/docs/no-custom/_category_.json b/docs/no-custom/_category_.json deleted file mode 100644 index c5fae718..00000000 --- a/docs/no-custom/_category_.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "label": "No Custom OS", - "position": 4, - "link": { - "type": "generated-index", - "description": "What you can do with a locked calculator" - } -} diff --git a/docs/no-custom/restore-stock-firmware.md b/docs/restore-stock-firmware.md similarity index 97% rename from docs/no-custom/restore-stock-firmware.md rename to docs/restore-stock-firmware.md index 122e0e0e..8a3b6aa9 100644 --- a/docs/no-custom/restore-stock-firmware.md +++ b/docs/restore-stock-firmware.md @@ -1,4 +1,5 @@ --- +sidebar_position: 10 title: "Restore Stock Firmware" pagination_next: null pagination_prev: null diff --git a/docs/troubleshooting.md b/docs/troubleshooting.md index ffe957c6..a50e5d89 100644 --- a/docs/troubleshooting.md +++ b/docs/troubleshooting.md @@ -1,5 +1,5 @@ --- -sidebar_position: 7 +sidebar_position: 95 title: "Troubleshooting" pagination_next: null pagination_prev: null diff --git a/i18n/fr/docusaurus-plugin-content-docs/current.json b/i18n/fr/docusaurus-plugin-content-docs/current.json index d61b24ca..5d9bbf7b 100644 --- a/i18n/fr/docusaurus-plugin-content-docs/current.json +++ b/i18n/fr/docusaurus-plugin-content-docs/current.json @@ -27,19 +27,19 @@ "message": "Comment débloquer sa Numworks pour installer un OS Custom", "description": "The generated-index page description for category Unlock before installation in sidebar tutorialSidebar" }, - "sidebar.tutorialSidebar.category.No Custom OS": { - "message": "Pas d'OS Custom", - "description": "The label for category No Custom OS in sidebar tutorialSidebar" + "sidebar.tutorialSidebar.category.Cannot unlock your calculator": { + "message": "Impossible de débloquer votre calculatrice", + "description": "The label for category Cannot unlock your calculator in sidebar tutorialSidebar" }, - "sidebar.tutorialSidebar.category.No Custom OS.link.generated-index.description": { - "message": "What you can do with a locked calculator", - "description": "The generated-index page description for category No Custom OS in sidebar tutorialSidebar" + "sidebar.tutorialSidebar.category.Cannot unlock your calculator.link.generated-index.description": { + "message": "Si vous ne pouvez pas débloquer votre calculatrice", + "description": "The generated-index page description for category Cannot unlock your calculator in sidebar tutorialSidebar" }, - "sidebar.tutorialSidebar.category.Custom OS": { - "message": "OS Custom", + "sidebar.tutorialSidebar.category.Installing an OS": { + "message": "Installer un OS", "description": "The label for category Custom OS in sidebar tutorialSidebar" }, - "sidebar.tutorialSidebar.category.Custom OS.link.generated-index.description": { + "sidebar.tutorialSidebar.category.Installing an OS.link.generated-index.description": { "message": "Qu'est-il possible avec un OS Custom ?", "description": "The generated-index page description for category Custom OS in sidebar tutorialSidebar" } diff --git a/i18n/fr/docusaurus-plugin-content-docs/current/no-custom/what-to-do-locked.md b/i18n/fr/docusaurus-plugin-content-docs/current/cannot-unlock/what-to-do-locked.md similarity index 100% rename from i18n/fr/docusaurus-plugin-content-docs/current/no-custom/what-to-do-locked.md rename to i18n/fr/docusaurus-plugin-content-docs/current/cannot-unlock/what-to-do-locked.md diff --git a/i18n/fr/docusaurus-plugin-content-docs/current/faq.md b/i18n/fr/docusaurus-plugin-content-docs/current/faq.md index 5df5ac61..fcca012f 100644 --- a/i18n/fr/docusaurus-plugin-content-docs/current/faq.md +++ b/i18n/fr/docusaurus-plugin-content-docs/current/faq.md @@ -1,5 +1,5 @@ --- -sidebar_position: 7 +sidebar_position: 98 title: "FAQ" pagination_next: null pagination_prev: null @@ -24,4 +24,4 @@ Les téléphones Android peuvent être utilisés avec un câble USB OTG. **Q:** *Est-il sûr de mettre à jour Epsilon tout en ayant un bootloader custom installé ?* -**A:** Pour le moment, le programme d'installation de Numworks ne vérifie pas les bootloaders modifiés, ni Epsilon, donc oui. (À moins que vous n'ayez pas un bootloader ce qui n'est probablement pas le cas) \ No newline at end of file +**A:** Pour le moment, le programme d'installation de Numworks ne vérifie pas les bootloaders modifiés, ni Epsilon, donc oui. (À moins que vous n'ayez pas un bootloader ce qui n'est probablement pas le cas) diff --git a/i18n/fr/docusaurus-plugin-content-docs/current/flowchart.md b/i18n/fr/docusaurus-plugin-content-docs/current/flowchart.md index 5587d9d3..d7a76ff4 100644 --- a/i18n/fr/docusaurus-plugin-content-docs/current/flowchart.md +++ b/i18n/fr/docusaurus-plugin-content-docs/current/flowchart.md @@ -1,5 +1,5 @@ --- -sidebar_position: 6 +sidebar_position: 50 title: "Plan du site" pagination_next: null pagination_prev: null @@ -21,7 +21,7 @@ flowchart TD model_number --Other--> goto_discord([Aller sur le Discord Omega]) click model_number "./intro" - click calc_locked_no_modif "./no-custom/what-to-do-locked" + click calc_locked_no_modif "./cannot-unlock/what-to-do-locked" click calc_unlocked "./cfw/choose-a-cfw" click goto_discord "https://discord.gg/X2TWhh9" @@ -45,12 +45,12 @@ flowchart TD click install_18_2_0 "./unlock/phi/install-epsilon-18-2-0" click phi "./unlock/phi" click hardware_method "./unlock/hardware/n0110-hardware-unlock" - click calc_locked_n0110 "./no-custom/what-to-do-locked" + click calc_locked_n0110 "./cannot-unlock/what-to-do-locked" click calc_unlocked_n0110 "./cfw/choose-a-cfw" end calc_locked_new_calcs([Votre calculatrice est bloquée, mais vous pouvez faire d'autres choses avec]) - click calc_locked_new_calcs "./no-custom/what-to-do-locked" -``` \ No newline at end of file + click calc_locked_new_calcs "./cannot-unlock/what-to-do-locked" +``` diff --git a/i18n/fr/docusaurus-plugin-content-docs/current/how-does-it-work.md b/i18n/fr/docusaurus-plugin-content-docs/current/how-does-it-work.md index 801e4b8f..43816f42 100644 --- a/i18n/fr/docusaurus-plugin-content-docs/current/how-does-it-work.md +++ b/i18n/fr/docusaurus-plugin-content-docs/current/how-does-it-work.md @@ -1,5 +1,5 @@ --- -sidebar_position: 8 +sidebar_position: 80 title: "Comment ça marche ?" pagination_next: null pagination_prev: null diff --git a/i18n/fr/docusaurus-plugin-content-docs/current/intro.md b/i18n/fr/docusaurus-plugin-content-docs/current/intro.md index f566b7c7..88bdd013 100644 --- a/i18n/fr/docusaurus-plugin-content-docs/current/intro.md +++ b/i18n/fr/docusaurus-plugin-content-docs/current/intro.md @@ -22,7 +22,7 @@ Ce guide va utiliser certains noms, avant de commencer vous devez savoir à qui 5. Bootloader ("softloader"): C'est un menu auquel vous pouvez accéder de différentes manières, cela dépend de l'OS Custom que vous choisissez. Il vous permet de réinstaller le firmware et peut vous empêcher de bloquer votre calculatrice si vous la mettez à jour. Phi vous permet d'en installer un si vous le souhaitez :::info -Si vous ne voulez pas profondément modifier votre calculatrice, [il y a toujours certaines choses que vous pouvez faire](no-custom/what-to-do-locked) +Si vous ne voulez pas profondément modifier votre calculatrice, [il y a toujours certaines choses que vous pouvez faire](cannot-unlock/what-to-do-locked) ::: #### Préréquis @@ -44,4 +44,4 @@ Si vous ne voulez pas profondément modifier votre calculatrice, [il y a toujour |------------------|----------------------------------------------------------------| | N0100 | [Votre calculatrice est déja dévérouillée, choisisez un OS Custom](/docs/cfw/choose-a-cfw) | | N0110 | [Vérifiez si votre calculatrice est verrouillée](/docs/unlock/n0110-is-locked) | -| N0115 - N0120 | [Vous ne pouvez pas installer d'OS Custom dessus. Mais il y a toujours certaines choses que vous pouvez faire](/docs/no-custom/what-to-do-locked) | +| N0115 - N0120 | [Vous ne pouvez pas installer d'OS Custom dessus. Mais il y a toujours certaines choses que vous pouvez faire](/docs/cannot-unlock/what-to-do-locked) | diff --git a/i18n/fr/docusaurus-plugin-content-docs/current/no-custom/restore-stock-firmware.md b/i18n/fr/docusaurus-plugin-content-docs/current/restore-stock-firmware.md similarity index 98% rename from i18n/fr/docusaurus-plugin-content-docs/current/no-custom/restore-stock-firmware.md rename to i18n/fr/docusaurus-plugin-content-docs/current/restore-stock-firmware.md index f6cbd985..a174326a 100644 --- a/i18n/fr/docusaurus-plugin-content-docs/current/no-custom/restore-stock-firmware.md +++ b/i18n/fr/docusaurus-plugin-content-docs/current/restore-stock-firmware.md @@ -1,4 +1,5 @@ --- +sidebar_position: 10 title: "Restaurer le firmware officiel" pagination_next: null pagination_prev: null diff --git a/i18n/fr/docusaurus-plugin-content-docs/current/troubleshooting.md b/i18n/fr/docusaurus-plugin-content-docs/current/troubleshooting.md index 3affdf70..4d53d606 100644 --- a/i18n/fr/docusaurus-plugin-content-docs/current/troubleshooting.md +++ b/i18n/fr/docusaurus-plugin-content-docs/current/troubleshooting.md @@ -1,5 +1,5 @@ --- -sidebar_position: 6 +sidebar_position: 95 title: "Dépannage" pagination_next: null pagination_prev: null From c2025737fc1ccb0ec70ab6298132cc053b2523f1 Mon Sep 17 00:00:00 2001 From: Rathmox Date: Sun, 17 Dec 2023 22:19:00 +0100 Subject: [PATCH 50/51] fix sidebar --- docs/cannot-unlock/_category_.json | 8 -------- docs/flowchart.md | 6 +++--- docs/intro.md | 8 ++++---- docs/unlock/n0110-unlocked.md | 1 + docs/{cannot-unlock => unlock}/what-to-do-locked.md | 4 ++-- i18n/fr/docusaurus-plugin-content-docs/current.json | 8 -------- .../docusaurus-plugin-content-docs/current/flowchart.md | 6 +++--- i18n/fr/docusaurus-plugin-content-docs/current/intro.md | 8 ++++---- .../current/unlock/n0110-unlocked.md | 1 + .../{cannot-unlock => unlock}/what-to-do-locked.md | 3 ++- 10 files changed, 20 insertions(+), 33 deletions(-) delete mode 100644 docs/cannot-unlock/_category_.json rename docs/{cannot-unlock => unlock}/what-to-do-locked.md (95%) rename i18n/fr/docusaurus-plugin-content-docs/current/{cannot-unlock => unlock}/what-to-do-locked.md (96%) diff --git a/docs/cannot-unlock/_category_.json b/docs/cannot-unlock/_category_.json deleted file mode 100644 index 40c1961a..00000000 --- a/docs/cannot-unlock/_category_.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "label": "Cannot unlock your calculator", - "position": 10, - "link": { - "type": "generated-index", - "description": "What if you cannot unlock your calculator ?" - } -} diff --git a/docs/flowchart.md b/docs/flowchart.md index fce25dbe..8ff384d0 100644 --- a/docs/flowchart.md +++ b/docs/flowchart.md @@ -22,7 +22,7 @@ flowchart TD model_number --Other--> goto_discord([Go to Omega Discord server]) click model_number "./intro" - click calc_locked_no_modif "./cannot-unlock/what-to-do-locked" + click calc_locked_no_modif "./what-to-do-locked" click calc_unlocked "./cfw/choose-a-cfw" click goto_discord "https://discord.gg/X2TWhh9" @@ -46,12 +46,12 @@ flowchart TD click install_18_2_0 "./unlock/phi/install-epsilon-18-2-0" click phi "./unlock/phi" click hardware_method "./unlock/hardware/n0110-hardware-unlock" - click calc_locked_n0110 "./cannot-unlock/what-to-do-locked" + click calc_locked_n0110 "./what-to-do-locked" click calc_unlocked_n0110 "./cfw/choose-a-cfw" end calc_locked_new_calcs([Your calculator is locked, but you can do other things with it]) - click calc_locked_new_calcs "./cannot-unlock/what-to-do-locked" + click calc_locked_new_calcs "./what-to-do-locked" ``` diff --git a/docs/intro.md b/docs/intro.md index 51c3eaa9..ede0e9a9 100644 --- a/docs/intro.md +++ b/docs/intro.md @@ -23,7 +23,7 @@ This guide will refer to some names, before starting you have to know what these :::info -If you don't want to deeply modify your calculator, [there are still a few things you can do](cannot-unlock/what-to-do-locked). +If you don't want to deeply modify your calculator, [there are still a few things you can do](what-to-do-locked). ::: @@ -44,6 +44,6 @@ If you don't want to deeply modify your calculator, [there are still a few thing | Calculator Model | What to do | |------------------|-------------------------------------------------------------------------------------------------| -| N0100 | [Your calculator is already unlocked. Choose a Custom OS](/docs/cfw/choose-a-cfw) | -| N0110 | [Check if your calculator is locked](/docs/unlock/n0110-is-locked) | -| N0115 - N0120 | [You can't install a Custom OS on it. But there are still a few things you can do](/docs/cannot-unlock/what-to-do-locked) | +| N0100 | [Your calculator is already unlocked. Choose a Custom OS](cfw/choose-a-cfw) | +| N0110 | [Check if your calculator is locked](unlock/n0110-is-locked) | +| N0115 - N0120 | [You can't install a Custom OS on it. But there are still a few things you can do](what-to-do-locked) | diff --git a/docs/unlock/n0110-unlocked.md b/docs/unlock/n0110-unlocked.md index 00e057cb..c6e04b44 100644 --- a/docs/unlock/n0110-unlocked.md +++ b/docs/unlock/n0110-unlocked.md @@ -1,4 +1,5 @@ --- +sidebar_position: 10 title: "Unlocked (N0110)" pagination_next: cfw/choose-a-cfw pagination_prev: unlock/n0110-is-locked diff --git a/docs/cannot-unlock/what-to-do-locked.md b/docs/unlock/what-to-do-locked.md similarity index 95% rename from docs/cannot-unlock/what-to-do-locked.md rename to docs/unlock/what-to-do-locked.md index 4356fd42..b2cafd02 100644 --- a/docs/cannot-unlock/what-to-do-locked.md +++ b/docs/unlock/what-to-do-locked.md @@ -1,6 +1,6 @@ --- -sidebar_position: 11 -title: "What to do on a locked calculator ?" +sidebar_position: 20 +title: "Cannot unlock your calculator ?" pagination_next: null pagination_prev: intro --- diff --git a/i18n/fr/docusaurus-plugin-content-docs/current.json b/i18n/fr/docusaurus-plugin-content-docs/current.json index 5d9bbf7b..d9790511 100644 --- a/i18n/fr/docusaurus-plugin-content-docs/current.json +++ b/i18n/fr/docusaurus-plugin-content-docs/current.json @@ -27,14 +27,6 @@ "message": "Comment débloquer sa Numworks pour installer un OS Custom", "description": "The generated-index page description for category Unlock before installation in sidebar tutorialSidebar" }, - "sidebar.tutorialSidebar.category.Cannot unlock your calculator": { - "message": "Impossible de débloquer votre calculatrice", - "description": "The label for category Cannot unlock your calculator in sidebar tutorialSidebar" - }, - "sidebar.tutorialSidebar.category.Cannot unlock your calculator.link.generated-index.description": { - "message": "Si vous ne pouvez pas débloquer votre calculatrice", - "description": "The generated-index page description for category Cannot unlock your calculator in sidebar tutorialSidebar" - }, "sidebar.tutorialSidebar.category.Installing an OS": { "message": "Installer un OS", "description": "The label for category Custom OS in sidebar tutorialSidebar" diff --git a/i18n/fr/docusaurus-plugin-content-docs/current/flowchart.md b/i18n/fr/docusaurus-plugin-content-docs/current/flowchart.md index d7a76ff4..8f62073e 100644 --- a/i18n/fr/docusaurus-plugin-content-docs/current/flowchart.md +++ b/i18n/fr/docusaurus-plugin-content-docs/current/flowchart.md @@ -21,7 +21,7 @@ flowchart TD model_number --Other--> goto_discord([Aller sur le Discord Omega]) click model_number "./intro" - click calc_locked_no_modif "./cannot-unlock/what-to-do-locked" + click calc_locked_no_modif "./what-to-do-locked" click calc_unlocked "./cfw/choose-a-cfw" click goto_discord "https://discord.gg/X2TWhh9" @@ -45,12 +45,12 @@ flowchart TD click install_18_2_0 "./unlock/phi/install-epsilon-18-2-0" click phi "./unlock/phi" click hardware_method "./unlock/hardware/n0110-hardware-unlock" - click calc_locked_n0110 "./cannot-unlock/what-to-do-locked" + click calc_locked_n0110 "./what-to-do-locked" click calc_unlocked_n0110 "./cfw/choose-a-cfw" end calc_locked_new_calcs([Votre calculatrice est bloquée, mais vous pouvez faire d'autres choses avec]) - click calc_locked_new_calcs "./cannot-unlock/what-to-do-locked" + click calc_locked_new_calcs "./what-to-do-locked" ``` diff --git a/i18n/fr/docusaurus-plugin-content-docs/current/intro.md b/i18n/fr/docusaurus-plugin-content-docs/current/intro.md index 88bdd013..da08a304 100644 --- a/i18n/fr/docusaurus-plugin-content-docs/current/intro.md +++ b/i18n/fr/docusaurus-plugin-content-docs/current/intro.md @@ -22,7 +22,7 @@ Ce guide va utiliser certains noms, avant de commencer vous devez savoir à qui 5. Bootloader ("softloader"): C'est un menu auquel vous pouvez accéder de différentes manières, cela dépend de l'OS Custom que vous choisissez. Il vous permet de réinstaller le firmware et peut vous empêcher de bloquer votre calculatrice si vous la mettez à jour. Phi vous permet d'en installer un si vous le souhaitez :::info -Si vous ne voulez pas profondément modifier votre calculatrice, [il y a toujours certaines choses que vous pouvez faire](cannot-unlock/what-to-do-locked) +Si vous ne voulez pas profondément modifier votre calculatrice, [il y a toujours certaines choses que vous pouvez faire](what-to-do-locked) ::: #### Préréquis @@ -42,6 +42,6 @@ Si vous ne voulez pas profondément modifier votre calculatrice, [il y a toujour | Modèle de calculatrice | Que faut-il faire ? | |------------------|----------------------------------------------------------------| -| N0100 | [Votre calculatrice est déja dévérouillée, choisisez un OS Custom](/docs/cfw/choose-a-cfw) | -| N0110 | [Vérifiez si votre calculatrice est verrouillée](/docs/unlock/n0110-is-locked) | -| N0115 - N0120 | [Vous ne pouvez pas installer d'OS Custom dessus. Mais il y a toujours certaines choses que vous pouvez faire](/docs/cannot-unlock/what-to-do-locked) | +| N0100 | [Votre calculatrice est déja dévérouillée, choisisez un OS Custom](cfw/choose-a-cfw) | +| N0110 | [Vérifiez si votre calculatrice est verrouillée](unlock/n0110-is-locked) | +| N0115 - N0120 | [Vous ne pouvez pas installer d'OS Custom dessus. Mais il y a toujours certaines choses que vous pouvez faire](what-to-do-locked) | diff --git a/i18n/fr/docusaurus-plugin-content-docs/current/unlock/n0110-unlocked.md b/i18n/fr/docusaurus-plugin-content-docs/current/unlock/n0110-unlocked.md index f7f5c2b0..e8408656 100644 --- a/i18n/fr/docusaurus-plugin-content-docs/current/unlock/n0110-unlocked.md +++ b/i18n/fr/docusaurus-plugin-content-docs/current/unlock/n0110-unlocked.md @@ -1,4 +1,5 @@ --- +sidebar_position: 10 title: "Débloqué (N0110)" pagination_next: cfw/choose-a-cfw pagination_prev: unlock/n0110-is-locked diff --git a/i18n/fr/docusaurus-plugin-content-docs/current/cannot-unlock/what-to-do-locked.md b/i18n/fr/docusaurus-plugin-content-docs/current/unlock/what-to-do-locked.md similarity index 96% rename from i18n/fr/docusaurus-plugin-content-docs/current/cannot-unlock/what-to-do-locked.md rename to i18n/fr/docusaurus-plugin-content-docs/current/unlock/what-to-do-locked.md index f2e7bf87..c366ec11 100644 --- a/i18n/fr/docusaurus-plugin-content-docs/current/cannot-unlock/what-to-do-locked.md +++ b/i18n/fr/docusaurus-plugin-content-docs/current/unlock/what-to-do-locked.md @@ -1,5 +1,6 @@ --- -title: "Que faire d'une calculatrice bloquée ?" +sidebar_position: 20 +title: "Déblocage impossible ?" pagination_next: null pagination_prev: intro --- From fd6b3ada81a62da806a2945c7cec44c3553a6671 Mon Sep 17 00:00:00 2001 From: Rathmox Date: Sun, 17 Dec 2023 22:28:22 +0100 Subject: [PATCH 51/51] add upsilon reader documentation --- docs/cfw/upsilon.md | 9 +++++++++ .../current/cfw/omega.md | 4 ++-- .../current/cfw/upsilon.md | 15 ++++++++++++--- 3 files changed, 23 insertions(+), 5 deletions(-) diff --git a/docs/cfw/upsilon.md b/docs/cfw/upsilon.md index 229fdf40..c86ed152 100644 --- a/docs/cfw/upsilon.md +++ b/docs/cfw/upsilon.md @@ -69,6 +69,15 @@ Upsilon support external apps, there are a few but they are useful. Here is how 4. Add a wallpaper if you want 5. Click install +#### Reader (not for n0100) + +Upsilon has a reader app. It can display text files and LaTeX expressions. + +Any file with the `.txt` extension can be read, however if you want to use LaTeX expressions, you need to change the extension to `.urt`. What is inside the file stays the same but Upsilon will display LaTeX expressions. +All the LaTeX expressions are documented [here](https://getupsilon.web.app/doc/reader). + +To transfer your file, send it through the [External apps page](https://upsilonnumworks.github.io/Upsilon-External/). + #### Installing Epsilon (not for n0100) You can install Epsilon on the bootloader without locking the calculator. diff --git a/i18n/fr/docusaurus-plugin-content-docs/current/cfw/omega.md b/i18n/fr/docusaurus-plugin-content-docs/current/cfw/omega.md index ec36aecf..fd2413b1 100644 --- a/i18n/fr/docusaurus-plugin-content-docs/current/cfw/omega.md +++ b/i18n/fr/docusaurus-plugin-content-docs/current/cfw/omega.md @@ -58,7 +58,7 @@ Omega supporte les applis externes, il y en a quelques unes mais elles sont util 5. Activez le support des icones si vous voulez de jolies icones sur vos applis 6. Cliquez sur installer -#### Installer Epsilon (Non compatible avec la n0100) +#### Installer Epsilon (pas pour n0100) Vous pouvez installer Epsilon sur bootloader sans bloquer le calculatrice. @@ -70,4 +70,4 @@ Omega est open-source, vous pouvez récupérer le code et l'utiliser comme vous ### Fini -Vous avez maintenant Omega installé sur votre calculatrice. Vous pouvez ajouter des scripts Python de la même manière qu'avant depuis le [workshop de Numworks](https://my.numworks.com/python/) \ No newline at end of file +Vous avez maintenant Omega installé sur votre calculatrice. Vous pouvez ajouter des scripts Python de la même manière qu'avant depuis le [workshop de Numworks](https://my.numworks.com/python/) diff --git a/i18n/fr/docusaurus-plugin-content-docs/current/cfw/upsilon.md b/i18n/fr/docusaurus-plugin-content-docs/current/cfw/upsilon.md index 1f1c18b5..63882b0b 100644 --- a/i18n/fr/docusaurus-plugin-content-docs/current/cfw/upsilon.md +++ b/i18n/fr/docusaurus-plugin-content-docs/current/cfw/upsilon.md @@ -56,7 +56,7 @@ Pour mettre à jour le bootloader, démarrez en mode recovery en cliquant sur re Maintenant qu'Upsilon est installé, il y a certaines choses que vous pouvez faire: -#### Applis externes (uniquement pour N0110) +#### Applis externes (pas pour n0100) Upsilon supporte les applis externes, il y en a quelques unes mais elles sont utiles. Voici comment les installer: 1. Ouvrez la [page des applis externes](https://upsilonnumworks.github.io/Upsilon-External/) @@ -65,7 +65,16 @@ Upsilon supporte les applis externes, il y en a quelques unes mais elles sont ut 4. Ajoutez un fond d'écran si vous le souhaitez 5. Cliquez sur installer -#### Installer Epsilon (uniquement pour N0110) +#### Lisuse (pas pour n0100) + +Upsilon a une appli Liseuse. Elle peut afficher des fichiers texte et des expressions LaTeX. + +N'importe quel fichier avec l'extension `.txt` peut être lu, mais si vous voulez utiliser des expressions LaTex, vous devez changer l'extension en `.urt`. Le contenu du fichier reste le même mais Upsilon va afficher les expressions LaTeX +Toutes les expressions LaTeX sont documentées [ici](https://getupsilon.web.app/doc/reader). + +Pour transférer votre fichier, envoyez-le avec la [page des applis externes](https://upsilonnumworks.github.io/Upsilon-External/). + +#### Installer Epsilon (pas pour n0100) Vous pouvez installer Epsilon sur bootloader sans bloquer le calculatrice. @@ -77,4 +86,4 @@ Upsilon est open-source, vous pouvez récupérer le code et l'utiliser comme vou ### Fini -Vous avez maintenant Upsilon installé sur votre calculatrice. Vous pouvez ajouter des scripts Python de la même manière qu'avant depuis le [workshop de Numworks](https://my.numworks.com/python/) \ No newline at end of file +Vous avez maintenant Upsilon installé sur votre calculatrice. Vous pouvez ajouter des scripts Python de la même manière qu'avant depuis le [workshop de Numworks](https://my.numworks.com/python/)

{dHUZ&_1-tD*|Xrjg?p!$;t}k;w0P(R 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�i7_6tc}zAt7k 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 %y#^L#vzMPH? z%ZaZrK1sU##`7||$kx+1_?qosa+kC75UL4y!t1#`kB-j2iW`3Azv?rNqEW7l0Fwf4 z)#08Q;x>M#gUm8mTTLY+hIj)kWl1<}HQ( z^o4gm=ih1-xc%Hr2BGtL7lX{vSK{G7SxFmtTb0n1=n{#31mZz@)LVfxJ-YEfc2!xZ1CW$UR? z`>Crdk-;dArOf;Lny&u<#KU2CdtH_CSS@@dsJFi0D)Nh^v1+zh>0cxcU*ZE<;!>uJ zZsXwoe8Ew4?4Z2aZq!1%FAe$R3JoN$Jwd3&Dl6Guh##c9^0^Xi8TJwHJV!$?(=(@t zP%o^F81U82((S?UtUq#=SuISz7xQxWseqOwzek?ViR50&-MwY&?EWv4*xlUnb|c47 zt`JWy!?ctOImM zjN;-X3m(V)f_e81yg0%75U4`Cux83tu_AF>TN>c3We?OeGE$g{#&W*kvIOv}6TKAEE%?g3tE1KZdVhRH>`@0m(uI>DpHPeNU` zF%>a2W#c-+uHlHKkK~&_MZ&7An?e8*qAJ8zrWY>AH~wM6#Y}VVSmHbL3SX4t8(={i z9oV$D*rgZ~%T@k%1sowlKoYe70GY=f+0ZM8{k1^Y!s+L*_Mgw9eji^Mgi1ChAOiJ>@R5IMD&P!ki z2);iyPc>bgJ>@`g^X6(r{qj{CCT`R!>bgq|K42Kx>Yy&7Thcf8u)3Z*6Y3>%AgNNRsc8*Co9i-b>VBm} zDre%3^v@ZLUP9UG1>=&f!atQU=SgA<&4~!E@;>hv?xo~9!GYxUo@S4?vbQ};BjPKz zX)B||r4jrRi6hc_d2kBrjJA@1o%~}P>2bPY-g<@LLri#AE}&m6x!vs&zo377l|EOW zPzz3`GMB!SSEQmoA(FcbT9nItLo%(KVG_IC3)j7gAEZ#^K{Ld^nGb|oE#*br{sM`r z@laCZu`7_P*^_1OTPj;apD=RPQPQJ%Og!04RbaPpH2`_oTP|j)GY64NhC^X?%399M zt&41Wot}BfvAVJ`oD{8h8gKYduY)JFHQb4!VRd_>ES$A|?@znPU(K*z+ai9`!1fY4MbjoGNS<_DY)dIVGh3$hBtR953|hG16ew_DJwAr)p$q8V;i&TU&n+W zG6tD3pCyQ7t!aS;CC2^d>(iiQ|2834fVvRHC7x6Mkf!Hn^7b~i}& z>xIjs%B84Q9TU&-7#UW&kxXPj@3sR|v(s0TVyf8oA2}Lh!ePzKjnSQiBeggiG5nCQ zb|w5zImaT_6)Km1Jf06RhS{Bfr+hNCa2j{&cEjr62ie+|Z<2JPr?CEAl$CPZx|FA^ zkJ&br^D7?ZRPd=q9NUI_FZMvD>*8xJ?lfTYETiKg&RR$9^YJ`1_}J83Uxb@GH}mcIDz2zuZRBjFp}t{us_7_nu>ZUigj* z=_$T)Usv@hZg>1L!@?w_dHa>!+9F418g@J=Aoths0xRwYeXy&tn%{*^F4~mi{mKDz zv9YIOu`kX;6S3vXK~>JfE43P(p52a#m5N!BUzmfgGlS|~�Jqwk5r3sbBj8uhbPQ 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