Skip to content

Commit 940ead4

Browse files
authored
Merge pull request #98 from Defacto2/api
Api
2 parents 3f43c5f + 6c7d855 commit 940ead4

43 files changed

Lines changed: 4934 additions & 604 deletions

Some content is hidden

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

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ profile*.*
1313
defacto2_serve_*.log
1414
/logs/
1515
.vibe/
16+
*.test
1617

1718
# temp directories
1819
dist/

.spectral.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
extends: ["spectral:oas"]

AGENTS.MD

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,3 +22,4 @@
2222

2323
- We use Bootstrap 5.3, so it should take priority over bespoke styles.
2424
- When making changes to CSS or JS, the command, "task assets" must always be run to rebuild with the changes.
25+
- All // comments in *.go must end with punctuation.

Taskfile.dist.yaml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,8 @@ tasks:
7676
- cmd: go fix -diff ./...
7777
- cmd: go fix ./...
7878
- cmd: pnpm exec eslint assets/js/
79-
- cmd: pnpm exec stylelint assets/css/*.css
79+
- cmd: pnpm exec spectral lint public/json/openapi.json
80+
- cmd: pnpm exec stylelint --fix assets/css/*.css
8081
- cmd: golangci-lint run -c init/.golangci.yaml
8182
linter:
8283
silent: false

assets/css/layout.css

Lines changed: 98 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,41 @@
1111
* - Animation effects
1212
*/
1313

