added xrfragment as submodule
This commit is contained in:
parent
5c24372488
commit
b4f20e6eea
11 changed files with 77 additions and 163 deletions
0
.gitmodules
vendored
Normal file
0
.gitmodules
vendored
Normal file
|
|
@ -1,16 +1,29 @@
|
|||
# Manyfold container
|
||||
|
||||
The XRForge-serverimage is a pre-configured [Manyfold](https://manyfold.app) container (reproducably via [nix](https://nixos.org) dockertools).
|
||||
It also contains some extra's, to better fit an XR audience.
|
||||
It also contains some extra's, to better fit an XR audience & enable community libraries.
|
||||
|
||||
> To run the container, see the [sysadmin](https://manyfold.app/sysadmin/) documentation of the [manyfold](https://github.com/manyfold3d/manyfold) project.
|
||||
|
||||
# Build the container-image
|
||||
# Build/Run the container-image
|
||||
|
||||
```bash
|
||||
$ git clone --recursive --depth 1 https://codeberg.org/coderofsalvation/xrforge.git
|
||||
$ cd xrforge
|
||||
$ docker load < $(nix-build nix/docker.nix)
|
||||
$ manyfold/cli/manyfold run
|
||||
|
||||
[xrforge] podman detected..starting OCI container
|
||||
+ /run/current-system/sw/bin/podman run -p 8790:3214 -p 8791:3215 --name xrforge -e SECRET_KEY_BASE=lkjwljlkwejrlkjek34k234l -e DATABASE_ADAPTER=sqlite3 -e SUDO_RUN_UNSAFELY=enabled -e MULTIUSER=enabled -e FEDER
|
||||
ATION=enabled -e THEME=vapor -e HOMEPAGE=/models -e FEDERATE_DRIVE_CACHE=5s -v ./xrfragment/assets:/mnt/assets/xrfragment/#1 --cap-add SYS_ADMIN --security-opt apparmor:unconfined --device /dev/fuse xrforge
|
||||
[xrforge] booting...
|
||||
[xrforge] applying filesystem overlay
|
||||
sending incremental file list
|
||||
...
|
||||
```
|
||||
|
||||
> NOTE: if you don't want the default XR Fragments asset-library, omit `--recursive` in the git cmd.
|
||||
|
||||
# Extra environment-variables
|
||||
|
||||
| environment variable | default | info |
|
||||
|
|
@ -48,7 +61,7 @@ $ docker load < $(nix-build nix/docker.nix)
|
|||
The server-image will boot `manyfold/cli/manyfold.sh boot` and check for directory `/manyfold` (in the container).
|
||||
When found, it uses the files in there instead (`/manyfold/usr/src/app/public/404.html` instead of `/usr/src/app/public/404.html` e.g.).
|
||||
|
||||
# Federated drives
|
||||
# Federated libraries
|
||||
|
||||
Besides ActivitPub, XRForge allows federating manyfold libraries too, which allows manyfold libraries to:
|
||||
|
||||
|
|
@ -94,6 +107,26 @@ The quickest way is:
|
|||
By default environment-flag `FEDERATE_DRIVE_PATH` will share path `/mnt/experiences` as an open web directory.
|
||||
Make sure that the URL (and credentials if configure) of step 3 are setup properly, so it matches your reverse proxy/ or SSL configuration (via `FEDERATE_DRIVE_CERT` and `FEDERATE_DRIVE_KEY` flags)
|
||||
|
||||
# Git libraries
|
||||
|
||||
XRForge also automatically maps git-repositories as libraries.
|
||||
Repositories are detected via the `/mnt` directory, which can be fed as a **volume** via the docker cmd:
|
||||
|
||||
```
|
||||
$ cd xrforge
|
||||
xrforge $ mkdir mnt && cd mnt
|
||||
xrforge/mnt $ git clone https://codeberg.org/my/repo
|
||||
xrforge/mnt $ ls repo
|
||||
|
||||
john/#1023/foo.glb
|
||||
john/#1023/bar.glb
|
||||
mary/#103/flop.glb
|
||||
|
||||
xrforge $ docker run xrforge ... -v ./mnt/repo:/mnt/repo ...
|
||||
```
|
||||
|
||||
> **NOTE**: repositories need to respect XRForge's `{creator}/{modelId}` modelpath. This automatically creates creators/models in the database. This does not mean creators can automatically log in (no passwords are set), which should be fine for most archive-like purposes.
|
||||
|
||||
# Unixy event hooks
|
||||
|
||||
Until WebEvents/WebSub [gets supported on a REST-level in manyfold](https://github.com/orgs/manyfold3d/projects/4/views/1?filterQuery=Pub&pane=issue&itemId=108834509&issue=manyfold3d%7Cmanyfold%7C4097), things like boot-phase, scheduler and file-changes can be reacted up via the `/root/hook.d` directory:
|
||||
|
|
|
|||
|
|
@ -104,7 +104,7 @@ db(){
|
|||
|
||||
add_lib_to_db(){
|
||||
name=$(basename $1)
|
||||
debug sqlite3 $db "INSERT INTO libraries SELECT NULL, '$1', DATE('NOW'), DATE('NOW'), '', '', '$name', NULL, '', 'filesystem', '', '', '', '', '', '$name', 1 WHERE NOT EXISTS (SELECT 1 FROM libraries WHERE path = '$1');"
|
||||
sqlite3 $db "INSERT INTO libraries SELECT NULL, '$1', DATE('NOW'), DATE('NOW'), '', '', '$name', NULL, '', 'filesystem', '', '', '', '', '', '$name', 1 WHERE NOT EXISTS (SELECT 1 FROM libraries WHERE path = '$1');"
|
||||
}
|
||||
|
||||
set_upload_path(){
|
||||
|
|
@ -112,10 +112,17 @@ set_upload_path(){
|
|||
test -d $UPLOAD_PATH || mkdir $UPLOAD_PATH
|
||||
add_lib_to_db $UPLOAD_PATH
|
||||
id=$(sqlite3 $db "select id from libraries where path = '$UPLOAD_PATH';")
|
||||
debug sqlite3 $db "UPDATE settings set value = $id where var = 'default_library';"
|
||||
sqlite3 $db "UPDATE settings set value = $id where var = 'default_library';"
|
||||
}
|
||||
|
||||
rclone_mount(){
|
||||
mount_dir(){
|
||||
find /mnt -type d -mindepth 1 -maxdepth 1 | while read dir; do
|
||||
echocolor "[$APPNAME]" "mounting $dir as library"
|
||||
add_lib_to_db "$dir"
|
||||
done
|
||||
}
|
||||
|
||||
mount_rclone(){
|
||||
|
||||
libraries(){
|
||||
rclone listremotes | while read remote; do
|
||||
|
|
@ -171,6 +178,12 @@ start_syslog(){
|
|||
tail -f /var/log/messages &
|
||||
}
|
||||
|
||||
scan_libraries(){
|
||||
sleep 10 # wait for manyfold/redis to boot first
|
||||
cd /usr/src/app
|
||||
bin/manyfold libraries scan
|
||||
}
|
||||
|
||||
# The new entrypoint of the docker
|
||||
boot(){
|
||||
echocolor "[$APPNAME]" "booting..."
|
||||
|
|
@ -181,9 +194,11 @@ boot(){
|
|||
set_homepage
|
||||
set_theme
|
||||
set_modelpath
|
||||
rclone_mount
|
||||
mount_dir
|
||||
mount_rclone
|
||||
set_upload_path
|
||||
start_hook_daemon
|
||||
scan_libraries &
|
||||
hook boot # emit unixy hook-event (/root/hook.d/boot/* scripts)
|
||||
|
||||
exec "$@" # exec prevents error 's6-overlay-suexec: fatal: can only run as pid 1'
|
||||
|
|
|
|||
|
|
@ -136,31 +136,25 @@ INSERT INTO schema_migrations VALUES('20250609210440');
|
|||
INSERT INTO schema_migrations VALUES('20250620141805');
|
||||
INSERT INTO schema_migrations VALUES('20250621223410');
|
||||
INSERT INTO schema_migrations VALUES('20250629212656');
|
||||
INSERT INTO schema_migrations VALUES('20250716093106');
|
||||
INSERT INTO schema_migrations VALUES('20250724094951');
|
||||
CREATE TABLE IF NOT EXISTS "ar_internal_metadata" ("key" varchar NOT NULL PRIMARY KEY, "value" varchar, "created_at" datetime(6) NOT NULL, "updated_at" datetime(6) NOT NULL);
|
||||
INSERT INTO ar_internal_metadata VALUES('environment','production','2025-07-25 10:52:31.380052','2025-07-25 10:52:31.380054');
|
||||
CREATE TABLE IF NOT EXISTS "libraries" ("id" integer PRIMARY KEY AUTOINCREMENT NOT NULL, "path" varchar NOT NULL, "created_at" datetime(6) NOT NULL, "updated_at" datetime(6) NOT NULL, "notes" varchar, "caption" varchar, "name" varchar, "tag_regex" text, "icon" text, "storage_service" varchar DEFAULT 'filesystem' NOT NULL, "s3_endpoint" varchar DEFAULT NULL, "s3_region" varchar DEFAULT NULL, "s3_bucket" varchar DEFAULT NULL, "s3_access_key_id" varchar DEFAULT NULL, "s3_secret_access_key" varchar DEFAULT NULL, "public_id" varchar, "s3_path_style" boolean DEFAULT 1 NOT NULL);
|
||||
INSERT INTO libraries VALUES(6,'/mnt/experiences','2025-08-07','2025-08-07','','','experiences',NULL,'','filesystem','','','','','','experiences',1);
|
||||
CREATE TABLE IF NOT EXISTS "tags" ("id" integer PRIMARY KEY AUTOINCREMENT NOT NULL, "name" varchar, "created_at" datetime, "updated_at" datetime, "taggings_count" integer DEFAULT 0);
|
||||
INSERT INTO tags VALUES(1,'fontmap','2025-08-11 07:14:34.877804','2025-08-11 07:14:34.877804',1);
|
||||
CREATE TABLE IF NOT EXISTS "taggings" ("id" integer PRIMARY KEY AUTOINCREMENT NOT NULL, "tag_id" integer, "taggable_type" varchar, "taggable_id" integer, "tagger_type" varchar, "tagger_id" integer, "context" varchar(128), "created_at" datetime, CONSTRAINT "fk_rails_9fcd2e236b"
|
||||
FOREIGN KEY ("tag_id")
|
||||
REFERENCES "tags" ("id")
|
||||
);
|
||||
INSERT INTO taggings VALUES(1,1,'Model',1,NULL,NULL,'tags','2025-08-11 07:14:34.907021');
|
||||
CREATE TABLE IF NOT EXISTS "links" ("id" integer PRIMARY KEY AUTOINCREMENT NOT NULL, "url" varchar, "linkable_type" varchar, "linkable_id" integer, "created_at" datetime(6) NOT NULL, "updated_at" datetime(6) NOT NULL, "synced_at" datetime(6));
|
||||
INSERT INTO links VALUES(1,'https://xrfragment.org','Creator',1,'2025-08-11 07:07:58.791010','2025-08-11 07:07:58.791010',NULL);
|
||||
CREATE TABLE IF NOT EXISTS "links" ("id" integer PRIMARY KEY AUTOINCREMENT NOT NULL, "url" varchar, "linkable_type" varchar, "linkable_id" integer, "created_at" datetime(6) NOT NULL, "updated_at" datetime(6) NOT NULL);
|
||||
CREATE TABLE IF NOT EXISTS "settings" ("id" integer PRIMARY KEY AUTOINCREMENT NOT NULL, "var" varchar NOT NULL, "value" text, "created_at" datetime(6) NOT NULL, "updated_at" datetime(6) NOT NULL);
|
||||
INSERT INTO settings VALUES(1,'default_library','6','2025-07-25 10:58:00.004576','2025-07-28 13:30:03.381376');
|
||||
INSERT INTO settings VALUES(1,'default_library',replace('--- 2\n','\n',char(10)),'2025-07-25 10:58:00.004576','2025-07-28 13:30:03.381376');
|
||||
INSERT INTO settings VALUES(2,'site_name',replace('--- XRForge\n','\n',char(10)),'2025-07-25 10:59:04.496016','2025-07-25 10:59:04.496016');
|
||||
INSERT INTO settings VALUES(3,'site_tagline',replace('--- Self-sovereign XR Experiences. Connect 3D files via URLs\n','\n',char(10)),'2025-07-25 10:59:04.519264','2025-08-07 10:49:23.348065');
|
||||
INSERT INTO settings VALUES(4,'theme','vapor','2025-07-25 10:59:04.522670','2025-08-07 10:47:16.469331');
|
||||
INSERT INTO settings VALUES(5,'about',replace('--- |-\n XRForge is a preconfigured Manyfold, tailored to an XR Audience.\n\n # Features\n\n * linked VR-experiences (via XR Fragments spec)\n * federated libraries / network drives\n * automatic packaging for game-engines\n','\n',char(10)),'2025-07-25 10:59:04.527612','2025-08-07 10:51:18.592181');
|
||||
INSERT INTO settings VALUES(3,'site_tagline',replace('--- Self-sovereign XR Experiences based on 3D files & URLs\n','\n',char(10)),'2025-07-25 10:59:04.519264','2025-07-25 10:59:04.519264');
|
||||
INSERT INTO settings VALUES(4,'theme','vapor','2025-07-25 10:59:04.522670','2025-07-28 13:47:54.690364');
|
||||
INSERT INTO settings VALUES(5,'about',replace('--- ''''\n','\n',char(10)),'2025-07-25 10:59:04.527612','2025-07-25 10:59:04.527612');
|
||||
INSERT INTO settings VALUES(6,'rules',replace('--- ''''\n','\n',char(10)),'2025-07-25 10:59:04.531378','2025-07-25 10:59:04.531378');
|
||||
INSERT INTO settings VALUES(7,'support_link',replace('--- https://forgejo.isvery.ninja/coderofsalvation/xrforge\n','\n',char(10)),'2025-07-25 10:59:04.533678','2025-07-25 10:59:04.533678');
|
||||
INSERT INTO settings VALUES(8,'site_icon',replace('--- ''''\n','\n',char(10)),'2025-07-25 10:59:04.536228','2025-07-25 14:19:06.192651');
|
||||
INSERT INTO settings VALUES(9,'model_path_template',replace('--- "{creator}/{modelId}"\n','\n',char(10)),'2025-07-28 15:57:18.598798','2025-07-28 15:57:18.598798');
|
||||
INSERT INTO settings VALUES(9,'model_path_template',replace('--- "{tags}/{tags}/{modelName}{modelId}"\n','\n',char(10)),'2025-07-28 15:57:18.598798','2025-07-28 15:57:18.598798');
|
||||
INSERT INTO settings VALUES(10,'parse_metadata_from_path',replace('--- true\n','\n',char(10)),'2025-07-28 15:57:18.624917','2025-07-28 15:57:18.624917');
|
||||
INSERT INTO settings VALUES(11,'safe_folder_names',replace('--- true\n','\n',char(10)),'2025-07-28 15:57:18.627224','2025-07-28 15:57:18.627224');
|
||||
INSERT INTO settings VALUES(12,'model_ignored_files',replace('---\n- !ruby/regexp /^\.[^\.]+/\n- !ruby/regexp /.*\/@eaDir\/.*/\n- !ruby/regexp /__MACOSX/\n','\n',char(10)),'2025-07-28 15:57:18.633182','2025-07-28 15:57:18.633182');
|
||||
|
|
@ -169,15 +163,7 @@ INSERT INTO settings VALUES(14,'model_tags_tag_model_directory_name',replace('--
|
|||
INSERT INTO settings VALUES(15,'model_tags_stop_words_locale',replace('--- en\n','\n',char(10)),'2025-07-28 15:57:18.643185','2025-07-28 15:57:18.643185');
|
||||
INSERT INTO settings VALUES(16,'model_tags_custom_stop_words',replace('---\n- png\n- jpeg\n- jpg\n- jpe\n- pjpeg\n- gif\n- bmp\n- tiff\n- tif\n- svg\n- webp\n- threeds\n- 3ds\n- amf\n- ldr\n- mpd\n- scad\n- dwg\n- dxf\n- threemf\n- 3mf\n- gltf\n- glb\n- iges\n- igs\n- mtl\n- obj\n- step\n- stp\n- stl\n- collada\n- dae\n- draco\n- drc\n- vrml\n- wrl\n- abc\n- blend\n- brep\n- cheetah3d\n- jas\n- fbx\n- fcstd\n- f3d\n- f3z\n- ipt\n- iam\n- maya\n- ma\n- mb\n- mix\n- modo\n- lxo\n- ply\n- sketchup\n- skp\n- sldprt\n- hfp\n- speedtree\n- spm\n- x3d\n- gcode\n- bgcode\n- lychee\n- lys\n- lyt\n- chitubox\n- ctb\n- mpeg\n- mpg\n- mpe\n- webm\n- mp4\n- m4v\n- html\n- xhtml\n- text\n- txt\n- pdf\n- md\n- doc\n- docx\n- bin\n- gbr\n- gerber\n- geb\n- gb\n- gbrjob\n- drl\n- kicad_pro\n- pro\n- kicad_mod\n- kicad_pcb\n- kicad_sym\n- kicad_sch\n- sch\n- kicad_wks\n- zip\n- gzip\n- gz\n- rar\n- sevenz\n- 7z\n- bz2\n','\n',char(10)),'2025-07-28 15:57:18.645648','2025-07-28 15:57:18.645648');
|
||||
INSERT INTO settings VALUES(17,'model_tags_auto_tag_new',replace('--- "!new"\n','\n',char(10)),'2025-07-28 15:57:18.648518','2025-07-28 15:57:18.648518');
|
||||
INSERT INTO settings VALUES(18,'registration_enabled',replace('--- true\n','\n',char(10)),'2025-08-07 10:46:21.848049','2025-08-07 10:46:21.848049');
|
||||
INSERT INTO settings VALUES(19,'approve_signups',replace('--- false\n','\n',char(10)),'2025-08-07 10:46:21.907863','2025-08-07 10:46:21.907863');
|
||||
INSERT INTO settings VALUES(20,'default_signup_role',replace('--- contributor\n','\n',char(10)),'2025-08-07 10:46:21.916715','2025-08-07 10:46:21.916715');
|
||||
INSERT INTO settings VALUES(21,'autocreate_creator_for_new_users',replace('--- true\n','\n',char(10)),'2025-08-07 10:46:21.926311','2025-08-07 10:46:21.926311');
|
||||
INSERT INTO settings VALUES(22,'default_viewer_role',replace('--- member\n','\n',char(10)),'2025-08-07 10:46:21.935093','2025-08-07 10:46:21.935093');
|
||||
INSERT INTO settings VALUES(23,'enable_user_quota',replace('--- false\n','\n',char(10)),'2025-08-07 10:46:21.944399','2025-08-07 10:46:21.944399');
|
||||
INSERT INTO settings VALUES(24,'default_user_quota',replace('--- 0\n','\n',char(10)),'2025-08-07 10:46:21.950723','2025-08-07 10:46:21.950723');
|
||||
CREATE TABLE IF NOT EXISTS "problems" ("id" integer PRIMARY KEY AUTOINCREMENT NOT NULL, "problematic_type" varchar, "problematic_id" integer, "category" integer, "created_at" datetime(6) NOT NULL, "updated_at" datetime(6) NOT NULL, "note" varchar DEFAULT NULL, "ignored" boolean DEFAULT 0 NOT NULL, "public_id" varchar, "in_progress" boolean DEFAULT 0 NOT NULL);
|
||||
INSERT INTO problems VALUES(2,'Model',1,11,'2025-08-11 07:14:44.067192','2025-08-11 07:14:44.067192',NULL,0,'hwlxhqvk7w7r',0);
|
||||
CREATE TABLE IF NOT EXISTS "favorites" ("id" integer PRIMARY KEY AUTOINCREMENT NOT NULL, "favoritable_type" varchar NOT NULL, "favoritable_id" integer NOT NULL, "favoritor_type" varchar NOT NULL, "favoritor_id" integer NOT NULL, "scope" varchar DEFAULT 'printed' NOT NULL, "blocked" boolean DEFAULT 0 NOT NULL, "created_at" datetime(6) NOT NULL, "updated_at" datetime(6) NOT NULL);
|
||||
CREATE TABLE IF NOT EXISTS "flipper_features" ("id" integer PRIMARY KEY AUTOINCREMENT NOT NULL, "key" varchar NOT NULL, "created_at" datetime(6) NOT NULL, "updated_at" datetime(6) NOT NULL);
|
||||
CREATE TABLE IF NOT EXISTS "flipper_gates" ("id" integer PRIMARY KEY AUTOINCREMENT NOT NULL, "feature_key" varchar NOT NULL, "key" varchar NOT NULL, "value" text, "created_at" datetime(6) NOT NULL, "updated_at" datetime(6) NOT NULL);
|
||||
|
|
@ -190,7 +176,7 @@ CREATE TABLE IF NOT EXISTS "users_roles" ("user_id" integer, "role_id" integer);
|
|||
INSERT INTO users_roles VALUES(1,4);
|
||||
INSERT INTO users_roles VALUES(1,1);
|
||||
CREATE TABLE IF NOT EXISTS "users" ("id" integer PRIMARY KEY AUTOINCREMENT NOT NULL, "email" varchar DEFAULT '' NOT NULL, "encrypted_password" varchar DEFAULT '' NOT NULL, "created_at" datetime(6) NOT NULL, "updated_at" datetime(6) NOT NULL, "username" varchar NOT NULL, "pagination_settings" json DEFAULT '{"models":true,"creators":true,"collections":true,"per_page":12}', "renderer_settings" json DEFAULT '{"grid_width":200,"grid_depth":200,"show_grid":true,"enable_pan_zoom":false,"background_colour":"#000000","object_colour":"#ffffff","render_style":"original"}', "tag_cloud_settings" json DEFAULT '{"threshold":2,"heatmap":true,"keypair":true,"sorting":"frequency"}', "problem_settings" json DEFAULT '{"missing":"danger","empty":"info","nesting":"warning","inefficient":"info","duplicate":"warning","no_image":"silent","no_3d_model":"silent","non_manifold":"warning","inside_out":"warning","no_license":"silent","no_links":"silent","no_creator":"silent","no_tags":"silent"}', "file_list_settings" json DEFAULT '{"hide_presupported_versions":true}', "reset_password_token" varchar, "remember_created_at" datetime(6), "reset_password_sent_at" datetime(6), "interface_language" varchar, "failed_attempts" integer DEFAULT 0 NOT NULL, "locked_at" datetime(6), "auth_provider" varchar, "auth_uid" varchar, "sensitive_content_handling" varchar DEFAULT NULL, "public_id" varchar, "approved" boolean DEFAULT 1 NOT NULL, "quota" integer DEFAULT 1 NOT NULL, "quota_use_site_default" boolean DEFAULT 1 NOT NULL);
|
||||
INSERT INTO users VALUES(1,'xrforge@localhost','$2a$12$u/j8LRzbPiJRHmi1eV/fvOXXiKxN2vBGtNd.Pt28w.wOnq3rnfpzO','2025-07-25 10:52:56.989975','2025-08-11 07:05:45.209885','xrforge','{"models":true,"creators":true,"collections":true,"per_page":12}','{"grid_width":200,"grid_depth":200,"show_grid":true,"enable_pan_zoom":false,"background_colour":"#000000","object_colour":"#ffffff","render_style":"original"}','{"threshold":2,"heatmap":true,"keypair":true,"sorting":"frequency"}','{"missing":"danger","empty":"info","nesting":"warning","inefficient":"info","duplicate":"warning","no_image":"silent","no_3d_model":"silent","non_manifold":"warning","inside_out":"warning","no_license":"silent","no_links":"silent","no_creator":"silent","no_tags":"silent"}','{"hide_presupported_versions":true}',NULL,'2025-08-11 07:05:45.208500',NULL,NULL,0,NULL,NULL,NULL,NULL,'71863vkppj6k',1,1,1);
|
||||
INSERT INTO users VALUES(1,'xrforge@localhost','$2a$12$u/j8LRzbPiJRHmi1eV/fvOXXiKxN2vBGtNd.Pt28w.wOnq3rnfpzO','2025-07-25 10:52:56.989975','2025-07-25 12:46:27.338917','xrforge','{"models":true,"creators":true,"collections":true,"per_page":12}','{"grid_width":200,"grid_depth":200,"show_grid":true,"enable_pan_zoom":false,"background_colour":"#000000","object_colour":"#ffffff","render_style":"original"}','{"threshold":2,"heatmap":true,"keypair":true,"sorting":"frequency"}','{"missing":"danger","empty":"info","nesting":"warning","inefficient":"info","duplicate":"warning","no_image":"silent","no_3d_model":"silent","non_manifold":"warning","inside_out":"warning","no_license":"silent","no_links":"silent","no_creator":"silent","no_tags":"silent"}','{"hide_presupported_versions":true}',NULL,'2025-07-25 12:46:27.325287',NULL,NULL,0,NULL,NULL,NULL,NULL,'71863vkppj6k',1,1,1);
|
||||
CREATE TABLE IF NOT EXISTS "federails_followings" ("id" integer PRIMARY KEY AUTOINCREMENT NOT NULL, "actor_id" integer NOT NULL, "target_actor_id" integer NOT NULL, "status" integer DEFAULT 0, "federated_url" varchar, "created_at" datetime(6) NOT NULL, "updated_at" datetime(6) NOT NULL, "uuid" varchar DEFAULT NULL, CONSTRAINT "fk_rails_2e62338faa"
|
||||
FOREIGN KEY ("actor_id")
|
||||
REFERENCES "federails_actors" ("id")
|
||||
|
|
@ -202,22 +188,7 @@ CREATE TABLE IF NOT EXISTS "federails_activities" ("id" integer PRIMARY KEY AUTO
|
|||
FOREIGN KEY ("actor_id")
|
||||
REFERENCES "federails_actors" ("id")
|
||||
);
|
||||
INSERT INTO federails_activities VALUES(1,'Federails::Actor',2,'Create',1,'2025-08-11 07:07:58.701474','2025-08-11 07:07:58.876261','533e3d24-4f3b-41ce-aea4-2b44c51f3d04');
|
||||
INSERT INTO federails_activities VALUES(2,'Federails::Actor',3,'Create',1,'2025-08-11 07:08:57.465310','2025-08-11 07:08:57.525980','de39545b-7f21-47f2-b283-3f48150dc1de');
|
||||
INSERT INTO federails_activities VALUES(3,'Federails::Actor',4,'Create',1,'2025-08-11 07:14:35.073201','2025-08-11 07:14:35.102927','3c137d07-e8ae-47af-9c47-ba97f25c1746');
|
||||
INSERT INTO federails_activities VALUES(4,'Comment',1,'Create',2,'2025-08-11 07:15:26.394452','2025-08-11 07:15:26.394452','91b2b8d4-5d56-4b17-9ba6-7db5ac0fd3a5');
|
||||
INSERT INTO federails_activities VALUES(5,'Comment',2,'Create',2,'2025-08-11 07:24:45.549316','2025-08-11 07:24:45.549316','25aee6f6-d57c-4fc7-b9a9-8546ef058749');
|
||||
INSERT INTO federails_activities VALUES(6,'Federails::Actor',4,'Update',1,'2025-08-11 07:29:38.394492','2025-08-11 07:29:38.489061','91c075fa-ac0b-467e-b2f6-6f82cbc40f69');
|
||||
INSERT INTO federails_activities VALUES(7,'Federails::Actor',4,'Update',1,'2025-08-11 13:42:47.136658','2025-08-11 13:42:47.275209','d587a29e-e2b6-4892-ad24-44bcd748186b');
|
||||
CREATE TABLE IF NOT EXISTS "caber_relations" ("id" integer PRIMARY KEY AUTOINCREMENT NOT NULL, "subject_type" varchar, "subject_id" integer, "permission" varchar, "object_type" varchar NOT NULL, "object_id" integer NOT NULL, "created_at" datetime(6) NOT NULL, "updated_at" datetime(6) NOT NULL);
|
||||
INSERT INTO caber_relations VALUES(1,'User',1,'own','Creator',1,'2025-08-11 07:07:58.784365','2025-08-11 07:07:58.784365');
|
||||
INSERT INTO caber_relations VALUES(2,'Role',4,'view','Creator',1,'2025-08-11 07:07:58.903544','2025-08-11 07:07:58.903544');
|
||||
INSERT INTO caber_relations VALUES(3,'User',1,'own','Collection',1,'2025-08-11 07:08:57.495084','2025-08-11 07:08:57.495084');
|
||||
INSERT INTO caber_relations VALUES(4,'Role',4,'view','Collection',1,'2025-08-11 07:08:57.537413','2025-08-11 07:08:57.537413');
|
||||
INSERT INTO caber_relations VALUES(5,'User',1,'own','Model',1,'2025-08-11 07:14:34.852077','2025-08-11 07:14:34.852077');
|
||||
INSERT INTO caber_relations VALUES(6,'Role',4,'view','Model',1,'2025-08-11 07:14:35.135758','2025-08-11 07:14:35.135758');
|
||||
INSERT INTO caber_relations VALUES(7,NULL,NULL,'view','Creator',1,'2025-08-11 07:15:19.800404','2025-08-11 07:15:19.800404');
|
||||
INSERT INTO caber_relations VALUES(8,NULL,NULL,'view','Model',1,'2025-08-11 07:15:19.851560','2025-08-11 07:15:19.851560');
|
||||
CREATE TABLE IF NOT EXISTS "federails_moderation_reports" ("id" integer PRIMARY KEY AUTOINCREMENT NOT NULL, "federated_url" varchar, "federails_actor_id" integer, "content" varchar, "object_type" varchar, "object_id" integer, "resolved_at" datetime(6), "resolution" varchar, "created_at" datetime(6) NOT NULL, "updated_at" datetime(6) NOT NULL, CONSTRAINT "fk_rails_a5cda24d4c"
|
||||
FOREIGN KEY ("federails_actor_id")
|
||||
REFERENCES "federails_actors" ("id")
|
||||
|
|
@ -227,8 +198,6 @@ CREATE TABLE IF NOT EXISTS "comments" ("id" integer PRIMARY KEY AUTOINCREMENT NO
|
|||
FOREIGN KEY ("federails_actor_id")
|
||||
REFERENCES "federails_actors" ("id")
|
||||
);
|
||||
INSERT INTO comments VALUES(1,'q6hxq3r8jwnv','Creator',1,'Model',1,'A new 3D model, ["Fontmap"](http://localhost:3214/models/vrpw4zlgzzm8), was just published!','2025-08-11 07:15:26.378633','2025-08-11 07:15:26.378633',1,0,NULL,2);
|
||||
INSERT INTO comments VALUES(2,'s6w0nbxv8wmt','Creator',1,'Model',1,'The 3D model ["XR Fragments assets"](http://localhost:3214/models/vrpw4zlgzzm8), was just updated!','2025-08-11 07:24:45.534105','2025-08-11 07:24:45.534105',1,0,NULL,2);
|
||||
CREATE TABLE IF NOT EXISTS "oauth_applications" ("id" integer PRIMARY KEY AUTOINCREMENT NOT NULL, "name" varchar NOT NULL, "uid" varchar NOT NULL, "secret" varchar NOT NULL, "redirect_uri" text, "scopes" varchar DEFAULT '' NOT NULL, "confidential" boolean DEFAULT 1 NOT NULL, "created_at" datetime(6) NOT NULL, "updated_at" datetime(6) NOT NULL, "owner_id" bigint, "owner_type" varchar);
|
||||
CREATE TABLE IF NOT EXISTS "oauth_access_grants" ("id" integer PRIMARY KEY AUTOINCREMENT NOT NULL, "resource_owner_id" integer NOT NULL, "application_id" integer NOT NULL, "token" varchar NOT NULL, "expires_in" integer NOT NULL, "redirect_uri" text NOT NULL, "scopes" varchar DEFAULT '' NOT NULL, "created_at" datetime(6) NOT NULL, "revoked_at" datetime(6), CONSTRAINT "fk_rails_b4b53e07b8"
|
||||
FOREIGN KEY ("application_id")
|
||||
|
|
@ -246,9 +215,6 @@ FOREIGN KEY ("resource_owner_id")
|
|||
);
|
||||
CREATE TABLE IF NOT EXISTS "federails_actors" ("id" integer PRIMARY KEY AUTOINCREMENT NOT NULL, "name" varchar, "federated_url" varchar, "username" varchar, "server" varchar, "inbox_url" varchar, "outbox_url" varchar, "followers_url" varchar, "followings_url" varchar, "profile_url" varchar, "entity_id" integer, "created_at" datetime(6) NOT NULL, "updated_at" datetime(6) NOT NULL, "entity_type" varchar DEFAULT NULL, "public_key" text, "private_key" text, "uuid" varchar, "extensions" json, "local" boolean DEFAULT 0 NOT NULL, "actor_type" varchar, "tombstoned_at" datetime(6));
|
||||
INSERT INTO federails_actors VALUES(1,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1,'2025-07-25 10:52:57.029315','2025-07-25 10:52:57.029315','User',NULL,NULL,'eb64d114-1bc7-4cb3-8be6-350d23ccfb3e',NULL,1,NULL,NULL);
|
||||
INSERT INTO federails_actors VALUES(2,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1,'2025-08-11 07:07:58.778020','2025-08-11 07:07:58.778020','Creator',NULL,NULL,'bdff9ca9-88da-4b14-a7cb-01887e5d3c8e',NULL,1,NULL,NULL);
|
||||
INSERT INTO federails_actors VALUES(3,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1,'2025-08-11 07:08:57.485286','2025-08-11 07:08:57.485286','Collection',NULL,NULL,'8478020b-6b34-4e86-8511-4a1bb738a331',NULL,1,NULL,NULL);
|
||||
INSERT INTO federails_actors VALUES(4,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1,'2025-08-11 07:14:34.840250','2025-08-11 07:14:34.840250','Model',NULL,NULL,'18ccb599-8b40-4778-91f7-6b7970f0b256',NULL,1,NULL,NULL);
|
||||
CREATE TABLE IF NOT EXISTS "model_files" ("id" integer PRIMARY KEY AUTOINCREMENT NOT NULL, "filename" varchar, "model_id" integer NOT NULL, "created_at" datetime(6) NOT NULL, "updated_at" datetime(6) NOT NULL, "presupported" boolean DEFAULT 0 NOT NULL, "y_up" boolean DEFAULT 0 NOT NULL, "digest" varchar, "notes" text, "caption" text, "size" bigint, "presupported_version_id" integer, "attachment_data" json, "public_id" varchar, "filename_lower" varchar GENERATED ALWAYS AS (LOWER(filename)) STORED, "previewable" boolean DEFAULT 0 NOT NULL, CONSTRAINT "fk_rails_b5ac05b6e3"
|
||||
FOREIGN KEY ("presupported_version_id")
|
||||
REFERENCES "model_files" ("id")
|
||||
|
|
@ -256,10 +222,6 @@ FOREIGN KEY ("presupported_version_id")
|
|||
FOREIGN KEY ("model_id")
|
||||
REFERENCES "models" ("id")
|
||||
);
|
||||
INSERT INTO model_files VALUES(1,'fontmap.glb',1,'2025-08-11 07:14:35.064935','2025-08-11 07:14:44.111333',0,0,'35e8f851a1e012681f160d62c5acdb7f670b0f9a0060debe43858d70d804660485280a5ba110ff7a778aab603caeea786bb479d595a82d7ec0acff36a7e35eca',NULL,NULL,8600,NULL,'{"id":"xrfragments/#1/fontmap.glb","storage":"library_6","metadata":{"filename":"fontmap.glb","size":8600,"mime_type":"model/gltf-binary","ctime":"2025-08-11T07:14:35.337+00:00","mtime":"2025-08-11T07:14:35.338+00:00","remote_etag":null,"remote_last_modified":null}}','mlv2qfcv99s1',0);
|
||||
INSERT INTO model_files VALUES(2,'datapackage.json',1,'2025-08-11 07:14:39.060349','2025-08-11 13:42:56.905818',0,0,NULL,NULL,NULL,1967,NULL,'{"id":"xrfragments/#1/datapackage.json","storage":"library_6","metadata":{"filename":null,"size":1967,"mime_type":"application/json","ctime":"2025-08-11T13:42:56.859+00:00","mtime":"2025-08-11T13:42:56.867+00:00","remote_etag":null,"remote_last_modified":null}}','d44635nm6z3k',0);
|
||||
INSERT INTO model_files VALUES(7,'tree.glb',1,'2025-08-11 07:29:50.850906','2025-08-11 07:29:57.592832',0,0,'79f2f9dc9c771bcbed1fc18285eeebd420b7f33446b7b7cb7453d34a5566318db0920e97835e385f270321b901b76dc3eab12eb8b895eabc321326738ba2a249',NULL,NULL,6764,NULL,'{"id":"xrfragments/#1/tree.glb","storage":"library_6","metadata":{"filename":"tree.glb","size":6764,"mime_type":"model/gltf-binary","ctime":"2025-08-11T07:29:50.913+00:00","mtime":"2025-08-11T07:29:50.914+00:00","remote_etag":null,"remote_last_modified":null}}','1hmcw2bnbh7x',0);
|
||||
INSERT INTO model_files VALUES(8,'assets.webp',1,'2025-08-11 13:42:47.085596','2025-08-11 13:42:57.003069',0,0,'1090220f0d208cc142a1025818cb11e8692a58b21aff9d7156eaa40ecd2566389f8a434bc15c9d192574d847ff14efd7b35edc9c3655ea90b0c8a4bb4072b0c4',NULL,NULL,90642,NULL,'{"id":"xrfragments/#1/assets.webp","storage":"library_6","metadata":{"filename":"assets.webp","size":90642,"mime_type":"image/webp","ctime":"2025-08-11T13:42:47.402+00:00","mtime":"2025-08-11T13:42:47.402+00:00","remote_etag":null,"remote_last_modified":null}}','4sjr984nmhtr',1);
|
||||
CREATE TABLE IF NOT EXISTS "altcha_solutions" ("id" integer PRIMARY KEY AUTOINCREMENT NOT NULL, "algorithm" varchar, "challenge" varchar, "salt" varchar, "signature" varchar, "number" integer, "created_at" datetime(6) NOT NULL, "updated_at" datetime(6) NOT NULL);
|
||||
CREATE TABLE IF NOT EXISTS "models" ("id" integer PRIMARY KEY AUTOINCREMENT NOT NULL, "name" varchar NOT NULL, "path" varchar NOT NULL, "library_id" integer NOT NULL, "created_at" datetime(6) NOT NULL, "updated_at" datetime(6) NOT NULL, "preview_file_id" integer, "creator_id" integer, "notes" text, "caption" text, "collection_id" integer, "slug" varchar, "license" varchar, "public_id" varchar, "name_lower" varchar GENERATED ALWAYS AS (LOWER(name)) STORED, "sensitive" boolean DEFAULT 0 NOT NULL, "indexable" varchar, "ai_indexable" varchar, CONSTRAINT "fk_rails_cdf016e15c"
|
||||
FOREIGN KEY ("collection_id")
|
||||
|
|
@ -271,9 +233,7 @@ FOREIGN KEY ("library_id")
|
|||
FOREIGN KEY ("creator_id")
|
||||
REFERENCES "creators" ("id")
|
||||
);
|
||||
INSERT INTO models VALUES(1,'XR Fragments assets','xrfragments/#1',6,'2025-08-11 07:14:34.789236','2025-08-11 13:42:57.006778',8,1,'','',1,'fontmap','CC-BY-SA-4.0','vrpw4zlgzzm8',0,NULL,NULL);
|
||||
CREATE TABLE IF NOT EXISTS "creators" ("id" integer PRIMARY KEY AUTOINCREMENT NOT NULL, "name" varchar NOT NULL, "created_at" datetime(6) NOT NULL, "updated_at" datetime(6) NOT NULL, "notes" text, "caption" text, "slug" varchar, "public_id" varchar, "name_lower" varchar GENERATED ALWAYS AS (LOWER(name)) STORED, "indexable" varchar, "ai_indexable" varchar);
|
||||
INSERT INTO creators VALUES(1,'xrfragments','2025-08-11 07:07:58.701474','2025-08-11 07:09:11.600140',replace('XR Fragments is an open specification for hyperlinking & deeplinking 3D fileformats .\nTurn 3D files into linkable AR/VR websites .\n3D files with XR Fragments enable interoperable, networkable and interactions via so-called extras and promote URL standards .','\n',char(10)),'','xrfragments','fjb71m9sbcl0','yes',NULL);
|
||||
CREATE TABLE IF NOT EXISTS "collections" ("id" integer PRIMARY KEY AUTOINCREMENT NOT NULL, "name" varchar, "notes" text, "caption" text, "created_at" datetime(6) NOT NULL, "updated_at" datetime(6) NOT NULL, "collection_id" integer, "slug" varchar, "public_id" varchar, "name_lower" varchar GENERATED ALWAYS AS (LOWER(name)) STORED, "creator_id" integer, "indexable" varchar, "ai_indexable" varchar, CONSTRAINT "fk_rails_63724415e9"
|
||||
FOREIGN KEY ("collection_id")
|
||||
REFERENCES "collections" ("id")
|
||||
|
|
@ -281,46 +241,20 @@ FOREIGN KEY ("collection_id")
|
|||
FOREIGN KEY ("creator_id")
|
||||
REFERENCES "creators" ("id")
|
||||
);
|
||||
INSERT INTO collections VALUES(1,'XR Fragments',replace('XR Fragments is an open specification for hyperlinking & deeplinking 3D fileformats .\nTurn 3D files into linkable AR/VR websites .\n3D files with XR Fragments enable interoperable, networkable and interactions via so-called extras and promote URL standards .','\n',char(10)),'3D assets which are XR Fragment-compatible.','2025-08-11 07:08:57.465310','2025-08-11 07:09:26.849151',NULL,'xr-fragments','z924drvlr4k1',1,NULL,NULL);
|
||||
INSERT INTO sqlite_sequence VALUES('libraries',6);
|
||||
INSERT INTO sqlite_sequence VALUES('tags',1);
|
||||
INSERT INTO sqlite_sequence VALUES('taggings',1);
|
||||
INSERT INTO sqlite_sequence VALUES('links',1);
|
||||
INSERT INTO sqlite_sequence VALUES('settings',24);
|
||||
INSERT INTO sqlite_sequence VALUES('problems',2);
|
||||
INSERT INTO sqlite_sequence VALUES('roles',4);
|
||||
DELETE FROM sqlite_sequence;
|
||||
INSERT INTO sqlite_sequence VALUES('taggings',0);
|
||||
INSERT INTO sqlite_sequence VALUES('users',1);
|
||||
INSERT INTO sqlite_sequence VALUES('federails_activities',7);
|
||||
INSERT INTO sqlite_sequence VALUES('caber_relations',8);
|
||||
INSERT INTO sqlite_sequence VALUES('comments',2);
|
||||
INSERT INTO sqlite_sequence VALUES('federails_actors',4);
|
||||
INSERT INTO sqlite_sequence VALUES('model_files',8);
|
||||
INSERT INTO sqlite_sequence VALUES('models',1);
|
||||
INSERT INTO sqlite_sequence VALUES('creators',1);
|
||||
INSERT INTO sqlite_sequence VALUES('collections',1);
|
||||
INSERT INTO sqlite_sequence VALUES('libraries',6);
|
||||
INSERT INTO sqlite_sequence VALUES('settings',24);
|
||||
INSERT INTO sqlite_sequence VALUES('roles',4);
|
||||
INSERT INTO sqlite_sequence VALUES('users',1);
|
||||
INSERT INTO sqlite_sequence VALUES('federails_actors',4);
|
||||
INSERT INTO sqlite_sequence VALUES('taggings',1);
|
||||
INSERT INTO sqlite_sequence VALUES('users',1);
|
||||
INSERT INTO sqlite_sequence VALUES('comments',2);
|
||||
INSERT INTO sqlite_sequence VALUES('comments',0);
|
||||
INSERT INTO sqlite_sequence VALUES('oauth_access_grants',0);
|
||||
INSERT INTO sqlite_sequence VALUES('oauth_access_tokens',0);
|
||||
INSERT INTO sqlite_sequence VALUES('federails_actors',1);
|
||||
INSERT INTO sqlite_sequence VALUES('model_files',7);
|
||||
INSERT INTO sqlite_sequence VALUES('models',1);
|
||||
INSERT INTO sqlite_sequence VALUES('creators',1);
|
||||
INSERT INTO sqlite_sequence VALUES('collections',1);
|
||||
INSERT INTO sqlite_sequence VALUES('model_files',0);
|
||||
INSERT INTO sqlite_sequence VALUES('models',0);
|
||||
INSERT INTO sqlite_sequence VALUES('creators',0);
|
||||
INSERT INTO sqlite_sequence VALUES('collections',0);
|
||||
INSERT INTO sqlite_sequence VALUES('roles',4);
|
||||
INSERT INTO sqlite_sequence VALUES('libraries',6);
|
||||
INSERT INTO sqlite_sequence VALUES('settings',24);
|
||||
INSERT INTO sqlite_sequence VALUES('caber_relations',8);
|
||||
INSERT INTO sqlite_sequence VALUES('links',1);
|
||||
INSERT INTO sqlite_sequence VALUES('federails_activities',6);
|
||||
INSERT INTO sqlite_sequence VALUES('tags',1);
|
||||
INSERT INTO sqlite_sequence VALUES('problems',2);
|
||||
INSERT INTO sqlite_sequence VALUES('libraries',5);
|
||||
INSERT INTO sqlite_sequence VALUES('settings',17);
|
||||
CREATE UNIQUE INDEX "index_tags_on_name" ON "tags" ("name");
|
||||
CREATE UNIQUE INDEX "taggings_idx" ON "taggings" ("tag_id", "taggable_id", "taggable_type", "context", "tagger_id", "tagger_type");
|
||||
CREATE INDEX "taggings_taggable_context_idx" ON "taggings" ("taggable_id", "taggable_type", "context");
|
||||
|
|
@ -411,5 +345,4 @@ CREATE INDEX "index_creators_on_created_at" ON "creators" ("created_at");
|
|||
CREATE INDEX "index_creators_on_updated_at" ON "creators" ("updated_at");
|
||||
CREATE INDEX "index_collections_on_created_at" ON "collections" ("created_at");
|
||||
CREATE INDEX "index_collections_on_updated_at" ON "collections" ("updated_at");
|
||||
CREATE INDEX "index_links_on_url" ON "links" ("url");
|
||||
COMMIT;
|
||||
|
|
|
|||
1
manyfold/mnt/assets/xrfragment/#1
Symbolic link
1
manyfold/mnt/assets/xrfragment/#1
Symbolic link
|
|
@ -0,0 +1 @@
|
|||
../../../xrfragment/assets
|
||||
Binary file not shown.
Binary file not shown.
|
Before Width: | Height: | Size: 88 KiB |
|
|
@ -1,68 +0,0 @@
|
|||
{
|
||||
"$schema": "https://manyfold.app/profiles/0.0/datapackage.json",
|
||||
"name": "xr-fragments-assets",
|
||||
"title": "XR Fragments assets",
|
||||
"caption": "",
|
||||
"description": "",
|
||||
"homepage": "http://localhost:3214/models/vrpw4zlgzzm8",
|
||||
"image": "assets.webp",
|
||||
"keywords": [
|
||||
"fontmap"
|
||||
],
|
||||
"licenses": [
|
||||
{
|
||||
"name": "CC-BY-SA-4.0",
|
||||
"path": "https://spdx.org/licenses/CC-BY-SA-4.0.html"
|
||||
}
|
||||
],
|
||||
"resources": [
|
||||
{
|
||||
"name": "fontmap",
|
||||
"path": "fontmap.glb",
|
||||
"mediatype": "model/gltf",
|
||||
"up": "+z",
|
||||
"presupported": false
|
||||
},
|
||||
{
|
||||
"name": "tree",
|
||||
"path": "tree.glb",
|
||||
"mediatype": "model/gltf",
|
||||
"up": "+z",
|
||||
"presupported": false
|
||||
},
|
||||
{
|
||||
"name": "assets",
|
||||
"path": "assets.webp",
|
||||
"mediatype": "image/webp",
|
||||
"up": "+z",
|
||||
"presupported": false
|
||||
}
|
||||
],
|
||||
"sensitive": false,
|
||||
"contributors": [
|
||||
{
|
||||
"title": "xrfragments",
|
||||
"path": "http://localhost:3214/creators/xrfragments",
|
||||
"roles": [
|
||||
"creator"
|
||||
],
|
||||
"caption": "",
|
||||
"description": "XR Fragments is an open specification for hyperlinking & deeplinking 3D fileformats .\nTurn 3D files into linkable AR/VR websites .\n3D files with XR Fragments enable interoperable, networkable and interactions via so-called extras and promote URL standards .",
|
||||
"links": [
|
||||
{
|
||||
"path": "https://xrfragment.org"
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"collections": [
|
||||
{
|
||||
"title": "XR Fragments",
|
||||
"path": "http://localhost:3214/collections/z924drvlr4k1",
|
||||
"caption": "3D assets which are XR Fragment-compatible.",
|
||||
"description": "XR Fragments is an open specification for hyperlinking & deeplinking 3D fileformats .\nTurn 3D files into linkable AR/VR websites .\n3D files with XR Fragments enable interoperable, networkable and interactions via so-called extras and promote URL standards .",
|
||||
"links": []
|
||||
}
|
||||
],
|
||||
"links": []
|
||||
}
|
||||
Binary file not shown.
Binary file not shown.
|
|
@ -23,11 +23,11 @@ let
|
|||
# $ nix-shell -p nix-prefetch-docker --run 'nix-prefetch-docker ghcr.io/manyfold3d/manyfold-solo 0.120.0'
|
||||
|
||||
manyfoldImage = pkgs.dockerTools.pullImage {
|
||||
imageName = "ghcr.io/manyfold3d/manyfold-solo";
|
||||
imageDigest = "sha256:84524b9cf8c8e6467ca4938e58ff65a2a5d8c507fd44e7056003b3e2dcffb266";
|
||||
sha256 = "0sb4icq19vqsnhi01jbaqqr2k66bfma08hp0rm0y4hdnbqsscxvd";
|
||||
finalImageName = "ghcr.io/manyfold3d/manyfold-solo";
|
||||
finalImageTag = "0.120.0";
|
||||
imageName = "ghcr.io/manyfold3d/manyfold-solo";
|
||||
imageDigest = "sha256:6250e562a05bf9476ddcfdc897a7b03cbf2090c727d9fe051afde486579b54a6";
|
||||
sha256 = "sha256-V5y1N0l4JQjVDQbboGYX15MQaImXtP/HpNwPjDtxeJQ=";
|
||||
finalImageName = "ghcr.io/manyfold3d/manyfold-solo";
|
||||
finalImageTag = "0.121.0";
|
||||
};
|
||||
|
||||
in
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue