Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found
Select Git revision
  • master
  • develop
  • feature/cordova-android-13
  • feature/migrate-cordova-13
  • feat/improve-network-scan
  • feat/force-migration-check
  • feature/encrypted_comment
  • feature/android_api_19
  • gitlab_migration_1
  • rml8
  • 0.0.1.ES.alpha1
  • 0.0.2
  • 0.1.13
  • 0.1.14
  • 0.1.15
  • 0.1.16
  • 0.1.17
  • 0.1.18
  • 0.1.19
  • 0.1.20
  • 0.1.21
  • 0.1.22
  • 0.1.23
  • 0.1.24
  • 0.1.25
  • 0.1.26
  • 0.1.27
  • 0.1.28
  • 0.1.4
  • 0.1.7
  • 0.1.8
  • 0.2.0
  • 0.2.1
  • v0.10.0
  • v0.10.1
  • v0.10.2
  • v0.11.0
  • v0.11.1
  • v0.11.2
  • v0.11.3
  • v0.11.4
  • v0.11.5
  • v0.11.6
  • v0.11.7
  • v0.11.8
  • v0.12.0
  • v0.12.1
  • v0.12.2
  • v0.12.3
  • v0.12.4
  • v0.12.5
  • v0.12.6
  • v0.12.7
  • v0.12.8
  • v0.12.9
  • v0.13.0
  • v0.14.0
  • v0.14.1
  • v0.15.0
  • v0.15.1
  • v0.15.2
  • v0.15.3
  • v0.15.4
  • v0.15.5
  • v0.15.6
  • v0.15.7
  • v0.16.0
  • v0.16.1
  • v0.17.0
  • v0.17.1
  • v0.17.2
  • v0.17.3
  • v0.17.4
  • v0.17.5
  • v0.17.6
  • v0.18.0
  • v0.18.1
  • v0.18.2
  • v0.18.3
  • v0.19.0
  • v0.19.1
  • v0.19.2
  • v0.19.3
  • v0.19.4
  • v0.19.5
  • v0.19.6
  • v0.2.10
  • v0.2.12
  • v0.2.13
  • v0.2.14
  • v0.2.3
  • v0.2.4
  • v0.2.5
  • v0.2.6
  • v0.2.7
  • v0.2.8
  • v0.2.9
  • v0.3.0
  • v0.3.1
  • v0.3.10
  • v0.3.11
  • v0.3.12
  • v0.3.13
  • v0.3.14
  • v0.3.15
  • v0.3.16
  • v0.3.17
  • v0.3.2
  • v0.3.3
  • v0.3.4
110 results

Target

Select target project
No results found
Select Git revision
  • master
  • Vivakvo-master-patch-80805
  • patch-26
  • patch-19
  • patch-25
  • patch-24
  • patch-23
  • patch-22
  • patch-21
  • patch-18
  • patch-17
  • Vivakvo-master-patch-99327
  • patch-16
  • patch-15
  • patch-14
  • patch-13
  • patch-12
  • patch-11
  • patch-10
  • patch-9
  • patch-6
  • patch-8
  • patch-7
  • patch-5
  • patch-4
  • undefined
  • patch-3
  • patch-2
  • patch-1
  • issue_4
  • issue_780
  • gitlab_migration_1
  • dev
  • rml8
  • 0.0.1.ES.alpha1
  • 0.0.2
  • 0.1.13
  • 0.1.14
  • 0.1.15
  • 0.1.16
  • 0.1.17
  • 0.1.18
  • 0.1.19
  • 0.1.20
  • 0.1.21
  • 0.1.22
  • 0.1.23
  • 0.1.24
  • 0.1.25
  • 0.1.26
  • 0.1.27
  • 0.1.28
  • 0.1.4
  • 0.1.7
  • 0.1.8
  • 0.2.0
  • 0.2.1
  • v0.10.0
  • v0.10.1
  • v0.10.2
  • v0.11.0
  • v0.11.1
  • v0.11.2
  • v0.11.3
  • v0.11.4
  • v0.11.5
  • v0.11.6
  • v0.11.7
  • v0.11.8
  • v0.12.0
  • v0.12.1
  • v0.12.2
  • v0.12.3
  • v0.12.4
  • v0.12.5
  • v0.12.6
  • v0.12.7
  • v0.12.8
  • v0.12.9
  • v0.13.0
  • v0.14.0
  • v0.14.1
  • v0.15.0
  • v0.15.1
  • v0.15.2
  • v0.15.3
  • v0.15.4
  • v0.15.5
  • v0.15.6
  • v0.15.7
  • v0.16.0
  • v0.16.1
  • v0.17.0
  • v0.17.1
  • v0.17.2
  • v0.17.3
  • v0.17.4
  • v0.17.5
  • v0.17.6
  • v0.18.0
  • v0.18.1
  • v0.18.2
  • v0.18.3
  • v0.19.0
  • v0.19.1
  • v0.19.2
  • v0.19.3
  • v0.19.4
  • v0.19.5
  • v0.19.6
  • v0.2.10
  • v0.2.12
  • v0.2.13
  • v0.2.14
  • v0.2.3
  • v0.2.4
  • v0.2.5
  • v0.2.6
  • v0.2.7
  • v0.2.8
  • v0.2.9
  • v0.3.0
  • v0.3.1
  • v0.3.10
  • v0.3.11
  • v0.3.12
  • v0.3.13
  • v0.3.14
  • v0.3.15
  • v0.3.16
  • v0.3.17
  • v0.3.2
  • v0.3.3
  • v0.3.4
134 results
Show changes
737 files
+ 49346
235340
Compare changes
  • Side-by-side
  • Inline

Files

.bowerrc

deleted100644 → 0
+0 −3
Original line number Original line Diff line number Diff line
{
  "directory": "www/lib"
}
+22 −16
Original line number Original line Diff line number Diff line
# Specifies intentionally untracked files to ignore when using Git
# Specifies intentionally untracked files to ignore when using Git
# http://git-scm.com/docs/gitignore
# http://git-scm.com/docs/gitignore


/www/lib/ionic-material
/www/lib/robotodraft