14+
:root {
15+
--bbs-black: rgb(0 0 0);
16+
--bbs-blue: rgb(0 0 128);
17+
--bbs-green: rgb(0 128 0);
18+
--bbs-cyan: rgb(0 170 170);
19+
--bbs-red: rgb(128 0 0);
20+
--bbs-magenta: rgb(170 0 170);
21+
--bbs-brown: rgb(170 85 0);
22+
--bbs-grey: rgb(170 170 170);
23+
--bbs-darkgrey: rgb(85 85 85);
24+
--bbs-lightblue: rgb(0 0 255);
25+
--bbs-lightgreen: rgb(0 255 0);
26+
--bbs-lightcyan: rgb(0 255 255);
27+
--bbs-lightred: rgb(255 0 0);
28+
--bbs-lightmagenta: rgb(255 0 255);
29+
--bbs-yellow: rgb(255 255 85);
30+
--bbs-white: rgb(255 255 255);
31+
--renegade-black: rgb(0 0 0);
32+
--renegade-blue: rgb(0 0 170);
33+
--renegade-green: rgb(0 170 0);
34+
--renegade-cyan: rgb(0 170 170);
35+
--renegade-red: rgb(170 0 0);
36+
--renegade-purple: rgb(170 0 170);
37+
--renegade-brown: rgb(170 85 0);
38+
--renegade-grey: rgb(170 170 170);
39+
--renegade-darkgrey: rgb(85 85 85);
40+
--renegade-brightblue: rgb(85 85 255);
41+
--renegade-brightgreen: rgb(85 255 85);
42+
--renegade-brightcyan: rgb(85 255 255);
43+
--renegade-brightred: rgb(255 85 85);
44+
--renegade-brightpurple: rgb(255 85 255);
45+
--renegade-yellow: rgb(255 255 85);
46+
--renegade-white: rgb(255 255 255);
47+
}
48+
1449
/* ============================================================
1550
* ICON STYLES
1651
* Social media icon colors and styling
@@ -521,28 +556,11 @@ a {
521556
}
522557

523558
/* ============================================================
524-
* PCBoard and WildCat! BBS colours
559+
* PCBoard, Renegade (EGA palette), and WildCat! BBS colours
525560
* https://github.com/bengarrett/bbs/blob/main/static/css/
526561
* ============================================================ */
527-
:root {
528-
--bbs-black: rgb(0, 0, 0);
529-
--bbs-blue: rgb(0, 0, 128);
530-
--bbs-green: rgb(0, 128, 0);
531-
--bbs-cyan: rgb(0, 170, 170);
532-
--bbs-red: rgb(128, 0, 0);
533-
--bbs-magenta: rgb(170, 0, 170);
534-
--bbs-brown: rgb(170, 85, 0);
535-
--bbs-grey: rgb(170, 170, 170);
536-
--bbs-darkgrey: rgb(85, 85, 85);
537-
--bbs-lightblue: rgb(0, 0, 255);
538-
--bbs-lightgreen: rgb(0, 255, 0);
539-
--bbs-lightcyan: rgb(0, 255, 255);
540-
--bbs-lightred: rgb(255, 0, 0);
541-
--bbs-lightmagenta: rgb(255, 0, 255);
542-
--bbs-yellow: rgb(255, 255, 85);
543-
--bbs-white: rgb(255, 255, 255);
544-
}
545-
562+
/* stylelint-disable selector-class-pattern */
563+
/* stylelint-disable selector-id-pattern */
546564
:is(
547565
pre i.PF0,
548566
pre i.PF1,
@@ -563,210 +581,243 @@ a {
563581
) {
564582
font-style: normal;
565583
}
584+
566585
pre#precontentUTF8,
567586
pre#precontentLatin1,
568587
pre#precontentCP437 {
569588
& i {
570589
font-style: normal;
571590
}
591+
572592
/* Foreground colors */
573593
& i.PF0 {
574594
color: var(--bbs-black);
575595
}
596+
576597
& i.PF1 {
577598
color: var(--bbs-blue);
578599
}
600+
579601
& i.PF2 {
580602
color: var(--bbs-green);
581603
}
604+
582605
& i.PF3 {
583606
color: var(--bbs-cyan);
584607
}
608+
585609
& i.PF4 {
586610
color: var(--bbs-red);
587611
}
612+
588613
& i.PF5 {
589614
color: var(--bbs-magenta);
590615
}
616+
591617
& i.PF6 {
592618
color: var(--bbs-brown);
593619
}
620+
594621
& i.PF7 {
595622
color: var(--bbs-grey);
596623
}
624+
597625
& i.PF8 {
598626
color: var(--bbs-darkgrey);
599627
}
628+
600629
& i.PF9 {
601630
color: var(--bbs-lightblue);
602631
}
632+
603633
& i.PFA {
604634
color: var(--bbs-lightgreen);
605635
}
636+
606637
& i.PFB {
607638
color: var(--bbs-lightcyan);
608639
}
640+
609641
& i.PFC {
610642
color: var(--bbs-lightred);
611643
}
644+
612645
& i.PFD {
613646
color: var(--bbs-lightmagenta);
614647
}
648+
615649
& i.PFE {
616650
color: var(--bbs-yellow);
617651
}
652+
618653
& i.PFF {
619654
color: var(--bbs-white);
620655
}
656+
621657
/* Background colors */
622658
& i.PB0 {
623659
background-color: transparent;
624660
}
661+
625662
& i.PB1 {
626663
background-color: var(--bbs-blue);
627664
}
665+
628666
& i.PB2 {
629667
background-color: var(--bbs-green);
630668
}
669+
631670
& i.PB3 {
632671
background-color: var(--bbs-cyan);
633672
}
673+
634674
& i.PB4 {
635675
background-color: var(--bbs-red);
636676
}
677+
637678
& i.PB5 {
638679
background-color: var(--bbs-magenta);
639680
}
681+
640682
& i.PB6 {
641683
background-color: var(--bbs-brown);
642684
}
685+
643686
& i.PB7 {
644687
background-color: var(--bbs-grey);
645688
}
689+
646690
& i.PB8 {
647691
background-color: var(--bbs-black);
648692
}
693+
649694
& i.PB9 {
650695
background-color: var(--bbs-blue);
651696
}
697+
652698
& i.PBA {
653699
background-color: var(--bbs-green);
654700
}
701+
655702
& i.PBB {
656703
background-color: var(--bbs-cyan);
657704
}
705+
658706
& i.PBC {
659707
background-color: var(--bbs-red);
660708
}
709+
661710
& i.PBD {
662711
background-color: var(--bbs-magenta);
663712
}
713+
664714
& i.PBE {
665715
background-color: var(--bbs-brown);
666716
}
717+
667718
& i.PBF {
668719
background-color: var(--bbs-grey);
669720
}
670-
}
671-
672-
/* ============================================================
673-
* Renegade BBS Pipe Colors (EGA Palette)
674-
* ============================================================ */
675-
:root {
676-
--renegade-black: rgb(0, 0, 0);
677-
--renegade-blue: rgb(0, 0, 170);
678-
--renegade-green: rgb(0, 170, 0);
679-
--renegade-cyan: rgb(0, 170, 170);
680-
--renegade-red: rgb(170, 0, 0);
681-
--renegade-purple: rgb(170, 0, 170);
682-
--renegade-brown: rgb(170, 85, 0);
683-
--renegade-grey: rgb(170, 170, 170);
684-
--renegade-darkgrey: rgb(85, 85, 85);
685-
--renegade-brightblue: rgb(85, 85, 255);
686-
--renegade-brightgreen: rgb(85, 255, 85);
687-
--renegade-brightcyan: rgb(85, 255, 255);
688-
--renegade-brightred: rgb(255, 85, 85);
689-
--renegade-brightpurple: rgb(255, 85, 255);
690-
--renegade-yellow: rgb(255, 255, 85);
691-
--renegade-white: rgb(255, 255, 255);
692-
}
693721

