command '/cont' added to already started tables, it replace the turned off '/nick...
[brisk.git] / TODO.txt
1  TODO |
2 ------+
3
4   FEATURES |
5  ----------+
6    - CONTINUE FEATURE
7      DONE . save points every game
8      DONE . modify points calculation to include order and mazzo
9      DONE . exclude not standard types from statistics
10          DONE . daily reports (1 for each active tournament)
11          DONE . monthly stats (for normal match only)
12
13      DONE . show current match ID when created
14      . add command to continue
15        . check consistency of the request
16      . rearrange users and game status to continue the selected match
17
18      . investigate user reordering ??
19
20    - WEBSOCKET TRANSPORT
21      . refactoring $enc attribute management
22      DONE . reintroduced $enc = 'plain' for websocket
23      DONE . fallback for not correct WS version
24      DONE . fini of ws stream
25      DONE . reactivate compression
26      DONE . fix xynt_test01
27      DONE M2: brisk working
28      DONE . manage multiport apache config
29      DONE . manage headers correctly in sac-a-push
30      DONE . manage transport.close method where required
31      DONE . xynt_stream: manage fallback to multiple ports
32      DONE . manage fini for ws
33      POST . server: manage input data from clients
34      POST . manage ping/pong (seems not required)
35
36      DONE . client (xynt_streaming.js)
37      DONE . server (transport.phh)
38
39      DONE M1: xynt_test01.php working
40
41
42    - improved S
43      . db update (add components, maybe single string)
44      . filter in index.php
45      . filter in index_wr.php
46
47    - prefs API:
48      . prefs_assign(content): assign json content as output var
49      . prefs_apply(prefs_new): apply new content to g_prefs and system
50      . prefs_load(content): load json content and apply to g_prefs and system
51
52      . prefs_update: update preferences temporarly
53      . prefs_save: save to the server the new prefs
54
55    - preferences (listen into preferences)
56         // js var, volatile server, (db server || cookie)
57         temporary: js var, volatile server
58         permanent: js var, volatile server, (db server || cookie)
59
60      . data from db OR, if missing, from cookies
61
62      . update values
63      . database change
64      . MANAGE NOT AUTH USERS
65
66    - preferences (with "modifiable S")
67      . Mod. S: new flag into database
68      . graph infrastructure
69      . new box to edit color
70
71   MAJOR |
72  -------+
73    - BUG: some connection to the named socket fails
74    - Not simultaneous more then one stream
75
76
77   MINOR |
78  -------+
79    WIP - try to be more antivirus-friendly
80    - multiple rows between games
81    - packetize and automatize php-ancillary and apache module
82    - DISABLED_TO_FIX: DNS access (perform blocking dns requests, must be fixed)
83
84
85   DONE |
86  ------+
87    DONE - temporarly server hung not reflected on user timeouts
88    DONE - timeouted users are still be able to sit down (only the first at the table is banned)
89    DONE - page still opened after the server restart
90    DONE - log_legal address fix
91    DONE - manage too fast reload in xynt-streaming
92    DONE - add xhr as transport layer and manage different streams better
93    TEST - BUG: pari + 72 non fa 4x ma attualmente fa 3x, da correggere
94    TEST - BUG: lurker are logged out (and remain a pending socket opened (look the spush log)
95    DONE - save/restore database
96    DONE - into the room local step remains -1
97    DONE - centralize all '<script ...' incapsulation to allow multiple transport system.
98    DONE - BUG: access with password from 2 diff browsers the second go in strange "page not found" 
99           in the first tentative, the second works
100    DONE - BUG: access with password from 2 diff browsers place the first in a strict loop (the 
101           problem was a call to a static parent method instead of the overrided child method,
102           substitute self:: with the dynamically get class::)
103    DONE - garbage management
104
105    DONE/FROZEN - problem with getpeer (HOSTADDR)
106
107    DONE - slow cards distribution
108    DONE - substr to mb_substr
109    DONE - parametrizations:
110           . parametrization of $DOCUMENT_ROOT  var in brisk-spush.phh file
111           . parametrization of SITE_PREFIX(_LEN) define
112           . move the name of the named socket into the configuration file
113    DONE - manage and test cross forwarder between table and room
114    DONE - setcookie (for tables only and persist prefs)
115    DONE - images flickering on slow windows: try to poll stream every 300 ms (seems to be download problem)
116    DONE - database connection fails after a while, check close and try PGSQL_CONNECT_FORCE_NEW.
117    DONE - unneeded garbage_time.expired access
118    DONE - BUG: fast loop on stream index_rd_ifra page (js watchdog start without timeout corrupt counts)
119    DONE - BUG: logout failed (fixed with a garbage_collector wrapper at sac-a-push level
120    DONE - 404 wrong page management (remove directories redirections (es. brisk/))
121    DONE - configuration file management
122    DONE - app level keep-alive
123    DONE - index_wr other issues
124    DONE - from room to table
125    DONE - from table to room
126    DONE - chunked
127    DONE - bug: read from a not resource handle (already closed because a new socket substitute it)
128    DONE - partial write for normal page management
129    DONE - index_rd_ifra: last_clean issue
130    DONE - fwrite failed error management (select, buffer where store unsent data, and fwrite check and retry)
131    DONE - bug: after restart index_rd.php receive from prev clients a lot of req
132    DONE - index_wr.php::chat
133    DONE - index_wr.php::exit
134    DONE - index_rd.php porting
135    DONE - generic var management from internet
136    DONE - index.php auth part
137    ABRT - index_wr.php::reload - reload is js-only function
138    ABRT - keepalive management - not interesting for our purposes
139
140  BRISK4 (mammuth)
141  ======
142
143  - STEP MANAGEMENT VERIFY
144  Slim Paragraph
145  DONE - move the garbage timeout on file
146  DONE - in index_rd load all data only when required
147  - briskin5 alignment
148    DONE . extern del garb_timeout
149    DONE . user_load parameters verify
150    DONE . Bin5::load_data and Bin5::save_data refactoring with
151           data split
152    . move many function into "Bin5 class"
153  - garbaging of .step files
154
155  DB: - initial usage
156      DONE - configurabilità file o db
157      DONE - aggiornare le funz di gestione db in modo che prevedano anche il flag DISABLE
158      DONE - travasatore file to pg
159        DONE - travaso punteggi
160        DONE - memorizzazione nuovi i punteggi nel db
161        DONE - gestione classifiche in SQL
162          DONE - produrle
163          DONE - mostrarle
164
165      STEP 1.1
166        DONE - points archiver
167
168      STEP 1.2
169        DONE - partial usability if database go down.
170
171      STEP 1.5
172      - sistema di inserimento nuovi utenti (riversatore da form di inserimento)
173
174      STEP 2
175      - aggiornare le funz di gestione db in modo che prevedano anche il flag SUSPEND
176      - modifica password   
177      - ripristino password 
178
179      STEP 3
180      - comunicazioni di aggiornamento (stato salvato sul server) 
181
182  DONE - var $G_base aggiunta per gestire include in include da path differenti
183
184  BRISK3 (trusty)
185  ======
186   DONE - donameter
187     DONE - G_donors
188     DONE (WOW!) - js object with infos
189     DONE - main logic at login (cookie check in index_rd.php; show_message and createCookie via snippets with block
190            to prevent fast reload)
191     DONE - cookie per non assillare e visualizz.
192     DONE - graphical donameter
193     WIP content (in conf.)
194
195   DONE - numero di tavoli auth-only nel .brisk-install
196   - isolation
197     TEST - ricalcolo delle persone in piedi quando si cambia modalità
198     DONE - se si e' in isolation non si può cambiare nick perdendo l' auth
199     DONE - non leggere le chat di quelli non autenticati (in isolation)
200     DONE - regole per passare alla modalita' (in piedi o ai tavoli autenticati) 
201     DONE - treni non auth da nascondere 
202     DONE - verso gli altri ??: uguale a prima
203
204   finire multilingua (briskin5/index_wr.php e altri se ce ne sono)
205   coniglio
206   only auth strictly
207   placing limits to config file
208
209 Dunque, 
210
211 - come vengono aggiornate le classifiche: ogni giorno alle 23:58
212
213 - cosa cambia tra le tre coppie di classifiche: 
214   ci sono le classifiche dell' ultima settimana, quelle dell' ultimo mese,  e quelle dell' ultimo trimestre,
215   per ognuno di questi lassi di tempo poi c'è la classifica di chi ha giocato più di TOT partite o meno di TOT partite, con TOT che cambia a seconda del lasso di tempo.
216
217 - come vengono calcolate le classifiche: per ogni utente vengono presi tutti i punti fatti ai tavoli con lucchetto nel lasso di tempo preso in considerazione (ultima settimana, ultimo mese o ultimo trimestre), sommati e divisi per il numero di partite fatte in quello stesso lasso di tempo per normalizzare i valori; poi siccome la gente quando vede 0.18734 sbarella ho deciso di moltiplicare il tutto per 100.
218
219 Un esempio per chiarire:
220
221   l'utente 'pippo' che è nuovo gioca 4 partite nell'ultima settimana con i seguenti punteggi:
222     -2, 1, 2, 1
223   lo score viene { [ (-2) + (1) + (2) + (1) ] / 4 }  * 100 = 50.0
224   
225   a parità di score tra utenti va più in alto chi ha giocato più partite.
226
227 Se dopo quelle 4 partite 'pippo' non ne giocherà più, passata una settimana dall'ultima giocata 
228 sparirà dalla classifica settimanale e rimarrà in quelle mensili e trimestrali.
229
230
231   
232
233
234
235
236  BUG
237  ---
238  
239   DONE - paste da demauroparavia
240   DONE - recupero partita per re-login con password
241   DONE - problema "|" nei nomi (manca enhance degli script lato server)
242   - problema col treno se mouse sopra mentre stringe (verif)
243   
244  MINOR
245  -----
246
247  NORMAL
248  ------
249
250   - win test
251   WIP - /listen 
252     DONE - skin della textarea
253     DONE - set cookie 
254     DONE - init client (read from cookie) - ALWAYS BY SERVER
255     DONE - init server
256     DONE - after cookie check auth-only when no-auth case
257     DONE - aggiungi info accanto a "Chat"
258   DONE - /mesgtoadm
259   DONE - img dei comandi
260
261   DONE - form per garantire utenti (accoda in un file nel formato corretto)
262   DONE -   process request
263   DONE -   show form
264   DONE -   close butt
265   DONE -   submit form
266   DONE -   process form js side 
267   DONE -   process form
268   DONE -   documentazione in help
269
270   DONE - user status
271
272   DONE - aggiornare help
273   DONE -   overflow management
274   DONE -   for status
275   -   for password
276
277   DONE - reload home
278   - notify for long pages
279
280   - buddy list
281   - silenziastolti vari (fino al buddy import)
282   - restrict challenge per IP
283   - restricted charset for login
284   - watchdog
285
286   - db (minimal)
287     - db admin page
288     - user db admin
289     - use db 
290     - admin db
291
292     - studiare un anti-dos
293   - login modify
294  DONE  - db (fake)
295  DONE  - display auth
296     - manage preferences 
297
298  minor
299  -----
300    - auth after login
301
302 ----- done ------
303
304  BUG
305  ---
306   DONE   righe troncate
307   DONE - questione "a monte" che:
308   DONE   - lascia fuori il bottone
309   DONE   - scrive &agrave e compagnia
310   DONE - refresh act_table when unauthorized
311   DONE - problema ghost autenticato (ne prendi il posto ovunque sia)
312
313  MINOR
314  -----
315   DONE - refactoring of the owner name (auth attr for owner name)
316   DONE   - room
317   DONE     - at chat input line 
318   DONE     - in the chat output line
319   DONE     - deauth management
320   DONE - table
321   DONE   - at chat input line
322   DONE   - in the chat output line
323   DONE   - for user area of other users
324   DONE   - deauth management
325   DONE - alart to one user
326
327
328  NORMAL
329  ------
330   DONE - strong ban: "expire time|IP|session|(nick if authenticated)"
331   DONE   - login: se auth      -  verifica solo gli expire per quel nick
332   DONE   -        se non auth  -  verifica gli expire per IP e sessione
333   DONE   - riscrivere messaggi
334
335   DONE - login 
336   DONE   - se pass:
337   DONE     - richiede per l' utente un token (tutta la parte backend va un minimo studiata)
338   DONE     - lo legge, ci hasha la password
339   DONE     - invia la pass al server hashata
340   DONE   - se non pass:
341   DONE     - check del login e return corretto
342   DONE     - oggetto in shm single table con ( "ip", "login", timestamp ) e suo management
343   DONE     - rename ghost if logged
344   DONE     - onunload_cb e onbeforeunload_cb !!! 
345   DONE   - da change attrs a change class (input field)
346   DONE     - colore del bg per arrivare ad essere omogeneo
347   DONE     - cambiare path e file di config
348   DONE   - login with or without pass
349   DONE   - registered nick notice (METTERE IL MSG NELLA PAG DI LOGIN)
350   DONE     - segnalare tavoli solo per auth
351   DONE     - rename restriction at auth table
352   DONE     - change nick (strcasecmp)
353   DONE   - refact js tables to handle flags
354   DONE - room javascript refactoring
355
356   DONE - work background
357   DONE - reserved tables
358
359
360  BRISK2 (spawn)
361  ======
362
363    
364    URGENT - tables spawn
365             DONE - link with photos
366             DONE - top banner in Etc file
367             DONE - spawn of a table
368             DONE - data to cookies (removed table_idx from xhr calls also)
369             DONE - set subst to shutdowner/shutdowned
370             DONE - return to index.php
371             DONE - game's token
372             DONE - recover of corrupted table data
373             DONE - closure of a table
374             DONE - flush of the table
375             DONE - security checks for right scope access
376             DONE - garbage collector management
377             DONE -    recursive garbage - howto ?
378             DONE - stat & subst in browser
379             DONE - laccwr setting and exit if all players are unactive for some time
380             DONE - the list of test case
381             DONE - shm dimension
382             DONE - remove unused parts
383             DONE - move images
384             DONE - optimizations
385             DONE - cambiare titolo al tavolo
386             DONE - shutdowning lock tables
387             DONE - topbanner
388             DONE - public announcements
389             DONE - 10 sec to exit from table
390
391             FAR - inheritances
392    
393    TRAIN  -  DONE - add again in reload   
394              DONE - wag_set refact
395              DONE - filtra char speciali per title
396              DONE - chatt_send refact 
397              DONE - elenco dei giocatori
398              DONE - documentazione online
399              DONE - timeout management     
400              LATER - border color a muzzo
401        
402    NORM   - testament
403    NORM   - public announcements
404    NORM   - 10 sec to exit from table
405    NORM   - moving label for tables click
406
407 ----------------- join -----------------
408    NORM   - map
409
410    NORM   - restart preload img
411    NORM   - tools dir with a main and some pages where check briscola tools.
412    NORM   - watchdog
413
414    NORM   - chat vecchie in reload (forse)
415
416  MIDDLE TODO
417  ===========
418
419    - user assistant (with button to enable disable)
420    - documentation
421
422
423  FAR TODO
424  ========
425    NORM - internationalization
426    NORM - img -> div + css
427    
428  WEB
429  ===
430
431    - link to stable/unstable
432
433 -------------------------------------------------------------------
434  DONE
435  ====
436
437    ABORTED - asta: highlight buttons (css hover) - change pointer when over
438    DONE - step proxy
439    DONE - special chars in js
440    DONE - ban temporaneo dai tavoli
441    DONE - flash player to play sound
442    DONEBUG - (aum. il timeout) - carte giocate che restano girate
443          Sembra non migliorare di molto la cosa, gestita la cache
444          correttamente, sono apposto.
445
446    DONE - one player reject a game, to less points (<= 2)
447    DONE - help page
448    DONE - test di download per la cache
449    DONE - se passano tutti tranne l'ultimo l'asta va al penultimo.
450           Corretto il codice, occorre verificare se questo
451           ingenera qualche problema.
452    DONE - raddoppiato il numero di righe nella chat
453    DONE - corretto bug del /nick
454    DONE - carosello pubblicità altout
455    DONE - smammamorti
456    DONE - unload of the stream
457    DONE - standup centrati
458    DONE - current player - in info
459    DONE - HELP butt con ABOUT, REGOLE, VERSIONE
460    DONE - welcome lines in the chats (room and table)
461    DONE - welcome lines in the chats (room and table)
462    DONE - nomi in primo piano se vai sul quadrato   
463    DONE - to pass explicit config file to INSTALL.sh
464    DONE - flag to create a config file
465    ABRT - bottoni => immagini
466    DONE - aggiungere bottone al login
467    DONE - nomi in primo piano se vai sul quadrato   
468    DONE - installer to set cookie path
469    DONE - change name
470    DONE - automatic and manual logout
471    DONE - cache problems solved via .htaccess
472    DONE - all players out of the auction
473    DONE - time to send cards
474    DONE - hide cards before sends at a new game
475    DONE - well recognization of the browser and O.S.
476    DONE - login consistency !!!!
477    DONE - functionalization of garbage
478    DONE - call garbage function into login
479    DONE - game
480    DONE - manage the reload from scratch of the table page
481    DONE - table reset
482    DONE - sendcard => card_send(idx, ....)
483    DONE - show table for game
484    DONE - points calculation
485    DONE - make-up of the chooser
486    DONE - where place the briscola on the table
487    DONE - users info
488    DONE - show current auction position
489    DONE - table with internal management of the transition between pages.
490    DONE - server side page abort management  
491    DONE - cookie problem with Ajax
492    DONE - spostare il tasto "esco"
493    DONE - to pass explicit config file to INSTALL.sh 
494    DONE - 8 tables
495    DONE - safety out management
496    DONE - info enhancement and related button (how win the last game and
497           with how much points ?)
498
499  WEB
500    DONE - homepage
501    DONE - screenshots
502
503 DOC
504    CHAPTERS
505       HTTP Streaming
506       Local serializer
507       Database on shmem
508       Page abort (reload on http streaming case)
509       Chat
510       Cookies management
511       CSS tricks
512
513 CHECK ON NEW SERVERS
514 .htaccess AllowOverwrite mode for Cache-Control directive
515
516
517
518
519 */
520