/node_modules/
/node_modules/
/platforms/*
/platforms/ios
!/platforms/desktop
/platforms/android
/platforms/desktop/*
!/platforms/android
/platforms/android/*
/resources/android/build/local.properties
/resources/android/build/local.properties
/resources/android/build/Cesium.keystore
/resources/android/build/*.keystore
/resources/android/build/release-signing.properties
/resources/android/build/release-signing.properties
/plugins/
/plugins/
.idea/
.idea/
.vscode/
.local/
.local/
.directory
/*.iml
/*.iml
/npm-debug.log
/package-lock.json
/yarn-error.log


/www/lib/*
/dist/web
!/www/lib/ionic
/dist/android
/www/js/config.js
/dist/*.sha256
/www/dist

/hooks/playstore-config.json
/hooks/uglify-config.json
/hooks/after_prepare/uglify.js

/scripts/sdkmanager.log


.directory
/www/js/config.js
/www/js/config.js
/www/dist
/www/lib


# Generated CSS
# Generated CSS
/www/css/ionic.app.css
/www/css/ionic.app.css
@@ -40,5 +43,8 @@
/www/css/leaflet.app.min.css
/www/css/leaflet.app.min.css
/www/img/layers*.png
/www/img/layers*.png
/www/img/marker*.png
/www/img/marker*.png
/www/img/loader.gif
/www/img/search-icon.png
/www/img/search-icon-mobile.png


env.sh
.run/*
+94 −52
Original line number Original line Diff line number Diff line
# ---------------------------------------------------------------
# Global
# ---------------------------------------------------------------

# default image
image: node:12

# stages (main steps of pipeline)
stages:
stages:
  - build
  - build
  - alt_build
  - alt_build
  - publish
  - deploy


fast-build:
# ---------------------------------------------------------------
  stage: build
# Global variables
  image: $CI_REGISTRY_IMAGE
# ---------------------------------------------------------------

variables:
    CI_BUILD_IMAGE: $CI_REGISTRY_IMAGE/build:develop

# ---------------------------------------------------------------
# Jobs templates
# ---------------------------------------------------------------

.docker:
  image: docker:latest
  tags: [redshift]
  services:
    - docker:dind
  before_script:
  before_script:
    - mv /customCache/node_modules ./
    - docker login -u ${CI_REGISTRY_USER} -p ${CI_REGISTRY_PASSWORD} ${CI_REGISTRY}
    - cp -rf /customCache/www ./
    #- docker login -u "duniterteam" -p "$DUNITERTEAM_PASSWD"
    - cp -rf /customCache/hooks ./
  after_script:
    - docker logout ${CI_REGISTRY}
    #- docker logout
  allow_failure: false

# ---------------------------------------------------------------
# Build jobs
# ---------------------------------------------------------------

.build:
  stage: build
  tags: [redshift]
  script:
  script:
    - node ./node_modules/gulp/bin/gulp build:web
    - yarn install
    - yarn run build:web
  after_script:
  after_script:
    - ls -la platforms/web/
    - ls -la dist/web/
    - du -csh platforms/web/
    - du -csh dist/web/
  artifacts:
  artifacts:
    untracked: true
    untracked: true
    paths:
    paths:
      - platforms/web
      - dist/web
    expire_in: 60 minutes
    expire_in: 60 minutes

build:
  extends: .build
  image: ${CI_BUILD_IMAGE}
  before_script:
    - mv /tmp/.build-cache/node_modules ./
  only:
  only:
    - master
    - develop
    - tags

failsafe-build:
failsafe-build:
  extends: .build
  stage: alt_build
  stage: alt_build
  when: on_failure
  when: on_failure
  image: node:5
  before_script:
  script:
    - yarn global add gulp
    - npm install
    - npm run postinstall
#    - node ./node_modules/gulp/bin/gulp config --env default_fr
    - node ./node_modules/gulp/bin/gulp build:web
  artifacts:
    untracked: true
    paths:
      - platforms/web
    expire_in: 60 minutes
  only:
  only:
    - master
    - develop
    - tags

docker-for-fast-build:
docker:ci:
  extends: .docker
  stage: alt_build
  stage: alt_build
  when: on_failure
  when: on_failure
  allow_failure: true
  allow_failure: true
  tags:
    - doppler-docker
  image: docker:latest
  services:
    - docker:dind
  script:
  script:
    - echo 'FROM node:5' > Dockerfile
    # Create the target directory
    - echo 'WORKDIR /customCache' >> Dockerfile
    - mkdir -p dist/ci
    - cd dist/ci
    # Create the Dockerfile
    - echo 'FROM node:12' > Dockerfile
    - echo 'WORKDIR /tmp/.build-cache' >> Dockerfile
    - echo 'COPY ./ ./' >> Dockerfile
    - echo 'COPY ./ ./' >> Dockerfile
    - echo 'RUN du -s `find . -maxdepth 1 | egrep -v "^\.$"`>/before.txt' >> Dockerfile
    # Store disk usage (before install)
    - echo 'RUN npm install' >> Dockerfile
    - echo 'RUN du -s `find . -maxdepth 1 | egrep -v "^\.$"` > /tmp/before.txt' >> Dockerfile
    - echo 'RUN npm run postinstall' >> Dockerfile
    - echo 'RUN du -s `find /tmp/.cache/yarn -maxdepth 1 | egrep -v "^\.$"` >> /tmp/before.txt' >> Dockerfile
    - echo 'RUN du -s `find . -maxdepth 1 | egrep -v "^\.$"`>/after.txt' >> Dockerfile
    # Install dependencies
    - echo 'RUN yarn global add gulp web-ext @ionic/cli' >> Dockerfile
    - echo 'RUN yarn install' >> Dockerfile
    # Store disk usage (after install)
    - echo 'RUN du -s `find . -maxdepth 1 | egrep -v "^\.$"` > /tmp/after.txt' >> Dockerfile
    - echo 'RUN du -s `find /tmp/.cache/yarn -maxdepth 1 | egrep -v "^\.$"` >> /tmp/after.txt' >> Dockerfile
    # Force docker to detect any changes
    - echo "RUN diff /tmp/before.txt /tmp/after.txt || true" >> Dockerfile
    - echo 'WORKDIR /build' >> Dockerfile
    - echo 'WORKDIR /build' >> Dockerfile
    - echo "RUN diff /before.txt /after.txt || true" >> Dockerfile
    # Build and push the CI image
    - docker login -u "gitlab-ci-token" -p "$CI_BUILD_TOKEN" $CI_REGISTRY
    - docker build --no-cache -t ${CI_BUILD_IMAGE} .
    - docker build --pull -t "$CI_REGISTRY_IMAGE" .
    - docker push ${CI_BUILD_IMAGE}
    - docker push "$CI_REGISTRY_IMAGE"
  artifacts:
    paths:
      - dist/ci/Dockerfile
    expire_in: 60 minutes


# ---------------------------------------------------------------
# Deploy jobs
# ---------------------------------------------------------------


pages:
pages:
  stage: publish
  stage: deploy
  image: node:latest
  variables:
  variables:
    GIT_STRATEGY: none
    GIT_STRATEGY: none
  script:
  script:
    - ls -la public || true
    - ls -la public || true
    - mv platforms/web/www public
    - mv dist/web/www public
  artifacts:
  artifacts:
    untracked: true
    untracked: true
    paths:
    paths:
      - public
      - public
  only:
  only:
    - master
    - master

mirror:
mirror:
  stage: publish
  stage: deploy
  image: liaohuqiu/rsync
  image: liaohuqiu/rsync
  before_script:
  before_script:
    - eval $(ssh-agent -s)
    - eval $(ssh-agent -s)
@@ -89,22 +133,20 @@ mirror:
      [[ -f /.dockerenv ]] && echo -e "Host *\n\tStrictHostKeyChecking no\n\n" >
      [[ -f /.dockerenv ]] && echo -e "Host *\n\tStrictHostKeyChecking no\n\n" >
      ~/.ssh/config
      ~/.ssh/config
  script:
  script:
    - mv platforms/web/www public
    - mv dist/web/www public
    - rsync -az -e ssh ./public/ gammanu@1000i100.fr:~/g1.money/dev-cesium
    - rsync -az -e ssh ./public/ gammanu@1000i100.fr:~/g1.money/dev-cesium
  after_script:
  after_script:
    - ssh gammanu@1000i100.fr "~/g1.money/update-cesium.sh"
    - ssh gammanu@1000i100.fr "~/g1.money/update-cesium.sh"
  only:
  only:
    - master
    - master



release:
release-web:
  stage: deploy
  stage: publish
  image: node:latest
  variables:
  variables:
    GIT_STRATEGY: none
    GIT_STRATEGY: none
  script:
  script:
    - ls -la www || true
    - ls -la www || true
    - mv platforms/web/www www
    - mv dist/web/www www
  artifacts:
  artifacts:
    untracked: true
    untracked: true
    paths:
    paths:
+4 −4
Original line number Original line Diff line number Diff line
[submodule "platforms/desktop"]
[submodule "dist/desktop"]
	path = platforms/desktop
	path = dist/desktop
	url = git@git.duniter.org:clients/cesium-grp/cesium-desktop.git
	url = git@git.duniter.org:clients/cesium-grp/cesium-desktop.git
[submodule "platforms/android"]
[submodule "dist/android/sources"]
	path = platforms/android
	path = dist/android/sources
	url = git@git.duniter.org:clients/cesium-grp/cesium-android.git
	url = git@git.duniter.org:clients/cesium-grp/cesium-android.git

.yarnrc

0 → 100644
+1 −0
Original line number Original line Diff line number Diff line
--install.ignore-engines true
+31 −73
Original line number Original line Diff line number Diff line
FROM     ubuntu:16.04
FROM  node:12
LABEL maintainer="benoit [dot] lavenier [at] e-is [dot] pro"
LABEL maintainer="benoit [dot] lavenier [at] e-is [dot] pro"
LABEL version="1.7.0-rc1"
LABEL description="Cesium Wallet for Ğ1 libre currency"

ARG CESIUM_VER="1.7.0-rc1"


ENV DEBIAN_FRONTEND=noninteractive \
ENV DEBIAN_FRONTEND=noninteractive \
    ANDROID_HOME=/opt/android-sdk-linux \
    NODE_VERSION=16.17.0 \
    NODE_VERSION=5.12.0 \
    NPM_VERSION=8.3.0 \
    NPM_VERSION=3.8.6 \
    YARN_VERSION=1.22.17 \
    IONIC_VERSION=1.7.16 \
    IONIC_CLI_VERSION=6.20.9 \
    BOWER_VERSION=1.8.0 \
    CORDOVA_VERSION=10.0.0 \
    CORDOVA_VERSION=6.5.0 \
    GRADLE_VERSION=6.5.1 \
    GRADLE_VERSION=4.1 \
    GULP_VERSION=4.0.2
    NDK_VERSION=r10e


# Install basics
# Install basics
RUN apt-get update &&  \
RUN apk update && \
    apt-get install -y git wget curl unzip build-essential ruby ruby-dev ruby-ffi gcc make && \
        apk add ca-certificates wget curl git && \
    curl --retry 3 -SLO "http://nodejs.org/dist/v$NODE_VERSION/node-v$NODE_VERSION-linux-x64.tar.gz" && \
        update-ca-certificates && \
    tar -xzf "node-v$NODE_VERSION-linux-x64.tar.gz" -C /usr/local --strip-components=1 && \
    apk add --update python make g++
    rm "node-v$NODE_VERSION-linux-x64.tar.gz" && \
    npm install -g npm@"$NPM_VERSION" && \
    npm install -g bower@"$BOWER_VERSION" cordova@"$CORDOVA_VERSION" ionic@"$IONIC_VERSION" && \
    npm cache clear --force

# install python-software-properties (so you can do add-apt-repository)
RUN apt-get update && apt-get install -y -q python-software-properties software-properties-common  && \
    add-apt-repository ppa:webupd8team/java -y && \
    echo oracle-java8-installer shared/accepted-oracle-license-v1-1 select true | /usr/bin/debconf-set-selections && \
    apt-get update && apt-get -y install oracle-java8-installer

#ANDROID STUFF
RUN echo ANDROID_HOME="${ANDROID_HOME}" >> /etc/environment && \
    dpkg --add-architecture i386 && \
    apt-get update && \
    apt-get install -y --force-yes expect ant wget zipalign libc6-i386 lib32stdc++6 lib32gcc1 lib32ncurses5 lib32z1 qemu-kvm kmod && \
    apt-get clean && \
    apt-get autoclean && \
    rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*

# Install Android SDK
RUN cd /opt && \
    wget --output-document=android-sdk.tgz --quiet http://dl.google.com/android/android-sdk_r24.4.1-linux.tgz && \
    tar xzf android-sdk.tgz && \
    rm -f android-sdk.tgz && \
    chown -R root. /opt

RUN cd /opt/ && \
  wget --output-document=android-ndk.zip --quiet  https://dl.google.com/android/repository/android-ndk-$NDK_VERSION-linux-x86_64.zip && \
  unzip android-ndk.zip && \
  rm android-ndk.zip && \
  chown -R root. /opt

# Install Gradle
RUN wget https://services.gradle.org/distributions/gradle-"$GRADLE_VERSION"-bin.zip && \
    mkdir /opt/gradle && \
    unzip -d /opt/gradle gradle-"$GRADLE_VERSION"-bin.zip && \
    rm -rf gradle-"$GRADLE_VERSION"-bin.zip

# Setup environment

ENV PATH ${PATH}:${ANDROID_HOME}/tools:${ANDROID_HOME}/platform-tools:/opt/tools:/opt/gradle/gradle-"$GRADLE_VERSION"/bin


# Install sdk elements
# create group and user cesium
COPY resources/android/build/tools /opt/tools
RUN addgroup -S -g 1111 cesium && \
RUN chmod u+x /opt/tools/*.sh
	adduser -SD -h /cesium -G cesium -u 1111 cesium
RUN ["/opt/tools/android-accept-licenses.sh", "android update sdk --all --no-ui --filter platform-tools,tools,build-tools-26.0.0,android-26,build-tools-25.0.0,android-25,extra-android-support,extra-android-m2repository,extra-google-m2repository"]
#RUN mkdir -p /var/lib/cesium /etc/cesium && chown cesium:cesium /var/lib/cesium /etc/cesium
RUN unzip ${ANDROID_HOME}/temp/*.zip -d ${ANDROID_HOME}


# Install global dependencies
RUN yarn global add gulp@"$GULP_VERSION" @ionic/cli@"$IONIC_CLI_VERSION"


# Install source code
# copy source tree
#RUN git config --global user.email "user.name@domain.com" && \
COPY ./ ./
#    git config --global user.name "User Name" && \
RUN git clone git@git.duniter.org:clients/cesium-grp/cesium.git && \
    cd cesium && \
    npm install


# Restore cordova platforms
RUN test -f package.json || git clone https://github.com/duniter/cesium.git && cd cesium
RUN cd cesium && \
    ionic state restore


# TODO: Test First Build so that it will be faster later
# Install project dependencies
##  ionic cordova build android --prod --no-interactive --release
# Workaround need for node-sass (- )see https://github.com/yarnpkg/yarn/issues/4867)
RUN yarn install --ignore-engines && \
    yarn remove node-sass && yarn add node-sass


WORKDIR cesium
WORKDIR /cesium
EXPOSE 8100 35729
EXPOSE 8100 35729
CMD ["ionic", "serve"]
CMD ["yarn", "run", "start"]
+24 −84
Original line number Original line Diff line number Diff line
@@ -2,12 +2,25 @@


# Cesium
# Cesium


 - [Unhosted webapp](https://unhosted.org) client for any [Duniter](https://duniter.org) crypto-currency.
Cesium is wallet client software for [Duniter](https://duniter.org) crypto-currency, like Ğ1.
 - Manage your wallet, certify your friends, and more ! 
Cesium allow you to manage your wallet, certify your friends, and more!
 - [Web site](https://cesium.app)

Cesium is an [Unhosted](https://unhosted.org) Progressive Web Application (PWA), using AngularJS and Ionic.

Please visit th Cesium web site: [cesium.app](https://cesium.app)


## Install
## Install


### As a web extension (Firefox, Chrome)

 - Download the [latest extension release](https://github.com/duniter/cesium/releases/latest)
 
 - Drag/drop the file into your browser;
 
 - Confirm the installation.
 
 That's it! A new button is appeared, on the top right corner.
 
### On desktop computer
### On desktop computer


 - Download the [latest release](https://github.com/duniter/cesium/releases/latest)
 - Download the [latest release](https://github.com/duniter/cesium/releases/latest)
@@ -27,85 +40,9 @@
    * Manual installation: download then install the `.apk` from your smartphone;
    * Manual installation: download then install the `.apk` from your smartphone;
    * [Play Store](https://play.google.com/store/apps/details?id=fr.duniter.cesium);
    * [Play Store](https://play.google.com/store/apps/details?id=fr.duniter.cesium);
 - iOS
 - iOS
    * Coming soon...;
    * [App Store](https://apps.apple.com/us/app/cesium-%C4%9F1/id1471028018);

### As a web site

#### First installation

Cesium can be easily installed on most web server : 

 - Download the [latest release](https://github.com/duniter/cesium/releases/latest) (file `cesium-vx.y.z-web.zip`); 
 - Unpack into an empty directory;
 - Configure the web server engine (e.g. apache, nginx):
    * Add a new virtual host, that use the directory as `web root`. 
    * Make sure the file `index.html` exist inside this directory.

#### Update to last version

On Linux distributions, an update script can be used to update your Cesium web site:


```
cd <CESIUM_WEB_ROOT>
curl -kL https://git.duniter.org/clients/cesium-grp/cesium/raw/master/install.sh | bash
```
or:


```
cd <CESIUM_WEB_ROOT>
wget -qO- https://git.duniter.org/clients/cesium-grp/cesium/raw/master/install.sh | bash
```


**Note**: You may need root permission to write files. If so just replace `| bash` with `| sudo bash`.

#### Changing default settings 

To change default configuration, on a Cesium web site:

  - Edit the file `config.js` in the web root directory, and change some properties:
  
```js
angular.module("cesium.config", [])
.constant("csConfig", {
  "fallbackLanguage": "en",
  "rememberMe": false,
  "timeWarningExpireMembership": 5184000,
  "timeWarningExpire": 7776000,
  "useLocalStorage": true,
  "useRelative": true,
  "decimalCount": 4,
  "helptip": {
    "enable": true,
    "installDocUrl": "https://github.com/duniter/duniter/blob/master/doc/install-a-node.md"
  },
  "node": {
    "host": "g1.duniter.org",
    "port": "443"
  },
	"plugins": {
		"es": {
			"enable": "true",
			"host": "g1.data.duniter.fr",
			"port": "443"
		}
	},
	"version": "1.3.7",
	"build": "2019-04-02T08:27:57.915Z"
});
```

  - Configure a Duniter node:
 
     * set `node.host` and `node.port` to the default node address. 
   
  - Configure the optional extension for [Cesium+](https://git.duniter.org/clients/cesium-grp/cesium-plus-pod/)
 
     * set `plugins.es.host` and `plugins.es.port` to the default Cesium+ Pod (aka ES) address.
   
     * set `plugins.es.enable` with [true|false] to change the default extension state. 
   
To learn more about configuration options, see the [detailed documentation](doc/configuration.md).
 
 
#### Yunohost package
#### Yunohost package
    
    
@@ -118,11 +55,14 @@ A [Development Guide](doc/development_guide.md) is available to learn :
 - Development best practices.
 - Development best practices.
 
 
A [development tutorial](doc/fr/development_tutorial-01.md) (in French) is also available.
A [development tutorial](doc/fr/development_tutorial-01.md) (in French) is also available.
The [first 3 lessons of the tutorial](doc/en/development_tutorial-01.md) have also been translated into english.


## Donate
## Donate


To help developers with donation, use the [Cesium Team Ğ1 account](https://g1.duniter.fr#/app/wot/CitdnuQgZ45tNFCagay7Wh12gwwHM8VLej1sWmfHWnQX/) (public key: `CitdnuQgZ45tNFCagay7Wh12gwwHM8VLej1sWmfHWnQX`) 
To help developers with donation, use the [Cesium Team Ğ1 account](https://demo.cesium.app#/app/wot/CitdnuQgZ45tNFCagay7Wh12gwwHM8VLej1sWmfHWnQX/) (public key: `CitdnuQgZ45tNFCagay7Wh12gwwHM8VLej1sWmfHWnQX`) 


## License
## License


This software is distributed under [GNU AGPL-3.0](https://raw.github.com/duniter/cesium/master/LICENSE).
This software is distributed under [GNU AGPL-3.0](https://raw.github.com/duniter/cesium/master/LICENSE).

Please read also our [privacy policy](./doc/privacy_policy.md).
 No newline at end of file
+107 −172
Original line number Original line Diff line number Diff line
{
{
  "default": {
  "default": {
    "cacheTimeMs": 300000,
    "cacheTimeMs": 300000,
    "demo": false,
    "readonly": false,
    "fallbackLanguage": "en",
    "fallbackLanguage": "en",
    "rememberMe": true,
    "rememberMe": true,
    "showUDHistory": true,
    "showUDHistory": true,
    "timeout": 30000,
    "timeout": 30000,
    "timeWarningExpireMembership": 5184000,
    "timeWarningExpireMembership": 5184000,
    "timeWarningExpire": 7776000,
    "timeWarningExpire": 7776000,
    "minConsensusPeerCount": 10,
    "keepAuthIdle": 600,
    "keepAuthIdle": 600,
    "useLocalStorage": true,
    "useLocalStorage": true,
    "useRelative": false,
    "useRelative": false,
    "expertMode": false,
    "expertMode": false,
    "decimalCount": 2,
    "decimalCount": 2,
    "httpsMode": false,
    "httpsMode": false,
    "shareBaseUrl": "https://g1.duniter.fr",
    "shareBaseUrl": "https://demo.cesium.app/",
    "helptip": {
    "helptip": {
      "enable": true,
      "enable": true,
      "installDocUrl": {
      "installDocUrl": {
        "fr-FR": "https://duniter.org/fr/wiki/duniter/installer/",
        "fr-FR": "https://duniter.fr/wiki/doc/installer/",
        "en": "https://duniter.org/en/wiki/duniter/install/"
        "en": "https://duniter.org/wiki/doc/install/"
      }
      }
    },
    },
    "license": {
    "license": {
      "ca": "license/license_g1-ca",
      "de-DE": "license/license_g1-de-DE",
      "en": "license/license_g1-en",
      "en-GB": "license/license_g1-en",
      "eo-EO": "license/license_g1-eo-EO",
      "es-ES": "license/license_g1-es-ES",
      "fr-FR": "license/license_g1-fr-FR",
      "fr-FR": "license/license_g1-fr-FR",
      "en": "license/license_g1-en"
      "it-IT": "license/license_g1-it-IT",
    },
      "pt-PT": "license/license_g1-pt-PT"
    "node": {
    },
      "host": "g1.duniter.org",
    "feed": {
      "port": 443
      "jsonFeed": {
        "ca": "https://raw.githubusercontent.com/duniter/cesium/master/doc/feed/1.1/feed-ca.json",
        "de-DE": "https://raw.githubusercontent.com/duniter/cesium/master/doc/feed/1.1/feed-de-DE.json",
        "en": "https://raw.githubusercontent.com/duniter/cesium/master/doc/feed/1.1/feed-en.json",
        "en-GB": "https://raw.githubusercontent.com/duniter/cesium/master/doc/feed/1.1/feed-en-GB.json",
        "eo-EO": "https://raw.githubusercontent.com/duniter/cesium/master/doc/feed/1.1/feed-eo-EO.json",
        "es-ES": "https://raw.githubusercontent.com/duniter/cesium/master/doc/feed/1.1/feed-es-ES.json",
        "fr-FR": "https://raw.githubusercontent.com/duniter/cesium/master/doc/feed/1.1/feed-fr-FR.json",
        "it-IT": "https://raw.githubusercontent.com/duniter/cesium/master/doc/feed/1.1/feed-it-IT.json",
        "nl-NL": "https://raw.githubusercontent.com/duniter/cesium/master/doc/feed/1.1/feed-nl-NL.json",
        "pt-PT": "https://raw.githubusercontent.com/duniter/cesium/master/doc/feed/1.1/feed-pt-PT.json"
      },
      "maxContentLength": 1300,
      "maxAgeInMonths": 3,
      "maxCount": 3
    },
    },
    "fallbackNodes": [
    "fallbackNodes": [
      {
      {
        "host": "g1.nordstrom.duniter.org",
        "host": "g1.e-is.pro",
        "port": 443
        "port": 443
      },
      },
      {
      {
        "host": "g1.cgeek.fr",
        "host": "vit.fdn.org",
        "port": 443
        "port": 443
      },
      },
      {
      {
        "host": "g1.monnaielibreoccitanie.org",
        "host": "g1.cgeek.fr",
        "port": 443
      },
      {
        "host": "g1.le-sou.org",
        "port": 443
      },
      {
        "host": "g1.duniter.fr",
        "port": 443
      }
    ],
    "developers": [
      {"name": "Benoit Lavenier", "pubkey": "38MEAZN68Pz1DTvT3tqgxx4yQP6snJCQhPqEFxbDk4aE"}
    ],
    "plugins":{
      "es": {
        "enable": true,
        "askEnable": true,
        "useRemoteStorage": true,
        "host": "g1.data.duniter.fr",
        "port": 443,
        "fallbackNodes": [
          {
            "host": "g1.data.le-sou.org",
        "port": 443
        "port": 443
      },
      },
      {
      {
            "host": "g1.data.duniter.fr",
        "host": "g1.mithril.re",
            "port": 443
          }
        ],
        "notifications": {
          "txSent": true,
          "txReceived": true,
          "certSent": true,
          "certReceived": true
        },
        "defaultCountry": "France"
      }
    }
  },

  "default_fr": {
    "cacheTimeMs": 300000,
    "fallbackLanguage": "fr",
    "rememberMe": true,
    "showUDHistory": true,
    "timeout": 300000,
    "timeWarningExpireMembership": 5184000,
    "timeWarningExpire": 7776000,
    "keepAuthIdle": 600,
    "useLocalStorage": true,
    "useRelative": false,
    "expertMode": false,
    "decimalCount": 2,
    "httpsMode": false,
    "shareBaseUrl": "https://g1.duniter.fr",
    "helptip": {
      "enable": true,
      "installDocUrl": {
        "fr-FR": "https://duniter.org/fr/wiki/duniter/installer/",
        "en": "https://duniter.org/en/wiki/duniter/install/"
      }
    },
    "license": {
      "fr-FR": "license/license_g1-fr-FR",
      "en": "license/license_g1-en"
    },
    "node": {
      "host": "g1.duniter.fr",
        "port": 443
        "port": 443
      },
      },
    "fallbackNodes": [
      {
      {
        "host": "g1.duniter.fr",
        "host": "g1.duniter.org",
        "port": 443
        "port": 443
      },
      },
      {
      {
        "host": "g1.monnaielibreoccitanie.org",
        "host": "g1.le-sou.org",
        "port": 443
        "port": 443
      },
      },
      {
      {
        "host": "g1.le-sou.org",
        "host": "duniter.pini.fr",
        "port": 443
        "port": 443
      },
      },
      {
      {
        "host": "duniter.normandie-libre.fr",
        "host": "g1.moul.re",
        "port": 443
        "port": 443
      },
      },
      {
      {
        "host": "g1.duniter.org",
        "host": "duniter-v1.comunes.net",
        "port": 443
        "port": 443
      }
      }
    ],
    ],
    "developers": [
      {"name": "Benoit Lavenier", "pubkey": "38MEAZN68Pz1DTvT3tqgxx4yQP6snJCQhPqEFxbDk4aE"},
      {"name": "Cédric Moreau", "pubkey": "2ny7YAdmzReQxAayyJZsyVYwYhVyax2thKcGknmQy5nQ"},
      {"name": "Kapis", "pubkey": "24jaf8XhYZyDyUb7hMcy5qsanaHBC11AwPefcCQRBQNA"},
      {"name": "Matograine", "pubkey": "CmFKubyqbmJWbhyH2eEPVSSs4H4NeXGDfrETzEnRFtPd"}
    ],
    "plugins":{
    "plugins":{
      "es": {
      "es": {
        "enable": true,
        "enable": true,
        "askEnable": true,
        "askEnable": true,
        "useRemoteStorage": true,
        "useRemoteStorage": true,
        "host": "g1.data.duniter.fr",
        "host": "g1.data.e-is.pro",
        "port": 443,
        "port": 443,
        "fallbackNodes": [
        "fallbackNodes": [
          {
          {
            "host": "g1.data.le-sou.org",
            "host": "g1.data.presles.fr",
            "port": 443
            "port": 443
          },
          },
          {
          {
            "host": "g1.data.duniter.fr",
            "host": "g1.data.le-sou.org",
            "port": 443
          }
        ],
        "notifications": {
          "txSent": true,
          "txReceived": true,
          "certSent": true,
          "certReceived": true
        },
        "defaultCountry": "France"
      }
    }
  },

  "le-sou": {
    "cacheTimeMs": 300000,
    "fallbackLanguage": "fr-FR",
    "defaultLanguage": "fr-FR",
    "rememberMe": true,
    "timeout": 30000,
    "timeWarningExpireMembership": 5184000,
    "timeWarningExpire": 7776000,
    "keepAuthIdle": 600,
    "useLocalStorage": true,
    "useRelative": false,
    "expertMode": false,
    "decimalCount": 2,
    "httpsMode": false,
    "shareBaseUrl": "https://g1.le-sou.org",
    "helptip": {
      "enable": true,
      "installDocUrl": {
        "fr-FR": "https://www.le-sou.org/devenir-noeud/",
        "en": "https://duniter.org/en/wiki/duniter/install/"
      }
    },
    "license": {
      "fr-FR": "license/license_g1-fr-FR",
      "en": "license/license_g1-en"
    },
    "node": {
      "host": "g1.le-sou.org",
            "port": 443
            "port": 443
          },
          },
    "fallbackNodes": [
          {
          {
        "host": "g1.duniter.org",
            "host": "g1.data.brussels.ovh",
            "port": 443
            "port": 443
          },
          },
          {
          {
        "host": "g1.duniter.fr",
            "host": "g1.data.pini.fr",
            "port": 443
            "port": 443
      }
          },
    ],
    "plugins":{
      "es": {
        "enable": true,
        "askEnable": true,
        "useRemoteStorage": true,
        "host": "g1.data.le-sou.org",
        "port": 443,
        "fallbackNodes": [
          {
          {
            "host": "g1.data.le-sou.org",
            "host": "g1.data.mithril.re",
            "port": 443
            "port": 443
          },
          },
          {
          {
            "host": "g1.data.duniter.fr",
            "host": "g1.data.e-is.pro",
            "port": 443
            "port": 443
          }
          }
        ],
        ],
@@ -230,24 +140,28 @@
    }
    }
  },
  },



  "g1-test": {
  "g1-test": {
    "cacheTimeMs": 300000,
    "cacheTimeMs": 300000,
    "demo": false,
    "readonly": false,
    "fallbackLanguage": "en",
    "fallbackLanguage": "en",
    "rememberMe": true,
    "rememberMe": true,
    "timeout": 300000,
    "showUDHistory": true,
    "timeout": 30000,
    "timeWarningExpireMembership": 5184000,
    "timeWarningExpireMembership": 5184000,
    "timeWarningExpire": 7776000,
    "timeWarningExpire": 7776000,
    "minConsensusPeerCount": -1,
    "useLocalStorage": true,
    "useLocalStorage": true,
    "useRelative": false,
    "useRelative": false,
    "expertMode": true,
    "expertMode": true,
    "decimalCount": 2,
    "decimalCount": 2,
    "shareBaseUrl": "https://g1.duniter.fr",
    "httpsMode": false,
    "shareBaseUrl": "https://g1-test.cesium.app",
    "helptip": {
    "helptip": {
      "enable": false,
      "enable": false,
      "installDocUrl": {
      "installDocUrl": {
        "fr-FR": "https://duniter.org/fr/wiki/duniter/installer/",
        "fr-FR": "https://duniter.fr/wiki/doc/installer/",
        "en": "https://github.com/duniter/duniter/blob/master/doc/install-a-node.md"
        "en": "https://duniter.org/wiki/doc/install/"
      }
      }
    },
    },
    "node": {
    "node": {
@@ -256,16 +170,26 @@
    },
    },
    "fallbackNodes": [
    "fallbackNodes": [
      {
      {
        "host": "g1-test.cgeek.fr",
        "host": "gt.moul.re",
        "port": 10902
      },
      {
        "host": "g1-test.duniter.org",
        "port": 443
        "port": 443
      }
      }
    ],
    ],
    "developers": [
      {"name": "Benoit Lavenier", "pubkey": "38MEAZN68Pz1DTvT3tqgxx4yQP6snJCQhPqEFxbDk4aE"},
      {"name": "Cédric Moreau", "pubkey": "2ny7YAdmzReQxAayyJZsyVYwYhVyax2thKcGknmQy5nQ"},
      {"name": "Kapis", "pubkey": "24jaf8XhYZyDyUb7hMcy5qsanaHBC11AwPefcCQRBQNA"},
      {"name": "Matograine", "pubkey": "CmFKubyqbmJWbhyH2eEPVSSs4H4NeXGDfrETzEnRFtPd"}
    ],
    "plugins":{
    "plugins":{
      "es": {
      "es": {
        "enable": true,
        "enable": false,
        "askEnable": true,
        "askEnable": false,
        "useRemoteStorage": true,
        "useRemoteStorage": false,
        "host": "g1-test.data.duniter.fr",
        "host": "g1-test.data.e-is.pro",
        "port": 443,
        "port": 443,
        "notifications": {
        "notifications": {
          "txSent": true,
          "txSent": true,
@@ -280,6 +204,8 @@


  "dev": {
  "dev": {
    "cacheTimeMs": 300000,
    "cacheTimeMs": 300000,
    "demo": false,
    "readonly": false,
    "fallbackLanguage": "fr-FR",
    "fallbackLanguage": "fr-FR",
    "defaultLanguage": "fr-FR",
    "defaultLanguage": "fr-FR",
    "rememberMe": true,
    "rememberMe": true,
@@ -294,16 +220,21 @@
    "helptip": {
    "helptip": {
      "enable": false,
      "enable": false,
      "installDocUrl": {
      "installDocUrl": {
        "fr-FR": "https://duniter.org/fr/wiki/duniter/installer/",
        "fr-FR": "https://duniter.fr/wiki/doc/installer/",
        "en": "https://duniter.org/en/wiki/duniter/install/"
        "en": "https://duniter.org/en/wiki/duniter/install/"
      }
      }
    },
    },
    "license": {
    "license": {
      "en": "license/license_g1-en",
      "fr-FR": "license/license_g1-fr-FR",
      "fr-FR": "license/license_g1-fr-FR",
      "en": "license/license_g1-en"
      "es-ES": "license/license_g1-es-ES",
      "eo-EO": "license/license_g1-eo-EO",
      "pt-PT": "license/license_g1-pt-PT",
      "it-IT": "license/license_g1-it-IT",
      "de-DE": "license/license_g1-de-DE"
    },
    },
    "node": {
    "node": {
      "host": "g1.duniter.fr",
      "host": "g1.e-is.pro",
      "port": 443
      "port": 443
    },
    },
    "fallbackNodes": [{
    "fallbackNodes": [{
@@ -311,7 +242,7 @@
        "port": 443
        "port": 443
      },
      },
      {
      {
        "host": "g1.duniter.fr",
        "host": "g1.e-is.pro",
        "port": 443
        "port": 443
      }
      }
    ],
    ],
@@ -328,7 +259,7 @@
            "port": 443
            "port": 443
          },
          },
          {
          {
            "host": "g1.data.duniter.fr",
            "host": "g1.data.e-is.pro",
            "port": 443
            "port": 443
          }
          }
        ],
        ],
@@ -343,9 +274,6 @@
      "graph": {
      "graph": {
        "enable": true
        "enable": true
      },
      },
      "neo4j": {
        "enable": true
      },
      "rml9": {
      "rml9": {
        "enable": true
        "enable": true
      }
      }
@@ -354,6 +282,8 @@


  "dev_g1": {
  "dev_g1": {
    "cacheTimeMs": 300000,
    "cacheTimeMs": 300000,
    "demo": false,
    "readonly": false,
    "fallbackLanguage": "en",
    "fallbackLanguage": "en",
    "rememberMe": true,
    "rememberMe": true,
    "showUDHistory": true,
    "showUDHistory": true,
@@ -368,11 +298,19 @@
    "httpsMode": false,
    "httpsMode": false,
    "helptip": {
    "helptip": {
      "enable": false,
      "enable": false,
      "installDocUrl": "https://github.com/duniter/duniter/blob/master/doc/install-a-node.md"
      "installDocUrl": {
        "fr-FR": "https://duniter.fr/wiki/doc/installer/",
        "en": "https://duniter.org/en/wiki/duniter/install/"
      }
    },
    },
    "license": {
    "license": {
      "fr-FR": "license/license_g1-fr-FR.txt",
      "en": "license/license_g1-en",
      "en": "license/license_g1-en.txt"
      "fr-FR": "license/license_g1-fr-FR",
      "es-ES": "license/license_g1-es-ES",
      "eo-EO": "license/license_g1-eo-EO",
      "pt-PT": "license/license_g1-pt-PT",
      "it-IT": "license/license_g1-it-IT",
      "de-DE": "license/license_g1-de-DE"
    },
    },
    "node": {
    "node": {
      "host": "g1.duniter.org",
      "host": "g1.duniter.org",
@@ -390,9 +328,6 @@
      "graph": {
      "graph": {
        "enable": true
        "enable": true
      },
      },
      "neo4j": {
        "enable": true
      },
      "rml9": {
      "rml9": {
        "enable": true
        "enable": true
      }
      }

bower.json

deleted100644 → 0
+0 −35
Original line number Original line Diff line number Diff line
{
  "name": "cesium",
  "private": "true",
  "devDependencies": {
    "ionic": "driftyco/ionic-bower#1.3.5",
    "ionic-material": "0.4.2"
  },
  "dependencies": {
    "angular-messages": "1.3.13",
    "robotodraft": "1.1.0",
    "angular-moment": "^0.10.3",
    "angular-animate": "1.5.3",
    "angular-sanitize": "1.5.3",
    "angular": "1.5.3",
    "angular-bind-notifier": "^1.1.7",
    "angular-image-crop": "^2.0.0",
    "ng-idle": "^1.3.2",
    "chart.js": "chartjs#^2.6.0",
    "Leaflet.awesome-markers": "^2.0.2",
    "leaflet-search": "^2.7.2",
    "angular-leaflet-directive": "angular-leaflet#^0.10.0",
    "Leaflet.EasyButton": "~1.3.2",
    "leaflet.loading": "Leaflet.loading#^0.1.24",
    "ui-leaflet": "^2.0.0",
    "leaflet.markercluster": "0.5",
    "Leaflet.FeatureGroup.SubGroup": "0.1.2",
    "ion-digit-keyboard": "skol-pro/ion-digit-keyboard"
  },
  "resolutions": {
    "angular": "1.5.3",
    "ionic": "1.3.5",
    "angular-animate": "1.5.3",
    "angular-sanitize": "1.5.3"
  }
}

build.json

0 → 100644
+18 −0
Original line number Original line Diff line number Diff line
{
  "android": {
  },
  "ios": {
    "debug": {
      "codeSignIdentity": "iPhone Developer",
      "developmentTeam": "3TH8P5JJ9J",
      "automaticProvisioning": true,
      "packageType": "development"
    },
    "release": {
      "codeSignIdentity": "iPhone Developer",
      "developmentTeam": "3TH8P5JJ9J",
      "automaticProvisioning": true,
      "packageType": "app-store"
    }
  }
}
+73 −28
Original line number Original line Diff line number Diff line
<?xml version='1.0' encoding='utf-8'?>
<?xml version='1.0' encoding='utf-8'?>
<widget android-versionCode="10402" id="fr.duniter.cesium" version="1.4.2" xmlns="http://www.w3.org/ns/widgets" xmlns:cdv="http://cordova.apache.org/ns/1.0">
<widget android-versionCode="107160" id="fr.duniter.cesium" ios-CFBundleIdentifier="org.duniter.cesium" version="1.7.16" xmlns="http://www.w3.org/ns/widgets" xmlns:android="http://schemas.android.com/apk/res/android" xmlns:cdv="http://cordova.apache.org/ns/1.0">
    <name>Cesium</name>
    <name>Cesium</name>
    <description>
    <description>
    An simple App for Duniter wallet
      Cesium Wallet for Ğ1 libre currency
    </description>
    </description>
    <author email="contact@e-is.pro">
    <author email="contact@e-is.pro">
      E-IS PRO
      E-IS PRO
@@ -15,40 +15,61 @@
    <allow-intent href="sms:*" />
    <allow-intent href="sms:*" />
    <allow-intent href="mailto:*" />
    <allow-intent href="mailto:*" />
    <allow-intent href="geo:*" />
    <allow-intent href="geo:*" />
    <allow-intent href="june:*" />
    <allow-intent href="web+june:*" />
    <allow-navigation href="http://*/*" />
    <allow-navigation href="http://*/*" />
    <allow-navigation href="https://*/*" />
    <allow-navigation href="https://*/*" />
    <allow-navigation href="data:*" />
    <allow-navigation href="data:*" />
    <allow-navigation href="june:*" />
    <allow-navigation href="web+june:*" />
    <icon src="www/img/logo_96px.png" />
    <icon src="www/img/logo_96px.png" />
    <preference name="webviewbounce" value="false" />
    <preference name="webviewbounce" value="false" />
    <preference name="UIWebViewBounce" value="false" />
    <preference name="UIWebViewBounce" value="false" />
    <preference name="DisallowOverscroll" value="true" />
    <preference name="DisallowOverscroll" value="true" />
    <preference name="SplashScreen" value="screen" />
    <preference name="SplashScreen" value="screen" />
    <preference name="SplashScreenDelay" value="4000" />
    <preference name="SplashScreenDelay" value="2500" />
    <preference name="KeyboardDisplayRequiresUserAction" value="false" />
    <preference name="KeyboardDisplayRequiresUserAction" value="false" />
    <preference name="KeyboardResizeMode" value="ionic" />
    <preference name="xwalkVersion" value="19" />
    <preference name="xwalkVersion" value="19" />
    <preference name="xwalkMultipleApk" value="false" />
    <preference name="xwalkMultipleApk" value="false" />
    <preference name="android-minSdkVersion" value="16" />
    <preference name="android-targetSdkVersion" value="26" />
    <preference name="StatusBarOverlaysWebView" value="false" />
    <preference name="StatusBarOverlaysWebView" value="false" />
    <preference name="StatusBarBackgroundColor" value="#000" />
    <preference name="StatusBarBackgroundColor" value="#000" />
    <preference name="StatusBarStyle" value="lightcontent" />
    <preference name="StatusBarStyle" value="lightcontent" />
    <allow-navigation href="*" />
    <preference name="loadUrlTimeoutValue" value="700000" />
    <hook src="scripts/hooks/before_prepare.js" type="before_prepare" />
    <hook src="scripts/hooks/after_prepare.js" type="after_prepare" />
    <hook src="scripts/hooks/before_compile.js" type="before_compile" />
    <feature name="StatusBar">
    <feature name="StatusBar">
        <param name="ios-package" onload="true" value="CDVStatusBar" />
        <param name="ios-package" onload="true" value="CDVStatusBar" />
    </feature>
    </feature>
    <feature name="Device">
    <feature name="Device">
        <param name="android-package" onload="true" value="org.apache.cordova.device.Device" />
        <param name="android-package" onload="true" value="org.apache.cordova.device.Device" />
    </feature>
    </feature>
    <feature name="MiniSodium">
    <feature name="Custom URL scheme">
        <param name="android-package" onload="true" value="me.lockate.plugins.MiniSodium" />
        <param name="id" value="cordova-plugin-customurlscheme" />
        <param name="url" value="https://github.com/EddyVerbruggen/Custom-URL-scheme.git" />
        <variable name="URL_SCHEME" value="june" />
    </feature>
    </feature>
    <platform name="android">
    <platform name="android">
        <preference name="AndroidLaunchMode" value="singleTask" />
        <preference name="AndroidInsecureFileModeEnabled" value="true" />
        <preference name="android-minSdkVersion" value="22" />
        <preference name="android-targetSdkVersion" value="35" />
        <preference name="android-compileSdkVersion" value="35" />
        <preference name="AndroidJavaSourceCompatibility" value="8" />
        <preference name="AndroidTargetSourceCompatibility" value="8" />
        <preference name="GradlePluginKotlinEnabled" value="true" />
        <preference name="GradleVersion" value="8.7" />
        <preference name="AndroidKotlinJVMTarget" value="8" />
        <preference name="AndroidPersistentFileLocation" value="Compatibility" />
        <icon density="ldpi" src="resources/android/icon/drawable-ldpi-icon.png" />
        <icon density="ldpi" src="resources/android/icon/drawable-ldpi-icon.png" />
        <icon density="mdpi" src="resources/android/icon/drawable-mdpi-icon.png" />
        <icon density="mdpi" src="resources/android/icon/drawable-mdpi-icon.png" />
        <icon density="hdpi" src="resources/android/icon/drawable-hdpi-icon.png" />
        <icon density="hdpi" src="resources/android/icon/drawable-hdpi-icon.png" />
        <icon density="xhdpi" src="resources/android/icon/drawable-xhdpi-icon.png" />
        <icon density="xhdpi" src="resources/android/icon/drawable-xhdpi-icon.png" />
        <icon density="xxhdpi" src="resources/android/icon/drawable-xxhdpi-icon.png" />
        <icon density="xxhdpi" src="resources/android/icon/drawable-xxhdpi-icon.png" />
        <icon density="xxxhdpi" src="resources/android/icon/drawable-xxxhdpi-icon.png" />
        <icon density="xxxhdpi" src="resources/android/icon/drawable-xxxhdpi-icon.png" />
        <preference name="AndroidWindowSplashScreenAnimatedIcon" value="resources/android/splash/splashscreen.xml" />
        <preference name="AndroidWindowSplashScreenBackground" value="#1A237E" />
        <splash density="land-ldpi" src="resources/android/splash/drawable-land-ldpi-screen.png" />
        <splash density="land-ldpi" src="resources/android/splash/drawable-land-ldpi-screen.png" />
        <splash density="land-mdpi" src="resources/android/splash/drawable-land-mdpi-screen.png" />
        <splash density="land-mdpi" src="resources/android/splash/drawable-land-mdpi-screen.png" />
        <splash density="land-hdpi" src="resources/android/splash/drawable-land-hdpi-screen.png" />
        <splash density="land-hdpi" src="resources/android/splash/drawable-land-hdpi-screen.png" />