694-
pre#precontentUTF8,
695-
pre#precontentLatin1,
696-
pre#precontentCP437 {
697722
& i.P0 {
698723
color: var(--renegade-black);
699724
}
725+
700726
& i.P1 {
701727
color: var(--renegade-blue);
702728
}
729+
703730
& i.P2 {
704731
color: var(--renegade-green);
705732
}
733+
706734
& i.P3 {
707735
color: var(--renegade-cyan);
708736
}
737+
709738
& i.P4 {
710739
color: var(--renegade-red);
711740
}
741+
712742
& i.P5 {
713743
color: var(--renegade-purple);
714744
}
745+
715746
& i.P6 {
716747
color: var(--renegade-brown);
717748
}
749+
718750
& i.P7 {
719751
color: var(--renegade-grey);
720752
}
753+
721754
& i.P8 {
722755
color: var(--renegade-darkgrey);
723756
}
757+
724758
& i.P9 {
725759
color: var(--renegade-brightblue);
726760
}
761+
727762
& i.P10 {
728763
color: var(--renegade-brightgreen);
729764
}
765+
730766
& i.P11 {
731767
color: var(--renegade-brightcyan);
732768
}
769+
733770
& i.P12 {
734771
color: var(--renegade-brightred);
735772
}
773+
736774
& i.P13 {
737775
color: var(--renegade-brightpurple);
738776
}
777+
739778
& i.P14 {
740779
color: var(--renegade-yellow);
741780
}
781+
742782
& i.P15 {
743783
color: var(--renegade-white);
744784
}
785+
745786
& i.P16 {
746787
background-color: var(--renegade-black);
747788
}
789+
748790
& i.P17 {
749791
background-color: var(--renegade-blue);
750792
}
793+
751794
& i.P18 {
752795
background-color: var(--renegade-green);
753796
}
797+
754798
& i.P19 {
755799
background-color: var(--renegade-cyan);
756800
}
801+
757802
& i.P20 {
758803
background-color: var(--renegade-red);
759804
}
805+
760806
& i.P21 {
761807
background-color: var(--renegade-purple);
762808
}
809+
763810
& i.P22 {
764811
background-color: var(--renegade-brown);
765812
}
813+
766814
& i.P23 {
767815
background-color: var(--renegade-white);
768816
}
769-
& i[class^=\"P\"] {
817+
818+
& i[class^='"P"'] {
770819
font-style: normal;
771820
}
772821
}
822+
/* stylelint-enable selector-id-pattern */
823+
/* stylelint-enable selector-class-pattern */

handler/app/app.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -696,7 +696,7 @@ func SafeBBS(a any) template.HTML {
696696
// Check for and strip RTF formatting first, before any other processing
697697
if simple.RTF(src) {
698698
// Strip RTF formatting if detected
699-
src = []byte(simple.StripRTF(src))
699+
src = simple.StripRTF(src)
700700
}
701701
// remove any html elements false positives
702702
rene, pcb := bbs.IsRenegade(src), bbs.IsPCBoard(src)

0 commit comments

Comments
 (0)