Skip to content

Commit d5fff5b

Browse files
Release v0.1.2 (#2)
Release v0.1.2
2 parents 1de8de5 + dfc889b commit d5fff5b

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

83 files changed

+2621
-713
lines changed

.env

Lines changed: 0 additions & 1 deletion
This file was deleted.

CHANGELOG.md

Lines changed: 72 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,78 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
77

88
## [Unreleased]
99

10+
## [v0.1.2] - 2020-01-19
11+
12+
### Added
13+
14+
- Zoom, between 1 and 50
15+
- Mini control
16+
- It's an area below the render area of the display with buttons such as:
17+
- play / pause
18+
- single step
19+
- speed halving / doubling
20+
- zoom increase / decrease
21+
- panning
22+
- Keyboard controls
23+
- When the render area is selected, the following keys are active:
24+
- Space does play/pause
25+
- Enter does a single step
26+
- `-` and `+` do zoom decrease and increase (`_` and `=` work too)
27+
- `[` and `]` do having and doubling the speed
28+
- `{`, `|` and `}` do go to the left end, the right end or the center
29+
- The directional arrows move the camera in the given direction by a twelfth
30+
of the width or the heigth of the camera
31+
- The Home / End / PageUp / PageDown keys move the camera by the full width or heigth of the camera
32+
- Note: There is no way to jump to the top for the time being
33+
- Panning
34+
- With mouse
35+
- With keyboard arrows
36+
- With buttons in the mini control area
37+
- -- The possible movement are:
38+
- go left / right / up / down, small moves or big (page) moves
39+
- go to the left end / the right end / the center / the top
40+
- Dark mode
41+
- By default the application is in dark mode. It can be set to light mode
42+
using the "App Theme" selector, in the "Application Config" section, at the bottom.
43+
- Application theme
44+
- Besides the light / drak mode, the primary color of the application can be
45+
chosen among 8 options (5 in dark mode, 3 in light mode)
46+
- By default, the display theme follows the application theme, but it can be
47+
set to its own theme using the "Display Theme" selector
48+
49+
### Changed
50+
51+
- Speed
52+
- High limit raised from 99 to 999
53+
- Low limit raised from 0 to 1
54+
- Border behaviour
55+
- The border now copies the state from the other side of the cellular space,
56+
making the state space (state band) a closed loop
57+
- Layout
58+
- The display is now at the top
59+
- Position (temporal)
60+
- Limit raised form 9_999 to 99_999
61+
- The field is now disabled while the automaton is playing
62+
- The field no longer starts erroring when the position goes above the limit
63+
while playing
64+
- Rule number
65+
- The rule number is now shown in more places than before
66+
- Improved the application layout for phones
67+
68+
## [v0.1.1] - 2020-01-05
69+
70+
### Added
71+
72+
- Version info
73+
- the version is displayed at the top right
74+
- Github link
75+
- the link to the source code repository is present at the top right of the
76+
page
77+
78+
### Changed
79+
80+
- Improved layout and contrasts
81+
1082
## [v0.1.0] - 2020-01-05
1183

1284
### Added

README.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,9 @@ The first version of Cellexp has been [deployed to Now.sh](https://cellexp.now.s
1212

1313
- [ECAX](https://www.xanxys.net/ecax/) - Zoom, Navigation, Compute-on-demand
1414
- [ECA Canvas](http://www.cs.swan.ac.uk/~csandy/research/play/ca/) - Size, Border, Random
15+
- [ECA EmergentMind](http://www.emergentmind.com/elementary-cellular-automata) - Zoom, Board of 256 rules
1516
- [Celldemo](http://devinacker.github.io/celldemo/) - Autoscrolling, Impuse, Random proportion,
16-
- [WoflramAlpha](https://www.wolframalpha.com/input/?i=rule+110) - Description (symétries, propriétés, classe), Propagation differentielle
17+
- [WolframAlpha](https://www.wolframalpha.com/input/?i=rule+110) - Description (symétries, propriétés, classe), Propagation differentielle
1718

1819
## Study and roadmap
1920

contribute/commit-word-list.md

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ This files lists domain and verbs to use in commits. See the [commit format desc
3131
- editor -- rule editor
3232
- control -- simulation configurator
3333
- util
34+
- www
3435

3536
## verbe
3637

@@ -64,6 +65,7 @@ This files lists domain and verbs to use in commits. See the [commit format desc
6465
- rename
6566
- reordre
6667
- restructure
68+
- simplify
6769

6870
### documentation verbs
6971

@@ -88,5 +90,5 @@ This files lists domain and verbs to use in commits. See the [commit format desc
8890
- `&` feature
8991
- `$` quantified / measured
9092
- `@` inside
91-
- `!`, `%`, `^`, `*`, `_`, `=`
92-
- `;`, `:`, `\`, `|`, `,`, `.`, `/`, `?`
93+
- `%`, `^`, `*`, `_`, `=`
94+
- `:`, `\`, `|`, `,`, `.`, `/`, `?`

doc-project-fr/etude/fonctionnalite.md

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,18 @@ Les fonctionnalités (**Fca-size**), (**Fca-border**) et (**Fca-theme**) sont co
5858
- Paramétrage du comportement de l'afficheur et de l'automate cellulaire lors du redimensionnement de l'affichage (**Fnav-custom-resize**).
5959
- Le zoom de l'affichage peut être modifier par l'utilisateur et afficher plus d'une cellule par pixel (**Fnav-zoom**).
6060

61+
#### Propagation de l'information et intervention sur le ruban
62+
63+
Le calculateur-afficheur permet d'observer comment l'information se propage au
64+
sein de l'automate cellulaire. En pratique, il est possible de mettre en couleur
65+
l'ensemble des cellules qui seraient affectés par le changement de l'état d'une
66+
des cellules du ruban (**Fshow-propagation**).
67+
68+
Une fonctionnalité voisine est la possibilité d'intervenir et de modifier l'état
69+
de l'automate cellulaire à un instant donné. Cette intervention n'ayant aucune
70+
cause à l'interieur de l'univers de l'automate, il est pertinent de la qualifier
71+
de "divine" (**Fca-divine-intervention**).
72+
6173
#### Minimap
6274

6375
Une carte de l'ensemble des cellules actives (calculées) de l'automate cellulaire est affichée dans l'un des coins du calculateur-afficheur (**Fminimap**). Cette carte permet d'afficher la taille de la partie visible de l'automate cellulaire, comparée à celle de l'automate complet.
Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
## Navigation Panning Design
2+
3+
This will require the following:
4+
5+
- A Keyboard manager
6+
7+
- Can be set to use either key or code, not both
8+
- ~~Refuse to subscribe two events on the same handle~~
9+
- ~~Allow the second function only if it mentions the first one,
10+
and tell in what order they should be executed
11+
"`next()`"~~
12+
- No this just sucks. Let's just accept to re-engineer the application.
13+
- Can be discarded
14+
- -> Reuse the keyboard manager of JsTetris? (jst.acq.js)
15+
- Re-reading it will be sufficient
16+
17+
- A Mouse manager
18+
- Exposes a click subscription interface
19+
- Exposes a drag / drop subscription interface
20+
- Adds / removes mousemove listener on mousedown / mouseup
21+
- Record the position of the mouse on mousedown (offsetX, offsetY)
22+
- Forwards mousemove information to the subscriber
23+
24+
### Keyboard manager
25+
26+
#### Todo
27+
28+
- ~~Disable keys that cannot be used [20 min]~~
29+
- ~~Move key logic to display.tsx, and use the hub to send events [40 min]~~
30+
- ~~Prevent logic from moving generation below 0 [5 min - included -- not timed]
31+
- Adding a file in `display/` which does binding of the keyboard keys between the manager and the hub [30 min]
32+
- Reconfigure now.sh to have a shorter address for :develop builds
33+
34+
#### Design
35+
36+
- Hook keydown on the right element
37+
- Allow to subscribe a function to a keypress
38+
- Allow to subscribe two functions to the keydown and the keyup events
39+
40+
(no: Allow to query the state of any key)
41+
42+
- Allow to remove a subscription
Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,62 @@
1+
## CellExp Navigation Specification
2+
3+
## Panning
4+
5+
The panning feature can be served via an **inorganic**, numeric interface, allowing to enter the location to display. While such an interface handles well the needs of precision panning, and fast remote access, it is also slow to use and attention-demanding.
6+
7+
There are some cases where it's nice to be able to pan around without having to
8+
select a field and type in it. We expect that more than 50% of these cases can
9+
be served by allowing to click-and-pan (click and drag), moving the image to
10+
follow the pointer. Some more cases can be served with the keyboard arrows, or
11+
alternatively, on phone, with panning arrow buttons, placed near the display,
12+
probably at it's top. These kind of interfaces can be labelled of **organic**
13+
for their greater ease of use, eventhough their possibilities are more limited.
14+
15+
### Panning Specification
16+
17+
#### Inorganic panning
18+
19+
It is possible to set the currently displayed location via text fields. This
20+
corresponds to the features (**Fconfig-post-t** and **Fconfig-post-x**, defined
21+
in `doc-project-fr/etude/fonctionnalite.md`).
22+
23+
#### Drag to pan
24+
25+
The feature is described above. The image is moved to follow the pointer or the
26+
finger while the mouse is clicked or while the finger is held down
27+
(**Fnav-pan-drag**).
28+
29+
#### Arrow navigation
30+
31+
Support the following arrows for horizontal movement (**Fnav-pan-horiz**):
32+
33+
- `<`, `>`, [ArrowLeft, ArrowRight] to perform small moves toward the left or
34+
right.
35+
- `<<`, `>>`, [Home, End], to go to the left end and right end of the ribbon.
36+
These arrows are disabled if the ribbon doesn't have a border in the direction
37+
of the arrow.
38+
- `::` (no keyboard key) to go to the center, for ribbons which have borders
39+
on both sides.
40+
- ``, `` (no keyboard key) to move by left or right by one whole display
41+
size.
42+
43+
Support the following arrows for vertical movement (**Fnav-pan-vert**):
44+
45+
- `^`, `v`, [ArrowUp, ArrowDown] to perform small moves up or down.
46+
- ``, ``, [PageUp, PageDown] to move up or down by one whole display size.
47+
- `` (no keyboard key) to go back to the top of the simulation
48+
49+
Note about `<`, `>`, ``, and ``: Over ribbons that have borders, it's not possible to go past the borders.
50+
51+
Note about `^` and ``: Going up past the beginning is not possible: `posT` doesn't go below 0.
52+
53+
Credit to Xahlee's work on [Unicode Arrows](http://xahlee.info/comp/unicode_arrows.html).
54+
55+
#### Panning and autoscrolling (playing)
56+
57+
While play is on, **Fnav-pan-drag-vert** will be disabled, while **Fnav-pan-drag-horiz** is still usable.
58+
59+
Using any horizontal arrow will be possible and will have the expected
60+
horizontal move effect.
61+
62+
Using any vertical arrow will be possible and will stop autoscrolling and have the expected vertical move effect.
Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
## Cellexp Specification Thinking Draft for navigation
2+
3+
## Panning
4+
5+
Options :
6+
7+
- Drag and drop on the display
8+
- Add inertia
9+
- Drag and drop but accelerated (acceleration factor)
10+
- Arrows on the sides of the display
11+
- Arrows inside the rendering area
12+
- Arrows outside the rendering area
13+
- Scroll bars
14+
- Minimap?
15+
- Keyboard arrows
16+
17+
There seem to be few useable options among the above:
18+
19+
- Drag and drop
20+
- Keyboard arrows
21+
22+
### Keyboard keys
23+
24+
- Use up the keyboard keys
25+
- Probably use up the `home` and `end` keys too
26+
- Requires the user to try using them to discover the feature
27+
- New behaviour than when a text field is selected, so it'd be better to limit
28+
them to when the display component is selected (/ focused ~)
29+
- Allows going from one border to the other (`home` / `end`)
30+
- Allows precise fast navigation
31+
- **Unavailable on phones**
32+
33+
### Drag and drop panning
34+
35+
- Use up the mouse or touchscreen
36+
- But **Fshow-propagation** and **Fca-divine-intervention** also require it
37+
- Slow to navigate large distances, such as to go from one border to the other
38+
- Maybe add a minimap? Maybe propose a "scroll anywhere" mode or a "click to jump" mode
39+
- Problems with the minimap, with the "click to jump" behavior for infinit maps
40+
- Let's only implement a "scroll anywhere" mode
41+
- Problem with the "scroll anywhere" mode: when the map is big, it becomes
42+
unprecise.
43+
- User needs to click in the display to discover the feature
44+
45+
What about panning arrows at the top of the display?
46+
47+
-- Stop

doc-projet-en/time.md

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
# Time tracking
2+
3+
## Keyboard binding
4+
5+
Time estimate: 4h
6+
2020-01-15T22:34+01 -> 2020-01-15T23:06+01 :: writing `display/keyboardManager.ts`
7+
2020-01-15T23:06+01 -> 2020-01-16T00:09+01 :: moving arrows and centering them (2x the expected time)
8+
2020-01-16T00:09+01 -> 2020-01-16T00:22+01 :: moving the display block to the top (.7x the expected time)
9+
2020-01-16T00:23+01 -> 2020-01-16T00:30+01 :: changing the button symbols (.7x the expected time)
10+
2020-01-16T07:13+01 -> 2020-01-16T07:45+01 :: disabling arrow that cannot be used (1.5x the expected time)
11+
2020-01-16T18:35+01 -> 2020-01-16T18:51+01 :: add a context for accessing the display (1.1x)
12+
2020-01-16T18:51+01 => 2020-01-16T19:22+01 :
13+
2020-01-16T19:53+01 => 2020-01-16T21:18+01 :
14+
: Move key logic to display.tsx (3x -- 1h50 instead of 40min)
15+
2020-01-16T21:55+01 -> () :: Keyboard binding (~1x ?)
16+
17+
Total: 5h10!
18+
The estimate was rather decent!

doc-projet-en/timeAdder.py

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
from datetime import datetime
2+
import sys
3+
4+
def eprint(*a, **kw):
5+
print(*a, file=sys.stderr, **kw)
6+
7+
book = []
8+
9+
with open("time.md") as f:
10+
it = iter(f)
11+
for line in it:
12+
if line == f"## {sys.argv[1]}\n":
13+
break
14+
for line in it:
15+
if line.startswith("## "):
16+
break
17+
if line.startswith("2020") and "> 2020" in line:
18+
book.append(line)
19+
20+
print(f"{len(book)=}")
21+
22+
total = 0
23+
24+
for line in book:
25+
sep = " -> "
26+
if sep not in line:
27+
sep = " => "
28+
if sep not in line:
29+
eprint(f"WARNING, with line [{line}]")
30+
continue
31+
a, bc = line.split(sep)
32+
b, cc = bc.split(" :")
33+
da = datetime.fromisoformat(a.split("+")[0])
34+
db = datetime.fromisoformat(b.split("+")[0])
35+
delta = db - da
36+
print(f"{dir(delta)=}")
37+
total += delta.total_seconds()
38+
39+
print(f"{total=}")
40+
print(f"{total//60=}")

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "cellular-automaton-explorer-1d",
3-
"version": "0.1.1",
3+
"version": "0.1.2",
44
"description": "Unidimensional cellular automaton explorer to highlight their unique properties",
55
"repository": "git@github.com:mathieucaroff/cellular-automaton-explorer-1d.git",
66
"author": "Mathieu CAROFF <mathieu.caroff@free.fr>",

parcel.cmd

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1,2 @@
1-
yarn parcel .\src\www\page.html
1+
#!/bin/bash
2+
yarn parcel ./src/www/page.html

0 commit comments

Comments
 (0)