Skip to content

Commit ac34bff

Browse files
authored
Merge pull request #951 from goplus/dev
Release v1.4.5
2 parents ad6a994 + a36160a commit ac34bff

File tree

138 files changed

+702
-40120
lines changed

Some content is hidden

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

138 files changed

+702
-40120
lines changed

.github/workflows/build.yml

Lines changed: 0 additions & 47 deletions
This file was deleted.
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
name: Publish Docker image
2+
on:
3+
push:
4+
branches:
5+
- dev
6+
paths-ignore:
7+
- 'docs/**'
8+
jobs:
9+
publish-docker-image:
10+
runs-on: ubuntu-latest
11+
steps:
12+
- name: Check out code
13+
uses: actions/checkout@v4
14+
- name: Log in to GitHub Container Registry
15+
uses: docker/login-action@v3
16+
with:
17+
registry: ghcr.io
18+
username: ${{github.actor}}
19+
password: ${{github.token}}
20+
- name: Build and push Docker image
21+
uses: docker/build-push-action@v6
22+
with:
23+
context: .
24+
build-args: |
25+
NODE_ENV=staging
26+
push: true
27+
tags: |
28+
ghcr.io/${{github.repository}}:latest

Dockerfile

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,13 +39,15 @@ COPY tools ../tools
3939
COPY --from=go-builder /app/tools/fmt/static/main.wasm /app/spx-gui/src/assets/format.wasm
4040
COPY --from=go-builder /app/tools/ispx/main.wasm /app/spx-gui/src/assets/ispx/main.wasm
4141

42+
ARG NODE_ENV
43+
4244
RUN npm run build
4345

4446
FROM ${NGINX_BASE_IMAGE}
4547

4648
COPY --from=go-builder /app/spx-backend/spx-backend /app/spx-backend/spx-backend
4749
COPY --from=frontend-builder /app/spx-gui/dist /usr/share/nginx/html
48-
COPY nginx.conf /etc/nginx/conf.d/default.conf
50+
COPY scripts/nginx.conf /etc/nginx/conf.d/default.conf
4951

5052
# Compress WASM files for gzip_static
5153
RUN find /usr/share/nginx/html -name "*.wasm" -exec gzip -9 -k {} \;

docs/product/community.md