@@ -61,9 +82,14 @@
        <splash density="port-xhdpi" src="resources/android/splash/drawable-port-xhdpi-screen.png" />
        <splash density="port-xhdpi" src="resources/android/splash/drawable-port-xhdpi-screen.png" />
        <splash density="port-xxhdpi" src="resources/android/splash/drawable-port-xxhdpi-screen.png" />
        <splash density="port-xxhdpi" src="resources/android/splash/drawable-port-xxhdpi-screen.png" />
        <splash density="port-xxxhdpi" src="resources/android/splash/drawable-port-xxxhdpi-screen.png" />
        <splash density="port-xxxhdpi" src="resources/android/splash/drawable-port-xxxhdpi-screen.png" />
        <edit-config file="app/src/main/AndroidManifest.xml" mode="merge" target="/manifest/application">
            <application android:networkSecurityConfig="@xml/network_security_config" />
        </edit-config>
    </platform>
    </platform>
    <platform name="ios">
    <platform name="ios">
        <preference name="BackupWebStorage" value="local" />
        <preference name="BackupWebStorage" value="local" />
        <preference name="StatusBarOverlaysWebView" value="true" />
        <preference name="KeyboardShrinksView" value="true" />
        <icon height="20" src="resources/ios/icon/Icon-App-20x20@1x.png" width="20" />
        <icon height="20" src="resources/ios/icon/Icon-App-20x20@1x.png" width="20" />
        <icon height="40" src="resources/ios/icon/Icon-App-20x20@2x.png" width="40" />
        <icon height="40" src="resources/ios/icon/Icon-App-20x20@2x.png" width="40" />
        <icon height="60" src="resources/ios/icon/Icon-App-20x20@3x.png" width="60" />
        <icon height="60" src="resources/ios/icon/Icon-App-20x20@3x.png" width="60" />
