mirror of
https://github.com/VOREStation/VOREStation.git
synced 2026-08-23 12:08:28 +01:00
Autochangelogs (#17152)
* Scripts ported * Converted changelogs * Fix * Prettier * Removes old unneeded save * Removes very old changelogs
This commit is contained in:
@@ -46,6 +46,3 @@
|
||||
|
||||
## Force tab indents on dm files
|
||||
*.dm whitespace=indent-with-non-tab
|
||||
|
||||
# force changelog merging to use union
|
||||
html/changelog.html merge=union
|
||||
|
||||
@@ -1,43 +1,24 @@
|
||||
name: Autochangelog
|
||||
# Creates an entry in html/changelogs automatically, to eventually be compiled by compile_changelogs
|
||||
name: Auto Changelog
|
||||
on:
|
||||
pull_request_target:
|
||||
types: closed
|
||||
types:
|
||||
- closed
|
||||
branches:
|
||||
- master
|
||||
|
||||
env:
|
||||
BASENAME: "vorestation"
|
||||
|
||||
permissions:
|
||||
contents: write
|
||||
jobs:
|
||||
autochangelog:
|
||||
name: Autochangelog
|
||||
runs-on: ubuntu-22.04
|
||||
auto_changelog:
|
||||
runs-on: ubuntu-latest
|
||||
if: github.event.pull_request.merged == true
|
||||
steps:
|
||||
- uses: /actions/checkout@v3
|
||||
with:
|
||||
ref: master
|
||||
- name: Update repository to master
|
||||
run: git pull "origin" master
|
||||
- name: Ensure +x on CI directory
|
||||
run: |
|
||||
chmod -R +x ./tools/ci
|
||||
- uses: actions/setup-python@v5
|
||||
with:
|
||||
python-version: '3.7'
|
||||
- name: Generate Changelog
|
||||
run: |
|
||||
pip install pyyaml
|
||||
python tools/GenerateChangelog/ss13_autochangelog.py \
|
||||
html/changelogs \
|
||||
${{ github.event.pull_request.number }} \
|
||||
"${{ github.event.pull_request.user.login }}" \
|
||||
"${{ github.event.pull_request.body }}"
|
||||
python tools/GenerateChangelog/ss13_genchangelog.py \
|
||||
html/changelog.html \
|
||||
html/changelogs
|
||||
- uses: stefanzweifel/git-auto-commit-action@v5
|
||||
with:
|
||||
commit_message: Automatic changelog generation for ${{ github.events.pull_request.number }}
|
||||
branch: ${{ github.events.pull_request.base }}
|
||||
commit_user_name: Autochangelog Bot
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v4
|
||||
- name: Run auto changelog
|
||||
uses: actions/github-script@v7
|
||||
with:
|
||||
script: |
|
||||
const { processAutoChangelog } = await import('${{ github.workspace }}/tools/pull_request_hooks/autoChangelog.js')
|
||||
await processAutoChangelog({ github, context })
|
||||
github-token: ${{ secrets.COMFY_ORANGE_PAT || secrets.GITHUB_TOKEN }}
|
||||
|
||||
@@ -0,0 +1,54 @@
|
||||
name: Compile changelogs
|
||||
|
||||
on:
|
||||
schedule:
|
||||
- cron: "0 0 * * *"
|
||||
workflow_dispatch:
|
||||
|
||||
jobs:
|
||||
compile:
|
||||
name: "Compile changelogs"
|
||||
runs-on: ubuntu-24.04
|
||||
steps:
|
||||
#- name: "Check for ACTION_ENABLER secret and pass true to output if it exists to be checked by later steps"
|
||||
# id: value_holder
|
||||
# env:
|
||||
# ENABLER_SECRET: ${{ secrets.ACTION_ENABLER }}
|
||||
# run: |
|
||||
# unset SECRET_EXISTS
|
||||
# if [ -n "$ENABLER_SECRET" ]; then SECRET_EXISTS=true ; fi
|
||||
# echo "ACTIONS_ENABLED=$SECRET_EXISTS" >> $GITHUB_OUTPUT
|
||||
- name: "Setup python"
|
||||
#if: steps.value_holder.outputs.ACTIONS_ENABLED
|
||||
uses: actions/setup-python@v5
|
||||
with:
|
||||
python-version: '3.x'
|
||||
- name: "Install deps"
|
||||
#if: steps.value_holder.outputs.ACTIONS_ENABLED
|
||||
run: |
|
||||
python -m pip install --upgrade pip
|
||||
python -m pip install pyyaml
|
||||
sudo apt-get install dos2unix
|
||||
- name: "Checkout"
|
||||
#if: steps.value_holder.outputs.ACTIONS_ENABLED
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
fetch-depth: 25
|
||||
persist-credentials: false
|
||||
- name: "Compile"
|
||||
#if: steps.value_holder.outputs.ACTIONS_ENABLED
|
||||
run: |
|
||||
python tools/ss13_genchangelog.py html/changelogs
|
||||
- name: Commit
|
||||
#if: steps.value_holder.outputs.ACTIONS_ENABLED
|
||||
run: |
|
||||
git config --local user.email "action@github.com"
|
||||
git config --local user.name "Changelogs"
|
||||
git pull origin master
|
||||
git add html/changelogs
|
||||
git commit -m "Automatic changelog compile [ci skip]" -a || true
|
||||
- name: "Push"
|
||||
#if: steps.value_holder.outputs.ACTIONS_ENABLED
|
||||
uses: ad-m/github-push-action@master
|
||||
with:
|
||||
github_token: ${{ secrets.COMFY_ORANGE_PAT || secrets.GITHUB_TOKEN }}
|
||||
@@ -3,3 +3,5 @@
|
||||
GLOBAL_REAL(config, /datum/controller/configuration) = new
|
||||
|
||||
GLOBAL_DATUM_INIT(revdata, /datum/getrev, new)
|
||||
|
||||
GLOBAL_VAR_INIT(changelog_hash, "")
|
||||
|
||||
@@ -0,0 +1 @@
|
||||
GLOBAL_DATUM(changelog_tgui, /datum/changelog)
|
||||
@@ -0,0 +1,32 @@
|
||||
/datum/changelog
|
||||
var/static/list/changelog_items = list()
|
||||
|
||||
/datum/changelog/tgui_state()
|
||||
return GLOB.tgui_always_state
|
||||
|
||||
/datum/changelog/tgui_interact(mob/user, datum/tgui/ui)
|
||||
ui = SStgui.try_update_ui(user, src, ui)
|
||||
if (!ui)
|
||||
ui = new(user, src, "Changelog")
|
||||
ui.open()
|
||||
|
||||
/datum/changelog/tgui_act(action, list/params, datum/tgui/ui, datum/tgui_state/state)
|
||||
. = ..()
|
||||
if(.)
|
||||
return
|
||||
if(action == "get_month")
|
||||
var/datum/asset/changelog_item/changelog_item = changelog_items[params["date"]]
|
||||
if (!changelog_item)
|
||||
changelog_item = new /datum/asset/changelog_item(params["date"])
|
||||
changelog_items[params["date"]] = changelog_item
|
||||
return ui.send_asset(changelog_item)
|
||||
|
||||
/datum/changelog/tgui_static_data()
|
||||
var/list/data = list( "dates" = list() )
|
||||
var/regex/ymlRegex = regex(@"\.yml", "g")
|
||||
|
||||
for(var/archive_file in sortList(flist("html/changelogs/archive/")))
|
||||
var/archive_date = ymlRegex.Replace(archive_file, "")
|
||||
data["dates"] = list(archive_date) + data["dates"]
|
||||
|
||||
return data
|
||||
+3
-1
@@ -14,7 +14,9 @@
|
||||
debug_log = start_log("[log_path]-debug.log")
|
||||
//VOREStation Edit End
|
||||
|
||||
changelog_hash = md5('html/changelog.html') //used for telling if the changelog has changed recently
|
||||
var/latest_changelog = file("[global.config.directory]/../html/changelogs/archive/" + time2text(world.timeofday, "YYYY-MM") + ".yml")
|
||||
GLOB.changelog_hash = fexists(latest_changelog) ? md5(latest_changelog) : "" //for telling if the changelog has changed recently
|
||||
to_world_log("Changelog Hash: '[GLOB.changelog_hash]' ([latest_changelog])")
|
||||
|
||||
if(byond_version < RECOMMENDED_VERSION)
|
||||
to_world_log("Your server's byond version does not meet the recommended requirements for this server. Please update BYOND")
|
||||
|
||||
@@ -32,7 +32,6 @@ var/href_logfile = null
|
||||
// var/const/star_name = "Vir"
|
||||
// var/const/starsys_name = "Vir"
|
||||
var/const/game_version = "VOREStation"
|
||||
var/changelog_hash = ""
|
||||
var/game_year = (text2num(time2text(world.realtime, "YYYY")) + 300) //VOREStation Edit
|
||||
var/round_progressing = 1
|
||||
|
||||
|
||||
@@ -534,7 +534,7 @@ GLOBAL_LIST_EMPTY(asset_datums)
|
||||
|
||||
/datum/asset/changelog_item/New(date)
|
||||
item_filename = sanitize_filename("[date].yml")
|
||||
SSassets.transport.register_asset(item_filename, file("html/changelogs_ch/archive/" + item_filename))
|
||||
SSassets.transport.register_asset(item_filename, file("html/changelogs/archive/" + item_filename))
|
||||
|
||||
/datum/asset/changelog_item/send(client)
|
||||
if (!item_filename)
|
||||
|
||||
@@ -10,28 +10,6 @@
|
||||
"no_image32.png" = 'html/images/no_image32.png',
|
||||
)
|
||||
|
||||
/datum/asset/simple/changelog
|
||||
assets = list(
|
||||
"88x31.png" = 'html/88x31.png',
|
||||
"bug-minus.png" = 'html/bug-minus.png',
|
||||
"cross-circle.png" = 'html/cross-circle.png',
|
||||
"hard-hat-exclamation.png" = 'html/hard-hat-exclamation.png',
|
||||
"image-minus.png" = 'html/image-minus.png',
|
||||
"image-plus.png" = 'html/image-plus.png',
|
||||
"map-pencil.png" = 'html/map-pencil.png',
|
||||
"music-minus.png" = 'html/music-minus.png',
|
||||
"music-plus.png" = 'html/music-plus.png',
|
||||
"tick-circle.png" = 'html/tick-circle.png',
|
||||
"wrench-screwdriver.png" = 'html/wrench-screwdriver.png',
|
||||
"spell-check.png" = 'html/spell-check.png',
|
||||
"burn-exclamation.png" = 'html/burn-exclamation.png',
|
||||
"chevron.png" = 'html/chevron.png',
|
||||
"chevron-expand.png" = 'html/chevron-expand.png',
|
||||
"changelog.css" = 'html/changelog.css',
|
||||
"changelog.js" = 'html/changelog.js',
|
||||
"changelog.html" = 'html/changelog.html'
|
||||
)
|
||||
|
||||
/datum/asset/simple/arcade
|
||||
assets = list(
|
||||
"boss1.gif" = 'icons/UI_Icons/Arcade/boss1.gif',
|
||||
|
||||
@@ -0,0 +1,17 @@
|
||||
/datum/asset/changelog_item
|
||||
_abstract = /datum/asset/changelog_item
|
||||
var/item_filename
|
||||
|
||||
/datum/asset/changelog_item/New(date)
|
||||
item_filename = sanitize_filename("[date].yml")
|
||||
register_asset(item_filename, file("html/changelogs/archive/" + item_filename))
|
||||
|
||||
/datum/asset/changelog_item/send(client)
|
||||
if (!item_filename)
|
||||
return
|
||||
. = send_asset(client, item_filename)
|
||||
|
||||
/datum/asset/changelog_item/get_url_mappings()
|
||||
if (!item_filename)
|
||||
return
|
||||
. = list("[item_filename]" = get_asset_url(item_filename))
|
||||
@@ -330,6 +330,12 @@
|
||||
void = new()
|
||||
screen += void
|
||||
|
||||
if((prefs?.read_preference(/datum/preference/text/lastchangelog) != GLOB.changelog_hash) && isnewplayer(src.mob)) //bolds the changelog button on the interface so we know there are updates.
|
||||
to_chat(src, span_info("You have unread updates in the changelog."))
|
||||
winset(src, "rpane.changelog", "background-color=#eaeaea;font-style=bold")
|
||||
if(CONFIG_GET(flag/aggressive_changelog))
|
||||
src.changes()
|
||||
|
||||
if(CONFIG_GET(flag/paranoia_logging))
|
||||
var/alert = FALSE //VOREStation Edit start.
|
||||
if(isnum(player_age) && player_age == 0)
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
// Toggles
|
||||
|
||||
/// Whether or not to toggle ambient occlusion, the shadows around people
|
||||
/datum/preference/toggle/ambient_occlusion
|
||||
category = PREFERENCE_CATEGORY_GAME_PREFERENCES
|
||||
@@ -93,3 +95,14 @@
|
||||
savefile_key = "obfuscate_job"
|
||||
default_value = FALSE
|
||||
savefile_identifier = PREFERENCE_PLAYER
|
||||
|
||||
// Text
|
||||
|
||||
/datum/preference/text/lastchangelog
|
||||
category = PREFERENCE_CATEGORY_GAME_PREFERENCES
|
||||
savefile_key = "lastchangelog"
|
||||
savefile_identifier = PREFERENCE_PLAYER
|
||||
|
||||
/datum/preference/text/lastchangelog/is_accessible(datum/preferences/preferences)
|
||||
..()
|
||||
return FALSE
|
||||
|
||||
@@ -483,7 +483,13 @@
|
||||
/client/verb/changes()
|
||||
set name = "Changelog"
|
||||
set category = "OOC.Resources"
|
||||
src << link("https://wiki.vore-station.net/Changelog")
|
||||
|
||||
if(!GLOB.changelog_tgui)
|
||||
GLOB.changelog_tgui = new /datum/changelog()
|
||||
GLOB.changelog_tgui.tgui_interact(usr)
|
||||
|
||||
if(prefs?.read_preference(/datum/preference/text/lastchangelog) != GLOB.changelog_hash)
|
||||
prefs.write_preference_by_type(/datum/preference/text/lastchangelog, GLOB.changelog_hash)
|
||||
|
||||
/mob/verb/observe()
|
||||
set name = "Observe"
|
||||
|
||||
@@ -106,12 +106,10 @@
|
||||
else
|
||||
output += "<p><b><a href='byond://?src=\ref[src];open_station_news=1'>Show [using_map.station_name] News<br>(NEW!)</A></b></p>"
|
||||
|
||||
/* //TODO: Actually add the fukin changelog. We need it DESPERATELY but this isn't the PR for it.
|
||||
if(client.prefs.lastchangelog == changelog_hash)
|
||||
if(read_preference(/datum/preference/text/lastchangelog) == GLOB.changelog_hash)
|
||||
output += "<p><a href='byond://?src=\ref[src];open_changelog=1'>Show Changelog</A><br><i>No Changes</i></p>"
|
||||
else
|
||||
output += "<p><b><a href='byond://?src=\ref[src];open_changelog=1'>Show Changelog</A><br>(NEW!)</b></p>"
|
||||
*/
|
||||
|
||||
output += "</div>"
|
||||
|
||||
@@ -354,7 +352,9 @@
|
||||
client.feedback_form = new(client)
|
||||
|
||||
if(href_list["open_changelog"])
|
||||
src << link("https://wiki.vore-station.net/Changelog")
|
||||
write_preference_directly(/datum/preference/text/lastchangelog, GLOB.changelog_hash)
|
||||
client.changes()
|
||||
return
|
||||
|
||||
/mob/new_player/proc/handle_server_news()
|
||||
if(!client)
|
||||
|
||||
-5822
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -1,4 +0,0 @@
|
||||
author: Cerebulon
|
||||
delete-after: True
|
||||
changes:
|
||||
- soundadd: "Added button sounds to various machines."
|
||||
@@ -1,13 +0,0 @@
|
||||
author: KasparoVy
|
||||
delete-after: True
|
||||
changes:
|
||||
- imageadd: Adds orange Teshari goggles, selectable in the loadout.
|
||||
- imageadd: Adds blindfold & new white (recolorable) blindfold to loadout.
|
||||
- imageadd: Adds species-fitted Teshari ring sprites.
|
||||
- imageadd: Adds species-fitted Teshari hudpatches & white blindfold.
|
||||
- imageadd: Adds full selection of Teshari belted cloaks.
|
||||
- imageadd: Adds full selection of non-job Teshari hooded cloaks.
|
||||
- rscadd: Adds a bunch of Teshari worksuits (sprites already existed).
|
||||
- imageadd: Adds some species-fitted Teshari jacket accessories (tan, charcoal, navy, burgundy, checkered).
|
||||
- tweak: Updates all Teshari undercoats and cloaks with new sprites from downstreams.
|
||||
- bugfix: Fixes Teshari captain glove sprites.
|
||||
@@ -1,37 +0,0 @@
|
||||
################################
|
||||
# Example Changelog File
|
||||
#
|
||||
# Note: This file, and files beginning with ".", and files that don't end in ".yml" will not be read. If you change this file, you will look really dumb.
|
||||
#
|
||||
# Your changelog will be merged with a master changelog. (New stuff added only, and only on the date entry for the day it was merged.)
|
||||
# When it is, any changes listed below will disappear.
|
||||
#
|
||||
# Valid Prefixes:
|
||||
# bugfix
|
||||
# wip (For works in progress)
|
||||
# tweak
|
||||
# soundadd
|
||||
# sounddel
|
||||
# rscadd (general adding of nice things)
|
||||
# rscdel (general deleting of nice things)
|
||||
# imageadd
|
||||
# imagedel
|
||||
# maptweak
|
||||
# spellcheck (typo fixes)
|
||||
# experiment
|
||||
#################################
|
||||
|
||||
# Your name.
|
||||
author: MoondancerPony
|
||||
|
||||
# Optional: Remove this file after generating master changelog. Useful for PR changelogs that won't get used again.
|
||||
delete-after: True
|
||||
|
||||
# Any changes you've made. See valid prefix list above.
|
||||
# INDENT WITH TWO SPACES. NOT TABS. SPACES.
|
||||
# SCREW THIS UP AND IT WON'T WORK.
|
||||
# Also, all entries are changed into a single [] after a master changelog generation. Just remove the brackets when you add new entries.
|
||||
# Please surround your changes in double quotes ("), as certain characters otherwise screws up compiling. The quotes will not show up in the changelog.
|
||||
changes:
|
||||
- bugfix: "Food will no longer erroneously have double the nutriment it's supposed to."
|
||||
- bugfix: "Fixed a lot of invalid food nutriment tastes and spruced up some old ones."
|
||||
@@ -1,36 +0,0 @@
|
||||
################################
|
||||
# Example Changelog File
|
||||
#
|
||||
# Note: This file, and files beginning with ".", and files that don't end in ".yml" will not be read. If you change this file, you will look really dumb.
|
||||
#
|
||||
# Your changelog will be merged with a master changelog. (New stuff added only, and only on the date entry for the day it was merged.)
|
||||
# When it is, any changes listed below will disappear.
|
||||
#
|
||||
# Valid Prefixes:
|
||||
# bugfix
|
||||
# wip (For works in progress)
|
||||
# tweak
|
||||
# soundadd
|
||||
# sounddel
|
||||
# rscadd (general adding of nice things)
|
||||
# rscdel (general deleting of nice things)
|
||||
# imageadd
|
||||
# imagedel
|
||||
# maptweak
|
||||
# spellcheck (typo fixes)
|
||||
# experiment
|
||||
#################################
|
||||
|
||||
# Your name.
|
||||
author: MoondancerPony
|
||||
|
||||
# Optional: Remove this file after generating master changelog. Useful for PR changelogs that won't get used again.
|
||||
delete-after: True
|
||||
|
||||
# Any changes you've made. See valid prefix list above.
|
||||
# INDENT WITH TWO SPACES. NOT TABS. SPACES.
|
||||
# SCREW THIS UP AND IT WON'T WORK.
|
||||
# Also, all entries are changed into a single [] after a master changelog generation. Just remove the brackets when you add new entries.
|
||||
# Please surround your changes in double quotes ("), as certain characters otherwise screws up compiling. The quotes will not show up in the changelog.
|
||||
changes:
|
||||
- experiment: "Hopefully made cooking recipe selection/calculation much faster on the backend."
|
||||
@@ -1,37 +0,0 @@
|
||||
################################
|
||||
# Example Changelog File
|
||||
#
|
||||
# Note: This file, and files beginning with ".", and files that don't end in ".yml" will not be read. If you change this file, you will look really dumb.
|
||||
#
|
||||
# Your changelog will be merged with a master changelog. (New stuff added only, and only on the date entry for the day it was merged.)
|
||||
# When it is, any changes listed below will disappear.
|
||||
#
|
||||
# Valid Prefixes:
|
||||
# bugfix
|
||||
# wip (For works in progress)
|
||||
# tweak
|
||||
# soundadd
|
||||
# sounddel
|
||||
# rscadd (general adding of nice things)
|
||||
# rscdel (general deleting of nice things)
|
||||
# imageadd
|
||||
# imagedel
|
||||
# maptweak
|
||||
# spellcheck (typo fixes)
|
||||
# experiment
|
||||
#################################
|
||||
|
||||
# Your name.
|
||||
author: MoondancerPony
|
||||
|
||||
# Optional: Remove this file after generating master changelog. Useful for PR changelogs that won't get used again.
|
||||
delete-after: True
|
||||
|
||||
# Any changes you've made. See valid prefix list above.
|
||||
# INDENT WITH TWO SPACES. NOT TABS. SPACES.
|
||||
# SCREW THIS UP AND IT WON'T WORK.
|
||||
# Also, all entries are changed into a single [] after a master changelog generation. Just remove the brackets when you add new entries.
|
||||
# Please surround your changes in double quotes ("), as certain characters otherwise screws up compiling. The quotes will not show up in the changelog.
|
||||
changes:
|
||||
- bugfix: "Foods will no longer have improper grammar and capitalisation when eaten with utensils."
|
||||
- tweak: "Refactors utensils to use weakrefs rather than stored strings; also does a bunch of code cleanup."
|
||||
@@ -1,4 +0,0 @@
|
||||
author: Mechoid
|
||||
delete-after: True
|
||||
changes:
|
||||
- rscadd: "Added system for exosuit over-encumbrance. Combat mechs and Ripleys have higher than default."
|
||||
@@ -1,4 +0,0 @@
|
||||
author: Meghan-Rossi
|
||||
delete-after: True
|
||||
changes:
|
||||
- bugfix: "Fixed some objects giving duplicate results when an analyzer was used on them"
|
||||
@@ -1,4 +0,0 @@
|
||||
author: Meghan-Rossi
|
||||
delete-after: True
|
||||
changes:
|
||||
- bugfix: "Fixed borosilicate glass not producing shards in most situations."
|
||||
@@ -1,4 +0,0 @@
|
||||
author: Meghan-Rossi
|
||||
delete-after: True
|
||||
changes:
|
||||
- bugfix: "Cooking a mouse into a mouseburger now uses up the mouse."
|
||||
@@ -1,4 +0,0 @@
|
||||
author: Meghan-Rossi
|
||||
delete-after: True
|
||||
changes:
|
||||
- bugfix: "Fixed omni filters reacting incorrectly to configuration changes that swap ports."
|
||||
@@ -1,4 +0,0 @@
|
||||
author: Meghan-Rossi
|
||||
delete-after: True
|
||||
changes:
|
||||
- bugfix: "Blood from artifacts will no longer break the pathogenic isolator."
|
||||
@@ -1,4 +0,0 @@
|
||||
author: Meghan-Rossi
|
||||
delete-after: True
|
||||
changes:
|
||||
- bugfix: "Fixed some mountain POIs sometimes overlapping in odd ways"
|
||||
@@ -1,4 +0,0 @@
|
||||
author: Meghan-Rossi
|
||||
delete-after: True
|
||||
changes:
|
||||
- tweak: "If you try to put someone in one of their own slots using the stripping menu, now you will instead try to strip that slot."
|
||||
@@ -1,4 +0,0 @@
|
||||
author: Meghan-Rossi
|
||||
delete-after: True
|
||||
changes:
|
||||
- tweak: "The tesla energy ball will now eventually disappear if not kept charged with the particle accelerator"
|
||||
@@ -1,4 +0,0 @@
|
||||
author: Meghan-Rossi
|
||||
delete-after: True
|
||||
changes:
|
||||
- rscadd: "The Tesla Generator is now available from cargo. Coils and grounding rods for it may be printed on the protolathe and autolathe, respectively."
|
||||
@@ -1,4 +0,0 @@
|
||||
author: Meghan-Rossi
|
||||
delete-after: True
|
||||
changes:
|
||||
- bugfix: "Fat (triglyceride) now tastes greasy instead of bitter."
|
||||
@@ -1,4 +0,0 @@
|
||||
author: Meghan-Rossi
|
||||
delete-after: True
|
||||
changes:
|
||||
- bugfix: "If you place wall-mounted machines such as status displays on a window, they will no longer be hidden underneath the window."
|
||||
@@ -1,37 +0,0 @@
|
||||
################################
|
||||
# Example Changelog File
|
||||
#
|
||||
# Note: This file, and files beginning with ".", and files that don't end in ".yml" will not be read. If you change this file, you will look really dumb.
|
||||
#
|
||||
# Your changelog will be merged with a master changelog. (New stuff added only, and only on the date entry for the day it was merged.)
|
||||
# When it is, any changes listed below will disappear.
|
||||
#
|
||||
# Valid Prefixes:
|
||||
# bugfix
|
||||
# wip (For works in progress)
|
||||
# tweak
|
||||
# soundadd
|
||||
# sounddel
|
||||
# rscadd (general adding of nice things)
|
||||
# rscdel (general deleting of nice things)
|
||||
# imageadd
|
||||
# imagedel
|
||||
# maptweak
|
||||
# spellcheck (typo fixes)
|
||||
# experiment
|
||||
#################################
|
||||
|
||||
# Your name.
|
||||
author: Poojawa
|
||||
|
||||
# Optional: Remove this file after generating master changelog. Useful for PR changelogs that won't get used again.
|
||||
delete-after: True
|
||||
|
||||
# Any changes you've made. See valid prefix list above.
|
||||
# INDENT WITH TWO SPACES. NOT TABS. SPACES.
|
||||
# SCREW THIS UP AND IT WON'T WORK.
|
||||
# Also, all entries are changed into a single [] after a master changelog generation. Just remove the brackets when you add new entries.
|
||||
# Please surround your changes in double quotes ("), as certain characters otherwise screws up compiling. The quotes will not show up in the changelog.
|
||||
changes:
|
||||
- soundadd: "Added my fancy vore sounds."
|
||||
- rscadd: "Porting of a few QoL Citadel changes to vore menu related to sounds."
|
||||
@@ -1,37 +0,0 @@
|
||||
################################
|
||||
# Example Changelog File
|
||||
#
|
||||
# Note: This file, and files beginning with ".", and files that don't end in ".yml" will not be read. If you change this file, you will look really dumb.
|
||||
#
|
||||
# Your changelog will be merged with a master changelog. (New stuff added only, and only on the date entry for the day it was merged.)
|
||||
# When it is, any changes listed below will disappear.
|
||||
#
|
||||
# Valid Prefixes:
|
||||
# bugfix
|
||||
# wip (For works in progress)
|
||||
# tweak
|
||||
# soundadd
|
||||
# sounddel
|
||||
# rscadd (general adding of nice things)
|
||||
# rscdel (general deleting of nice things)
|
||||
# imageadd
|
||||
# imagedel
|
||||
# maptweak
|
||||
# spellcheck (typo fixes)
|
||||
# experiment
|
||||
#################################
|
||||
|
||||
# Your name.
|
||||
author: Poojawa
|
||||
|
||||
# Optional: Remove this file after generating master changelog. Useful for PR changelogs that won't get used again.
|
||||
delete-after: True
|
||||
|
||||
# Any changes you've made. See valid prefix list above.
|
||||
# INDENT WITH TWO SPACES. NOT TABS. SPACES.
|
||||
# SCREW THIS UP AND IT WON'T WORK.
|
||||
# Also, all entries are changed into a single [] after a master changelog generation. Just remove the brackets when you add new entries.
|
||||
# Please surround your changes in double quotes ("), as certain characters otherwise screws up compiling. The quotes will not show up in the changelog.
|
||||
changes:
|
||||
- rscadd: "Applies Feeding and Devourable prefs."
|
||||
- bugfix: "Made VoreUI toggles a lot more clear of what mode they're in."
|
||||
@@ -1,5 +0,0 @@
|
||||
author: RunaDacino
|
||||
delete-after: True
|
||||
changes:
|
||||
- rscadd: "Enabled research borgs equipped with 'exosuit gripper' to be able to replace internal exosuit parts like actuators, to upgrade or to repair"
|
||||
|
||||
@@ -1,4 +0,0 @@
|
||||
author: Subber
|
||||
delete-after: True
|
||||
changes:
|
||||
- rscadd: "Added two new antag augments to traitor uplink: armblade and handblade."
|
||||
@@ -1,4 +0,0 @@
|
||||
author: Woodrat
|
||||
delete-after: True
|
||||
changes:
|
||||
- tweak: "Changes vote notification sound to that of World Server in order to help people realize there is a vote occurring."
|
||||
@@ -1,8 +0,0 @@
|
||||
author: Atermonera
|
||||
delete-after: True
|
||||
changes:
|
||||
- tweak: "Stairs have been completely reworked, and now consist of multi-tile constructs built from lower, middle, and upper stair pieces, and an openspace in the floor."
|
||||
- rscadd: "To go up and down stairs, simply step upon the lower/upper stair pieces, and you'll be moved automatically if the stairs are in working condition. Any grabbed or dragged items will be brought with you."
|
||||
- rscadd: "If the lower stair piece is missing (or even if it's not), but the middle and upper sections are present, you can climb up the middle section by click-dragging from your character to the middle stair."
|
||||
- rscadd: "If you step onto the open space, you will fall down the stairs. Teshari players, consider yourselves warned."
|
||||
- rscadd: "Stairs remain unconstructable in-round (Doing so would also require a way to make openspaces), but there are spawners rooted on the middle stair (as with old stairs) that will create a completed stair and can be spawned in by admins/mappers."
|
||||
@@ -1,36 +0,0 @@
|
||||
################################
|
||||
# Example Changelog File
|
||||
#
|
||||
# Note: This file, and files beginning with ".", and files that don't end in ".yml" will not be read. If you change this file, you will look really dumb.
|
||||
#
|
||||
# Your changelog will be merged with a master changelog. (New stuff added only, and only on the date entry for the day it was merged.)
|
||||
# When it is, any changes listed below will disappear.
|
||||
#
|
||||
# Valid Prefixes:
|
||||
# bugfix
|
||||
# wip (For works in progress)
|
||||
# tweak
|
||||
# soundadd
|
||||
# sounddel
|
||||
# rscadd (general adding of nice things)
|
||||
# rscdel (general deleting of nice things)
|
||||
# imageadd
|
||||
# imagedel
|
||||
# maptweak
|
||||
# spellcheck (typo fixes)
|
||||
# experiment
|
||||
#################################
|
||||
|
||||
# Your name.
|
||||
author: Cameron
|
||||
|
||||
# Optional: Remove this file after generating master changelog. Useful for PR changelogs that won't get used again.
|
||||
delete-after: True
|
||||
|
||||
# Any changes you've made. See valid prefix list above.
|
||||
# INDENT WITH TWO SPACES. NOT TABS. SPACES.
|
||||
# SCREW THIS UP AND IT WON'T WORK.
|
||||
# Also, all entries are changed into a single [] after a master changelog generation. Just remove the brackets when you add new entries.
|
||||
# Please surround your changes in double quotes ("), as certain characters otherwise screws up compiling. The quotes will not show up in the changelog.
|
||||
changes:
|
||||
- rscadd: "psilocybin now makes you hallucinate."
|
||||
@@ -8,21 +8,44 @@
|
||||
#
|
||||
# Valid Prefixes:
|
||||
# bugfix
|
||||
# wip (For works in progress)
|
||||
# tweak
|
||||
# - (fixes bugs)
|
||||
# wip
|
||||
# - (work in progress)
|
||||
# qol
|
||||
# - (quality of life)
|
||||
# soundadd
|
||||
# - (adds a sound)
|
||||
# sounddel
|
||||
# rscadd (general adding of nice things)
|
||||
# rscdel (general deleting of nice things)
|
||||
# - (removes a sound)
|
||||
# rscadd
|
||||
# - (adds a feature)
|
||||
# rscdel
|
||||
# - (removes a feature)
|
||||
# imageadd
|
||||
# - (adds an image or sprite)
|
||||
# imagedel
|
||||
# - (removes an image or sprite)
|
||||
# maptweak
|
||||
# spellcheck (typo fixes)
|
||||
# spellcheck
|
||||
# - (fixes spelling or grammar)
|
||||
# experiment
|
||||
# - (experimental change)
|
||||
# balance
|
||||
# - (balance changes)
|
||||
# code_imp
|
||||
# - (misc internal code change)
|
||||
# refactor
|
||||
# - (refactors code)
|
||||
# config
|
||||
# - (makes a change to the config files)
|
||||
# admin
|
||||
# - (makes changes to administrator tools)
|
||||
# server
|
||||
# - (miscellaneous changes to server)
|
||||
#################################
|
||||
|
||||
# Your name.
|
||||
author: N3X15
|
||||
author: "
|
||||
|
||||
# Optional: Remove this file after generating master changelog. Useful for PR changelogs that won't get used again.
|
||||
delete-after: True
|
||||
|
||||
@@ -1,38 +0,0 @@
|
||||
################################
|
||||
# Example Changelog File
|
||||
#
|
||||
# Note: This file, and files beginning with ".", and files that don't end in ".yml" will not be read. If you change this file, you will look really dumb.
|
||||
#
|
||||
# Your changelog will be merged with a master changelog. (New stuff added only, and only on the date entry for the day it was merged.)
|
||||
# When it is, any changes listed below will disappear.
|
||||
#
|
||||
# Valid Prefixes:
|
||||
# bugfix
|
||||
# wip (For works in progress)
|
||||
# tweak
|
||||
# soundadd
|
||||
# sounddel
|
||||
# rscadd (general adding of nice things)
|
||||
# rscdel (general deleting of nice things)
|
||||
# imageadd
|
||||
# imagedel
|
||||
# maptweak
|
||||
# spellcheck (typo fixes)
|
||||
# experiment
|
||||
#################################
|
||||
|
||||
# Your name.
|
||||
author: Mechoid
|
||||
|
||||
# Optional: Remove this file after generating master changelog. Useful for PR changelogs that won't get used again.
|
||||
delete-after: True
|
||||
|
||||
# Any changes you've made. See valid prefix list above.
|
||||
# INDENT WITH TWO SPACES. NOT TABS. SPACES.
|
||||
# SCREW THIS UP AND IT WON'T WORK.
|
||||
# Also, all entries are changed into a single [] after a master changelog generation. Just remove the brackets when you add new entries.
|
||||
# Please surround your changes in double quotes ("), as certain characters otherwise screws up compiling. The quotes will not show up in the changelog.
|
||||
changes:
|
||||
- tweak: "Move Rig modules to more granular files"
|
||||
- rscadd: "Add RIG components to robotics mechfab, plus incredibly basic belt-voidsuit RIG."
|
||||
- rscadd: "Add Graphite, made by compressing coal, presently only used heavily in RIG components."
|
||||
@@ -1,37 +0,0 @@
|
||||
################################
|
||||
# Example Changelog File
|
||||
#
|
||||
# Note: This file, and files beginning with ".", and files that don't end in ".yml" will not be read. If you change this file, you will look really dumb.
|
||||
#
|
||||
# Your changelog will be merged with a master changelog. (New stuff added only, and only on the date entry for the day it was merged.)
|
||||
# When it is, any changes listed below will disappear.
|
||||
#
|
||||
# Valid Prefixes:
|
||||
# bugfix
|
||||
# wip (For works in progress)
|
||||
# tweak
|
||||
# soundadd
|
||||
# sounddel
|
||||
# rscadd (general adding of nice things)
|
||||
# rscdel (general deleting of nice things)
|
||||
# imageadd
|
||||
# imagedel
|
||||
# maptweak
|
||||
# spellcheck (typo fixes)
|
||||
# experiment
|
||||
#################################
|
||||
|
||||
# Your name.
|
||||
author: Mechoid
|
||||
|
||||
# Optional: Remove this file after generating master changelog. Useful for PR changelogs that won't get used again.
|
||||
delete-after: True
|
||||
|
||||
# Any changes you've made. See valid prefix list above.
|
||||
# INDENT WITH TWO SPACES. NOT TABS. SPACES.
|
||||
# SCREW THIS UP AND IT WON'T WORK.
|
||||
# Also, all entries are changed into a single [] after a master changelog generation. Just remove the brackets when you add new entries.
|
||||
# Please surround your changes in double quotes ("), as certain characters otherwise screws up compiling. The quotes will not show up in the changelog.
|
||||
changes:
|
||||
- rscadd: "Animals can be butchered for organs and hide. Requires scraping (sharp), washing (water or washing machine), and then drying (bonfire or drying rack)."
|
||||
- rscadd: "Organs can be butchered for meat, named \"[organ] meat\". Heart meat, liver meat, etc. Brains from player mobs cannot be butchered."
|
||||
@@ -1,42 +0,0 @@
|
||||
################################
|
||||
# Example Changelog File
|
||||
#
|
||||
# Note: This file, and files beginning with ".", and files that don't end in ".yml" will not be read. If you change this file, you will look really dumb.
|
||||
#
|
||||
# Your changelog will be merged with a master changelog. (New stuff added only, and only on the date entry for the day it was merged.)
|
||||
# When it is, any changes listed below will disappear.
|
||||
#
|
||||
# Valid Prefixes:
|
||||
# bugfix
|
||||
# wip (For works in progress)
|
||||
# tweak
|
||||
# soundadd
|
||||
# sounddel
|
||||
# rscadd (general adding of nice things)
|
||||
# rscdel (general deleting of nice things)
|
||||
# imageadd
|
||||
# imagedel
|
||||
# maptweak
|
||||
# spellcheck (typo fixes)
|
||||
# experiment
|
||||
#################################
|
||||
|
||||
# Your name.
|
||||
author: Mechoid
|
||||
|
||||
# Optional: Remove this file after generating master changelog. Useful for PR changelogs that won't get used again.
|
||||
delete-after: True
|
||||
|
||||
# Any changes you've made. See valid prefix list above.
|
||||
# INDENT WITH TWO SPACES. NOT TABS. SPACES.
|
||||
# SCREW THIS UP AND IT WON'T WORK.
|
||||
# Also, all entries are changed into a single [] after a master changelog generation. Just remove the brackets when you add new entries.
|
||||
# Please surround your changes in double quotes ("), as certain characters otherwise screws up compiling. The quotes will not show up in the changelog.
|
||||
changes:
|
||||
- rscadd: "Hardpoint Actuator equipment for Exosuits, allowing them (And most effectively, Ripleys) to swap components on the fly, after a short delay."
|
||||
- rscadd: "Exo Inflatables Deployer, allowing exosuits to pick up and deploy inflatables."
|
||||
- rscadd: "Exo screwdriver, wirecutters, and welding laser, to help round-out the tool-based equipment types."
|
||||
- rscadd: "Fire modifiers based on stacks added, to be used by the damage system tweaked above."
|
||||
- tweak: "Incendiary exo weapons tweaked to conform with fire change."
|
||||
- tweak: "Ignition effects from weapons changed from the old fire-system to the modifier fire system."
|
||||
- bugfix: "Shocker now retaliates properly against melee."
|
||||
@@ -1,6 +0,0 @@
|
||||
author: Mechoid
|
||||
delete-after: True
|
||||
changes:
|
||||
- rscadd: "Adds Wurmwoad, a suspiciously worm-like plant that produces pods of spice."
|
||||
- rscadd: "Adds Wurmwoad to the service borg synthesizer."
|
||||
- bugfix: "Service borgs can work with kitchenware again."
|
||||
@@ -1,38 +0,0 @@
|
||||
################################
|
||||
# Example Changelog File
|
||||
#
|
||||
# Note: This file, and files beginning with ".", and files that don't end in ".yml" will not be read. If you change this file, you will look really dumb.
|
||||
#
|
||||
# Your changelog will be merged with a master changelog. (New stuff added only, and only on the date entry for the day it was merged.)
|
||||
# When it is, any changes listed below will disappear.
|
||||
#
|
||||
# Valid Prefixes:
|
||||
# bugfix
|
||||
# wip (For works in progress)
|
||||
# tweak
|
||||
# soundadd
|
||||
# sounddel
|
||||
# rscadd (general adding of nice things)
|
||||
# rscdel (general deleting of nice things)
|
||||
# imageadd
|
||||
# imagedel
|
||||
# maptweak
|
||||
# spellcheck (typo fixes)
|
||||
# experiment
|
||||
#################################
|
||||
|
||||
# Your name.
|
||||
author: Neerti
|
||||
|
||||
# Optional: Remove this file after generating master changelog. Useful for PR changelogs that won't get used again.
|
||||
delete-after: True
|
||||
|
||||
# Any changes you've made. See valid prefix list above.
|
||||
# INDENT WITH TWO SPACES. NOT TABS. SPACES.
|
||||
# SCREW THIS UP AND IT WON'T WORK.
|
||||
# Also, all entries are changed into a single [] after a master changelog generation. Just remove the brackets when you add new entries.
|
||||
# Please surround your changes in double quotes ("), as certain characters otherwise screws up compiling. The quotes will not show up in the changelog.
|
||||
changes:
|
||||
- tweak: "The 'cut' and 'pulse' buttons in the hacking interface now check all available hands for tools, instead of only the active hand."
|
||||
- tweak: "The textual indicators at the bottom of the hacking window will now go bold when they change, until the next window refresh."
|
||||
- tweak: "Hacking an Autolathe no longer requires you to hack it using the Autolathe's main window, but instead opens the hacking window like everything else."
|
||||
@@ -1,10 +0,0 @@
|
||||
author: schnayy
|
||||
|
||||
delete-after: True
|
||||
|
||||
changes:
|
||||
- rscadd: "Adds the reagent yeast. It can be found in the kitchen vendor and in cargo kitchen supply crates."
|
||||
- tweak: "Bread now calls for 5 units yeast instead of an egg, and baguettes and croissants call for 5 units yeast in addition to former ingredients."
|
||||
- rscadd: "Corn oil added to the Dinnerware vendor and the Booze-o-Mat."
|
||||
- imageadd: "Sprites for peanut butter, mayo, and yeast condiments."
|
||||
- bugfix: "Boiled slime core now links to the proper sprite."
|
||||
@@ -1,37 +0,0 @@
|
||||
################################
|
||||
# Example Changelog File
|
||||
#
|
||||
# Note: This file, and files beginning with ".", and files that don't end in ".yml" will not be read. If you change this file, you will look really dumb.
|
||||
#
|
||||
# Your changelog will be merged with a master changelog. (New stuff added only, and only on the date entry for the day it was merged.)
|
||||
# When it is, any changes listed below will disappear.
|
||||
#
|
||||
# Valid Prefixes:
|
||||
# bugfix
|
||||
# wip (For works in progress)
|
||||
# tweak
|
||||
# soundadd
|
||||
# sounddel
|
||||
# rscadd (general adding of nice things)
|
||||
# rscdel (general deleting of nice things)
|
||||
# imageadd
|
||||
# imagedel
|
||||
# maptweak
|
||||
# spellcheck (typo fixes)
|
||||
# experiment
|
||||
#################################
|
||||
|
||||
# Your name.
|
||||
author: Woodrat
|
||||
|
||||
# Optional: Remove this file after generating master changelog. Useful for PR changelogs that won't get used again.
|
||||
delete-after: True
|
||||
|
||||
# Any changes you've made. See valid prefix list above.
|
||||
# INDENT WITH TWO SPACES. NOT TABS. SPACES.
|
||||
# SCREW THIS UP AND IT WON'T WORK.
|
||||
# Also, all entries are changed into a single [] after a master changelog generation. Just remove the brackets when you add new entries.
|
||||
# Please surround your changes in double quotes ("), as certain characters otherwise screws up compiling. The quotes will not show up in the changelog.
|
||||
changes:
|
||||
- rscadd: "Added new shutters ported from World."
|
||||
- tweak: "Replaced lightswitch, request console, newscaster sprite with one from Virgo."
|
||||
@@ -1,36 +0,0 @@
|
||||
################################
|
||||
# Example Changelog File
|
||||
#
|
||||
# Note: This file, and files beginning with ".", and files that don't end in ".yml" will not be read. If you change this file, you will look really dumb.
|
||||
#
|
||||
# Your changelog will be merged with a master changelog. (New stuff added only, and only on the date entry for the day it was merged.)
|
||||
# When it is, any changes listed below will disappear.
|
||||
#
|
||||
# Valid Prefixes:
|
||||
# bugfix
|
||||
# wip (For works in progress)
|
||||
# tweak
|
||||
# soundadd
|
||||
# sounddel
|
||||
# rscadd (general adding of nice things)
|
||||
# rscdel (general deleting of nice things)
|
||||
# imageadd
|
||||
# imagedel
|
||||
# maptweak
|
||||
# spellcheck (typo fixes)
|
||||
# experiment
|
||||
#################################
|
||||
|
||||
# Your name.
|
||||
author: Woodrat
|
||||
|
||||
# Optional: Remove this file after generating master changelog. Useful for PR changelogs that won't get used again.
|
||||
delete-after: True
|
||||
|
||||
# Any changes you've made. See valid prefix list above.
|
||||
# INDENT WITH TWO SPACES. NOT TABS. SPACES.
|
||||
# SCREW THIS UP AND IT WON'T WORK.
|
||||
# Also, all entries are changed into a single [] after a master changelog generation. Just remove the brackets when you add new entries.
|
||||
# Please surround your changes in double quotes ("), as certain characters otherwise screws up compiling. The quotes will not show up in the changelog.
|
||||
changes:
|
||||
- tweak: "Minor adjustment of ID icons."
|
||||
@@ -0,0 +1,342 @@
|
||||
import dateformat from 'dateformat';
|
||||
import yaml from 'js-yaml';
|
||||
import { Component, Fragment } from 'react';
|
||||
import { resolveAsset } from 'tgui/assets';
|
||||
import { useBackend } from 'tgui/backend';
|
||||
import { Window } from 'tgui/layouts';
|
||||
import {
|
||||
Box,
|
||||
Button,
|
||||
Dropdown,
|
||||
Icon,
|
||||
Section,
|
||||
Stack,
|
||||
Table,
|
||||
} from 'tgui-core/components';
|
||||
import { classes } from 'tgui-core/react';
|
||||
|
||||
const icons = {
|
||||
add: { icon: 'check-circle', color: 'green' },
|
||||
admin: { icon: 'user-shield', color: 'purple' },
|
||||
balance: { icon: 'balance-scale-right', color: 'yellow' },
|
||||
bugfix: { icon: 'bug', color: 'green' },
|
||||
code_imp: { icon: 'code', color: 'green' },
|
||||
config: { icon: 'cogs', color: 'purple' },
|
||||
expansion: { icon: 'check-circle', color: 'green' },
|
||||
experiment: { icon: 'radiation', color: 'yellow' },
|
||||
image: { icon: 'image', color: 'green' },
|
||||
imageadd: { icon: 'tg-image-plus', color: 'green' },
|
||||
imagedel: { icon: 'tg-image-minus', color: 'red' },
|
||||
qol: { icon: 'hand-holding-heart', color: 'green' },
|
||||
refactor: { icon: 'tools', color: 'green' },
|
||||
rscadd: { icon: 'check-circle', color: 'green' },
|
||||
rscdel: { icon: 'times-circle', color: 'red' },
|
||||
server: { icon: 'server', color: 'purple' },
|
||||
sound: { icon: 'volume-high', color: 'green' },
|
||||
soundadd: { icon: 'tg-sound-plus', color: 'green' },
|
||||
sounddel: { icon: 'tg-sound-minus', color: 'red' },
|
||||
spellcheck: { icon: 'spell-check', color: 'green' },
|
||||
tgs: { icon: 'toolbox', color: 'purple' },
|
||||
tweak: { icon: 'wrench', color: 'green' },
|
||||
unknown: { icon: 'info-circle', color: 'label' },
|
||||
wip: { icon: 'hammer', color: 'orange' },
|
||||
};
|
||||
|
||||
type Data = { dates: string[] };
|
||||
|
||||
export class Changelog extends Component<
|
||||
{},
|
||||
{
|
||||
data:
|
||||
| string
|
||||
| { date: string; authors: { name: string; changes: string[] } };
|
||||
selectedDate: string;
|
||||
selectedIndex: number;
|
||||
}
|
||||
> {
|
||||
dateChoices: string[];
|
||||
|
||||
constructor(props) {
|
||||
super(props);
|
||||
this.state = {
|
||||
data: 'Loading changelog data...',
|
||||
selectedDate: '',
|
||||
selectedIndex: 0,
|
||||
};
|
||||
this.dateChoices = [];
|
||||
}
|
||||
|
||||
setData(data) {
|
||||
this.setState({ data });
|
||||
}
|
||||
|
||||
setSelectedDate(selectedDate) {
|
||||
this.setState({ selectedDate });
|
||||
}
|
||||
|
||||
setSelectedIndex(selectedIndex) {
|
||||
this.setState({ selectedIndex });
|
||||
}
|
||||
|
||||
getData = (date, attemptNumber = 1) => {
|
||||
const { act } = useBackend();
|
||||
const self = this;
|
||||
const maxAttempts = 6;
|
||||
|
||||
if (attemptNumber > maxAttempts) {
|
||||
return this.setData(
|
||||
'Failed to load data after ' + maxAttempts + ' attempts',
|
||||
);
|
||||
}
|
||||
|
||||
act('get_month', { date });
|
||||
|
||||
fetch(resolveAsset(date + '.yml')).then(async (changelogData) => {
|
||||
const result = await changelogData.text();
|
||||
const errorRegex = /^Cannot find/;
|
||||
|
||||
if (errorRegex.test(result)) {
|
||||
const timeout = 50 + attemptNumber * 50;
|
||||
|
||||
self.setData('Loading changelog data' + '.'.repeat(attemptNumber + 3));
|
||||
setTimeout(() => {
|
||||
self.getData(date, attemptNumber + 1);
|
||||
}, timeout);
|
||||
} else {
|
||||
self.setData(yaml.load(result, { schema: yaml.CORE_SCHEMA }));
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
componentDidMount() {
|
||||
const {
|
||||
data: { dates = [] },
|
||||
} = useBackend<Data>();
|
||||
|
||||
if (dates) {
|
||||
dates.forEach((date) =>
|
||||
this.dateChoices.push(dateformat(date, 'mmmm yyyy', true)),
|
||||
);
|
||||
this.setSelectedDate(this.dateChoices[0]);
|
||||
this.getData(dates[0]);
|
||||
}
|
||||
}
|
||||
|
||||
render() {
|
||||
const { data, selectedDate, selectedIndex } = this.state;
|
||||
const {
|
||||
data: { dates },
|
||||
} = useBackend<Data>();
|
||||
const { dateChoices } = this;
|
||||
|
||||
const dateDropdown = dateChoices.length > 0 && (
|
||||
<Stack mb={1}>
|
||||
<Stack.Item>
|
||||
<Button
|
||||
className="Changelog__Button"
|
||||
disabled={selectedIndex === 0}
|
||||
icon={'chevron-left'}
|
||||
onClick={() => {
|
||||
const index = selectedIndex - 1;
|
||||
|
||||
this.setData('Loading changelog data...');
|
||||
this.setSelectedIndex(index);
|
||||
this.setSelectedDate(dateChoices[index]);
|
||||
window.scrollTo(
|
||||
0,
|
||||
document.body.scrollHeight ||
|
||||
document.documentElement.scrollHeight,
|
||||
);
|
||||
return this.getData(dates[index]);
|
||||
}}
|
||||
/>
|
||||
</Stack.Item>
|
||||
<Stack.Item>
|
||||
<Dropdown
|
||||
displayText={selectedDate}
|
||||
options={dateChoices}
|
||||
onSelected={(value) => {
|
||||
const index = dateChoices.indexOf(value);
|
||||
|
||||
this.setData('Loading changelog data...');
|
||||
this.setSelectedIndex(index);
|
||||
this.setSelectedDate(value);
|
||||
window.scrollTo(
|
||||
0,
|
||||
document.body.scrollHeight ||
|
||||
document.documentElement.scrollHeight,
|
||||
);
|
||||
return this.getData(dates[index]);
|
||||
}}
|
||||
selected={selectedDate}
|
||||
width={'150px'}
|
||||
/>
|
||||
</Stack.Item>
|
||||
<Stack.Item>
|
||||
<Button
|
||||
className="Changelog__Button"
|
||||
disabled={selectedIndex === dateChoices.length - 1}
|
||||
icon={'chevron-right'}
|
||||
onClick={() => {
|
||||
const index = selectedIndex + 1;
|
||||
|
||||
this.setData('Loading changelog data...');
|
||||
this.setSelectedIndex(index);
|
||||
this.setSelectedDate(dateChoices[index]);
|
||||
window.scrollTo(
|
||||
0,
|
||||
document.body.scrollHeight ||
|
||||
document.documentElement.scrollHeight,
|
||||
);
|
||||
return this.getData(dates[index]);
|
||||
}}
|
||||
/>
|
||||
</Stack.Item>
|
||||
</Stack>
|
||||
);
|
||||
|
||||
const header = (
|
||||
<Section>
|
||||
<h1>VOREStation Changelist</h1>
|
||||
<p>
|
||||
{'The GitHub repository can be found '}
|
||||
<a href="https://github.com/VOREStation/VOREStation">here</a>
|
||||
{', recent GitHub contributors can be found '}
|
||||
<a href="https://github.com/VOREStation/VOREStation/pulse/monthly">
|
||||
here
|
||||
</a>
|
||||
.
|
||||
</p>
|
||||
<p>
|
||||
{'Visit our wiki '}
|
||||
<a href="https://wiki.vore-station.net/Main_Page">here</a>
|
||||
{', check out our discord server '}
|
||||
<a href="https://discord.gg/Zd5WMuq">here</a>.
|
||||
</p>
|
||||
{dateDropdown}
|
||||
</Section>
|
||||
);
|
||||
|
||||
const footer = (
|
||||
<Section>
|
||||
{dateDropdown}
|
||||
<h3>VOREStation License</h3>
|
||||
<p>
|
||||
{'All code after '}
|
||||
<a
|
||||
href={
|
||||
'https://github.com/VOREStation/VOREStation/commit/' +
|
||||
'333c566b88108de218d882840e61928a9b759d8f'
|
||||
}
|
||||
>
|
||||
commit 333c566b88108de218d882840e61928a9b759d8f on 2014/31/12 at
|
||||
4:38 PM PST
|
||||
</a>
|
||||
{' is licensed under '}
|
||||
<a href="https://www.gnu.org/licenses/agpl-3.0.html">GNU AGPL v3</a>
|
||||
{'. All code before that commit is licensed under '}
|
||||
<a href="https://www.gnu.org/licenses/gpl-3.0.html">GNU GPL v3</a>
|
||||
{', including tools unless their readme specifies otherwise. See '}
|
||||
<a href="https://github.com/VOREStation/VOREStation/blob/master/LICENSE">
|
||||
LICENSE
|
||||
</a>
|
||||
{' and '}
|
||||
<a href="https://github.com/VOREStation/VOREStation/blob/master/LICENSE-GPL3.txt">
|
||||
GPLv3.txt
|
||||
</a>
|
||||
{' for more details.'}
|
||||
</p>
|
||||
<p>
|
||||
The TGS DMAPI API is licensed as a subproject under the MIT license.
|
||||
{' See the footer of '}
|
||||
<a
|
||||
href={
|
||||
'https://github.com/VOREStation/VOREStation/blob/master' +
|
||||
'/code/__DEFINES/tgs.dm'
|
||||
}
|
||||
>
|
||||
code/__DEFINES/tgs.dm
|
||||
</a>
|
||||
{' and '}
|
||||
<a
|
||||
href={
|
||||
'https://github.com/VOREStation/VOREStation/blob/master' +
|
||||
'/code/modules/tgs/LICENSE'
|
||||
}
|
||||
>
|
||||
code/modules/tgs/LICENSE
|
||||
</a>
|
||||
{' for the MIT license.'}
|
||||
</p>
|
||||
<p>
|
||||
{'All assets including icons and sound are under a '}
|
||||
<a href="https://creativecommons.org/licenses/by-sa/3.0/">
|
||||
Creative Commons 3.0 BY-SA license
|
||||
</a>
|
||||
{' unless otherwise indicated.'}
|
||||
</p>
|
||||
</Section>
|
||||
);
|
||||
|
||||
const changes =
|
||||
typeof data === 'object' &&
|
||||
Object.keys(data).length > 0 &&
|
||||
Object.entries(data)
|
||||
.reverse()
|
||||
.map(([date, authors]) => (
|
||||
<Section key={date} title={dateformat(date, 'd mmmm yyyy', true)}>
|
||||
<Box ml={3}>
|
||||
{Object.entries(authors).map(([name, changes]) => (
|
||||
<Fragment key={name}>
|
||||
<h4>{name} changed:</h4>
|
||||
<Box ml={3}>
|
||||
<Table>
|
||||
{(changes as string[]).map((change) => {
|
||||
const changeType = Object.keys(change)[0];
|
||||
return (
|
||||
<Table.Row key={changeType + change[changeType]}>
|
||||
<Table.Cell
|
||||
className={classes([
|
||||
'Changelog__Cell',
|
||||
'Changelog__Cell--Icon',
|
||||
])}
|
||||
>
|
||||
<Icon
|
||||
color={
|
||||
icons[changeType]
|
||||
? icons[changeType].color
|
||||
: icons['unknown'].color
|
||||
}
|
||||
name={
|
||||
icons[changeType]
|
||||
? icons[changeType].icon
|
||||
: icons['unknown'].icon
|
||||
}
|
||||
/>
|
||||
</Table.Cell>
|
||||
<Table.Cell className="Changelog__Cell">
|
||||
{change[changeType]}
|
||||
</Table.Cell>
|
||||
</Table.Row>
|
||||
);
|
||||
})}
|
||||
</Table>
|
||||
</Box>
|
||||
</Fragment>
|
||||
))}
|
||||
</Box>
|
||||
</Section>
|
||||
));
|
||||
|
||||
return (
|
||||
<Window title="Changelog" width={675} height={650}>
|
||||
<Window.Content scrollable>
|
||||
{header}
|
||||
{changes}
|
||||
{typeof data === 'string' && <p>{data}</p>}
|
||||
{footer}
|
||||
</Window.Content>
|
||||
</Window>
|
||||
);
|
||||
}
|
||||
}
|
||||
@@ -89,7 +89,7 @@ fi;
|
||||
|
||||
part "changelog"
|
||||
#Checking for a change to html/changelogs/example.yml
|
||||
md5sum -c - <<< "ea467b7b75774b41ecdf35e07091d96f *html/changelogs/example.yml"
|
||||
md5sum -c - <<< "0c56937110d88f750a32d9075ddaab8b *html/changelogs/example.yml"
|
||||
retVal=$?
|
||||
if [ $retVal -ne 0 ]; then
|
||||
echo -e "${RED}Do not modify the example.yml changelog file.${NC}"
|
||||
|
||||
@@ -0,0 +1,147 @@
|
||||
'''
|
||||
Usage:
|
||||
$ python ss13_genchangelog.py html/changelogs/
|
||||
|
||||
ss13_genchangelog.py - Generate changelog from YAML.
|
||||
|
||||
Copyright 2013 Rob "N3X15" Nelson <nexis@7chan.org>
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in
|
||||
all copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
THE SOFTWARE.
|
||||
'''
|
||||
|
||||
from __future__ import print_function
|
||||
import yaml, os, glob, sys, re, time, argparse
|
||||
from datetime import datetime, date, timedelta
|
||||
from time import time
|
||||
|
||||
today = date.today()
|
||||
|
||||
fileDateFormat = "%Y-%m"
|
||||
|
||||
opt = argparse.ArgumentParser()
|
||||
opt.add_argument('ymlDir', help='The directory of YAML changelogs we will use.')
|
||||
|
||||
args = opt.parse_args()
|
||||
archiveDir = os.path.join(args.ymlDir, 'archive')
|
||||
|
||||
all_changelog_entries = {}
|
||||
|
||||
# Do not change the order, add to the bottom of the array if necessary
|
||||
validPrefixes = [
|
||||
'bugfix',
|
||||
'wip',
|
||||
'qol',
|
||||
'soundadd',
|
||||
'sounddel',
|
||||
'rscadd',
|
||||
'rscdel',
|
||||
'imageadd',
|
||||
'imagedel',
|
||||
'maptweak',
|
||||
'spellcheck',
|
||||
'experiment',
|
||||
'balance',
|
||||
'code_imp',
|
||||
'refactor',
|
||||
'config',
|
||||
'admin',
|
||||
'server',
|
||||
'sound',
|
||||
'image',
|
||||
]
|
||||
|
||||
def dictToTuples(inp):
|
||||
return [(k, v) for k, v in inp.items()]
|
||||
|
||||
old_changelog_cache = os.path.join(args.ymlDir, '.all_changelog.yml')
|
||||
|
||||
if os.path.isfile(old_changelog_cache):
|
||||
try:
|
||||
print('Reading old changelog cache...')
|
||||
data = {}
|
||||
with open(old_changelog_cache,encoding='utf-8') as f:
|
||||
(_, all_changelog_entries) = yaml.load_all(f, Loader=yaml.SafeLoader)
|
||||
|
||||
# Categorize changes by year and month
|
||||
for _date in all_changelog_entries.keys():
|
||||
ty = type(_date).__name__
|
||||
formattedDate = _date.strftime(fileDateFormat)
|
||||
if not formattedDate in data:
|
||||
data[formattedDate] = {}
|
||||
data[formattedDate][_date] = all_changelog_entries[_date]
|
||||
# Write files with changes by year and month
|
||||
for month in data.keys():
|
||||
print("Writing " + month + ".yml...")
|
||||
if not os.path.exists(archiveDir):
|
||||
os.makedirs(archiveDir)
|
||||
currentFile = os.path.join(archiveDir, month + '.yml')
|
||||
with open(currentFile, 'w', encoding='utf-8') as f:
|
||||
yaml.dump(data[month], f, default_flow_style=False)
|
||||
# Remove the old changelog cache, as we won't use it anymore
|
||||
print("Removing old changelog cache...")
|
||||
os.remove(old_changelog_cache)
|
||||
old_changelog_html = os.path.join(args.ymlDir, '..', 'changelog.html')
|
||||
if os.path.isfile(old_changelog_html):
|
||||
print("Removing old changelog html...")
|
||||
os.remove(old_changelog_html)
|
||||
except Exception as e:
|
||||
print("Failed to read old changelog cache:")
|
||||
print(e, file=sys.stderr)
|
||||
|
||||
print('Reading changelogs...')
|
||||
for fileName in glob.glob(os.path.join(args.ymlDir, "*.yml")):
|
||||
name, ext = os.path.splitext(os.path.basename(fileName))
|
||||
if name.startswith('.'): continue
|
||||
if name == 'example': continue
|
||||
fileName = os.path.abspath(fileName)
|
||||
formattedDate = today.strftime(fileDateFormat)
|
||||
monthFile = os.path.join(archiveDir, formattedDate + '.yml')
|
||||
print(' Reading {}...'.format(fileName))
|
||||
cl = {}
|
||||
with open(fileName, 'r',encoding='utf-8') as f:
|
||||
cl = yaml.load(f, Loader=yaml.SafeLoader)
|
||||
currentEntries = {}
|
||||
if os.path.exists(monthFile):
|
||||
with open(monthFile,'r',encoding='utf-8') as f:
|
||||
currentEntries = yaml.load(f, Loader=yaml.SafeLoader)
|
||||
if today not in currentEntries:
|
||||
currentEntries[today] = {}
|
||||
author_entries = currentEntries[today].get(cl['author'], [])
|
||||
if len(cl['changes']):
|
||||
new = 0
|
||||
for change in cl['changes']:
|
||||
if change not in author_entries:
|
||||
(change_type, _) = dictToTuples(change)[0]
|
||||
if change_type not in validPrefixes:
|
||||
print(' {0}: Invalid prefix {1}'.format(fileName, change_type), file=sys.stderr)
|
||||
sys.exit(1)
|
||||
author_entries += [change]
|
||||
new += 1
|
||||
currentEntries[today][cl['author']] = author_entries
|
||||
if new > 0:
|
||||
print(' Added {0} new changelog entries.'.format(new))
|
||||
|
||||
if cl.get('delete-after', False):
|
||||
if os.path.isfile(fileName):
|
||||
print(' Deleting {0} (delete-after set)...'.format(fileName))
|
||||
os.remove(fileName)
|
||||
|
||||
with open(monthFile, 'w', encoding='utf-8') as f:
|
||||
|
||||
yaml.dump(currentEntries, f, default_flow_style=False)
|
||||
@@ -179,6 +179,7 @@
|
||||
#include "code\_global_vars\logging.dm"
|
||||
#include "code\_global_vars\misc.dm"
|
||||
#include "code\_global_vars\mobs.dm"
|
||||
#include "code\_global_vars\tgui.dm"
|
||||
#include "code\_global_vars\time_vars.dm"
|
||||
#include "code\_global_vars\typecache.dm"
|
||||
#include "code\_global_vars\lists\mapping.dm"
|
||||
@@ -459,6 +460,7 @@
|
||||
#include "code\datums\autolathe\medical_vr.dm"
|
||||
#include "code\datums\autolathe\tools.dm"
|
||||
#include "code\datums\autolathe\tools_vr.dm"
|
||||
#include "code\datums\changelog\changelog.dm"
|
||||
#include "code\datums\components\_component.dm"
|
||||
#include "code\datums\components\connect_mob_behalf.dm"
|
||||
#include "code\datums\components\gargoyle.dm"
|
||||
|
||||
Reference in New Issue
Block a user