Lines changed: 162 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,162 @@
1+
# Community
2+
3+
Purpose of Building a Community:
4+
5+
* Foster creative enthusiasm: Experience excellent projects created by others
6+
* Lower the barrier to creation: Continue creating based on other projects
7+
* Improve creative abilities: Learn how other projects implement functionalities
8+
9+
The term "Community" in this document refers to a series of capabilities built to establish a community and achieve the aforementioned purposes, including but not limited to:
10+
11+
* Operations related to Projects, such as publishing, running, commenting, liking, remixing, etc.
12+
* Operations related to Users, such as personal information management, following, etc.
13+
* Operations related to teams, such as creation, management, and even benefit distribution.
14+
15+
## Basic Concepts
16+
17+
### Follow
18+
19+
Users can follow other users to receive their news in a timely manner. When A follows B, A is considered a follower of B, and B is considered a followee of A.
20+
21+
In the long run, "news" may include but is not limited to:
22+
23+
* New projects from followees
24+
* New releases from followees
25+
* New followees of followees
26+
27+
Channels for obtaining news may include but are not limited to:
28+
29+
* Recommended content on the follower's homepage
30+
* Message notifications (in-site messages, emails, etc.) for the follower
31+
32+
### Like
33+
34+
Users can like projects they enjoy. In addition to expressing their admiration for the project, it also allows them to easily find it in the future. In the long run, we may also use a user's like information to recommend content to them.
35+
36+
### User
37+
38+
On top of the [Go+ Builder](./index.md), the basic information of a user is expanded as follows:
39+
40+
* Description: A description of oneself
41+
42+
### Project
43+
44+
On top of the [Go+ Builder](./index.md), the information of a project is expanded as follows:
45+
46+
* Description: A description of the project
47+
* Instructions: Instructions for playing the game
48+
* RemixFrom: Information about the source of the remix, if the current project is created by remixing based on another project, this records the original project and release information
49+
* Thumbnail: A thumbnail image
50+
* Other community interaction-related information, such as visit counts, etc.
51+
52+
### Release
53+
54+
A release is a snapshot of a project's state at a certain moment, representing a fixed and immutable game content.
55+
56+
Each project can have zero or more releases.
57+
58+
A release includes the following information:
59+
60+
* Version: A version number used to identify the release; for releases under the same project, the version is unique
61+
* Description: A description of the release
62+
* Game: The game content
63+
* Thumbnail: A thumbnail image
64+
* Others, such as creation time, etc.
65+
66+
Whether another user or an anonymous user can access a release depends on whether its corresponding project is public. Only when a project is public can its releases be accessed by other users or anonymous users.
67+
68+
In the simplest implementation, the game information in a release is a copy of the game information in the project. In the long run, we may do more work during the release creation phase, such as compression, compilation, etc. Therefore, the game information in a release actually contains two parts:
69+
70+
1. Source code, consistent with the game information in the project
71+
2. Executable file generated based on the source code
72+
73+
The process of creating a release for one's own project includes:
74+
75+
* Automatically generating (or user inputting) version and description information
76+
* Copying the game and thumbnail from the current project as the game and thumbnail of the release
77+
* Creating the release using the above information
78+
79+
### Publish
80+
81+
Publishing is an action that:
82+
83+
1. If the current project is not public, sets it to public
84+
2. Allows the user to update the description, instructions, and other information of the current project
85+
3. Creates a release based on the current project
86+
4. Provides the operator with a successful publish prompt and the URL of the project page for sharing with others
87+
88+
### Unpublish
89+
90+
Unpublishing is an action that:
91+
92+
1. If the current project is public, sets it to private
93+
94+
### Remix
95+
96+
Users can create their own projects based on other people's projects and continue editing them. This process is called remixing.
97+
98+
Note that when remixing a project, it is always necessary to specify one of its releases (by default, the latest release). When remixing a release R of project P, we will:
99+
100+
1. Create a project P2 for the current user (private)
101+
2. Copy the description, instructions, and other information of P to P2
102+
3. Copy the game information (source code part) of R to P2
103+
4. Set the RemixFrom of P2 as P & R
104+
105+
## User Story
106+
107+
### Edit Project
108+
109+
In addition to the actions mentioned in [Go+ Builder](./index.md), users can also perform the following actions in the editor:
110+
111+
* Publish / Unpublish a project
112+
113+
### View Others' Public Project Homepage
114+
115+
Logged-in or anonymous users can visit the homepage of others' public projects to:
116+
117+
* View basic information about the project, such as owner, name, description, instructions, remix source, etc.
118+
* View release records, such as creation time, version, description, etc.
119+
* View community interaction information of the project
120+
* Run the game, where the game content is the latest release of the project
121+
* Share the project with others
122+
* Like (if logged in)
123+
* Remix the project (if logged in)
124+
125+
Remixing is based on the latest release of the project only when the project has releases.
126+
127+
### View Own Project Homepage
128+
129+
Logged-in users can visit their own project homepage to:
130+
131+
* View basic information about the project, such as owner, name, description, instructions, remix source, etc.
132+
* View release records, such as creation time, version, description, etc.
133+
* View community interaction information of the project
134+
* Run the game, where the game content is the latest release of the project
135+
* Edit basic information about the project, such as description, instructions, etc.
136+
* Edit the game content of the project (redirect to the editor page)
137+
* Unpublish the project
138+
139+
### View Others' Personal Homepage
140+
141+
Logged-in or anonymous users can visit other users' personal homepage to:
142+
143+
* View basic information about the user, such as name, description, etc.
144+
* View the list of the user's public projects
145+
* View community interaction information of the user, such as followers, followees, likes, etc.
146+
* Follow / Unfollow the user (if logged in)
147+
148+
### View Own Personal Homepage
149+
150+
Logged-in users can visit their own personal homepage to:
151+
152+
* View their own basic information, such as name, description, etc.
153+
* View the list of their own public projects
154+
* View community interaction information of themselves, such as followers, followees, likes, etc.
155+
* Edit their own basic information
156+
157+
### Access the Community Homepage
158+
159+
Logged-in or anonymous users can access the community homepage to:
160+
161+
* View a list of recommended public projects (based on recent likes and remixes across the platform)
162+
* View news from followed users

0 commit comments

Comments
 (0)