@@ -97,30 +123,49 @@
        <splash height="1024" src="resources/ios/splash/Default-Portrait~ipad.png" width="768" />
        <splash height="1024" src="resources/ios/splash/Default-Portrait~ipad.png" width="768" />
        <splash height="960" src="resources/ios/splash/Default@2x~iphone.png" width="640" />
        <splash height="960" src="resources/ios/splash/Default@2x~iphone.png" width="640" />
        <splash height="480" src="resources/ios/splash/Default~iphone.png" width="320" />
        <splash height="480" src="resources/ios/splash/Default~iphone.png" width="320" />
        <splash height="2048" src="resources/ios/splash/Default-Landscape@~ipadpro.png" width="2732" />
        <splash height="2732" src="resources/ios/splash/Default-Portrait@~ipadpro.png" width="2048" />
        <splash height="2732" src="resources/ios/splash/Default@2x~universal~anyany.png" width="2732" />
        <edit-config file="*-Info.plist" mode="merge" target="NSCameraUsageDescription">
        <edit-config file="*-Info.plist" mode="merge" target="NSCameraUsageDescription">
            <string>To scan QRCode</string>
            <string>To scan QRCode</string>
        </edit-config>
        </edit-config>
        <edit-config file="*-Info.plist" mode="merge" target="NSPhotoLibraryUsageDescription">
        <edit-config file="*-Info.plist" mode="merge" target="NSPhotoLibraryUsageDescription">
            <string>To choose a profile picture</string>
            <string>To choose a profile picture</string>
        </edit-config>
        </edit-config>
        <edit-config file="*-Info.plist" mode="merge" target="CFBundleURLSchemes">
            <string>june</string>
        </edit-config>
        <config-file mode="add" parent="ITSAppUsesNonExemptEncryption" target="*-Info.plist">
            <false />
        </config-file>
    </platform>
    </platform>
    <engine name="android" spec="^6.2.3" />
    <plugin name="cordova-plugin-camera" spec="^4.1.0">
    <engine name="ios" spec="^4.5.5" />
        <variable name="CAMERA_USAGE_DESCRIPTION" value="Add picture to the user profile" />
    <plugin name="cordova-plugin-camera" spec="^2.4.1" />
        <variable name="PHOTOLIBRARY_USAGE_DESCRIPTION" value="Take a picture for the user profile" />
    <plugin name="cordova-plugin-console" spec="^1.0.7" />
        <variable name="ANDROID_SUPPORT_V4_VERSION" value="28.+" />
    <plugin name="cordova-plugin-device" spec="^1.1.6" />
    </plugin>
    <plugin name="cordova-plugin-dialogs" spec="^1.3.3" />
    <plugin name="cordova-plugin-ionic-webview" spec="^5.0.1">
    <plugin name="cordova-plugin-inappbrowser" spec="^1.7.1" />
        <variable name="ANDROID_SUPPORT_ANNOTATIONS_VERSION" value="28.+" />
    <plugin name="cordova-plugin-minisodium" spec="^1.0.0" />
    </plugin>
    <plugin name="cordova-plugin-secure-storage" spec="^2.6.8" />
    <plugin name="cordova-plugin-device" spec="^3.0.0" />
    <plugin name="cordova-plugin-splashscreen" spec="^3.2.2" />
    <plugin name="cordova-plugin-dialogs" spec="^2.0.2" />
    <plugin name="cordova-plugin-statusbar" spec="^2.4.2" />
    <plugin name="cordova-clipboard" spec="^1.3.0" />
    <plugin name="cordova-plugin-vibration" spec="^2.1.5" />
    <plugin name="cordova-plugin-splashscreen" spec="^6.0.2" />
    <plugin name="cordova-plugin-statusbar" spec="^4.0.0" />
    <plugin name="cordova-plugin-file" spec="^8.1.3" />
    <plugin name="cordova-plugin-vibration" spec="^3.1.1" />
    <plugin name="cordova-plugin-websocket" spec="^0.12.2" />
    <plugin name="cordova-plugin-websocket" spec="^0.12.2" />
    <plugin name="cordova-plugin-whitelist" spec="^1.3.2" />
    <plugin name="cordova-plugin-ionic-keyboard" spec="^2.2.0" />
    <plugin name="cordova-plugin-x-toast" spec="^2.6.0" />
    <plugin name="cordova-plugin-androidx-adapter" spec="^1.1.3" />
    <plugin name="ionic-plugin-keyboard" spec="^2.2.1" />
    <plugin name="cordova-plugin-x-toast" spec="^2.7.3" />
    <plugin name="phonegap-plugin-barcodescanner" spec="git+https://github.com/phonegap/phonegap-plugin-barcodescanner.git">
    <plugin name="@red-mobile/cordova-plugin-barcodescanner" spec="^9.1.0">
        <variable name="CAMERA_USAGE_DESCRIPTION" value=" " />
        <variable name="CAMERA_USAGE_DESCRIPTION" value="To scan QRCode" />
        <variable name="ANDROID_SUPPORT_V4_VERSION" value="28.+" />
    </plugin>
    <plugin name="cordova-plugin-customurlscheme" spec="^5.0.2">
        <variable name="URL_SCHEME" value="june" />
    </plugin>
    </plugin>
    <plugin name="cordova-plugin-network-information" spec="~3.0.0">
    </plugin>
    <plugin name="ionic-plugin-keyboard" spec="^2.2.1" />
</widget>
</widget>
Original line number Original line Diff line number Diff line
Subproject commit 17788c85b43b1fa75287a80454349948068cc457
Original line number Original line Diff line number Diff line
Subproject commit 7f899bf2139dd7238840019d4365377341171f6d
Original line number Original line Diff line number Diff line
# Android Builds
# Build Cesium for Android


Cesium can be build as Android App.
Cesium can be build as an Android App.


Cesium use [Ionic Framework v1.7.16](http://ionicframework.com/docs/v1/) with some Apache Cordova plugins.
Cesium use [Ionic Framework v1.7.16](http://ionicframework.com/docs/v1/) with some Apache Cordova plugins.


@@ -16,9 +16,9 @@ After that you should be able to start the application using `npm start`, and to


You can choose to install
You can choose to install
 
 
- on Linux, install OpenJDK 8:
- on Linux, install OpenJDK 11:
 
 
  * ``sudo apt-get install openjdk-8-jdk``
  * ``sudo apt-get install openjdk-11-jdk``
    
    
- or Oracle JDK 8 (all platforms supported):
- or Oracle JDK 8 (all platforms supported):
  
  

doc/build_desktop.md

0 → 100644
+7 −0
Original line number Original line Diff line number Diff line
# Build Cesium as a Desktop application

Cesium can be build as a standalone desktop application, for Linux (`.deb`), Windows (`.exe`) or MacOSx;

- Clone the [cesium-desktop](https://git.duniter.org/clients/cesium-grp/cesium-desktop) project locally;
- Follow this project documentation.
Original line number Original line Diff line number Diff line
# Cesium docker image
# Cesium docker image


> WARNING: This documentation need a review! (not up to date)

## Build
## Build


```bash
```bash
 cd cesium
 cd cesium
 sudo docker build . -t cesium/release
 docker build . -t cesium/release
```

or with interactive bash 

```bash
 sudo docker build . -ti cesium/release bash
```
```


## Run
## Run


```bash
```bash
 sudo docker run -ti --net host -p 8100:8100 -p 35729:35729 -v ~/.gradle:/root/.gradle -v \$PWD:/cesium:rw --privileged cesium/release
 docker run -ti --net host -p 8100:8100 -p 35729:35729 -v ~/.gradle:/root/.gradle -v \$PWD:/cesium:rw --privileged cesium/release
```
```
 No newline at end of file
Original line number Original line Diff line number Diff line
# iOS Builds
# Build Cesium for iOS


Cesium can be build as desktop application for iOS. .
Cesium can be build as desktop application for iOS. .


@@ -60,7 +60,7 @@ sudo xcode-select --switch /Applications/Xcode.app/Contents/Developer
## Install Node JS
## Install Node JS


1. Install NVM (node.js version manager) :
1. Install NVM (node.js version manager) :
2. Install node.js v5  
2. Install node.js 16
3. Install common node.js dependencies
3. Install common node.js dependencies
 
 
```bash
```bash
@@ -70,7 +70,7 @@ export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"  # This loads nvm
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"  # This loads nvm


# Node.js
# Node.js
nvm install 5
nvm install 16


# node-pre-gyp
# node-pre-gyp
npm install -g nw-gyp node-pre-gyp
npm install -g nw-gyp node-pre-gyp
@@ -82,7 +82,7 @@ npm install -g nw-gyp node-pre-gyp


2. Install global dependencies (see [Development Guide](./development_guide.md) for versions to used) :
2. Install global dependencies (see [Development Guide](./development_guide.md) for versions to used) :
```
```
npm install -g gulp bower@1.8.0 cordova@6.5.0 ionic@1.7.16
npm install -g yarn gulp cordova @ionic/cli@6.20.9
```
```


3. Install project dependencies :
3. Install project dependencies :

doc/build_ubuntu.md

deleted100644 → 0
+0 −109
Original line number Original line Diff line number Diff line
# Ubuntu Builds

Cesium can be build as desktop application for Ubuntu, or as App on Ubuntu phone. Such builds use cross-architecture [click targets](https://developer.ubuntu.com/en/phone/apps/sdk/tutorials/click-targets-and-device-kits/) and the specific Apache Cordova platform `ubuntu`.

## Prerequisites

### Install the development environment

Follow all the steps defined in the [Development guide](./development_guide.md).

After that you should be able to start the application using `npm start`, and to test it.

## Install Ubuntu SDK 

Source documentation [here](https://developer.ubuntu.com/en/phone/platform/sdk/installing-the-sdk/) and [here](https://cordova.apache.org/docs/en/latest/guide/platforms/ubuntu/index.html)

Install the SDK :

```bash
sudo add-apt-repository ppa:ubuntu-sdk-team/ppa
sudo apt update
sudo apt install ubuntu-sdk
```

Install "click" packaging tools:

```bash
sudo apt-get install click cmake libicu-dev pkg-config devscripts qtbase5-dev qtchooser qtdeclarative5-dev qtfeedback5-dev qtlocation5-dev qtmultimedia5-dev qtpim5-dev libqt5sensors5-dev qtsystems5-dev 

```
> Alternatively (not tested): 
> `sudo click chroot -a armhf -f ubuntu-sdk-15.04 install cmake libicu-dev:armhf pkg-config qtbase5-dev:armhf qtchooser qtdeclarative5-dev:armhf qtfeedback5-dev:armhf qtlocation5-dev:armhf qtmultimedia5-dev:armhf qtpim5-dev:armhf libqt5sensors5-dev:armhf qtsystems5-dev:armhf`



## Add Ubuntu platform to the Ionic project

```bash
cd cesium
ionic platform add ubuntu
```

## Running Ubuntu SDK IDE (optional)
 
To debug or configure the Ubuntu builds easily, you can use the Ubuntu SDK IDE.
 
```bash
ubuntu-sdk-ide
```

> Note: Before launching the IDE, make sure your user has the unix group `lxd`. If not, simply execute this command:
> `sudo usermod -a -G lxd mon_user`


## Build Debian package 

Cesium can be built on a `amd64` architecture. 

1. Generate the `click` source code:

```bash
cd cesium
ionic build ubuntu --release
```

2. Then build the project:
 
```bash
cd platforms/ubuntu/native/cesium
debuild
```

This should generate the `.deb` in directory `<cesium>/platforms/ubuntu/native`. 

> This step will required a valid (and installed) GPG key, to sign the `.deb` file.
> The key should match the `author` field of the file `<cesium>/config.xml`.
> To be able to your own GPG key, change the author. 

### Build for Ubuntu Phone

Cesium can be built on a `armhf` architecture.

Install `armhf` build platform:

```bash
sudo click chroot -a armhf -f ubuntu-sdk-15.04 create
```

Then install some dependencies inside the `armhf` chroot:  
 
```bash
sudo click chroot -a armhf -f ubuntu-sdk-15.04 install cmake libicu-dev:armhf pkg-config qtbase5-dev:armhf qtchooser qtdeclarative5-dev:armhf qtfeedback5-dev:armhf qtlocation5-dev:armhf qtmultimedia5-dev:armhf qtpim5-dev:armhf libqt5sensors5-dev:armhf qtsystems5-dev:armhf 
```

Build the phone application  

```bash
cd cesium
ionic build ubuntu --device
```

> To test your application on phone, execute :
> `ionic run ubuntu --device`



## Publishing to Ubuntu App Store

Follow steps on https://developer.ubuntu.com/en/publish/
 No newline at end of file

doc/build_web.md

0 → 100644
+26 −0
Original line number Original line Diff line number Diff line
# Build Cesium as an unhosted web application

Cesium can be build as a simple web application, portable and runnable anywhere.

## Prerequisites

### Install the development environment

Follow all the steps defined in the [Development guide](./development_guide.md).

After that you should be able to start the application using `npm start`or `yarn start`, and to test it.

## Build the unhosted web application


- To create a compressed ZIP artifact, run:
  ```bash
     cd cesium
     gulp webBuild --release
  ```
  
  A ZIP archive will be visible `dist/web/build/cesium-vx.y.z.zip`

## Publishing to a web site 

Decompress the web archive, then open the `ìndex.html` file in your web browser.
 No newline at end of file
+53 −0
Original line number Original line Diff line number Diff line
# Build Cesium as a Web extension

Cesium can be build as Web extension, for Mozilla Firefox extension (`.xpi`) and Chrome/Chromium (`.crx`).

## Prerequisites

### Install the development environment

Follow all the steps defined in the [Development guide](./development_guide.md).

After that you should be able to start the application using `yarn run start`, and to test it.

## Build the web extension


- To create an uncompressed extension, use :
  ```bash
     cd cesium
     gulp build
     gulp webExtCompile --release
  ```
  
  The uncompressed web extension will be visible `dist/web/ext`
  
- To create a portable and compressed ZIP extension : 
  ```bash
     cd cesium
     gulp build
     gulp webExtBuild --release
  ```
  
  The web extension is visible at `dist/web/build/cesium-vx.y.z-extension.zip`

> Remove the option `--release` to skip creation of minified CSS and JS files (and source maps)

## Publishing to Mozilla Addons 

- Make sure you have `web-ext` installed. If not, run:
  ```bash
     npm install -g web-ext
  ```
  
- Sign your extension :
  ```bash
  
    # Define your credentials on addons.mozilla.org (your developer account)
    export AMO_JWT_ISSUER =   // username
    export AMO_JWT_SECRET =   // password
  
    # Will archive and upload your extension 
    cd cesium
    web-ext sign "--api-key=${AMO_JWT_ISSUER}" "--api-secret=${AMO_JWT_SECRET}" "--source-dir=dist/web/ext" "--artifacts-dir=${PROJECT_DIR}/dist/web/build"  --id=${WEB_EXT_ID} --channel=listed
  ``` 
 No newline at end of file
Original line number Original line Diff line number Diff line
# Version v1.2.10
# Version v1.2.10


## Settings
## All platforms
- If Duniter node is down, settings cannot be stored locally - fix [#788](https://git.duniter.org/clients/cesium-grp/cesium/issues/788)


## My account
- [enh] Cesium+: Add compatibility to Cesium+ Pod v1.1.3+
- Le nombre de notifications affiché est incorrect - fix [#745](https://git.duniter.org/clients/cesium-grp/cesium/issues/745)
- [fix] If Duniter node is down, settings cannot be stored locally - fix [#788](https://git.duniter.org/clients/cesium-grp/cesium/issues/788)

- [fix] My account: notification count was wrong - fix [#745](https://git.duniter.org/clients/cesium-grp/cesium/issues/745)
## Cesium+ features

### Settings
- Allow to use Cesium+ Pod in version v1.1.3+
 No newline at end of file
Original line number Original line Diff line number Diff line
# Version v1.2.6
# Version v1.2.6


## WoT identity
## All platforms
- Fix JS error when browsing a identity (identity without certifications)


## My account
### WoT identity
- Display a warn when distance rule failed - fix [#777](https://git.duniter.org/clients/cesium-grp/cesium/issues/777)
- [fix] Fix JS error when browsing a identity (identity without certifications)


## My wallets
### My account
- Use 'pubkey' login method as default, when add new wallets - fix [#767](https://git.duniter.org/clients/cesium-grp/cesium/issues/767)
- [enh] Display a warn when distance rule failed - fix [#777](https://git.duniter.org/clients/cesium-grp/cesium/issues/777)


## Cesium+ features
### My wallets
- [enh] Use 'pubkey' login method as default, when add new wallets - fix [#767](https://git.duniter.org/clients/cesium-grp/cesium/issues/767)


### Notifications
### Cesium+ > Notifications
- Fix JS error when displaying a warning in the notifications popover

 No newline at end of file
- [fix] Fix JS error when displaying a warning in the notifications popover
 No newline at end of file
Original line number Original line Diff line number Diff line
# Version v1.2.9
# Version v1.2.9


## My operations
## All platforms
- Avoid duplicated transaction, and refresh issue - Fix [#780](https://git.duniter.org/clients/cesium-grp/cesium/issues/780)
- Add icon on each divider 


## My wallets
### My operations
- Display the total balance of wallets
- Show the default (main) wallet 
- Better wallets refresh animation
- Fix: wallet list can be lost when view not fully loaded - Fix [#782](https://git.duniter.org/clients/cesium-grp/cesium/issues/782) 
- Fix: Avoid multiple error when failed - Fix [#776](https://git.duniter.org/clients/cesium-grp/cesium/issues/776) 


## Cesium+ features
- [enh] Add icon on each divider 
- [fix] Avoid duplicated transaction, and refresh issue - Fix [#780](https://git.duniter.org/clients/cesium-grp/cesium/issues/780)


### Messages
### My wallets
- Fix sending message from a secondary wallet - fix [#784](https://git.duniter.org/clients/cesium-grp/cesium/issues/784) 

 No newline at end of file
- [enh] Display the total balance of wallets
- [enh] Show the default (main) wallet 
- [enh] Better wallets refresh animation
- [fix] wallet list can be lost when view not fully loaded - Fix [#782](https://git.duniter.org/clients/cesium-grp/cesium/issues/782) 
- [fix] Avoid multiple error when failed - Fix [#776](https://git.duniter.org/clients/cesium-grp/cesium/issues/776) 

### Cesium+ > Messages

- [fix] Fix sending message from a secondary wallet - fix [#784](https://git.duniter.org/clients/cesium-grp/cesium/issues/784) 
 No newline at end of file
Original line number Original line Diff line number Diff line
# Version v1.3.0
# Version v1.3.0


## Desktop version
## Desktop


- Upgrade to NW.js v0.35.3
- Upgrade to NW.js v0.35.3
- Better Duniter configuration detection (keyring and node)
- Better Duniter configuration detection (keyring and node)
Original line number Original line Diff line number Diff line
# Version v1.3.1
# Version v1.3.1


## Desktop version
## Desktop


- [enh] Display logs in terminal
- [enh] Display logs in terminal
- [enh] Add option `--debug` to show debug logs
- [enh] Add option `--debug` to show debug logs
+5 −0
Original line number Original line Diff line number Diff line
# Version v1.3.10

## Web payment API

- [fix]fix cancel button redirection
 No newline at end of file
+8 −0
Original line number Original line Diff line number Diff line
# Version v1.3.11

## All platforms

 - [enh] Add a console log, when load sources failed (e.g. if network timeout)
 - [fix] Settings: on small screens, make sure all option's labels are visible
 - [fix] Menu: left menu is now scrollable for small device, to fix access to the `Settings` entry
 
 No newline at end of file
Original line number Original line Diff line number Diff line
# Version v1.3.8
# Version v1.3.8


## All build
## All platforms


- [enh] Settings: display options in 2 columns
- [enh] Settings: display options in 2 columns
- [enh] Display registration date, in multiple identities modal  - fix [#817](https://git.duniter.org/clients/cesium-grp/cesium/issues/817)
- [enh] Display registration date, in multiple identities modal  - fix [#817](https://git.duniter.org/clients/cesium-grp/cesium/issues/817)
+7 −0
Original line number Original line Diff line number Diff line
# Version v1.3.9

## Web payment API

- [enh] Add `preferred_node` params on the URL to call the payment API;
- [enh] Allow `amount` to have list of values, to allow user to choice the payment amount;
- [enh] Add `{node}` params on `return_url` - fix [#549](https://git.duniter.org/clients/cesium-grp/cesium/issues/549) ;
+12 −0
Original line number Original line Diff line number Diff line
# Version v1.4.0

## All platforms

- [enh] Optimize screen for landscape mode, on Tablet device
- [enh] Switch in fullscreen, when web version is running on mobile devices
- [fix] Fix freeze bug (bas CSS after using actions popover)
- [fix] Fix theme color, on mobile device

## iOS

- [fix] Fix iOS layout issues
+5 −0
Original line number Original line Diff line number Diff line
# Version v1.4.1

## Desktop

- [fix] Fix fullscreen mode, on desktop build
+12 −0
Original line number Original line Diff line number Diff line
# Version v1.4.12

## All platforms

- [enh] Fix some Esperanto translations - thanks to @Vivakvo 
- [fix] Avoid to use source with complex output condition - fix [#845](https://git.duniter.org/clients/cesium-grp/cesium/issues/819) - thanks to @matograine
- [fix] Avoid transaction to himself - fix [#819](https://git.duniter.org/clients/cesium-grp/cesium/issues/819)
- [fix] Fix some Italian translations - thanks to @BorisPAING 

## iOS

- [enh] Add compatibility for iOS and iPad - thanks to @bpresles
+9 −0
Original line number Original line Diff line number Diff line
# Version v1.4.13

## All platforms

- [enh] Upgrade some JS libs: bower 1.8.8, angular 1.5.11, chart.js 2.9.3
- [fix] Build: Better dependencies management: update the `bower.json`, and remove libs from `www/js/vendor` 
  and `www/lib/ionic/angular`
- [fix] Cesium+: fix charts X axis labels
+13 −0
Original line number Original line Diff line number Diff line
# Version v1.4.14

## All platforms

- [enh] Transfer form: display the amount's unit as a dropdown  
- [fix] I18n: better explanation for where Cesium+ profile are stored

## Build tools

- [enh] Migrate dependency management to Yarn, instead of Bower (deprecated) 
- [fix] Avoid error during `ionic state restore` : move `platforms/desktop` and `platforms/web` to `dist` 
- [fix] DEV: when `ionic serve` is running, avoid the web browser to be reloaded before end of compilation process
+22 −0
Original line number Original line Diff line number Diff line
# Version v1.4.3

## All platforms

- [enh] Menu: change items order - thanks to @BorisPAING 
- [enh] Add Esperanto translation - thanks to @Vivakvo 
- [fix] Fix scale change, on the network TX graph - fix #835 - thanks to @jiemme2
- [fix] Fix ES translation - thanks to @scanlegentil
- [fix] Fix NL translation - thanks to @RavanH
- [fix] Fix development guide - thanks to @BorisPAING 

## Android

- [enh] Add 64bit compatibility for libsodium

## Desktop

- [enh] upgrade to Chromium 76 (NWJS v0.40.1)

## iOS

- [enh] Add doc to build a signed artefact for iOS - thanks to @bpresles
+5 −0
Original line number Original line Diff line number Diff line
# Version v1.4.6

## Android

- [enh] Android: Add libsodium 64bit so, for compatibility with Google Play Store policy
+44 −0
Original line number Original line Diff line number Diff line
# Version v1.5.3

## All platforms

- [enh] My operations: show many pubkeys, when TX has more than one issuers (or recipients)
- [enh] My operations: Optimize load

- [fix] Home: fix logout button icons, on small device
- [fix] Menu: badge alignment on small device
- [fix] Wot identity: better fab compose id (UID is not safe)
- [fix] Secondary wallet: allow to see certifications
- [fix] Transfer: always hide the digitKeyboard when not a mobile device - fix #866
- [fix] Network: add button to show Cesium+ network (if expert mode and Cesium+ plugin are enable)

### Cesium+ plugin

- [enh] Cesium+: add a view to monitor Cesium+ pod network
- [enh] Cesium+ settings: Use the specific Cs+ network view, to select a Pod
- [enh] Cesium+ pod stats: Allow to see stats pages (data and synchro) from any Cesium+ pod

- [fix] Cesium+ settings: do not store remotely es.node.useSsl property
- [fix] Cesium+ page: Fix comment "send button" alignment
- [fix] Cesium+ pod stats: use the new index (document/stats) instead of (docstat/record)
- [fix] Settings: do not store `max upload size` in remote settings
- [fix] Network: Fix an error in console, when leaving the network view

### Android build

- [fix] Android: revert to minSdkVersion=19
- [fix] Android: Fix new cordova restore plugins
- [fix] Android build: use ~/Android/Sdk if exists
- [fix] Android build: add gradle installation when not found
- [fix] Android build: use existing gradle if found in the path

## Build tools

- [enh] Add a sha256 checksum file, on each release

- [fix] Remove Ionic v1 config file
- [fix] Fix gulp compile script (watch)
- [fix] update config.xml cordova plugins version
- [fix] Build: compile using the last ionic cli, and nodeJS v10
- [fix] Build: Remove unused gulp sourcemaps
+25 −0
Original line number Original line Diff line number Diff line
# Version v1.6.0

## All platforms

- [enh] Home: Add feed (news)
- [enh] Menu: new menu layout, and new icon for "My operations"
- [enh] Navigation: better performance, by adding a network cache (between session if enable in settings)

- [fix] Wallet: Fix freeze on "Loading..."
- [fix] Fix locale flags (and add a flag for Esperanto)

### Desktoo

- [enh] Upgrade to Chromium 80 (NWjs v0.44.4)

### Android

- [enh] Can toggle QR code into full screen
- [enh] Show more QRcode (on a identity page, in the transactions history) 

- [fix] Android: revert to minSdkVersion=16

### Firefox and Chrome extension

- [enh] Allow to add Cesium as browser extension 
+53 −0
Original line number Original line Diff line number Diff line
# Version v1.6.2

## All platforms

- [enh] Improve private message icon, on a identity profile - fix [#900](https://git.duniter.org/clients/cesium-grp/cesium/-/issues/900)
- [enh] Improve avatar modal, when editing a Cesium+ profile:
  * allow drag and drop;
  * add a "previous" button;
  
- [fix] Fix some ES translations
- [fix] API: error 'qrcode not defined' - fix [#903](https://git.duniter.org/clients/cesium-grp/cesium/-/issues/903)

### Desktop

- [enh] Add a splash screen

- [fix] Fix command line option `--debug`
- [fix] Open popup to select local Duniter node, if detected  

### Android

- [enh] Fix Android 10 compatibility (due to secure storage Cordova plugin) - fix [#908](https://git.duniter.org/clients/cesium-grp/cesium/-/issues/898)

### Firefox and Chrome extension

- [fix] Unable to set avatar and page's pictures - fix [#904](https://git.duniter.org/clients/cesium-grp/cesium/-/issues/904)

## Development environment

### Build from source

Before building Cesium, please launch this commands:
```bash 
cd cesium

# Update ionic CLI to latest 
npm remove ionic

npm i -g @ionic/cli

# Remove JS dependencies
rm -rf node_modules

# Clean Yarn cache, then install deps
yarn cache clean && yarn install

# Remove Cordova plugins
rm -rf plugins
  
# Re install Cordova plugins
cd scripts
./ionic-update.sh 
```
 No newline at end of file
+10 −0
Original line number Original line Diff line number Diff line
# Version v1.6.5

## All platforms

- [fix] Unable to report abuse, or like, a profile, if not login - fix [#913](https://git.duniter.org/clients/cesium-grp/cesium/-/issues/913) 

## Android

- [fix] Fix startup error, under Android 10 (API 28)  - [#898](https://git.duniter.org/clients/cesium-grp/cesium/-/issues/898)
- [fix] Fix 'findIndex' error on transaction history, under Android 4.4 (API 19) - fix [#912](https://git.duniter.org/clients/cesium-grp/cesium/-/issues/912)
+18 −0
Original line number Original line Diff line number Diff line
# Version v1.6.8

## All platforms

- [enh] Build: upgrade to cordova@10.0.0, and node.js v12. Refactor Cordova hook to use main gulpfile.js
- [fix] Map: optimize loading time (remove the search layer)

## Web extension

- [enh] Handle G1 link, like 'web+june://' - See [this post](https://forum.duniter.org/t/g1link-syntax-review-choisissons-la-syntaxe-g1lien/7522)

## Android

- [enh] Handle G1 link, like 'june://' - See [this post](https://forum.duniter.org/t/g1link-syntax-review-choisissons-la-syntaxe-g1lien/7522)
 
## Desktop

- [fix] Fix startup error on Ubuntu 20+ - [#921](https://git.duniter.org/clients/cesium-grp/cesium/-/issues/921)
 No newline at end of file
+6 −0
Original line number Original line Diff line number Diff line
# Version v1.7.0

## All platforms

- [enh] Add mre languages : Italian, Deutsch, Catalan, Portuges
- [fix] Update default Duniter and Cesium+ Pod peers 
 No newline at end of file
Original line number Original line Diff line number Diff line


# Deploy Cesium
# Deploy Cesium on a web server 

> **WARN**: Installing Cesium as a web site is NOT recommended, for security reasons!
> A DNS attack can redirect to another web site (with modified javascript code) in order to retrieve user credentials (wallet secret key)
>
> We recommend the use of the [web extension](build_web_extension.md), or the [desktop application](build_desktop.md);
>
> Read [this post](https://forum.monnaie-libre.fr/t/cesium-evolue-aie-ca-va-piquer-mais/10015) for details (French).

## First deployment

1. Download the [latest release](https://github.com/duniter/cesium/releases/latest) (file `cesium-vx.y.z-web.zip`);
 
2. Unpack into an empty directory;

3. Change Cesium default settings, by editing the file `config.js` (see next bottom); 

4. Configure the web server engine (e.g. Apache, nginx):
  * Add a new `location` (or a new `virtual host`), that use the directory as `web root`. 
  * Make sure the file `index.html` exist inside this directory.
 
   Please refer to your engine documentation.

5. Restart your web engine.

That's it !


## Configure Cesium default settings 

To change default configuration, that Cesium will use:

- Edit the file `config.js` in the web root directory, and change some properties:
  
```js
angular.module("cesium.config", [])
.constant("csConfig", {
  "fallbackLanguage": "en",
  "rememberMe": false,
  "timeWarningExpireMembership": 5184000,
  "timeWarningExpire": 7776000,
  "useLocalStorage": true,
  "useRelative": true,
  "decimalCount": 4,
  "helptip": {
    "enable": true,
    "installDocUrl": "https://github.com/duniter/duniter/blob/master/doc/install-a-node.md"
  },
  "node": {
    "host": "g1.duniter.org",
    "port": "443"
  },
	"plugins": {
		"es": {
			"enable": "true",
			"host": "g1.data.duniter.fr",
			"port": "443"
		}
	},
	"version": "1.3.7",
	"build": "2019-04-02T08:27:57.915Z"
});
```

- Configure a Duniter node:
  * set `node.host` and `node.port` to the default node address. 

- Configure the optional extension for [Cesium+](https://git.duniter.org/clients/cesium-grp/cesium-plus-pod/)

  * set `plugins.es.host` and `plugins.es.port` to the default Cesium+ Pod (aka ES) address.
  * set `plugins.es.enable` with [true|false] to change the default extension state. 
   
   
To learn more about configuration options, see the [detailed documentation](configuration.md).

 
## Update to the last version

On Linux server, you can use an update script:

```
cd <CESIUM_WEB_ROOT>
curl -kL https://git.duniter.org/clients/cesium-grp/cesium/raw/master/install.sh | bash
```
or:

```
cd <CESIUM_WEB_ROOT>
wget -qO- https://git.duniter.org/clients/cesium-grp/cesium/raw/master/install.sh | bash
```

> **Note**: You should NOT need root permission. Make sure to NEVER replace `| bash` by `| sudo bash`!
> For any permission issue during installation, change permission on directory, then retry.


## Bash script
## Another Bash script  
 
 
This is a bash script example, that you can use to deploy the latest release.
This is a bash script example, that you can use to deploy the latest release, in a existing Cesium web site.


This script will create or replace a directory name `cesium`, where application will be unpack.
This script will create or replace a directory name `cesium`, where application will be unpack.
 
 
@@ -34,6 +126,7 @@ cd $BASEDIR


echo "Installing cesium into '$BASEDIR/cesium'..."
echo "Installing cesium into '$BASEDIR/cesium'..."


# In order to get the latest version, simplify run:
wget -qO- https://git.duniter.org/clients/cesium-grp/cesium/raw/master/install.sh | bash
wget -qO- https://git.duniter.org/clients/cesium-grp/cesium/raw/master/install.sh | bash


export VERSION=`sed -rn "s/\s*\"version\": \"([^\"]*)\",\s*/\1/p" cesium/config.js`
export VERSION=`sed -rn "s/\s*\"version\": \"([^\"]*)\",\s*/\1/p" cesium/config.js`
Original line number Original line Diff line number Diff line
# Development Guide
# Development Guide


## Prerequisite  
## In a post-it


To build Cesium, you will have to: 
```bash
# Install NodeJS v16
nvm use 16
npm install -g yarn 


  - Installing build tools:
# Clone and compile from source
```
git clone git@git.duniter.org:clients/cesium-grp/cesium.git
 sudo apt-get install build-essential
cd cesium
```
yarn


  - Installing [nvm](https://github.com/creationix/nvm)
# Run the App !
```
yarn run start
  wget -qO- https://raw.githubusercontent.com/creationix/nvm/v0.34.0/install.sh | bash
```
```


> Then reload your terminal, for instance by executing the commande `bash`


  - Configure NodeJS to use a version 5: (**WARNING**: upper version will NOT work !) 
## Step by step

### Prerequisite  

To build Cesium, you will have to: 
 
1. Installing build tools:
   ```bash
      sudo apt-get install git wget curl unzip build-essential software-properties-common ruby ruby-dev ruby-ffi gcc make
   ```
   ```
  nvm install 5

2. Installing node.js v16 :

  * First, install [nvm](https://github.com/nvm-sh/nvm) (Node Version Manager) :    
    ```bash
       wget -qO- https://raw.githubusercontent.com/nvm-sh/nvm/v0.35.1/install.sh | bash
    ```
    ```


  - Installing node.js build tools:
    > Alternatively, if you are using `fish shell`, there is a [dedicated plugin](https://github.com/jorgebucaran/fish-nvm).

  * Then, reload your terminal (for instance by executing the command `bash`);

  * Configure nvm to use the expected version: (**WARNING**: upper version will NOT work !) 
    ```bash
       nvm install 16
    ```
    ```
   npm install -g gulp bower@1.8.0 cordova@6.5.0 ionic@1.7.16
      
3. Installing node build tools, as global dependencies:
   ```bash
      npm install -g yarn gulp cordova @ionic/cli@6.20.9 web-ext
   ```
   ```
   
   
## Get the source code and dependencies
### Get the source code and dependencies
   
   
  - Getting source and installing project dependencies:    
1. Getting the source code:    
```
  ```bash
     git clone git@git.duniter.org:clients/cesium-grp/cesium.git
     git clone git@git.duniter.org:clients/cesium-grp/cesium.git
  cd cesium
  npm install
  ```
  ```
  
  
  - Installing Cordova plugins (need for platforms specific builds)   
2. Install project dependencies:    
   ```bash
      cd cesium
      yarn
   ```
   ```
  ionic state restore

  ionic browser add crosswalk@12.41.296.5
3. Installing Cordova plugins (required to build Android and iOS artifacts): 
   ```bash
      export JAVA_HOME=/path/to/jdk-11
      export PATH=$JAVA_HOME/bin:$PATH
      ionic cordova prepare
   ```
   ```


- This should create a new directory `platforms/android`
   This should create new directories `platforms/android` and `platforms/ios`.


> To remind: check that your command line is configured:
   > As a reminder: check that your command line is well configured:
   > - You must place yourself in the directory of the application: `cd cesium`
   > - You must place yourself in the directory of the application: `cd cesium`
> - and be configured for NodeJs v5: `nvm use 5` (please check using the command `node --version`)
   > - and working with NodeJs **v16**: `nvm use 16` (please check using the command `node --version`)

    
    
## Prepare environment, then compile and launch


 - To configure your build environment :
### Prepare configuration file


    * Add your environment config into `app/config.json`
Configure Cesium default settings :
 
 
    * Update default configuration, using the command:
1. Add your environment config into `app/config.json`
   
   
```
2. Update default configuration, using the command:    
   ```bash
      gulp config --env <your_env_name> 
      gulp config --env <your_env_name> 
   ```
   ```


> This will update the configuration file used by cesium, at `www/js/config.json`.
  This will update a configuration file `www/js/config.json`.
 
 
  - Compiling and running Cesium:
### Compile and launch
```

  npm start
To compile and launch Cesium, run:
```bash
  yarn run start
```
```


> or alternative: `ionic serve` 
or alternative: `npm start` or `ionic serve` 

The application should be running at [localhost:8100](http://localhost:8100)!


  - Open a web browser at address: [localhost:8100](http://localhost:8100). The application should be running.


## Best practices for development
### Build artifacts 

Cesium can be build:
- [as an unhosted web applicationa](build_web.md);
- [for Android](build_android.md);
- [for iOS](build_ios.md);
- [as a Web extension](build_web_extension.md) for Mozilla Firefox or Chrome/Chomium;
- [as a Desktop application](build_desktop.md) for Linux (`.deb`), Windows and MacOSx;

You may also [use Docker image](build_docker.md) to simplify this task;   


### Time to code !

#### Pull request

For each pull request, please create an issue first.

#### Best practices for development


Cesium could be run on phone devices. Please read [performance tips on AgularJS + Ionic](http://julienrenaux.fr/2015/08/24/ultimate-angularjs-and-ionic-performance-cheat-sheet/)
Cesium could be run on phone devices. Please read [performance tips on AgularJS + Ionic](http://julienrenaux.fr/2015/08/24/ultimate-angularjs-and-ionic-performance-cheat-sheet/)
before starting to contribute.
before starting to contribute.

Read also [Angular performance for large applicatoins](https://www.airpair.com/angularjs/posts/angularjs-performance-large-applications). 
Read also [Angular performance for large applicatoins](https://www.airpair.com/angularjs/posts/angularjs-performance-large-applications). 
+390 −0
Original line number Original line Diff line number Diff line
## Introduction

This article is an introductory tutorial to the source code of the Cesium software. 

This will allow you, through a succession of steps, to access the mastery of the tools and methods used daily by the developers of Cesium to create and modify the software.

At the end of this tutorial, you will be *able to modify the software*. And if you feel like it, you can even make a change and share it with the main code repository, so that it is officially integrated and available to users!

To your keyboards!

## Level I: Retrieve the source code

This first level consists of creating *your own version* of the software sources and retrieving this copy on your computer. You will produce:

* your own account on the [GitLab de Duniter](https://git.duniter.org)
* your own version of the software, your *fork*
* a local copy of the source code files from your *fork*

### Create a GitLab Duniter account

> If you already have a GitLab account, you can skip this step.

Go to [https://git.duniter.org](https://git.duniter.org/users/sign_in?redirect_to_referer=yes) (site in english).

In 'Register' Fill in the 3 proposed fields:

* Full name 
* Username 
* E-mail 
* Password

You will probably receive a confirmation email that you will need to validate. Once this step is over, you should have an account on the GitLab Duniter.

### Fork the main repo

Go to https://git.duniter.org/clients/cesium-grp/cesium.

Click the "Fork" button at the top of the page (below the logo).

### Install Git

Installing Git depends on your operating system. Simply follow the instructions on : https://git-scm.com/

### Clone your fork

At this point, you are able to retrieve your version of the source code (your *fork*), so that you can work on it.

#### Open Git from the command line

To retrieve the source code, launch Git in console mode.

* On Linux and MacOS, simply open Terminal
* On Windows launch the *Git Bash* program :

<img src="../fr/img/6fc638dc0a22d88da7e84dbf0371e69747767f78.png" width="432" height="80">

#### Clone your fork from the command line

Go back to the GitHub webpage and find the "Clone or download" button: Click on it, you can then copy the clone URL by clicking on the suitcase icon.

All you have to do is go back to your Git console and enter: 

    git clone <paste the copied URL>

which gives **in my case**:

```
git clone git@git.duniter.org:blavenie/cesium.git
Cloning into 'cesium'...
 (...)
Checking connectivity... done.
```

If you have come to a similar behavior, **great**, you now have the Cesium source code!
 
## Level II: Compiling and Launching in a Browser

This second level aims to obtain the basic tools to execute the source code, and verify its proper functioning. You will realize:

* installation of the JavaScript runtime *Node.js*
* the verification of the proper functioning of the source code *via* the launch of the application, in web mode.

If the application launches, you will already have a fully **functional** environment!

### Install Node.js

#### Under Linux / MacOS

Installing Node.js has become extremely simple for these OS: a tool allows you to install the version of Node.js you want, change it whenever you want and without conflict with a previous version: it is [nvm](https://github.com/creationix/nvm).

You can install nvm with the following command:

```bash
curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.6/install.sh | bash
```

Close and reopen your terminal, as shown. Then, install Node.js (choose version 12):

```bash
nvm install 12
```

You will then have the latest version of node's 5.x branch.js ready to use.

##### Compilation tools

Install the necessary tools for compilation.
```bash
sudo apt-get install build-essential
```

(mac users https://appuals.com/how-to-fix-sudo-apt-get-command-not-found-on-macos/)

#### On Windows

For Windows, download version 6 available from the official website of Node.js: https://nodejs.org

Then launch the installer thus downloaded.

### Install Cesium Node.js modules

Cesium relies on third-party libraries to run called *dependencies*, such as compilation libraries (gulp, ionic, angularJS).

The fact that you cloned the sources is actually not enough to launch the application. We need to get the code of the dependencies to get all the executable code of the program. To do this, go back to the Git console and move to the cloned directory:

```bash
cd cesium
```

Then, start downloading and installing the Cesium modules using the command:

```bash
npm install -g yarn gulp cordova@10.0.0 @ionic/cli web-ext
```

Then for non-global dependencies:

```bash
yarn
```

> The installation process may take several minutes. Indeed, it is necessary to download all the dependencies of Cesium and even compile some of them.

If everything went well, you should get an end tree in the console, and the command prompt should have returned your hand:

```bash
yarn install v1.15.2
[1/4] Resolving packages...
  (...)
$ node -e "try { require('fs').symlinkSync(require('path').resolve('node_modules/@bower_components'), 'www/lib', 'junction') } catch (e) { }"
Done in 0.82s.
```

> You may get `npm WARN messages [...] `. Nothing serious: as the name of the message suggests, it is simply a non-blocking warning for the rest of the events.

Then install the remaining dependencies (via bower):

```bash
npm run postinstall
```

### Install an IDE

To develop in NodeJS, you can use the IDE of your choice:

 * For example Sublime Text (not free) : https://www.sublimetext.com/
 * Other possibilities : 
    * VS Code (free).
    * WebStorm (not free but very advanced operation).

### Install Chrome and/or Firefox

To debug Cesium javascript more easily, it is easier to use the Chrome browser

## Level III: Mastering the usual commands

This third level allows you to discover the few (five) commands that you will use all the time if you develop Cesium. You will learn:

* configure Cesium, including the Duniter node it will use (default);
* to launch Cesium in your browser;

### Configure Cesium

The default configuration of our environment is visible in the file 'app/config.json'. Several profiles are present: 'default', 'dev', etc.

```json
{
   "default": {
       "cacheTimeMs": 60000,
       "fallbackLanguage": "en",
       "rememberMe": false,
       "showUDHistory": false,
       "timeout": 10000,
       "timeWarningExpireMembership": 5184000,
       "timeWarningExpire": 7776000,
       "useLocalStorage": true,
       "useRelative": true,
       "initPhase": false,
       "expertMode": false,
       "decimalCount": 4,
       "helptip": {
         "enable": true,
         "installDocUrl": "https://github.com/duniter/duniter/blob/master/doc/install-a-node.md"
       },
       "node": {
         "host": "g1.duniter.org",
         "port": "443"
       },
       "plugins":{
         "es": {
           "enable": true,
           "askEnable": false,
           "host": "g1.data.duniter.fr",
           "port": "443"
         }
       }
     },
     
     (...)
     "dev": {
         "cacheTimeMs": 60000,
         "fallbackLanguage": "fr-FR",
         "defaultLanguage": "fr-FR",
         "rememberMe": true,
         "showUDHistory": false,
         "timeout": 6000,
         "timeWarningExpireMembership": 5184000,
         "timeWarningExpire": 7776000,
         "useLocalStorage": true,
         "useRelative": true,
         "initPhase": false,
         "expertMode": false,
         "decimalCount": 2,
         "helptip": {
           "enable": true,
         },
         "node": {
           "host": "localhost",
           "port": "9600"
         },
         "plugins":{
           "es": {
             "enable": false
           }
         }
       },
}
```

We will use the "dev" configuration, you  may use your Duniter node.

Change the 'host' and 'port' values of the 'dev' configuration profile to match your Duniter node:

```json
  "dev: {
  ...
         "node": {
           "host": "localhost",
           "port": "9600"
         },
  ...
```

Disable the plugin "es" (used for Cesium+) :

```json
  "dev: {
  ...
         "plugins":{
           "es": {
             "enable": false
           }
         }
  ...
```

To enable this configuration, now run the command:

```bash
 gulp config --env dev
```

```bash
[17:32:34] Using gulpfile (...)/cesium/gulpfile.js
[17:32:34] Starting 'config'...
[17:32:34] Building `www/js/config.js` for `dev` environment...
[17:32:36] Finished 'config' after 10 μs
```

> This command will be restarted at the time of your changes to the `app/config` file.

Cesium is now configured to use your local Duniter node.

### Launch Cesium (web mode)

All you have to do is launch the application (in web mode) to find out if everything went well and that you are ready for the future.

Run the following command :

```bash
npm start
```

 > Alternative : `ionic serve`

When complete, the command displays :

```bash
Running live reload server: http://localhost:35729
Watching: 0=www/**/*, 1=!www/lib/**/*
Running dev server:  http://localhost:8100
Ionic server commands, enter:
  restart or r to restart the client app from the root
  goto or g and a url to have the app navigate to the given url
  consolelogs or c to enable/disable console log output
  serverlogs or s to enable/disable server log output
  quit or q to shutdown the server and exit

ionic $ 
```

You can open a web browser at http://localhost:8100
You should see the Cesium homepage there.
 
Congratulations, you have an operational Cesium installation!

### Documentation

Cesium uses the Ionic framework, which has good documentation : http://ionicframework.com.

Visit this site to learn more.

## Level IV: Finding your way around the code

### Locate software layers

Open your IDE, and open the Cesium project.

Search and locate in the code:

* HTML templates that carry HMIs: www/templates 
* controllers (JS): www/js/controllers 
* services (JS): www/js/services

<img src="../fr/img/a5078db3abdf71c87f245e948ce94a181b0e0f37.png" width="690" height="369">


### Go further in the code

Cesium relies on AngularJS. Excellent documentation is available on the web.

__Note :__ The version of AngularJS used is a 1.x. The 2.x and above change completely and impose a complete redesign... This redesign is planned by 2019, in a version 2 of Cesium.

## Level V: Debugging

### On Chrome

#### Open The Source Explorer

Open the app in Chrome at http://localhost:8100

Open the developer tools: 
* Menu `Option > More Tools > Developer Tools` 
* or by the keyboard shortcuts: `Ctrl + Shift + i`

#### Debug a user's certification

Open the source explorer, and then locate the file `dist/dist_js/app/controllers/wot-controllers.js`.

Find the method `$scope.certify()`, and place a breakpoint there.

Navigate the Cesium app as follows:

 * Click in the menu (on the left) `Annuaire`;
 * Searches for a user and then visualizes their identity;
 * In `Certification received`, click on the `Certify` button;
 * Verify that the console stops at the breakpoint.

<img src="../fr/img/eca671a6d24b8e11566cfcca11b65e6c9c9c370c.png" width="690" height="223">

Discover the code by scrolling down the step-by-step action.

> Use the keys from `F9` to `F11`, to enter a method (F11), advance step by step (F10) or to the next breakpoint (F9), etc.


## See more ?!

You can now continue with the following levels. We will see how to modify a Cesium screen.

[See more here >>](./development_tutorial-02.md)
+180 −0
Original line number Original line Diff line number Diff line
## Presentation

This article is the 2nd initiation tutorial to the Cesium software source code.

You will be able to understand the role of the different software layers,
by modifying them in order to improve a screen of Cesium.

## Prerequisites

Before doing this tutorial, you must:
  
 - Know the functionalities of Cesium. If not, refer to [la vidéo de présentation générale des fonctionnalités](https://www.youtube.com/watch?v=FQzGIzJf9Nw&list=PLr7acQJbh5rzgkXOrCws2bELR8TNRIuv0&index=6) (RML7) and the one detailing the new features (RML8 - link to come)
 - Have followed the 1st tutorial for setting up the environment [jusqu'au niveau III](https://github.com/duniter/cesium/blob/master/doc/fr/development_tutorial.md)

## Level VI: Display a missing currency parameter

__Objective :__ In this level, the objective is to display in the [`Currency`](http://g1.duniter.fr/#/app/currency/view/lg/) page the monetary parameter `stepMax`.

> As a reminder, `stepMax` is the maximum distance between a member and an applicant, so that the latter can enter the web of trust.

### Modify the HTML template

Open the template file `/www/templates/currency/items_parameters.html`.

Add a new item in the list of parameters, i.e. a new `<ion-item>` tag, below the other tags of the same name:

```html
   (...)

   <ion-item class="item-icon-left">
     <i class="icon ion-steam"></i>
     <span translate>CURRENCY.VIEW.STEP_MAX</span>
     <span class="badge badge-stable">{{stepMax}}</span>
   </ion-item>
```

If you refresh the `Currency` page of your browser, you should see the change:

<img src="../fr/img/19a637b1fa847aa5bbb18565737e9e5e28729221.jpg" width="431" height="97">

### Internationalizing a Label

The `CURRENCY.VIEW.STEP_MAX` string actually represents an **internationalized message key**.
We now need to add the translation of this key.

> The icon is configured simply by the `ion-stream` CSS class. To find out which icons are available, see
[ionicons.com](http://ionicons.com/)

Open the file `www/i18n/locale-fr-FR.json` and identify the element `CURRENCY` then `VIEW`.
Add the translation for our new key:

```json
  "CURRENCY": {
   (...)

  "VIEW": {
    "TITLE": "Monnaie",
    (...)
    "SIG_WINDOW": "Maximum delay a certification can wait<br/>before being expired for non-writing.",
    "STEP_MAX": "Distance maximale dans la toile de confiance<br/>entre chaque membre et un nouvel entrant"
  }
}
```

Don't forget **to add a comma** on the preceding line...

> Note: Cesium internationalization uses the AngularJS plugin [angular-translate](https://github.com/angular-translate/angular-translate).
> Depending on the case, it is possible to use HTML tags, like here the tag `<br/>`

Refresh your browser page: the key has been translated! 

<img src="../fr/img/6bd04622dd2eb59f6d716ae9e2f114276e4ca35a.jpg" width="690" height="116">

Repeat the operation in the **other translation files** present in `www/i18n`:

```
    (...)
    "STEP_MAX": "Maximum distance between<br/>each WoT member and a newcomer"
   }  

```

### Add a dynamic variable

All that remains is to dynamically display the value of our `stepMax` parameter. We will use the `data-binding` functions that AngularJS allows.

> In AngularJS, it is a controller that manages the filling of values, typically from data obtained on the network.

Open the `CurrencyViewController` controller present in the file `www/js/controllers/currency-controllers.js`
This controller already makes a call to the Duniter API [`/blockchain/parameters`](http://cgeek.fr:9330/blockchain/parameters).

Identify the `load()` function.
Modify the return code of the `/blockchain/parameters` call, to store the `stepMax` value in the `$scope`:

```
function CurrencyViewController($scope, $q, $translate, $timeout, BMA, UIUtils, csSettings, csCurrency, csNetwork) {
  // Ajout d'une propriété qui stockera la valeur de stepMax
  // (On met ici la valeur par défaut)
  $scope.stepMax = 0;
  (...)

  $scope.load = function() {
    (...)
    
    return $q.all([

      // Get the currency parameters
      BMA.node.blockchain.parameters()